export type BrSelectOptionElement = HTMLElement & { disabled?: boolean; group?: string; label?: string; value?: string; selected?: boolean; }; export type SelectOptionItem = { disabled?: boolean; group?: string; 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; /** Grupo visual e semântico ao qual a opção pertence. */ group?: string; indeterminate?: boolean; label?: string; selected?: boolean; value: string; }; export type SelectOptionStateChange = { disabled?: boolean; group?: string; 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 = { revealOption?: (index: number) => Promise; 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[]; }; export type SelectComboboxState = { options: SelectOptionData[]; activeIndex: number; expanded: boolean; multiple: boolean; label: string; loading: boolean; required: boolean; invalid: boolean; errorMessage: string; };