Skip to content

AccessibilityOverview

Accessibility is a default, not a feature.

Accessibility is not a checklist at the end of a project. It is the default. If a component ships without it, the component is broken.

WCAG 2.1 AAKeyboard-firstprefers-reduced-motion respected

Six commitments

The whole site holds these. Each is verified in CI and on the live URL.

CommitmentHow we hold it
WCAG 2.1 AA at every pairingAll foreground/background pairs clear 4.5:1 for body, 3:1 for large text
Keyboard-only navigationEvery interactive element is reachable and operable with the keyboard
Screen reader supportEvery component has the right role, the right label, the right description
Visible focusA single focus ring, applied through :focus-visible, never overridden
Respects motion preferencesprefers-reduced-motion: reduce drops transitions, keeps color changes
No information by color aloneState, status, and error are always paired with a second channel

Three principles

  1. Perceivable. Every piece of information is available to at least one sense. The contrast is high enough. The focus is visible. The motion is optional.
  2. Operable. Every interaction is reachable by keyboard, by screen reader, and by touch. The next focusable element is always the right one.
  3. Robust. The components work with assistive technology. The HTML is semantic. The ARIA is the smallest amount that does the job.

Audits

Three audits run against the live site on every deploy.

  • axe-core via Playwright, every page, every component demo
  • Lighthouse accessibility, 100% target
  • Manual keyboard walkthrough, every component, before each release

The six pages

Each commitment above has a dedicated page. The pages go in order — read top to bottom for the longest context, jump to the page that addresses the specific issue you're debugging.

Why this is a section in the docs

Most design systems treat accessibility as a sidebar. We treat it as the spine. The reason is that a design system is, before anything else, a contract with the people who use it. A contract that excludes a person is not a contract.