import { BarChart2, Settings, ShoppingCart, User, Users } from 'lucide-react'; import { Link, useLocation } from 'react-router-dom'; import { cn } from '@crux-kit/utils'; import { MenuConfig } from '#app/config/types'; import { useMenuConfig } from '#app/menu'; import { useMenu } from '#shared/hooks/useMenu'; import { createMenuPathMatcher } from '#shared/lib/menuPath'; import { Button } from '#shared/ui/Button'; import { DropdownMenu, DropdownMenuContent, DropdownMenuItem, DropdownMenuLabel, DropdownMenuSeparator, DropdownMenuSub, DropdownMenuSubContent, DropdownMenuSubTrigger, DropdownMenuTrigger } from '#shared/ui/DropdownMenu'; export function SidebarMenu() { const { pathname } = useLocation(); const { hasActiveChild } = useMenu(pathname); const config = useMenuConfig(); const menuConfig: MenuConfig = [ { title: 'Boards', icon: BarChart2, path: '/' }, { title: 'Profiles', icon: User, children: config?.[2].children }, { title: 'Account', icon: Settings, children: config?.[3].children }, { title: 'Store', icon: ShoppingCart, children: config?.[7].children }, { title: 'Network', icon: Users, children: config?.[4].children } ]; // A leaf highlights only when nothing deeper in the menu matches the route more closely. const isActive = createMenuPathMatcher(menuConfig, pathname); const buildMenu = (items: MenuConfig) => { return items.map((item, index) => (