import { LitElement } from 'lit';
import type { TooltipMixinInterface } from '../../util/TooltipMixin.js';
import '../icon/Icon.js';
type Placement = 'bottom-start' | 'bottom-end' | 'top-start' | 'top-end';
type Size = 'sm' | 'md' | 'lg';
type Variant = 'primary' | 'secondary' | 'tertiary' | 'primary-clear' | 'secondary-clear' | 'tertiary-clear';
export interface DropdownProps extends Partial<TooltipMixinInterface> {
    label?: string;
    open?: boolean;
    placement?: Placement;
    size?: Size;
    disabled?: boolean;
    variant?: Variant;
    symbol?: string;
    iconPosition?: 'leading' | 'trailing';
    iconOnly?: boolean;
    stayOpenOnSelect?: boolean;
    noChevron?: boolean;
}
declare const Dropdown_base: (new (...args: any[]) => TooltipMixinInterface) & (new (...args: any[]) => import("../../util/EventEmitterMixin.js").EventEmitterMixinInterface) & (new (...args: any[]) => import("../../util/ReadyMixin.js").ReadyMixinInterface) & typeof LitElement;
/**
 * A dropdown component that renders a trigger button and manages a floating panel
 * containing a `btu-dropdown-menu`.
 *
 * Uses the native Popover API and CSS anchor positioning for panel management.
 * The trigger button is built with existing `btu-button-*` classes.
 *
 * **Trigger button styling:** Set `--button-*` CSS custom properties on `<btu-dropdown>`
 * or a parent element to customize the trigger via CSS inheritance (e.g.,
 * `--button-border-radius`, `--button-color-background`). See
 * `tailwind-plugin-button.ts` for available props.
 *
 * @element btu-dropdown
 *
 * @fires {CustomEvent} btu-dropdown-ready - Fired after first render and initialization
 * @fires {CustomEvent} btu-dropdown-show - Fired when the dropdown panel opens
 * @fires {CustomEvent} btu-dropdown-hide - Fired when the dropdown panel closes
 * @fires {CustomEvent<{label: string, value: string, selected: boolean}>} btu-dropdown-item-select - Fired when a menu item is activated (bubbles from btu-dropdown-item)
 * @fires {CustomEvent<{label: string, favorited: boolean}>} btu-dropdown-item-favorite - Fired when a menu item's favorite is toggled (bubbles from btu-dropdown-item)
 *
 * @slot - A `btu-dropdown-menu` element containing `btu-dropdown-item` children
 *
 * @example
 * ```html
 * <btu-dropdown label="Actions" variant="secondary">
 *   <btu-dropdown-menu>
 *     <btu-dropdown-item label="Edit"></btu-dropdown-item>
 *     <btu-dropdown-item label="Duplicate"></btu-dropdown-item>
 *     <btu-dropdown-item label="Delete" disabled></btu-dropdown-item>
 *   </btu-dropdown-menu>
 * </btu-dropdown>
 * ```
 *
 * @cssprop --dropdown-panel-background - Panel background color (default: white)
 * @cssprop --dropdown-panel-border-color - Panel border color (default: gray-200)
 * @cssprop --dropdown-panel-border-radius - Panel border radius (default: borderRadius.lg)
 * @cssprop --dropdown-panel-min-width - Panel minimum width (default: max(12rem, anchor-size(width)))
 * @cssprop --dropdown-item-background - Item background color (default: transparent)
 * @cssprop --dropdown-item-color - Item text color (default: gray-700)
 * @cssprop --dropdown-item-hover-background - Item hover background (default: gray-100)
 * @cssprop --dropdown-item-hover-color - Item hover text color (default: gray-900)
 * @cssprop --dropdown-item-selected-background - Selected item background (default: primary-50)
 * @cssprop --dropdown-item-selected-color - Selected item text color (default: primary-700)
 * @cssprop --dropdown-item-font-size - Item font size (default: fontSize.sm)
 * @cssprop --dropdown-divider-color - Divider line color (default: gray-200)
 * @cssprop --dropdown-empty-color - Empty state text color (default: gray-400)
 */
export default class Dropdown extends Dropdown_base {
    /**
     * Trigger button text.
     * @attr
     */
    label: string;
    /**
     * Panel visibility state. Can be set programmatically (e.g., for tour UIs)
     * — syncs to `showPopover()`/`hidePopover()` in `updated()`.
     * @attr
     */
    open: boolean;
    /**
     * Panel placement: 'bottom-start', 'bottom-end', 'top-start', 'top-end'.
     * @attr
     */
    placement: Placement;
    /**
     * Button size: 'sm', 'md', 'lg'.
     * @attr
     */
    size: Size;
    /**
     * Prevents opening.
     * @attr
     */
    disabled: boolean;
    /**
     * Button variant: 'primary', 'secondary', 'tertiary', 'primary-clear', 'secondary-clear', 'tertiary-clear'.
     * @attr
     */
    variant: Variant;
    /**
     * Lucide icon symbol for the trigger.
     * @attr
     */
    symbol: string;
    /**
     * Icon position: 'leading' or 'trailing'.
     * @attr icon-position
     */
    iconPosition: 'leading' | 'trailing';
    /**
     * Hides label, shows icon only.
     * @attr icon-only
     */
    iconOnly: boolean;
    /**
     * Keeps panel open on item click.
     * @attr stay-open-on-select
     */
    stayOpenOnSelect: boolean;
    /**
     * Hides the chevron icon on the trigger button.
     * @attr no-chevron
     */
    noChevron: boolean;
    /** @internal */
    private _triggerAnchorName;
    /** @internal */
    private _panelId;
    /** @internal */
    private _panel;
    /** @internal */
    private _menu;
    /** @internal */
    private _triggerEl;
    /** @internal */
    private _panelVisible;
    /** @internal */
    private _boundToggle;
    /** @internal */
    private _boundItemSelect;
    /** @internal */
    private _boundKeydown;
    /** @internal */
    private _boundPanelKeydown;
    /** @internal */
    private _boundFocusin;
    createRenderRoot(): this;
    connectedCallback(): void;
    firstUpdated(): void;
    disconnectedCallback(): void;
    updated(changedProperties: Map<string, unknown>): void;
    /** Build the button class string based on variant and size */
    private _getButtonClasses;
    /** @internal */
    private _handlePanelToggle;
    /** @internal */
    private _handleItemSelect;
    /** @internal */
    private _handleTriggerKeydown;
    /** @internal */
    private _handlePanelKeydown;
    /** Show the dropdown panel */
    private _showPanel;
    /** Hide the dropdown panel */
    private _hidePanel;
    render(): import("lit-html").TemplateResult<1>;
}
declare global {
    interface HTMLElementTagNameMap {
        'btu-dropdown': Dropdown;
    }
}
export {};
//# sourceMappingURL=Dropdown.d.ts.map