"use client"; import { useSearchParams, useRouter } from "next/navigation"; import { useState } from "react"; import { useI18n } from "@/lib/i18n/useI18n"; export default function LoginForm() { const router = useRouter(); const searchParams = useSearchParams(); const next = searchParams.get("next") || "/machines"; const { t } = useI18n(); const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [loading, setLoading] = useState(false); const [err, setErr] = useState(null); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setErr(null); setLoading(true); try { const res = await fetch("/api/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email, password, next }), }); const data = await res.json().catch(() => ({})); if (!res.ok || !data.ok) { setErr(data.error || t("login.error.default")); return; } router.push(next); router.refresh(); } catch (e: any) { setErr(e?.message || t("login.error.network")); } finally { setLoading(false); } } return (

{t("login.title")}

{t("login.subtitle")}

setEmail(e.target.value)} autoComplete="email" />
setPassword(e.target.value)} autoComplete="current-password" />
{err &&
{err}
}
{t("login.newHere")}{" "} {t("login.createAccount")}
); }