Pular para o conteúdo
Faculdade PhorteDesign System

CourseTabs

Em andamento

Navegação entre as seções da página do curso — Apresentação, Matriz Curricular, Corpo Docente… —, por links âncora, com a seção atual em vermelho, sublinhada e marcada com aria-current="location" (E71).

Função
Navegação e estrutura
Também chamado de
seções do curso, menu da página do curso, âncoras, abas do curso
Mora em
app/components/molecules/CourseTabs.tsx
Última mudança
2026-09-30

Prévia

A peça ao vivo, vinda da ficha, na largura escolhida. Em larguras fixas, ela roda num quadro do tamanho de uma tela de verdade.

Na largura da página: 0px

Variante Padrão, ao vivo — vem da ficha.Abrir sozinha(abre em outra aba)

Variantes na ficha

Lidas da ficha no build, na ordem do palco. Cada uma abre sozinha, sem o styleguide em volta — é o endereço que o palco carrega.

  1. Padrão
  2. Interativo
  3. Com ids

Quando usar

No topo da página de um curso, para pular entre as seções da mesma página, que ficam todas lá, uma embaixo da outra.

Faça

  • Passe as seções como { id, rotulo }: o id é a âncora e a chave, e o rótulo pode mudar sem quebrar nada (E71).
  • Dê às seções da página os mesmos ids.
  • Atualize active pela rolagem (ou pelo onChange do clique), para a seção atual acompanhar a leitura.

Evite

  • Usar para trocar conteúdo no lugar: aí é Abas.
  • Rótulos repetidos com string[]: o id sai do texto, e dois iguais colidem.

Quando não usar. Para trocar o conteúdo no lugar, sem rolar, use as Abas (contrato de abas inteiro). Para filtrar uma lista, o FilterGroup. Para seções curtas recolhíveis, o Accordion.

Anatomia

As partes, na ordem em que o olho — e o teclado — passam.

  1. Navegação — `<nav>` com o `label` ("Seções do curso"); lista com borda embaixo e rolagem horizontal escondida.
  2. Link — `text-lg` em negrito, `href="#<id>"`, 44px de altura.
  3. Sublinhado — Linha de 2px no vermelho de interface sob a atual, decorativa.

Estados

Os estados que a peça tem no código, e o que muda em cada um.

Estados da peça e o que muda em cada um
EstadoO que muda
AtualTexto --primary, sublinhado de 2px e aria-current="location".
Outra seçãoTexto --muted-foreground; no hover, --ink.
FocoAnel de 2px por dentro do link.

Comportamento

Como a peça reage em cada situação
SituaçãoO que acontece
Escolher uma seçãoSegue a âncora (a página rola até a seção) e chama onChange com o id; quem guarda a atual é o consumidor. Conferido no teste da ficha.
Com `string[]`O id sai do texto sem acento: "Matriz Curricular" → #matriz-curricular; o onChange recebe o texto, como antes.
Fileira maior que a telaRola na horizontal, com encaixe por item (snap-x), sem barra visível. Quem rola é a lista, e não a página: a <nav> encolhe dentro de pai flex (E139 — a 320px a página rolava de lado), testado.

Relacionados