import type { DailyUsageBreakdownResponse } from '@/client/types.gen'; import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'; import { Table, TableBody, TableCell, TableFooter, TableHead, TableHeader, TableRow, } from '@/components/ui/table'; interface DailyUsageTableProps { data: DailyUsageBreakdownResponse | null; isLoading: boolean; } export function DailyUsageTable({ data, isLoading }: DailyUsageTableProps) { // Format date for display const formatDate = (dateString: string) => { const date = new Date(dateString); return date.toLocaleDateString('en-US', { month: 'short', day: 'numeric', year: 'numeric' }); }; if (isLoading) { return ( Daily Usage Breakdown Last 7 days of usage {[...Array(7)].map((_, i) => ( ))} ); } if (!data || !data.breakdown || data.breakdown.length === 0) { return ( Daily Usage Breakdown Last 7 days of usage No usage data available ); } return ( Daily Usage Breakdown Last 7 days of usage Date Usage (minutes) Cost (USD) Calls {data.breakdown.map((day) => ( {formatDate(day.date)} {day.minutes.toFixed(1)} ${(day.cost_usd || 0).toFixed(2)} {day.call_count} ))} Total {data.total_minutes.toFixed(1)} ${(data.total_cost_usd || 0).toFixed(2)} {data.breakdown.reduce((sum, day) => sum + day.call_count, 0)} ); }
No usage data available