components/example.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
import { Form, FormControl, FormDescription, FormField, FormItem, FormLabel, FormMessage,} from "passport-ui";import { Button } from "passport-ui";import { Input } from "passport-ui";import { useForm } from "react-hook-form";import { zodResolver } from "@hookform/resolvers/zod";import { z } from "zod";components/example.tsx
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
const formSchema = z.object({ username: z.string().min(2, { message: "Username must be at least 2 characters.", }), email: z.email({ message: "Please enter a valid email address.", }),}); function FormExample() { const form = useForm<z.infer<typeof formSchema>>({ resolver: zodResolver(formSchema), defaultValues: { username: "", email: "", }, }); function onSubmit(values: z.infer<typeof formSchema>) { console.log(values); } return ( <Form {...form}> <form onSubmit={form.handleSubmit(onSubmit)} className="space-y-6"> <FormField control={form.control} name="username" render={({ field }) => ( <FormItem> <FormLabel>Username</FormLabel> <FormControl> <Input placeholder="Enter username" {...field} /> </FormControl> <FormDescription> This is your public display name. </FormDescription> <FormMessage /> </FormItem> )} /> <Button type="submit">Submit</Button> </form> </Form> );}