/* JRN — Mini-gráficos para o visualizador de dashboard (faux Power BI) */
function KpiCard({ label, value, delta, up, accent }) {
return (
{label}
{value}
{delta != null && (
{up ? '▲' : '▼'}{delta}
vs. mês ant.
)}
);
}
function BarChart({ data, accent = '#15233f', height = 150 }) {
const max = Math.max(...data.map(d => d.v));
return (
{data.map((d, i) => (
))}
);
}
function LineChart({ data, accent = '#15233f', height = 150 }) {
const w = 320, h = height;
const max = Math.max(...data) * 1.12, min = Math.min(...data) * 0.9;
const pts = data.map((v, i) => [
(i / (data.length - 1)) * w,
h - ((v - min) / (max - min)) * (h - 16) - 8,
]);
const path = pts.map((p, i) => (i ? 'L' : 'M') + p[0].toFixed(1) + ' ' + p[1].toFixed(1)).join(' ');
const area = path + ` L${w} ${h} L0 ${h} Z`;
return (
);
}
function Donut({ value, accent = '#15233f', label }) {
const r = 52, c = 2 * Math.PI * r;
return (
);
}
function ChartCard({ title, sub, children, span }) {
return (
);
}
Object.assign(window, { KpiCard, BarChart, LineChart, Donut, ChartCard });