"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, Header, 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 { cn } from "@/helpers/common.helper"; import { useAppTheme, useUser, useUserPermissions } from "@/hooks/store"; import { EUserPermissions, EUserPermissionsLevel } from "@/plane-web/constants/user-permissions"; 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 { data: currentUser } = useUser(); const { workspaceUserInfo, allowPermissions } = useUserPermissions(); // derived values const isAuthorized = allowPermissions( [EUserPermissions.ADMIN, EUserPermissions.MEMBER], EUserPermissionsLevel.WORKSPACE ); if (!workspaceUserInfo) 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} ))}
); });