Listbox
Standalone listbox primitive (APG Listbox) — single or multi-select with roving `aria-activedescendant`.
Usage
Import
import { Listbox } from "@qeetrix/ui";It can also be imported on its own from @qeetrix/ui/components/listbox.
Controlled and uncontrolled
Pass the value prop to control it, or the default prop to let the component own it.
| Value | Default | Change |
|---|---|---|
value | defaultValue | onValueChange |
States
hover · focus-visible · active · disabled · read-only · invalid · selected
Support
| Feature | Status |
|---|---|
| Right-to-left | Supported |
| Dark mode | Supported |
| Density | Supported |
| Server rendering | Client component |
| Reduced motion | Supported |
Accessibility
Follows the WAI-ARIA listbox pattern. Audited.
| Check | Result |
|---|---|
| Semantics | Pass |
| Accessible name | Pass |
| Keyboard | Pass |
| Focus | Pass |
| Screen reader | Pass |
| Right-to-left | Not applicable |
| Reduced motion | Pass |
| Forced colours | Pass |
| Contrast | Pass |
Keyboard
Tab ArrowUp ArrowDown Home End Enter TypeAheadFocus
Focus stays on the input; arrow keys move the active option (aria-activedescendant).
Tests
Covered by unit, accessibility (axe), interaction and visual tests.