1'use client';23import { Breadcrumb } from '@/components/ui/breadcrumb';45export function Default() {6 return (7 <Breadcrumb>8 <Breadcrumb.List>9 <Breadcrumb.Item>10 <Breadcrumb.Link href="/">Home</Breadcrumb.Link>11 </Breadcrumb.Item>12 <Breadcrumb.Separator />13 <Breadcrumb.Item>14 <Breadcrumb.Link href="/docs">Documentation</Breadcrumb.Link>15 </Breadcrumb.Item>16 <Breadcrumb.Separator />17 <Breadcrumb.Item>18 <Breadcrumb.Page>Components</Breadcrumb.Page>19 </Breadcrumb.Item>20 </Breadcrumb.List>21 </Breadcrumb>22 );23}
Installation
Copy and paste the following code in your project.
import { ArrowRight01Icon, MoreHorizontalIcon } from '@hugeicons/core-free-icons';import { HugeiconsIcon } from '@hugeicons/react';import * as React from 'react';import { cn } from '../lib/cn';const BreadcrumbRoot = ({ className, ...props }: React.ComponentProps<'nav'>) => {return <nav aria-label="breadcrumb" className={className} {...props} />;};const BreadcrumbList = ({ className, ...props }: React.ComponentProps<'ol'>) => {return (<olclassName={cn('text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm wrap-break-word sm:gap-2.5',className,)}{...props}/>);};const BreadcrumbItem = ({ className, ...props }: React.ComponentProps<'li'>) => {return <li className={cn('inline-flex items-center gap-1.5', className)} {...props} />;};type BreadcrumbLinkProps = React.ComponentProps<'a'> & {children: React.ReactNode;};const BreadcrumbLink = ({ className, children, ...props }: BreadcrumbLinkProps) => {const isLinkComponent =React.isValidElement(children) &&(typeof children.type === 'function' || typeof children.type === 'object');if (isLinkComponent) {return <span className={cn('hover:text-foreground', className)}>{children}</span>;}return (<a className={cn('hover:text-foreground', className)} {...props}>{children}</a>);};const BreadcrumbPage = ({ className, ...props }: React.ComponentProps<'span'>) => {return (<spanrole="link"aria-disabled="true"aria-current="page"className={cn('text-foreground font-normal', className)}{...props}/>);};const BreadcrumbSeparator = ({ children, className, ...props }: React.ComponentProps<'li'>) => {return (<lirole="presentation"aria-hidden="true"className={cn('[&>svg]:size-3.5', className)}{...props}>{children ?? <HugeiconsIcon icon={ArrowRight01Icon} size={14} className="size-3.5" />}</li>);};const BreadcrumbEllipsis = ({ className, ...props }: React.ComponentProps<'span'>) => {return (<spanrole="presentation"aria-hidden="true"className={cn('flex size-9 items-center justify-center', className)}{...props}><HugeiconsIcon icon={MoreHorizontalIcon} className="size-4" size={16} /><span className="sr-only">More</span></span>);};const Breadcrumb = Object.assign(BreadcrumbRoot, {List: BreadcrumbList,Item: BreadcrumbItem,Link: BreadcrumbLink,Page: BreadcrumbPage,Separator: BreadcrumbSeparator,Ellipsis: BreadcrumbEllipsis,});export { Breadcrumb };
Make sure to update the import paths according to your project structure.
Anatomy
import { Breadcrumb } from '@/components/ui/breadcrumb';
<Breadcrumb><Breadcrumb.List><Breadcrumb.Item><Breadcrumb.Link href="/">Home</Breadcrumb.Link></Breadcrumb.Item><Breadcrumb.Separator /><Breadcrumb.Item><Breadcrumb.Link href="/docs">Documentation</Breadcrumb.Link></Breadcrumb.Item><Breadcrumb.Separator /><Breadcrumb.Item><Breadcrumb.Page>Breadcrumb</Breadcrumb.Page></Breadcrumb.Item></Breadcrumb.List></Breadcrumb>
API Reference
Breadcrumb
The root container for the breadcrumb navigation.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbList
Container for breadcrumb items with proper spacing and layout.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbItem
Individual breadcrumb item wrapper.
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbLink
Clickable link for navigation between pages.
| Prop | Type | Default | Description |
|---|---|---|---|
href | string | - | URL to navigate to |
className | string | - | Additional CSS classes |
BreadcrumbPage
Represents the current page (non-clickable).
| Prop | Type | Default | Description |
|---|---|---|---|
className | string | - | Additional CSS classes |
BreadcrumbSeparator
Visual separator between breadcrumb items.
| Prop | Type | Default | Description |
|---|---|---|---|
children | ReactNode | Arrow icon | Custom separator element |
className | string | - | Additional CSS classes |