Text Field
Text fields let users enter and edit text.
Introduction
Text fields allow users to enter text into a UI. They typically appear in forms and dialogs.
<TextField />
Playground
size
Component
After installation, you can start building with this component using the following basic elements:
import TextField from '@mui/joy/TextField';
export default function MyApp() {
return <TextField placeholder="Search anything…" />;
}
Variants
The text field component supports the four global variants: solid
(default), soft
, outlined
, and plain
.
<TextField label="Solid" placeholder="Type in here…" variant="solid" />
<TextField label="Soft" placeholder="Type in here…" variant="soft" />
<TextField label="Outlined" placeholder="Type in here…" variant="outlined" />
<TextField label="Plain" placeholder="Type in here…" variant="plain" />
<TextField size="sm" label="Size" placeholder="Small" />
<TextField size="md" label="Size" placeholder="Medium" />
<TextField size="lg" label="Size" placeholder="Large" />
Form props
Standard form attributes are supported e.g. required
, disabled
, type
, etc. as well as a helperText
which is used to give context about a field's input, such as how the input will be used.
This is a helper text
<TextField label="Label" placeholder="Type in here…" required />
<TextField label="Label" placeholder="Type in here…" disabled />
<TextField
label="Label"
placeholder="Type in here…"
helperText="This is a helper text"
/>
Validation
To toggle the error state, use the error
prop.
And, to provide feedback about the error to the user, use the helperText
prop.
You got this wrong. Try again!
<TextField
label="Label"
placeholder="Type in here…"
error
helperText="You got this wrong. Try again!"
/>
Input decorators
Use the startDecorator
and/or endDecorator
props to add supporting icons or elements to the text field.
<TextField
label="Label"
placeholder="Type in here…"
startDecorator={<PersonRoundedIcon fontSize="small" />}
endDecorator={
<Chip size="sm" variant="soft">
New stuff
</Chip>
}
/>
<TextField label="Label" placeholder="Type in here…" fullWidth />
Unstyled
The component also comes with an unstyled version. It's ideal for doing heavy customizations and minimizing bundle size.