import React from 'react'; import { classNames } from '~/utils/classNames'; import { motion } from 'framer-motion'; interface BreadcrumbItem { label: string; href?: string; icon?: string; onClick?: () => void; } interface BreadcrumbsProps { items: BreadcrumbItem[]; className?: string; separator?: string; maxItems?: number; renderItem?: (item: BreadcrumbItem, index: number, isLast: boolean) => React.ReactNode; } export function Breadcrumbs({ items, className, separator = 'i-ph:caret-right', maxItems = 0, renderItem, }: BreadcrumbsProps) { const displayItems = maxItems > 0 && items.length > maxItems ? [ ...items.slice(0, 1), { label: '...', onClick: undefined, href: undefined }, ...items.slice(-Math.max(1, maxItems - 2)), ] : items; const defaultRenderItem = (item: BreadcrumbItem, index: number, isLast: boolean) => { const content = (
{item.icon && } {item.label}
); if (item.href && !isLast) { return ( {content} ); } if (item.onClick && !isLast) { return ( {content} ); } return content; }; return ( ); }