"use client"; import { useState } from "react"; import type { SubmitEvent } from "react"; import { useRouter } from "next/navigation"; import LanguageSwitcher from "@/app/language-switcher"; import { getLocale, LOCALE_COOKIE, t, type Locale } from "@/lib/i18n"; export default function LoginPage() { const router = useRouter(); const [locale, setLocale] = useState(() => { if (typeof document === "undefined") return "nl"; const value = document.cookie .split("; ") .find((cookie) => cookie.startsWith(`${LOCALE_COOKIE}=`)) ?.split("=")[1]; return getLocale(value); }); const [username, setUsername] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(""); const [loading, setLoading] = useState(false); async function handleSubmit(event: SubmitEvent) { event.preventDefault(); setError(""); setLoading(true); try { const response = await fetch("/api/auth/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ username, password }), }); if (!response.ok) { const data = await response.json(); setError( data.error === "invalid_credentials" ? t(locale, "login.invalidCredentials") : t(locale, "login.unexpectedError"), ); return; } router.replace("/"); router.refresh(); } catch { setError(t(locale, "login.unexpectedError")); } finally { setLoading(false); } } return (

{t(locale, "appName")}

{t(locale, "login.title")}

{t(locale, "login.description")}

{t(locale, "login.demoCredentials")}

{error &&

{error}

}
); }