"use client"; import { FormEvent, useState } from "react"; import { siteConfig } from "../lib/server-config"; type FormStatus = { tone: "success" | "error"; message: string; } | null; export default function MinecraftWhitelistForm() { const [submitting, setSubmitting] = useState(false); const [status, setStatus] = useState(null); async function submitRequest(event: FormEvent) { event.preventDefault(); const form = event.currentTarget; setSubmitting(true); setStatus(null); const formData = new FormData(form); const payload = { game_username: String(formData.get("username") ?? ""), message: String(formData.get("reason") ?? ""), server_slug: "minecraft", }; try { const response = await fetch(`${siteConfig.apiUrl}/api/access-requests`, { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify(payload), }); if (!response.ok) { const result = await response.json().catch(() => ({})) as { message?: string }; throw new Error(result.message ?? "Demande refusée."); } form.reset(); setStatus({ tone: "success", message: "Demande envoyée.", }); } catch (error) { setStatus({ tone: "error", message: error instanceof Error ? error.message : "Impossible d'envoyer la demande.", }); } finally { setSubmitting(false); } } return (