import { LineChart, Line, XAxis, YAxis, Tooltip, ResponsiveContainer, Legend } from "recharts";
import type { TrendBucket } from "../../api/analytics";
import { Card, CardContent, CardDescription, CardHeader, CardTitle } from "../ui/card";
interface TrendChartProps {
trend: TrendBucket[];
loading: boolean;
}
export function TrendChart({ trend, loading }: TrendChartProps) {
if (loading && !trend?.length) {
return ;
}
if (!trend?.length) {
return null;
}
const data = trend.map((b) => ({
date: b.date,
clean: b.clean,
warned: b.warned,
flagged: b.flagged,
error: b.error,
total: b.count,
}));
return (
Tren Harian
Volume pesan per hari dengan status moderasi.
d.slice(5)} />
{
const v = typeof value === "number" ? value : String(value);
return [v, label(String(name))];
}}
labelFormatter={(l: unknown) => String(l)}
/>
);
}
function label(key: string): string {
const map: Record = { total: "Total", clean: "Clean", warned: "Warned", flagged: "Flagged" };
return map[key] ?? key;
}
function LoadingBox() {
return (
Memuat data...
);
}