System rules

Non-negotiable contracts for every shared component.

Semantic tokens only

Components use named color, radius, spacing, and layer tokens. Raw values stay in the token source.

One edge, one owner

A border or divider belongs to one component. Embedded previews may not stack the same edge twice.

Overlays escape clipping

Tooltips, menus, and popovers render in the document overlay layer with collision handling.

Stable interaction geometry

Hover, focus, pressed, and loading states never move controls, labels, or icons.

One row, one control height

Adjacent inputs, menus, and actions use the same semantic control size. The default mixed row uses medium controls throughout.

One primitive per section

Independent primitives such as badges and avatars are documented and reviewed separately.

12px type minimum

No product, component, helper, counter, or documentation text may render below 12px.

No eyebrow labels

Headings begin with the heading itself. Small grey uppercase labels above headings are forbidden.

Required QA

Every component ships with states, usage guidance, accessibility, embedding, and responsive checks.