// Side panel — adapts based on selection. Brand-aligned per CLAUDE.md. const { useMemo: useMemoPanel } = React; const backBtnStyle = { background: "transparent", border: "none", cursor: "pointer", fontFamily: "Montserrat, sans-serif", fontSize: 10, letterSpacing: "0.16em", color: "var(--ink-mute)", fontWeight: 700, textTransform: "uppercase", }; const kindCopy = { Ambulatorio: "Equipos que acompañan a NNA y sus familias en sus territorios, mediante visitas domiciliarias, trabajo de calle y atención diurna en sede.", Residencial: "Las personas viven en el dispositivo mientras reciben tratamiento, asistencia y acompañamiento integral los 365 días del año.", Comunitario: "Espacio de encuentro abierto al barrio con talleres educativos, deportivos, formativos y recreativos para NNA y familias.", Asistencia: "Centro de día con servicios básicos —higiene, alimentación, vestuario— y apoyo psicosocial a personas adultas en situación de calle.", }; function Panel({ selected, setSelected, setView }) { const data = window.FDB_DATA; // ============= PROJECT VIEW ============= if (selected?.type === "project") { const p = data.projects.find((x) => x.id === selected.id); if (!p) return null; const area = data.areas[p.area]; return ( ); } // ============= COMUNA VIEW ============= if (selected?.type === "comuna") { const c = data.comunas.find((x) => x.name === selected.name); if (!c) return null; const projectsHere = data.projects.filter( (p) => !p.generic && p.comunas.includes(c.name) ); const totalCoverage = projectsHere.reduce((s, p) => s + p.coverage, 0); const totalAnnual = projectsHere.reduce((s, p) => s + p.annual, 0); return ( ); } // ============= OVERVIEW (nothing selected) ============= const totalsByArea = useMemoPanel(() => { const groups = {}; data.projects.forEach((p) => { groups[p.area] = groups[p.area] || { count: 0, coverage: 0, annual: 0 }; groups[p.area].count += 1; groups[p.area].coverage += p.coverage; groups[p.area].annual += p.annual; }); return groups; }, [data.projects]); return ( ); } window.Panel = Panel;