'use client'; import { useEffect, useState } from 'react'; import AdminGuard from '@/components/admin-guard'; import { guestsApi, type Guest } from '@/lib/api'; export default function AdminGuestsPage() { return ( ); } function GuestsManager() { const [guests, setGuests] = useState([]); const [name, setName] = useState(''); const [busy, setBusy] = useState(false); const [err, setErr] = useState(''); const load = async () => setGuests(await guestsApi.list()); useEffect(() => { load(); }, []); const linkFor = (g: Guest) => { const base = typeof window === 'undefined' ? '' : window.location.origin; return `${base}/?usr=${g.id}`; }; const onCreate = async (e: React.FormEvent) => { e.preventDefault(); setErr(''); setBusy(true); try { await guestsApi.create(name.trim()); setName(''); await load(); } catch (e: any) { setErr(e.message || 'Erro ao criar'); } finally { setBusy(false); } }; const onRename = async (g: Guest) => { const next = prompt('Novo nome', g.name); if (!next || next.trim() === g.name) return; await guestsApi.rename(g.id, next.trim()); await load(); }; const onDelete = async (g: Guest) => { if (!confirm(`Excluir o convidado ${g.name}? As reservas dele(a) ficarão sem dono.`)) return; await guestsApi.delete(g.id); await load(); }; const onCopy = async (g: Guest) => { await navigator.clipboard.writeText(linkFor(g)); }; return ( Convidados setName(e.target.value)} placeholder="Nome do convidado (opcional)" className="flex-1 border rounded px-3 py-2" /> {busy ? 'Criando…' : 'Criar link'} {err && {err}} {guests.map((g) => ( {g.name} {linkFor(g)} onCopy(g)} className="text-sm border rounded px-2 py-1">Copiar link onRename(g)} className="text-sm border rounded px-2 py-1">Renomear onDelete(g)} className="text-sm border rounded px-2 py-1 text-red-600">Excluir ))} {guests.length === 0 && Nenhum convidado ainda} ); }