diff --git a/frontend/src/app/dashboard/page.tsx b/frontend/src/app/dashboard/page.tsx index 237252b7..0904d251 100644 --- a/frontend/src/app/dashboard/page.tsx +++ b/frontend/src/app/dashboard/page.tsx @@ -1,5 +1,10 @@ +import { Suspense } from "react"; import { WalletEntry } from "@/components/wallet/wallet-entry"; export default function AppDashboardPage() { - return ; + return ( + + + + ); } diff --git a/frontend/src/components/dashboard/dashboard-view.tsx b/frontend/src/components/dashboard/dashboard-view.tsx index 77bb8453..2bca6a6e 100644 --- a/frontend/src/components/dashboard/dashboard-view.tsx +++ b/frontend/src/components/dashboard/dashboard-view.tsx @@ -2,6 +2,7 @@ import React from "react"; import Link from "next/link"; +import { useSearchParams, useRouter } from "next/navigation"; import toast from "react-hot-toast"; /** @@ -513,9 +514,14 @@ const RecentActivityList = React.memo(function RecentActivityList({ // ─── Main Component ─────────────────────────────────────────────────────────── +const VALID_TAB_IDS = new Set(SIDEBAR_ITEMS.map((item) => item.id)); + export function DashboardView({ session, onDisconnect }: DashboardViewProps) { const queryClient = useQueryClient(); - const [activeTab, setActiveTab] = React.useState("overview"); + const router = useRouter(); + const searchParams = useSearchParams(); + const tabParam = searchParams.get("tab"); + const activeTab = VALID_TAB_IDS.has(tabParam ?? "") ? (tabParam as string) : "overview"; const [showWizard, setShowWizard] = React.useState(false); const [modal, setModal] = React.useState(null); @@ -1398,7 +1404,11 @@ export function DashboardView({ session, onDisconnect }: DashboardViewProps) { className="sidebar-item" data-active={activeTab === item.id ? "true" : undefined} aria-current={activeTab === item.id ? "page" : undefined} - onClick={() => setActiveTab(item.id)} + onClick={() => { + const params = new URLSearchParams(searchParams.toString()); + params.set("tab", item.id); + router.replace(`?${params.toString()}`); + }} > {item.label}