Accessibility
Every block, audited — and what the audit cannot see
Every one of the 433 artifacts in this catalog — 307 blocks and 126 pages — is checked against 18 rules covering 10 WCAG 2.2 success criteria on every build. The current result is 0 violations and 1 advisory.
This is evidence, not a conformance statement. We do not claim these components conform to WCAG 2.2 AA, and you should not represent to your own customers that they do on the strength of this page. A static audit reads source text; it cannot see rendered colour, focus order or reflow, and 10 criteria are therefore not evaluated at all. They are listed below rather than omitted.
What is checked
Each rule below runs against the exact source a visitor copies — not against a rendered page — because the source is the artifact. Failing any of them fails the build, so a violation cannot ship and then be noticed later.
| Criterion | Level | What it catches | On failure |
|---|---|---|---|
| 1.1.1 | A | Non-text content | Build fails |
| 1.1.1 | A | Decorative graphics hidden from assistive tech | Build fails |
| 4.1.2 | A | Name, role, value | Build fails |
| 4.1.2 | A | Disclosure state exposed | Reported, does not fail |
| 2.1.1 | A | Keyboard | Build fails |
| 2.4.3 | A | No positive tabindex | Build fails |
| 1.3.1 | A | Info and relationships | Build fails |
| 3.3.2 | A | Labels or instructions | Build fails |
| 3.3.8 | AA | Accessible authentication (minimum) | Build fails |
| 2.5.8 | AA | Target size (minimum) | Reported, does not fail |
| 2.5.7 | AA | Dragging movements | Reported, does not fail |
| 4.1.2 | A | Name, role, value — icon-only controls | Build fails |
| 1.3.1 | A | Info and relationships — label association | Build fails |
| 3.3.2 | A | Labels or instructions — placeholder is not a label | Build fails |
| 4.1.2 | A | Name, role, value — hidden but focusable | Build fails |
| 4.1.2 | A | Name, role, value — dialogs | Build fails |
| 1.4.2 | A | Audio control | Build fails |
| 1.3.1 | A | Info and relationships — heading order | Reported, does not fail |
Covering 1.1.1, 1.3.1, 1.4.2, 2.1.1, 2.4.3, 2.5.7, 2.5.8, 3.3.2, 3.3.8, 4.1.2.
What is not checked
These 10 criteria cannot be decided from source text. Nothing below is a known failure — it is a known blind spot, which is a different and more useful thing to be told.
Part of that blind spot is measured separately, in a real browser: text at 200% size, reflow at 320px, forced colors, reduced motion, right-to-left and dark contrast. Those results are on the stress-test matrix, and they are a measurement of what a browser could detect, not a conformance claim either.
1.4.3 / 1.4.11 Contrast (minimum, non-text)
Components are styled with CSS variables the consuming project supplies. Whether one passes depends on a palette this check does not control.
1.3.2 Meaningful sequence
Needs rendered reading order, not source order.
2.4.3 Focus order
Needs a rendered tab sequence.
1.4.10 Reflow
Needs a viewport at 320 CSS pixels.
2.5.3 Label in name
Needs the rendered visible label to compare against the accessible name.
3.2.3 / 3.2.4 Consistent navigation and identification
A property of the whole site, not of one component.
2.4.11 Focus not obscured (minimum)
New in WCAG 2.2. Whether a sticky header covers the focused element depends on the rendered page a component lands in, not on the component.
3.2.6 Consistent help
New in WCAG 2.2. Asks whether help is in the same place across a set of pages, which is a property of the consuming site.
3.3.7 Redundant entry
New in WCAG 2.2. Needs to know whether two fields in a multi-step flow ask for the same information, which is a question about meaning rather than markup.
2.4.13 Focus appearance
New in WCAG 2.2, and Level AAA — outside the AA target, listed so a reader can see it was considered rather than missed.
Contrast is the one worth dwelling on. Every artifact here is styled through CSS variables, and the palette that decides whether text passes 4.5:1 is the one your project supplies. We check our own default palette; we cannot check yours. The contrast checker is free and takes about ten seconds per pair.
Current findings
sidebar-file-tree
- 4.1.2 expanded-controls
Reproduce it
The audit is a script in the repository, not a service. Clone and run it and you get this page's numbers, or you get different ones and we are wrong — which is the point of publishing the method rather than a badge.
npm run audit:a11yIf you are bound by the EAA
The European Accessibility Act has been enforceable since June 2025 and reaches non-EU sellers who trade into the EU. It obliges you, not your component library — no vendor can discharge it for you, and any who say otherwise are selling a badge. What a library can honestly offer is evidence you can put in front of an auditor, which is what this page is. The remaining 10 criteria are yours to test in the product you assemble, because that is the only place they exist.