"use client"; import { useState } from "react"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { useForm } from "react-hook-form"; import { zodResolver } from "@hookform/resolvers/zod"; import * as z from "zod"; const registerSchema = z.object({ email: z.string().email(), password: z.string().min(12), fullName: z.string().optional(), }); type FormData = z.infer; export default function RegisterPage() { const searchParams = useSearchParams(); const router = useRouter(); const role = searchParams.get("role") || "freelancer"; const [loading, setLoading] = useState(false); const [error, setError] = useState(""); const form = useForm({ resolver: zodResolver(registerSchema) }); async function onSubmit(data: FormData) { setLoading(true); try { const res = await fetch("/api/auth/register", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ ...data, role }), }); if (!res.ok) throw new Error("Ошибка регистрации"); 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}

)}

Уже есть аккаунт?{" "} Войти

); }