"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); // Calculer l'intervalle dynamiquement selon le nombre de données const getXAxisInterval = () => { if (data.length <= 6) return 0; // Afficher tous les labels pour 6 mois ou moins if (data.length <= 12) return 1; // Afficher un label sur deux pour 7-12 mois return Math.floor(data.length / 12); // Pour plus de 12 mois, afficher environ 12 labels }; // Formater les labels de manière plus compacte const formatMonthLabel = (month: string) => { // Format: "janv. 24" -> "janv 24" (enlever le point) return month.replace(".", ""); }; const chartContent = ( <> {data.length > 0 ? (