Skip to main content

Tab

Apresentação

O componente Tab é responsável por criar uma interface de abas para organizar e alternar entre diferentes seções de conteúdo. Ele permite uma navegação clara e intuitiva entre diferentes partes do conteúdo, mantendo a interface organizada e fácil de usar.

Quando usar

  • Para organizar conteúdo em seções
  • Para criar interfaces com múltiplas visualizações
  • Para implementar navegação por abas
  • Para separar conteúdo relacionado
  • Para criar painéis de configuração
  • Para implementar wizards ou assistentes

Forma básica de uso

import { Tab } from 'eitri-luminus';

// Tabs básicas
<Tab>
<Tab.Content label="Aba 1" name="tabs" defaultChecked>
Conteúdo da Aba 1
</Tab.Content>
<Tab.Content label="Aba 2" name="tabs">
Conteúdo da Aba 2
</Tab.Content>
<Tab.Content label="Aba 3" name="tabs">
Conteúdo da Aba 3
</Tab.Content>
</Tab>

// Tabs com classes personalizadas
<Tab className="tabs-boxed">
<Tab.Content
label="Configurações"
name="settings"
defaultChecked
tabClassName="tab-primary"
>
<div className="p-4">
Configurações do sistema
</div>
</Tab.Content>
<Tab.Content
label="Perfil"
name="settings"
tabClassName="tab-secondary"
>
<div className="p-4">
Informações do perfil
</div>
</Tab.Content>
</Tab>

// Tabs com IDs personalizados
<Tab>
<Tab.Content
label="Documentos"
name="docs"
tabId="docs-tab-1"
defaultChecked
>
Lista de documentos
</Tab.Content>
<Tab.Content
label="Histórico"
name="docs"
tabId="docs-tab-2"
>
Histórico de alterações
</Tab.Content>
</Tab>

Propriedades

Tab

PropriedadeTipoDescrição
classNamestringClasses CSS adicionais para o container
idstringIdentificador único do componente

Tab.Content

PropriedadeTipoDescrição
labelstringTexto exibido na aba
namestringNome do grupo de abas (deve ser o mesmo para abas relacionadas)
defaultCheckedbooleanDefine se a aba deve estar selecionada por padrão
tabIdstringID único para a aba
tabClassNamestringClasses CSS adicionais para a aba
classNamestringClasses CSS adicionais para o conteúdo
idstringIdentificador único do componente

Heranças

O componente Tab e seus subcomponentes herdam todas as propriedades comuns da biblioteca através da interface CommonProps, que inclui:

  • Propriedades de estilo (margin, padding, etc)
  • Propriedades de layout (flex, grid, etc)
  • Propriedades de posicionamento
  • Propriedades de acessibilidade
  • Propriedades de identificação (id, data-e)

Métodos via Ref

O componente Tab expõe métodos públicos que podem ser acessados através de uma ref:

import { useRef } from 'react';
import { Tab } from 'eitri-luminus';

function MyComponent() {
const tabRef = useRef<Tab>(null);

const handleNextTab = () => {
const currentIndex = tabRef.current?.getCurrentTabIndex() || 0;
const totalTabs = tabRef.current?.getTotalTabs() || 0;
if (currentIndex < totalTabs - 1) {
tabRef.current?.switchTab(currentIndex + 1);
}
};

return (
<>
<Tab ref={tabRef}>
<Tab.Content label="Aba 1" name="tabs" defaultChecked>
Conteúdo 1
</Tab.Content>
<Tab.Content label="Aba 2" name="tabs">
Conteúdo 2
</Tab.Content>
</Tab>
<button onClick={handleNextTab}>Próxima Aba</button>
</>
);
}

Métodos Disponíveis

MétodoTipoDescrição
switchTab(index: number)voidAlterna para a aba no índice especificado
getCurrentTabIndex()numberRetorna o índice da aba atualmente selecionada (-1 se nenhuma)
getTotalTabs()numberRetorna o número total de abas

Observações

  • O componente usa radio buttons para controle de estado
  • Mantém a semântica HTML usando roles apropriados
  • É possível personalizar a aparência usando classes do Tailwind
  • O componente é responsivo por padrão
  • Suporta múltiplos grupos de abas na mesma página
  • Ideal para organização de conteúdo em seções
  • Permite estilização personalizada das abas e do conteúdo
  • Mantém a acessibilidade com labels e roles apropriados
  • Suporta conteúdo rico dentro das abas
  • Pode ser combinado com outros componentes para criar interfaces complexas
  • Métodos via ref disponíveis para controle programático das abas