Displays the path to the current resource using a hierarchy of links.
1import {2 Breadcrumb,3 BreadcrumbEllipsis,4 BreadcrumbItem,Installation
pnpm dlx sprawlify@latest add breadcrumbnpx sprawlify@latest add breadcrumbyarn sprawlify@latest add breadcrumbbunx --bun sprawlify@latest add breadcrumb
Install the following dependencies:
pnpm add @sprawlify/primitives @sprawlify/reactnpm install @sprawlify/primitives @sprawlify/reactyarn add @sprawlify/primitives @sprawlify/reactbun add @sprawlify/primitives @sprawlify/react
Add the following files to your project:
1import * as React from "react";2import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";3import { cn } from "@/lib/utils";4import { sprawlify } from "@sprawlify/react";56function Breadcrumb({ ...props }: React.ComponentProps<typeof sprawlify.nav>) {7 return (8 <sprawlify.nav9 data-scope="breadcrumb"10 data-part="root"11 aria-label="breadcrumb"12 data-slot="breadcrumb"13 {...props}14 />15 );16}1718function BreadcrumbList({ className, ...props }: React.ComponentProps<typeof sprawlify.ol>) {19 return (20 <sprawlify.ol21 data-scope="breadcrumb"22 data-part="list"23 data-slot="breadcrumb-list"24 className={cn(25 "flex flex-wrap items-center gap-1.5 text-sm break-words text-muted-foreground sm:gap-2.5",26 className,27 )}28 {...props}29 />30 );31}3233function BreadcrumbItem({ className, ...props }: React.ComponentProps<typeof sprawlify.li>) {34 return (35 <sprawlify.li36 data-scope="breadcrumb"37 data-part="item"38 data-slot="breadcrumb-item"39 className={cn("inline-flex items-center gap-1.5", className)}40 {...props}41 />42 );43}4445function BreadcrumbLink({46 asChild,47 className,48 ...props49}: React.ComponentProps<typeof sprawlify.a>) {50 return (51 <sprawlify.a52 data-scope="breadcrumb"53 data-part="link"54 data-slot="breadcrumb-link"55 className={cn("transition-colors hover:text-foreground", className)}56 {...props}57 />58 );59}6061function BreadcrumbPage({ className, ...props }: React.ComponentProps<typeof sprawlify.span>) {62 return (63 <sprawlify.span64 data-scope="breadcrumb"65 data-part="page"66 data-slot="breadcrumb-page"67 role="link"68 aria-disabled="true"69 aria-current="page"70 className={cn("font-normal text-foreground", className)}71 {...props}72 />73 );74}7576function BreadcrumbSeparator({77 children,78 className,79 ...props80}: React.ComponentProps<typeof sprawlify.li>) {81 return (82 <sprawlify.li83 data-scope="breadcrumb"84 data-part="separator"85 data-slot="breadcrumb-separator"86 role="presentation"87 aria-hidden="true"88 className={cn("[&>svg]:size-3.5", className)}89 {...props}90 >91 {children ?? <ChevronRightIcon />}92 </sprawlify.li>93 );94}9596function BreadcrumbEllipsis({ className, ...props }: React.ComponentProps<typeof sprawlify.span>) {97 return (98 <sprawlify.span99 data-scope="breadcrumb"100 data-part="ellipsis"101 data-slot="breadcrumb-ellipsis"102 role="presentation"103 aria-hidden="true"104 className={cn("flex size-9 items-center justify-center", className)}105 {...props}106 >107 <MoreHorizontalIcon className="size-4" />108 <span className="sr-only">More</span>109 </sprawlify.span>110 );111}112113export {114 Breadcrumb,115 BreadcrumbList,116 BreadcrumbItem,117 BreadcrumbLink,118 BreadcrumbPage,119 BreadcrumbSeparator,120 BreadcrumbEllipsis,121};122Update the import paths to match your project setup.
Usage
1import {
2 Breadcrumb,
3 BreadcrumbItem,
4 BreadcrumbLink,
5 BreadcrumbList,
6 BreadcrumbPage,
7 BreadcrumbSeparator,
8} from "@/components/ui/breadcrumb"1<Breadcrumb>
2 <BreadcrumbList>
3 <BreadcrumbItem>
4 <BreadcrumbLink href="/">Home</BreadcrumbLink>
5 </BreadcrumbItem>
6 <BreadcrumbSeparator />
7 <BreadcrumbItem>
8 <BreadcrumbLink href="/components">Components</BreadcrumbLink>
9 </BreadcrumbItem>
10 <BreadcrumbSeparator />
11 <BreadcrumbItem>
12 <BreadcrumbPage>Breadcrumb</BreadcrumbPage>
13 </BreadcrumbItem>
14 </BreadcrumbList>
15</Breadcrumb>Examples
Basic
A basic breadcrumb with a home link and a components link.
1import {2 Breadcrumb,3 BreadcrumbItem,4 BreadcrumbLink,Collapsed
We provide a <BreadcrumbEllipsis /> component to show a collapsed state when the breadcrumb is too long.
1import {2 Breadcrumb,3 BreadcrumbEllipsis,4 BreadcrumbItem,Custom Separator
Use a custom component as children for <BreadcrumbSeparator /> to create a custom separator.
1import {2 Breadcrumb,3 BreadcrumbItem,4 BreadcrumbLink,Dropdown
You can compose <BreadcrumbItem /> with a <DropdownMenu /> to create a dropdown in the breadcrumb.
1import {2 Breadcrumb,3 BreadcrumbItem,4 BreadcrumbLink,Get PRO
Need premium blocks and templates? Upgrade to PRO and get access.