"use client"; import { observer } from "mobx-react"; import { ProjectIcon } from "@plane/propel/icons"; // plane imports import type { ICustomSearchSelectOption } from "@plane/types"; import { BreadcrumbNavigationSearchDropdown, Breadcrumbs } from "@plane/ui"; // components import { Logo } from "@/components/common/logo"; import { SwitcherLabel } from "@/components/common/switcher-label"; // hooks import { useProject } from "@/hooks/store/use-project"; import { useAppRouter } from "@/hooks/use-app-router"; import type { TProject } from "@/plane-web/types"; type TProjectBreadcrumbProps = { workspaceSlug: string; projectId: string; handleOnClick?: () => void; }; export const ProjectBreadcrumb = observer((props: TProjectBreadcrumbProps) => { const { workspaceSlug, projectId, handleOnClick } = props; // router const router = useAppRouter(); // store hooks const { joinedProjectIds, getPartialProjectById } = useProject(); const currentProjectDetails = getPartialProjectById(projectId); // store hooks if (!currentProjectDetails) return null; // derived values const switcherOptions = joinedProjectIds .map((projectId) => { const project = getPartialProjectById(projectId); return { value: projectId, query: project?.name, content: ( ), }; }) .filter((option) => option !== undefined) as ICustomSearchSelectOption[]; // helpers const renderIcon = (projectDetails: TProject) => ( ); return ( <> { router.push(`/${workspaceSlug}/projects/${value}/issues`); }} title={currentProjectDetails?.name} icon={renderIcon(currentProjectDetails)} handleOnClick={() => { if (handleOnClick) handleOnClick(); else router.push(`/${workspaceSlug}/projects/${currentProjectDetails.id}/issues/`); }} shouldTruncate /> } showSeparator={false} /> ); });