"use client"; import { PieChart, Pie, Cell, ResponsiveContainer, Tooltip, BarChart, Bar, XAxis, YAxis, CartesianGrid, AreaChart, Area, Legend, } from "recharts"; // --------------------------------------------------------------------------- // Donut // --------------------------------------------------------------------------- export function RcDonutChart({ data, noDataLabel, }: { data: { name: string; value: number; color: string }[]; noDataLabel?: string; }) { const total = data.reduce((s, d) => s + d.value, 0); if (total === 0) return

{noDataLabel}

; return (
{data.map((d, i) => ( ))} value} contentStyle={{ backgroundColor: "var(--color-card)", border: "1px solid var(--color-border)", borderRadius: 8, fontSize: 12 }} />
{data.map((d, i) => (
{d.name} {d.value}
))}
); } // --------------------------------------------------------------------------- // Bar chart // --------------------------------------------------------------------------- export function RcBarChart({ data, color = "hsl(198 78% 37%)", noDataLabel, }: { data: { label: string; value: number }[]; color?: string; noDataLabel?: string; }) { if (data.length === 0) return

{noDataLabel}

; return ( ); } // --------------------------------------------------------------------------- // Area / Line chart // --------------------------------------------------------------------------- export function RcAreaChart({ data, color = "hsl(142 60% 45%)", noDataLabel, }: { data: { label: string; value: number }[]; color?: string; noDataLabel?: string; }) { if (data.length === 0) return

{noDataLabel}

; return ( ); } // --------------------------------------------------------------------------- // Horizontal stacked bar (libraries breakdown) // --------------------------------------------------------------------------- export function RcStackedBar({ data, labels, }: { data: { name: string; read: number; reading: number; unread: number; sizeLabel: string }[]; labels: { read: string; reading: string; unread: string; books: string }; }) { if (data.length === 0) return null; return ( {value}} /> ); } // --------------------------------------------------------------------------- // Horizontal bar chart (top series) // --------------------------------------------------------------------------- export function RcHorizontalBar({ data, color = "hsl(142 60% 45%)", noDataLabel, }: { data: { name: string; value: number; subLabel: string }[]; color?: string; noDataLabel?: string; }) { if (data.length === 0) return

{noDataLabel}

; return ( ); }