|
'use client'; |
|
|
|
import { zodResolver } from '@hookform/resolvers/zod'; |
|
import { useForm } from 'react-hook-form'; |
|
import { z } from 'zod'; |
|
|
|
import { Button } from '@/components/ui/button'; |
|
import { |
|
Form, |
|
FormControl, |
|
FormDescription, |
|
FormField, |
|
FormItem, |
|
FormLabel, |
|
FormMessage, |
|
} from '@/components/ui/form'; |
|
import { |
|
Select, |
|
SelectContent, |
|
SelectItem, |
|
SelectTrigger, |
|
SelectValue, |
|
} from '@/components/ui/select'; |
|
import { FormSlider } from '@/components/ui/slider'; |
|
import { Textarea } from '@/components/ui/textarea'; |
|
|
|
const formSchema = z.object({ |
|
username: z.number().min(2, { |
|
message: 'Username must be at least 2 characters.', |
|
}), |
|
a: z.number().min(2, { |
|
message: 'Username must be at least 2 characters.', |
|
}), |
|
b: z.string().min(2, { |
|
message: 'Username must be at least 2 characters.', |
|
}), |
|
c: z.number().min(2, { |
|
message: 'Username must be at least 2 characters.', |
|
}), |
|
d: z.string().min(2, { |
|
message: 'Username must be at least 2 characters.', |
|
}), |
|
}); |
|
|
|
export default function TestingForm() { |
|
const form = useForm<z.infer<typeof formSchema>>({ |
|
resolver: zodResolver(formSchema), |
|
defaultValues: { |
|
username: 0, |
|
}, |
|
}); |
|
|
|
function onSubmit(values: z.infer<typeof formSchema>) { |
|
console.log(values); |
|
} |
|
|
|
return ( |
|
<Form {...form}> |
|
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-8"> |
|
<FormField |
|
control={form.control} |
|
name="username" |
|
render={({ field }) => ( |
|
<FormItem> |
|
<FormLabel>Username</FormLabel> |
|
<FormControl> |
|
<FormSlider {...field}></FormSlider> |
|
</FormControl> |
|
<FormDescription> |
|
This is your public display name. |
|
</FormDescription> |
|
<FormMessage /> |
|
</FormItem> |
|
)} |
|
/> |
|
<FormField |
|
control={form.control} |
|
name="a" |
|
render={({ field }) => ( |
|
<FormItem> |
|
<FormLabel>Username</FormLabel> |
|
<FormControl> |
|
<FormSlider {...field}></FormSlider> |
|
</FormControl> |
|
<FormDescription> |
|
This is your public display name. |
|
</FormDescription> |
|
<FormMessage /> |
|
</FormItem> |
|
)} |
|
/> |
|
<FormField |
|
control={form.control} |
|
name="b" |
|
render={({ field }) => ( |
|
<FormItem> |
|
<FormLabel>Username</FormLabel> |
|
<Select onValueChange={field.onChange} defaultValue={field.value}> |
|
<FormControl> |
|
<SelectTrigger className="bg-colors-background-inverse-weak"> |
|
<SelectValue placeholder="Select a verified email to display" /> |
|
</SelectTrigger> |
|
</FormControl> |
|
<SelectContent> |
|
<SelectItem value="m@example.com">m@example.com</SelectItem> |
|
<SelectItem value="m@google.com">m@google.com</SelectItem> |
|
<SelectItem value="m@support.com">m@support.com</SelectItem> |
|
</SelectContent> |
|
</Select> |
|
<FormDescription> |
|
This is your public display name. |
|
</FormDescription> |
|
<FormMessage /> |
|
</FormItem> |
|
)} |
|
/> |
|
<FormField |
|
control={form.control} |
|
name="c" |
|
render={({ field }) => ( |
|
<FormItem> |
|
<FormLabel>Username</FormLabel> |
|
<FormControl> |
|
<FormSlider {...field}></FormSlider> |
|
</FormControl> |
|
<FormDescription> |
|
This is your public display name. |
|
</FormDescription> |
|
<FormMessage /> |
|
</FormItem> |
|
)} |
|
/> |
|
<FormField |
|
control={form.control} |
|
name="d" |
|
render={({ field }) => ( |
|
<FormItem> |
|
<FormLabel>Username</FormLabel> |
|
<FormControl> |
|
<Textarea |
|
{...field} |
|
className="bg-colors-background-inverse-weak" |
|
></Textarea> |
|
</FormControl> |
|
<FormDescription> |
|
This is your public display name. |
|
</FormDescription> |
|
<FormMessage /> |
|
</FormItem> |
|
)} |
|
/> |
|
<Button |
|
variant={'tertiary'} |
|
size={'sm'} |
|
type="submit" |
|
className="w-full" |
|
> |
|
Test |
|
</Button> |
|
</form> |
|
</Form> |
|
); |
|
} |
|
|