import { Badge } from "@/components/ui/badge"; import { Card, CardContent } from "@/components/ui/card"; import { Select, SelectContent, SelectItem, SelectTrigger, SelectValue } from "@/components/ui/select"; import { Skeleton } from "@/components/ui/skeleton"; import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@/components/ui/table"; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@/components/ui/tooltip"; import { ProviderIconType, RenderProviderIcon } from "@/lib/constants/icons"; import { ProviderLabels } from "@/lib/constants/logs"; import { Info } from "lucide-react"; function formatCost(dollars: number) { return `$${dollars.toFixed(4)}`; } export interface ModelCatalogRow { providerName: string; isCustom: boolean; baseProviderType?: string; modelsUsed: string[]; totalTraffic24h: number; totalCost24h: number; } interface ModelCatalogTableProps { rows: ModelCatalogRow[]; providers: string[]; providerFilter: string; onProviderFilterChange: (value: string) => void; totalProviders: number; totalModels: number; totalRequests24h: number; totalCost24h: number; isLoadingModels: boolean; } export default function ModelCatalogTable({ rows, providers, providerFilter, onProviderFilterChange, totalProviders, totalModels, totalRequests24h, totalCost24h, isLoadingModels, }: ModelCatalogTableProps) { const summaryCards = [ { label: "Total Providers", value: totalProviders.toLocaleString() }, { label: "Total Models", value: totalModels.toLocaleString() }, { label: "Total Requests (24h)", value: totalRequests24h.toLocaleString() }, { label: "Total Cost (24h)", value: formatCost(totalCost24h) }, ]; return (
{card.label}
{card.value}
Overview of all configured providers, models, and usage.