Problem
The frontend has no formal colour system. 280+ hardcoded hex values in TSX files, inverted tonal scales, alpha colour RGB mismatches, and three parallel dark mode mechanisms that don't compose.
Solution
- Primitive palette — full 50–950 tonal scales for all colour families in
_primitives.scss
- Semantic tokens — CSS custom properties in
_tokens.scss organised by role (text, surface, icon, stroke, brand, feedback) with light/dark mode variants
- TS exports —
common/theme/tokens.ts for use in inline styles, automatically responds to theme changes
Progress
Acceptance Criteria
Part of the Design System Audit (#6606) · Epic: #6882
Problem
The frontend has no formal colour system. 280+ hardcoded hex values in TSX files, inverted tonal scales, alpha colour RGB mismatches, and three parallel dark mode mechanisms that don't compose.
Solution
_primitives.scss_tokens.scssorganised by role (text, surface, icon, stroke, brand, feedback) with light/dark mode variantscommon/theme/tokens.tsfor use in inline styles, automatically responds to theme changesProgress
chore/design-system-tokens) — primitives, tokens, Storybook storiesAcceptance Criteria
Part of the Design System Audit (#6606) · Epic: #6882