"use client"; import { ChevronLeft, ChevronRight, LogOut, NotebookPen } from "lucide-react"; import { Dialog as DialogPrimitive } from "@base-ui/react/dialog"; import { cn } from "@/lib/utils"; import { Button } from "@/components/ui/button"; import { Tooltip, TooltipContent, TooltipTrigger } from "@/components/ui/tooltip"; import { useSideNav } from "@/components/nav/side-nav-provider"; import { SideNavItem } from "@/components/nav/side-nav-item"; import { ProjectsNavSection } from "@/components/nav/projects-nav-section"; import { NAV_ITEMS, ADMIN_NAV_ITEM } from "@/components/nav/nav-items"; import { ThemeToggle } from "@/components/theme/theme-toggle"; import { logout } from "@/lib/actions/auth"; import { Role } from "@/lib/generated/prisma/enums"; /** * The actual nav content, shared by the desktop aside and the mobile * hamburger drawer so the two never drift apart. `collapsed` is always * false in the drawer (a 288px-wide sheet has no room for icon-only mode). */ function SideNavContent({ collapsed, userEmail, role, themeMenu, }: { collapsed: boolean; userEmail: string; role: Role; // Where the theme picker menu opens from its trigger -- right of the // trigger in the desktop sidebar, below it in the mobile drawer (a // right-opening menu would run off the phone's right edge there). themeMenu: { side: "right" | "bottom"; align: "start" | "end" }; }) { const adminItem = role === Role.ADMIN ? [ADMIN_NAV_ITEM] : []; return ( <>