kind
test
component
SelectAutocomplete
version
1
renders items with search input and first highlighted
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
- { label: "Gamma", value: "c" }
searchPlaceholder: "Search..."
Search...
❯ Alpha
Beta
Gamma
↑↓ to navigate · Enter to select
typing filters items with fuzzy match
items:
- { label: "JavaScript", value: "js" }
- { label: "TypeScript", value: "ts" }
- { label: "Python", value: "py" }
fuzzy: true
sc
❯ JavaScript
TypeScript
↑↓ to navigate · Enter to select
typing filters items with substring match
items:
- { label: "JavaScript", value: "js" }
- { label: "TypeScript", value: "ts" }
- { label: "Python", value: "py" }
fuzzy: false
Script
❯ JavaScript
TypeScript
↑↓ to navigate · Enter to select
shows no-results message when search matches nothing
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
xyz
No matches for "xyz"
↑↓ to navigate · Enter to select
escape item remains visible when all items filtered out
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
escapeItem: { label: "Cancel", value: "cancel" }
xyz
No matches for "xyz"
❯ Cancel (Esc)
↑↓ to navigate · Enter to select · Esc to cancel
moves highlight down with wrapping
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
Type to filter...
Alpha
❯ Beta
↑↓ to navigate · Enter to select
moves highlight up with wrapping
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
Type to filter...
Alpha
❯ Beta
↑↓ to navigate · Enter to select
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
after: selected
selected_value: "b"
enter is no-op when list is empty
items:
- { label: "Alpha", value: "a" }
zzz
No matches for "zzz"
↑↓ to navigate · Enter to select
escape clears search on first press
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
Type to filter...
❯ Alpha
Beta
↑↓ to navigate · Enter to select
escape closes on second press when search already empty
items:
- { label: "Alpha", value: "a" }
onEscape: callback
after: dismissed
callback_fired: onEscape
escape selects escapeItem when provided
items:
- { label: "Alpha", value: "a" }
escapeItem: { label: "Cancel", value: "cancel" }
after: dismissed
selected_value: "cancel"
ctrl+g behaves like escape
items:
- { label: "Alpha", value: "a" }
onEscape: callback
after: dismissed
callback_fired: onEscape
two-stage escape: clear then close
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
escapeItem: { label: "Cancel", value: "cancel" }
test
No matches for "test"
❯ Cancel (Esc)
↑↓ to navigate · Enter to select · Esc to cancel
Type to filter...
❯ Alpha
Beta
Cancel (Esc)
↑↓ to navigate · Enter to select · Esc to cancel
after: dismissed
selected_value: "cancel"
backspace removes last character from search
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
ab
❯ Alpha
Beta
↑↓ to navigate · Enter to select
shows current indicator on marked item
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b", current: true }
Type to filter...
❯ Alpha
Beta ✓
↑↓ to navigate · Enter to select
appends escape item with Esc suffix
items:
- { label: "Alpha", value: "a" }
escapeItem: { label: "Cancel", value: "cancel" }
Type to filter...
❯ Alpha
Cancel (Esc)
↑↓ to navigate · Enter to select · Esc to cancel
highlight resets to first item after filter change
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
- { label: "Gamma", value: "c" }
Type to filter...
Alpha
Beta
❯ Gamma
↑↓ to navigate · Enter to select
Al
❯ Alpha
↑↓ to navigate · Enter to select
left arrow fires onLeftArrow
items:
- { label: "Alpha", value: "a" }
onLeftArrow: callback
callback_fired: onLeftArrow
right arrow fires onRightArrow
items:
- { label: "Alpha", value: "a" }
onRightArrow: callback
callback_fired: onRightArrow
hides HintBar when hideHints is true
items:
- { label: "Alpha", value: "a" }
hideHints: true
Type to filter...
❯ Alpha
shows additional and extra hints in HintBar
items:
- { label: "Alpha", value: "a" }
additionalHints: { "←→": "to switch tabs" }
Type to filter...
❯ Alpha
↑↓ to navigate · ←→ to switch tabs · Enter to select
highlighted item uses selected color
items:
- { label: "Alpha", value: "a" }
- { label: "Beta", value: "b" }
- selector: indicator(0)
icon: iconPrompt
color: selected
- selector: item(0)
color: selected
- selector: item(1)
color: null
current item uses statusSuccess color
items:
- { label: "Alpha", value: "a", current: true }
- selector: item(0)
contains: "✓"
color: statusSuccess
- selector: indicator(0)
color: statusSuccess
search placeholder uses textTertiary
items:
- { label: "Alpha", value: "a" }
searchPlaceholder: "Filter..."
- selector: component("SearchInput")
placeholder_color: textTertiary
escape item suffix uses textSecondary
items:
- { label: "Alpha", value: "a" }
escapeItem: { label: "Cancel", value: "cancel" }
- selector: item(1)
contains: "(Esc)"
color: textSecondary
no-results message uses textSecondary
items:
- { label: "Alpha", value: "a" }
- selector: label("No matches")
color: textSecondary
screen reader replaces check glyph with text
items:
- { label: "Beta", value: "b", current: true }
screen_reader: true
Type to filter...
❯ Beta (current)
↑↓ to navigate · Enter to select