Breadcrumb
Navegação estrutural que mostra a posição da página atual dentro da hierarquia do produto.
Instalação
Recebe correções por update de versão. O caminho recomendado.
npm i @trdr/ui
import { Breadcrumb } from "@trdr/ui/breadcrumb"Uso
import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage } from "@trdr/ui/breadcrumb"
export function Exemplo() {
return <Breadcrumb />
}Props
BreadcrumbPropsestende React.ComponentPropsWithoutRef<"nav">BreadcrumbListPropsestende React.ComponentPropsWithoutRef<"ol">BreadcrumbItemPropsestende React.ComponentPropsWithoutRef<"li">BreadcrumbLinkPropsestende React.ComponentPropsWithoutRef<"a">| Prop | Tipo | Descrição |
|---|---|---|
| asChild? | boolean | Renderiza o filho no lugar do <a>, herdando classe, ref e o resto das props. Uso tipico: o Link do Next (`<BreadcrumbLink asChild><Link href="/carteira">Carteira</Link></BreadcrumbLink>`). |
BreadcrumbPagePropsestende React.ComponentPropsWithoutRef<"span">BreadcrumbSeparatorPropsestende React.ComponentPropsWithoutRef<"li">BreadcrumbEllipsisPropsestende React.ComponentPropsWithoutRef<"span">Quando usar
Use o breadcrumb quando a pagina atual esta a mais de um nivel de profundidade dentro de uma hierarquia navegavel: uma tela de ordem dentro de uma carteira, uma carteira dentro da conta. Ele ajuda o usuario a entender onde esta e a subir de nivel com um clique, sem depender do botao voltar do navegador.
Quando nao usar
Nao use breadcrumb em telas de nivel unico (o dashboard principal, uma tela de login): sem hierarquia para mostrar, ele so ocupa espaco. Tambem nao substitui a navegacao principal do produto (sidebar, tabs): o breadcrumb complementa, mostrando o caminho ate ali, nao os destinos possiveis a partir dali.
Anatomia
Breadcrumb(data-slot="breadcrumb"): a raiz, um<nav aria-label="breadcrumb">.BreadcrumbList(data-slot="breadcrumb-list"): a lista ordenada (<ol>) dos itens.BreadcrumbItem(data-slot="breadcrumb-item"): um item da lista (<li>), com o link ou a pagina atual dentro.BreadcrumbLink(data-slot="breadcrumb-link"): o link para um nivel anterior. AceitaasChildpara renderizar o filho no lugar do<a>, herdando classe, ref e o resto das props, o que permite usar oLinkdo Next sem duplicar o elemento:<BreadcrumbLink asChild> <Link href="/carteira">Carteira</Link> </BreadcrumbLink>BreadcrumbPage(data-slot="breadcrumb-page"): a pagina atual. Nao e um link, so texto marcado comaria-current="page".BreadcrumbSeparator(data-slot="breadcrumb-separator"): o separador entre itens. Renderiza um chevron por padrao, mas aceita qualquer filho no lugar.BreadcrumbEllipsis(data-slot="breadcrumb-ellipsis"): reticencias para colapsar niveis intermediarios em caminhos longos.
Nenhuma parte usa Radix nem estado: e uma arvore de elementos semanticos, renderizavel no
servidor. O asChild do BreadcrumbLink e implementado na mao (nao com o Slot do radix-ui)
exatamente para nao trazer a diretiva "use client" para um componente que nao precisa dela.
Acessibilidade
- A raiz usa
aria-label="breadcrumb"no<nav>, para o leitor de tela anunciar a regiao antes de entrar nos itens. BreadcrumbPagemarca a pagina atual comaria-current="page"earia-disabled="true": e texto, nao um link para o lugar onde o usuario ja esta.BreadcrumbSeparatoreBreadcrumbEllipsislevamaria-hidden="true"erole="presentation": sao pistas visuais, o leitor de tela nao precisa deles para entender a hierarquia (a ordem dosBreadcrumbItemja comunica isso).BreadcrumbLinktem foco visivel (focus-visible:ring-2) e area de toque normal de link: garanta que o texto do link sozinho descreva o destino (evite "clique aqui").
Slots e tokens
Todo elemento renderizado carrega um data-slot para estilizar partes internas sem depender de classe da biblioteca. Os tokens listados são extraídos do código fonte.
[data-slot="breadcrumb"][data-slot="breadcrumb-ellipsis"][data-slot="breadcrumb-item"][data-slot="breadcrumb-link"][data-slot="breadcrumb-list"][data-slot="breadcrumb-page"][data-slot="breadcrumb-separator"]7 tokens usados
outline-nonering-offset-2ring-offset-backgroundring-ringtext-b4text-content-tertiarytext-foreground