04 — Token System
Component Tokens
Component tokens are the bridge between the semantic token layer and component declarations. They are scoped to a single component and reference semantic tokens. They may not reference primitive tokens directly. Component tokens allow a component to adapt semantic values for its specific structural needs without introducing raw values into the component declaration.
Component Token Naming
Component token names are scoped to the component: component-name.property.variant. For example: button.background.default, button.text.hover, input.border.focus, card.shadow.default. The scoping prefix (button, input, card) is the component's declared identifier. All token names within a component's scope MUST use that prefix.
Component Token Declaration
Component tokens are declared within the component specification, not in a separate file. This co-location ensures that token changes and component changes are versioned together. When a component is deprecated, its component tokens are deprecated with it. When a new variant is added to a component, new component tokens are declared in the same component version increment.
Constraints on Component Token References
- Component tokens MUST reference semantic tokens, not primitive tokens.
- Component tokens may not reference component tokens from a different component.
- Component tokens are consumed only by the component that declares them.
- Component tokens may reference semantic tokens from any category, not only the category matching the property name.
- Alias chains involving component tokens are subject to the three-hop maximum resolution rule.