Forms
Inputs, their validation surfaces and the form lifecycle around them.
24 documented entries in this family.
The text control family: input, textarea, search and the shared chrome they all use.
@luc/ui/components/inputMulti-line text with the shared control chrome and a real resize contract.
@luc/ui/components/textareaThe platform select, for when the operating system's own menu is the right answer.
@luc/uiChoose one value from a known list, with the full listbox keyboard contract.
@luc/ui/components/selectSearch and choose, including asynchronous sources, grouping and multi-select.
@luc/ui/components/comboboxA boolean choice with an indeterminate state and a 24 px hit area.
@luc/uiOne of a few mutually exclusive options, with roving focus and arrow-key movement.
@luc/uiAn immediate on or off for a setting that applies without a save.
@luc/uiA value on a range, single or two-handled, with a keyboard contract per thumb.
@luc/ui/sliderA compact exclusive choice that reads as a single control.
@luc/uiA star rating that is operable from the keyboard and answers in half steps when asked.
@luc/uiA field that behaves like a search box: a clear affordance and Escape to reset.
@luc/uiAn input with addons — prefixes, suffixes and inline actions inside one ring.
@luc/ui/formsThe upload list as a real status model: queued, uploading, done, rejected and retryable.
@luc/uiThe submit lifecycle and the error summary a long form needs, without binding a form engine.
@luc/ui/formsGrouping, repeating and numbering fields across a long form.
@luc/ui/formsNumeric entry with a real scale: integers, currency and percentages.
@luc/ui/formsA password field with a real reveal control and no clipboard surprises.
@luc/ui/formsOne-time codes: paste-aware, auto-advancing, announced as one group.
@luc/ui/formsChoosing files and dropping them, with the same validation surface.
@luc/ui/formsA list of values entered as chips, with keyboard removal and duplicate handling.
@luc/ui/formsPick a colour, with a parsed hex value and readable ink computed for you.
@luc/uiThe label, description, message and ARIA wiring every control needs, in one component.
@luc/ui/formsA caption bound to a control, for the cases `Field` does not own.
@luc/uiAccessibility
A field is labelled by a real label rather than a placeholder, invalid input is marked and pointed at the message that explains it, and a hint belongs to the field instead of merely sitting near it.