Files
Reactive-Resume/apps/web/src/routes/dashboard/route.tsx
T
Amruth Pillai 50ba37a27f v5.1.0 (#2970)
* chore(release): v5.1.0

* feat: implement resume thumbnails

* fix: remove unused mcp tools

* docs: fix formatting of docs
2026-05-07 15:12:33 +02:00

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>
);
}