import { Fragment } from "react"; import { Palette, PanelRightIcon } from "lucide-react"; import { Breadcrumb, BreadcrumbEllipsis, BreadcrumbItem, BreadcrumbLink, BreadcrumbList, BreadcrumbPage, BreadcrumbSeparator } from "@/components/ui/breadcrumb"; import { Button } from "@/components/ui/button"; import { SidebarTrigger, useSidebar } from "@/components/ui/sidebar"; function pathSegmentsForEntry(entry, fallbackLabel) { if (!entry) { return [fallbackLabel]; } const sourcePath = String(entry.source?.path || entry.step?.path || entry.id || "").trim(); const segments = sourcePath ? sourcePath.replace(/\\/g, "/").split("/").filter(Boolean) : []; if (!segments.length) { return [fallbackLabel]; } return [ ...segments.slice(0, -1), fallbackLabel ]; } function collapsedBreadcrumbSegments(segments) { if (segments.length <= 3) { return segments.map((segment) => ({ type: "segment", label: segment })); } return [ { type: "segment", label: segments[0] }, { type: "ellipsis", label: "..." }, ...segments.slice(-2).map((segment) => ({ type: "segment", label: segment })) ]; } function fileSheetLabel(fileSheetKind) { if (fileSheetKind === "dxf") { return "DXF sheet"; } if (fileSheetKind === "urdf") { return "URDF sheet"; } if (fileSheetKind === "stepAssembly") { return "assembly sheet"; } return "file sheet"; } export default function CadWorkspaceTopBar({ previewMode, lookMenuOpen, sidebarLabelForEntry, selectedEntry, setLookMenuOpen, fileSheetKind = "", fileSheetOpen = false, onToggleFileSheet }) { const { isMobile, state: sidebarState } = useSidebar(); if (previewMode) { return null; } const selectedFileLabel = selectedEntry ? sidebarLabelForEntry(selectedEntry) : "Select a file"; const selectedFileTitle = selectedEntry ? String(selectedEntry.source?.path || selectedEntry.step?.path || selectedEntry.id || selectedFileLabel) : selectedFileLabel; const breadcrumbSegments = pathSegmentsForEntry(selectedEntry, selectedFileLabel); const breadcrumbItems = collapsedBreadcrumbSegments(breadcrumbSegments); const activeIconButtonClasses = "bg-accent text-accent-foreground"; const showFileSheetToggle = !!fileSheetKind && typeof onToggleFileSheet === "function"; const lookSheetToggleLabel = lookMenuOpen ? "Collapse viewer settings" : "Expand viewer settings"; const fileSheetToggleLabel = fileSheetOpen ? `Collapse ${fileSheetLabel(fileSheetKind)}` : `Expand ${fileSheetLabel(fileSheetKind)}`; const showTopBarSidebarTrigger = isMobile || sidebarState !== "expanded"; return (
{showTopBarSidebarTrigger ? ( ) : null} {breadcrumbItems.map((item, index) => ( {item.type === "ellipsis" ? ( Collapsed path ) : index < breadcrumbItems.length - 1 ? ( {item.label} ) : ( {item.label} )} {index < breadcrumbItems.length - 1 ? ( ) : null} ))}
{showFileSheetToggle ? ( ) : null}
); }