import { useMemo } from "react"; import { useTranslation } from "react-i18next"; import { Card, CardContent } from "@/components/ui/card"; import { useUsageSummary } from "@/lib/query/usage"; import { Activity, DollarSign, Layers, Database, Loader2 } from "lucide-react"; import { motion } from "framer-motion"; interface UsageSummaryCardsProps { days: number; } export function UsageSummaryCards({ days }: UsageSummaryCardsProps) { const { t } = useTranslation(); const { data: summary, isLoading } = useUsageSummary(days); const stats = useMemo(() => { const totalRequests = summary?.totalRequests ?? 0; const totalCost = parseFloat(summary?.totalCost || "0"); const inputTokens = summary?.totalInputTokens ?? 0; const outputTokens = summary?.totalOutputTokens ?? 0; const totalTokens = inputTokens + outputTokens; const cacheWriteTokens = summary?.totalCacheCreationTokens ?? 0; const cacheReadTokens = summary?.totalCacheReadTokens ?? 0; const totalCacheTokens = cacheWriteTokens + cacheReadTokens; return [ { title: t("usage.totalRequests"), value: totalRequests.toLocaleString(), icon: Activity, color: "text-blue-500", bg: "bg-blue-500/10", subValue: null, }, { title: t("usage.totalCost"), value: `$${totalCost.toFixed(4)}`, icon: DollarSign, color: "text-green-500", bg: "bg-green-500/10", subValue: null, }, { title: t("usage.totalTokens"), value: totalTokens.toLocaleString(), icon: Layers, color: "text-purple-500", bg: "bg-purple-500/10", subValue: (
{stat.title}