[WEB-4050] feat: breadcrumbs revamp (#7188)

* chore: project feature enum added

* feat: revamp breadcrumb and add navigation dropdown component

* chore: custom search select component refactoring

* chore: breadcrumb stories added

* chore: switch label and breadcrumb link component refactor

* chore: project navigation helper function added

* chore: common breadcrumb component added

* chore: breadcrumb refactoring

* chore: code refactor

* chore: code refactor

* fix: build error

* fix: nprogress and button tooltip

* chore: code refactor

* chore: workspace view breadcrumb improvements

* chore: code refactor

* chore: code refactor

* chore: code refactor

* chore: code refactor

---------

Co-authored-by: vamsikrishnamathala <matalav55@gmail.com>
This commit is contained in:
Anmol Singh Bhatia 2025-06-19 17:17:14 +05:30 committed by GitHub
parent 64fd0b2830
commit 2b7a17b484
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
44 changed files with 1251 additions and 581 deletions

View file

@ -0,0 +1,77 @@
import { FileText, Layers } from "lucide-react";
import { EUserPermissions, EProjectFeatureKey } from "@plane/constants";
import { ContrastIcon, DiceIcon, Intake, LayersIcon } from "@plane/ui";
import { TNavigationItem } from "@/components/workspace";
export const getProjectFeatureNavigation = (
workspaceSlug: string,
projectId: string,
project: {
cycle_view: boolean;
module_view: boolean;
issue_views_view: boolean;
page_view: boolean;
inbox_view: boolean;
}
): TNavigationItem[] => [
{
i18n_key: "sidebar.work_items",
key: EProjectFeatureKey.WORK_ITEMS,
name: "Work items",
href: `/${workspaceSlug}/projects/${projectId}/issues`,
icon: LayersIcon,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
shouldRender: true,
sortOrder: 1,
},
{
i18n_key: "sidebar.cycles",
key: EProjectFeatureKey.CYCLES,
name: "Cycles",
href: `/${workspaceSlug}/projects/${projectId}/cycles`,
icon: ContrastIcon,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
shouldRender: project.cycle_view,
sortOrder: 2,
},
{
i18n_key: "sidebar.modules",
key: EProjectFeatureKey.MODULES,
name: "Modules",
href: `/${workspaceSlug}/projects/${projectId}/modules`,
icon: DiceIcon,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
shouldRender: project.module_view,
sortOrder: 3,
},
{
i18n_key: "sidebar.views",
key: EProjectFeatureKey.VIEWS,
name: "Views",
href: `/${workspaceSlug}/projects/${projectId}/views`,
icon: Layers,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
shouldRender: project.issue_views_view,
sortOrder: 4,
},
{
i18n_key: "sidebar.pages",
key: EProjectFeatureKey.PAGES,
name: "Pages",
href: `/${workspaceSlug}/projects/${projectId}/pages`,
icon: FileText,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
shouldRender: project.page_view,
sortOrder: 5,
},
{
i18n_key: "sidebar.intake",
key: EProjectFeatureKey.INTAKE,
name: "Intake",
href: `/${workspaceSlug}/projects/${projectId}/intake`,
icon: Intake,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
shouldRender: project.inbox_view,
sortOrder: 6,
},
];