judge4c/src/app/(protected)/dashboard/layout.tsx

57 lines
1.7 KiB
TypeScript
Raw Normal View History

2025-06-20 12:18:13 +00:00
import { AppSidebar } from "@/components/sidebar/app-sidebar";
2025-06-17 09:05:15 +00:00
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
2025-06-20 12:18:13 +00:00
} from "@/components/ui/breadcrumb";
import { Separator } from "@/components/ui/separator";
2025-06-17 09:05:15 +00:00
import {
SidebarInset,
SidebarProvider,
SidebarTrigger,
2025-06-20 12:18:13 +00:00
} from "@/components/ui/sidebar";
import { auth } from "@/lib/auth";
import { notFound } from "next/navigation";
2025-06-17 09:05:15 +00:00
2025-06-20 12:18:13 +00:00
interface LayoutProps {
children: React.ReactNode;
}
export default async function Layout({ children }: LayoutProps) {
const session = await auth();
const user = session?.user;
if (!user) {
notFound();
}
2025-06-17 09:05:15 +00:00
return (
<SidebarProvider>
2025-06-20 12:18:13 +00:00
<AppSidebar user={user} />
2025-06-17 09:05:15 +00:00
<SidebarInset>
<header className="flex h-16 shrink-0 items-center gap-2">
<div className="flex items-center gap-2 px-4">
<SidebarTrigger className="-ml-1" />
<Separator orientation="vertical" className="mr-2 h-4" />
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem className="hidden md:block">
<BreadcrumbLink href="#">
Building Your Application
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator className="hidden md:block" />
<BreadcrumbItem>
<BreadcrumbPage>Data Fetching</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</div>
</header>
2025-06-20 12:18:13 +00:00
<div className="flex flex-1 flex-col gap-4 p-4 pt-0">{children}</div>
2025-06-17 09:05:15 +00:00
</SidebarInset>
</SidebarProvider>
2025-06-20 12:18:13 +00:00
);
2025-06-17 09:05:15 +00:00
}