"use client"; import { TrendingUp } from "lucide-react"; import { Area, AreaChart, CartesianGrid, XAxis, YAxis } from "recharts"; import { Card, CardContent, CardDescription, CardFooter, CardHeader, CardTitle, } from "@/components/ui/card"; import { type ChartConfig, ChartContainer, ChartTooltip, ChartTooltipContent, } from "@/components/ui/chart"; import { cn } from "@/lib/utils"; interface ChartCard7Props { title?: string; description?: string; totalValue?: string; changePercent?: number; changeLabel?: string; className?: string; } const monthLabel = (monthIndex: number) => new Intl.DateTimeFormat("fa-IR", { month: "short" }).format( new Date(2025, monthIndex, 1), ); const chartData = [ { month: monthLabel(0), value: 186 }, { month: monthLabel(1), value: 305 }, { month: monthLabel(2), value: 237 }, { month: monthLabel(3), value: 273 }, { month: monthLabel(4), value: 209 }, { month: monthLabel(5), value: 314 }, ]; const defaultTotalRevenue = chartData.reduce((sum, item) => sum + item.value, 0); const periodRangeFormatter = new Intl.DateTimeFormat("fa-IR", { month: "long", year: "numeric", }); const periodRangeStart = new Date(2025, 0, 1); const periodRangeEnd = new Date(2025, 5, 30); const defaultPeriodDescription = typeof periodRangeFormatter.formatRange === "function" ? periodRangeFormatter.formatRange(periodRangeStart, periodRangeEnd) : `${periodRangeFormatter.format(periodRangeStart)} – ${periodRangeFormatter.format(periodRangeEnd)}`; const currencyFormatter = new Intl.NumberFormat("fa-IR", { style: "currency", currency: "IRR", minimumFractionDigits: 0, maximumFractionDigits: 0, }); const percentFormatter = new Intl.NumberFormat("fa-IR", { maximumFractionDigits: 1, }); const chartConfig = { value: { label: "درآمد", color: "var(--chart-1)", }, } satisfies ChartConfig; const ChartCard7 = ({ title = "مجموع درآمد", description = defaultPeriodDescription, totalValue = currencyFormatter.format(defaultTotalRevenue), changePercent = 12.5, changeLabel = "رشد در این بازه", className, }: ChartCard7Props) => { return ( {title} {description} currencyFormatter.format(Number(value)) } /> } cursor={{ stroke: "var(--border)", strokeDasharray: "4 4" }} />
{changeLabel}
); }; export { ChartCard7 };