Compare commits

...
Author SHA1 Message Date
Rahulcheryala b8d9efe5b6 DOCS for work continuation 2026-06-05 13:57:08 +05:30
Rahulcheryala 50cf8f8bbf refactor: migrate services (project-view) from apps/web to @plane/services 2026-06-04 18:52:20 +05:30
Rahulcheryala 754630fd16 refactor: migrate services (module) from apps/web to @plane/services 2026-06-04 18:36:40 +05:30
Rahulcheryala c0c06599c9 refactor: migrate services (cycle) from apps/web to @plane/services 2026-06-04 18:05:24 +05:30
Rahulcheryala 9a6667e07c refactor: migrate services (instance) from apps/web to @plane/services 2026-06-04 17:50:14 +05:30
Rahulcheryala 7cdf150bdf refactor: migrate services (webhook) from apps/web to @plane/services 2026-06-04 17:42:23 +05:30
Rahulcheryala bffa52c974 refactor: migrate services (dashboard) from apps/web to @plane/services 2026-06-04 17:38:01 +05:30
Rahulcheryala f266e80556 refactor: migrate services (cycle-archive) from apps/web to @plane/services 2026-06-04 17:32:29 +05:30
Rahulcheryala 7f40365aae refactor: migrate services (ai) from apps/web to @plane/services 2026-06-04 17:27:13 +05:30
Rahulcheryala 30c0bca0b1 refactor: migrate services (file-upload) from apps/web to @plane/services 2026-06-04 17:21:15 +05:30
Rahulcheryala 1dd0ccd901 refactor: migrate services (auth) from apps/web to @plane/services 2026-06-04 17:15:06 +05:30
Rahulcheryala ecaac0dcbc refactor: migrate services (integrations) from apps/web to @plane/services 2026-06-04 16:35:57 +05:30
Rahulcheryala 1c3880e977 refactor: migrate services (project-page, project-page-version) from apps/web to @plane/services 2026-06-04 16:17:31 +05:30
Rahulcheryala c4abc24578 refactor: migrate services (inbox-issue, intake-work-item-version) from apps/web to @plane/services 2026-06-04 14:52:08 +05:30
Rahulcheryala 338a650935 refactor: migrate services (issue-attachment, issue-comment) from apps/web to @plane/services 2026-06-04 14:38:39 +05:30
Rahulcheryala 7f90ed2e83 refactor: migrate services (issue) from apps/web to @plane/services 2026-06-04 14:36:19 +05:30
Rahulcheryala ea1eabac9e refactor: migrate services (work-item-version, workspace-draft) from apps/web to @plane/services 2026-06-04 14:11:48 +05:30
Rahulcheryala 384fef9f30 refactor: migrate services (issue-reaction, issue-relation) from apps/web to @plane/services 2026-06-04 13:56:53 +05:30
Rahulcheryala 7543413947 refactor: migrate services (issue-activity, issue-archive, issue-label) from apps/web to @plane/services 2026-06-04 13:37:32 +05:30
Rahulcheryala b053e10961 refactor: migrate services (project) from apps/web to @plane/services 2026-06-04 13:26:10 +05:30
Rahulcheryala cae8617f3e refactor: migrate services (project-publish, project-state) from apps/web to @plane/services 2026-06-04 13:23:14 +05:30
Rahulcheryala 42f582acae refactor: migrate services (project-export, project-archive, project-member) from apps/web to @plane/services 2026-06-04 13:17:25 +05:30
Rahulcheryala 8c88af8057 refactor: migrate services (index files) from apps/web to @plane/services 2026-06-04 13:06:27 +05:30
Rahulcheryala 378b49b27a refactor: migrate services (issue-filter) from apps/web to @plane/services 2026-06-04 13:06:07 +05:30
Rahulcheryala 033ea1262d refactor: migrate services (app-installation, app-config, module-archive) from apps/web to @plane/services 2026-06-04 13:01:46 +05:30
Rahulcheryala 813de842e9 refactor: migrate services (sticky) from apps/web to @plane/services 2026-06-04 12:49:17 +05:30
Rahulcheryala 0f0104fcac refactor: migrate services (timezone) from apps/web to @plane/services 2026-06-04 12:45:12 +05:30
Rahulcheryala 9ae465178c refactor: migrate services (estimate) from apps/web to @plane/services 2026-06-04 12:42:08 +05:30
Rahulcheryala 5cebdab9c8 refactor: migrate services (analytics) from apps/web to @plane/services 2026-06-04 12:37:32 +05:30
Rahulcheryala 0c9abc14ec refactor: migrate services (notification, favorite) from apps/web to @packages/services 2026-06-03 21:06:36 +05:30
Rahulcheryala 47606db169 resolved lint errors 2026-06-03 20:08:52 +05:30
Rahulcheryala 4f0f05fd0c refactor: migrate constants (plans) from apps/web to @core/components 2026-06-03 19:06:21 +05:30
Rahulcheryala d7d016d350 refactor: migrate constants (editor) from apps/web to @plane/constants 2026-06-01 19:29:12 +05:30
Rahulcheryala c024d37dd2 refactor: migrate constants (sidebar, favorites) from apps/web to @plane/constants 2026-06-01 19:29:12 +05:30
Rahulcheryala 1b9e67fd82 refactor: migrate constants (ai, calenda, gaant) from apps/web to @plane/constants 2026-06-01 19:29:12 +05:30
Rahulcheryala f6286cc403 refactor: migrate constants (fetch-keys) from apps/web to @plane/constants 2026-06-01 19:29:12 +05:30
Rahulcheryala 5303ce2a2f refactor: migrate types from apps/web to @plane/types 2026-06-01 19:29:12 +05:30
234 changed files with 928 additions and 2002 deletions
@@ -22,7 +22,7 @@ import { SidebarProjectsListItem } from "@/components/workspace/sidebar/projects
import { useAppTheme } from "@/hooks/store/use-app-theme";
import { useProject } from "@/hooks/store/use-project";
import { useUserPermissions } from "@/hooks/store/user";
import type { TProject } from "@/plane-web/types";
import type { TProject } from "@plane/types";
import { ExtendedSidebarWrapper } from "./extended-sidebar-wrapper";
export const ExtendedProjectSidebar = observer(function ExtendedProjectSidebar() {
@@ -15,7 +15,7 @@ import { AppHeader } from "@/components/core/app-header";
import { ContentWrapper } from "@/components/core/content-wrapper";
import { ProfileSidebar } from "@/components/profile/sidebar";
// constants
import { USER_PROFILE_PROJECT_SEGREGATION } from "@/constants/fetch-keys";
import { USER_PROFILE_PROJECT_SEGREGATION } from "@plane/constants";
// hooks
import { useUserPermissions } from "@/hooks/store/user";
import useSize from "@/hooks/use-window-size";
@@ -18,7 +18,7 @@ import { ProfileStateDistribution } from "@/components/profile/overview/state-di
import { ProfileStats } from "@/components/profile/overview/stats";
import { ProfileWorkload } from "@/components/profile/overview/workload";
// constants
import { USER_PROFILE_DATA } from "@/constants/fetch-keys";
import { USER_PROFILE_DATA } from "@plane/constants";
// services
import { UserService } from "@/services/user.service";
import type { Route } from "./+types/page";
@@ -14,13 +14,13 @@ import { Breadcrumbs, Header } from "@plane/ui";
import { BreadcrumbLink } from "@/components/common/breadcrumb-link";
import { IssueDetailQuickActions } from "@/components/issues/issue-detail/issue-detail-quick-actions";
// constants
import { ISSUE_DETAILS } from "@/constants/fetch-keys";
import { ISSUE_DETAILS } from "@plane/constants";
// hooks
import { useProject } from "@/hooks/store/use-project";
// plane web
import { ProjectBreadcrumb } from "@/plane-web/components/breadcrumbs/project";
// services
import { IssueService } from "@/services/issue";
import { IssueService } from "@plane/services";
const issueService = new IssueService();
@@ -16,7 +16,7 @@ import { LogoSpinner } from "@/components/common/logo-spinner";
// hooks
import { useAppRouter } from "@/hooks/use-app-router";
// services
import { IssueService } from "@/services/issue/issue.service";
import { IssueService } from "@plane/services";
// types
import type { Route } from "./+types/page";
@@ -31,7 +31,7 @@ import { EPageStoreType, usePage, usePageStore } from "@/plane-web/hooks/store";
// plane web services
import { WorkspaceService } from "@/services/workspace.service";
// services
import { ProjectPageService, ProjectPageVersionService } from "@/services/page";
import { ProjectPageService, ProjectPageVersionService } from "@plane/services";
import type { Route } from "./+types/page";
const workspaceService = new WorkspaceService();
const projectPageService = new ProjectPageService();
@@ -14,12 +14,12 @@ import { SingleIntegrationCard } from "@/components/integration/single-integrati
import { IntegrationAndImportExportBanner } from "@/components/ui/integration-and-import-export-banner";
import { IntegrationsSettingsLoader } from "@/components/ui/loader/settings/integration";
// constants
import { APP_INTEGRATIONS } from "@/constants/fetch-keys";
import { APP_INTEGRATIONS } from "@plane/constants";
// hooks
import { useWorkspace } from "@/hooks/store/use-workspace";
import { useUserPermissions } from "@/hooks/store/user";
// services
import { IntegrationService } from "@/services/integrations";
import { IntegrationService } from "@plane/services";
const integrationService = new IntegrationService();
+1 -1
View File
@@ -24,7 +24,7 @@ import emptyInvitation from "@/app/assets/empty-state/invitation.svg?url";
// components
import { EmptyState } from "@/components/common/empty-state";
import { WorkspaceLogo } from "@/components/workspace/logo";
import { USER_WORKSPACES_LIST } from "@/constants/fetch-keys";
import { USER_WORKSPACES_LIST } from "@plane/constants";
// hooks
import { useWorkspace } from "@/hooks/store/use-workspace";
import { useUser, useUserProfile } from "@/hooks/store/user";
+1 -1
View File
@@ -11,7 +11,7 @@ import useSWR from "swr";
import { LogoSpinner } from "@/components/common/logo-spinner";
import { OnboardingRoot } from "@/components/onboarding";
// constants
import { USER_WORKSPACES_LIST } from "@/constants/fetch-keys";
import { USER_WORKSPACES_LIST } from "@plane/constants";
// helpers
import { EPageTypes } from "@/helpers/authentication.helper";
// hooks
@@ -13,7 +13,7 @@ import { CheckIcon, CloseIcon } from "@plane/propel/icons";
import { LogoSpinner } from "@/components/common/logo-spinner";
import { EmptySpace, EmptySpaceItem } from "@/components/ui/empty-space";
// constants
import { WORKSPACE_INVITATION } from "@/constants/fetch-keys";
import { WORKSPACE_INVITATION } from "@plane/constants";
// helpers
import { EPageTypes } from "@/helpers/authentication.helper";
// hooks
@@ -14,7 +14,7 @@ import { SwitcherLabel } from "@/components/common/switcher-label";
// hooks
import { useProject } from "@/hooks/store/use-project";
import { useAppRouter } from "@/hooks/use-app-router";
import type { TProject } from "@/plane-web/types";
import type { TProject } from "@plane/types";
type TProjectBreadcrumbProps = {
workspaceSlug: string;
@@ -16,10 +16,10 @@ import { Tooltip } from "@plane/propel/tooltip";
import { cn } from "@plane/utils";
import { RichTextEditor } from "@/components/editor/rich-text";
// plane web constants
import { AI_EDITOR_TASKS, LOADING_TEXTS } from "@/constants/ai";
import { AI_EDITOR_TASKS, LOADING_TEXTS } from "@plane/constants";
// plane web services
import type { TTaskPayload } from "@/services/ai.service";
import { AIService } from "@/services/ai.service";
import type { TTaskPayload } from "@plane/services";
import { AIService } from "@plane/services";
import { AskPiMenu } from "./ask-pi-menu";
const aiService = new AIService();
@@ -75,7 +75,7 @@ export function EditorAIMenu(props: Props) {
// params
const handleGenerateResponse = async (payload: TTaskPayload) => {
if (!workspaceSlug) return;
await aiService.performEditorTask(workspaceSlug.toString(), payload).then((res) => setResponse(res.response));
await aiService.rephraseGrammar(workspaceSlug.toString(), payload).then((res) => setResponse(res.response));
};
// handle task click
const handleClick = async (key: AI_EDITOR_TASKS) => {
@@ -20,7 +20,7 @@ import { getCoverImageType, uploadCoverImage } from "@/helpers/cover-image.helpe
import { useProject } from "@/hooks/store/use-project";
import { usePlatformOS } from "@/hooks/use-platform-os";
// plane web types
import type { TProject } from "@/plane-web/types/projects";
import type { TProject } from "@plane/types";
import { ProjectAttributes } from "./attributes";
import { getProjectFormValues } from "./utils";
+1 -1
View File
@@ -7,7 +7,7 @@
import { CircleDot, XCircle } from "lucide-react";
import { RelatedIcon, DuplicatePropertyIcon } from "@plane/propel/icons";
import type { TRelationObject } from "@/components/issues/issue-detail-widgets/relations";
import type { TIssueRelationTypes } from "../../types";
import type { TIssueRelationTypes } from "@plane/types";
export * from "./activity";
@@ -18,7 +18,7 @@ import { EProductSubscriptionEnum } from "@plane/types";
import { getSubscriptionName } from "@plane/utils";
// components
import { DiscountInfo } from "@/components/license/modal/card/discount-info";
import type { TPlanDetail } from "@/constants/plans";
import type { TPlanDetail } from "@/components/workspace/billing/comparison/plans";
// local imports
import { PlanFrequencyToggle } from "./frequency-toggle";
@@ -9,8 +9,8 @@ import { observer } from "mobx-react";
import type { EProductSubscriptionEnum, TBillingFrequency } from "@plane/types";
// components
import { PlansComparisonBase, shouldRenderPlanDetail } from "@/components/workspace/billing/comparison/base";
import type { TPlanePlans } from "@/constants/plans";
import { PLANE_PLANS } from "@/constants/plans";
import type { TPlanePlans } from "@/components/workspace/billing/comparison/plans";
import { PLANE_PLANS } from "@/components/workspace/billing/comparison/plans";
// plane web imports
import { PlanDetail } from "./plan-detail";
@@ -16,7 +16,7 @@ import {
import { useAppRouter } from "@/hooks/use-app-router";
import { useQueryParams } from "@/hooks/use-query-params";
import type { TPageNavigationPaneTab } from "@/plane-web/components/pages/navigation-pane";
import type { INavigationPaneExtension } from "@/plane-web/types/pages/pane-extensions";
import type { INavigationPaneExtension } from "@/components/pages/navigation-pane";
import type { TPageInstance } from "@/store/pages/base-page";
export type TPageExtensionHookParams = {
@@ -7,7 +7,7 @@
// plane imports
import type { IFavorite } from "@plane/types";
// components
import { getFavoriteItemIcon } from "@/components/workspace/sidebar/favorites/favorite-items/common";
import { FavoriteItemIcon } from "@/components/workspace/sidebar/favorites/favorite-items/common";
export const useAdditionalFavoriteItemDetails = () => {
const getAdditionalFavoriteItemDetails = (_workspaceSlug: string, favorite: IFavorite) => {
@@ -20,7 +20,7 @@ export const useAdditionalFavoriteItemDetails = () => {
switch (favoriteItemEntityType) {
default:
itemTitle = favoriteItemName;
itemIcon = getFavoriteItemIcon(favoriteItemEntityType);
itemIcon = <FavoriteItemIcon type={favoriteItemEntityType} />;
break;
}
return { itemIcon, itemTitle };
+3 -1
View File
@@ -14,7 +14,7 @@ import type {
TEstimateSystemKeys,
} from "@plane/types";
// plane web services
import estimateService from "@/services/estimate.service";
import { EstimateService } from "@plane/services";
// store
import type { IEstimatePoint } from "@/store/estimates/estimate-point";
import { EstimatePoint } from "@/store/estimates/estimate-point";
@@ -41,6 +41,8 @@ export interface IEstimate extends Omit<IEstimateType, "points"> {
) => Promise<IEstimatePointType | undefined>;
}
const estimateService = new EstimateService();
export class Estimate implements IEstimate {
// data model observables
id: string | undefined = undefined;
@@ -20,7 +20,7 @@ import type {
import { EIssueServiceType } from "@plane/types";
// plane web constants
// services
import { IssueActivityService } from "@/services/issue";
import { IssueActivityService } from "@plane/services";
// store
import type { CoreRootStore } from "@/store/root.store";
-7
View File
@@ -1,7 +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 TIssueRelationTypes = "blocking" | "blocked_by" | "duplicate" | "relates_to";
-9
View File
@@ -1,9 +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 * from "./projects";
export * from "./issue-types";
export * from "./gantt-chart";
-7
View File
@@ -1,7 +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 * from "./issue-property-values.d";
@@ -1,2 +0,0 @@
export type TIssuePropertyValues = object;
export type TIssuePropertyValueErrors = object;
@@ -1,13 +0,0 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
// CE re-exports the core navigation pane extension types directly
// EE overrides this with specific extension data types
export type {
INavigationPaneExtension,
INavigationPaneExtensionComponent,
INavigationPaneExtensionProps,
} from "@/components/pages/navigation-pane";
-11
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 type { IPartialProject, IProject } from "@plane/types";
export type TPartialProject = IPartialProject;
export type TProject = TPartialProject & IProject;
@@ -19,7 +19,7 @@ import { cn, checkEmailValidity } from "@plane/utils";
// hooks
import useTimer from "@/hooks/use-timer";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// local components
import { FormContainer } from "./common/container";
import { AuthFormHeader } from "./common/header";
@@ -16,7 +16,7 @@ import { authErrorHandler } from "@/helpers/authentication.helper";
import { useInstance } from "@/hooks/store/use-instance";
import { useAppRouter } from "@/hooks/use-app-router";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// local components
import { AuthEmailForm } from "./email";
import { AuthPasswordForm } from "./password";
@@ -22,7 +22,7 @@ import { ForgotPasswordPopover } from "@/components/account/auth-forms/forgot-pa
// helpers
import { EAuthModes, EAuthSteps } from "@/helpers/authentication.helper";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
type Props = {
email: string;
@@ -20,7 +20,7 @@ import { getPasswordStrength } from "@plane/utils";
import type { EAuthenticationErrorCodes, TAuthErrorInfo } from "@/helpers/authentication.helper";
import { EErrorAlertType, authErrorHandler } from "@/helpers/authentication.helper";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// local imports
import { AuthBanner } from "./auth-banner";
import { FormContainer } from "./common/container";
@@ -22,7 +22,7 @@ import { getPasswordStrength } from "@plane/utils";
import { useUser } from "@/hooks/store/user";
import { useAppRouter } from "@/hooks/use-app-router";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// local components
import { FormContainer } from "./common/container";
import { AuthFormHeader } from "./common/header";
@@ -16,7 +16,7 @@ import { EAuthModes } from "@/helpers/authentication.helper";
// hooks
import useTimer from "@/hooks/use-timer";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// services
const authService = new AuthService();
@@ -15,7 +15,7 @@ import type { TChartData } from "@plane/types";
// hooks
import { useAnalytics } from "@/hooks/store/use-analytics";
// services
import { AnalyticsService } from "@/services/analytics.service";
import { AnalyticsService } from "@plane/services";
// plane web components
import AnalyticsSectionWrapper from "../analytics-section-wrapper";
import { ProjectInsightsLoader } from "../loaders";
@@ -16,7 +16,7 @@ import { cn } from "@plane/utils";
// hooks
import { useAnalytics } from "@/hooks/store/use-analytics";
// services
import { AnalyticsService } from "@/services/analytics.service";
import { AnalyticsService } from "@plane/services";
// local imports
import InsightCard from "./insight-card";
@@ -17,7 +17,7 @@ import { renderFormattedDate } from "@plane/utils";
// hooks
import { useAnalytics } from "@/hooks/store/use-analytics";
// services
import { AnalyticsService } from "@/services/analytics.service";
import { AnalyticsService } from "@plane/services";
// plane web components
import AnalyticsSectionWrapper from "../analytics-section-wrapper";
import { ChartLoader } from "../loaders";
@@ -24,7 +24,7 @@ import { generateExtendedColors, parseChartData } from "@/components/chart/utils
// hooks
import { useAnalytics } from "@/hooks/store/use-analytics";
import { useProjectState } from "@/hooks/store/use-project-state";
import { AnalyticsService } from "@/services/analytics.service";
import { AnalyticsService } from "@plane/services";
import { exportCSV } from "../export";
import { DataTable } from "../insight-table/data-table";
import { ChartLoader } from "../loaders";
@@ -21,7 +21,7 @@ import { getFileURL } from "@plane/utils";
// hooks
import { useAnalytics } from "@/hooks/store/use-analytics";
import { useProject } from "@/hooks/store/use-project";
import { AnalyticsService } from "@/services/analytics.service";
import { AnalyticsService } from "@plane/services";
// plane web components
import { exportCSV } from "../export";
import { InsightTable } from "../insight-table";
@@ -14,7 +14,7 @@ import type { IApiToken } from "@plane/types";
// ui
import { AlertModalCore } from "@plane/ui";
// fetch-keys
import { API_TOKENS_LIST } from "@/constants/fetch-keys";
import { API_TOKENS_LIST } from "@plane/constants";
type Props = {
isOpen: boolean;
@@ -13,7 +13,7 @@ import type { IApiToken } from "@plane/types";
import { EModalPosition, EModalWidth, ModalCore } from "@plane/ui";
import { renderFormattedDate, csvDownload } from "@plane/utils";
// constants
import { API_TOKENS_LIST } from "@/constants/fetch-keys";
import { API_TOKENS_LIST } from "@plane/constants";
// local imports
import { CreateApiTokenForm } from "./form";
import { GeneratedTokenDetails } from "./generated-token-details";
@@ -6,7 +6,7 @@
import { observer } from "mobx-react";
import type { TProjectActivity } from "@/plane-web/types";
import type { TProjectActivity } from "@plane/types";
import { ActivityBlockComponent } from "./activity-block";
import { iconsMap, messages } from "./helper";
@@ -40,7 +40,7 @@ import {
StatePropertyIcon,
} from "@plane/propel/icons";
import { store } from "@/lib/store-context";
import type { TProjectActivity } from "@/plane-web/types";
import type { TProjectActivity } from "@plane/types";
type ActivityIconMap = {
[key: string]: FC<{ className?: string }>;
@@ -30,7 +30,7 @@ import { SimpleEmptyState } from "@/components/empty-state/simple-empty-state-ro
import { useIssues } from "@/hooks/store/use-issues";
import useDebounce from "@/hooks/use-debounce";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
// local components
import { BulkDeleteIssuesModalItem } from "./bulk-delete-issues-modal-item";
@@ -19,7 +19,7 @@ import type { EAuthenticationErrorCodes } from "@/helpers/authentication.helper"
// hooks
import { useUser } from "@/hooks/store/user";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
import userService from "@/services/user.service";
type Props = { isOpen: boolean; onClose: () => void };
@@ -25,7 +25,7 @@ import { usePlatformOS } from "@/hooks/use-platform-os";
// plane web components
import { IssueIdentifier } from "@/plane-web/components/issues/issue-details/issue-identifier";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
// components
import { IssueSearchModalEmptyState } from "./issue-search-modal-empty-state";
@@ -19,7 +19,7 @@ import { Input } from "@plane/ui";
// components
import { RichTextEditor } from "@/components/editor/rich-text";
// services
import { AIService } from "@/services/ai.service";
import { AIService } from "@plane/services";
const aiService = new AIService();
type Props = {
@@ -106,7 +106,7 @@ export function GptAssistantPopover(props: Props) {
const callAIService = async (formData: FormData) => {
try {
const res = await aiService.createGptTask(workspaceSlug.toString(), {
const res = await aiService.prompt(workspaceSlug.toString(), {
prompt: prompt || "",
task: formData.task,
});
@@ -11,7 +11,7 @@ import useSWR from "swr";
import type { TWorkItemFilterCondition } from "@plane/shared-state";
import { EIssuesStoreType } from "@plane/types";
// constants
import { CYCLE_ISSUES_WITH_PARAMS } from "@/constants/fetch-keys";
import { CYCLE_ISSUES_WITH_PARAMS } from "@plane/constants";
// hooks
import { useCycle } from "@/hooks/store/use-cycle";
import { useIssues } from "@/hooks/store/use-issues";
@@ -22,7 +22,7 @@ import { useCycle } from "@/hooks/store/use-cycle";
import { useUserPermissions } from "@/hooks/store/user";
import { useTimeZoneConverter } from "@/hooks/use-timezone-converter";
// services
import { CycleService } from "@/services/cycle.service";
import { CycleService } from "@plane/services";
type Props = {
workspaceSlug: string;
@@ -74,7 +74,7 @@ export const CycleSidebarHeader = observer(function CycleSidebarHeader(props: Pr
const dateChecker = async (payload: any) => {
try {
const res = await cycleService.cycleDateCheck(workspaceSlug, projectId, payload);
const res = await cycleService.validateDates(workspaceSlug, projectId, payload);
return res.status;
} catch (_err) {
return false;
+2 -2
View File
@@ -19,7 +19,7 @@ import useKeypress from "@/hooks/use-keypress";
import useLocalStorage from "@/hooks/use-local-storage";
import { usePlatformOS } from "@/hooks/use-platform-os";
// services
import { CycleService } from "@/services/cycle.service";
import { CycleService } from "@plane/services";
// local imports
import { CycleForm } from "./form";
@@ -100,7 +100,7 @@ export function CycleCreateUpdateModal(props: CycleModalProps) {
const dateChecker = async (projectId: string, payload: CycleDateCheckData) => {
let status = false;
await cycleService.cycleDateCheck(workspaceSlug, projectId, payload).then((res) => {
await cycleService.validateDates(workspaceSlug, projectId, payload).then((res) => {
status = res.status;
});
@@ -19,7 +19,7 @@ import { cn, sortBySelectedFirst } from "@plane/utils";
// hooks
import { useDropdown } from "@/hooks/use-dropdown";
// plane web imports
import type { TProject } from "@/plane-web/types";
import type { TProject } from "@plane/types";
// local imports
import { DropdownButton } from "../buttons";
import { BUTTON_VARIANTS_WITH_TEXT } from "../constants";
@@ -7,8 +7,8 @@
import React from "react";
import { ArrowUp, Paperclip } from "lucide-react";
// constants
import type { ToolbarMenuItem } from "@/constants/editor";
import { IMAGE_ITEM } from "@/constants/editor";
import type { ToolbarMenuItem } from "@plane/editor";
import { IMAGE_ITEM } from "@plane/editor";
type LiteToolbarProps = {
onSubmit: (e: React.KeyboardEvent<HTMLDivElement> | React.MouseEvent<HTMLButtonElement>) => void;
@@ -19,8 +19,8 @@ import type { ISvgIcons } from "@plane/propel/icons";
import { Tooltip } from "@plane/propel/tooltip";
// constants
import { cn } from "@plane/utils";
import type { ToolbarMenuItem } from "@/constants/editor";
import { TOOLBAR_ITEMS } from "@/constants/editor";
import type { ToolbarMenuItem } from "@plane/editor";
import { TOOLBAR_ITEMS } from "@plane/editor";
// helpers
type Props = {
@@ -4,8 +4,8 @@
* See the LICENSE file for details.
*/
import type { PageProps } from "@react-pdf/renderer";
import { Document, Font, Page } from "@react-pdf/renderer";
import type { PageProps, Styles } from "@react-pdf/renderer";
import { Document, Font, Page, StyleSheet } from "@react-pdf/renderer";
import { Html } from "react-pdf-html";
// assets
import interBold from "@/app/assets/fonts/inter/bold.ttf?url";
@@ -17,8 +17,177 @@ import interSemibold from "@/app/assets/fonts/inter/semibold.ttf?url";
import interThin from "@/app/assets/fonts/inter/thin.ttf?url";
import interUltraBold from "@/app/assets/fonts/inter/ultrabold.ttf?url";
import interUltraLight from "@/app/assets/fonts/inter/ultralight.ttf?url";
// constants
import { EDITOR_PDF_DOCUMENT_STYLESHEET } from "@/constants/editor";
// plane imports
import { convertRemToPixel } from "@plane/utils";
const EDITOR_PDF_FONT_FAMILY_STYLES: Styles = {
"*:not(.courier, .courier-bold)": { fontFamily: "Inter" },
".courier": { fontFamily: "Courier" },
".courier-bold": { fontFamily: "Courier-Bold" },
};
const EDITOR_PDF_TYPOGRAPHY_STYLES: Styles = {
// page title
"h1.page-title": {
fontSize: convertRemToPixel(1.6),
fontWeight: "bold",
marginTop: 0,
marginBottom: convertRemToPixel(2),
},
// headings
"h1:not(.page-title)": {
fontSize: convertRemToPixel(1.4),
fontWeight: "semibold",
marginTop: convertRemToPixel(2),
marginBottom: convertRemToPixel(0.25),
},
h2: {
fontSize: convertRemToPixel(1.2),
fontWeight: "semibold",
marginTop: convertRemToPixel(1.4),
marginBottom: convertRemToPixel(0.0625),
},
h3: {
fontSize: convertRemToPixel(1.1),
fontWeight: "semibold",
marginTop: convertRemToPixel(1),
marginBottom: convertRemToPixel(0.0625),
},
h4: {
fontSize: convertRemToPixel(1),
fontWeight: "semibold",
marginTop: convertRemToPixel(1),
marginBottom: convertRemToPixel(0.0625),
},
h5: {
fontSize: convertRemToPixel(0.9),
fontWeight: "semibold",
marginTop: convertRemToPixel(1),
marginBottom: convertRemToPixel(0.0625),
},
h6: {
fontSize: convertRemToPixel(0.8),
fontWeight: "semibold",
marginTop: convertRemToPixel(1),
marginBottom: convertRemToPixel(0.0625),
},
// paragraph
"p:not(table p)": {
fontSize: convertRemToPixel(0.8),
},
"p:not(ol p, ul p)": {
marginTop: convertRemToPixel(0.25),
marginBottom: convertRemToPixel(0.0625),
},
};
const EDITOR_PDF_LIST_STYLES: Styles = {
"ul, ol": {
fontSize: convertRemToPixel(0.8),
marginHorizontal: -20,
},
"ol p, ul p": {
marginVertical: 0,
},
"ol li, ul li": {
marginTop: convertRemToPixel(0.45),
},
"ul ul, ul ol, ol ol, ol ul": {
marginVertical: 0,
},
"ul[data-type='taskList']": {
position: "relative",
},
"div.input-checkbox": {
position: "absolute",
top: convertRemToPixel(0.15),
left: -convertRemToPixel(1.2),
height: convertRemToPixel(0.75),
width: convertRemToPixel(0.75),
borderWidth: "1.5px",
borderStyle: "solid",
borderRadius: convertRemToPixel(0.125),
},
"div.input-checkbox:not(.checked)": {
backgroundColor: "#ffffff",
borderColor: "#171717",
},
"div.input-checkbox.checked": {
backgroundColor: "#3f76ff",
borderColor: "#3f76ff",
},
"ul li[data-checked='true'] p": {
color: "#a3a3a3",
},
};
const EDITOR_PDF_CODE_STYLES: Styles = {
// code block
"[data-node-type='code-block']": {
marginVertical: convertRemToPixel(0.5),
padding: convertRemToPixel(1),
borderRadius: convertRemToPixel(0.5),
backgroundColor: "#f7f7f7",
fontSize: convertRemToPixel(0.7),
},
// inline code block
"[data-node-type='inline-code-block']": {
margin: 0,
paddingVertical: convertRemToPixel(0.25 / 4 + 0.25 / 8),
paddingHorizontal: convertRemToPixel(0.375),
border: "0.5px solid #e5e5e5",
borderRadius: convertRemToPixel(0.25),
backgroundColor: "#e8e8e8",
color: "#f97316",
fontSize: convertRemToPixel(0.7),
},
};
const EDITOR_PDF_DOCUMENT_STYLESHEET = StyleSheet.create({
...EDITOR_PDF_FONT_FAMILY_STYLES,
...EDITOR_PDF_TYPOGRAPHY_STYLES,
...EDITOR_PDF_LIST_STYLES,
...EDITOR_PDF_CODE_STYLES,
// quote block
blockquote: {
borderLeft: "3px solid gray",
paddingLeft: convertRemToPixel(1),
marginTop: convertRemToPixel(0.625),
marginBottom: 0,
marginHorizontal: 0,
},
img: {
marginVertical: 0,
borderRadius: convertRemToPixel(0.375),
},
// divider
"div[data-type='horizontalRule']": {
marginVertical: convertRemToPixel(1),
height: 1,
width: "100%",
backgroundColor: "gray",
},
// mention block
"[data-node-type='mention-block']": {
margin: 0,
color: "#3f76ff",
backgroundColor: "#3f76ff33",
paddingHorizontal: convertRemToPixel(0.375),
},
// table
table: {
marginTop: convertRemToPixel(0.5),
marginBottom: convertRemToPixel(1),
marginHorizontal: 0,
},
"table td": {
padding: convertRemToPixel(0.625),
border: "1px solid #e5e5e5",
},
"table p": {
fontSize: convertRemToPixel(0.7),
},
});
Font.register({
family: "Inter",
@@ -15,8 +15,8 @@ import { Tooltip } from "@plane/propel/tooltip";
import type { TSticky } from "@plane/types";
// constants
import { cn } from "@plane/utils";
import type { ToolbarMenuItem } from "@/constants/editor";
import { TOOLBAR_ITEMS } from "@/constants/editor";
import type { ToolbarMenuItem } from "@plane/editor";
import { TOOLBAR_ITEMS } from "@plane/editor";
// helpers
import { ColorPalette } from "./color-palette";
@@ -26,7 +26,7 @@ import { CustomSearchSelect, CustomSelect } from "@plane/ui";
// import { WorkItemFiltersRow } from "@/components/work-item-filters/filters-row";
import { useProject } from "@/hooks/store/use-project";
import { useUser, useUserPermissions } from "@/hooks/store/user";
import { ProjectExportService } from "@/services/project/project-export.service";
import { ProjectExportService } from "@plane/services";
// local imports
import { SettingsBoxedControlItem } from "../settings/boxed-control-item";
@@ -20,7 +20,7 @@ import { useProject } from "@/hooks/store/use-project";
import { useUser } from "@/hooks/store/user";
import { useAppRouter } from "@/hooks/use-app-router";
// services
import { ProjectExportService } from "@/services/project";
import { ProjectExportService } from "@plane/services";
type Props = {
isOpen: boolean;
handleClose: () => void;
+1 -1
View File
@@ -9,7 +9,7 @@ import { observer } from "mobx-react";
import { useParams, useSearchParams } from "next/navigation";
import { mutate } from "swr";
// constants
import { EXPORT_SERVICES_LIST } from "@/constants/fetch-keys";
import { EXPORT_SERVICES_LIST } from "@plane/constants";
// local imports
import { ExportForm } from "./export-form";
import { PrevExports } from "./prev-exports";
@@ -17,9 +17,9 @@ import { Table } from "@plane/ui";
// components
import { ImportExportSettingsLoader } from "@/components/ui/loader/settings/import-and-export";
// constants
import { EXPORT_SERVICES_LIST } from "@/constants/fetch-keys";
import { EXPORT_SERVICES_LIST } from "@plane/constants";
// services
import { IntegrationService } from "@/services/integrations";
import { IntegrationService } from "@plane/services";
// local imports
import { useExportColumns } from "./column";
@@ -33,7 +33,7 @@ import useReloadConfirmations from "@/hooks/use-reload-confirmation";
import { DeDupeIssuePopoverRoot } from "@/plane-web/components/de-dupe/duplicate-popover";
import { useDebouncedDuplicateIssues } from "@/plane-web/hooks/use-debounced-duplicate-issues";
// services
import { IntakeWorkItemVersionService } from "@/services/inbox";
import { IntakeWorkItemVersionService } from "@plane/services";
// stores
import type { IInboxIssueStore } from "@/store/inbox/inbox-issue.store";
// local imports
@@ -25,7 +25,7 @@ import { SimpleEmptyState } from "@/components/empty-state/simple-empty-state-ro
import { useProject } from "@/hooks/store/use-project";
import useDebounce from "@/hooks/use-debounce";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
type Props = {
isOpen: boolean;
@@ -13,7 +13,7 @@ import type { IWorkspaceIntegration } from "@plane/types";
import { CustomSearchSelect } from "@plane/ui";
// helpers
import { truncateText } from "@plane/utils";
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
// types
type Props = {
@@ -20,14 +20,14 @@ import { Loader } from "@plane/ui";
import GithubLogo from "@/app/assets/services/github.png?url";
import SlackLogo from "@/app/assets/services/slack.png?url";
// constants
import { WORKSPACE_INTEGRATIONS } from "@/constants/fetch-keys";
import { WORKSPACE_INTEGRATIONS } from "@plane/constants";
// hooks
import { useInstance } from "@/hooks/store/use-instance";
import { useUserPermissions } from "@/hooks/store/user";
import useIntegrationPopup from "@/hooks/use-integration-popup";
import { usePlatformOS } from "@/hooks/use-platform-os";
// services
import { IntegrationService } from "@/services/integrations";
import { IntegrationService } from "@plane/services";
type Props = {
integration: IAppIntegration;
@@ -13,12 +13,12 @@ import type { IWorkspaceIntegration, ISlackIntegration } from "@plane/types";
// ui
import { Loader } from "@plane/ui";
// fetch-keys
import { SLACK_CHANNEL_INFO } from "@/constants/fetch-keys";
import { SLACK_CHANNEL_INFO } from "@plane/constants";
// hooks
import { useInstance } from "@/hooks/store/use-instance";
import useIntegrationPopup from "@/hooks/use-integration-popup";
// services
import { AppInstallationService } from "@/services/app_installation.service";
import { AppInstallationService } from "@plane/services";
type Props = {
integration: IWorkspaceIntegration;
+1 -1
View File
@@ -16,7 +16,7 @@ import { EIssueLayoutTypes, EIssuesStoreType } from "@plane/types";
// hooks
import { useIssues } from "@/hooks/store/use-issues";
// plane web imports
import type { TProject } from "@/plane-web/types";
import type { TProject } from "@plane/types";
// local imports
import { WorkItemsModal } from "../analytics/work-items/modal";
import { WorkItemFiltersToggle } from "../work-item-filters/filters-toggle";
@@ -18,7 +18,7 @@ import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// Plane-web
import { CreateUpdateEpicModal } from "@/plane-web/components/epics/epic-modal";
import { useTimeLineRelationOptions } from "@/plane-web/components/relations";
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
// helper
import { DeleteIssueModal } from "../../delete-issue-modal";
import { RelationIssueList } from "../../relations/issue-list";
@@ -16,7 +16,7 @@ import { CustomMenu } from "@plane/ui";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// Plane-web
import { useTimeLineRelationOptions } from "@/plane-web/components/relations";
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
type Props = {
issueId: string;
@@ -9,7 +9,7 @@ import { observer } from "mobx-react";
import { useIssueDetail } from "@/hooks/store/use-issue-detail";
// Plane-web
import { getRelationActivityContent, useTimeLineRelationOptions } from "@/plane-web/components/relations";
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
//
import { IssueActivityBlockComponent } from "./";
@@ -26,7 +26,7 @@ import { DeDupeIssuePopoverRoot } from "@/plane-web/components/de-dupe/duplicate
import { IssueTypeSwitcher } from "@/plane-web/components/issues/issue-details/issue-type-switcher";
import { useDebouncedDuplicateIssues } from "@/plane-web/hooks/use-debounced-duplicate-issues";
// services
import { WorkItemVersionService } from "@/services/issue";
import { WorkItemVersionService } from "@plane/services";
// local imports
import { IssueDetailWidgets } from "../issue-detail-widgets";
import { NameDescriptionUpdateStatus } from "../issue-update-status";
@@ -23,7 +23,7 @@ import { useProject } from "@/hooks/store/use-project";
import { usePlatformOS } from "@/hooks/use-platform-os";
// Plane web imports
import { useTimeLineRelationOptions } from "@/plane-web/components/relations";
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
import type { TRelationObject } from "../issue-detail-widgets/relations";
type TIssueRelationSelect = {
@@ -24,7 +24,7 @@ import { EIssuesStoreType, EIssueLayoutTypes } from "@plane/types";
import { Spinner } from "@plane/ui";
import { renderFormattedPayloadDate, cn } from "@plane/utils";
// constants
import { MONTHS_LIST } from "@/constants/calendar";
import { MONTHS_LIST } from "@plane/constants";
// helpers
// hooks
import { useIssues } from "@/hooks/store/use-issues";
@@ -17,7 +17,7 @@ import type { TGroupedIssues, TIssue, TIssueMap, TPaginationData, ICalendarDate
import { cn, renderFormattedPayloadDate } from "@plane/utils";
import { highlightIssueOnDrop } from "@/components/issues/issue-layouts/utils";
// helpers
import { MONTHS_LIST } from "@/constants/calendar";
import { MONTHS_LIST } from "@plane/constants";
// helpers
// types
import type { ICycleIssuesFilter } from "@/store/issue/cycle";
@@ -13,7 +13,7 @@ import { ChevronLeftIcon, ChevronRightIcon } from "@plane/propel/icons";
// icons
// constants
import { getDate } from "@plane/utils";
import { MONTHS_LIST } from "@/constants/calendar";
import { MONTHS_LIST } from "@plane/constants";
import { useCalendarView } from "@/hooks/store/use-calendar-view";
import type { ICycleIssuesFilter } from "@/store/issue/cycle";
import type { IModuleIssuesFilter } from "@/store/issue/module";
@@ -21,7 +21,7 @@ import type { TCalendarLayouts, TSupportedFilterForUpdate } from "@plane/types";
import { ToggleSwitch } from "@plane/ui";
// types
// constants
import { CALENDAR_LAYOUTS } from "@/constants/calendar";
import { CALENDAR_LAYOUTS } from "@plane/constants";
import { useCalendarView } from "@/hooks/store/use-calendar-view";
import useSize from "@/hooks/use-window-size";
import type { ICycleIssuesFilter } from "@/store/issue/cycle";
@@ -7,7 +7,7 @@
import { observer } from "mobx-react";
import { EStartOfTheWeek } from "@plane/types";
import { getOrderedDays } from "@plane/utils";
import { DAYS_LIST } from "@/constants/calendar";
import { DAYS_LIST } from "@plane/constants";
// helpers
// hooks
import { useUserProfile } from "@/hooks/store/user";
@@ -31,7 +31,7 @@ import { usePlatformOS } from "@/hooks/use-platform-os";
// plane web services
import { WorkspaceService } from "@/services/workspace.service";
// services
import { AIService } from "@/services/ai.service";
import { AIService } from "@plane/services";
const workspaceService = new WorkspaceService();
const aiService = new AIService();
@@ -120,7 +120,7 @@ export const IssueDescriptionEditor = observer(function IssueDescriptionEditor(p
setIAmFeelingLucky(true);
aiService
.createGptTask(workspaceSlug.toString(), {
.prompt(workspaceSlug.toString(), {
prompt: issueName,
task: "Generate a proper description for this work item.",
})
@@ -9,9 +9,7 @@ import { createContext } from "react";
import type { UseFormReset, UseFormWatch } from "react-hook-form";
// plane imports
import type { EditorRefApi } from "@plane/editor";
import type { ISearchIssueResponse, TIssue } from "@plane/types";
// plane web imports
import type { TIssuePropertyValues, TIssuePropertyValueErrors } from "@/plane-web/types/issue-types";
import type { ISearchIssueResponse, TIssue, TIssuePropertyValues, TIssuePropertyValueErrors } from "@plane/types";
import type { TIssueFields } from "@/plane-web/components/issues/issue-modal";
export type TPropertyValuesValidationProps = {
@@ -27,7 +27,7 @@ import { usePlatformOS } from "@/hooks/use-platform-os";
// plane web components
import { IssueIdentifier } from "@/plane-web/components/issues/issue-details/issue-identifier";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
type Props = {
isOpen: boolean;
@@ -27,7 +27,7 @@ import { IssueTypeSwitcher } from "@/plane-web/components/issues/issue-details/i
// plane web hooks
import { useDebouncedDuplicateIssues } from "@/plane-web/hooks/use-debounced-duplicate-issues";
// services
import { WorkItemVersionService } from "@/services/issue";
import { WorkItemVersionService } from "@plane/services";
// local components
import type { TIssueOperations } from "../issue-detail";
import { IssueParentDetail } from "../issue-detail/parent";
@@ -21,7 +21,7 @@ import useIssuePeekOverviewRedirection from "@/hooks/use-issue-peek-overview-red
import { usePlatformOS } from "@/hooks/use-platform-os";
// plane web imports
import { IssueIdentifier } from "@/plane-web/components/issues/issue-details/issue-identifier";
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
// local imports
import { useRelationOperations } from "../issue-detail-widgets/relations/helper";
import { RelationIssueProperty } from "./properties";
@@ -10,7 +10,7 @@ import { observer } from "mobx-react";
import type { TIssue, TIssueServiceType } from "@plane/types";
import { EIssueServiceType } from "@plane/types";
// Plane-web imports
import type { TIssueRelationTypes } from "@/plane-web/types";
import type { TIssueRelationTypes } from "@plane/types";
// local imports
import { RelationIssueListItem } from "./issue-list-item";
@@ -23,7 +23,7 @@ import {
// helpers
import { getSidebarNavigationItemIcon } from "@/plane-web/components/workspace/sidebar/helper";
// types
import type { TPersonalNavigationItemKey } from "@/types/navigation-preferences";
import type { TPersonalNavigationItemKey } from "@plane/types";
type TCustomizeNavigationDialogProps = {
isOpen: boolean;
@@ -4,7 +4,7 @@
* See the LICENSE file for details.
*/
import type { TPartialProject } from "@/plane-web/types";
import type { TPartialProject } from "@plane/types";
// plane propel imports
import { Logo } from "@plane/propel/emoji-icon-picker";
import { ChevronDownIcon } from "@plane/propel/icons";
@@ -22,7 +22,7 @@ import { UserImageUploadModal } from "@/components/core/modals/user-image-upload
// hooks
import { useUser, useUserProfile } from "@/hooks/store/user";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
type TProfileSetupFormValues = {
first_name: string;
@@ -21,7 +21,7 @@ import { UserImageUploadModal } from "@/components/core/modals/user-image-upload
import { useInstance } from "@/hooks/store/use-instance";
import { useUser, useUserProfile } from "@/hooks/store/user";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
// local components
import { CommonOnboardingHeader } from "../common";
import { MarketingConsent } from "./consent";
@@ -12,8 +12,8 @@ import { Tooltip } from "@plane/propel/tooltip";
import { CustomMenu } from "@plane/ui";
import { cn } from "@plane/utils";
// constants
import type { ToolbarMenuItem } from "@/constants/editor";
import { TOOLBAR_ITEMS, TYPOGRAPHY_ITEMS } from "@/constants/editor";
import type { ToolbarMenuItem } from "@plane/editor";
import { TOOLBAR_ITEMS, TYPOGRAPHY_ITEMS } from "@plane/editor";
// local imports
import { ColorDropdown } from "./color-dropdown";
@@ -8,7 +8,7 @@ import React from "react";
// components
import { Logo } from "@plane/propel/emoji-icon-picker";
// plane imports
import type { TPartialProject } from "@/plane-web/types";
import type { TPartialProject } from "@plane/types";
// local imports
import { PowerKMenuBuilder } from "./builder";
@@ -8,7 +8,7 @@ import { useEffect } from "react";
import { useParams } from "next/navigation";
import useSWR from "swr";
// services
import { USER_PROFILE_ACTIVITY } from "@/constants/fetch-keys";
import { USER_PROFILE_ACTIVITY } from "@plane/constants";
import { UserService } from "@/services/user.service";
// components
import { ActivityList } from "./activity-list";
@@ -16,7 +16,7 @@ import { calculateTimeAgo, getFileURL } from "@plane/utils";
// components
import { ActivityMessage, IssueLink } from "@/components/core/activity";
// constants
import { USER_PROFILE_ACTIVITY } from "@/constants/fetch-keys";
import { USER_PROFILE_ACTIVITY } from "@plane/constants";
// helpers
// hooks
import { useUser } from "@/hooks/store/user";
@@ -14,7 +14,7 @@ import useKeypress from "@/hooks/use-keypress";
// plane web components
import { CreateProjectForm } from "@/plane-web/components/projects/create/root";
// plane web types
import type { TProject } from "@/plane-web/types/projects";
import type { TProject } from "@plane/types";
// services
import { FileService } from "@/services/file.service";
const fileService = new FileService();
@@ -18,7 +18,7 @@ import { cn, projectIdentifierSanitizer, getTabIndex } from "@plane/utils";
// plane utils
// helpers
// plane-web types
import type { TProject } from "@/plane-web/types/projects";
import type { TProject } from "@plane/types";
type Props = {
setValue: UseFormSetValue<TProject>;
+1 -1
View File
@@ -28,7 +28,7 @@ import { handleCoverImageChange } from "@/helpers/cover-image.helper";
import { useProject } from "@/hooks/store/use-project";
import { usePlatformOS } from "@/hooks/use-platform-os";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
// local imports
import { ProjectNetworkIcon } from "./project-network-icon";
@@ -15,9 +15,9 @@ import SlackLogo from "@/app/assets/services/slack.png?url";
import { SelectChannel } from "@/components/integration/slack/select-channel";
import { SelectRepository } from "@/components/integration/github/select-repository";
// constants
import { PROJECT_GITHUB_REPOSITORY } from "@/constants/fetch-keys";
import { PROJECT_GITHUB_REPOSITORY } from "@plane/constants";
// services
import { ProjectService } from "@/services/project";
import { ProjectService } from "@plane/services";
type Props = {
integration: IWorkspaceIntegration;
@@ -16,7 +16,7 @@ import { TOAST_TYPE, setToast } from "@plane/propel/toast";
import type { IProject, IUserLite, IWorkspace } from "@plane/types";
import { Loader, ToggleSwitch } from "@plane/ui";
// constants
import { PROJECT_DETAILS } from "@/constants/fetch-keys";
import { PROJECT_DETAILS } from "@plane/constants";
// hooks
import { useProject } from "@/hooks/store/use-project";
import { useUserPermissions } from "@/hooks/store/user";
@@ -18,7 +18,7 @@ import { ApiTokenListItem } from "@/components/api-token/token-list-item";
import { ProfileSettingsHeading } from "@/components/settings/profile/heading";
import { APITokenSettingsLoader } from "@/components/ui/loader/settings/api-token";
// constants
import { API_TOKENS_LIST } from "@/constants/fetch-keys";
import { API_TOKENS_LIST } from "@plane/constants";
const apiTokenService = new APITokenService();
@@ -22,7 +22,7 @@ import { authErrorHandler, EAuthenticationErrorCodes, passwordErrors } from "@/h
// hooks
import { useUser } from "@/hooks/store/user";
// services
import { AuthService } from "@/services/auth.service";
import { AuthService } from "@plane/services";
export interface FormValues {
old_password: string;
@@ -10,8 +10,8 @@ import { ArrowDown, ArrowUp } from "lucide-react";
import { Button } from "@plane/propel/button";
import { cn } from "@plane/utils";
// constants
import type { TPlanePlans } from "@/constants/plans";
import { ComingSoonBadge, PLANE_PLANS, PLANS_LIST } from "@/constants/plans";
import type { TPlanePlans } from "@/components/workspace/billing/comparison/plans";
import { ComingSoonBadge, PLANE_PLANS, PLANS_LIST } from "@/components/workspace/billing/comparison/plans";
// local imports
import { PlanFeatureDetail } from "./feature-detail";
@@ -8,7 +8,7 @@ import { CheckCircle2, Minus, MinusCircle } from "lucide-react";
import type { EProductSubscriptionEnum } from "@plane/types";
// plane imports
// constants
import type { TPlanFeatureData } from "@/constants/plans";
import type { TPlanFeatureData } from "@/components/workspace/billing/comparison/plans";
type TPlanFeatureDetailProps = {
subscriptionType: EProductSubscriptionEnum;
@@ -5,3 +5,4 @@
*/
export * from "./base";
export * from "./plans";
@@ -0,0 +1,45 @@
/**
* Copyright (c) 2023-present Plane Software, Inc. and contributors
* SPDX-License-Identifier: AGPL-3.0-only
* See the LICENSE file for details.
*/
import type { LucideIcon } from "lucide-react";
// plane imports
import type { TLogoProps } from "@plane/types";
import { CycleIcon, FavoriteFolderIcon, ModuleIcon, PageIcon, ProjectIcon, ViewsIcon } from "@plane/propel/icons";
import type { ISvgIcons } from "@plane/propel/icons";
import { Logo } from "@plane/propel/emoji-icon-picker";
const ICON_MAP: Record<string, React.FC<ISvgIcons> | LucideIcon> = {
page: PageIcon,
project: ProjectIcon,
view: ViewsIcon,
module: ModuleIcon,
cycle: CycleIcon,
folder: FavoriteFolderIcon,
};
type Props = {
type: string;
logo?: TLogoProps;
};
export const FavoriteItemIcon = ({ type, logo }: Props) => {
const Icon = ICON_MAP[type] ?? PageIcon;
return (
<>
<div className="hidden size-5 items-center justify-center group-hover:flex">
<Icon className="m-auto size-4 flex-shrink-0 stroke-[1.5]" />
</div>
<div className="flex size-5 items-center justify-center group-hover:hidden">
{logo?.in_use ? (
<Logo logo={logo} size={16} type={type === "project" ? "material" : "lucide"} />
) : (
<Icon className="m-auto size-4 flex-shrink-0 stroke-[1.5]" />
)}
</div>
</>
);
};
@@ -4,32 +4,8 @@
* See the LICENSE file for details.
*/
import { Logo } from "@plane/propel/emoji-icon-picker";
import { PageIcon } from "@plane/propel/icons";
// plane imports
import type { IFavorite, TLogoProps } from "@plane/types";
// components
// plane web constants
import { FAVORITE_ITEM_ICONS, FAVORITE_ITEM_LINKS } from "@/constants/sidebar-favorites";
export const getFavoriteItemIcon = (type: string, logo?: TLogoProps) => {
const Icon = FAVORITE_ITEM_ICONS[type] || PageIcon;
return (
<>
<div className="hidden size-5 items-center justify-center group-hover:flex">
<Icon className="m-auto size-4 flex-shrink-0 stroke-[1.5]" />
</div>
<div className="flex size-5 items-center justify-center group-hover:hidden">
{logo?.in_use ? (
<Logo logo={logo} size={16} type={type === "project" ? "material" : "lucide"} />
) : (
<Icon className="m-auto size-4 flex-shrink-0 stroke-[1.5]" />
)}
</div>
</>
);
};
import { FAVORITE_ITEM_LINKS } from "@plane/constants";
import type { IFavorite } from "@plane/types";
export const generateFavoriteItemLink = (workspaceSlug: string, favorite: IFavorite) => {
const entityLinkDetails = FAVORITE_ITEM_LINKS[favorite.entity_type];

Some files were not shown because too many files have changed in this diff Show More