41 lines
1.1 KiB
TypeScript
41 lines
1.1 KiB
TypeScript
import { createFileRoute, Outlet } from "@tanstack/react-router";
|
|
|
|
import { AppSidebar } from "@/components/app-sidebar";
|
|
import { SiteHeader } from "@/components/site-header";
|
|
import { SidebarInset, SidebarProvider } from "@/components/ui/sidebar";
|
|
|
|
export const Route = createFileRoute("/_auth")({
|
|
beforeLoad: async ({ context: { auth } }) => {
|
|
await auth.resolve();
|
|
if (auth.isAuthenticated === false) {
|
|
throw auth.login();
|
|
}
|
|
},
|
|
component: AppLayout,
|
|
});
|
|
|
|
function AppLayout() {
|
|
return (
|
|
<SidebarProvider
|
|
style={
|
|
{
|
|
"--sidebar-width": "calc(var(--spacing) * 72)",
|
|
"--header-height": "calc(var(--spacing) * 12)",
|
|
} as React.CSSProperties
|
|
}
|
|
>
|
|
<AppSidebar variant="inset" />
|
|
<SidebarInset>
|
|
<SiteHeader />
|
|
<div className="flex flex-1 flex-col">
|
|
<div className="@container/main flex flex-1 flex-col gap-2">
|
|
<div className="flex flex-col gap-4 py-4 md:gap-6 md:py-6">
|
|
<Outlet />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</SidebarInset>
|
|
</SidebarProvider>
|
|
);
|
|
}
|