refactor: update import paths for project components and remove unused files in the projects module

This commit is contained in:
Atul Tameshwari
2026-06-17 18:00:02 +05:30
parent e364648ccf
commit 3a48eef483
20 changed files with 13 additions and 155 deletions

View File

@@ -8,7 +8,7 @@ import { Outlet } from "react-router";
// components
import { AppHeader } from "@/components/core/app-header";
import { ContentWrapper } from "@/components/core/content-wrapper";
import { ProjectInboxHeader } from "@/plane-web/components/projects/settings/intake/header";
import { ProjectInboxHeader } from "@/components/projects/settings/intake/header";
export default function ProjectInboxIssuesLayout() {
return (

View File

@@ -8,14 +8,13 @@
import { Outlet } from "react-router";
import { AppHeader } from "@/components/core/app-header";
import { ContentWrapper } from "@/components/core/content-wrapper";
// local components
import { ProjectsListHeader } from "@/plane-web/components/projects/header";
import { ProjectsListMobileHeader } from "@/plane-web/components/projects/mobile-header";
import { ProjectsListMobileHeader } from "@/components/projects/mobile-header";
import { ProjectsBaseHeader } from "@/components/project/header";
export default function ProjectListLayout() {
return (
<>
<AppHeader header={<ProjectsListHeader />} mobileHeader={<ProjectsListMobileHeader />} />
<AppHeader header={<ProjectsBaseHeader />} mobileHeader={<ProjectsListMobileHeader />} />
<ContentWrapper>
<Outlet />
</ContentWrapper>

View File

@@ -4,7 +4,7 @@
* See the LICENSE file for details.
*/
import { ProjectPageRoot } from "@/plane-web/components/projects/page";
import { ProjectPageRoot } from "@/components/projects/page";
function ProjectsPage() {
return <ProjectPageRoot />;

View File

@@ -8,14 +8,13 @@ import { Outlet } from "react-router";
// components
import { AppHeader } from "@/components/core/app-header";
import { ContentWrapper } from "@/components/core/content-wrapper";
// local components
import { ProjectsListHeader } from "@/plane-web/components/projects/header";
import { ProjectsListMobileHeader } from "@/plane-web/components/projects/mobile-header";
import { ProjectsListMobileHeader } from "@/components/projects/mobile-header";
import { ProjectsBaseHeader } from "@/components/project/header";
export default function ProjectListLayout() {
return (
<>
<AppHeader header={<ProjectsListHeader />} mobileHeader={<ProjectsListMobileHeader />} />
<AppHeader header={<ProjectsBaseHeader />} mobileHeader={<ProjectsListMobileHeader />} />
<ContentWrapper>
<Outlet />
</ContentWrapper>

View File

@@ -4,7 +4,7 @@
* See the LICENSE file for details.
*/
import { ProjectPageRoot } from "@/plane-web/components/projects/page";
import { ProjectPageRoot } from "@/components/projects/page";
function ProjectsPage() {
return <ProjectPageRoot />;

View File

@@ -18,8 +18,6 @@ import { SettingsHeading } from "@/components/settings/heading";
// hooks
import { useProject } from "@/hooks/store/use-project";
import { useUserPermissions } from "@/hooks/store/user";
// plane web imports
import { ProjectTeamspaceList } from "@/plane-web/components/projects/teamspaces/teamspace-list";
// local imports
import type { Route } from "./+types/page";
import { MembersProjectSettingsHeader } from "./header";
@@ -50,7 +48,6 @@ function MembersSettingsPage({ params }: Route.ComponentProps) {
<PageHead title={pageTitle} />
<SettingsHeading title={t("common.members")} />
<ProjectSettingsMemberDefaults projectId={projectId} workspaceSlug={workspaceSlug} />
<ProjectTeamspaceList projectId={projectId} workspaceSlug={workspaceSlug} />
<ProjectMemberList projectId={projectId} workspaceSlug={workspaceSlug} />
</SettingsContentWrapper>
);

View File

@@ -1,15 +0,0 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
export type TProjectTemplateSelect = {
disabled?: boolean;
onClick?: () => void;
};
// eslint-disable-next-line @typescript-eslint/no-unused-vars
export function ProjectTemplateSelect(props: TProjectTemplateSelect) {
return <></>;
}

View File

@@ -1,11 +0,0 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
import { ProjectsBaseHeader } from "@/components/project/header";
export function ProjectsListHeader() {
return <ProjectsBaseHeader />;
}

View File

@@ -1,84 +0,0 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
// plane imports
import { EUserPermissions, EProjectFeatureKey } from "@plane/constants";
import { CycleIcon, IntakeIcon, ModuleIcon, PageIcon, ViewsIcon, WorkItemsIcon } from "@plane/propel/icons";
// components
import type { TNavigationItem } from "@/components/workspace/sidebar/project-navigation";
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: WorkItemsIcon,
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: CycleIcon,
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: ModuleIcon,
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: ViewsIcon,
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: PageIcon,
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: IntakeIcon,
access: [EUserPermissions.ADMIN, EUserPermissions.MEMBER, EUserPermissions.GUEST],
shouldRender: project.inbox_view,
sortOrder: 6,
},
];

View File

@@ -1,14 +0,0 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
export type TProjectTeamspaceList = {
workspaceSlug: string;
projectId: string;
};
export function ProjectTeamspaceList(_props: TProjectTeamspaceList) {
return null;
}

View File

@@ -12,7 +12,7 @@ import { getAssetIdFromUrl, checkURLValidity } from "@plane/utils";
// hooks
import useKeypress from "@/hooks/use-keypress";
// plane web components
import { CreateProjectForm } from "@/plane-web/components/projects/create/root";
import { CreateProjectForm } from "@/components/projects/create/root";
// plane web types
import type { TProject } from "@plane/types";
// services

View File

@@ -18,8 +18,6 @@ import { getTabIndex } from "@plane/utils";
// components
import { CoverImage } from "@/components/common/cover-image";
import { ImagePickerPopover } from "@/components/core/image-picker-popover";
// plane web imports
import { ProjectTemplateSelect } from "@/plane-web/components/projects/create/template-select";
type Props = {
handleClose: () => void;
@@ -31,14 +29,7 @@ type Props = {
};
function ProjectCreateHeader(props: Props) {
const {
handleClose,
isMobile = false,
handleFormOnChange,
isClosable = true,
handleTemplateSelect,
showActionButtons = true,
} = props;
const { handleClose, isMobile = false, handleFormOnChange, isClosable = true } = props;
const { watch, control, setValue } = useFormContext<IProject>();
const { t } = useTranslation();
// derived values
@@ -54,11 +45,6 @@ function ProjectCreateHeader(props: Props) {
alt={t("project_cover_image_alt")}
className="absolute top-0 left-0 h-full w-full rounded-lg"
/>
{showActionButtons && (
<div className="absolute top-2.5 left-2.5">
<ProjectTemplateSelect onClick={handleTemplateSelect} />
</div>
)}
{isClosable && (
<div className="absolute top-2 right-2 p-2">
<button type="button" onClick={handleClose} tabIndex={getIndex("close")}>

View File

@@ -13,7 +13,7 @@ import { useMember } from "@/hooks/store/use-member";
import { useUser, useUserPermissions } from "@/hooks/store/user";
import { useAppRouter } from "@/hooks/use-app-router";
// plane web imports
import { useProjectColumns } from "@/plane-web/components/projects/settings/useProjectColumns";
import { useProjectColumns } from "@/components/projects/settings/useProjectColumns";
// store
import type { IProjectMemberDetails } from "@/store/member/project/base-project-member.store";
// local imports
@@ -46,6 +46,7 @@ export const ProjectMemberListItem = observer(function ProjectMemberListItem(pro
if (memberId === currentUser?.id) {
await leaveProject(workspaceSlug.toString(), projectId.toString())
// oxlint-disable-next-line promise/always-return
.then(async () => {
router.push(`/${workspaceSlug}/projects`);
})