Pular para o conteúdo
// visualizar em
salvo em todas as páginas

Navigation menu

Menu de navegação com os links principais de um site, num `<nav>`, com painéis opcionais que abrem a partir de um gatilho, como um mega menu de produtos. Ele leva a páginas; para comandos, use um Menu ou uma Menubar.

Feito com Base UIPadrão WAI-ARIA Disclosure Navigation MenuComponente clienteCódigo ↗

Instalação

Configure o Camaleo uma vez (Instalação) e importe as partes que precisar. Os painéis renderizam num portal e mantêm o estilo, o modo e a cor da página em volta.

import { NavigationMenu, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink } from "@camaleo/react";

Anatomia

O NavigationMenu renderiza o <nav>; dê a ele um aria-label. Cada NavigationMenuItem guarda um NavigationMenuLink ou um NavigationMenuTrigger com o seu NavigationMenuContent, o painel que abre embaixo dele.

Exemplos

Cada exemplo é um arquivo real que você pode copiar. Todos usam o estilo, o modo e a cor escolhidos na barra acima, e todo painel começa fechado.

minimal · light · #3fa34d

Só links

Quando todo item do topo é uma página, você não precisa de painéis: uma barra de NavigationMenuLink é uma lista simples de links de verdade, cada um uma parada do Tab.

Painel de produtos

Abra Produtos. Uma descrição curta embaixo de cada nome mostra qual produto serve antes do clique, e o ícone ajuda a achar de novo da próxima vez.

Card em destaque no painel

Destaque uma página do momento, como o webinar da semana que vem, ao lado dos links de sempre. Faça do card inteiro um link só, para ser uma parada só do Tab.

Página atual

Clique nos links. O active coloca aria-current="page", que o leitor de tela anuncia como "página atual" e o estilo sublinha, para não depender só da cor.

Atraso ao passar o mouse

Passe o mouse pela barra. O delay e o closeDelay evitam que os painéis pisquem quando a pessoa só está passando por cima a caminho da página.

Vertical

Para as seções de uma área, como as configurações, empilhe a lista na lateral. O orientation="vertical" troca as setas para ↑ e ↓.

Regiões com nome

Quem usa leitor de tela pula entre regiões pelo nome. Com dois navs na página, "Principal" e "Rodapé" separam um do outro; dois navs sem nome são lidos os dois como "navegação".

A barra quebra a linha em vez de se recolher: ela não tem um layout próprio para celular. Abaixo de uns 640px, troque por um botão de menu que abre um Drawer com os mesmos links.

Em contexto

O navigation menu fica no cabeçalho de um site ou de uma seção. São pedaços inteiros de interface para copiar, no estilo que você escolheu.

Nimbo
Notas que se cobram sozinhasLembretes, Pix e conciliação num só lugar.
Cabeçalho de site de produtoNavigationMenu · Button · Card
Casa Verde
Departamentos de uma lojaNavigationMenu · SearchInput · IconButton · Badge
Faturamento

Configure notas recorrentes

Atualizado em 03/10/2026 · 4 min de leitura

Escolha o cliente e a frequência da cobrança, e o Nimbo emite cada nota no mesmo dia, todo mês.
Artigo da central de ajudaNavigationMenu · Card · Badge

Boas práticas

FaçaNomeie lugares para onde a pessoa vai.

"Notas fiscais", "Clientes", "Relatórios": cada rótulo é uma página, então a pessoa sabe onde vai parar e pode abrir numa nova aba.

EviteComandos fantasiados de link.

"Exportar CSV" e "Arquivar" não levam a lugar nenhum. Coloque ações num Menu ou numa Menubar, onde elas são anunciadas como comandos.

FaçaPoucos links, cada um com uma linha de ajuda.

Três opções com uma frase cada são mais rápidas de escolher do que uma lista de nomes para adivinhar.

EviteTodas as páginas num painel só.

Doze links sem grupos nem descrições viram um mapa do site. Divida por assunto, ou leve a uma página que liste todos.

Props

PropriedadeTipoPadrãoDescrição
sideOffsetnumber8Gap between a trigger and its panel, in pixels.
align"center" | "end" | "start""start"How the panel lines up with its trigger.
valueanynullO value do item cujo painel está aberto, para controlar pelo código. null fecha.
defaultValueanynullO item cujo painel começa aberto. Deixe vazio: nada deve abrir sozinho.
onValueChange(value, eventDetails) => void—Chamado quando um painel abre ou fecha, com o motivo em eventDetails.
delaynumber50Quanto tempo o mouse precisa ficar num gatilho para o painel abrir, em milissegundos.
closeDelaynumber50Quanto tempo o painel espera para fechar depois que o mouse sai, em milissegundos.
orientation"horizontal" | "vertical"'horizontal'Quais setas passam entre os itens do topo: ← → ou ↑ ↓.

Estas são as props do NavigationMenu. O NavigationMenuLink aceita active (coloca aria-current="page") e closeOnClick. O NavigationMenuTrigger aceita hideIcon, e o NavigationMenuContent aceita align e sideOffset. Dê um value ao NavigationMenuItem quando controlar o menu pelo código.

Styling hooks

Mude o visual sem copiar o componente: use os atributos ou defina os tokens num elemento pai, num estilo ou no próprio nav.

Atributos

data-popup-openno gatilho cujo painel está aberto
aria-current · data-activepage · no link da página atual
data-openno painel aberto
data-side · data-alignonde o painel fica em relação ao gatilho

Tokens que ele lê

Cor

--cml-accent--cml-border-control--cml-fg--cml-fg-secondary--cml-focus-offset--cml-focus-ring--cml-focus-width--cml-popover-bg--cml-popover-border--cml-shadow-popover--cml-surface-raised

Forma e tamanho

--cml-border-width--cml-popover-border-width--cml-radius-control--cml-radius-popover

Tipografia e movimento

--cml-font-body--cml-motion-duration

Só deste componente

--cml-item-hover--cml-nav-item-height--cml-nav-item-radius--cml-nav-popup-radius--cml-nav-trigger-open-bg

Acessibilidade

Tab / Shift + TabPassa pelos links e gatilhos do topo. Cada um é uma parada do Tab, como qualquer lista de links.
→ / ←Também passa pelos itens do topo (↓ / ↑ com orientation="vertical"). Não troca o painel aberto.
Enter / EspaçoNum gatilho: abre ou fecha o painel. Num link: segue o link.
↓Num gatilho de uma barra horizontal: abre o painel.
EscFecha o painel e devolve o foco ao gatilho.

Relacionados

Esta página foi útil? · Editar esta página no GitHub