'use client' import { pie, arc } from "d3-shape"; import { useState } from "react"; type Data = { region: string; commune: string; departement: string; taxRate: number; taxe: string; // ex: "CFE", "TFPB" year: number; // ex: 2021 value: number; }; type Props = { data: Data[]; }; const taxes = ["CFE", "TFPB", "CVAE"]; const years = [2019, 2020, 2021, 2022, 2023]; const COLORS = [ "#2563eb", // blue-600 "#16a34a", // green-600 "#ea580c", // orange-600 "#7c3aed", // violet-600 ]; export default function PieChart({ data }: Props) { const [selectedTaxe, setSelectedTaxe] = useState("CFE"); const [selectedYear, setSelectedYear] = useState(2022); const [hoveredRegion, setHoveredRegion] = useState(null); const radius = 190; const filteredData = data.filter( d => d.taxe === selectedTaxe && d.year === selectedYear ); const pieGenerator = pie() .value(d => d.value); const arcGenerator = arc() .innerRadius(0) .outerRadius(radius); const arcs = pieGenerator(filteredData); return (

Impôt collecté par région

{arcs.map((d, i) => { const isActive = hoveredRegion === null || hoveredRegion === d.data.region; return ( setHoveredRegion(d.data.region)} onMouseLeave={() => setHoveredRegion(null)} className="transition-opacity duration-200 cursor-pointer" /> ); })}
{arcs.map((d, i) => { const isActive = hoveredRegion === null || hoveredRegion === d.data.region; return (
setHoveredRegion(d.data.region)} onMouseLeave={() => setHoveredRegion(null)} className={`flex items-center gap-3 cursor-pointer transition-opacity ${isActive ? "opacity-100" : "opacity-40" }`} > {d.data.region} {d.data.value}
); })}
); }