import { useState } from "react"; import { useTranslation } from "react-i18next"; import { Tabs, TabsContent, TabsList, TabsTrigger } from "@/components/ui/tabs"; import { UsageSummaryCards } from "./UsageSummaryCards"; import { UsageTrendChart } from "./UsageTrendChart"; import { RequestLogTable } from "./RequestLogTable"; import { ProviderStatsTable } from "./ProviderStatsTable"; import { ModelStatsTable } from "./ModelStatsTable"; import type { TimeRange } from "@/types/usage"; import { motion } from "framer-motion"; import { BarChart3, ListFilter, Activity, RefreshCw, Coins, } from "lucide-react"; import { Button } from "@/components/ui/button"; import { useQueryClient } from "@tanstack/react-query"; import { usageKeys } from "@/lib/query/usage"; import { Accordion, AccordionContent, AccordionItem, AccordionTrigger, } from "@/components/ui/accordion"; import { PricingConfigPanel } from "@/components/usage/PricingConfigPanel"; export function UsageDashboard() { const { t } = useTranslation(); const queryClient = useQueryClient(); const [timeRange, setTimeRange] = useState("1d"); const [refreshIntervalMs, setRefreshIntervalMs] = useState(30000); const refreshIntervalOptionsMs = [0, 5000, 10000, 30000, 60000] as const; const changeRefreshInterval = () => { const currentIndex = refreshIntervalOptionsMs.indexOf( refreshIntervalMs as (typeof refreshIntervalOptionsMs)[number], ); const safeIndex = currentIndex >= 0 ? currentIndex : 3; // default 30s const nextIndex = (safeIndex + 1) % refreshIntervalOptionsMs.length; const next = refreshIntervalOptionsMs[nextIndex]; setRefreshIntervalMs(next); queryClient.invalidateQueries({ queryKey: usageKeys.all }); }; const days = timeRange === "1d" ? 1 : timeRange === "7d" ? 7 : 30; return (

{t("usage.title")}

{t("usage.subtitle")}

setTimeRange(v as TimeRange)} className="w-full sm:w-auto" >
{t("usage.today")} {t("usage.last7days")} {t("usage.last30days")}
{t("usage.requestLogs")} {t("usage.providerStats")} {t("usage.modelStats")}
{/* Pricing Configuration */}

{t("settings.advanced.pricing.title")}

{t("settings.advanced.pricing.description")}

); }