ForFarm/frontend/app/(sidebar)/dynamic-breadcrumb.tsx

48 lines
1.3 KiB
TypeScript

import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/components/ui/breadcrumb";
import React from "react";
export interface DynamicBreadcrumbProps {
pathname: string;
}
export default function DynamicBreadcrumb({ pathname }: DynamicBreadcrumbProps) {
const segments = pathname.split("/").filter(Boolean);
const breadcrumbItems = segments.map((segment, index) => {
const href = "/" + segments.slice(0, index + 1).join("/");
const title = segment.charAt(0).toUpperCase() + segment.slice(1);
return { title, href };
});
return (
<Breadcrumb>
<BreadcrumbList>
{breadcrumbItems.map((item, index) => {
const isLast = index === breadcrumbItems.length - 1;
return (
<React.Fragment key={item.href}>
{isLast ? (
<BreadcrumbItem>
<BreadcrumbPage>{item.title}</BreadcrumbPage>
</BreadcrumbItem>
) : (
<BreadcrumbItem>
<BreadcrumbLink href={item.href}>{item.title}</BreadcrumbLink>
</BreadcrumbItem>
)}
{index < breadcrumbItems.length - 1 && <BreadcrumbSeparator />}
</React.Fragment>
);
})}
</BreadcrumbList>
</Breadcrumb>
);
}