import { type EventEmitter } from '../../stencil-public-runtime';
import type { SelectChangeEventDetail, SelectDropdownDirection, SelectState, SelectTheme, SelectToggleEventDetail } from './types';
/**
* @component diwa-select
*
* A fully accessible single-select dropdown with built-in text filter,
* keyboard navigation, and form integration.
*
* Based on the Diwa select API contract.
*
* Usage:
*
* Please select…
* Apple
* Banana
*
*
* @slot default — diwa-select-option elements
* @slot label — Custom label content (overrides the label prop)
* @slot description — Custom description content
* @slot message — Custom message content
*/
export declare class DiwaSelect {
host: HTMLElement;
/** Theme — cascades down to child options. */
theme: SelectTheme;
/** 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 value. Mutable — updated on user interaction. */
value?: string;
/** Validation state. */
state: SelectState;
/** 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: SelectDropdownDirection;
/** 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 hasFilterResults;
private dropdownClass;
private internalId;
private triggerEl;
private filterInputEl?;
private options;
private highlightedIndex;
private childObserver?;
onThemeChange(): void;
onCompactChange(): void;
onValueChange(): void;
onIsOpenChange(open: boolean): void;
connectedCallback(): void;
disconnectedCallback(): void;
componentDidLoad(): void;
/** Programmatically opens the dropdown. */
open(): Promise;
/** Programmatically closes the dropdown. */
close(): Promise;
onOptionUpdate(e: CustomEvent<{
value: string | undefined;
}>): void;
onSlotChange(): void;
private collectOptions;
/** Shared handler for child mutations and slotchange — re-collects options and syncs state. */
private handleChildrenChanged;
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 get selectedLabel();
render(): any;
}
//# sourceMappingURL=diwa-select.d.ts.map