Accessibility
The conformance target this design system holds itself to, the contrast and keyboard requirements that follow from it, and how the system reports its own open findings.
The conformance target this design system holds itself to, the contrast and keyboard requirements that follow from it, and how the system reports its own open findings.
Ask about your design system
Ask about components, tokens, and patterns — or request help building something new.
AI can make mistakes. Always verify important information.
The standard
Every component in this system is measured against WCAG 2.2, Level AA. That is the target for the components themselves and for any page assembled from them.
A conformance target is a bar, not a badge. This system publishes its own validation results, and the report is expected to show open findings at any given time. A component with a live finding is a component that has been measured, not one that has been excused. The rule is that findings are visible, tracked and closed, never suppressed to make a report look clean.
Automated tooling catches roughly a third of WCAG failures. The rest needs a person with a keyboard and a screen reader.
Contrast
Text has to clear these ratios against its own background:
Practical consequences:
Keyboard access
Everything operable by mouse has to be operable by keyboard.
TabandShift+Tabreach every interactive element in a sensible order.Enteractivates links,EnterandSpaceactivate buttons.Escapedismisses anything layered over the page.Two traps show up repeatedly:
tabindex="0"and an accessible name so it can be scrolled with arrow keys.Semantics
<button>for actions,<a href>for navigation. A<div>with a click handler is neither.<h1>per page, and no skipped heading levels.<header>,<nav>,<main>,<footer>. Give a uniquearia-labelto a landmark that appears more than once.Images and icons
1<!-- Meaningful image: describe what it conveys --> 2<img src="chart.png" alt="Revenue rising from 40 to 65 percent across four quarters"> 3 4<!-- Decorative image: empty alt removes it from the accessibility tree --> 5<img src="pattern.svg" alt=""> 6 7<!-- Icon beside text: the text is the label --> 8<svg aria-hidden="true" focusable="false">…</svg> 9 10<!-- Icon-only control: label the control, not the icon --> 11<button type="button" aria-label="Close"> 12 <svg aria-hidden="true" focusable="false">…</svg> 13</button>Forms
<label>tied to it byforandid.aria-describedby.Motion and timing
prefers-reduced-motionfor anything that moves, parallaxes or autoplays.Review checklist
Run this before a component is considered done:
Tools