import { Cell, Pie, PieChart, ResponsiveContainer, Tooltip, } from "recharts"; import { Box, Group, Paper, Stack, Text } from "@mantine/core"; import { overviewChartColors } from "./overview.styles"; export interface DonutChartItem { name: string; value: number; } interface OverviewDonutChartProps { title: string; data: DonutChartItem[]; emptyMessage?: string; } export function OverviewDonutChart({ title, data, emptyMessage = "No data available", }: OverviewDonutChartProps) { const filtered = data.filter((item) => item.value > 0); const hasData = filtered.length > 0; const total = filtered.reduce((sum, item) => sum + item.value, 0); return ( {title} {!hasData ? ( {emptyMessage} ) : ( {/* Compact donut with the total in its center */} {filtered.map((entry, index) => ( ))} [value, "Count"]} /> {total} Total {/* Legend fills the space — color, name, count and share */} {filtered.map((entry, index) => { const color = overviewChartColors.pipeline[index % overviewChartColors.pipeline.length]; const pct = total > 0 ? Math.round((entry.value / total) * 100) : 0; return ( {entry.name} {entry.value} {pct}% ); })} )} ); }