import React, { ElementType, Ref } from 'react'; import { Props } from '../../types.js'; import { PropsForFeatures, HasDisplayName, RefProp } from '../../utils/render.js'; declare let DEFAULT_MENU_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; interface MenuRenderPropArg { open: boolean; close: () => void; } export type MenuProps = Props; declare function MenuFn(props: MenuProps, ref: Ref): JSX.Element; declare let DEFAULT_BUTTON_TAG: "button"; interface ButtonRenderPropArg { open: boolean; } type ButtonPropsWeControl = 'aria-controls' | 'aria-expanded' | 'aria-haspopup'; export type MenuButtonProps = Props; declare function ButtonFn(props: MenuButtonProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_ITEMS_TAG: "div"; interface ItemsRenderPropArg { open: boolean; } type ItemsPropsWeControl = 'aria-activedescendant' | 'aria-labelledby' | 'role' | 'tabIndex'; declare let ItemsRenderFeatures: number; export type MenuItemsProps = Props & PropsForFeatures; declare function ItemsFn(props: MenuItemsProps, ref: Ref): React.ReactElement> | null; declare let DEFAULT_ITEM_TAG: React.ExoticComponent<{ children?: React.ReactNode; }>; interface ItemRenderPropArg { active: boolean; disabled: boolean; close: () => void; } type ItemPropsWeControl = 'aria-disabled' | 'role' | 'tabIndex'; export type MenuItemProps = Props & { disabled?: boolean; }; declare function ItemFn(props: MenuItemProps, ref: Ref): React.ReactElement> | null; interface ComponentMenu extends HasDisplayName { (props: MenuProps & RefProp): JSX.Element; } interface ComponentMenuButton extends HasDisplayName { (props: MenuButtonProps & RefProp): JSX.Element; } interface ComponentMenuItems extends HasDisplayName { (props: MenuItemsProps & RefProp): JSX.Element; } interface ComponentMenuItem extends HasDisplayName { (props: MenuItemProps & RefProp): JSX.Element; } export declare let Menu: ComponentMenu & { Button: ComponentMenuButton; Items: ComponentMenuItems; Item: ComponentMenuItem; }; export {};