"use client"; // ui import { FC } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import { useParams } from "next/navigation"; import { ChevronDown, PanelRight } from "lucide-react"; import { IUserProfileProjectSegregation } from "@plane/types"; import { Breadcrumbs, CustomHeader, CustomMenu, UserActivityIcon } from "@plane/ui"; import { BreadcrumbLink } from "@/components/common"; // components import { ProfileIssuesFilter } from "@/components/profile"; import { PROFILE_ADMINS_TAB, PROFILE_VIEWER_TAB } from "@/constants/profile"; import { EUserWorkspaceRoles } from "@/constants/workspace"; import { cn } from "@/helpers/common.helper"; import { useAppTheme, useUser } from "@/hooks/store"; type TUserProfileHeader = { userProjectsData: IUserProfileProjectSegregation | undefined; type?: string | undefined; showProfileIssuesFilter?: boolean; }; export const UserProfileHeader: FC = observer((props) => { const { userProjectsData, type = undefined, showProfileIssuesFilter } = props; // router const { workspaceSlug, userId } = useParams(); // store hooks const { toggleProfileSidebar, profileSidebarCollapsed } = useAppTheme(); const { membership: { currentWorkspaceRole }, data: currentUser, } = useUser(); // derived values const isAuthorized = !!currentWorkspaceRole && currentWorkspaceRole >= EUserWorkspaceRoles.VIEWER; if (!currentWorkspaceRole) return null; const tabsList = isAuthorized ? [...PROFILE_VIEWER_TAB, ...PROFILE_ADMINS_TAB] : PROFILE_VIEWER_TAB; const userName = `${userProjectsData?.user_data?.first_name} ${userProjectsData?.user_data?.last_name}`; const isCurrentUser = currentUser?.id === userId; const breadcrumbLabel = `${isCurrentUser ? "Your" : userName} Work`; return (
} /> } />
{showProfileIssuesFilter && }
{type}
} customButtonClassName="flex flex-grow justify-center text-custom-text-200 text-sm" closeOnSelect > <> {tabsList.map((tab) => ( {tab.label} ))}
); });