Forms
Input
Captures a single line of text with quiet depth.
Usage
Examples
Controlled value
Keep value and onValueChange together. The displayed value follows each edit.
Read-only
Use readOnly when users should focus, select, and copy an existing value.
Disabled
Disabled controls cannot be edited or focused and do not participate in native form submission.
Project identity
A short name makes a project easy to find.
Small
Use this size to match the density of the surrounding interface.
Default size
The default size suits general form layouts.
Large
Use this size to match the density of the surrounding interface.
Invalid
Keep values and validation readable in every state.
Recommendations
| Guidance | Practice |
|---|---|
| Do | Use a visible label and the appropriate native type and autocomplete value. Keep examples in help text. |
| Do | Input preserves native text editing and selection. Read-only values stay focusable; disabled values leave the tab order. |
| Do | Pass defaultValue from a Server Component for an uncontrolled input. Keep value and onValueChange together in a Client Component for controlled editing. |
Usage boundaries
| Guidance | Boundary |
|---|---|
| Scope | Use Textarea for multiline text and Number Field for numeric stepping. Placeholder text is not a label. |
API reference
Public props from @mizen-labs/ui. Use exported prop types for the complete TypeScript contract.
| Prop | Type | Default | Description |
|---|---|---|---|
| | — | Controls the input value. |
| | — | Sets the initial input value. |
| | — | Receives value changes from the Base UI input. |
| | "default" | Selects the control size. |
| | false | Prevents interaction and form editing. |
| | false | Marks the input invalid when it is not bound to a Field. |
| | false | Prevents editing while keeping the value readable. |
| | false | Uses the size treatment without the standard field surface. |