function PageStores({pushToast}){ const I = window.Icons; const D = window.FLUXData; const [view, setView] = React.useState('grid'); const [selected, setSelected] = React.useState(null); return ( <>

Tiendas

{D.stores.length} puntos de venta activos en México. Visualización por mapa, grid o tabla.

{view==='grid' && (
{D.stores.map(s=>(
setSelected(s)}>
{s.name}
{s.city} · {s.manager}
{s.alerts>0 ? {s.alerts} alerta{s.alerts>1?'s':''} : OK}
Ventas
${(s.sales/1000).toFixed(0)}K
{s.salesDelta}%
Quiebres
{s.breakages}%
{s.breakagesDelta}%
{s.inventory.toLocaleString()} u. inventarioRotación {s.rotation}d
))}
)} {view==='table' && (
{D.stores.map(s=>( setSelected(s)} style={{cursor:'pointer'}}> ))}
TiendaCiudadManagerVentasΔQuiebresInventarioRotaciónAlertas
{s.name} {s.city} {s.manager} ${s.sales.toLocaleString()} {s.salesDelta}% {s.breakages}% {s.inventory.toLocaleString()} {s.rotation}d {s.alerts>0?{s.alerts}:0}
)} {view==='map' && (
{/* Stylized Mexico map */} {/* simplified Mexico shape */} {/* Plot stores. Convert lat/lng to canvas coordinates roughly */} {D.stores.map(s=>{ const x = ((s.lng + 118) / 32) * 700 + 60; const y = ((33 - s.lat) / 18) * 380 + 90; return ( setSelected(s)}> {s.id} ${(s.sales/1000000).toFixed(1)}M ); })}
Cadena nacional
{D.stores.length} tiendas · {D.stores.reduce((a,s)=>a+s.inventory,0).toLocaleString()} u. inventario
)} {selected && (
setSelected(null)}>
e.stopPropagation()}>
{selected.name}
{selected.city} · Manager: {selected.manager}
Ventas
${selected.sales.toLocaleString()}
{selected.salesDelta}%
Inventario
{selected.inventory.toLocaleString()}
{selected.rotation}d rotación
Alertas
0?'var(--amber-2)':'var(--green)'}}>{selected.alerts}
)} ); } window.PageStores = PageStores;