diff --git a/src/app/(dashboard)/dashboard/usage/page.js b/src/app/(dashboard)/dashboard/usage/page.js index b674e97..06bd919 100644 --- a/src/app/(dashboard)/dashboard/usage/page.js +++ b/src/app/(dashboard)/dashboard/usage/page.js @@ -1,12 +1,31 @@ "use client"; -import { useState, Suspense } from "react"; +import { useState, Suspense, useEffect } from "react"; +import { useSearchParams, useRouter } from "next/navigation"; import { UsageStats, RequestLogger, CardSkeleton, SegmentedControl } from "@/shared/components"; import ProviderLimits from "./components/ProviderLimits"; import RequestDetailsTab from "./components/RequestDetailsTab"; export default function UsagePage() { - const [activeTab, setActiveTab] = useState("overview"); + const searchParams = useSearchParams(); + const router = useRouter(); + const [activeTab, setActiveTab] = useState(searchParams.get("tab") || "overview"); + + // Sync tab with URL on mount and when URL changes + useEffect(() => { + const tabFromUrl = searchParams.get("tab"); + if (tabFromUrl && ["overview", "logs", "limits", "details"].includes(tabFromUrl)) { + setActiveTab(tabFromUrl); + } + }, [searchParams]); + + // Update URL when tab changes + const handleTabChange = (value) => { + setActiveTab(value); + const params = new URLSearchParams(searchParams); + params.set("tab", value); + router.push(`/dashboard/usage?${params.toString()}`, { scroll: false }); + }; return (