Accessibility Conformance Report for team and enterprise buyers evaluating Base UI. Standard: WCAG 2.2 Level AA. Product: Base UI (base-ui-cli) + base-ui.net demo. Report date: 2026-09-13.
axe-core WCAG 2.x A/AA rules on a free-primitives smoke host plus open overlays (combobox, dialog, dropdown, menubar) in the library Vitest suite (color-contrast disabled under jsdom; verified in product themes). a11y-keyboard), combobox/select (aria-activedescendant), menubar arrows, data-table sort/row keys, mega-menu disclosure (ArrowDown/Escape), and datepicker popups (Escape, focus into the calendar grid). Flagship demos also publish a Keyboard & accessibility section (roles, focus, shortcuts) next to the component — Button, Dialog, Calendar, and others. This ACR is the procurement summary; those notes are the component-level detail. | Criterion | Name | Level | Conformance | Remarks |
|---|---|---|---|---|
| 1.1.1 | Non-text Content | A | Partially Supports | Icons support aria-hidden / decorative use; some marketing and layout demos still rely on visual-only cues. |
| 1.3.1 | Info and Relationships | A | Partially Supports | Form labels, alerts, and progress expose roles/relationships; coverage varies across Pro blocks and layouts. |
| 1.3.2 | Meaningful Sequence | A | Supports | Standalone components preserve DOM order matching visual reading order in documented patterns. |
| 1.4.1 | Use of Color | A | Partially Supports | Status colors are paired with text or icons in core primitives; not audited for every Pro block. |
| 1.4.3 | Contrast (Minimum) | AA | Partially Supports | Default slate/blue palettes target AA in light and dark themes. Consumer brand overrides are their responsibility. |
| 1.4.10 | Reflow | AA | Partially Supports | Primitives reflow with Tailwind utilities; complex Pro layouts may require consumer tuning at 320px. |
| 1.4.13 | Content on Hover or Focus | AA | Partially Supports | Tooltips and menus are dismissible; not every overlay pattern is exhaustively tested. |
| 2.1.1 | Keyboard | A | Partially Supports | Dialogs trap focus (CDK FocusTrap) and take their accessible name from the heading after content is inserted. Dropdown and context menus share a11y-keyboard (roving tabindex, Home/End, typeahead). Combobox, custom-select, and command-palette use aria-activedescendant. Mega-menu is a disclosure (Enter/Space/ArrowDown, Escape restores focus, arrows among panel links). Datepicker popups close on Escape and focus the calendar grid. Keyboard specs cover combobox, menubar arrows, data-table sort/row, menu typeahead, mega-menu, datepicker, and date-range-picker. Axe-core runs against those overlays when open. |
| 2.1.2 | No Keyboard Trap | A | Supports | Modal dialogs restore focus on close; Escape dismisses supported overlays. |
| 2.2.2 | Pause, Stop, Hide | A | Partially Supports | Ripple, reveal, hero motion, and toasts respect prefers-reduced-motion. Toast auto-dismiss pauses while the stack is hovered or focused. Library-wide reduced-motion coverage is still expanding. |
| 2.4.3 | Focus Order | A | Supports | Focus order follows DOM order for documented component compositions. |
| 2.4.7 | Focus Visible | AA | Partially Supports | Interactive primitives use visible focus rings; some Pro chrome still needs audit. |
| 2.5.8 | Target Size (Minimum) | AA | Partially Supports | Default control heights (e.g. h-9 inputs/buttons) meet 24×24px; dense icon-only controls may need consumer padding. |
| 3.2.4 | Consistent Identification | AA | Supports | Shared base-* selectors and patterns across the library. |
| 3.3.1 | Error Identification | A | Partially Supports | base-error and alert patterns exist; wiring to aria-describedby is consumer-owned in forms. |
| 3.3.2 | Labels or Instructions | A | Partially Supports | base-label projects with inputs; composite controls document labeling in demos. |
| 4.1.2 | Name, Role, Value | A | Partially Supports | ~40% of templates declare aria-* today. Progress, toggles, dialogs, and menus expose roles; remaining gaps are tracked in CI via axe (closed primitives and open overlays). |
| 4.1.3 | Status Messages | AA | Partially Supports | Alerts and toasts communicate status; live-region usage is not universal yet. |
No library-wide Directionality or rtl: Tailwind variants yet. Consumers can set dir="rtl" on a host and adjust utilities; first-class RTL is on the roadmap.
Honored in ripple, reveal, hero-features, and toast (static list, no swipe tween). Broader animation inventory still being wired.
Roving-focus helper (including typeahead) is used by dropdown-menu and context-menu. Combobox, custom-select, and command-palette correctly use aria-activedescendant instead of that helper. Mega-menu is a disclosure navigation, not a menuitem list — ArrowDown/Escape and panel-link arrows are covered by specs. Datepicker and date-range-picker popups close on Escape and move focus into the calendar grid.
Every library CI run executes the axe smoke suite:
npx ng test Base --watch=false --include='**/a11y.smoke.spec.ts'
Helper: projects/base/src/lib/testing/a11y.ts (expectNoA11yViolations). Questions for team licenses or a signed PDF ACR: [email protected].