Accessibility
This page lists what's actually implemented, rather than a blanket "accessible" claim — coverage varies by component. As of this writing, 16 of the library's 55 components have explicit ARIA attributes, roles, or custom keyboard handling. The rest rely on whatever semantics their native HTML elements (<button>, <input>, <label>) already provide, which covers basic keyboard operability but not screen-reader-specific behavior like live regions or roving tabindex.
If accessibility is a hard requirement for your use case, treat this list as a starting point for your own audit rather than a guarantee.
Keyboard navigation
| Component | Keys handled |
|---|---|
PxCommandPalette | ↑ / ↓ to move through results, Enter to select, Esc to close |
PxDialog | Esc to close (when closable) |
PxDrawer | Esc to close (when closable) |
Other interactive components (buttons, links, native inputs, checkboxes/radios built on real <input> elements) get Tab/Space/Enter behavior for free from the browser rather than custom key handlers.
ARIA roles and attributes
| Component | What's marked up |
|---|---|
PxCheckbox | role="checkbox", aria-checked, aria-disabled, tabindex |
PxRadioButton | role="radio", aria-checked, aria-disabled, tabindex |
PxToast | role="alert" on the toast, aria-label on the close button |
PxDialog | role="dialog", aria-modal, aria-label on the close button |
PxDrawer | role="dialog", aria-modal, aria-label on the close button |
PxCommandPalette | role="dialog", aria-modal |
PxAccordion | aria-expanded on each panel trigger |
PxTabs | aria-selected on the active tab |
PxDropdownMenu | aria-label, aria-haspopup on the trigger, aria-hidden on its icon |
PxLabel | Native <label for> association with the field's id |
PxFormWizard | aria-label on the step progress <nav> |
PxPhoneInput, PxSchemaForm, PxSelectableListWithTable | aria-live="polite" on the validation error message, so screen readers announce it as it appears |
PxDialogInput, PxGridSelect, PxSelectableListWithTable | aria-label on per-item remove/delete buttons, aria-hidden on their icons |
Known gaps
- Components built on
vue-select(async/categorized/schema selects) inherit that library's own accessibility behavior rather than custom ARIA from Praxis Vue. - No component currently manages roving
tabindexfor arrow-key navigation within lists (e.g.PxTree,PxNavList,PxStepper) — navigation is via Tab, not arrow keys, except inPxCommandPalette. - Color contrast has not been audited against WCAG AA as a whole; the default palette (see Theming) is a reasonable starting point but wasn't chosen against a contrast checker.
If you find a specific gap that matters for your project, it's worth filing an issue on GitHub rather than assuming it's covered.