Files
star-erp/resources/js/Components/shared/BreadcrumbNav.tsx

58 lines
1.9 KiB
TypeScript
Raw Normal View History

2025-12-30 15:03:19 +08:00
import React from "react";
import { Link } from "@inertiajs/react";
import {
Breadcrumb,
BreadcrumbItem,
BreadcrumbLink,
BreadcrumbList,
BreadcrumbPage,
BreadcrumbSeparator,
} from "@/Components/ui/breadcrumb";
2026-01-07 13:12:07 +08:00
import { cn } from "@/lib/utils";
2025-12-30 15:03:19 +08:00
export interface BreadcrumbItemType {
label: string;
href?: string;
isPage?: boolean;
}
interface BreadcrumbNavProps {
items: BreadcrumbItemType[];
className?: string;
}
const BreadcrumbNav = ({ items, className }: BreadcrumbNavProps) => {
return (
<Breadcrumb className={className}>
<BreadcrumbList>
{items.map((item, index) => (
<React.Fragment key={index}>
<BreadcrumbItem>
2026-01-07 13:12:07 +08:00
{(item.isPage || !item.href || item.href === "#") ? (
<BreadcrumbPage className={cn(
"font-medium",
item.isPage ? "text-gray-500" : "text-gray-400 cursor-default"
)}>
{item.label}
</BreadcrumbPage>
2025-12-30 15:03:19 +08:00
) : (
<BreadcrumbLink asChild>
<Link
2026-01-07 13:12:07 +08:00
href={item.href}
2025-12-30 15:03:19 +08:00
className="text-[#01ab83] hover:text-[#018a6a] font-medium transition-colors"
>
{item.label}
</Link>
</BreadcrumbLink>
)}
</BreadcrumbItem>
{index < items.length - 1 && <BreadcrumbSeparator />}
</React.Fragment>
))}
</BreadcrumbList>
</Breadcrumb>
);
};
export default BreadcrumbNav;