import { useThemeHooks } from "@redocly/theme/core/hooks"; import { ArrowIcon } from "../icons"; import { navIcons } from "../constants/icons"; import { hasChildren, type SubmenuItem, type SubmenuItemWithChildren, type SubmenuItemBase } from "../types"; interface SubmenuSectionProps { /** The menu item data */ item: SubmenuItem | SubmenuItemWithChildren | SubmenuItemBase; /** Whether to render children links (default: true) */ showChildren?: boolean; } /** * Unified submenu section component. * Renders a parent link with icon, and optionally child links if the item has them. * * Usage: * - For items that may or may not have children: * - For parent-only rendering: */ export function SubmenuSection({ item, showChildren = true }: SubmenuSectionProps) { const { useTranslate } = useThemeHooks(); const { translate } = useTranslate(); const itemHasChildren = hasChildren(item as SubmenuItem); const shouldShowChildren = showChildren && itemHasChildren; return (
{translate(item.label)} {translate(item.label)} {shouldShowChildren && (
{(item as SubmenuItemWithChildren).children.map((child) => ( {translate(child.label)} ))}
)}
); } // Backwards-compatible aliases (all use the unified SubmenuSection) export const SubmenuParentOnly = ({ item }: { item: SubmenuItemBase }) => ( ); export const SubmenuWithChildren = ({ item }: { item: SubmenuItemWithChildren }) => ( );