Field Notes
The Dimensional Model

State

The interactive condition of a component — always runtime, never a composition decision.

Definition

State represents the interactive condition of a component at any given moment. It is the only dimension that is never set at composition time — it is always determined by runtime user interaction.

Values

ValueTrigger
restDefault. No interaction occurring.
hoverPointer over the element.
activeElement is being pressed / clicked.
selectedElement is in a chosen / on state.
disabledElement is not interactive.
resolvingAsync operation in progress.
pendingAwaiting confirmation or external state.

Default: rest

Key Rule

State is never a composition decision. Never pass a static state prop. State is always determined by user interaction at runtime.

<!-- Wrong — state is hardcoded -->
<Button state="hover" sentiment="warning" emphasis="high">Submit</Button>

<!-- Correct — state is absent; the component manages it -->
<Button sentiment="warning" emphasis="high">Submit</Button>

In the design decision order (Sentiment → Emphasis → Size → Structure → State), state comes last because it is never chosen — it happens.

Implementation

State maps to CSS pseudo-classes and ARIA states:

[data-state="rest"]      { /* default styles */ }
[data-state="hover"],
:hover                   { /* hover styles */ }
[data-state="active"],
:active                  { /* active styles */ }
[data-state="disabled"],
:disabled                { /* disabled styles */ }
[aria-selected="true"]   { /* selected styles */ }

In Token Naming

State appears as the final segment in semantic token names:

--background-neutral-weaker-rest
--background-neutral-weaker-hover
--border-neutral-strong-active
--foreground-brand-disabled

On this page