"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter } from "next/navigation"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; const loginSchema = z.object({ email: z.string().email(), password: z.string().min(1), }); type FormData = z.infer; export default function LoginPage() { const router = useRouter(); const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const form = useForm({ resolver: zodResolver(loginSchema) }); async function onSubmit(data: FormData) { setLoading(true); try { const res = await fetch("/api/auth/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(data), }); if (!res.ok) throw new Error("Неверный email или пароль"); router.push("/dashboard"); } catch (err) { setError(err.message); } finally { setLoading(false); } } return (

Вход

{error && (
{error}
)} {form.formState.errors.email && (

{form.formState.errors.email.message}

)} {form.formState.errors.password && (

{form.formState.errors.password.message}

)}

Нет аккаунта?{" "} Зарегистрироваться

); }