Color
Colors come from packages/ui/src/tokens/tokens.json, built into CSS custom properties and a
typed TS export. The swatches below are rendered directly from that export, so they cannot
drift from what ships.
- Reference tokens as CSS variables:
background: var(--om-orange). - Or import the typed map:
import { tokens, cssVar } from '@repo/ui/tokens'. - Never hardcode hex/px in component code β the token-lint rule flags it.
The rules that matter
Section titled βThe rules that matterβ- Orange is ~2% of a layout. Primary CTAs and a single accent. Everything else is dark or paper neutrals.
- Status colors are system-only.
--om-success(#1F5F33) /--om-error(#9B1D1D) use the brandβs system green/red;--om-warning/--om-inforound out feedback. For state, never decoration. --color-*is legacy. It is migrating onto--om-*(same values) β seeTOKEN-MAPPING.md. Build new work on--om-*.
Contrast (WCAG 2.2 AA)
Section titled βContrast (WCAG 2.2 AA)β- Body/
--om-fg-2on--om-ink, and--om-surface-ink-1on--om-surface, clear AA for text. - Focus ring is
--om-orange-press(#C44801) everywhere β ~4.9:1 on white, ~3.4:1 on ink, so it passes the 3:1 non-text minimum on both surfaces (bright--om-orangewould be ~2.3:1 on white). SeeDECISIONS.md.