import * as React from 'react'; import type { PrimitivePropsWithRef } from '../utils/primitive.cjs'; import type { MenuContextValue, MenuProps } from './types.cjs'; /** * @internal Every menu item (disabled included for keyboard discovery per APG). */ export declare const ITEM_SELECTOR = "[role^=\"menuitem\"]"; /** @internal How long a touch pointer must stay down on a `contextmenu` trigger before the menu opens. */ export declare const LONG_PRESS_MS = 500; /** @internal How far, in CSS pixels, a touch pointer may travel while the long-press timer is armed before it disarms. */ export declare const LONG_PRESS_MOVE_TOLERANCE = 10; export declare const MenuProvider: React.FC, useMenuContext: (consumerName: string) => MenuContextValue; /** * @internal Class-name stem the menu parts publish, so the same parts serve a * standalone menu and a menubar's menu without either owning a second copy. */ export declare const MenuFamilyContext: React.Context<"menu" | "menubar">; /** Props for {@link MenuRoot}: {@link MenuProps} minus the derived-anatomy-only props, plus the parts as `children`. */ export type MenuRootProps = Omit & { /** * The trigger and portal — the menu's own DOM (content, items) is rendered * by `MenuPortal` elsewhere. * @default undefined — renders nothing if omitted. */ children?: React.ReactNode | undefined; }; /** * State/context root that owns open state and wraps `children` in a popper root, rendering no DOM element of its own. */ export declare function MenuRoot({ children, open: openProp, defaultOpen, openOn, point: pointProp, modal: modalProp, closeOnSelect, onOpenChange, onOpenChangeComplete, }: MenuRootProps): React.JSX.Element; export declare namespace MenuRoot { var displayName: string; } /** * A menu of actions opened by a trigger button — or, under `openOn="contextmenu"`, by right-clicking a region — positioned via floating-ui, with roving-focus/typeahead navigation, nested submenus and checkbox/radio items, deriving anatomy from `trigger` and `items`. * * @example * ```tsx * Options} * items={[ * { label: 'Edit', onSelect: edit, shortcut: '⌘E' }, * { type: 'separator' }, * { label: 'Delete', onSelect: remove, disabled: !canDelete }, * ]} * /> * * Right-click this area} * items={[{ label: 'Copy', onSelect: copy, shortcut: '⌘C' }]} * /> * ``` */ export declare function Menu({ open, defaultOpen, openOn, point, modal, closeOnSelect, onOpenChange, onOpenChangeComplete, trigger, items, onSelect, side, align, renderItem, disabled, size, portalContainer, ...rest }: MenuProps): React.JSX.Element; export declare namespace Menu { var displayName: string; } /** * Optional visual arrow pointing from `MenuContent` back at the trigger, self-positioning based on the resolved `side`. * * @example * ```tsx * * Edit * * * ``` */ export declare const MenuArrow: { ({ ref: forwardedRef, ...props }: PrimitivePropsWithRef<"span">): React.ReactNode; displayName: string; };