"use client"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { CategoryIcon } from "@/components/ui/category-icon"; import { BarChart, Bar, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Cell, } from "recharts"; import type { CategoryChartData } from "./category-pie-chart"; interface CategoryBarChartProps { data: CategoryChartData[]; formatCurrency: (amount: number) => string; title?: string; maxItems?: number; } export function CategoryBarChart({ data, formatCurrency, title = "Top catégories de dépenses", maxItems = 10, }: CategoryBarChartProps) { const displayData = data.slice(0, maxItems).reverse(); // Reverse pour avoir le plus grand en haut return ( {title} {displayData.length > 0 ? (
{ if (Math.abs(v) >= 1000) { return `${(v / 1000).toFixed(1)}k€`; } return `${Math.round(v)}€`; }} tick={{ fill: "var(--muted-foreground)" }} /> { const item = displayData.find((d) => d.name === value); return item ? value : ""; }} /> { if (!active || !payload?.length) return null; const item = payload[0].payload as CategoryChartData; return (
{item.name}
{formatCurrency(item.value)}
); }} /> {displayData.map((entry, index) => ( ))}
) : (
Pas de données pour cette période
)}
); }