"use client" import { Area, AreaChart, Bar, BarChart, CartesianGrid, XAxis, YAxis } from "recharts" import type { DashboardStatusDistributionItem, DashboardTrendItem } from "@/lib/api/dashboard" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" import { ChartContainer, ChartTooltip, ChartTooltipContent, type ChartConfig, } from "@/components/ui/chart" import { useI18n } from "@/i18n/provider" type TrendPanelProps = { title: string description: string trend: DashboardTrendItem[] distribution: DashboardStatusDistributionItem[] } export function TrendPanel({ title, description, trend, distribution, }: TrendPanelProps) { const t = useI18n() const trendConfig = { newCount: { label: t("dashboardHome.chartNew"), color: "hsl(24 95% 53%)", }, closedCount: { label: t("dashboardHome.chartClosed"), color: "hsl(190 95% 39%)", }, } satisfies ChartConfig const distributionConfig = { count: { label: t("dashboardHome.chartCount"), theme: { light: "hsl(222 47% 11%)", dark: "hsl(210 40% 98%)", }, }, } satisfies ChartConfig const localizedDistribution = distribution.map((item) => ({ ...item, label: getStatusLabel(item.status, item.label, t), })) return (
{title} {description} } /> {t("dashboardHome.statusDistribution")} {t("dashboardHome.statusDistributionDescription")} } />
) } function getStatusLabel( status: number, fallback: string, t: (key: string) => string ) { switch (status) { case 1: return t("dashboardHome.statusAiServing") case 2: return t("dashboardHome.statusPending") case 3: return t("dashboardHome.statusActive") case 4: return t("dashboardHome.statusClosed") default: return fallback } }