import React from 'react'; import { Card, CardContent, CardHeader, CardTitle } from '@/components/ui/card'; import { calculateCost } from '@/constants/pricing'; export interface ModelCostEntry { model: string; inputTokens: number; outputTokens: number; inputCost: number; outputCost: number; totalCost: number; } export interface CostReportCardProps { models: ModelCostEntry[]; totalInputCost: number; totalOutputCost: number; totalCost: number; isLoading: boolean; } function formatNumber(n: number): string { if (n >= 1_000_000) return `${(n / 1_000_000).toFixed(1)}M`; if (n >= 1_000) return `${(n / 1_000).toFixed(1)}K`; return n.toLocaleString(); } export const CostReportCard: React.FC = ({ models, totalInputCost, totalOutputCost, totalCost, isLoading, }) => { if (isLoading) { return ( Cost Report
Loading cost data...
); } if (!models.length) { return ( Cost Report
No usage data for cost calculation
); } return ( Cost Report
{models.map((m) => ( ))}
Model Input Tokens Input Cost Output Tokens Output Cost Total
{m.model} {formatNumber(m.inputTokens)} ${m.inputCost.toFixed(2)} {formatNumber(m.outputTokens)} ${m.outputCost.toFixed(2)} ${m.totalCost.toFixed(2)}
Total {formatNumber(models.reduce((sum, m) => sum + m.inputTokens, 0))} ${totalInputCost.toFixed(2)} {formatNumber(models.reduce((sum, m) => sum + m.outputTokens, 0))} ${totalOutputCost.toFixed(2)} ${totalCost.toFixed(2)}
); };