@cloudflare/kumo
import { Breadcrumbs } from "@cloudflare/kumo";
import { House } from "@phosphor-icons/react";

export function BreadcrumbsWithIconsDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Link href="#" icon={<House size={16} />}>
        Home
      </Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Link href="#">Projects</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current>Current Project</Breadcrumbs.Current>
    </Breadcrumbs>
  );
}

Installation

import { Breadcrumbs } from "@cloudflare/kumo";

Usage

import { Breadcrumbs } from "@cloudflare/kumo";

export function BreadcrumbsDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Link href="#">Docs</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current>Breadcrumbs</Breadcrumbs.Current>
    </Breadcrumbs>
  );
}

Examples

Basic

import { Breadcrumbs } from "@cloudflare/kumo";

export function BreadcrumbsDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Link href="#">Docs</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current>Breadcrumbs</Breadcrumbs.Current>
    </Breadcrumbs>
  );
}

Loading

import { Breadcrumbs } from "@cloudflare/kumo";
import { House } from "@phosphor-icons/react";

export function BreadcrumbsLoadingDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Link href="#" icon={<House size={16} />}>
        Home
      </Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Link href="#">Docs</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current loading></Breadcrumbs.Current>
    </Breadcrumbs>
  );
}

Root

import { Breadcrumbs } from "@cloudflare/kumo";
import { House } from "@phosphor-icons/react";

export function BreadcrumbsRootDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Current icon={<House size={16} />}>
        Worker Analytics
      </Breadcrumbs.Current>
    </Breadcrumbs>
  );
}

Clipboard

import { Breadcrumbs } from "@cloudflare/kumo";

export function BreadcrumbsWithClipboardDemo() {
  return (
    <Breadcrumbs>
      <Breadcrumbs.Link href="#">Home</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current>Breadcrumbs</Breadcrumbs.Current>
      <Breadcrumbs.Clipboard text="#" />
    </Breadcrumbs>
  );
}

Localized labels

Breadcrumbs renders a navigation landmark. Use the labels prop to localize the landmark name and clipboard copy text; don’t replace it with role="banner". For one-off copy actions, pass labels directly to Breadcrumbs.Clipboard.

import { Breadcrumbs } from "@cloudflare/kumo";

export function BreadcrumbsLocalizedDemo() {
  return (
    <Breadcrumbs
      labels={{
        navigation: "Trilha de navegação",
        copyAction: "Copiar",
        copyTooltip: "Clique para copiar",
        copiedFeedback: "Copiado",
      }}
    >
      <Breadcrumbs.Link href="#">Início</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Link href="#">Documentação</Breadcrumbs.Link>
      <Breadcrumbs.Separator />
      <Breadcrumbs.Current>Navegação estrutural</Breadcrumbs.Current>
      <Breadcrumbs.Clipboard text="#navegacao-estrutural" />
    </Breadcrumbs>
  );
}

API Reference

PropTypeDefaultDescription
size"sm" | "base""base"Size of the breadcrumbs. - `"sm"` — Compact breadcrumbs for dense UIs - `"base"` — Default breadcrumbs size
childrenReactNode--
classNamestring-Additional CSS classes merged via `cn()`.
labelsBreadcrumbsLabels-Accessible labels and clipboard text for i18n.
PropTypeDefault
href*string-
iconReact.ReactNode-
PropTypeDefault
loadingboolean-
iconReact.ReactNode-
PropTypeDefault

No component-specific props. Accepts standard HTML attributes.

PropTypeDefault
text*string-
labelsBreadcrumbsClipboardLabels-