kanpeki
uibreadcrumbsource: ok · refreshed
Breadcrumb
npx shadcn add "https://kanpeki.vercel.app/r/breadcrumb.json"free
No selection tags yet — empty means no evidence, not lack of support.
Dependencies
Bundle weight · lighticonslucide-react
Registry dependencies
@kanpeki/cva@kanpeki/custom-plugin
Files4 · source cached 10/8/2026, 7:41:09 AM
src/registry/ui/breadcrumb/index.ts
export * from "./breadcrumb";
export * as Breadcrumb from "./namespace";
export * from "./styles";
src/registry/ui/breadcrumb/breadcrumb.tsx
"use client";
import { ChevronRightIcon, MoreHorizontalIcon } from "lucide-react";
import {
Breadcrumb,
Breadcrumbs,
composeRenderProps,
} from "react-aria-components";
import { BreadcrumbStyles } from "./styles";
export interface BreadcrumbRootProps<T extends object>
extends React.ComponentProps<typeof Breadcrumbs<T>> {}
export function BreadcrumbRoot<T extends object>({
className,
...props
}: BreadcrumbRootProps<T>) {
return (
<Breadcrumbs
className={BreadcrumbStyles.Root({ className })}
data-slot="breadcrumb-root"
{...props}
/>
);
}
export interface BreadcrumbItemProps
extends React.ComponentProps<typeof Breadcrumb> {}
export function BreadcrumbItem({ className, ...props }: BreadcrumbItemProps) {
return (
<Breadcrumb
className={BreadcrumbStyles.Item({ className })}
data-slot="breadcrumb-item"
{...props}
/>
);
}
export interface BreadcrumbSeparatorProps
extends React.ComponentProps<typeof Breadcrumb> {}
export function BreadcrumbSeparator({
children,
className,
...props
}: BreadcrumbSeparatorProps) {
return (
<Breadcrumb
className={composeRenderProps(className, (className) =>
BreadcrumbStyles.Separator({ className })
)}
data-slot="breadcrumb-separator"
{...props}
>
{children ?? <ChevronRightIcon />}
</Breadcrumb>
);
}
export interface BreadcrumbEllipsisProps extends React.ComponentProps<"span"> {}
export function BreadcrumbEllipsis({
className,
...props
}: BreadcrumbEllipsisProps) {
return (
<span
aria-hidden="true"
className={BreadcrumbStyles.Ellipsis({ className })}
data-slot="breadcrumb-ellipsis"
role="presentation"
{...props}
>
<MoreHorizontalIcon className="size-4" />
<span className="sr-only">More</span>
</span>
);
}
src/registry/ui/breadcrumb/styles.ts
import { cva } from "~/registry/lib/cva";
export const BreadcrumbStyles = {
Ellipsis: cva({
base: ["flex size-9 items-center justify-center"],
}),
Item: cva({
base: ["inline-flex items-center gap-1.5"],
}),
Root: cva({
base: [
"flex flex-wrap items-center gap-1.5 break-words text-muted-foreground text-sm sm:gap-2.5",
],
}),
Separator: cva({
base: ["[&>svg]:size-3.5"],
}),
};
src/registry/ui/breadcrumb/namespace.ts
export {
BreadcrumbEllipsis as Ellipsis,
BreadcrumbItem as Item,
BreadcrumbRoot as Root,
BreadcrumbSeparator as Separator,
} from "./breadcrumb";