import { Link } from 'react-router-dom'; import { ExternalLink, PanelLeftOpen, PanelRightOpen } from 'lucide-react'; import { cn } from '@/lib/utils/utils'; import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger, } from '@/components/radix/Tooltip'; import { PrimaryMenuItem } from '@/lib/utils/menuItems'; interface PrimaryMenuProps { items: PrimaryMenuItem[]; bottomItems?: PrimaryMenuItem[]; activeItemId?: string | null; isCollapsed: boolean; onToggleCollapse: () => void; } export function PrimaryMenu({ items, bottomItems, activeItemId, isCollapsed, onToggleCollapse, }: PrimaryMenuProps) { const handleToggleClick = (e: React.MouseEvent) => { e.preventDefault(); e.stopPropagation(); onToggleCollapse(); }; const baseButtonClasses = cn( 'relative h-9 rounded duration-200 ease-in-out overflow-hidden flex items-center', isCollapsed ? 'w-9' : 'w-full', 'hover:bg-zinc-100 dark:hover:bg-neutral-600 text-black dark:text-neutral-400' ); const MenuItem = ({ item }: { item: PrimaryMenuItem }) => { const isActive = item.id === activeItemId; return ( {!isCollapsed && {item.label}} {isCollapsed && (

{item.label}

)}
); }; const BottomMenuItem = ({ item }: { item: PrimaryMenuItem }) => { // For items with onClick handler or external links, use a button if (item.onClick || item.external) { return ( {isCollapsed && (

{item.label}

{item.external && }
)}
); } // For internal navigation, use a Link return (
{!isCollapsed && ( {item.label} )}
{isCollapsed && (

{item.label}

)}
); }; return ( ); }