/** * Seletores CSS para elementos que podem receber foco dentro do scrim. */ export declare const FOCUSABLE_SELECTORS: string; /** * Filtra elementos que são visíveis no DOM (com dimensões maiores que zero e CSS visibility visível). * @param elements Lista de elementos a serem filtrados * @returns Lista de elementos visíveis */ export declare function filterVisibleElements(elements: HTMLElement[]): HTMLElement[]; /** * Verifica se o foco deve ser "preso" dentro do scrim para manter a acessibilidade. * @param isTabForward Indica se a navegação é para frente (Tab) ou para trás (Shift+Tab) * @param firstElement Primeiro elemento focável dentro do scrim * @param lastElement Último elemento focável dentro do scrim * @param event Evento de teclado (opcional) para detectar o elemento ativo via composedPath * @returns true se o foco deve ser capturado (wrap) */ export declare function shouldTrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement, event?: KeyboardEvent): boolean; /** * Move o foco para o primeiro ou último elemento focável, dependendo da direção da navegação. * @param isTabForward Indica se a navegação é para frente (Tab) ou para trás (Shift+Tab) * @param firstElement Primeiro elemento focável dentro do scrim * @param lastElement Último elemento focável dentro do scrim */ export declare function wrapFocus(isTabForward: boolean, firstElement: HTMLElement, lastElement: HTMLElement): void; /** * Coleta todos os elementos focáveis dentro do slot padrão de um container. * @param contentRef Referência ao container que contém o slot padrão * @param selectors Seletores CSS para elementos focáveis (usar FOCUSABLE_SELECTORS) * @returns Lista de elementos focáveis visíveis */ export declare function getFocusableElements(contentRef: HTMLElement | null | undefined, selectors: string): HTMLElement[]; /** * Verifica se um elemento está dentro de um componente host, incluindo shadow roots aninhados. * @param hostElement Elemento host do componente * @param element Elemento a verificar * @returns true se o elemento está dentro do componente host */ export declare function isElementInsideHost(hostElement: HTMLElement, element: HTMLElement): boolean; /** * Resolve o elemento alvo do spotlight via seletor CSS. * @param selector Seletor CSS do elemento alvo * @returns Elemento encontrado ou null */ export declare function resolveSpotlightTarget(selector: string | null): Element | null; /** * Calcula as coordenadas do retângulo do spotlight relativas ao viewport ou ao elemento pai. * @param targetElement Elemento alvo do spotlight * @param displayMode Modo de exibição atual ('parent' ou 'fullscreen') * @param parentElement Elemento pai do scrim (necessário para modo 'parent') * @returns DOMRect com as coordenadas calculadas ou null se o alvo for nulo */ export declare function computeSpotlightRect(targetElement: Element | null, displayMode: string, parentElement: HTMLElement | null): DOMRect | null;