Breadcrumb
Atom
Breadcrumb mostra localização hierárquica. Ele orienta contexto; não substitui navegação principal.
Use Breadcrumb quando a pessoa precisa entender onde está dentro de uma estrutura profunda: área, caso, template, componente ou documento. O último item representa a página atual e não deve parecer um link comum.
Exemplos copiáveis
React
React
import * as React from "react"
type BreadcrumbItem = {
label: string
href?: string
}
type PulsoBreadcrumbProps = {
items: BreadcrumbItem[]
label?: string
}
export function PulsoBreadcrumb({ items, label = "Breadcrumb" }: PulsoBreadcrumbProps) {
return (
<nav aria-label={label} className="text-sm text-[var(--fg-muted)]">
<ol className="flex flex-wrap items-center gap-1.5">
{items.map((item, index) => {
const current = index === items.length - 1
return (
<li key={`${item.label}-${index}`} className="inline-flex items-center gap-1.5">
{index > 0 ? <span aria-hidden="true" className="text-[var(--fg-subtle)]">/</span> : null}
{current || !item.href ? (
<span aria-current={current ? "page" : undefined} className={current ? "font-medium text-[var(--fg)]" : undefined}>
{item.label}
</span>
) : (
<a href={item.href} className="rounded-[var(--radius-xs)] hover:text-[var(--fg)] focus-visible:outline focus-visible:outline-[var(--ring-width)] focus-visible:outline-offset-2 focus-visible:outline-[var(--ring)]">
{item.label}
</a>
)}
</li>
)
})}
</ol>
</nav>
)
}<PulsoBreadcrumb
items={[
{ label: "Components", href: "/components" },
{ label: "Atoms", href: "/components/atoms" },
{ label: "Breadcrumb" },
]}
/>Quando usar
- Estruturas com 2+ níveis de profundidade.
- Páginas de documentação, casos, templates e componentes.
- Contexto de drill-down onde voltar um nível é comum.
- Rotas estáveis que representam hierarquia real.
Quando não usar
- Como menu lateral ou navegação principal.
- Para sequência temporal ou workflow; use Steps/Timeline.
- Em páginas rasas onde só repete o título.
- Quando a hierarquia é falsa ou muda conforme filtro.
Acessibilidade
- Use
navcomaria-label. - Use lista ordenada ou não ordenada para sequência.
- Marque item atual com
aria-current="page". - Separadores devem ser decorativos (
aria-hidden) ou via CSS.
Regras
- Último item é a página atual.
- Não use cor de risco no breadcrumb.
- Labels devem ser curtos e reconhecíveis.
- Breadcrumb não substitui título da página.
- Se não há hierarquia real, não use breadcrumb.
Last updated on