import { redirect } from "next/navigation"; import { cookies } from "next/headers"; import { SidebarInset, SidebarProvider, SidebarTrigger, } from "~/components/ui/sidebar"; import { Separator } from "~/components/ui/separator"; import { AppSidebar } from "~/components/dashboard/app-sidebar"; import { auth } from "~/server/auth"; import { BreadcrumbProvider, BreadcrumbDisplay, } from "~/components/ui/breadcrumb-provider"; import { StudyProvider } from "~/lib/study-context"; import { TourProvider } from "~/components/onboarding/TourProvider"; interface DashboardLayoutProps { children: React.ReactNode; } export default async function DashboardLayout({ children, }: DashboardLayoutProps) { const session = await auth(); if (!session?.user) { redirect("/auth/signin"); } const userRole = typeof session.user.roles?.[0] === "string" ? session.user.roles[0] : (session.user.roles?.[0]?.role ?? "observer"); const cookieStore = await cookies(); const defaultOpen = cookieStore.get("sidebar_state")?.value === "true"; // Pre-seed selected study from cookie (SSR) to avoid client flash const selectedStudyCookie = cookieStore.get("hristudio_selected_study")?.value ?? null; return (
{children}
); }