+ Selectable list with role="grid" semantics — rows
+ that can contain interactive children (buttons, links, per-row
+ checkboxes). 2D keyboard nav (Up/Down between rows + Left/Right
+ between cells / inner controls) lets assistive tech reach the
+ row-level actions properly. Use over Listbox when
+ rows aren't atomic options — ARIA forbids interactive descendants
+ inside role="listbox".
+
Uncontrolled initial selection. Ignored when value is bound.
+
selectionMode
'none' | 'single' | 'multiple'
'single'
—
+
loop
boolean
false
Wrap arrow nav at edges.
+
typeahead
boolean
true
Letter typing jumps to matching row.
+
disabled · readonly · required · invalid
boolean
false
OR-merged with Field.Provider.
+
name
string
—
Form name → hidden input.
+
variant eidos
ControlVariant: 'surface' | 'outline' | 'ghost'
'surface'
Container chrome.
+
size eidos
'xs' | 'sm' | 'md' | 'lg' | 'xl'
'md'
Row height + font.
+
color eidos
ColorRole
'primary'
Selected-row + focus accent.
+
+
+
+
+
Row
+
+
+
Prop
Type
Default
Description
+
+
value
string
required
Unique row identifier.
+
textValue
string
textContent
Override for typeahead search.
+
disabled
boolean
false
Skip from selection + 2D nav.
+
+
+
+
+
Cell · SelectionCheckbox
+
+ Cell renders role="gridcell" as a content slot — wrap any interactive children inside. SelectionCheckbox is a per-row toggle that participates in selectionMode='multiple'; click toggles the row in value. Visual matches the shared menu-indicator pattern (filled accent + white ✓).
+
Row — flex layout, padding, hover/highlight states.
+
[data-grid-list-row][data-selected]
morfo
Selected-row accent-soft fill.
+
[data-grid-list-cell]
morfo
Cell slot — first/last child get special flex treatment.
+
[data-grid-list-selection-checkbox][data-state]
eidos
0.875rem outlined box → filled accent + white ✓.
+
+
+
+
+ {/if}
+
+ {#if tab === 'a11y'}
+
+
Accessibility
+
+ Follows the APG grid pattern.
+ Container is role="grid"; each Row is
+ role="row"; each Cell is role="gridcell".
+ Roving tabindex on rows; arrow nav handles cell-level focus too
+ so inner buttons / links are reachable.
+
+
+
Keyboard
+
+
+
Key
Action
+
+
ArrowDown / ArrowUp
Move row focus ±1.
+
ArrowRight / ArrowLeft
Move cell focus within the row (lets you reach inner buttons / links).
+
Home / End
First / last row.
+
Enter / Space
Toggle row selection.
+
Shift+Click / Shift+ArrowUp/Down
Extend range (multiple mode).
+
Ctrl/Cmd+A
Select all (multiple mode).
+
Escape
Clear selection.
+
Letter / digit
Typeahead — jump to next row whose textValue starts with that character.