forked from github/plane
44 lines
1.4 KiB
TypeScript
44 lines
1.4 KiB
TypeScript
|
import { FC } from "react";
|
||
|
import { observer } from "mobx-react";
|
||
|
import Link from "next/link";
|
||
|
import { useRouter } from "next/router";
|
||
|
// constants
|
||
|
import { ARCHIVES_TAB_LIST } from "@/constants/archives";
|
||
|
// hooks
|
||
|
import { useProject } from "@/hooks/store";
|
||
|
|
||
|
export const ArchiveTabsList: FC = observer(() => {
|
||
|
// router
|
||
|
const router = useRouter();
|
||
|
const { workspaceSlug, projectId } = router.query;
|
||
|
const activeTab = router.pathname.split("/").pop();
|
||
|
// store hooks
|
||
|
const { getProjectById } = useProject();
|
||
|
|
||
|
// derived values
|
||
|
if (!projectId) return null;
|
||
|
const projectDetails = getProjectById(projectId?.toString());
|
||
|
if (!projectDetails) return null;
|
||
|
|
||
|
return (
|
||
|
<>
|
||
|
{ARCHIVES_TAB_LIST.map(
|
||
|
(tab) =>
|
||
|
tab.shouldRender(projectDetails) && (
|
||
|
<Link key={tab.key} href={`/${workspaceSlug}/projects/${projectId}/archives/${tab.key}`}>
|
||
|
<span
|
||
|
className={`flex min-w-min flex-shrink-0 whitespace-nowrap border-b-2 py-3 px-4 text-sm font-medium outline-none ${
|
||
|
tab.key === activeTab
|
||
|
? "border-custom-primary-100 text-custom-primary-100"
|
||
|
: "border-transparent hover:border-custom-border-200 text-custom-text-300 hover:text-custom-text-400"
|
||
|
}`}
|
||
|
>
|
||
|
{tab.label}
|
||
|
</span>
|
||
|
</Link>
|
||
|
)
|
||
|
)}
|
||
|
</>
|
||
|
);
|
||
|
});
|