export type BrSelectOptionElement = HTMLElement & { disabled?: boolean; label?: string; value?: string; selected?: boolean; }; export type SelectOptionItem = { disabled?: boolean; label: string; value: string; selected?: boolean; sourceElement?: BrSelectOptionElement; }; export type SelectOptionData = { /** Conteúdo projetado da opção, preservado para a janela virtualizada. */ content?: string; disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }; export type SelectOptionStateChange = { disabled?: boolean; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }; export type SelectStateChangeDetail = { isOpen: boolean; option?: SelectOptionData; options?: SelectOptionData[]; }; export type SelectValidator = (value: string | string[]) => string | null | Promise; export type SelectSearchMode = 'local' | 'remote'; export type SelectSearchDetail = { query: string; }; export type SelectListController = { focusOption?: (index: number) => Promise; scrollOptionToTop?: (index: number) => Promise; scrollFirstSelectedOptionToTop?: () => Promise; setSearchTerm?: (term: string) => Promise; setOptionSelected?: (index: number, selected: boolean) => Promise; options?: SelectOptionData[]; }; export type EventWithLegacyPath = Event & { path?: EventTarget[]; };