import { type EventEmitter } from '../../stencil-public-runtime';
import type { MultiSelectChangeEventDetail, MultiSelectDropdownDirection, MultiSelectState, MultiSelectTheme, MultiSelectToggleEventDetail } from './types';
/**
* @component diwa-multi-select
*
* A fully accessible multi-select dropdown with built-in text filter,
* keyboard navigation, and form integration.
*
* Based on the Diwa multi-select API contract.
*
* Design token override API:
* --diwa-multi-select-height Trigger button height (default 40px)
* --diwa-multi-select-height-sm Trigger height when compact (default 32px)
*
* Usage:
*
* Apple
* Banana
*
*
* @slot default — diwa-multi-select-option elements
* @slot label — Custom label content (overrides the label prop)
* @slot description — Custom description content
* @slot message — Custom message content
* @slot selected — Custom selected-value display in the trigger button
* @slot filter — Custom filter input; disables the built-in filter
* @slot options-status — Loading / no-results / error content for async patterns
*/
export declare class DiwaMultiSelect {
host: HTMLElement;
/** Theme — cascades down to child options. */
theme: MultiSelectTheme;
/** Visible label text. */
label?: string;
/** Optional description shown below the label. */
description?: string;
/** HTML name attribute — identifies the field in form submissions. */
name: string;
/** Currently selected values. Mutable — updated on user interaction. */
value: string[];
/** Validation state. */
state: MultiSelectState;
/** Helper / validation message shown below the trigger. */
message?: string;
/** Hides the label visually while keeping it accessible. */
hideLabel: boolean;
/** Disables interaction. */
disabled: boolean;
/** Marks the field as required. */
required: boolean;
/** Compact variant — reduces the trigger height. */
compact: boolean;
/**
* Preferred direction for the dropdown panel.
* `'auto'` detects viewport space and flips upward if needed.
*/
dropdownDirection: MultiSelectDropdownDirection;
/** Emitted when the selection changes. */
change: EventEmitter;
/** Emitted when the dropdown opens or closes. */
toggle: EventEmitter;
/** Emitted when the component loses focus (dropdown closes via click-outside). */
blur: EventEmitter;
private isOpen;
private filterText;
private hasFilterResults;
private dropdownClass;
private internalId;
private triggerEl;
private filterInputEl?;
private options;
private highlightedIndex;
private hasCustomFilterSlot;
private hasCustomSelectedSlot;
onThemeChange(): void;
onCompactChange(): void;
onValueChange(): void;
onIsOpenChange(open: boolean): void;
connectedCallback(): void;
disconnectedCallback(): void;
componentWillLoad(): void;
componentDidLoad(): void;
/** Programmatically opens the dropdown. */
open(): Promise;
/** Programmatically closes the dropdown. */
close(): Promise;
onOptionUpdate(e: CustomEvent<{
value: string;
selected: boolean;
}>): void;
onSlotChange(): void;
private collectOptions;
private syncSelectionFromValue;
private syncChildThemes;
private syncChildCompact;
private getVisibleOptions;
private getFirstHighlightIndex;
private applyHighlight;
private clearHighlight;
private updateDropdownDirection;
private resetFilter;
private onClickOutside;
private onTriggerClick;
private onTriggerKeyDown;
private onFilterInput;
private onResetClick;
private get selectedLabels();
render(): any;
}
//# sourceMappingURL=diwa-multi-select.d.ts.map