import { Area, AreaChart, CartesianGrid, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts' import { formatNumber } from '../../lib/usage' import type { TrendSeries } from '../../lib/types' import styles from '../../pages/usage/UsagePage.module.css' interface TrendChartCardProps { title: string periodLabel: string series: TrendSeries[] valueFormatter?: (value: number) => string } export function TrendChartCard({ title, periodLabel, series, valueFormatter = formatNumber }: TrendChartCardProps) { const labels = Array.from(new Set(series.flatMap((item) => item.data.map((point) => point.label)))).sort((left, right) => left.localeCompare(right)) const chartData = labels.map((label) => { const row: Record = { label } for (const item of series) { const point = item.data.find((entry) => entry.label === label) row[item.key] = point?.value ?? 0 } return row }) return (

{title}

{periodLabel}

{series.length} series
{chartData.length > 0 ? ( <>
{series.map((item) => (
{item.label}
))}
valueFormatter(Number(value ?? 0))} /> {series.map((item) => ( ))}
) : (
No data in selected range.
)}
) }