"use client"; import { useState } from "react"; import { useRouter, useSearchParams } from "next/navigation"; import { Input, Label, FieldError } from "@/components/ui/Input"; import { Button } from "@/components/ui/Button"; export default function LoginPage() { const router = useRouter(); const searchParams = useSearchParams(); const next = searchParams.get("next") ?? "/admin/anfragen"; const [email, setEmail] = useState(""); const [password, setPassword] = useState(""); const [error, setError] = useState(null); const [loading, setLoading] = useState(false); async function onSubmit(e: React.FormEvent) { e.preventDefault(); setLoading(true); setError(null); try { const res = await fetch("/api/admin/login", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ email, password }), }); if (!res.ok) { const data = await res.json().catch(() => ({})); throw new Error(data.error ?? "Login fehlgeschlagen."); } router.push(next); router.refresh(); } catch (err) { setError(err instanceof Error ? err.message : "Unbekannter Fehler."); } finally { setLoading(false); } } return (
Admin

Willkommen zurück.

setEmail(e.target.value)} autoComplete="email" required />
setPassword(e.target.value)} autoComplete="current-password" required />
); }