Breadcrumb
Breadcrumbs are a navigational UI component that helps users keep track of their location within a website or web app.
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
export default function Basic() {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/reports">Reports</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Export</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}
import {
Breadcrumb,
BreadcrumbEllipsis,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
export default function MoreItems() {
return (
<>
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Reports</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/reports">Reports</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Social</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/reports">Reports</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/social">Social</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Export</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbEllipsis />
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/reports">Reports</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="/social">Social</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Export</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
</>
);
}
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import { ArrowLongRight } from "@mynaui/icons-react";
export default function ArrowSeparator() {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="/">Dashboard</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<ArrowLongRight />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbLink href="/reports">Reports</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<ArrowLongRight />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbPage>Export</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import { Cart, ChevronRight, Home, Tag } from "@mynaui/icons-react";
export default function IconBreadcrumb() {
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink className="flex items-center gap-1">
<Home className="size-4 stroke-2" />
<span>Home</span>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<ChevronRight className="stroke-2" />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbLink className="flex items-center gap-1">
<Cart className="size-4 stroke-2" />
<span>Products</span>
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<ChevronRight className="stroke-2" />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbPage className="flex items-center gap-1">
<Tag className="size-4 stroke-2" />
<span>Category</span>
</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import { ChevronRight, Dots } from "@mynaui/icons-react";
import {
DropdownMenu,
DropdownMenuContent,
DropdownMenuItem,
DropdownMenuTrigger,
} from "@/components/ui/dropdown-menu";
export default function TruncatedBreadcrumb() {
const items = [
{ name: "Home", href: "#" },
{ name: "Products", href: "#" },
{ name: "Electronics", href: "#" },
{ name: "Computers", href: "#" },
{ name: "Laptops", href: "#" },
{ name: "Gaming", href: "#" },
{
name: "This is a very long category name that needs to be truncated",
href: "#",
current: true,
},
];
// Function to truncate text
const truncateText = (text: string, maxLength: number) => {
if (text.length <= maxLength) return text;
return text.slice(0, maxLength) + "...";
};
return (
<Breadcrumb>
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href={items[0].href}>{items[0].name}</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator>
<ChevronRight className="stroke-2" />
</BreadcrumbSeparator>
{items.length > 3 && (
<BreadcrumbItem>
<DropdownMenu>
<DropdownMenuTrigger>
<Dots className="stroke-2" />
</DropdownMenuTrigger>
<DropdownMenuContent align="start">
{items.slice(1, -1).map((item) => (
<DropdownMenuItem key={item.name}>
<a href={item.href} className="w-full">
{item.name}
</a>
</DropdownMenuItem>
))}
</DropdownMenuContent>
</DropdownMenu>
</BreadcrumbItem>
)}
{/* Show penultimate item if there are more than 2 items */}
{items.length > 2 && (
<>
<BreadcrumbSeparator>
<ChevronRight className="stroke-2" />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbLink href={items[items.length - 2].href}>
{items[items.length - 2].name}
</BreadcrumbLink>
</BreadcrumbItem>
</>
)}
{/* Last item (always shown, truncated if needed) */}
<BreadcrumbSeparator>
<ChevronRight className="stroke-2" />
</BreadcrumbSeparator>
<BreadcrumbItem>
<BreadcrumbPage
className="max-w-[200px] truncate block"
title={items[items.length - 1].name}
>
{truncateText(items[items.length - 1].name, 25)}
</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}