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... ); }