"use client"; import { Button } from "@app/components/ui/button"; import { Input } from "@app/components/ui/input"; import { Label } from "@app/components/ui/label"; import { Card, CardContent, CardHeader } from "@app/components/ui/card"; import Link from "next/link"; import { useRouter, useSearchParams } from "next/navigation"; import { useTranslations } from "next-intl"; import { useState, FormEvent, useEffect } from "react"; import BrandingLogo from "@app/components/BrandingLogo"; import { useEnvContext } from "@app/hooks/useEnvContext"; import { useLicenseStatusContext } from "@app/hooks/useLicenseStatusContext"; import { useLocalStorage } from "@app/hooks/useLocalStorage"; import { CheckboxWithLabel } from "@app/components/ui/checkbox"; export function OrgSelectionForm() { const router = useRouter(); const searchParams = useSearchParams(); const t = useTranslations(); const { env } = useEnvContext(); const { isUnlocked } = useLicenseStatusContext(); const [storedOrgId, setStoredOrgId] = useLocalStorage( "org-selection:org-id", null ); const [rememberOrgId, setRememberOrgId] = useLocalStorage( "org-selection:remember", false ); const [orgId, setOrgId] = useState(""); const [isSubmitting, setIsSubmitting] = useState(false); // Prefill org ID from storage if remember is enabled useEffect(() => { if (rememberOrgId && storedOrgId) { setOrgId(storedOrgId); } }, []); const logoWidth = isUnlocked() ? env.branding.logo?.authPage?.width || 175 : 175; const logoHeight = isUnlocked() ? env.branding.logo?.authPage?.height || 58 : 58; const handleSubmit = (e: FormEvent) => { e.preventDefault(); if (!orgId.trim()) return; setIsSubmitting(true); const trimmedOrgId = orgId.trim(); // Save org ID to storage if remember is checked if (rememberOrgId) { setStoredOrgId(trimmedOrgId); } else { setStoredOrgId(null); } const queryString = buildQueryString(searchParams); const url = `/auth/org/${trimmedOrgId}${queryString}`; console.log(url); router.push(url); }; return ( <>

{t("orgAuthSelectOrgDescription")}

setOrgId(e.target.value)} required disabled={isSubmitting} />

{t("orgAuthWhatsThis")}{" "} {t("learnMore")}

{ setRememberOrgId(checked === true); if (!checked) { setStoredOrgId(null); } }} />

{t("loginBack")}

); } function buildQueryString(searchParams: URLSearchParams): string { const params = new URLSearchParams(); if (searchParams.get("redirect")) { params.set("redirect", searchParams.get("redirect")!); } if (searchParams.get("forceLogin")) { params.set("forceLogin", searchParams.get("forceLogin")!); } const queryString = params.toString(); return queryString ? `?${queryString}` : ""; }