+ Embedded selection list (role="listbox") with single
+ or multiple selection, roving-tabindex keyboard nav, alphanumeric
+ typeahead, ARIA-grouped sections, and form participation. Soma
+ OR-merges disabled / readonly /
+ required / invalid with
+ Field.Provider when nested. For atomic options
+ only — use GridList when rows contain interactive
+ children, or Select / Combobox when
+ the surface is a closed combobox-style picker.
+
Current selection. Always string[]; single mode keeps at most one entry.
+
selectionMode
'single' | 'multiple'
'single'
Selection behavior.
+
loop
boolean
true
Wrap arrow nav at edges.
+
typeahead
boolean
true
Alphanumeric jump-to-item.
+
orientation
'vertical' | 'horizontal'
'vertical'
Arrow nav axis.
+
disabled · readonly · required · invalid
boolean
false
OR-merged with Field.Provider when nested.
+
name
string
—
Form name → hidden inputs per selected value.
+
variant eidos
ControlVariant: 'surface' | 'outline' | 'ghost'
'surface'
Container chrome.
+
size eidos
'xs' | 'sm' | 'md' | 'lg' | 'xl'
'md'
Item height + font-size.
+
color eidos
ColorRole
'primary'
Selected-item highlight + focus ring accent.
+
block eidos
boolean
false
Fill container's inline-size.
+
+
+
+
+
Item
+
+
+
Prop
Type
Default
Description
+
+
value
string
required
Unique identifier in the listbox.
+
disabled
boolean
false
Skip the item from keyboard nav + click selection.
+
+
+
+
+
ItemIndicator · Group · GroupLabel
+
+ ItemIndicator renders a ✓ glyph inside selected items
+ (same recipe as menu-indicator partial). Group wraps a
+ logical section; GroupLabel is the muted heading
+ (ARIA-linked via aria-labelledby).
+
Selectors at src/uix/eidos/components/listbox/listbox.css.
+
+
+
Selector
Source
What it paints
+
+
[data-listbox]
eidos
Container — flex column, gap, border, padding.
+
[data-listbox][data-size]
eidos
Item height + font-size scale.
+
[data-listbox][data-variant='outline' | 'ghost']
eidos
Container chrome (border + bg).
+
[data-listbox][data-color]
eidos
Accent palette for selected highlight + focus ring.
+
[data-listbox][data-invalid]
morfo
Threat-coloured border override.
+
[data-listbox-item]
morfo
Option row — flex, padding, hover/highlight states.
+
[data-listbox-item][data-selected]
morfo
Selected-state band (accent-soft fill).
+
[data-listbox-item-indicator]
morfo
Hidden by default; revealed inside selected items.
+
[data-listbox-group-label]
morfo
Muted uppercase section heading.
+
+
+
+
+ {/if}
+
+ {#if tab === 'a11y'}
+
+
Accessibility
+
+ Follows the APG listbox pattern.
+ Container is role="listbox"; each Item is
+ role="option" with aria-selected;
+ Group is role="group" with
+ aria-labelledby pointing to GroupLabel.
+ aria-multiselectable is stamped automatically
+ in multiple mode.
+
+
+
Keyboard
+
+
+
Key
Action
+
+
ArrowDown / ArrowUp
Move highlight ±1 (vertical orientation).
+
ArrowRight / ArrowLeft
Same but for horizontal orientation; RTL inverts.
+
Home / End
First / last item.
+
Enter / Space
Toggle selection of highlighted item.
+
Ctrl/Cmd+A
Select all (multiple mode only).
+
Letter / digit
Typeahead — focus next item starting with that character.