---
title: FormField
description: A wrapper for form elements that provides validation and error handling.
category: form
links:
- label: GitHub
icon: i-simple-icons-github
to: https://github.com/nuxt/ui/tree/v3/src/runtime/components/FormField.vue
---
## Usage
Wrap any form component with a FormField. Used in a [Form](/components/form), it provides validation and error handling.
### Label
Use the `label` prop to set the label for the form control.
::component-code
---
prettier: true
props:
label: Email
slots:
default: |
---
:u-input{placeholder="Enter your email"}
::
::note
The label `for` attribute and the form control are associated with a unique `id` if not provided.
::
When using the `required` prop, an asterisk is added next to the label.
::component-code
---
prettier: true
ignore:
- label
props:
label: Email
required: true
slots:
default: |
---
:u-input{placeholder="Enter your email"}
::
### Description
Use the `description` prop to provide additional information below the label.
::component-code
---
prettier: true
ignore:
- label
props:
label: Email
description: We'll never share your email with anyone else.
slots:
default: |
---
:u-input{placeholder="Enter your email" class="w-full"}
::
### Hint
Use the `hint` prop to display a hint message next to the label.
::component-code
---
prettier: true
ignore:
- label
props:
label: Email
hint: Optional
slots:
default: |
---
:u-input{placeholder="Enter your email"}
::
### Help
Use the `help` prop to display a help message below the form control.
::component-code
---
prettier: true
ignore:
- label
props:
label: Email
help: Please enter a valid email address.
slots:
default: |
---
:u-input{placeholder="Enter your email" class="w-full"}
::
### Error
Use the `error` prop to display an error message below the form control. When used together with the `help` prop, the `error` prop takes precedence.
When used inside a [Form](/components/form), this is automatically set when a validation error occurs.
::component-code
---
prettier: true
ignore:
- label
props:
label: Email
error: Please enter a valid email address.
slots:
default: |
---
:u-input{placeholder="Enter your email" class="w-full"}
::
::tip{to="/getting-started/theme#colors"}
This sets the `color` to `error` on the form control. You can change it globally in your `app.config.ts`.
::
### Size
Use the `size` prop to change the size of the FormField, the `size` is proxied to the form control.
::component-code
---
prettier: true
ignore:
- label
- description
- hint
- help
props:
label: Email
description: We'll never share your email with anyone else.
hint: Optional
help: Please enter a valid email address.
size: xl
slots:
default: |
---
:u-input{placeholder="Enter your email" class="w-full"}
::
## API
### Props
:component-props
### Slots
:component-slots
## Theme
:component-theme