import * as React from 'react'; import type { ButtonProps } from '../../button/button'; import type { Space } from '../../metrics/metrics'; export type MenuVariant = 'regular' | 'rounded'; export type MenuSpacing = Extract; export type MenuRole = 'list' | 'menu' | 'menubar' | 'navigation' | 'listbox' | 'group'; export type MenuDirection = 'vertical' | 'horizontal'; export type MenuItemSize = 'small' | 'medium'; export type MenuContextType = { menuRole: MenuRole; menuDirection?: MenuDirection; menuVariant?: MenuVariant; menuItemSize?: MenuItemSize; menuSpacing?: MenuSpacing; registerToggleMenu: () => void; } | undefined; export declare const MenuContext: React.Context; export declare const ITEM_HEIGHT_MULTIPIER = 5; export declare const DIVIDER_HEIGHT_MULTIPIER = 2; export declare const TEXT_DIVIDER_HEIGHT_MULTIPIER = 4; export type MenuProps = { ref?: React.Ref children?: React.ReactNode id?: string className?: string variant?: MenuVariant itemSize?: MenuItemSize spacing?: MenuSpacing } & A11yProps & BleedProps & DirectionProps; type A11yProps = { role: MenuRole tagName?: 'ul' | 'ol' ariaActiveDescendant?: string ariaMultiSelectable?: boolean ariaLabel?: string ariaLabelledBy?: string }; type BleedProps = { variant: Extract; direction?: 'vertical'; bleedX: boolean } | { bleedX?: false; }; type DirectionProps = { role: Exclude; direction?: 'vertical' | 'horizontal' } | { direction?: never; }; export declare function Menu({ ref, ...props }: MenuProps): React.ReactNode; export type MenuItemProps = { id?: string buttonId?: string } & MenuItemButtonSharedProps; type Decorator = (() => React.ReactNode) | React.ReactNode; export type MenuItemButtonSharedProps = { children?: React.ReactNode className?: string href?: string target?: string download?: string onClick?: (event: React.MouseEvent) => void onContextMenu?: (event: React.MouseEvent) => void start?: Decorator end?: Decorator label?: string description?: string lineClamp?: number active?: boolean selected?: boolean pressed?: boolean disableActiveStyle?: boolean disabled?: boolean onFocus?: React.FocusEventHandler onBlur?: React.FocusEventHandler onMouseEnter?: (event: React.MouseEvent) => void onMouseLeave?: (event: React.MouseEvent) => void buttonRef?: React.Ref ariaSelected?: boolean } & Pick; export type MenuItemButtonProps = MenuItemButtonSharedProps & { id?: string alignment?: 'start' | 'center' } & { role?: 'menuitem' }; export declare const MenuItem: React.ComponentType; export declare const MenuItemButton: React.ComponentType; export declare const renderDecorator: (decorator?: React.ReactNode) => React.JSX.Element; export declare const MenuDivider: React.ComponentType<{ id?: string children?: React.ReactNode }>; export type ToggleMenuProps = MenuProps & { id?: string; menuId?: string labelId?: string label: string labelNode?: React.ReactNode href?: string onToggleClick?: () => void onClick?: (event: React.MouseEvent) => void onContextMenu?: (event: React.MouseEvent) => void toggleLabel?: string defaultExpanded?: boolean expanded?: boolean buttonClassName?: string } & Pick; export declare function ToggleMenu( { id, menuId: menuIdProp, labelId: labelIdProp, label, labelNode, disabled, draggable, start, end, active, selected, buttonRef, tooltipLabel, tooltipPlacement, href, onClick, onToggleClick, onContextMenu, toggleLabel, defaultExpanded, expanded: expandedProp, buttonClassName, ref, ...props }: ToggleMenuProps ): React.ReactNode; export {};