Skip to content

ComponentsOverview

Twenty-three components. Each one a real artifact.

Every component on this site is a real artifact from the production codebase. The code snippets on the component pages are the actual code that ships — sometimes abbreviated for length, never simplified for clarity.

23 components7 groupsv1.0

How to read a component page

Every component page in this section follows the same template. A short description of what the component is and when to use it. A live demo showing the default and the variants. A code block with the actual implementation. A props table. An accessibility section. A "when not to use it" section, because most components have at least one.

The seven groups

Actions

Buttons, icon buttons, links, and the affordances that move a user forward.

Inputs

Form fields, controls, and the chrome that turns a form into a conversation.

Feedback

Alerts, toasts, and badges — the system's way of saying something to the user.

Containers

Cards, callouts, figures — the components that hold and present content.

Navigation

Site header, footer, back-to-top, breadcrumbs — the wayfinding chrome.

Data display

Tables, metrics, and study data — the components that make numbers honest.

Overlays

Dialogs and sheets — the components that interrupt flow on purpose.

Three things all components share

  1. Built from tokens, never raw values. A component file that has a #[0-9a-f]{3,6} in it is broken. Use a token.
  2. Accessible by default. A component ships with the right ARIA, the right roles, the right focus ring, and the right keyboard behavior. If accessibility is a feature flag, the component is wrong.
  3. Live demos, never screenshots. Every demo on a component page is a working instance of the component. A screenshot is a description; a demo is the component.