Skip to content
Star

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

ComponentKeys handled
PxCommandPalette / to move through results, Enter to select, Esc to close
PxDialogEsc to close (when closable)
PxDrawerEsc 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

ComponentWhat's marked up
PxCheckboxrole="checkbox", aria-checked, aria-disabled, tabindex
PxRadioButtonrole="radio", aria-checked, aria-disabled, tabindex
PxToastrole="alert" on the toast, aria-label on the close button
PxDialogrole="dialog", aria-modal, aria-label on the close button
PxDrawerrole="dialog", aria-modal, aria-label on the close button
PxCommandPaletterole="dialog", aria-modal
PxAccordionaria-expanded on each panel trigger
PxTabsaria-selected on the active tab
PxDropdownMenuaria-label, aria-haspopup on the trigger, aria-hidden on its icon
PxLabelNative <label for> association with the field's id
PxFormWizardaria-label on the step progress <nav>
PxPhoneInput, PxSchemaForm, PxSelectableListWithTablearia-live="polite" on the validation error message, so screen readers announce it as it appears
PxDialogInput, PxGridSelect, PxSelectableListWithTablearia-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 tabindex for arrow-key navigation within lists (e.g. PxTree, PxNavList, PxStepper) — navigation is via Tab, not arrow keys, except in PxCommandPalette.
  • 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.

Built with VitePress