import { SxProps } from "@mui/system/styleFunctionSx/styleFunctionSx"; import { MenuItemProps } from "@mui/material/MenuItem"; import React, { RefObject, ElementType, HTMLAttributes, ReactNode, RefAttributes, ForwardRefExoticComponent } from "react"; import { MenuProps } from "@mui/material/Menu"; import { ButtonProps } from "@mui/material/Button"; export interface MenuItemData { uid?: string; label?: string; leftIcon?: React.ReactNode; rightIcon?: React.ReactNode; callback?: (event: React.MouseEvent<HTMLElement>, item: MenuItemData) => void; items?: MenuItemData[]; disabled?: boolean; sx?: SxProps; delay?: number; } type IconMenuItemProps = { MenuItemProps?: MenuItemProps; className?: string; disabled?: boolean; label?: string; renderLabel?: () => React.ReactNode; leftIcon?: React.ReactNode; onClick?: (event: React.MouseEvent<HTMLElement>) => void; ref?: RefObject<HTMLLIElement>; rightIcon?: React.ReactNode; sx?: SxProps; }; export const IconMenuItem: React.ForwardRefExoticComponent<Omit<IconMenuItemProps, "ref"> & React.RefAttributes<HTMLLIElement>>; export type NestedMenuItemProps = Omit<MenuItemProps, 'button'> & { parentMenuOpen: boolean; component?: ElementType; label?: string; renderLabel?: () => ReactNode; rightIcon?: ReactNode; leftIcon?: ReactNode; children?: ReactNode; className?: string; tabIndex?: number; disabled?: boolean; ContainerProps?: HTMLAttributes<HTMLElement> & RefAttributes<HTMLElement | null>; MenuProps?: Partial<Omit<MenuProps, 'children'>>; button?: true | undefined; delay?: number; }; export const NestedMenuItem: ForwardRefExoticComponent<Omit<NestedMenuItemProps, "ref"> & RefAttributes<HTMLLIElement | null>>; export interface nestedMenuItemsFromObjectProps { menuItemsData: MenuItemData[]; isOpen: boolean; handleClose: () => void; } export function nestedMenuItemsFromObject({ menuItemsData: items, isOpen, handleClose, }: nestedMenuItemsFromObjectProps): JSX.Element[]; export type ContextMenuProps = { children?: ReactNode; menuItems?: ReactNode[]; menuItemsData?: MenuItemData[]; }; export const ContextMenu: ForwardRefExoticComponent<ContextMenuProps & RefAttributes<HTMLDivElement>>; interface NestedDropdownProps { children?: React.ReactNode; menuItemsData?: MenuItemData; onClick?: (e: React.MouseEvent<HTMLButtonElement>) => void; ButtonProps?: Partial<ButtonProps>; MenuProps?: Partial<MenuProps>; } export const NestedDropdown: ForwardRefExoticComponent<NestedDropdownProps & RefAttributes<HTMLDivElement | null>>;