Select
Select base prototype
base-select is a cataloged select-only compound prototype and the first Base family to formally define a value-class presentation part.
It follows the APG select-only combobox pattern: Trigger projects combobox, Content projects listbox, and Item projects option. The committed selection is persistent state; the active item while open is transient navigation state.
Family Parts
Section titled “Family Parts”select-root: owns controlled/uncontrolledopen,value, andtextValue, and arbitrates change requestsselect-trigger: an independent command surface that projects combobox ARIA and handles keyboard/pointer openingselect-value: rendersdisplayValueor placeholder through explicitrun.update()without owning input behaviorselect-content: composesasOverlay,asTransition,asFocusRoving, and anchor positioningselect-item: projects an option, separates transientactivefrom persistentselected, and submits selection requests
Why It Matters
Section titled “Why It Matters”This family is not only an addition to the base library. It is also a probe for Proto UI’s current value-component path:
- selected value text is defined by the prototype family itself
- the host app does not have to render that text manually
- value presentation can be refreshed through explicit update-driven re-render
That makes select-value a concrete render-consumed-value sample instead of a purely exposed-state sample.
Current v0 Boundary
Section titled “Current v0 Boundary”base-select currently includes:
- single selection
- pointer and select-only keyboard interaction, including arrows, Home/End, and typeahead
- Escape, Tab, outside-press dismissal, and appropriate focus restoration
- selected-item focus entry, with boundary fallback
- combobox/listbox/option ARIA relationships and selected state
- controlled values that emit requests without creating temporary success state
- a protocol-owned value presentation part
It does not yet include:
- form semantics
- native
<select>parity - editable combobox/search behavior
Group,Label,Separator,Viewport, and scroll buttons- form submission and hidden inputs
- multi-select
References
Section titled “References”- Contract: select.v0.md
- Source: packages/prototypes/base/src/select
- Test: select.test.ts