Accessibility
Verification matrix
Each component implements its WAI-ARIA APG pattern and the related WCAG 2.2 AA criteria. Current status below: automated checks run automatically in CI, and real screen-reader output is signed off by hand.
verified in CI / signed off
in progress / not yet signed off
| Component | APG pattern | axe-core | Keyboard | Screen reader |
|---|---|---|---|---|
| Dialog | Dialog (Modal) | ✅ | ✅ | ⏳ |
| Alert Dialog | Alert & Message Dialog | ✅ | ✅ | ⏳ |
| Confirm Bridge | Alert & Message Dialog | ✅ | ✅ | ⏳ |
| Drawer | Dialog (Modal) | ✅ | ✅ | ⏳ |
| Command Palette | Dialog (Modal), Combobox | ✅ | ✅ | ⏳ |
| Dropdown | Disclosure | ✅ | ✅ | ⏳ |
| Popover | — | ✅ | ✅ | ⏳ |
| Tooltip | Tooltip | ✅ | ✅ | ⏳ |
| Hover Card | — | ✅ | ✅ | ⏳ |
| Menu Button | Menu Button | ✅ | ✅ | ⏳ |
| Context Menu | Menu | ✅ | ✅ | ⏳ |
| Menubar | Menubar | ✅ | ✅ | ⏳ |
| Navigation Menu | Disclosure | ✅ | ✅ | ⏳ |
| Overflow Menu | Menu Button | ✅ | ✅ | ⏳ |
| Toolbar | Toolbar | ✅ | ✅ | ⏳ |
| Collapsible | Disclosure | ✅ | ✅ | ⏳ |
| Accordion | Accordion | ✅ | ✅ | ⏳ |
| Read More | Disclosure | ✅ | ✅ | ⏳ |
| Tabs | Tabs | ✅ | ✅ | ⏳ |
| Breadcrumb | Breadcrumb | ✅ | ✅ | ⏳ |
| Pagination | — | ✅ | ✅ | ⏳ |
| Scrollspy | — | ✅ | ✅ | ⏳ |
| Tree View | Tree View | ✅ | ✅ | ⏳ |
| Stepper | — | ✅ | ✅ | ⏳ |
| Step Indicator | — | ✅ | ✅ | ⏳ |
| Checkbox | Checkbox | ✅ | ✅ | ⏳ |
| Radio Group | Radio Group | ✅ | ✅ | ⏳ |
| Switch | Switch | ✅ | ✅ | ⏳ |
| Toggle Group | Toolbar | ✅ | ✅ | ⏳ |
| Rating | Radio Group | ✅ | ✅ | ⏳ |
| Listbox | Listbox | ✅ | ✅ | ⏳ |
| Combobox | Combobox | ✅ | ✅ | ⏳ |
| Multi-Select | Combobox | ✅ | ✅ | ⏳ |
| OTP Input | — | ✅ | ✅ | ⏳ |
| Input Mask | — | ✅ | ✅ | ⏳ |
| Number Input | Spinbutton | ✅ | ✅ | ⏳ |
| Currency Input | — | ✅ | ✅ | ⏳ |
| Color Picker | — | ✅ | ✅ | ⏳ |
| Slider | Slider | ✅ | ✅ | ⏳ |
| Range Slider | Slider (Multi-Thumb) | ✅ | ✅ | ⏳ |
| Textarea Autosize | — | ✅ | ✅ | ⏳ |
| Tags Input | — | ✅ | ✅ | ⏳ |
| Calendar | Date Picker Dialog | ✅ | ✅ | ⏳ |
| Date Range Picker | Date Picker Dialog | ✅ | ✅ | ⏳ |
| Time Picker | Spinbutton | ✅ | ✅ | ⏳ |
| Relative Time | — | ✅ | ✅ | ⏳ |
| Local Time | — | ✅ | ✅ | ⏳ |
| Timer / Countdown | — | ✅ | ✅ | ⏳ |
| Form Field | — | ✅ | ✅ | ⏳ |
| Form Validation | — | ✅ | ✅ | ⏳ |
| Character Counter | — | ✅ | ✅ | ⏳ |
| Password Reveal | — | ✅ | ✅ | ⏳ |
| Password Strength Meter | Meter | ✅ | ✅ | ⏳ |
| Editable | — | ✅ | ✅ | ⏳ |
| Conditional Fields | — | ✅ | ✅ | ⏳ |
| Nested Form | — | ✅ | ✅ | ⏳ |
| File Dropzone | — | ✅ | ✅ | ⏳ |
| Direct Upload Progress | — | ✅ | ✅ | ⏳ |
| Auto-Submit Form | — | ✅ | ✅ | ⏳ |
| Submit Once | — | ✅ | ✅ | ⏳ |
| Unsaved-Changes Guard | — | ✅ | ✅ | ⏳ |
| Persist | — | ✅ | ✅ | ⏳ |
| Aspect Ratio | — | ✅ | ✅ | ⏳ |
| Separator | — | ✅ | ✅ | ⏳ |
| Avatar | — | ✅ | ✅ | ⏳ |
| Resizable | Window Splitter | ✅ | ✅ | ⏳ |
| Masonry | — | ✅ | ✅ | ⏳ |
| Sidebar | Dialog (Modal) | ✅ | ✅ | ⏳ |
| Scroll Area | — | ✅ | ✅ | ⏳ |
| Carousel | Carousel | ✅ | ✅ | ⏳ |
| Data Grid | Grid | ✅ | ✅ | ⏳ |
| Bulk Select | — | ✅ | ✅ | ⏳ |
| Filter | — | ✅ | ✅ | ⏳ |
| Overflow Indicator | — | ✅ | ✅ | ⏳ |
| Scroll Visibility | — | ✅ | ✅ | ⏳ |
| Sticky State Observer | — | ✅ | ✅ | ⏳ |
| Stick-to-Bottom | — | ✅ | ✅ | ⏳ |
| Scroll Restore | — | ✅ | ✅ | ⏳ |
| Spinner | — | ✅ | ✅ | ⏳ |
| Skeleton Manager | — | ✅ | ✅ | ⏳ |
| Progress | — | ✅ | ✅ | ⏳ |
| Meter | Meter | ✅ | ✅ | ⏳ |
| Frame Loading State | — | ✅ | ✅ | ⏳ |
| Empty State Observer | — | ✅ | ✅ | ⏳ |
| Announcer | — | ✅ | ✅ | ⏳ |
| Toast | — | ✅ | ✅ | ⏳ |
| Flash Bridge | — | ✅ | ✅ | ⏳ |
| Network Status | — | ✅ | ✅ | ⏳ |
| Dismissible | — | ✅ | ✅ | ⏳ |
| Clipboard | — | ✅ | ✅ | ⏳ |
| Theme Toggle | — | ✅ | ✅ | ⏳ |
| Highlight on Insert | — | ✅ | ✅ | ⏳ |
| Idle Detector | — | ✅ | ✅ | ⏳ |
| Lazy Frame | — | ✅ | ✅ | ⏳ |
| Preview Guard | — | ✅ | ✅ | ⏳ |
| Before-Cache Reset | — | ✅ | ✅ | ⏳ |
| Anchored Positioning | — | ✅ | ✅ | ⏳ |
| Roving Tabindex | — | ✅ | ✅ | ⏳ |
| Focus Scope | — | ✅ | ✅ | ⏳ |
| Portal | — | ✅ | ✅ | ⏳ |
| Transition | — | ✅ | ✅ | ⏳ |
Accessibility is the product's core value — focus rings are never removed, and every control is reachable and operable by keyboard before it ships. The screen-reader column stays "in progress" until per-engine spoken-phrase baselines (VoiceOver / NVDA) are captured and human-reviewed.