Breadcrumb
Uma 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.
pnpm dlx shadcn@latest add https://hextaui.com/r/breadcrumb.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 cnCopie e cole o código a seguir no seu projeto.
components/ui/breadcrumb.tsx lib/motion.ts Atualize os caminhos de importação para corresponder à configuração do seu projeto.
Com ícones
Os ícones ficam dentro dos links e da página atual. Dê a um link só com ícone um aria-label.
Separador personalizado
Passe qualquer elemento como children de <BreadcrumbSeparator /> para substituir o chevron.
Dropdown
Renderize um <BreadcrumbLink /> como gatilho de um <DropdownMenu /> para oferecer páginas do mesmo nível.
Recolhido
Envolva os segmentos do meio em <BreadcrumbCollapse />. Eles ficam ocultos atrás de reticências e deslizam para abrir no lugar, e o foco vai para o primeiro link revelado. Passe open e onOpenChange para controlá-lo.
Reticências
Um <BreadcrumbEllipsis /> estático marca níveis ignorados. Ele fica oculto para tecnologias assistivas, a menos que você o torne interativo.
Componente de link
Use a prop render para trocar o âncora pelo link do seu router, como o <Link /> do Next.js.
Conteúdo longo
Nomes sem quebra são quebrados em vez de transbordar, e segmentos com largura máxima são truncados.
Da direita para a esquerda
Os separadores são invertidos e o recolhimento anima a partir do lado correto.
Os links e o botão de recolher são paradas normais da tecla Tab. Separadores e reticências estáticas são ignorados.
| Tecla | Ação |
|---|---|
| TabShift + Tab | Alterna entre os links e o botão de recolher. |
| Enter | Acompanha o link em foco. |
| EnterSpace | No botão de recolher, revela os segmentos ocultos. Quando terminam de deslizar para abrir, o foco vai para o primeiro link revelado. |
Cada parte aceita os atributos do elemento que renderiza, além de uma prop render para trocar esse elemento.
| Prop | Tipo | Padrão |
|---|---|---|
renderRotulado como “Breadcrumb” para tecnologias assistivas. | ReactElement | (props, state) => ReactElement | <nav> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb" | O landmark <nav>. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <ol> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-list" | A lista ordenada. Os itens quebram para novas linhas quando falta espaço. |
| Prop | Tipo | Padrão |
|---|---|---|
render | ReactElement | (props, state) => ReactElement | <li> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-item" | Selecione itens no CSS. |
data-collapsed | Presente enquanto o item está oculto dentro de um BreadcrumbCollapse fechado. |
data-breadcrumb-group | Presente nos itens dentro de um BreadcrumbCollapse. Compartilhado por todas as partes do mesmo grupo. |
| Prop | Tipo | Padrão |
|---|---|---|
href | string | – |
renderPasse aqui o componente de link do seu router. | ReactElement | (props, state) => ReactElement | <a> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-link" | Seleciona os links no CSS. |
| Prop | Tipo | Padrão |
|---|---|---|
renderMarcado com aria-current="page". | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-page" | A página atual, com aria-current="page". |
| Prop | Tipo | Padrão |
|---|---|---|
childrenÉ espelhado automaticamente em layouts da direita para a esquerda. | ReactNode | <IconChevronRight /> |
render | ReactElement | (props, state) => ReactElement | <li> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-separator" | Apresentacional e oculto para tecnologias assistivas. |
data-collapsed | Presente enquanto o separador está oculto dentro de um BreadcrumbCollapse fechado. |
data-breadcrumb-group | Presente nos separadores dentro de um BreadcrumbCollapse. |
| Prop | Tipo | Padrão |
|---|---|---|
children | ReactNode | <IconDots /> |
renderOculto para tecnologias assistivas, a menos que render ou onClick o torne interativo. | ReactElement | (props, state) => ReactElement | <span> |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-ellipsis" | Seleciona as reticências no CSS. |
| Prop | Tipo | Padrão |
|---|---|---|
childrenOs itens e separadores a ocultar atrás das reticências. | ReactNode | – |
open | boolean | – |
defaultOpen | boolean | false |
onOpenChange | (open: boolean) => void | – |
labelNome acessível do botão de reticências. | string | "Show full path" |
| Atributo | Descrição |
|---|---|
data-slot="breadcrumb-collapse" | O <li> que contém o botão de reticências. |
data-collapsed | Presente no item de reticências depois que o grupo é aberto, o que o oculta. |
- 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.
- Navigation menuNavegação do site com dropdowns, ou um único painel de largura total que permanece aberto enquanto o conteúdo desliza entre os menus.
- 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.