"use client"; import { useState } from "react"; import { useI18n } from "@/lib/i18n/useI18n"; export default function SignupForm() { const { t } = useI18n(); const [orgName, setOrgName] = useState(""); const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [err, setErr] = useState(null); const [verificationSent, setVerificationSent] = useState(false); const [emailSent, setEmailSent] = useState(true); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setErr(null); setLoading(true); try { const res = await fetch("/api/signup", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ orgName, name, email, password }), }); const data = await res.json().catch(() => ({})); if (!res.ok || !data.ok) { setErr(data.error || t("signup.error.default")); return; } setVerificationSent(true); setEmailSent(data.emailSent !== false); } catch (e: any) { setErr(e?.message || t("signup.error.network")); } finally { setLoading(false); } } if (verificationSent) { return (

{t("signup.verify.title")}

{t("signup.verify.sent", { email: email || t("common.na") })}

{!emailSent && (
{t("signup.verify.failed")}
)}
{t("signup.verify.notice")}
{t("signup.verify.back")}
); } return (

{t("signup.title")}

{t("signup.subtitle")}

setOrgName(e.target.value)} autoComplete="organization" />
setName(e.target.value)} autoComplete="name" />
setEmail(e.target.value)} autoComplete="email" />
setPassword(e.target.value)} autoComplete="new-password" />
{err &&
{err}
}
{t("signup.alreadyHave")}{" "} {t("signup.signIn")}
); }