'use client'; import { useRouter } from '@/shared/config/i18n/navigation'; import { saveToken } from '@/shared/lib/cookie'; import { Button } from '@/shared/ui/button'; import { Card, CardContent, CardHeader, CardTitle } from '@/shared/ui/card'; import { Form, FormControl, FormField, FormItem, FormMessage, } from '@/shared/ui/form'; import { Input } from '@/shared/ui/input'; import { Label } from '@/shared/ui/label'; import { zodResolver } from '@hookform/resolvers/zod'; import { useMutation } from '@tanstack/react-query'; import { Loader2 } from 'lucide-react'; import { useForm } from 'react-hook-form'; import { toast } from 'sonner'; import * as z from 'zod'; import { login } from '../lib/api'; const loginSchema = z.object({ login: z.string().min(1, 'Login is required'), password: z.string().min(1, 'Password is required'), }); const Login = () => { const navigate = useRouter(); const form = useForm>({ resolver: zodResolver(loginSchema), defaultValues: { login: '', password: '', }, }); const { mutate, isPending } = useMutation({ mutationFn: (body: { username: string; password: string }) => login(body), onSuccess: (res) => { saveToken(res.data.data.accessToken); navigate.back(); }, onError: () => { toast.error('Xatolik yuz berdi', { richColors: true, position: 'top-center', }); }, }); function onSubmit(values: z.infer) { mutate({ password: values.password, username: values.login, }); } return (
Login
( )} /> ( )} />
); }; export default Login;