import * as React from "react";
import { ChevronRight, MoreHorizontal } from "lucide-react";
import { cn } from "../../lib/utils";
const Breadcrumb = React.forwardRef<
HTMLElement,
React.ComponentPropsWithoutRef<"nav"> & {
separator?: React.ReactNode
}
>(({ ...props }, ref) => );
Breadcrumb.displayName = "Breadcrumb";
const BreadcrumbList = React.forwardRef<
HTMLOListElement,
React.ComponentPropsWithoutRef<"ol">
>(({ className, ...props }, ref) => (
));
BreadcrumbList.displayName = "BreadcrumbList";
const BreadcrumbItem = React.forwardRef<
HTMLLIElement,
React.ComponentPropsWithoutRef<"li">
>(({ className, ...props }, ref) => (
));
BreadcrumbItem.displayName = "BreadcrumbItem";
interface BreadcrumbLinkProps extends React.ComponentPropsWithoutRef<"a"> {
asChild?: boolean;
}
const BreadcrumbLink = React.forwardRef<
HTMLAnchorElement,
BreadcrumbLinkProps
>(({ asChild, className, children, ...props }, ref) => {
if (asChild) {
if (React.isValidElement(children)) {
// **KEY CHANGE HERE: Assert the type of children for cloneElement**
return React.cloneElement(children as React.ReactElement, {
ref, // The ref from forwardRef
className: cn(
"transition-colors hover:text-foreground",
className,
(children.props as any).className // Access existing className safely
),
...props, // Spread any other props to the child
});
}
console.warn("BreadcrumbLink: When `asChild` is true, a single React element child is expected.");
return null;
}
return (
{children}
);
});
BreadcrumbLink.displayName = "BreadcrumbLink";
const BreadcrumbPage = React.forwardRef<
HTMLSpanElement,
React.ComponentPropsWithoutRef<"span">
>(({ className, ...props }, ref) => (
));
BreadcrumbPage.displayName = "BreadcrumbPage";
const BreadcrumbSeparator = ({
children,
className,
...props
}: React.ComponentProps<"li">) => (
svg]:size-3.5", className)}
{...props}
>
{children ?? }
);
BreadcrumbSeparator.displayName = "BreadcrumbSeparator";
const BreadcrumbEllipsis = ({
className,
...props
}: React.ComponentProps<"span">) => (
More
);
BreadcrumbEllipsis.displayName = "BreadcrumbEllipsis";
export {
Breadcrumb,
BreadcrumbList,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbPage,
BreadcrumbSeparator,
BreadcrumbEllipsis,
};