import type { Icon } from '@rocket.chat/fuselage'; import { MenuItem, MenuSection, MenuV2 } from '@rocket.chat/fuselage'; import { useTranslation } from '@rocket.chat/ui-contexts'; import type { ComponentProps } from 'react'; import React from 'react'; import type { GenericMenuItemProps } from './GenericMenuItem'; import GenericMenuItem from './GenericMenuItem'; type GenericMenuCommonProps = { icon?: ComponentProps['name']; title: string; }; type GenericMenuConditionalProps = | { sections?: { title?: string; items: GenericMenuItemProps[]; permission?: boolean | '' | 0 | null | undefined; }[]; items?: never; } | { items?: GenericMenuItemProps[]; sections?: never; }; type GenericMenuProps = GenericMenuCommonProps & GenericMenuConditionalProps & Omit, 'children'>; const GenericMenu = ({ title, icon = 'menu', ...props }: GenericMenuProps) => { const t = useTranslation(); const sections = 'sections' in props && props.sections; const items = 'items' in props && props.items; return ( <> {sections && ( {sections.map(({ title, items }, key) => ( {(item) => ( )} ))} )} {items && ( {items.map((item) => ( ))} )} ); }; export default GenericMenu;