import { RadiantElement } from '@ecopages/radiant'; import type { EventEmitter } from '@ecopages/radiant/tools/event-emitter'; import type { RuiPlacement } from '../shared/placement'; export type RuiMenuButtonProps = { /** Whether the menu starts open. Default: `false`. */ open?: boolean; /** Placement of the menu surface relative to its trigger. Default: `bottom-start`. */ placement?: RuiPlacement; }; export type RuiMenuButtonSelectDetail = { value: string; }; /** * `` — a button that opens a menu of actions. * * Implements the WAI-ARIA APG Menu Button pattern together with the Menu * keyboard model: the trigger exposes `aria-haspopup="menu"` and * `aria-expanded`, and the popup has `role="menu"` with `role="menuitem"` * children. * * @see https://www.w3.org/WAI/ARIA/apg/patterns/menu-button/ * @see https://www.w3.org/WAI/ARIA/apg/patterns/menubar/ * * Keyboard interaction (trigger): * - `Enter` / `Space` / `ArrowDown`: open and focus the first item * - `ArrowUp`: open and focus the last item * * Keyboard interaction (open menu): * - `ArrowDown` / `ArrowUp`: move between items (wraps) * - `Home` / `End`: first / last item * - `Enter` / `Space`: activate the focused item and close * - `Escape`: close and return focus to the trigger * * @remarks When the menu contains `[data-autocomplete-input]`, opening focuses * that field so the user can filter items immediately. * * @element rui-menu-button * @attr {boolean} open - Whether the menu starts open. Default: `false`. * @attr {('top'|'top-start'|'top-end'|'right'|'right-start'|'right-end'|'bottom'|'bottom-start'|'bottom-end'|'left'|'left-start'|'left-end')} placement - Placement of the menu surface relative to its trigger. Default: `bottom-start`. * Compose with `RuiMenuButtonTrigger`, `RuiMenuButtonContent`, and * `RuiMenuButtonItem`. The `trigger` / `items` API supplies that composition. * @fires rui-change - Emitted when a menu item is activated; `detail.value` is the item's `data-value` or text. * @fires rui-close - Emitted when the menu closes. * @cssclass rui-menu-button - Root wrapper around trigger and menu. * @cssclass rui-menu-button__trigger - Menu button trigger (`rui-button--primary`). * @cssclass rui-menu-button__chevron - Chevron indicator. * @cssclass rui-menu-button__menu - Popup menu surface (`role="menu"`). */ export declare class RuiMenuButton extends RadiantElement { open: boolean; placement: RuiPlacement; triggerTarget: HTMLButtonElement; menuTarget: HTMLElement; changeEvent: EventEmitter; closeEvent: EventEmitter; private menuId; private popoverController; private pendingFocus; protected onConnected(): void; disconnectedCallback(): void; private getItems; private getSearchInput; private ensurePopoverController; syncOpenState(): void; private setOpen; onDocumentPointerDown(event: PointerEvent): void; onTriggerClick(): void; onTriggerKeydown(event: KeyboardEvent): void; onMenuKeydown(event: KeyboardEvent): void; onItemClick(event: Event): void; private activateItem; }