import { type EventEmitter } from '../../stencil-public-runtime'; import type { TabAlignItems, TabColorMode, TabDensity } from './tab.types'; /** * O `br-tab` organiza diferentes visões ou painéis de conteúdo na mesma página através de abas navegáveis. * * Declare os itens usando `br-tab-item` no slot padrão. O componente gera automaticamente os botões da barra de navegação e controla a exibição do painel correspondente. * * ```html * * *

Conteúdo da primeira aba.

*
* *

Conteúdo da segunda aba.

*
*
* ``` * * ### Quando usar * * - Alternar entre conjuntos equivalentes de informação sem sair da página e sem ordem fixa de leitura. * * ### Quando evitar * * - Processos com etapas sequenciais que dependem de preenchimento prévio: use `br-wizard` ou `br-step`. * - Links para páginas ou rotas distintas: use `br-link` ou `br-header`. * * Consulte as [diretrizes de design do GovBR](https://www.gov.br/ds/components/tab?tab=designer). * * @category Navegação, Seleção, Conteúdo * @status stable * @slot default - Slot para inserir os itens das abas (br-tab-item) * @slot icon-{id} - Ícone da aba cujo `br-tab-item` tem o `id` informado (ex.: ``). Forma preferida para ícones por classe CSS, como Font Awesome: o elemento fica em light DOM e recebe os estilos globais da página. Tem precedência sobre a prop `icon` do 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). * * Valores inválidos usam `medium`. */ density: TabDensity; /** * Define se o Tab usará um esquema de cores escuro. Valores inválidos são ignorados. */ 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. Quando informado, tem precedência sobre `alignItemsTab`; valores inválidos usam `start`. */ 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; }>; /** Limpa tarefas pendentes quando o componente é removido do DOM. */ 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 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 hasSlottedIcon; /** * Ícone da aba: o slot `icon-{id}` tem precedência; a prop `icon` do item é o fallback e * aceita identificadores Iconify. Classes CSS na prop não funcionam no Shadow DOM e são ignoradas. */ private renderTabIcon; private handleIconSlotChange; /** * Retorna o alinhamento em formato flexbox */ private getAlignItemsStyle; private get effectiveColorMode(); private get effectiveAlignment(); /** * 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. * @returns A altura resolvida ou undefined se o valor for inválido */ private getResolvedHeight; /** * Renderiza o componente. * @returns JSX.Element */ render(): any; }