shadcn.io is not affiliated with official shadcn/ui
Shadcn Breadcrumb for React and Tailwind
Shows the current page in a hierarchy.
Installation
bunx --bun shadcn@latest add https://kit.dev/r/breadcrumb.jsonpnpm dlx shadcn@latest add https://kit.dev/r/breadcrumb.jsonnpx shadcn@latest add https://kit.dev/r/breadcrumb.jsonyarn shadcn@latest add https://kit.dev/r/breadcrumb.jsonInstall the following dependencies:
bun add @ark-ui/react lucide-reactpnpm add @ark-ui/react lucide-reactnpm install @ark-ui/react lucide-reactyarn add @ark-ui/react lucide-reactCopy and paste the following code into your project.
"use client";
import { ark } from "@ark-ui/react/factory";
import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
import type React from "react";
import { cn } from "@/lib/utils";
export interface BreadcrumbProps extends React.ComponentProps<typeof ark.nav> {
/**
* Accessible label for the breadcrumb navigation landmark.
*
* @default "Breadcrumb"
*/
"aria-label"?: string;
}
export const Breadcrumb = (props: BreadcrumbProps) => {
const { "aria-label": ariaLabel = "Breadcrumb", ...rest } = props;
return <ark.nav aria-label={ariaLabel} data-slot="breadcrumb" {...rest} />;
};
export const BreadcrumbList = (props: React.ComponentProps<typeof ark.ol>) => {
const { className, ...rest } = props;
return (
<ark.ol
className={cn(
"flex flex-wrap items-center gap-1.5 sm:gap-2.5",
"wrap-break-word text-muted-foreground text-sm",
className
)}
data-slot="breadcrumb-list"
role="list"
{...rest}
/>
);
};
export const BreadcrumbItem = (props: React.ComponentProps<typeof ark.li>) => {
const { className, ...rest } = props;
return (
<ark.li
className={cn("inline-flex items-center gap-1.5", className)}
data-slot="breadcrumb-item"
{...rest}
/>
);
};
export const BreadcrumbLink = (props: React.ComponentProps<typeof ark.a>) => {
const { className, ...rest } = props;
return (
<ark.a
className={cn(
"text-nowrap",
"rounded-md border border-transparent",
"transition-colors",
"hover:text-foreground",
"outline-none focus-visible:border-primary focus-visible:ring-[3px] focus-visible:ring-ring/32 focus-visible:ring-offset-2 focus-visible:ring-offset-background",
"motion-reduce:transition-none!",
className
)}
data-slot="breadcrumb-link"
{...rest}
/>
);
};
export const BreadcrumbPage = (
props: React.ComponentProps<typeof ark.span>
) => {
const { className, ...rest } = props;
return (
<ark.span
aria-current="page"
className={cn("font-normal text-foreground", className)}
data-slot="breadcrumb-page"
{...rest}
/>
);
};
export const BreadcrumbSeparator = (
props: React.ComponentProps<typeof ark.li>
) => {
const { children, className, ...rest } = props;
return (
<ark.li
aria-hidden="true"
className={cn("opacity-64 [&_svg]:size-4", className)}
data-slot="breadcrumb-separator"
role="presentation"
{...rest}
>
{children ?? <ChevronRightIcon className="rtl:rotate-180" />}
</ark.li>
);
};
export const BreadcrumbEllipsis = (
props: React.ComponentProps<typeof ark.span>
) => {
const { className, ...rest } = props;
return (
<ark.span
aria-hidden="true"
className={cn(
"inline-flex size-5 items-center justify-center",
className
)}
data-slot="breadcrumb-ellipsis"
role="presentation"
{...rest}
>
<MoreHorizontalIcon className="size-4" />
</ark.span>
);
};Update the import paths to match your project setup.
Usage
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#">Home</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#">Components</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>Accessibility
| Key | Description |
|---|---|
Enter | Activate the focused control. |
Demos
Collapsed
Custom Separator
With Icon
With Link
With Menu
API Reference
Breadcrumb
nav
PropType
AttributeType
BreadcrumbList
ol
PropType
AttributeType
BreadcrumbItem
li
PropType
AttributeType
BreadcrumbLink
a
PropType
AttributeType
BreadcrumbPage
span
PropType
AttributeType
BreadcrumbSeparator
li
PropType
AttributeType
BreadcrumbEllipsis
span
PropType
AttributeType