// Shared small components
function Card({ children, style, className = "", onMouseEnter, onMouseLeave }) {
return (
{children}
);
}
function SectionHead({ eyebrow, title, sub, action }) {
return (
{eyebrow &&
{eyebrow}
}
{title}
{sub &&
{sub}
}
{action}
);
}
// Sparkline
function Sparkline({ data, color = "var(--accent)", h = 32, w = 120, fill = true }) {
const max = Math.max(...data), min = Math.min(...data);
const range = max - min || 1;
const step = w / (data.length - 1);
const pts = data.map((v, i) => [i * step, h - ((v - min) / range) * (h - 4) - 2]);
const d = pts.map((p, i) => (i ? "L" : "M") + p[0].toFixed(1) + " " + p[1].toFixed(1)).join(" ");
const gid = "sg-" + Math.random().toString(36).slice(2, 7);
return (
);
}
window.Card = Card;
window.SectionHead = SectionHead;
window.Sparkline = Sparkline;