# Component vocabulary The named components for . Component names match `ia.md` where applicable. **Do not introduce new components without proposing them here first.** This file is a sidecar of the design-system skill — agents generating UI should be aware of every component in this list and prefer them to ad-hoc one-offs. New patterns belong here, not in mock files. ## How to read this For each component: - **Variants** — distinct visual flavors with different semantic meaning - **Sizes** — usually `sm / md / lg`; pick the same scale across components - **States** — every visible state the component must handle - **Anatomy** — the named slots / regions the component is composed of - **Tokens used** — which design-system tokens this component reads - **A11y notes** — load-bearing accessibility rules for this component ## Primitives ### Button - **Variants**: `primary` | `secondary` | `ghost` | `destructive` | `link` - **Sizes**: `sm` | `md` | `lg` - **States**: default | hover | active | focus | focus-visible | disabled | loading - **Anatomy**: optional leading icon · label · optional trailing icon · optional loading spinner - **Tokens used**: `color.brand.primary`, `color.semantic.error` (destructive), `color.focus`, `padding.default`, `radius.md`, `motion.duration.fast`, `fontSize.sm/base/lg`, `fontWeight.medium` - **A11y**: - Hit target ≥ `hitTarget.mobile` for `md+` sizes - `aria-busy` while loading; preserve label - `aria-disabled` rather than `disabled` if the action is permission-gated rather than form-invalid - `link` variant uses ``, not `