import "./menu_button.css"; import type * as React from "react"; import { useRender } from "@base-ui/react/use-render"; import { IconName } from "./icon"; import { type CurrentToken } from "./aria_current"; import { type StyleProps } from "./style_props"; import { type UseTooltipOptions } from "./tooltip"; export interface MenuButtonProps extends StyleProps { ref?: React.Ref; icon?: IconName | React.ReactNode; title?: string | React.ReactNode; /** A supporting line under the title, one line at the line's size. */ description?: React.ReactNode; right?: React.ReactNode; onPress?: () => void; onHoverIn?: () => void; /** The listbox selection highlight; `aria-selected` is valid only on option/tab/row/gridcell, so * elsewhere it is visual only (a menu shows state in `right`). */ selected?: boolean; /** The current item among navigation items, via global `aria-current` (`true`, or the set's name). * Navigation is not selection: a rail item is `current`, a listbox row `selected`. */ current?: CurrentToken; focused?: boolean; disabled?: boolean; danger?: boolean; tooltip?: string | UseTooltipOptions; testID?: string; /** For combobox `aria-activedescendant`. */ id?: string; /** When `title` is a node, or the name must differ from it. */ accessibilityLabel?: string; /** Defaults to `menuitem` when pressable; `link` where the press opens another page. */ role?: "menuitem" | "button" | "option" | "link"; /** Roving tabindex for a listbox: the selected row `0`, others `-1`, so Tab reaches the list once. * `OptionList` drives keys from a hidden input and needs none. */ tabIndex?: 0 | -1; /** Pairs with {@link MenuButtonProps.tabIndex} to move roving focus. */ onKeyDown?: (event: React.KeyboardEvent) => void; render?: useRender.RenderProp; } /** The menu row — one line at the band's height; a wrapped title or a `description` grows it by its air; * optional glyph and trailing slot — for popover menus, outline rails and plain listbox options; a list's * row is `ListItem`. */ export declare function MenuButton(props: MenuButtonProps): React.JSX.Element;