Colors are generated from config in three stages — scale generation,
neutral derivation, and semantic mapping. Always use semantic tokens
in components.
See live demos →
Generated for every color in $color-overrides plus derived colors
(accent, neutral, feedback). Each color gets a full 50–950 scale:
--color- { name } -500 ← closest to the base color
Generated for: primary, accent, neutral, success, warning,
error, info, plus any extra colors set in config.
Token Light Dark --color-backgroundneutral-50neutral-950--color-surfaceneutral-100neutral-900--color-surface-raisedneutral-200neutral-800--color-overlayneutral-300neutral-700
Token Light Dark --color-borderneutral-200neutral-700--color-border-strongneutral-400neutral-500
Token Light Dark --color-textneutral-900neutral-50--color-text-mutedneutral-600neutral-400--color-text-subtleneutral-400neutral-600--color-text-inverseneutral-50neutral-900
Token Light Dark --color-interactiveprimary-500primary-400--color-interactive-hoverprimary-600primary-300--color-interactive-activeprimary-700primary-200--color-interactive-mutedprimary-100primary-900--color-focusprimary-300primary-400
Token Light Dark --color-accentaccent-500accent-400--color-accent-hoveraccent-600accent-300--color-accent-mutedaccent-100accent-900
Each feedback color has three tokens — base, surface, and text:
Token Light Dark --color-successsuccess-500success-500--color-success-surfacesuccess-100success-900--color-success-textsuccess-700success-300--color-warningwarning-500warning-500--color-warning-surfacewarning-100warning-900--color-warning-textwarning-700warning-300--color-errorerror-500error-500--color-error-surfaceerror-100error-900--color-error-texterror-700error-300--color-infoinfo-500info-500--color-info-surfaceinfo-100info-900--color-info-textinfo-700info-300
Token Light Dark --color-header-backgroundprimary-500primary-500--color-header-textprimary-200primary-900--color-header-borderprimary-800primary-200