"use client"; import { Logo } from "@/components/logo"; import { cn } from "@/lib/utils"; import Image from "next/image"; import Link from "next/link"; import { usePathname } from "next/navigation"; import { useEffect, useState } from "react"; import { NAV_DATA, NavSubItem } from "./data"; import { ArrowLeftIcon, ChevronUp, MenuExpandIcon } from "./icons"; import { MenuItem } from "./menu-item"; import { useSidebarContext } from "./sidebar-context"; export function Sidebar() { const pathname = usePathname(); const { setIsOpen, isOpen, isMobile, toggleSidebar } = useSidebarContext(); const [expandedItems, setExpandedItems] = useState([]); const isVisible = (item: { visible?: boolean }) => item.visible !== false; const toggleExpanded = (title: string) => { setExpandedItems((prev) => prev.includes(title) ? prev.filter((t) => t !== title) : [...prev, title], ); }; useEffect(() => { const newExpandedItems: string[] = []; NAV_DATA.forEach((section) => { section.items.filter(isVisible).forEach((item) => { if (item.items.length > 0) { const hasActiveSubItem = item.items.filter(isVisible).some( (subItem: NavSubItem) => subItem.url === pathname || (pathname.startsWith(subItem.url) && subItem.url !== "/"), ); if (hasActiveSubItem) { newExpandedItems.push(item.title); } } }); }); setExpandedItems(newExpandedItems); }, [pathname]); // Collapsed state: show only icons (for mobile) const isCollapsed = isMobile && !isOpen; return ( <> {isMobile && isOpen && (
setIsOpen(false)} aria-hidden="true" /> )} ); }