import { FunctionComponent, MouseEvent, ReactElement, ReactNode } from 'react'; import { IconComponent } from 'twenty-ui'; import { LightIconButtonProps } from '@/ui/input/button/components/LightIconButton'; import { LightIconButtonGroup } from '@/ui/input/button/components/LightIconButtonGroup'; import { MenuItemLeftContent } from '../internals/components/MenuItemLeftContent'; import { StyledHoverableMenuItemBase, StyledMenuItemLeftContent, } from '../internals/components/StyledMenuItemBase'; import { MenuItemAccent } from '../types/MenuItemAccent'; export type MenuItemIconButton = { Wrapper?: FunctionComponent<{ iconButton: ReactElement }>; Icon: IconComponent; accent?: LightIconButtonProps['accent']; onClick?: (event: MouseEvent) => void; }; export type MenuItemProps = { accent?: MenuItemAccent; className?: string; iconButtons?: MenuItemIconButton[]; isIconDisplayedOnHoverOnly?: boolean; isTooltipOpen?: boolean; LeftIcon?: IconComponent | null; onClick?: (event: MouseEvent) => void; onMouseEnter?: (event: MouseEvent) => void; onMouseLeave?: (event: MouseEvent) => void; testId?: string; text: ReactNode; }; export const MenuItem = ({ accent = 'default', className, iconButtons, isIconDisplayedOnHoverOnly = true, LeftIcon, onClick, onMouseEnter, onMouseLeave, testId, text, }: MenuItemProps) => { const showIconButtons = Array.isArray(iconButtons) && iconButtons.length > 0; const handleMenuItemClick = (event: MouseEvent) => { if (!onClick) return; event.preventDefault(); event.stopPropagation(); onClick?.(event); }; return (
{showIconButtons && ( )}
); };