Skip to content
Components

Forms

Inputs, their validation surfaces and the form lifecycle around them.

24 documented entries in this family.

InputReviewed page

The text control family: input, textarea, search and the shared chrome they all use.

@luc/ui/components/input
TextareaGenerated from the public API

Multi-line text with the shared control chrome and a real resize contract.

@luc/ui/components/textarea
NativeSelectGenerated from the public API

The platform select, for when the operating system's own menu is the right answer.

@luc/ui
SelectReviewed page

Choose one value from a known list, with the full listbox keyboard contract.

@luc/ui/components/select
ComboboxReviewed page

Search and choose, including asynchronous sources, grouping and multi-select.

@luc/ui/components/combobox
CheckboxGenerated from the public API

A boolean choice with an indeterminate state and a 24 px hit area.

@luc/ui
RadioGenerated from the public API

One of a few mutually exclusive options, with roving focus and arrow-key movement.

@luc/ui
SwitchGenerated from the public API

An immediate on or off for a setting that applies without a save.

@luc/ui
RangeSliderReviewed page

A value on a range, single or two-handled, with a keyboard contract per thumb.

@luc/ui/slider
SegmentedControlGenerated from the public API

A compact exclusive choice that reads as a single control.

@luc/ui
RatingGenerated from the public API

A star rating that is operable from the keyboard and answers in half steps when asked.

@luc/ui
SearchInputGenerated from the public API

A field that behaves like a search box: a clear affordance and Escape to reset.

@luc/ui
InputGroupGenerated from the public API

An input with addons — prefixes, suffixes and inline actions inside one ring.

@luc/ui/forms
FileUploadReviewed page

The upload list as a real status model: queued, uploading, done, rejected and retryable.

@luc/ui
FormReviewed page

The submit lifecycle and the error summary a long form needs, without binding a form engine.

@luc/ui/forms
FieldArrayGenerated from the public API

Grouping, repeating and numbering fields across a long form.

@luc/ui/forms
NumberInputReviewed page

Numeric entry with a real scale: integers, currency and percentages.

@luc/ui/forms
PasswordInputReviewed page

A password field with a real reveal control and no clipboard surprises.

@luc/ui/forms
OtpInputReviewed page

One-time codes: paste-aware, auto-advancing, announced as one group.

@luc/ui/forms
FileInputReviewed page

Choosing files and dropping them, with the same validation surface.

@luc/ui/forms
TagInputReviewed page

A list of values entered as chips, with keyboard removal and duplicate handling.

@luc/ui/forms
ColorPickerReviewed page

Pick a colour, with a parsed hex value and readable ink computed for you.

@luc/ui
FieldReviewed page

The label, description, message and ARIA wiring every control needs, in one component.

@luc/ui/forms
LabelGenerated from the public API

A caption bound to a control, for the cases `Field` does not own.

@luc/ui

Accessibility

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.

Luc UI v1.0Homedark theme