Input

Text input field with optional label, hint, and error state

Category: inputs · WCAG 2.2-AA · form, text, input, ai

Sizes

States

Props

PropTypeDefaultDescription
labelstring—Text label for the control (standalone use). Omit it when wrapping the Input in a Field — the Field owns the label, and setting both double-labels the control.
hintstring—Supplementary hint text shown with the control.
errorstring—Error message shown when the value is invalid.
size'sm' | 'md' | 'lg'mdVisual size of the component (e.g. 'sm', 'md', 'lg').
placeholderstring—Placeholder text shown when the field is empty.
disabledbooleanfalseWhen true, disables the control and removes it from the tab order.
ariaLabelstring—Invisible accessible name, for when a visible element outside this component already labels it and `label` would render that text a second time. ⚠ `label` on this component is **visible**; `IconButton.label`/`Sparkline.label` are invisible names, which is the prior that costs adopters a duplicated label. The raw DOM `aria-label` still wins over this.
aibooleanfalseAI presence: an AI-tinted border and a soft aura, marking a value AI produced or suggested. Visual only — put an AiBadge in the label so the provenance is also text, and clear `ai` once the person edits the value.

Design tokens

When to use

When not to use

How to build an accessible Input in React →

Examples

With label

<Input label="Email" placeholder="[email protected]" />

With error

<Input label="Email" error="Invalid email address" />

AI-suggested value

<Input label="Subject" ai defaultValue="Weekly report" />

Related components

← Back to docs