const SectorDemo = () => { const [sectors, setSectors] = React.useState([]); const [loading, setLoading] = React.useState(true); const [error, setError] = React.useState(null); React.useEffect(() => { const controller = new AbortController(); const API_URL = window.SECTOR_API_URL || "http://localhost:4000/api/sectors"; async function fetchSectors() { try { const response = await fetch(API_URL, { signal: controller.signal }); if (!response.ok) { throw new Error("No pudimos cargar los sectores en la demo"); } const payload = await response.json(); setSectors(payload.sectors || []); } catch (err) { if (err.name !== "AbortError") { setError(err.message); } } finally { setLoading(false); } } fetchSectors(); return () => controller.abort(); }, []); if (loading) { return (
); } if (error) { return (

{error}

Asegurate de tener el servidor Node ejecutándose.

); } const badgeClass = { disponible: "sector-badge-success", reservada: "sector-badge-warning", ocupada: "sector-badge-danger", }; return (
{sectors.map((sector) => (

{sector.name}

{sector.description}

{sector.available} de {sector.total} mesas libres
))}
); }; const rootElement = document.getElementById("sector-demo-root"); if (rootElement) { const root = ReactDOM.createRoot(rootElement); root.render(); }