* fix: adding language support package * fix: language support implementation using mobx * fix: adding more languages for support * fix: profile settings translations * feat: added language support for sidebar and user settings * feat: added language support for deactivation modal * fix: added project sync after transfer issues (#6200) * code refactor and improvement (#6203) * chore: package code refactoring * chore: component restructuring and refactor * chore: comment create improvement * refactor: enhance workspace and project wrapper modularity (#6207) * [WEB-2678]feat: added functionality to add labels directly from dropdown (#6211) * enhancement:added functionality to add features directly from dropdown * fix: fixed import order * fix: fixed lint errors * chore: added common component for project activity (#6212) * chore: added common component for project activity * fix: added enum * fix: added enum for initiatives * - Do not clear temp files that are locked. (#6214) - Handle edge cases in sync workspace * fix: labels empty state for drop down (#6216) * refactor: remove cn helper function from the editor package (#6217) * * feat: added language support to issue create modal in sidebar * fix: project activity type * * fix: added missing translations * fix: modified translation for plurals * fix: fixed spanish translation * dev: language type error in space user profile types * fix: type fixes * chore: added alpha tag --------- Co-authored-by: sriram veeraghanta <veeraghanta.sriram@gmail.com> Co-authored-by: Anmol Singh Bhatia <121005188+anmolsinghbhatia@users.noreply.github.com> Co-authored-by: Prateek Shourya <prateekshourya29@gmail.com> Co-authored-by: Akshita Goyal <36129505+gakshita@users.noreply.github.com> Co-authored-by: Satish Gandham <satish.iitg@gmail.com> Co-authored-by: Aaryan Khandelwal <65252264+aaryan610@users.noreply.github.com> Co-authored-by: gurusinath <gurusainath007@gmail.com>
113 lines
3.9 KiB
TypeScript
113 lines
3.9 KiB
TypeScript
"use client";
|
|
|
|
// icons
|
|
import { Briefcase, Home, Inbox, Layers, PenSquare, BarChart2 } from "lucide-react";
|
|
// ui
|
|
import { UserActivityIcon, ContrastIcon } from "@plane/ui";
|
|
import { Props } from "@/components/icons/types";
|
|
// constants
|
|
import { TLinkOptions } from "@/constants/dashboard";
|
|
// plane web constants
|
|
import { EUserPermissions } from "@/plane-web/constants/user-permissions";
|
|
// plane web types
|
|
import { TSidebarUserMenuItemKeys, TSidebarWorkspaceMenuItemKeys } from "@/plane-web/types/dashboard";
|
|
|
|
export type TSidebarMenuItems<T extends TSidebarUserMenuItemKeys | TSidebarWorkspaceMenuItemKeys> = {
|
|
value: T;
|
|
label: string;
|
|
key: string;
|
|
href: string;
|
|
access: EUserPermissions[];
|
|
highlight: (pathname: string, baseUrl: string, options?: TLinkOptions) => boolean;
|
|
Icon: React.FC<Props>;
|
|
};
|
|
|
|
export type TSidebarUserMenuItems = TSidebarMenuItems<TSidebarUserMenuItemKeys>;
|
|
|
|
export const SIDEBAR_USER_MENU_ITEMS: TSidebarUserMenuItems[] = [
|
|
{
|
|
value: "home",
|
|
label: "Home",
|
|
key: "home",
|
|
href: ``,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
|
|
highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/`,
|
|
Icon: Home,
|
|
},
|
|
{
|
|
value: "your-work",
|
|
label: "Your work",
|
|
key: "your_work",
|
|
href: "/profile",
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
|
|
highlight: (pathname: string, baseUrl: string, options?: TLinkOptions) =>
|
|
options?.userId ? pathname.includes(`${baseUrl}/profile/${options?.userId}`) : false,
|
|
Icon: UserActivityIcon,
|
|
},
|
|
{
|
|
value: "notifications",
|
|
label: "Inbox",
|
|
key: "notifications",
|
|
href: `/notifications`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
|
|
highlight: (pathname: string, baseUrl: string) => pathname.includes(`${baseUrl}/notifications/`),
|
|
Icon: Inbox,
|
|
},
|
|
{
|
|
value: "drafts",
|
|
label: "Drafts",
|
|
key: "drafts",
|
|
href: `/drafts`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
|
|
highlight: (pathname: string, baseUrl: string) => pathname.includes(`${baseUrl}/drafts/`),
|
|
Icon: PenSquare,
|
|
},
|
|
];
|
|
|
|
export type TSidebarWorkspaceMenuItems = TSidebarMenuItems<TSidebarWorkspaceMenuItemKeys>;
|
|
|
|
export const SIDEBAR_WORKSPACE_MENU: Partial<Record<TSidebarWorkspaceMenuItemKeys, TSidebarWorkspaceMenuItems>> = {
|
|
projects: {
|
|
value: "projects",
|
|
key: "projects",
|
|
label: "Projects",
|
|
href: `/projects`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
|
|
highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/projects/`,
|
|
Icon: Briefcase,
|
|
},
|
|
"all-issues": {
|
|
value: "all-issues",
|
|
key: "views",
|
|
label: "Views",
|
|
href: `/workspace-views/all-issues`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
|
|
highlight: (pathname: string, baseUrl: string) => pathname.includes(`${baseUrl}/workspace-views/`),
|
|
Icon: Layers,
|
|
},
|
|
"active-cycles": {
|
|
value: "active-cycles",
|
|
key: "active_cycles",
|
|
label: "Cycles",
|
|
href: `/active-cycles`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
|
|
highlight: (pathname: string, baseUrl: string) => pathname === `${baseUrl}/active-cycles/`,
|
|
Icon: ContrastIcon,
|
|
},
|
|
analytics: {
|
|
value: "analytics",
|
|
key: "analytics",
|
|
label: "Analytics",
|
|
href: `/analytics`,
|
|
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER],
|
|
highlight: (pathname: string, baseUrl: string) => pathname.includes(`${baseUrl}/analytics/`),
|
|
Icon: BarChart2,
|
|
},
|
|
};
|
|
|
|
export const SIDEBAR_WORKSPACE_MENU_ITEMS: TSidebarWorkspaceMenuItems[] = [
|
|
SIDEBAR_WORKSPACE_MENU?.projects,
|
|
SIDEBAR_WORKSPACE_MENU?.["all-issues"],
|
|
SIDEBAR_WORKSPACE_MENU?.["active-cycles"],
|
|
SIDEBAR_WORKSPACE_MENU?.analytics,
|
|
].filter((item): item is TSidebarWorkspaceMenuItems => item !== undefined);
|