import { HTMLAttributes, ReactNode } from 'react';
/** Menu behavior mode, controlling item roles and selection semantics. */
export type MenuBehavior = 'Single select' | 'Multi select' | 'Action items';
/** The ARIA role for the menu container. */
export type MenuRole = 'menu' | 'listbox';
/** A single menu item. */
export interface MenuItem {
    /** Unique identifier for the item. */
    id: string;
    /** Display text for the item. */
    text: string;
    /** Optional icon rendered before the text. Pass an SVG or any ReactNode. */
    icon?: ReactNode;
    /** Whether the item is currently selected. */
    selected?: boolean;
    /** Whether the item is disabled. */
    disabled?: boolean;
    /** Whether the item has forced focus styling. */
    focused?: boolean;
    /** Accessible label for the icon. When provided, icon gets `role="img"` + `aria-label`. */
    iconA11yLabel?: string;
}
export interface MenuProps extends Omit<HTMLAttributes<HTMLUListElement>, 'role' | 'children'> {
    /** Menu behavior mode. Controls how items are rendered and their ARIA roles. */
    behavior: MenuBehavior;
    /** The items to render in the menu. */
    items: MenuItem[];
    /** ARIA role for the menu container. */
    role: MenuRole;
    /** ID of the element that labels this menu, mapped to `aria-labelledby`. */
    a11yLabelledBy?: string;
    /** Enable inverse (dark background) styling via `data-inverse`. */
    inverse?: boolean;
}
//# sourceMappingURL=Menu.types.d.ts.map