import { type EventEmitter } from '../../stencil-public-runtime'; import type { TabAlignItems, TabColorMode, TabDensity } from './tab.types'; /** * Para a documentação completa, incluindo diretrizes de uso, acessibilidade e exemplos visuais, consulte o [Design System do GovBR](https://www.gov.br/ds/components/tab?tab=designer). * * @category Navegação * @status stable * @slot default - Slot para inserir os itens das abas (br-tab-item) * * @part container - Contêiner principal que envolve toda a estrutura do componente (navegação e conteúdo). Expõe o elemento para customizações de fundo, bordas e espaçamentos globais. * @part nav - Área de navegação (`tablist`) onde os botões das abas estão localizados. Permite customizar o alinhamento, espaçamento e plano de fundo da barra de abas. * @part button - Botão individual de cada aba. * @part indicator - Indicador visual da aba ativa. * @part content - Área de conteúdo das abas. */ export declare class Tab { /** * Referência ao elemento host do componente. */ el: HTMLBrTabElement; /** * ID do tab atualmente ativo */ activeTabId: string; /** * Lista dos tab items registrados */ private tabItems; /** * Identificador único do componente. * Quando omitido, um valor é gerado automaticamente. * * > **Padrão:** valor único gerado por generateUniqueId(). * */ customId: string; /** * Define a densidade visual do componente. * * - `small`: Alta densidade (componente menor, mais compacto e com menos espaçamento). * - `medium`: Densidade intermediária, padrão recomendado para a maioria dos casos. * - `large`: Baixa densidade (componente maior, mais espaçamento e altura). * */ density: TabDensity; /** * Define se o Tab usará um esquema de cores escuro. */ colorMode?: TabColorMode; /** * Label de acessibilidade para a navegação das tabs */ label: string; /** * Define o alinhamento horizontal dos itens da tab na barra de navegação. * @deprecated Use `alignment`. */ alignItemsTab: TabAlignItems; /** Alinhamento horizontal canônico. Quando informado, tem precedência sobre `alignItemsTab`. */ alignment?: TabAlignItems; /** * Desabilita o scroll automático da área de conteúdo. * Por padrão, o scroll vertical fica apenas na região de conteúdo. * @deprecated Use `scrollable`. */ scrollDisabled: boolean; /** Controla o scroll interno. Quando informado, tem precedência sobre `scrollDisabled`. */ scrollable?: boolean; /** * Define a altura máxima da área de conteúdo, ativando o scroll interno quando o conteúdo ultrapassa essa altura. */ height?: string; /** * Observa mudanças no tab ativo para atualizar os estados */ activeTabChanged(newId: string): void; /** * Observa mudanças no color mode para propagar aos filhos */ colorModeChanged(newValue: string): void; /** * Evento disparado quando um tab é ativado. */ brTabChange: EventEmitter<{ tabId: string; tabIndex: number; }>; /** * Ciclo de vida. Executado quando o componente é removido do DOM. * Desconecta o MutationObserver para evitar vazamentos de memória. */ disconnectedCallback(): void; /** * Ciclo de vida. Executado antes do componente ser carregado no DOM. * Garante que os tab items sejam registrados mesmo que o evento slotchange não seja disparado. */ componentWillLoad(): void; componentDidLoad(): void; /** * Escuta evento de mudança de propriedades dos tab-items filhos. * Este listener garante que o componente pai seja re-renderizado quando * propriedades mudam dinamicamente, sincronizando o painel ativo. */ handleTabItemPropsChange(): void; /** * Ativa programaticamente uma aba a partir do seu identificador. * @param tabId Identificador da aba (`tab-item-id`). */ setActiveTab(tabId: string): Promise; /** * Retorna o identificador da aba ativa atual. */ getActiveTab(): Promise; private static FOCUSABLE_SELECTOR; /** * Flag para controlar se o activeTabId já foi inicializado */ private activeTabInitialized; private syncingTabStates; private lastTabItemsSignature; /** * Referência ao elemento de slot para monitorar mudanças nos tab items filhos. */ private slotElement; /** * Observador de mutação para detectar mudanças nos tab items filhos */ private mutationObserver; private tabSyncFrame; /** * Registra os tab items filhos e garante que cada um tenha um ID único. * Também propaga o color mode para os tab items. * @returns void */ private registerTabItems; /** * Atualiza o estado ativo de todos os tab items * Comunicação direta similar ao Vue */ private updateTabStates; /** * Manipula o clique em um botão de tab */ private handleTabClick; /** * Manipula a navegação por teclado nos botões de tab para melhorar a acessibilidade */ private handleTabButtonClick; /** * Manipula o evento de pressionamento de tecla nos botões de tab para melhorar a acessibilidade * @param event Evento de teclado */ private handleTabButtonKeyDown; /** * Manipula navegação por teclado (acessibilidade) */ private handleKeyNavigation; private focusActivePanelContent; /** * Retorna o mapeamento de classes CSS do componente */ private getCssClassMap; /** * Retorna o mapeamento de classes CSS para cada item de navegação */ private getTabItemCssClassMap; private renderTabIcon; /** * Retorna o alinhamento em formato flexbox */ private getAlignItemsStyle; /** * Verifica se o valor fornecido é uma altura válida para o componente, aceitando unidades CSS modernas e a palavra-chave 'auto'. * @param value Valor a ser verificado * @returns true se o valor for uma altura válida, caso contrário false */ private isValidHeight; /** * Retorna a altura resolvida do componente, considerando valores válidos e emitindo um aviso para valores inválidos. * @returns A altura resolvida ou undefined se o valor for inválido */ private getResolvedHeight; /** * Renderiza o componente. * @returns JSX.Element */ render(): any; }