import { ChevronDown, ChevronRight, Home, FileText, Users, BarChart3, Cog, GitBranch } from "lucide-react"; import { cn } from "@/lib/utils"; import { MenuItem } from "@/types/menu"; import { MENU_ICONS, MESSAGES } from "@/constants/layout"; interface MainSidebarProps { menuList: MenuItem[]; expandedMenus: Set; onMenuClick: (menu: MenuItem) => void; className?: string; } /** * 메뉴 아이콘 선택 함수 */ const getMenuIcon = (menuName: string) => { if (MENU_ICONS.HOME.some((keyword) => menuName.includes(keyword))) { return ; } if (MENU_ICONS.DOCUMENT.some((keyword) => menuName.includes(keyword))) { return ; } if (MENU_ICONS.USERS.some((keyword) => menuName.includes(keyword))) { return ; } if (MENU_ICONS.STATISTICS.some((keyword) => menuName.includes(keyword))) { return ; } if (MENU_ICONS.SETTINGS.some((keyword) => menuName.includes(keyword))) { return ; } if (MENU_ICONS.DATAFLOW.some((keyword) => menuName.includes(keyword))) { return ; } return ; }; /** * 메인 사이드바 컴포넌트 */ export function MainSidebar({ menuList, expandedMenus, onMenuClick, className = "" }: MainSidebarProps) { /** * 메뉴 아이템 렌더링 */ const renderMenuItem = (menu: MenuItem, level: number = 0) => { const hasChildren = menu.children && menu.children.length > 0; const isExpanded = expandedMenus.has(String(menu.OBJID)); return (
{hasChildren && isExpanded && (
{menu.children!.map((child) => renderMenuItem(child, level + 1))}
)}
); }; return ( ); }