"use client"; import { useState, type FormEvent } from "react"; import { TextField, FormError } from "@/components/FormField"; import { TurnstileWidget } from "@/components/TurnstileWidget"; export function RegisterForm({ slug, siteKey }: { slug: string; siteKey: string }) { const [name, setName] = useState(""); const [email, setEmail] = useState(""); const [status, setStatus] = useState<"idle" | "loading" | "done" | "error">("idle"); const [error, setError] = useState(null); const [token, setToken] = useState(null); const [resetKey, setResetKey] = useState(0); async function handleSubmit(e: FormEvent) { e.preventDefault(); setStatus("loading"); setError(null); try { const res = await fetch(`/api/meetings/${slug}/register`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ name, email, token }), }); const data = await res.json(); if (!res.ok) { setError(data.error || "Anmeldung leider nicht möglich."); setStatus("error"); return; } setStatus("done"); } catch { setError("Verbindung fehlgeschlagen. Bitte versuche es erneut."); setStatus("error"); } finally { setResetKey((key) => key + 1); } } if (status === "done") { return (

Danke für deine Anmeldung - wir freuen uns auf dich!

); } return (
setName(e.target.value)} autoComplete="name" /> setEmail(e.target.value)} autoComplete="email" /> {error && {error}} ); }