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;
}