"use client"; import { useState } from "react"; import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card"; import { Button } from "@/components/ui/button"; import { ChevronDown, ChevronUp } from "lucide-react"; import { LineChart, Line, XAxis, YAxis, CartesianGrid, Tooltip, ResponsiveContainer, Legend, } from "recharts"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; interface MonthlyChartData { month: string; revenus: number; depenses: number; solde: number; } interface MonthlyChartProps { data: MonthlyChartData[]; formatCurrency: (amount: number) => string; collapsible?: boolean; defaultExpanded?: boolean; showDots?: boolean; } export function MonthlyChart({ data, formatCurrency, collapsible = false, defaultExpanded = true, showDots = true, }: MonthlyChartProps) { const [isExpanded, setIsExpanded] = useState(defaultExpanded); const chartContent = ( <> {data.length > 0 ? (
{ // Format compact pour les grandes valeurs if (Math.abs(v) >= 1000) { return `${(v / 1000).toFixed(1)}k€`; } return `${v.toFixed(0)}€`; }} tick={{ fill: "var(--muted-foreground)" }} /> formatCurrency(value)} labelFormatter={(label) => label} contentStyle={{ backgroundColor: "var(--card)", border: "1px solid var(--border)", borderRadius: "8px", }} />
) : (
Pas de données pour cette période
)} ); if (!collapsible) { return ( Revenus vs Dépenses par mois {chartContent} ); } return ( Revenus vs Dépenses par mois {chartContent} ); }