Files
EpicNext-Cms/src/components/admin/revenue-chart.tsx
T
openhands 2e4ed76121
Local Build and Deploy / deploy (push) Successful in 49s
style: format code with prettier
2026-07-12 21:07:34 +02:00

42 lines
1.3 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>
);
}