← All Components

Form

Form component built on react-hook-form. Provides field context, validation, and accessible error messages.

Basic

Your public display name.

We will never share your email.

With Validation

Tab out of a field to trigger validation. Submit to see all errors.

Must be at least 3 characters.

Must be at least 8 characters.

Sub-components

ComponentDescription
FormRoot provider wrapping react-hook-form FormProvider
Form.FieldConnects a field to form state via Controller
Form.ItemWrapper that provides field ID context
Form.LabelLabel connected to its field via htmlFor
Form.ControlSlot that passes aria attributes to the input
Form.DescriptionHelp text below the input
Form.MessageValidation error message

Field Props

PropTypeDescription
controlControlreact-hook-form control object
namestringField name path
rulesRegisterOptionsValidation rules
render({ field, fieldState }) => ReactNodeRender function for the field

Usage

const form = useForm({ defaultValues: { name: "" } }); <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)}> <Form.Field control={form.control} name="name" rules={{ required: "Name is required" }} render={({ field }) => ( <Form.Item> <Form.Label>Name</Form.Label> <Form.Control> <Input {...field} /> </Form.Control> <Form.Description>Help text.</Form.Description> <Form.Message /> </Form.Item> )} /> <Button type="submit">Submit</Button> </form> </Form>