Breadcrumb
Shows the path to the current page as a trail of navigable crumbs.
Basic
Show codeHide code
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@makeplane/propel/components/breadcrumb";
export default function BasicDemo() {
return (
<Breadcrumb aria-label="Breadcrumb">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Plane
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Projects
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Design
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Work items</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}Collapsed crumbs
When the trail grows too long, collapse the middle crumbs behind an ellipsis menu that opens the hidden crumbs.
Show codeHide code
import {
Breadcrumb,
BreadcrumbEllipsisTrigger,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@makeplane/propel/components/breadcrumb";
import { Menu, MenuContent, MenuItem } from "@makeplane/propel/components/menu";
export default function CollapsedCrumbsDemo() {
return (
<Breadcrumb aria-label="Breadcrumb">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Plane
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<Menu>
<BreadcrumbEllipsisTrigger aria-label="Show more breadcrumbs" />
<MenuContent sizing="auto">
<MenuItem label="Projects" />
<MenuItem label="Design" />
</MenuContent>
</Menu>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Components
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Breadcrumb</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}Menu crumb
A crumb whose label opens a menu to switch the current step between sibling contexts without leaving the trail. Its own chevron is the breadcrumb chevron, so no separator follows it.
Show codeHide code
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbMenuTrigger,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@makeplane/propel/components/breadcrumb";
import { Icon } from "@makeplane/propel/components/icon";
import { Menu, MenuContent, MenuItem } from "@makeplane/propel/components/menu";
import { Layers } from "lucide-react";
export default function MenuCrumbDemo() {
return (
<Breadcrumb aria-label="Breadcrumb">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Plane
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<Menu>
<BreadcrumbMenuTrigger
icon={<Icon icon={Layers} tint="tertiary" magnitude="md" />}
label="Plane Design"
/>
<MenuContent>
<MenuItem label="Plane Web" />
<MenuItem label="Plane Mobile" />
<MenuItem label="Plane Server" />
</MenuContent>
</Menu>
</BreadcrumbItem>
<BreadcrumbItem>
<BreadcrumbPage>Components</BreadcrumbPage>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}View switcher
The menu crumb composes propel’s Menu rows, so it supports a single-select list — the active view carries selected and shows the trailing check.
Show codeHide code
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbMenuTrigger,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@makeplane/propel/components/breadcrumb";
import { Menu, MenuContent, MenuItem } from "@makeplane/propel/components/menu";
export default function ViewSwitcherDemo() {
return (
<Breadcrumb aria-label="Breadcrumb">
<BreadcrumbList>
<BreadcrumbItem>
<BreadcrumbLink href="#" onClick={(event) => event.preventDefault()}>
Plane
</BreadcrumbLink>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<BreadcrumbPage>Work items</BreadcrumbPage>
</BreadcrumbItem>
<BreadcrumbSeparator />
<BreadcrumbItem>
<Menu>
<BreadcrumbMenuTrigger label="List" />
<MenuContent>
<MenuItem selected label="List" />
<MenuItem label="Board" />
<MenuItem label="Calendar" />
<MenuItem label="Spreadsheet" />
</MenuContent>
</Menu>
</BreadcrumbItem>
</BreadcrumbList>
</Breadcrumb>
);
}Installation
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@makeplane/propel/components/breadcrumb";
Props
Breadcrumb
| Prop | Type | Required | Description |
|---|---|---|---|
| render | ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, {}> | No | Allows you to replace the component's HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render. |
| aria-label | string | Yes |
BreadcrumbMenuTrigger
| Prop | Type | Required | Description |
|---|---|---|---|
| render | ReactElement<unknown, string | JSXElementConstructor<any>> | ComponentRenderFn<HTMLProps, MenuTriggerState> | No | Allows you to replace the component's HTML element with a different tag, or compose it with another component. Accepts a `ReactElement` or a function that returns the element to render. |
| icon | ReactNode | No | Leading element, typically `<Icon icon={...} tint="tertiary" magnitude="md" />`. |
| label | string | No | The crumb label. |