// Piezas visuales compartidas por las vistas del tablero (NovaSpark) import type { ReactNode } from 'react' /** * Acciones que cada vista del tablero expone al header de DashboardPage: * el botón "Actualizar" vive en el header sticky y dispara la recarga de la * vista activa (sin cambiar fuentes de datos ni consultas). */ export type AccionesTablero = { actualizar: () => void; cargando: boolean } export function EstadoVacio({ mensaje }: { mensaje: string }) { return (

{mensaje}

) } export function TituloSeccion({ children }: { children: string }) { return

{children}

} /** Tarjeta contenedora de gráficas: título interno + padding consistente. */ export function TarjetaGrafica({ titulo, children, }: { titulo: string children: ReactNode }) { return (

{titulo}

{children}
) }