RequiresRuntimeDatastar with Rocket (free since v1.0.4) — imports
rocket from ../datastar.jsServeran endpoint that morphs the listbox as the input's signal postsShippedin this repository, static/rocket/combo-box.jsThis bench needs a key or a server. The markup and behaviour are shown; the data is not.
combo-box / combo-select static/rocket/combo-box.js — one grammar, two elements. combo-box: suggestions + a free-form lane; combo-select: STRICT, the source is the vocabulary. Behavior only: open on focus, best-match pre-highlight (type → Enter commits), arrows, Escape/click-outside, morph-armored highlight, <mark> match ink. COMMITTED PICKS ARE TAGS (a reference is categorical); free-form addresses stay text (that's what they are). Signals are the single truth — forms post them; the chip is presentation.
combo-box — free Type, Enter — best match commits and CHIPS; "Use address" commits as text. The × un-commits.
identity:
combo-select — strict No free-form lane. Junk judges invalid on blur (try "zzz", click away); every commit chips.
identity:
In forms — the canon integration (gf-191) Both elements sit in the label grid's control lists beside date-picker, so the WHOLE canon works unmodified: label→small→control, required asterisks (from the inner input), --row-width shares, fieldset rows, state slots, the datastar submit. This is the production shape.