Link De Navegacao
Em andamentoO link de uma barra de navegação — a principal, clara, ou a faixa escura de cima —, que diz qual é a seção atual: aria-current="page" para quem ouve e sublinhado para quem vê. É o link da Navbar, tirado de dentro dela.
- Função
- Navegação e estrutura
- Também chamado de
- nav link, link de menu, item da barra, link ativo, aba de navegação
- Mora em
- app/components/atoms/LinkDeNavegacao.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.
1280px, em tamanho real
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.
Quando usar
Numa barra de navegação entre seções do site, em que uma delas é a atual: a barra principal e a faixa de cima da Navbar.
Faça
- Passe
atualsó na seção em que a pessoa está. - Use
superficie="escura"sobre fundo escuro, e a clara (padrão) sobre a barra branca. - Ponha os links dentro de um
<nav>com nome ("Navegação principal do site").
Evite
- Marcar a atual só pela cor: o sublinhado é o que distingue para quem não vê o vermelho.
- Mais de um
atualna mesma barra. - Ícone de nova aba na faixa: ela é compacta; o aviso vai para o leitor de tela.
Quando não usar. Dentro de um texto: o Link. Com cara de botão ("Inscreva-se"): o Button com href. Para trocar conteúdo na mesma página: as Abas. Para a trilha de páginas: o Breadcrumb.
Anatomia
As partes, na ordem em que o olho — e o teclado — passam.
- Link clara — 16px, semibold, `--ink`; atual em `--primary` com sublinhado de 2px afastado 8px; 44px de alvo.
- Link escura — 14px, medium, claro a 70% (atual a 100%, sublinhado de 2px afastado 4px); a área de toque de 44px é um pseudo-elemento, e a faixa segue com 40px.
Estados
Os estados que a peça tem no código, e o que muda em cada um.
| Estado | O que muda |
|---|---|
| Padrão | Cor do texto da barra. |
| Hover | Na clara, --primary; na escura, claro a 90%. |
| Atual | Sublinhado de 2px e aria-current="page" — nunca só a cor. |
| Foco | Anel de 2px (--ring na clara, --ring-inverse na escura). |
Comportamento
| Situação | O que acontece |
|---|---|
| Endereço interno | Navega pelo roteador do Next, sem recarregar a página. |
| Com `novaAba` | Abre em outra aba, com rel="noopener noreferrer", e o nome diz "(abre em nova aba)" — testado na ficha. |
| Seção atual | Só a atual diz aria-current e é sublinhada — testado na ficha. |
Relacionados
Como usar no código
A importação e o menor uso, lidos do arquivo. O … marca as props obrigatórias.
import { LinkDeNavegacao } from '@/app/components/atoms/LinkDeNavegacao';
<LinkDeNavegacao href={…}>…</LinkDeNavegacao>Propriedades
Lidas do código da peça no build — não escritas à mão.
| Prop | Tipo | Padrão | Obrigatória | Descrição |
|---|---|---|---|---|
superficie | 'clara' | 'escura' | 'clara' | não | Variante do cva. |
atual | boolean | false | não | É a seção em que a pessoa está: aria-current="page" e o sublinhado. |
href | string | — | sim | — |
novaAba | boolean | false | não | Abre em outra aba: target, rel e "(abre em nova aba)" para quem ouve. Sem ícone, de propósito — a barra é compacta; o link de texto com ícone é o Link com novaAba. |
Aceita também: Omit<React.AnchorHTMLAttributes<HTMLAnchorElement>, 'href'>.
Tokens de cor
Os tokens semânticos que o código da peça usa, com o valor de hoje em app/globals.css.
| Token | Valor | Usado como |
|---|---|---|
--background | #FAFAFA | text-backgroundtext-background/70text-background/90 |
--foreground | #1A1A1A | text-ink |
--primary | #D42B2B | text-primary |
--ring | var(--footer-red)), decisão da revisão 2. Se outra peça precisar
* dele como superfície, o nome vira de papel (ex.: --surface-brand-strong). */
--footer-red: #7D1B1B | ring-ring |
--ring-inverse | #FAFAFA | ring-ring-inverse |
Teclado
| Tecla | Faz |
|---|---|
| Tab | Passa pelos links da barra, na ordem. |
| Enter | Segue o link. |
Leitor de tela
O que é anunciado, e por quê.
- O leitor diz "página atual" na seção em que a pessoa está.
- A área de toque tem 44px nas duas superfícies; na faixa, por pseudo-elemento, sem mudar o desenho.
O que sustenta o estado
Esta peça usa estatico. O estado dela é o de quem já foi ouvido com leitor de tela nesses padrões — e não uma passada sobre esta peça em específico.
Falta ouvir: estatico — ver docs/a11y-screen-reader-checklist.md.
Status e recursos
| Tipo | Recurso | Status |
|---|---|---|
| Código | app/components/atoms/LinkDeNavegacao.tsx | Disponível |
| Ficha | Storybook (abre em outra aba) | Disponível |
| Teste de acessibilidade | axe em npm run test | No gate de todo commit |
| Leitor de tela | Passada da E33 | Falta ouvir |
| Design | Figma | Desativado até a Fase 2 |
Histórico
Os últimos commits que tocaram o arquivo, lidos do git no build.
0298af82026-09-30E147: fechamento da Entrega 11 — REPORT.md, verificação cross-agent e o gate estático estrito
O histórico completo está no GitHub (abre em outra aba).