import React, {forwardRef, Fragment, ReactElement} from 'react'; import {NavLink} from 'react-router-dom'; import clsx from 'clsx'; import {MenuConfig, MenuItemConfig} from '../core/settings/settings'; import {createSvgIconFromTree} from '../icons/create-svg-icon'; import {Orientation} from '../ui/forms/orientation'; import {useCustomMenu} from './use-custom-menu'; import {Trans} from '../i18n/trans'; import {IconSize} from '@common/icons/svg-icon'; type MatchDescendants = undefined | boolean | ((to: string) => boolean); interface CustomMenuProps { className?: string; matchDescendants?: MatchDescendants; iconClassName?: string; iconSize?: IconSize; itemClassName?: | string | ((props: { isActive: boolean; item: MenuItemConfig; }) => string | undefined); gap?: string; menu?: string | MenuConfig; children?: (menuItem: MenuItemConfig) => ReactElement; orientation?: Orientation; onlyShowIcons?: boolean; unstyled?: boolean; } export function CustomMenu({ className, iconClassName, itemClassName, gap = 'gap-30', menu: menuOrPosition, orientation = 'horizontal', children, matchDescendants, onlyShowIcons, iconSize, unstyled = false, }: CustomMenuProps) { const menu = useCustomMenu(menuOrPosition); if (!menu) return null; return (