Input
Input is a component that allows users to enter text. It can be used to get user inputs in forms, search fields, and more.
Installation
The above command is for individual installation only. You may skip this step if @nextui-org/react
is already installed globally.
Import
Usage
Disabled
Read Only
Required
If you pass the isRequired
property to the input, it will have a danger
asterisk at
the end of the label and the input will be required.
Sizes
Colors
Variants
Radius
Label Placements
You can change the position of the label by setting the labelPlacement
property to inside
, outside
or outside-left
.
Note: If the
label
is not passed, thelabelPlacement
property will beoutside
by default.
Password Input
You can use the type
property to change the input type to password
.
Clear Button
If you pass the isClearable
property to the input, it will have a clear button at the
end of the input, it will be visible when the input has a value.
Start & End Content
You can use the startContent
and endContent
properties to add content to the start and end of the input.
With Description
You can add a description to the input by passing the description
property.
With Error Message
You can combine the isInvalid
and errorMessage
properties to show an invalid input. errorMessage
is only shown when isInvalid
is set to true
.
Example with regex
email validation:
Controlled
You can use the value
and onValueChange
properties to control the input value.
Note: NextUI
Input
also supports native events likeonChange
, useful for form libraries such as Formik and React Hook Form.
Slots
- base: Input wrapper, it handles alignment, placement, and general appearance.
- label: Label of the input, it is the one that is displayed above, inside or left of the input.
- mainWrapper: Wraps the
inputWrapper
when position isoutside
/outside-left
. - inputWrapper: Wraps the
label
(when it is inside) and theinnerWrapper
. - innerWrapper: Wraps the
input
, thestartContent
and theendContent
. - input: The input element.
- clearButton: The clear button, it is at the end of the input.
- helperWrapper: Wraps the
description
and theerrorMessage
. - description: The description of the input.
- errorMessage: The error message of the input.
Custom Styles
You can customize the Input
component by passing custom Tailwind CSS classes to the component slots.
Custom Implementation
In case you need to customize the input even further, you can use the useInput
hook to create your own implementation.
Data Attributes
Input
has the following attributes on the base
element:
- data-invalid:
When the input is invalid. Based on
isInvalid
prop. - data-required:
When the input is required. Based on
isRequired
prop. - data-readonly:
When the input is readonly. Based on
isReadOnly
prop. - data-hover: When the input is being hovered. Based on useHover
- data-focus: When the input is being focused. Based on useFocusRing.
- data-focus-within: When the input is being focused or any of its children. Based on useFocusWithin.
- data-focus-visible: When the input is being focused with the keyboard. Based on useFocusRing.
- data-disabled:
When the input is disabled. Based on
isDisabled
prop.
Accessibility
- Built with a native
<input>
element. - Visual and ARIA labeling support.
- Change, clipboard, composition, selection, and input event support.
- Required and invalid states exposed to assistive technology via ARIA.
- Support for description and error message help text linked to the input via ARIA.
API
Input Props
Prop | Type | Default |
children |
| |
variant |
| "flat" |
color |
| "default" |
size |
| "md" |
radius |
| |
label |
| |
value |
| |
defaultValue |
| |
placeholder |
| |
description |
| |
errorMessage |
| |
validate |
| |
validationBehavior |
| "native" |
startContent |
| |
endContent |
| |
labelPlacement |
| "inside" |
fullWidth |
| true |
isClearable |
| false |
isRequired |
| false |
isReadOnly |
| false |
isDisabled |
| false |
isInvalid |
| false |
baseRef |
| |
disableAnimation |
| false |
classNames |
|
Input Events
Prop | Type | Default |
onChange |
| |
onValueChange |
| |
onClear |
|