Colours
Palette
Section titled “Palette”Interactive
--color-interactiveButtons, links, focus rings
Interactive hover
--color-interactive-hoverHover and pressed states
Text
--color-textBody copy, headings
Text subtle
--color-text-subtleCaptions, secondary labels
Surface
--color-surfaceCards, form inputs
Surface raised
--color-surface-raisedCode blocks, inline code
Border
--color-borderDividers, card borders
Success
--color-successPositive outcomes, confirmations, pass states
Danger
--color-dangerErrors, destructive actions, failures
Inactive
--color-inactiveDisabled, skipped, or not-applicable states
Warning
--color-warningPending actions, to-do items, caution states
Status variants
Section titled “Status variants”Each status colour comes with a base, background, and border variant for use in badges, banners, and notification states.
Success
--color-success--color-success-bg--color-success-borderDanger
--color-danger--color-danger-bg--color-danger-borderInactive
--color-inactive--color-inactive-bg--color-inactive-borderWarning
--color-warning--color-warning-bg--color-warning-borderPrimitive scales
Section titled “Primitive scales”Primitives are the raw palette — OKLCH-defined, perceptually uniform values that don’t change between themes. Components should never reference primitives directly; use semantic tokens instead. These are shown here for reference when creating new semantic mappings.
Scale structure (12 steps)
Section titled “Scale structure (12 steps)”| Steps | Role | Example usage |
|---|---|---|
| 1-2 | App & subtle backgrounds | Page background, hover tint |
| 3-5 | Component backgrounds | Card, input, button states |
| 6-8 | Borders | Subtle, normal, strong borders |
| 9-10 | Solid backgrounds | Primary button fill, badge |
| 11-12 | Text | Low-contrast, high-contrast text |
Steps 11-12 meet WCAG AA contrast (4.5:1) against steps 1-2.
Sand (warm)
123456789101112Gray (neutral)
123456789101112Slate (cool)
123456789101112Red
123456789101112Orange
123456789101112Amber
123456789101112Yellow
123456789101112Green
123456789101112Teal
123456789101112Cyan
123456789101112Blue
123456789101112Indigo
123456789101112Purple
123456789101112Pink
123456789101112Rose
123456789101112Semantic colour rules
Section titled “Semantic colour rules”- Never use raw hex values in component or app CSS — always reference a semantic token.
- Use
--color-interactivefor interactive elements (buttons, links, focus rings). Use--color-interactive-hoverfor hover and pressed states. - Status colours (
success,danger,inactive,warning) each come with a-bgand-bordervariant. - Primitives (
--color-primitive-*) are only for defining new semantic tokens in theme files — never use them in components.