Form
react-hook-form + zod integration.
Import
tsx
import { Form } from "@cooud-ui/ui";
bash
npx cooud-ui add form
react-hook-form + zod integration.
import { Form } from "@cooud-ui/ui";
npx cooud-ui add form
On this page
A form wired with react-hook-form and a zod schema.
const profileSchema = z.object({email: z.string().email("Enter a valid email address."),bio: z.string().min(10, "Bio must be at least 10 characters."),});type ProfileValues = z.infer<typeof profileSchema>;function FormDemo() {const [submitted, setSubmitted] = useState(false);const form = useForm<ProfileValues>({resolver: zodResolver(profileSchema),defaultValues: { email: "", bio: "" },mode: "onChange",});const onSubmit = (values: ProfileValues) => {setSubmitted(true);};return (<Form {...form}><formonSubmit={form.handleSubmit(onSubmit)}className="flex max-w-md flex-col gap-5"noValidate><FormFieldcontrol={form.control}name="email"render={({ field }) => (<FormItem><FormLabel>Email</FormLabel><FormControl><Input type="email" placeholder="you@cooud.dev" {...field} /></FormControl><FormMessage /></FormItem>)}/><FormFieldcontrol={form.control}name="bio"render={({ field }) => (<FormItem><FormLabel>Bio</FormLabel><FormControl><Textarea rows={3} placeholder="Tell us a bit about yourself…" {...field} /></FormControl><FormMessage /></FormItem>)}/><div className="flex items-center gap-3"><Button type="submit">Save profile</Button>{submitted ? (<Badge variant="success"><Check aria-hidden="true" />Saved</Badge>) : null}</div></form></Form>);}