// Analytics.jsx function Donut({ value, max = 100, label, sublabel }) { const r = 72; const c = 2 * Math.PI * r; const pct = value / max; return (
{value}%
{sublabel}
); } function HBar({ label, value, max, color = 'var(--color-navy)' }) { return (
{label} {value}
); } function AnalyticsPage() { const monthly = [ { m: 'Nov', v: 98 }, { m: 'Dec', v: 112 }, { m: 'Jan', v: 105 }, { m: 'Feb', v: 121 }, { m: 'Mar', v: 134 }, { m: 'Apr', v: 142, accent: true }, ]; const max = Math.max(...monthly.map(d => d.v)); return (
Total Jobs by Month
Last 6 months
{monthly.map(d => (
{d.v}
{d.m}
))}
Crane Utilization
22
Active
3
In Repair
2
Idle
Revenue by Crane Type
Top Customers (Apr)
Operator Workload
Hours · April
Pending vs Completed
136
Completed
4
Pending
2
Issues
Completion rate 96% — 1.2pt above March. Two pending issues are awaiting customer schedule confirmation; both expected to clear within 48 hours.
); } Object.assign(window, { AnalyticsPage });