mirror of
https://github.com/AmruthPillai/Reactive-Resume.git
synced 2026-07-27 18:34:51 +10:00
50ba37a27f
* chore(release): v5.1.0 * feat: implement resume thumbnails * fix: remove unused mcp tools * docs: fix formatting of docs
37 lines
1.1 KiB
TypeScript
37 lines
1.1 KiB
TypeScript
import { createFileRoute, Outlet, redirect, useRouter } from "@tanstack/react-router";
|
|
import { SidebarProvider } from "@reactive-resume/ui/components/sidebar";
|
|
import { getDashboardSidebarServerFn, setDashboardSidebarServerFn } from "./-components/functions";
|
|
import { DashboardSidebar } from "./-components/sidebar";
|
|
|
|
export const Route = createFileRoute("/dashboard")({
|
|
component: RouteComponent,
|
|
beforeLoad: async ({ context }) => {
|
|
if (!context.session) throw redirect({ to: "/auth/login", replace: true });
|
|
return { session: context.session };
|
|
},
|
|
loader: async () => {
|
|
const sidebarState = await getDashboardSidebarServerFn();
|
|
return { sidebarState };
|
|
},
|
|
});
|
|
|
|
function RouteComponent() {
|
|
const router = useRouter();
|
|
const { sidebarState } = Route.useLoaderData();
|
|
|
|
const handleSidebarOpenChange = async (open: boolean) => {
|
|
await setDashboardSidebarServerFn({ data: open });
|
|
void router.invalidate();
|
|
};
|
|
|
|
return (
|
|
<SidebarProvider open={sidebarState} onOpenChange={handleSidebarOpenChange}>
|
|
<DashboardSidebar />
|
|
|
|
<main className="@container flex-1 p-4 md:ps-2">
|
|
<Outlet />
|
|
</main>
|
|
</SidebarProvider>
|
|
);
|
|
}
|