"use client";
import Link from "next/link";
import { cn } from "@/lib/utils";
import { NavigationMenuLink } from "@/components/ui/navigation-menu";
import type { MenuTreeNode } from "@/lib/menu-v2/types";
interface DynamicMenuRenderProps {
groups: MenuTreeNode[] | undefined;
lng: string;
getTitle: (node: MenuTreeNode) => string;
getDescription: (node: MenuTreeNode) => string | null;
onItemClick?: () => void;
}
export default function DynamicMenuRender({
groups,
lng,
getTitle,
getDescription,
onItemClick,
}: DynamicMenuRenderProps) {
if (!groups || groups.length === 0) {
return (
메뉴가 없습니다.
);
}
// 그룹별로 메뉴 분류
const groupedMenus = new Map();
const ungroupedMenus: MenuTreeNode[] = [];
for (const item of groups) {
if (item.nodeType === "group") {
// 그룹인 경우, 그룹의 children을 해당 그룹에 추가
const groupTitle = getTitle(item);
if (!groupedMenus.has(groupTitle)) {
groupedMenus.set(groupTitle, []);
}
if (item.children) {
groupedMenus.get(groupTitle)!.push(...item.children);
}
} else if (item.nodeType === "menu") {
// 직접 메뉴인 경우 (그룹 없이 직접 메뉴그룹에 속한 경우)
ungroupedMenus.push(item);
}
}
// 그룹이 없고 메뉴만 있는 경우 - 단순 그리드 렌더링
if (groupedMenus.size === 0 && ungroupedMenus.length > 0) {
return (