Some checks failed
ClawSweeper Dispatch / dispatch (push) Has been cancelled
CodeQL / Security High (actions) (push) Has been cancelled
CodeQL / Security High (channel-runtime-boundary) (push) Has been cancelled
CodeQL / Security High (core-auth-secrets) (push) Has been cancelled
CodeQL / Security High (mcp-process-tool-boundary) (push) Has been cancelled
CodeQL / Security High (network-ssrf-boundary) (push) Has been cancelled
CodeQL / Security High (plugin-trust-boundary) (push) Has been cancelled
CodeQL / Security High (process-exec-boundary) (push) Has been cancelled
Docs Sync Publish Repo / sync-publish-repo (push) Has been cancelled
Docs / docs (push) Has been cancelled
OpenClaw Stable Main Closeout / Resolve stable release closeout inputs (push) Has been cancelled
OpenClaw Stable Main Closeout / Verify stable main closeout (push) Has been cancelled
Workflow Sanity / no-tabs (push) Has been cancelled
Workflow Sanity / actionlint (push) Has been cancelled
Workflow Sanity / generated-doc-baselines (push) Has been cancelled
CI / runner-admission (push) Has been cancelled
CI / preflight (push) Has been cancelled
CI / security-fast (push) Has been cancelled
CI / pnpm-store-warmup (push) Has been cancelled
CI / build-artifacts (push) Has been cancelled
CI / native-i18n (push) Has been cancelled
CI / ${{ matrix.check_name }} (push) Has been cancelled
CI / ${{ matrix.checkName }} (push) Has been cancelled
CI / checks-node-compat-node22 (push) Has been cancelled
CI / check-bundled-channel-config-metadata (push) Has been cancelled
CI / check-dependencies (push) Has been cancelled
CI / check-guards (push) Has been cancelled
CI / check-lint (push) Has been cancelled
CI / check-prod-types (push) Has been cancelled
CI / check-shrinkwrap (push) Has been cancelled
CI / check-test-types (push) Has been cancelled
CI / check-additional-boundaries-a (push) Has been cancelled
CI / check-additional-boundaries-bcd (push) Has been cancelled
CI / check-additional-extension-bundled (push) Has been cancelled
CI / check-additional-extension-channels (push) Has been cancelled
CI / check-additional-extension-package-boundary (push) Has been cancelled
CI / check-additional-runtime-topology-architecture (push) Has been cancelled
CI / check-session-accessor-boundary (push) Has been cancelled
CI / check-session-transcript-reader-boundary (push) Has been cancelled
CI / check-docs (push) Has been cancelled
CI / skills-python (push) Has been cancelled
CI / macos-swift (push) Has been cancelled
CI / ios-build (push) Has been cancelled
CI / ci-timings-summary (push) Has been cancelled
Native App Locale Refresh / Refresh native fa (push) Has been cancelled
Native App Locale Refresh / Refresh native fr (push) Has been cancelled
Native App Locale Refresh / Refresh native hi (push) Has been cancelled
Native App Locale Refresh / Refresh native id (push) Has been cancelled
Native App Locale Refresh / Refresh native it (push) Has been cancelled
Native App Locale Refresh / Refresh native ja-JP (push) Has been cancelled
Control UI Locale Refresh / plan (push) Has been cancelled
Control UI Locale Refresh / Refresh ${{ matrix.locale }} (push) Has been cancelled
Control UI Locale Refresh / Commit control UI locale refresh (push) Has been cancelled
Live Media Runner Image / Build live media runner image (push) Has been cancelled
Native App Locale Refresh / Refresh native ar (push) Has been cancelled
Native App Locale Refresh / Refresh native de (push) Has been cancelled
Native App Locale Refresh / Refresh native es (push) Has been cancelled
Native App Locale Refresh / Refresh native ko (push) Has been cancelled
Native App Locale Refresh / Refresh native nl (push) Has been cancelled
Native App Locale Refresh / Refresh native pl (push) Has been cancelled
Native App Locale Refresh / Refresh native pt-BR (push) Has been cancelled
Native App Locale Refresh / Refresh native ru (push) Has been cancelled
Native App Locale Refresh / Refresh native sv (push) Has been cancelled
Native App Locale Refresh / Refresh native th (push) Has been cancelled
Native App Locale Refresh / Refresh native tr (push) Has been cancelled
Native App Locale Refresh / Refresh native uk (push) Has been cancelled
Native App Locale Refresh / Refresh native vi (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-CN (push) Has been cancelled
Native App Locale Refresh / Refresh native zh-TW (push) Has been cancelled
Native App Locale Refresh / Commit native locale refresh (push) Has been cancelled
Plugin Init Scaffold Validation / Validate provider scaffold (push) Has been cancelled
Plugin NPM Release / preview_plugins_npm (push) Has been cancelled
Plugin NPM Release / Validate release publish approval (push) Has been cancelled
Plugin NPM Release / preview_plugin_pack (push) Has been cancelled
Plugin NPM Release / publish_plugins_npm (push) Has been cancelled
Sandbox Common Smoke / sandbox-common-smoke (push) Has been cancelled
Website Installer Sync / static (push) Has been cancelled
Website Installer Sync / linux-docker (push) Has been cancelled
Website Installer Sync / macos-installer (push) Has been cancelled
Website Installer Sync / windows-installer (push) Has been cancelled
Website Installer Sync / sync-website (push) Has been cancelled
Adolf is a fork/vendored clone of github.com/openclaw/openclaw (v2026.6.11), free to diverge. Tree copied sans upstream .git; upstream remote added for future syncs. Node pinned to 24 (.nvmrc); engines already require >=22.19. Preserves docs/ARCHITECTURE.md. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01LeqyaxJF2nbRXJtae2kNB2
6.8 KiB
6.8 KiB
Color Tokens
All tokens are defined in ui/src/styles/base.css under :root (dark mode default) and :root[data-theme-mode="light"] (light override). Theme families may override accent tokens while keeping shared surface tokens.
Contrast ratios are measured against
--bg(#0e1015) in dark mode using WCAG relative luminance formula. AA requires ≥4.5:1 for normal text, ≥3:1 for large text and UI components.
Background Scale
| Token | Dark Value | Light Value | Use | Don't |
|---|---|---|---|---|
--bg |
#0e1015 |
#faf9f7 |
Page root, deepest layer | Never use on elevated surfaces |
--bg-accent |
#13151b |
#f4f1ec |
Sidebar, secondary panels | Not for interactive card hover |
--bg-elevated |
#191c24 |
#ffffff |
Raised panels, modals | Not for inline elements |
--bg-hover |
#1f2330 |
#efebe4 |
List item hover state | Not for default state |
--bg-muted |
#1f2330 |
#efebe4 |
Subtle fills, disabled states | Not for focus states |
Light mode uses a warm paper palette: ivory backgrounds, warm gray borders (#e8e4dc), and a terracotta accent (#bd4531, ≈4.9:1 on --bg). Dark mode keeps the signature coral red.
Surface / Card
| Token | Dark Value | Light Value | Use | Don't |
|---|---|---|---|---|
--card |
#161920 |
#ffffff |
Card backgrounds, composer | Avoid as border |
--card-foreground |
#f0f0f2 |
#211e1a |
Text on cards | — |
--card-highlight |
rgba(255,255,255,0.04) |
rgba(60,42,24,0.03) |
Inner highlight on hover | Not for text |
--popover |
#191c24 |
#ffffff |
Dropdown, tooltip backgrounds | — |
--popover-foreground |
#f0f0f2 |
#211e1a |
Text inside popovers | — |
Text
| Token | Dark Value | Contrast on --bg |
Use |
|---|---|---|---|
--text |
#d4d4d8 |
~12.9:1 ✅ | Body copy, labels |
--text-strong |
#f4f4f5 |
~17.3:1 ✅ | Headings, emphasis |
--muted |
#838387 |
~5.0:1 ✅ | Placeholder, metadata |
--muted-strong |
#75757d |
~4.2:1 | Secondary text, captions; avoid for normal body text |
Accent (Primary — Red)
| Token | Value | Use | Don't |
|---|---|---|---|
--accent |
#ff5c5c |
Primary CTA, send button, active tab indicator | Don't use for large filled backgrounds |
--accent-hover |
#ff7070 |
Hover state of accent elements | — |
--accent-muted |
#ff5c5c |
Same as accent (aliased) | — |
--accent-subtle |
rgba(255,92,92,0.1) |
Badge backgrounds, tinted fills | Not for text on dark bg (fails contrast) |
--accent-glow |
rgba(255,92,92,0.2) |
Focus rings, glow effects | Not as background |
--primary |
#ff5c5c |
Component library primary alias |
— |
Accent 2 (Teal)
| Token | Value | Use |
|---|---|---|
--accent-2 |
#14b8a6 |
Success-adjacent status, secondary badges |
--accent-2-muted |
rgba(20,184,166,0.7) |
Subtle teal fills |
--accent-2-subtle |
rgba(20,184,166,0.1) |
Tinted teal background |
Semantic
| Token | Dark Value | Light Value | Contrast on --bg |
Use |
|---|---|---|---|---|
--ok |
#22c55e |
#15803d |
~8.4:1 ✅ | Success states, token meter low |
--warn |
#f59e0b |
#d97706 |
~8.9:1 ✅ | Warnings, degraded states |
--danger |
#ef4444 |
#dc2626 |
~5.1:1 ✅ | Errors, destructive actions, token meter high |
--info |
#3b82f6 |
#2563eb |
~5.2:1 ✅ | Informational, token meter mid |
--destructive |
#ef4444 |
— | ~5.1:1 ✅ | Destructive action labels |
Border
| Token | Value | Use |
|---|---|---|
--border |
#1e2028 |
Default subtle borders, dividers |
--border-strong |
#2e3040 |
Active/focused borders |
--border-hover |
#3e4050 |
Hover-state borders |
Focus
| Token | Value | Use |
|---|---|---|
--ring |
#ff5c5c |
Focus ring colour |
--focus-ring |
0 0 0 2px var(--bg), 0 0 0 3px color-mix(in srgb, var(--ring) 80%, transparent) |
Standard focus ring box-shadow |
--focus-glow |
0 0 0 2px var(--bg), 0 0 0 3px var(--ring), 0 0 16px var(--accent-glow) |
Elevated interactive elements |
Anti-Patterns
- ❌ Hardcoded hex colours in component CSS — always use tokens
- ❌
--accent-subtleas text colour — fails contrast on dark backgrounds - ❌ Mixing
--okand--accent-2for "green success" — use--okonly - ❌ Using
--dangerfor non-error states (e.g. "hot feature") — reserve for errors and destructive actions - ❌
--muted-strongfor normal body text — below 4.5:1 on dark--bg; use--textinstead