"use client" import React, { useMemo } from "react" import { Bar, BarChart, CartesianGrid, LabelList, XAxis, YAxis } from "recharts" import { formatCurrency } from "@/lib/formatters" import { Card, CardContent, CardDescription, CardHeader, CardTitle, } from "@/components/ui/card" import { ChartContainer, ChartTooltip, ChartTooltipContent } from "@/components/ui/chart" import type {ChartConfig} from "@/components/ui/chart"; export const CustomBarChart = React.memo(function CustomBarChart({ title, description, data, colorOffset = 0, isCurrency = false }: { title: string description: string data: any[] colorOffset?: number isCurrency?: boolean }) { const { config, chartData } = useMemo(() => { const cfg: ChartConfig = { total: { label: "Total" }, } const formattedData = data.map((item, index) => { const key = String(item.name).toLowerCase().replace(/[^a-z0-9]/g, '_') const hue = Math.floor((index * 137.5 + colorOffset) % 360) cfg[key] = { label: String(item.name), color: `hsl(${hue}, 60%, 65%)`, } return { ...item, fill: `var(--color-${key})`, name: String(item.name), total: Number(item.total) } }) return { config: cfg, chartData: formattedData } }, [data, colorOffset]) const formatValue = (val: any) => { if (!isCurrency) { return val; } return formatCurrency(val); }; return ( {title} {description} } /> ) })