import { LitElement, type PropertyValues } from 'lit'; import type { SelectOption } from '../../types/index.js'; /** * @tag loquix-dropdown-select * @summary A rich dropdown select with search, groups, descriptions, icons, and keyboard nav. * * @csspart trigger - The trigger button. * @csspart panel - The dropdown panel. * @csspart search - The search input wrapper. * @csspart option - An option item. * @csspart footer - The footer slot area. * * @slot footer - Custom content at the bottom of the dropdown (e.g. "Create new branch"). * @slot trigger-icon - Custom icon for the trigger button (replaces the selected option icon). * * @fires loquix-select-change - When a value is selected. * * @cssprop [--loquix-dropdown-trigger-padding] - Trigger padding. * @cssprop [--loquix-dropdown-trigger-radius] - Trigger border radius. * @cssprop [--loquix-dropdown-trigger-bg] - Trigger background. * @cssprop [--loquix-dropdown-trigger-color] - Trigger text color. * @cssprop [--loquix-dropdown-panel-bg] - Panel background. * @cssprop [--loquix-dropdown-panel-radius] - Panel border radius. * @cssprop [--loquix-dropdown-panel-border-color] - Panel border color. * @cssprop [--loquix-dropdown-min-width] - Minimum panel width. * @cssprop [--loquix-dropdown-max-height] - Max options list height. * @cssprop [--loquix-dropdown-option-color] - Option text color. * @cssprop [--loquix-dropdown-option-label-color] - Option label color. * @cssprop [--loquix-dropdown-option-desc-color] - Option description color. */ export declare class LoquixDropdownSelect extends LitElement { static styles: import("lit").CSSResult[]; private _localize; /** Array of options to display. */ options: SelectOption[]; /** Currently selected value. */ value: string; /** Placeholder when no value selected. */ placeholder?: string; /** Whether to show a search input. */ searchable: boolean; /** Search placeholder text. */ searchPlaceholder?: string; /** Whether the dropdown is disabled. */ disabled: boolean; /** Preferred panel placement. Floating UI will auto-flip if not enough space. */ placement: 'top' | 'bottom'; /** Hide the chevron arrow on the trigger button. */ noChevron: boolean; /** Whether the panel is open. */ open: boolean; private _searchQuery; private _focusedIndex; private _hoveredHint; private _activeSubmenu; private _submenuTimeout; private _searchInput?; private _triggerEl?; private _panelEl?; private _listenersAttached; connectedCallback(): void; disconnectedCallback(): void; protected updated(changed: PropertyValues): void; private _addDocumentListeners; private _removeDocumentListeners; private get _selectedOption(); /** Recursively find an option by value, searching through children. */ private _findOption; private get _filteredOptions(); /** Group options by their `group` property, preserving insertion order. */ private get _groupedOptions(); /** Flat list of selectable (non-separator, non-disabled) options for keyboard nav. */ private get _selectableOptions(); toggle(): void; show(): void; hide(): void; private _handleOutsideClick; private _handleKeydown; private _handleSearchInput; private _selectOption; private _selectSubmenuOption; private _handleOptionHover; private _handleOptionLeave; private _handleSubmenuEnter; private _handleSubmenuLeave; private _scheduleSubmenuClose; private _clearSubmenuTimeout; private _hasChildren; /** Position the panel using Floating UI with flip + shift + offset. */ private _positionPanel; /** Position a submenu panel relative to its parent option button. */ private _positionSubmenu; private _chevronSvg; private _checkSvg; private _searchSvg; private _externalSvg; private _arrowSvg; private _renderOption; protected render(): import("lit").TemplateResult<1>; } //# sourceMappingURL=loquix-dropdown-select.d.ts.map