import { HTMLAttributes, useState } from 'react' import { z } from 'zod' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { Link } from '@tanstack/react-router' 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' type UserAuthFormProps = 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', }), }) export function UserAuthForm({ className, ...props }: UserAuthFormProps) { const [isLoading, setIsLoading] = useState(false) const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { email: '', password: '', }, }) function onSubmit(data: z.infer) { setIsLoading(true) // eslint-disable-next-line no-console console.log(data) setTimeout(() => { setIsLoading(false) }, 3000) } return (
( Email )} /> ( Password Forgot password? )} />
Or continue with
) }