"use client" import { useState } from "react" import { useRouter } from "next/navigation" import { Button } from "@/components/ui/button" import { Card, CardContent, CardDescription, CardFooter, CardHeader, } from "@/components/ui/card" import { ServerPicker } from "@/components/mobile/server-picker" import { nativeStartLogin } from "@/lib/auth/native-auth" import { getRuntimeConfig } from "@/lib/runtime-config" import { getAuthentikEnrollmentUrl } from "@/lib/auth/oidc-config" import { cn } from "@/lib/utils" const CARD_CLASS = cn( "w-full gap-4 border-0 bg-transparent px-4 py-6 shadow-none", "sm:gap-5 sm:bg-card sm:px-8 sm:py-8" ) /** Native login experience: server picker, then OIDC PKCE via the system browser. */ export function NativeLogin({ returnTo }: { returnTo: string }) { const router = useRouter() const [hasConfig, setHasConfig] = useState(() => Boolean(getRuntimeConfig())) const [busy, setBusy] = useState(false) const [error, setError] = useState(null) if (!hasConfig) { return setHasConfig(true)} /> } const cfg = getRuntimeConfig() async function login() { setBusy(true) setError(null) try { await nativeStartLogin({ returnTo }) router.replace(returnTo.startsWith("/") ? returnTo : "/mail/inbox") } catch (err) { setError(err instanceof Error ? err.message : "Connexion échouée.") } finally { setBusy(false) } } return (
UltiSuite
{cfg ? `Connecté à ${cfg.label}` : "Connecte-toi à ton compte Ulti."} {error ? (

{error}

) : null}

Pas encore de compte ?{" "} Créer un compte

) }