'use client'; import { useEffect, useMemo, useState } from 'react'; import AdminGuard from '@/components/admin-guard'; import { claimsApi, type AdminClaim } from '@/lib/api'; export default function AdminClaimsPage() { return ( ); } function ClaimsView() { const [claims, setClaims] = useState([]); const [loading, setLoading] = useState(true); useEffect(() => { claimsApi.list().then((c) => setClaims(c)).finally(() => setLoading(false)); }, []); const totals = useMemo(() => { const byItem: Record = {}; for (const c of claims) { const k = c.itemId; if (!byItem[k]) byItem[k] = { reserved: 0, total: c.itemQuantity }; byItem[k].reserved += c.quantity; } return byItem; }, [claims]); if (loading) { return
Carregando…
; } return (

Reservas

{claims.length} no total
{claims.length === 0 ? (
Nenhuma reserva ainda.
) : (
{claims.map((c) => { const t = totals[c.itemId]; return ( ); })}
Item Qtd Convidado Nota Quando
{c.itemName}
{c.wishlistName} · {t.reserved}/{t.total} reservados
{c.quantity} {c.guestName} {c.note ?? '—'} {new Date(c.claimedAt).toLocaleString('pt-BR')}
)}
); }