import { z } from 'zod' import { useForm } from 'react-hook-form' import { zodResolver } from '@hookform/resolvers/zod' import { useNavigate } from '@tanstack/react-router' import { Loader2, LogIn } from 'lucide-react' import { toast } from 'sonner' import { useLogin } from '@/hooks/auth/useAuth' 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' const formSchema = z.object({ username: z .string() .min(1, 'نام کاربری الزامی است') .min(3, 'نام کاربری باید حداقل ۳ کاراکتر باشد'), password: z .string() .min(1, 'رمز عبور الزامی است') .min(6, 'رمز عبور باید حداقل ۶ کاراکتر باشد'), }) interface UserAuthFormProps extends React.HTMLAttributes { redirectTo?: string } export function UserAuthForm({ className, redirectTo, ...props }: UserAuthFormProps) { const navigate = useNavigate() const { mutateAsync: login, isPending } = useLogin() const form = useForm>({ resolver: zodResolver(formSchema), defaultValues: { username: '', password: '', }, }) const onSubmit = async (data: z.infer) => { try { await login(data) toast.success('ورود با موفقیت انجام شد') navigate({ to: redirectTo || '/', replace: true, }) } catch { toast.error('نام کاربری یا رمز عبور اشتباه است') } } return (
( نام کاربری )} /> ( رمز عبور )} /> ) }