ITpS

Componentes

Tabs

Tablist + panels com troca automática de conteúdo. Acessível via teclado (Arrow/Home/End) e ARIA completo.

Default

Cada slot nomeado com o id da tab vira o painel correspondente.

Conteúdo da visão geral.

Com ícones

icon no array de tabs — Material Symbol antes do label.

Resumo executivo.

Eventos

Componente dispara tabs:change com detail.tab. Escute para sincronizar URL ou refetch.

<Tabs tabsId="patient-view" tabs={[...]}>...</Tabs>

<script>
  document
    .querySelector('[data-tabs-id="patient-view"]')
    ?.addEventListener('tabs:change', (e) => {
      const { tab } = (e as CustomEvent<{ tab: string }>).detail;
      history.replaceState(null, '', `?tab=${tab}`);
    });
</script>

Acessibilidade

  • role="tablist" no container, role="tab" em cada botão, role="tabpanel" em cada painel
  • aria-selected, aria-controls, aria-labelledby ligados via id
  • Setas ←/→ navegam, Home/End vão para extremos
  • Painel ativo é tabindex="0" para receber foco direto

Props

PropTipoDefaultDescrição
tabsTab[]obrigatórioLista de tabs.
activeTabstringprimeiraID inicial.
tabsIdstringautoID estável para event delegation.
classstringClasses adicionais.

Tab

PropTipoDescrição
idstringIdentificador único. Usado como nome do slot.
labelstringTexto da tab.
iconstringMaterial Symbol opcional.