import { Link } from "@/lib/router"; import { Menu } from "lucide-react"; import { useBreadcrumbs } from "../context/BreadcrumbContext"; import { useSidebar } from "../context/SidebarContext"; import { useCompany } from "../context/CompanyContext"; import { Button } from "@/components/ui/button"; import { Breadcrumb, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator, } from "@/components/ui/breadcrumb"; import { Fragment, useMemo } from "react"; import { PluginSlotOutlet } from "@/plugins/slots"; export function BreadcrumbBar() { const { breadcrumbs } = useBreadcrumbs(); const { toggleSidebar, isMobile } = useSidebar(); const { selectedCompanyId, selectedCompany } = useCompany(); const globalToolbarSlotContext = useMemo( () => ({ companyId: selectedCompanyId ?? null, companyPrefix: selectedCompany?.issuePrefix ?? null, }), [selectedCompanyId, selectedCompany?.issuePrefix], ); const globalToolbarSlots = ( ); if (breadcrumbs.length === 0) { return (
{globalToolbarSlots}
); } const menuButton = isMobile && ( ); // Single breadcrumb = page title (uppercase) if (breadcrumbs.length === 1) { return (
{menuButton}

{breadcrumbs[0].label}

{globalToolbarSlots}
); } // Multiple breadcrumbs = breadcrumb trail return (
{menuButton}
{breadcrumbs.map((crumb, i) => { const isLast = i === breadcrumbs.length - 1; return ( {i > 0 && } {isLast || !crumb.href ? ( {crumb.label} ) : ( {crumb.label} )} ); })}
{globalToolbarSlots}
); }