"use client"; import { ChevronRight, type LucideIcon } from "lucide-react"; import { Collapsible, CollapsibleContent, CollapsibleTrigger, } from "@/components/ui/collapsible"; import { SidebarGroup, SidebarMenu, SidebarMenuButton, SidebarMenuItem, SidebarMenuSub, SidebarMenuSubButton, SidebarMenuSubItem, useSidebar, } from "@/components/ui/sidebar"; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuTrigger, } from "@/components/ui/dropdown-menu"; import { usePathname } from "next/navigation"; import Link from "next/link"; import * as React from "react"; export function NavMain({ items, }: { items: { title: string; url: string; icon?: LucideIcon; isActive?: boolean; items?: { title: string; url: string; }[]; }[]; }) { const pathname = usePathname(); const { state } = useSidebar(); const isCollapsed = state === "collapsed"; return ( {items.map((item) => { const hasSubmenu = item.items && item.items.length > 0; const isActive = pathname === item.url; const hasActiveSubmenu = hasSubmenu && item.items!.some((sub) => pathname === sub.url); // В свернутом состоянии показываем DropdownMenu для элементов с подменю if (isCollapsed && hasSubmenu) { return ( {item.icon && } {item.title} {item.items!.map((subItem) => { const isSubActive = pathname === subItem.url; return ( {subItem.title} ); })} ); } // Обычное отображение для развернутого состояния return ( {hasSubmenu ? ( <> {item.icon && } {item.title} {item.items!.map((subItem) => { const isSubActive = pathname === subItem.url; return ( {subItem.title} ); })} ) : ( {item.icon && } {item.title} )} ); })} ); }