import { DateTime } from 'luxon'; import { Bar, BarChart, ResponsiveContainer, Tooltip, XAxis, YAxis } from 'recharts'; import type { TooltipProps } from 'recharts'; import type { NameType, ValueType } from 'recharts/types/component/DefaultTooltipContent'; import type { GetUserWithDocumentMonthlyGrowth } from '@documenso/lib/server-only/admin/get-users-stats'; export type AdminStatsUsersWithDocumentsChartProps = { className?: string; title: string; data: GetUserWithDocumentMonthlyGrowth; completed?: boolean; tooltip?: string; }; const CustomTooltip = ({ active, payload, label, tooltip, }: TooltipProps & { tooltip?: string }) => { if (active && payload && payload.length) { return (

{label}

{`${tooltip} : `} {payload[0].value}

); } return null; }; export const AdminStatsUsersWithDocumentsChart = ({ className, data, title, completed = false, tooltip, }: AdminStatsUsersWithDocumentsChartProps) => { const formattedData = (data: GetUserWithDocumentMonthlyGrowth, completed: boolean) => { return [...data].reverse().map(({ month, count, signed_count }) => { const formattedMonth = DateTime.fromFormat(month, 'yyyy-MM').toFormat('LLL'); if (completed) { return { month: formattedMonth, count: Number(signed_count), }; } else { return { month: formattedMonth, count: Number(count), }; } }); }; return (

{title}

} labelStyle={{ color: 'hsl(var(--primary-foreground))', }} cursor={{ fill: 'hsl(var(--primary) / 10%)' }} />
); };