Select
A trigger on a rule that opens a layer of options.
States
-
Closed
aria-expanded="false"
The value on its rule, the chevron in a resting cell.
-
Focused
:focus-visible
The rule develops in --state, as in every field.
-
Open
aria-expanded="true"
A framed layer of options; the chosen one is a --state fill; the cell breathes.
-
Disabled
disabled
A hairline, muted text, the cell’s ring at half strength.
Anatomy
| Trigger | the chosen value in Basier 16/24 on a 40px field and its ink rule |
|---|---|
| Cell | a chevron in an icon cell at the rule’s end; open, it is switched on and breathes |
| Layer | paper and a 1px --ink frame, half a module under the field, padded half a module at the sides |
| Options | two modules tall, the clean cut at 16/24, on --border hairlines |
| Current | the chosen option is a --state fill running to the frame |
| Hover | an option turns --state and its hairline develops from the pointer |
| Opening | the menu burn from where it was pressed, 300ms; reduced motion cuts |
| Keys | Arrow keys open it and move through it, Enter chooses, Escape closes |
Decisions
-
The one framed surface
Frames are off everywhere except layers. The list is a sheet laid over the page, so it keeps a 1px ink frame to have an edge against what is behind it.
-
Current is a fill
The chosen option is a --state fill, as the current section is in the site menu: red as the current state, never as decoration.
-
It burns open
The layer opens and closes with the menu burn, the cascade at the scale of a popover, from where it was pressed, like the site’s menus.
-
Native where it will do
Where a custom list is not needed, the native select sits inside the same field and rule, so the platform’s own picker opens.