import { getCsrfToken } from "next-auth/react"; import useTranslation from "next-translate/useTranslation"; import Head from "next/head"; import { useState } from "react"; import Breadcrumbs from "../../components/breadcrumbs"; import CookieBanner from "../../components/cookieBanner"; import Footer from "../../components/footer"; import Header from "../../components/header"; import ServiceBanner from "../../components/servicebanner"; import { setCookie } from "nookies"; const SignIn = (props) => { let { t, lang } = useTranslation(); const { footerLinks, pages, csrfToken, callbackUrl } = props; const [buttonDisabled, setButtonDisabled] = useState(false); const handleSubmit = async (event) => { event.preventDefault(); setButtonDisabled(true); try { const email = String(event.target.email.value || "").trim(); const currentLocale = lang === "cy" ? "cy" : "en"; const response = await fetch("/api/auth/resolve-locale", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email, locale: currentLocale }) }); const data = await response.json(); const resolvedLocale = data?.locale === "cy" || data?.locale === "en" ? data.locale : currentLocale; const url = new URL(event.target.callbackUrl.value); url.searchParams.set("locale", resolvedLocale); setCookie(null, "pedw_locale", resolvedLocale, { path: "/" }); event.target.callbackUrl.value = url.toString(); event.target.locale.value = resolvedLocale; event.target.submit(); } catch (error) { const fallbackLocale = lang === "cy" ? "cy" : "en"; const url = new URL(event.target.callbackUrl.value); url.searchParams.set("locale", fallbackLocale); setCookie(null, "pedw_locale", fallbackLocale, { path: "/" }); event.target.callbackUrl.value = url.toString(); event.target.locale.value = fallbackLocale; event.target.submit(); } }; return (