import React from 'react'; import Link from 'next/link'; import { NavigationMenuLink } from "@/components/ui/navigation-menu"; import { cn } from "@/lib/utils"; import * as LucideIcons from "lucide-react"; import { MenuItem } from '@/config/menuConfig'; import { filterActiveAdditionalMenus } from "@/hooks/use-active-menus"; type GroupedMenuItems = { [key: string]: MenuItem[]; }; interface GroupedMenuRendererProps { items: MenuItem[]; lng: string; activeMenus?: Record; t: (key: string) => string; // 번역 함수 추가 } const GroupedMenuRenderer = ({ items, lng, activeMenus = {}, t }: GroupedMenuRendererProps) => { // 활성 메뉴만 필터링 (activeMenus가 빈 객체면 모든 메뉴 표시) const filteredItems = Object.keys(activeMenus).length > 0 ? filterActiveAdditionalMenus(items, activeMenus) : items; // 그룹별로 아이템 분류 const groupItems = (items: MenuItem[]): GroupedMenuItems => { return items.reduce((groups, item) => { // groupKey가 있으면 번역된 그룹명 사용, 없으면 'default' const groupKey = item.groupKey || 'default'; const groupName = item.groupKey ? t(item.groupKey) : 'default'; if (!groups[groupName]) { groups[groupName] = []; } groups[groupName].push(item); return groups; }, {} as GroupedMenuItems); }; const groupedItems = groupItems(filteredItems); const groups = Object.keys(groupedItems); // 활성 메뉴가 없으면 아무것도 렌더링하지 않음 if (filteredItems.length === 0) { return (

{t('common.no_available_menus')}

); } return (
{groups.map((groupName, index) => { // 빈 그룹은 건너뛰기 if (groupedItems[groupName].length === 0) return null; return (
{groupName !== 'default' && (

{groupName}

)}
{groupedItems[groupName].map((item) => ( ))}
); })}
); }; const MenuListItem = ({ item, lng, t }: { item: MenuItem; lng: string; t: (key: string) => string }) => { return (
{t(item.titleKey)}
{item.descriptionKey && (

{t(item.descriptionKey)}

)}
); }; export default GroupedMenuRenderer;