diff --git a/apps/web/src/app/(main)/dashboard/layout.tsx b/apps/web/src/app/(main)/dashboard/layout.tsx index c3338076..77fd7212 100644 --- a/apps/web/src/app/(main)/dashboard/layout.tsx +++ b/apps/web/src/app/(main)/dashboard/layout.tsx @@ -45,7 +45,7 @@ export default function DashboardLayout({ Opensox -
+
{children}
@@ -64,7 +64,7 @@ export default function DashboardLayout({ Opensox -
+
{children}
diff --git a/apps/web/src/app/(main)/dashboard/oss-programs/ProgramsList.tsx b/apps/web/src/app/(main)/dashboard/oss-programs/ProgramsList.tsx index f6d569f4..ae28f3d3 100644 --- a/apps/web/src/app/(main)/dashboard/oss-programs/ProgramsList.tsx +++ b/apps/web/src/app/(main)/dashboard/oss-programs/ProgramsList.tsx @@ -1,6 +1,6 @@ "use client"; -import { useState, useMemo, useCallback } from "react"; +import { useState, useMemo, useCallback, useEffect } from "react"; import { Program } from "@/data/oss-programs/types"; import { SearchInput, TagFilter, ProgramCard } from "@/components/oss-programs"; @@ -13,6 +13,16 @@ export default function ProgramsList({ programs, tags }: ProgramsListProps) { const [searchQuery, setSearchQuery] = useState(""); const [selectedTags, setSelectedTags] = useState([]); + useEffect(() => { + const savedScroll = sessionStorage.getItem("oss-programs-scroll"); + + if (savedScroll) { + const scrollContainer = document.getElementById("dashboard-scroll-container"); + scrollContainer?.scrollTo(0, Number(savedScroll)); + sessionStorage.removeItem("oss-programs-scroll"); + } + }, []); + // Memoize handlers to prevent child re-renders const handleSearchChange = useCallback((value: string) => { setSearchQuery(value); diff --git a/apps/web/src/components/oss-programs/ProgramCard.tsx b/apps/web/src/components/oss-programs/ProgramCard.tsx index 3205e049..46e417db 100644 --- a/apps/web/src/components/oss-programs/ProgramCard.tsx +++ b/apps/web/src/components/oss-programs/ProgramCard.tsx @@ -11,6 +11,13 @@ function ProgramCard({ program }: ProgramCardProps) { return ( { + const scrollContainer = document.getElementById("dashboard-scroll-container"); + sessionStorage.setItem( + "oss-programs-scroll", + String(scrollContainer?.scrollTop ?? window.scrollY) + ); + }} className="group block w-full min-w-0" >