import { HTMLAttributes, useState } from 'react' import { z } from 'zod' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { IconBrandFacebook, IconBrandGithub } from '@tabler/icons-react' import { cn } from '@/lib/utils' import { Button } from '@/components/ui/button' import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage, } from '@/components/ui/form' import { Input } from '@/components/ui/input' import { PasswordInput } from '@/components/password-input' import { useLogin } from '../services/sign-up.services' type SignUpFormProps = HTMLAttributes const formSchema = z .object({ email: z .string() .min(1, { message: 'Please enter your email' }) .email({ message: 'Invalid email address' }), password: z .string() .min(1, { message: 'Please enter your password', }) .min(7, { message: 'Password must be at least 7 characters long', }), confirmPassword: z.string(), }) .refine((data) => data.password === data.confirmPassword, { message: "Passwords don't match.", path: ['confirmPassword'], }) export function SignUpForm({ className, ...props }: SignUpFormProps) { const [isLoading, setIsLoading] = useState(false) const { mutate: loginMutate } = useLogin() const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { email: '', password: '', confirmPassword: '', }, }) function onSubmit(data: z.infer) { setIsLoading(true) // eslint-disable-next-line no-console console.log(data) loginMutate(data) setTimeout(() => { setIsLoading(false) }, 3000) } return (
( Email )} /> ( Password )} /> ( Confirm Password )} />
Or continue with
) }