import { HTMLAttributes } from 'react';
export interface DropdownOption<V extends string = string> {
    /** The value submitted / returned on selection. */
    value: V;
    /** Display label shown in the list and trigger. */
    label: string;
    /** Optional descriptive text shown below the label. */
    description?: string;
    /** Whether the option is selectable. */
    disabled?: boolean;
}
export interface DropdownProps<V extends string = string> extends Omit<HTMLAttributes<HTMLDivElement>, "onChange"> {
    /** The list of selectable options. */
    options: DropdownOption<V>[];
    /** The currently selected value. */
    value?: V;
    /** Called when the user selects an option. */
    onChange?: (value: V) => void;
    /** Placeholder shown when no option is selected. */
    placeholder?: string;
    /** Accessible label for the control (used as `aria-label`). */
    "aria-label"?: string;
    /** Disables the entire control. */
    disabled?: boolean;
}
/**
 * Expandable option list following the Adwaita combo-row / drop-down pattern.
 *
 * - Fully keyboard-navigable: Space/Enter opens; ↑/↓ navigate; Enter selects; Escape closes.
 * - Uses `role="combobox"` + `role="listbox"` + `role="option"` ARIA pattern.
 * - Closes when clicking outside or pressing Escape.
 * - The list flips above the trigger when there is not enough space below.
 *
 * @see https://developer.gnome.org/hig/patterns/controls/drop-down-lists.html
 */
export declare function Dropdown<V extends string = string>({ options, value, onChange, placeholder, disabled, className, ...props }: DropdownProps<V>): import("react/jsx-runtime").JSX.Element;
