Skip to main content

Frontend Theme Inventory

Token Domains

The theme system uses semantic tokens organized into domains:

Scale Colors

Color ramps from 50 to 950 for each intent:

  • brand - Primary brand color
  • info - Informational elements
  • success - Success states
  • warning - Warning states
  • danger - Error/destructive states

Surface

Background colors for major UI areas:

TokenUsage
appApplication background
navNavigation bar
nav_activeActive navigation item
cardCard backgrounds
card_mutedMuted card variant
tableTable body
table_headerTable header
inputForm inputs
overlayModal/dialog overlays

Text

TokenUsage
primaryDefault text
secondarySupporting text
mutedDisabled/placeholder text
inverseText on dark backgrounds
linkHyperlinks

Border

TokenUsage
defaultStandard borders
strongEmphasized borders
subtleLight separators
interactiveHover/focus borders

Focus

TokenUsage
ringFocus ring color
ring_offsetFocus ring offset color

Action Variants

Each action type (primary, secondary, ghost, danger) provides:

bg, border, text, hover_bg, hover_border, hover_text

State Variants

Each state (info, success, warning, danger) provides:

bg, border, text

Theme Presets

Presets are loaded from frontend/src/theme/presets/*.{json,js}. Each contains both light and dark mode token definitions.

Current presets:

PresetFormat
parchmentJS
lilacJS
duneJS
oatmealJS
scholarlyJSON
graphiteJSON
tideJSON

Tokenized Components

Foundation components using the token system:

  • AppButton, AppCard, AppCheckbox, AppEmptyState
  • AppHelpHint, AppInput, AppSelect, AppTable
  • AppModal, AppHeader, AppNav, AppAlert
  • AppBadge, RunStatusBadge, QueueHealthBadge

Enforcement

  • Token policy check: frontend/scripts/check_theme_tokens.mjs
  • CI step in frontend-quality workflow
  • Preset integrity tests: frontend/src/theme/presets.test.ts