VibeUI
ComponentsDocs
VibeUI

Components with taste, that you own. Copy the source, retint the tokens, keep every line.

Library

  • All components
  • Signature pieces
  • Text effects
  • Footers

Docs

  • Introduction
  • Installation
  • Theming
  • CLI

Project

  • GitHub
  • Agents and MCP
  • Issues
  • MIT license
© 2026 VibeUI · MIT licensed
  1. Components
  2. Navigation
  3. Breadcrumb

Breadcrumb

Path trail showing the current location in a hierarchy.

NavigationServer-safe
  1. Home
  2. Components
  3. Navigation
  4. Breadcrumb

Install

bash
npx @agents-npm-packages/vibeui add breadcrumb --dir ./src/components/ui

Import

tsx
import { Breadcrumb } from "@/components/ui/breadcrumb"

API

Generated from the component's TypeScript types, so it always matches the source. * marks a required prop.

<Breadcrumb>

PropTypeDefaultDescription
items*{ label: string; href?: string | undefined; }[]—The items to render.
classNamestring—Extra classes, merged with the component's own.

Source

src/components/ui/breadcrumb.tsx
import { CaretRight } from "@phosphor-icons/react/dist/ssr";
import { cn } from "@/lib/utils";

/** Path trail showing the current location in a hierarchy. */
export function Breadcrumb({
  items,
  className,
}: {
  items: { label: string; href?: string }[];
  className?: string;
}) {
  return (
    <nav aria-label="Breadcrumb" className={className}>
      <ol className="flex flex-wrap items-center gap-1.5 text-sm">
        {items.map((item, i) => {
          const last = i === items.length - 1;
          return (
            <li key={`${item.label}-${i}`} className="inline-flex items-center gap-1.5">
              {i > 0 ? (
                <CaretRight size={11} className="text-faint" weight="bold" aria-hidden />
              ) : null}
              {last || !item.href ? (
                <span
                  aria-current={last ? "page" : undefined}
                  className={cn(last ? "font-medium text-ink" : "text-muted")}
                >
                  {item.label}
                </span>
              ) : (
                <a
                  href={item.href}
                  className="text-muted transition-[color,transform] duration-150 hover:-translate-y-px hover:text-ink"
                >
                  {item.label}
                </a>
              )}
            </li>
          );
        })}
      </ol>
    </nav>
  );
}

Exports Breadcrumb. Peer dependencies: clsx, tailwind-merge, @phosphor-icons/react.

PreviousAccordionNextFloating Nav