import MoreVertIcon from '@mui/icons-material/MoreVert' import type { SxProps, Theme } from '@mui/material' import { MenuItem } from '@mui/material' import { type JSX, useId, useState } from 'react' import { useTranslation } from 'react-i18next' import { ContextMenuButton } from './ContextMenu.style.js' import { Menu } from './Menu.js' export interface ContextMenuItemConfig { icon: React.ReactNode label: string onClick: () => void } interface ContextMenuProps { items: ContextMenuItemConfig[] disabled?: boolean buttonSx?: SxProps } export const ContextMenu = ({ items, disabled, buttonSx, }: ContextMenuProps): JSX.Element => { const { t } = useTranslation() const menuId = useId() const [anchorEl, setAnchorEl] = useState(null) const open = Boolean(anchorEl) const handleOpen = (e: React.MouseEvent) => { setAnchorEl(e.currentTarget) } const closeMenu = () => { setAnchorEl(null) } const handleItemClick = (onClick: () => void) => () => { onClick() closeMenu() } return ( <> {items.map((item) => ( {item.icon} {item.label} ))} ) }