import { Bar, BarChart, CartesianGrid, Legend, ResponsiveContainer, Tooltip, XAxis, YAxis, } from "recharts"; import { Paper, Stack, Text } from "@mantine/core"; import type { IOverviewPaymentTrendPoint } from "@/types/overview"; import { overviewChartColors } from "./overview.styles"; function formatDateLabel(date: string) { const parsed = new Date(`${date}T00:00:00`); return parsed.toLocaleDateString(undefined, { month: "short", day: "numeric" }); } function formatAmount(value: number, currency: "ETB" | "USD") { return new Intl.NumberFormat("en-US", { style: "currency", currency, maximumFractionDigits: 0, }).format(value); } export function OverviewPaymentChart({ data }: { data: IOverviewPaymentTrendPoint[] }) { const hasData = data.some((point) => point.amountEtb > 0 || point.amountUsd > 0); return ( Payment trend {!hasData ? ( No successful payments in this period ) : ( formatDateLabel(String(value))} formatter={(value, name) => [ formatAmount(Number(value), name === "amountUsd" ? "USD" : "ETB"), name === "amountUsd" ? "USD" : "ETB", ]} /> )} ); }