component

Breadcrumb

Shows a user’s location in a nested hierarchy as a trail of links. Rendered as a <nav aria-label="Breadcrumb"> wrapping an ordered list, with the last item marked aria-current="page" by default.

Default

Pass an items array; the last item is treated as the current page unless you set current explicitly.

---
import Breadcrumb from "../Breadcrumb.astro";
---

<Breadcrumb
  items={[
    { label: "Home", href: "#" },
    { label: "Components", href: "#" },
    { label: "Breadcrumb" },
  ]}
/>

Size

Three sizes — sm, md, lg — scale the text only.

---
import Breadcrumb from "../Breadcrumb.astro";
import { stack } from "@pindoba/styled-system/patterns";

const items = [
  { label: "Home", href: "#" },
  { label: "Docs", href: "#" },
  { label: "Breadcrumb" },
];
---

<div class={stack({ gap: "md", direction: "column" })}>
  <Breadcrumb size="sm" items={items} />
  <Breadcrumb size="md" items={items} />
  <Breadcrumb size="lg" items={items} />
</div>

Custom separator

Override the default / with any string via the separator prop.

---
import Breadcrumb from "../Breadcrumb.astro";

const items = [
  { label: "Projects", href: "#" },
  { label: "pindoba", href: "#" },
  { label: "Settings" },
];
---

<Breadcrumb separator="" items={items} />

With icons

Each item can render a leading icon. In Astro pass an iconify icon name; in Svelte pass a snippet.

---
import Breadcrumb from "../Breadcrumb.astro";
import BreadcrumbItem from "../BreadcrumbItem.astro";
import { Book, Component, House } from "@lucide/astro";
---

<Breadcrumb>
  <BreadcrumbItem href="#">
    <House slot="leading" />
    Home
  </BreadcrumbItem>
  <BreadcrumbItem href="#">
    <Book slot="leading" />
    Library
  </BreadcrumbItem>
  <BreadcrumbItem current>
    <Component slot="leading" />
    Components
  </BreadcrumbItem>
</Breadcrumb>
props · 25 shown · 25 total
Breadcrumb
active
boolean"current""checked""current-within"
default false

Mark this as the chosen one in a set (a current nav item, a checked option, a selected card). Where `interactive` says it *can* be clicked, `active` says it *is* the current choice. Use `activeEmphasis` to control how loud the state is. Combined with `interactive`, hover and press restart their stepping from the active baseline rather than falling back to the unchosen ramp. The three values differ only in what drives the state: `true` by the prop (via `data-panel-active`), `"checked"` by a wrapped native input (`:has(input:checked)` — zero JS, nothing to re-render), and `"current"` by an existing `aria-current`.

activeEmphasis
"primary""secondary""tertiary"
default the panel's `emphasis`

How loud the `active` state is. Defaults to the panel's own `emphasis`, so the chosen state lands on the same ramp as the resting look — this prop is the override for when the active item should be louder (or quieter) than the panel itself. `"primary"` fills with the feedback accent ramp and flips text to the contrast scale (~150 RGB units of separation — the option that reads at a glance in a dense list). `"secondary"` tints the feedback surface ramp and `"tertiary"` the neutral ramp; both promote text to `bold` and lift the border to the default line, but move the surface only ~7–18 units.

background
"surface.peak""surface.hill""surface.base""surface.valley""surface.ground""transparent"

Surface background from the Panel scale (`surface.peak` → `surface.ground`, or `transparent`).

border
"none""bold""default""muted""accent"

Border style: `none`, `default`, `bold`, or `muted`.

borderActive
"none""bold""inherit""default""muted""accent"

No description yet.

borderInteract
"none""bold""default""muted""accent"

Border style applied on hover / focus interaction.

feedback
"primary""neutral""success""warning""danger""inherit"

Semantic color tone: `neutral`, `primary`, `success`, `warning`, `danger`, or `inherit`.

interactive
boolean

Enable interactive (hover / focus / press) affordances and states.

items
BreadcrumbItemInput[]

Item list. Omit `href` (or set `current: true`) to mark the current page.

label
string
default "Breadcrumb"

Sets `aria-label` on the wrapping `<nav>` landmark.

passThrough
BreadcrumbPassThrough<RootElementAttributes>

Per-slot style/attribute override bag for customizing any rendered slot.

radius
"sm""md""lg""xl""2xl""none""xs""3xl""4xl""5xl""6xl""full""2xs""inner""inherit"

Corner radius override from the spacing scale (or `full` for fully rounded).

radiusBottom
"sm""md""lg""xl""2xl""none""xs""3xl""4xl""5xl""6xl""full""2xs""inner""inherit"

Corner radius for the bottom-left and bottom-right corners.

radiusLeft
"sm""md""lg""xl""2xl""none""xs""3xl""4xl""5xl""6xl""full""2xs""inner""inherit"

Corner radius for the top-left and bottom-left corners.

radiusRight
"sm""md""lg""xl""2xl""none""xs""3xl""4xl""5xl""6xl""full""2xs""inner""inherit"

Corner radius for the top-right and bottom-right corners.

radiusTop
"sm""md""lg""xl""2xl""none""xs""3xl""4xl""5xl""6xl""full""2xs""inner""inherit"

Corner radius for the top-left and top-right corners.

reserveBorderSpace
boolean

Keep (or drop) the always-1px transparent border the panel reserves so a border appearing or changing never shifts layout. Computed automatically — it's reserved when a resting `border` is visible, or when `interactive` / `borderInteract` / `active` can change the border at runtime. Set `false` only on a panel that must not occupy that 1px (e.g. a borderless housing frame that would otherwise add 2px around a set).

separator
string
default "/"

Separator string rendered between items. Override the default with any string.

shadow
"sm""md""lg""xl""none""xs"

Elevation shadow applied to the surface.

size
"sm""md""lg"
default "md"

Visual size of the breadcrumb; scales the text only.

translucent
boolean

Apply a frosted-glass effect with backdrop blur over a surface background.

BreadcrumbItem
class
unknown

Additional class names applied to the item's root element.

current
boolean

Marks this item as the current page. Renders as text with `aria-current`.

href
string

Destination URL. Omit on the current page item.

passThrough
{ item?: BreadcrumbSlotPassThrough; link?: BreadcrumbSlotPassThrough; current?: BreadcrumbSlotPassThrough; leading?: BreadcrumbSlotPassThrough; trailing?: BreadcrumbSlotPassThrough; text?: BreadcrumbSlotPassThrough; }

Per-slot style/attribute override bag for customizing any rendered slot.

Type

  • Components
  • Blocks