"use client"; import { createClient } from "@/lib/supabase/client"; import { useRouter } from "next/navigation"; import { useState } from "react"; export default function LoginPage() { const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [mode, setMode] = useState<"password" | "magic">("password"); const [loading, setLoading] = useState(false); const [error, setError] = useState(null); const [magicSent, setMagicSent] = useState(false); const router = useRouter(); const supabase = createClient(); async function handlePasswordLogin(e: React.FormEvent) { e.preventDefault(); setLoading(true); setError(null); const { error } = await supabase.auth.signInWithPassword({ email, password, }); if (error) { setError(error.message); setLoading(false); return; } router.push("/"); router.refresh(); } async function handleMagicLink(e: React.FormEvent) { e.preventDefault(); setLoading(true); setError(null); const { error } = await supabase.auth.signInWithOtp({ email, options: { emailRedirectTo: `${window.location.origin}/callback`, }, }); if (error) { setError(error.message); setLoading(false); return; } setMagicSent(true); setLoading(false); } if (magicSent) { return (

Link gesendet

Wir haben einen Login-Link an{" "} {email}{" "} gesendet. Bitte pruefen Sie Ihren Posteingang.

); } return (

KanzlAI

Melden Sie sich an

setEmail(e.target.value)} required className="mt-1 block w-full rounded-md border border-neutral-300 px-3 py-2 text-sm placeholder-neutral-400 focus:border-neutral-900 focus:outline-none focus:ring-1 focus:ring-neutral-900" placeholder="anwalt@kanzlei.de" />
{mode === "password" && (
setPassword(e.target.value)} required className="mt-1 block w-full rounded-md border border-neutral-300 px-3 py-2 text-sm placeholder-neutral-400 focus:border-neutral-900 focus:outline-none focus:ring-1 focus:ring-neutral-900" />
)} {error && (

{error}

)}

Noch kein Konto?{" "} Registrieren

); }