Autocomplete
Atom
Text input + dropdown: searchable single-select.
Playground
Every control sets a real prop of AutocompleteProps. The JSX below updates as you go.
Web
iOS
Android
JSX · AutocompleteProps
Variants
5 examples from src/atoms/autocomplete/autocomplete.md, each rendered live from its own JSX.
Sizes
States
Hover, focus and press are pinned so they can be compared side by side; the rest are real props.
Anatomy
1
Label
2
Field
3
Query
4
Listbox
5
Match highlight
Dimmed parts appear only in some states or variants.
Props
21 props on AutocompleteProps, grouped as they are declared in source. Required props are marked *.
MeasureProps · width steps xxxs 192 · xxs 256 · xs 320 · sm 384 · md 448 · lg 512 · xl 576 · xxl 672 · xxxl 768 · wide 896 · wider 1024 · widest 1152 · page 1280, plus start to pin to the leading edge.
Accessibility and keyboard
Keyboard
ArrowDown
Opens the list
ArrowUp
ArrowDown
Moves through options
Enter
Commits the active option
Escape
Closes the list, keeps the text
Semantics
Roles
button
combobox
option
States
disabled
expanded
selected
ARIA on web
aria-activedescendant
aria-autocomplete
aria-controls
aria-disabled
aria-expanded
aria-haspopup
aria-label
aria-required
aria-selected
Below the platform minimum, the touch area grows to 44 pt on iOS and 48 dp on Android without moving the layout.
From the docs
Pass label (and required) to name the field: iOS and web render the label above the field, while Android floats the Material 3 in-container label once the list opens or a value fills the field. On Android the field grows with the user's text size, and a label longer than the field truncates on one line clear of the toggle while the field's accessible name stays the whole label. The required star is decorative: a screen reader hears the field as required, from aria-required on the web and from its name ("Assig
Arrow Down and Arrow Up open the list and highlight an option while focus stays in the text field. Navigation stops at the first and last matches. Home and End jump to those limits once an option is highlighted; otherwise they retain their text-editing behavior. Enter chooses the highlighted option, Escape closes the list without changing the query, and Tab closes it while moving focus. Typing resets the highlight. Confirming an input-method candidate does not select an option or submit a surrounding Form.
The disclosure button has a real target of at least 24px on web, 44pt on iOS, and 48dp on Android. The small iOS field keeps a 44pt height so its touch target fits inside the field; its typography remains compact.
Platform skins
The playground's props on each platform: same tree, native shapes, type and touch sizes.
Usage
Pass label (and required) to name the field: iOS and web render the label above the field, while Android floats the Material 3 in-container label once the list opens or a value fills the field. On Android the field grows with the user's text size, and a label longer than the field truncates on one line clear of the toggle while the field's accessible name stays the whole label. The required star is decorative: a screen reader hears the field as required, from aria-required on the web and from its name ("Assigned to, required") on iOS and Android. The field fills the parent it is given; a step of its own (xs, lg, …, with start to pin it to the leading edge) or a Container step sets its measure.
On web the field is the Canvas v4 search field: 40px tall (32 small, 48 large) on the sunken fill behind the field-border hairline, a leading 16px search glyph, a 400 14px value (13 small) and a 15px chevrons-up-down 10px from its end. The pointer darkens the edge to the subtle ink, and focus rings it in the accent with a 4px halo. The suggestions are a card 6px under the field with a 4px inset and 34px rows; the typed letters are marked in each suggestion on the accent's soft wash, and the chosen suggestion sits on the muted wash. iOS ships no combo box, so it draws the same field and card at the iOS corners. Android keeps the Material 3 exposed dropdown: the filled field with its active indicator and drop-down triangle, and the Material menu whose active and chosen rows take the state layer.
In glass mode the suggestion list is a dense-layer glass card under the field (or above it when it fits there); the field, its caret and its toggle stay in place, and picking a suggestion commits the value at once. Solid mode paints the skin's own list.
Tokens
Read from the playground render. Values follow the scheme and the ion hue.
--bg2
--fd
--ft
--ion-soft
--ion-tx
--ln
--ln2
--sf
--sf3
--sh-md
--tx2
--tx3