/**
 * A menu that appears on trigger click with actions and options. Use for
 * context menus, action lists, or any menu triggered by a button.
 * @category Overlays
 * @useCases action menu, context menu, options list, user menu, settings menu
 * @keywords dropdown, menu, actions, options, context, popover, list
 * @related UiPopover, UiSelect
 */
export interface UiDropdownMenuProps {
    /**
     * The controlled open state of the dropdown menu.
     * Must be used in conjunction with `update:open`.
     */
    open?: boolean;
    /**
     * The modality of the dropdown menu.
     * When set to `true`, interaction with outside elements will be disabled
     * and only menu content will be visible to screen readers.
     * @default true
     */
    modal?: boolean;
}
/**
 * Emits for the UiDropdownMenu component.
 */
export interface UiDropdownMenuEmits {
    /**
     * Event emitted when the open state changes.
     */
    'update:open': [value: boolean];
}
/**
 * Props for the UiDropdownMenuTrigger component.
 * The element that opens the menu when clicked.
 */
export interface UiDropdownMenuTriggerProps {
    /**
     * Accessible label for the trigger button.
     * **REQUIRED** when trigger contains only icons or images (no visible text).
     * Applied as `aria-label` attribute.
     */
    ariaLabel?: string;
    /**
     * Whether the trigger is disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * Render as child element (merges props into slotted element instead of wrapping).
     * Set to `true` when using custom button components like `UiButton`.
     * @default false
     */
    asChild?: boolean;
}
/**
 * Props for the UiDropdownMenuContent component.
 * The floating container for menu items.
 */
export interface UiDropdownMenuContentProps {
    /**
     * The preferred side of the trigger to render against when open.
     * @default 'bottom'
     */
    side?: 'top' | 'right' | 'bottom' | 'left';
    /**
     * The distance in pixels from the trigger.
     * @default 4
     */
    sideOffset?: number;
    /**
     * The preferred alignment against the trigger.
     * @default 'start'
     */
    align?: 'start' | 'center' | 'end';
}
/**
 * Emits for the UiDropdownMenuContent component.
 */
export interface UiDropdownMenuContentEmits {
    /**
     * Event emitted when the escape key is pressed.
     * Can be used to prevent closing or add custom behavior.
     */
    (e: 'escapeKeyDown', event: KeyboardEvent): void;
}
/**
 * Props for the UiDropdownMenuItem component.
 * A clickable menu item that triggers an action.
 */
export interface UiDropdownMenuItemProps {
    /**
     * Visual variant of the menu item.
     * @default 'default'
     */
    variant?: 'default' | 'destructive';
    /**
     * Whether the item is disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * Whether to add extra left padding (for items under a label).
     * @default false
     */
    inset?: boolean;
    /**
     * Optional text used for typeahead purposes.
     * Useful when the item contains icons or complex content.
     */
    textValue?: string;
}
/**
 * Props for the UiDropdownMenuLabel component.
 * A non-interactive label for grouping menu items.
 */
export interface UiDropdownMenuLabelProps {
    /**
     * Whether to add extra left padding (for items under a label).
     * @default false
     */
    inset?: boolean;
}
/**
 * Props for the UiDropdownMenuCheckboxItem component.
 * A menu item with a checkbox for toggling options.
 */
export interface UiDropdownMenuCheckboxItemProps {
    /**
     * The controlled checked state of the checkbox item.
     * Use with v-model:checked
     */
    checked?: boolean;
    /**
     * Whether the checkbox item is disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * Optional text used for typeahead purposes.
     */
    textValue?: string;
}
/**
 * Emits for the UiDropdownMenuCheckboxItem component.
 */
export interface UiDropdownMenuCheckboxItemEmits {
    /** Emitted when the checked state changes. */
    'update:checked': [value: boolean];
}
/**
 * Props for the UiDropdownMenuRadioGroup component.
 * Container for a group of mutually exclusive radio items.
 */
export interface UiDropdownMenuRadioGroupProps {
    /**
     * The value of the selected radio item.
     * Use with v-model
     */
    modelValue?: string;
}
/**
 * Emits for the UiDropdownMenuRadioGroup component.
 */
export interface UiDropdownMenuRadioGroupEmits {
    /** Emitted when the selected radio item changes. */
    'update:modelValue': [value: string];
}
/**
 * Props for the UiDropdownMenuRadioItem component.
 * A radio option within a radio group.
 */
export interface UiDropdownMenuRadioItemProps {
    /**
     * The unique value of the radio item.
     */
    value: string;
    /**
     * Whether the radio item is disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * Optional text used for typeahead purposes.
     */
    textValue?: string;
}
/**
 * Props for the UiDropdownMenuSub component.
 * A submenu container for nested menu items.
 */
export interface UiDropdownMenuSubProps {
    /**
     * The controlled open state of the submenu.
     */
    open?: boolean;
    /**
     * The open state of the submenu when it is initially rendered.
     */
    defaultOpen?: boolean;
}
/**
 * Emits for the UiDropdownMenuSub component.
 */
export interface UiDropdownMenuSubEmits {
    /** Emitted when the submenu open state changes. */
    'update:open': [value: boolean];
}
/**
 * Props for the UiDropdownMenuSubTrigger component.
 * The element that opens a submenu when hovered or focused.
 */
export interface UiDropdownMenuSubTriggerProps {
    /**
     * Whether the sub trigger is disabled.
     * @default false
     */
    disabled?: boolean;
    /**
     * Whether to add extra left padding.
     * @default false
     */
    inset?: boolean;
    /**
     * Optional text used for typeahead purposes.
     */
    textValue?: string;
}
/**
 * Props for the UiDropdownMenuSubContent component.
 * The floating container for submenu items.
 */
export interface UiDropdownMenuSubContentProps {
    /**
     * The distance in pixels from the trigger.
     * @default 0
     */
    sideOffset?: number;
}
/**
 * Emits for the UiDropdownMenuSubContent component.
 */
export interface UiDropdownMenuSubContentEmits {
    /**
     * Event emitted when the escape key is pressed.
     * Can be used to prevent closing or add custom behavior.
     */
    (e: 'escapeKeyDown', event: KeyboardEvent): void;
}
