"use client"; import { useState } from "react"; import { useRouter } from "next/navigation"; import { api } from "@/lib/api/client"; import { GlassCard } from "@/components/ui/glass-card"; import { Button } from "@/components/ui/button"; import { Input } from "@/components/ui/input"; import { Label } from "@/components/ui/label"; type Player = { id: string; display_name: string; external_id: string | null; status: string; }; export function PlayersRegistry({ initialPlayers }: { initialPlayers: Player[] }) { const router = useRouter(); const [players, setPlayers] = useState(initialPlayers); const [loading, setLoading] = useState(false); return ( <> { e.preventDefault(); if (loading) return; const fd = new FormData(e.currentTarget); setLoading(true); try { const created = (await api.players.create({ display_name: fd.get("display_name") as string, external_id: (fd.get("external_id") as string) || undefined, })) as Player; setPlayers((prev) => [...prev, created].sort((a, b) => a.display_name.localeCompare(b.display_name) )); e.currentTarget.reset(); router.refresh(); } finally { setLoading(false); } }} > Name External ID Add player Name Status Actions {players.map((p) => ( {p.display_name} {p.status} { setLoading(true); const next = p.status === "active" ? "inactive" : "active"; await api.players.setStatus(p.id, next); setPlayers((prev) => prev.map((x) => x.id === p.id ? { ...x, status: next } : x ) ); setLoading(false); }} > Toggle status ))} > ); }