Accessibility
Select from @prepared911/ui-core is a Radix Select listbox with label, keyboard navigation, and grouped-item support wired in. The component handles combobox semantics, roving focus inside the dropdown, and label association; your job is to provide the visible label, required-field indicators, and validation feedback.
combobox; menu → listbox; items → option. aria-expanded, aria-selected, aria-disabled are managed.htmlFor + id. When hideLabel is set, the label becomes aria-label so screen readers still get it.label. "Visually hidden" is fine (hideLabel) when space is truly constrained.required; pair with a visible asterisk or an inline "required" string so sighted users see it too.aria-invalid and associate an error message via aria-errormessage.role="combobox" with aria-expanded.role="listbox"; items are role="option" with aria-selected on the current value.aria-disabled and are skipped by keyboard navigation.Typical sequence when selecting from a flat list:
Grouped items announce the group ("Fruits, group, Apple, option, 1 of 2").
Focus moves to the first option (or the selected option) when the menu opens and returns to the trigger when it closes. Don't override this unless the implementation truly requires it.
Combobox with search scans better than a Select.<select>; don't expect native mobile pickers.