import { HTMLAttributes, ReactNode } from 'react';
/** The behavior of the menu: single-select, multi-select, or action items. */
export type MenuBehavior = 'Single select' | 'Multi select' | 'Action items';
/** The variant determines which trigger element is rendered. */
export type MenuDropdownVariant = 'selecting' | 'texting' | 'searching';
/** Represents one item in the dropdown menu. */
export interface MenuItem {
    /** Unique identifier for the item. */
    id: string;
    /** Display text for the item. */
    text: string;
    /** Optional icon rendered before the text (only for non-multi-select). */
    icon?: ReactNode;
    /** Whether this item is currently selected. */
    selected?: boolean;
    /** Whether this item is disabled. */
    disabled?: boolean;
    /** Force focus state for demos/snapshots. */
    focused?: boolean;
    /** Accessible label for the icon. */
    iconA11yLabel?: string;
}
export interface MenuDropdownProps extends Omit<HTMLAttributes<HTMLDivElement>, 'id' | 'children'> {
    /** Required unique identifier. Used to derive IDs for label, menu, and ARIA attributes. */
    id: string;
    /** Required label text for the dropdown. */
    label: string;
    /** Required variant that controls the trigger element type. */
    variant: MenuDropdownVariant;
    /** Required array of menu items. */
    menuItems: MenuItem[];
    /** Required menu behavior: 'Single select', 'Multi select', or 'Action items'. */
    menuBehavior: MenuBehavior;
    /** Whether the dropdown menu is expanded. */
    expanded?: boolean;
    /** Whether the dropdown is disabled. */
    disabled?: boolean;
    /** Current text value (used for texting/searching variants and complete state). */
    value?: string;
    /** Error message to display below the field. */
    errorMessage?: string;
    /** Supporting text displayed below the field. */
    supportingText?: string;
    /** Enable inverse (dark background) styling via data-inverse. */
    inverse?: boolean;
    /** Whether the field track is active (focused). */
    active?: boolean;
    /** Force hover state for demos/snapshots. */
    hover?: boolean;
    /** Force focus state for demos/snapshots. */
    focused?: boolean;
    /** Force pressed state for demos/snapshots. */
    pressed?: boolean;
    /** Callback when the input value changes (texting/searching variants). */
    onValueChange?: (value: string) => void;
    /** Callback when a menu item is selected. */
    onItemSelect?: (item: MenuItem) => void;
    /** Callback when the clear button is clicked (searching variant). */
    onClear?: () => void;
}
//# sourceMappingURL=MenuDropdown.types.d.ts.map