import { AriaLabelingProps, CollectionBase, DOMAttributes, DOMProps, FocusStrategy, Key, KeyboardDelegate, KeyboardEvents, MultipleSelection, RefObject } from '@react-types/shared'; import { TreeState } from 'react-stately/useTreeState'; export interface MenuProps extends CollectionBase, MultipleSelection { /** Where the focus should be set. */ autoFocus?: boolean | FocusStrategy; /** Whether keyboard navigation is circular. */ shouldFocusWrap?: boolean; /** Handler that is called when an item is selected. */ onAction?: (key: Key) => void; /** Handler that is called when the menu should close after selecting an item. */ onClose?: () => void; } export interface AriaMenuProps extends MenuProps, DOMProps, AriaLabelingProps { /** * Whether pressing the escape key should clear selection in the menu or not. * * Most experiences should not modify this option as it eliminates a keyboard user's ability to * easily clear selection. Only use if the escape key is being handled externally or should not * trigger selection clearing contextually. * @default 'clearSelection' */ escapeKeyBehavior?: 'clearSelection' | 'none'; } export interface MenuAria { /** Props for the menu element. */ menuProps: DOMAttributes; } export interface AriaMenuOptions extends Omit, 'children'>, KeyboardEvents { /** Whether the menu uses virtual scrolling. */ isVirtualized?: boolean; /** * An optional keyboard delegate implementation for type to select, * to override the default. */ keyboardDelegate?: KeyboardDelegate; /** * Whether the menu items should use virtual focus instead of being focused directly. */ shouldUseVirtualFocus?: boolean; } /** * Provides the behavior and accessibility implementation for a menu component. * A menu displays a list of actions or options that a user can choose. * @param props - Props for the menu. * @param state - State for the menu, as returned by `useListState`. */ export declare function useMenu(props: AriaMenuOptions, state: TreeState, ref: RefObject): MenuAria;