"use client"; import { CartesianGrid, Line, LineChart, XAxis, YAxis } from "recharts"; import { useDarkMode } from "usehooks-ts"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent } from "@/components/ui/chart"; const chartConfigLight = { views: { label: "播放", color: "#111417", }, likes: { label: "点赞", }, } satisfies ChartConfig; const chartConfigDark = { views: { label: "播放", color: "#EEEEF0", }, likes: { label: "点赞", }, } satisfies ChartConfig; interface ChartData { createdAt: string; views: number; } function formatDate(dateStr: string, showYear = false): string { const date = new Date(dateStr); const year = date.getFullYear(); const month = String(date.getMonth() + 1).padStart(2, "0"); const day = String(date.getDate()).padStart(2, "0"); const hours = String(date.getHours()).padStart(2, "0"); const minutes = String(date.getMinutes()).padStart(2, "0"); const yearStr = showYear ? ` ${year}-` : ""; return `${yearStr}${month}-${day} ${hours}:${minutes}`; } const formatYAxisLabel = (value: number) => { if (value >= 1000000) { return (value / 10000).toPrecision(4) + "万"; } else if (value >= 10000) { return (value / 10000).toPrecision(3) + "万"; } return value.toLocaleString(); }; export function ViewsChart({ chartData }: { chartData: ChartData[] }) { const { isDarkMode } = useDarkMode(); if (!chartData || chartData.length === 0) return <>; return ( formatDate(e)} minTickGap={30} className="stat-num" /> formatDate(e, true)} />} /> ); }