(() => { const form = document.getElementById("social-login-form"); if (!form) return; const errorEl = document.getElementById("social-login-error"); const button = form.querySelector('button[type="submit"]'); const setError = (message) => { if (!errorEl) return; if (!message) { errorEl.textContent = ""; errorEl.classList.add("hidden"); return; } errorEl.textContent = message; errorEl.classList.remove("hidden"); }; form.addEventListener("submit", async (event) => { event.preventDefault(); setError(""); if (button) { button.disabled = true; button.classList.add("opacity-70", "cursor-not-allowed"); } const payload = {}; for (const [key, value] of new FormData(form).entries()) { payload[key] = value; } try { const response = await fetch(form.action, { method: "POST", headers: { "Content-Type": "application/json" }, credentials: "include", body: JSON.stringify(payload), }); const data = await response.json().catch(() => null); if (!response.ok) { const message = data?.message || data?.error || data?.code || `Sign-in failed (${response.status})`; throw new Error(message); } const redirectUrl = data?.url; if (data?.redirect && redirectUrl) { window.location.assign(redirectUrl); return; } if (redirectUrl) { window.location.assign(redirectUrl); return; } const fallback = typeof payload.callbackURL === "string" ? payload.callbackURL : "/"; window.location.assign(fallback); } catch (err) { if (button) { button.disabled = false; button.classList.remove("opacity-70", "cursor-not-allowed"); } setError(err instanceof Error ? err.message : "Sign-in failed."); } }); })();