forms
FormGroup
Display a label and additional informations around a form element.
Usage
Use the FormGroup component around an Input, Textarea, Select or a SelectMenu with the name prop to automatically associate a <label> element with the form element.
<UFormGroup label="Email" name="email">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>Required
Use the required prop to indicate that the form element is required.
<UFormGroup label="Email" required>
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>Description
Use the description prop to display a description below the label.
<UFormGroup label="Email" description="We'll only use this for spam.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>Hint
Use the hint prop to display a hint above the form element.
<UFormGroup label="Email" hint="Optional">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>Help
Use the help prop to display an help message below the form element.
<UFormGroup label="Email" help="We will never share your email with anyone else.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>Error
Use the error prop to display an error message below the form element.
When used together with the help prop, the error prop will take precedence.
<template>
  <UFormGroup v-slot="{ error }" label="Email" :error="!email && 'You must enter an email'" help="This is a nice email!">
    <UInput v-model="email" type="email" placeholder="Enter email" :trailing-icon="error && 'i-heroicons-exclamation-triangle-20-solid'" />
  </UFormGroup>
</template>
<script setup lang="ts">
const email = ref('')
</script>error prop will automatically set the color prop of the form element to red.You can also use the error prop as a boolean to mark the form element as invalid.
<UFormGroup label="Email" error>
<UInput placeholder="you@example.com" /></UFormGroup>Form component.Size
Use the size prop to change the size of the label and the form element.
<UFormGroup size="xl" label="Email" hint="Optional" description="We'll only use this for spam." help="We will never share your email with anyone else.">
<UInput placeholder="you@example.com" icon="i-heroicons-envelope" /></UFormGroup>size prop.Props
null
null
{}
null
null
null
null
null
false
Preset
{
  "wrapper": "",
  "label": {
    "wrapper": "flex content-center items-center justify-between",
    "base": "block font-medium text-gray-700 dark:text-gray-200",
    "required": "after:content-['*'] after:ms-0.5 after:text-red-500 dark:after:text-red-400"
  },
  "size": {
    "2xs": "text-xs",
    "xs": "text-xs",
    "sm": "text-sm",
    "md": "text-sm",
    "lg": "text-sm",
    "xl": "text-base"
  },
  "container": "mt-1 relative",
  "description": "text-gray-500 dark:text-gray-400",
  "hint": "text-gray-500 dark:text-gray-400",
  "help": "mt-2 text-gray-500 dark:text-gray-400",
  "error": "mt-2 text-red-500 dark:text-red-400"
}