import { useEffect } from "react" import { useNavigate, useSearchParams } from "react-router" import { LoginForm } from "@crema/arcadia-auth-ui" import { useBrand } from "~/lib/identity" import { pageTitle } from "~/lib/page-meta" import { useSession, persistFromArcadiaLogin } from "~/lib/session" export const meta = () => pageTitle("Sign in") export default function LoginRoute() { const navigate = useNavigate() const [params] = useSearchParams() const session = useSession() const brand = useBrand() const BrandIcon = brand.icon const next = params.get("next") || "/" // Already signed in? Bounce. useEffect(() => { if (session) navigate(next, { replace: true }) }, [session, next, navigate]) return (
{brand.name}
} heading={`Sign in to ${brand.name}`} subhead="Use your arcadia credentials. In dev seeds: admin@example.com / AdminP@ssw0rd." onSuccess={async ({ tokens, user, twoFactorRequired, twoFactorChallenge }) => { if (twoFactorRequired && twoFactorChallenge) { navigate(`/login/2fa?challenge=${encodeURIComponent(twoFactorChallenge)}&next=${encodeURIComponent(next)}`) return } persistFromArcadiaLogin(tokens, user) navigate(next, { replace: true }) }} onForgotPassword={() => navigate("/login/forgot")} onSignup={() => navigate("/signup")} /> ) }