Navigation menu
Navegação do site com dropdowns, ou um único painel de largura total que permanece aberto enquanto o conteúdo desliza entre os menus.
pnpm dlx shadcn@latest add https://hextaui.com/r/navigation-menu.jsonAdiciona o componente, os tokens de tema do HextaUI e quaisquer componentes do HextaUI dos quais ele depende.
Adicione os tokens de tema ao seu CSS global, se ainda não o fez.
Instale as dependências.
pnpm add @base-ui/react @tabler/icons-react class-variance-authority cnCopie e cole o código a seguir no seu projeto.
components/ui/navigation-menu.tsx lib/motion.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Com variant="panel", um único card ocupa a barra inteira. Passar entre gatilhos o mantém aberto e no lugar: só o conteúdo desliza na direção em que você se moveu, e a altura suaviza para se ajustar. Nada fecha, reabre ou salta.
Dropdown
A variante dropdown padrão abre um card sob cada gatilho. Ao passar para o próximo gatilho, o mesmo card desliza até ele e se redimensiona para o novo conteúdo.
Página atual
Os links na barra parecem gatilhos. Marque a página atual com active, que também define aria-current="page".
Da direita para a esquerda
Os deslizamentos do conteúdo seguem a direção em que você se move, que se inverte em layouts da direita para a esquerda.
| Tecla | Ação |
|---|---|
| Tab | Percorre a barra e, de um gatilho aberto, entra no seu conteúdo. |
| EnterSpace | Abre ou fecha o menu do gatilho com foco. |
| ↑↓ | Move entre os links do conteúdo aberto. |
| ←→ | Move entre os gatilhos da barra. |
| Esc | Fecha o menu e devolve o foco ao seu gatilho. |
- A raiz renderiza um
<nav>. Dê a ela umaria-labelquando a página tiver mais de uma. - Os gatilhos são botões que informam se o menu está aberto, e o foco volta a eles quando o menu fecha.
- O deslizamento do conteúdo e o destaque deslizante viram fades quando o movimento reduzido está ativado.
| Prop | Tipo | Padrão |
|---|---|---|
variantdropdown abre sob cada gatilho. panel abre um único card de largura total sob a barra que fica parado enquanto o conteúdo desliza. | "dropdown" | "panel" | "dropdown" |
showSafeAreaDesenha a área segura que mantém um menu aberto enquanto o ponteiro vai em direção a ele. Para depuração e demos. | boolean | false |
align | "start" | "center" | "end" | "start", or "center" for panel |
sideOffset | number | 8 |
value | any | – |
defaultValue | any | – |
onValueChange | (value, details) => void | – |
delayEspera antes de abrir no hover, em ms. | number | 50 |
closeDelayEspera antes de fechar depois que o ponteiro sai, em ms. | number | 50 |
orientation | "horizontal" | "vertical" | "horizontal" |
| Atributo | Descrição |
|---|---|
data-slot="navigation-menu" | A nav, com data-variant. |
data-slot="navigation-menu-highlight" | O fundo que desliza entre os gatilhos abertos. |
data-slot="navigation-menu-popup" | O card. Sua altura suaviza por --popup-height. |
| Atributo | Descrição |
|---|---|
data-slot="navigation-menu-trigger" | Selecione os gatilhos no CSS. |
data-popup-open | Presente enquanto seu menu está aberto. O chevron vira. |
| Atributo | Descrição |
|---|---|
data-slot="navigation-menu-content" | O conteúdo de um menu, com data-variant. |
data-activation-direction | "left", "right", "up" ou "down": onde estava o gatilho anterior. Controla o deslizamento. |
--navigation-menu-link-radius | Raio dos cantos do link, concêntrico com o card. |
| Prop | Tipo | Padrão |
|---|---|---|
activeMarca a página atual. | boolean | false |
render | ReactElement | (props, state) => ReactElement | <a> |
| Atributo | Descrição |
|---|---|
data-slot="navigation-menu-link" | Seleciona os links no CSS. Na barra, eles se dimensionam como gatilhos. |
data-active | Presente na página atual. |
- MotionAs curvas de easing, as durações e a verificação de movimento reduzido com que todo componente anima, além de hooks para transformações de tamanho e destaques deslizantes.
- BreadcrumbUma trilha de links até a página atual que quebra linha com segurança, se espelha em layouts da direita para a esquerda e expande os segmentos recolhidos no próprio lugar.
- PaginationNavegação de páginas que mantém cada botão no lugar, desliza até a página atual e salta para qualquer página a partir das reticências.
- SidebarUma barra lateral de app que recolhe para ícones ou fora da tela, permanece fixa sob o seu cabeçalho e vira uma sheet com deslize no celular.
- TabsAlterne entre visões com um indicador que desliza até a aba ativa, como um controle segmentado ou um sublinhado, e listas que rolam quando transbordam.