// El cliente NUNCA consulta Supabase directamente. // Toda la comunicación va a través de los Route Handlers /api/dashboard/[widget]. import type { DashboardFilters } from './dashboard-types' import { filtersToQuery } from './dashboard-utils' async function fetchWidget(widget: string, surveyId: string, filters: DashboardFilters): Promise { const qs = filtersToQuery(surveyId, filters) const res = await fetch(`/api/dashboard/${widget}?${qs}`, { cache: 'no-store' }) if (!res.ok) throw new Error(`Widget ${widget}: ${res.status}`) return res.json() } export const queries = { kpis: (sid: string, f: DashboardFilters) => fetchWidget('kpis', sid, f), prevalencia: (sid: string, f: DashboardFilters) => fetchWidget('prevalencia', sid, f), heatmap: (sid: string, f: DashboardFilters) => fetchWidget('heatmap', sid, f), distribucion: (sid: string, f: DashboardFilters) => fetchWidget('distribucion', sid, f), apoyos: (sid: string, f: DashboardFilters) => fetchWidget('apoyos', sid, f), score: (sid: string, f: DashboardFilters) => fetchWidget('score', sid, f), piramide: (sid: string, f: DashboardFilters) => fetchWidget('piramide', sid, f), intensidad: (sid: string, f: DashboardFilters) => fetchWidget('intensidad', sid, f), saturacion: (sid: string, f: DashboardFilters) => fetchWidget('saturacion', sid, f), }