Files
Epicnabbo-Catalogus-Updated…/src/components/admin/revenue-chart.tsx
T
2026-07-13 21:57:41 +02:00

52 lines
1.2 KiB
TypeScript

"use client";
import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
interface RevenueDataPoint {
label: string;
credits: number;
points: number;
}
export function RevenueChart({ data }: { data: RevenueDataPoint[] }) {
const max = Math.max(
1,
...data.flatMap((point) => [point.credits, point.points]),
);
return (
<Card>
<CardHeader className="pb-2">
<CardTitle className="text-sm font-medium">Catalog Spending</CardTitle>
</CardHeader>
<CardContent>
<div className="space-y-3">
{data.map((point) => (
<div
key={point.label}
className="grid grid-cols-[3rem_1fr] items-center gap-2 text-xs"
>
<span>{point.label}</span>
<div className="space-y-1">
<div
className="h-2 rounded bg-[var(--admin-warning)]"
style={{
width: `${Math.max(2, (point.credits / max) * 100)}%`,
}}
title={`${point.credits} credits`}
/>
<div
className="h-2 rounded bg-[var(--admin-accent)]"
style={{
width: `${Math.max(2, (point.points / max) * 100)}%`,
}}
title={`${point.points} points`}
/>
</div>
</div>
))}
</div>
</CardContent>
</Card>
);
}