since3-portal/app/client/layout.tsx
2026-09-28 15:53:52 +02:00

25 lines
No EOL
1.1 KiB
TypeScript

import { cookies } from "next/headers";
import { SidebarProvider, SidebarTrigger } from "@/components/ui/sidebar";
import { verifySession } from "@/lib/supabase/dal";
import { AppSidebar } from "@/modules/shared/ui/components/app-sidebar";
import { TermsDialog } from "@/modules/shared/ui/components/terms-dialog";
export default async function ClientLayout({ children }: { children: React.ReactNode }) {
const session = await verifySession()
const cookieStore = await cookies()
const defaultOpen = cookieStore.get("sidebar_state")?.value !== "false"
return (
<SidebarProvider defaultOpen={defaultOpen}>
{!session.isAdmin && !session.hasAcceptedTerms && <TermsDialog/>}
<AppSidebar session={session}/>
<div className="flex w-full flex-col">
<div className="flex items-center border-b border-border p-3 md:hidden">
<SidebarTrigger />
</div>
<main className="flex-1 p-4 md:p-8">{children}</main>
</div>
</SidebarProvider>
)
}