Accessibility
ARIA Roles and Attributes
The table library uses semantic HTML and ARIA attributes throughout to support assistive technologies:
- Semantic HTML table elements (
<table>,<thead>,<tbody>,<tr>,<th>,<td>) provide native table semantics to screen readers. - Pagination navigation is wrapped in a
<nav>element with anaria-labelidentifying it as table pagination controls. - Column header sort buttons include an
aria-labeldescribing the current sort state and the column being sorted. - Row selection checkboxes carry an
aria-labelidentifying the row they control, including 'select all' on the header checkbox. - Filter buttons use
aria-labelto communicate the column they filter and whether a filter is currently active. - Radix
DropdownMenuprovides full keyboard navigation with roving tabindex across menu items. - Radix
Popovertraps focus within the popover content while it is open, returning focus to the trigger on close. - The cmdk command palette uses
role="listbox"witharia-selectedon each option to communicate the highlighted selection to screen readers.
Keyboard Navigation
All interactive elements in the table are fully keyboard accessible:
- Tab — moves focus sequentially between interactive elements: pagination buttons, sort headers, filter controls, column visibility toggles, and action menus.
- Enter / Space — activates focused buttons, toggles checkboxes, opens and closes dropdowns and popovers.
- Arrow keys — navigate within open dropdown menus and command palettes, moving the highlighted item up and down through the list.
- Escape — closes open popovers, dropdowns, and mobile drawers, returning focus to the element that triggered them.
- Type-ahead — typing within the command palette performs incremental search, filtering the option list in real time as each character is entered.
Focus Management
Radix UI primitives handle focus trapping automatically for modal-like surfaces. When a modal, drawer, or popover opens, focus moves inside the overlay and is contained there until the overlay is dismissed. On close, focus returns to the triggering element.
The mobile drawer, built with vaul, manages its own focus lifecycle: focus moves into the drawer on open and is restored to the trigger on close, preventing focus from being lost behind the overlay.
The calendar date-picker component supports an initialFocus prop that moves focus to the selected or current date cell when the calendar opens, allowing immediate keyboard-driven date selection without additional Tab presses.
enterprise.strictAccessibility config option is reserved for a future strict ARIA compliance mode. When enabled, it will enforce additional ARIA attributes and runtime warnings for accessibility violations beyond the baseline implementation. Setting it in your configuration now will have no effect until the feature is released.