From d33fcd9b03e7297f5a45b20b832e6d299ae15993 Mon Sep 17 00:00:00 2001 From: Prateek Shourya Date: Mon, 13 Oct 2025 17:44:37 +0530 Subject: [PATCH] [WEB-5136] refactor: update `admin` ESLint configuration and refactor imports to use type imports - Enhanced ESLint configuration by adding new rules for import consistency and type imports. - Refactored multiple files to replace regular imports with type imports for better clarity and performance. - Ensured consistent use of type imports across the application to align with TypeScript best practices. --- apps/admin/.eslintrc.js | 14 ++++++++++++++ apps/admin/app/(all)/(dashboard)/ai/form.tsx | 7 ++++--- apps/admin/app/(all)/(dashboard)/ai/layout.tsx | 4 ++-- .../(dashboard)/authentication/github/form.tsx | 11 +++++++---- .../(dashboard)/authentication/github/layout.tsx | 4 ++-- .../(dashboard)/authentication/gitlab/form.tsx | 11 +++++++---- .../(dashboard)/authentication/gitlab/layout.tsx | 4 ++-- .../(dashboard)/authentication/google/form.tsx | 11 +++++++---- .../(dashboard)/authentication/google/layout.tsx | 4 ++-- .../(all)/(dashboard)/authentication/layout.tsx | 4 ++-- .../app/(all)/(dashboard)/authentication/page.tsx | 2 +- .../(all)/(dashboard)/email/email-config-form.tsx | 8 +++++--- apps/admin/app/(all)/(dashboard)/email/layout.tsx | 4 ++-- .../(all)/(dashboard)/email/test-email-modal.tsx | 3 ++- apps/admin/app/(all)/(dashboard)/general/form.tsx | 4 ++-- .../app/(all)/(dashboard)/general/intercom.tsx | 5 +++-- .../admin/app/(all)/(dashboard)/general/layout.tsx | 4 ++-- apps/admin/app/(all)/(dashboard)/header.tsx | 2 +- apps/admin/app/(all)/(dashboard)/image/form.tsx | 4 ++-- apps/admin/app/(all)/(dashboard)/image/layout.tsx | 4 ++-- apps/admin/app/(all)/(dashboard)/layout.tsx | 3 ++- .../app/(all)/(dashboard)/sidebar-help-section.tsx | 3 ++- apps/admin/app/(all)/(dashboard)/sidebar.tsx | 3 ++- .../(all)/(dashboard)/workspace/create/form.tsx | 2 +- .../app/(all)/(dashboard)/workspace/layout.tsx | 4 ++-- .../admin/app/(all)/(dashboard)/workspace/page.tsx | 2 +- apps/admin/app/(all)/(home)/auth-banner.tsx | 4 ++-- apps/admin/app/(all)/(home)/auth-helpers.tsx | 7 ++++--- apps/admin/app/(all)/(home)/sign-in-form.tsx | 6 ++++-- apps/admin/app/(all)/instance.provider.tsx | 2 +- apps/admin/app/(all)/store.provider.tsx | 3 ++- apps/admin/app/(all)/user.provider.tsx | 3 ++- apps/admin/app/layout.tsx | 4 ++-- .../authentication/authentication-modes.tsx | 2 +- .../authentication/authentication-method-card.tsx | 2 +- .../authentication/email-config-switch.tsx | 2 +- .../components/authentication/github-config.tsx | 2 +- .../components/authentication/gitlab-config.tsx | 2 +- .../components/authentication/google-config.tsx | 2 +- .../authentication/password-config-switch.tsx | 2 +- apps/admin/core/components/common/banner.tsx | 2 +- .../core/components/common/controller-input.tsx | 3 ++- apps/admin/core/components/instance/failure.tsx | 2 +- .../components/instance/instance-not-ready.tsx | 2 +- apps/admin/core/components/instance/setup-form.tsx | 3 ++- apps/admin/core/hooks/store/use-instance.tsx | 2 +- apps/admin/core/hooks/store/use-theme.tsx | 2 +- apps/admin/core/hooks/store/use-user.tsx | 2 +- apps/admin/core/hooks/store/use-workspace.tsx | 2 +- apps/admin/core/store/instance.store.ts | 7 ++++--- apps/admin/core/store/root.store.ts | 12 ++++++++---- apps/admin/core/store/theme.store.ts | 2 +- apps/admin/core/store/user.store.ts | 7 ++++--- apps/admin/core/store/workspace.store.ts | 4 ++-- 54 files changed, 135 insertions(+), 91 deletions(-) diff --git a/apps/admin/.eslintrc.js b/apps/admin/.eslintrc.js index 1662fabf756..a0bc76d5d9a 100644 --- a/apps/admin/.eslintrc.js +++ b/apps/admin/.eslintrc.js @@ -1,4 +1,18 @@ module.exports = { root: true, extends: ["@plane/eslint-config/next.js"], + rules: { + "no-duplicate-imports": "off", + "import/no-duplicates": ["error", { "prefer-inline": false }], + "import/consistent-type-specifier-style": ["error", "prefer-top-level"], + "@typescript-eslint/no-import-type-side-effects": "error", + "@typescript-eslint/consistent-type-imports": [ + "error", + { + prefer: "type-imports", + fixStyle: "separate-type-imports", + disallowTypeAnnotations: false, + }, + ], + }, }; diff --git a/apps/admin/app/(all)/(dashboard)/ai/form.tsx b/apps/admin/app/(all)/(dashboard)/ai/form.tsx index 80e31979fe3..64970a547aa 100644 --- a/apps/admin/app/(all)/(dashboard)/ai/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/ai/form.tsx @@ -1,12 +1,13 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import { useForm } from "react-hook-form"; import { Lightbulb } from "lucide-react"; import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceAIConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceAIConfigurationKeys } from "@plane/types"; // components -import { ControllerInput, TControllerInputFormField } from "@/components/common/controller-input"; +import type { TControllerInputFormField } from "@/components/common/controller-input"; +import { ControllerInput } from "@/components/common/controller-input"; // hooks import { useInstance } from "@/hooks/store"; diff --git a/apps/admin/app/(all)/(dashboard)/ai/layout.tsx b/apps/admin/app/(all)/(dashboard)/ai/layout.tsx index 42f3796496f..303ed56045b 100644 --- a/apps/admin/app/(all)/(dashboard)/ai/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/ai/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Artificial Intelligence Settings - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/authentication/github/form.tsx b/apps/admin/app/(all)/(dashboard)/authentication/github/form.tsx index 71c93b6e2f2..ae0f54c4f07 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/github/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/github/form.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, useState } from "react"; +import type { FC } from "react"; +import { useState } from "react"; import { isEmpty } from "lodash-es"; import Link from "next/link"; import { useForm } from "react-hook-form"; @@ -9,14 +10,16 @@ import { Monitor } from "lucide-react"; import { API_BASE_URL } from "@plane/constants"; import { Button, getButtonStyling } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceGithubAuthenticationConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceGithubAuthenticationConfigurationKeys } from "@plane/types"; import { cn } from "@plane/utils"; // components import { CodeBlock } from "@/components/common/code-block"; import { ConfirmDiscardModal } from "@/components/common/confirm-discard-modal"; -import { ControllerInput, TControllerInputFormField } from "@/components/common/controller-input"; -import { CopyField, TCopyField } from "@/components/common/copy-field"; +import type { TControllerInputFormField } from "@/components/common/controller-input"; +import { ControllerInput } from "@/components/common/controller-input"; +import type { TCopyField } from "@/components/common/copy-field"; +import { CopyField } from "@/components/common/copy-field"; // hooks import { useInstance } from "@/hooks/store"; diff --git a/apps/admin/app/(all)/(dashboard)/authentication/github/layout.tsx b/apps/admin/app/(all)/(dashboard)/authentication/github/layout.tsx index 373f9340aff..2da5a9031ee 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/github/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/github/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "GitHub Authentication - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/form.tsx b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/form.tsx index ee8949d97d9..91e4ee8eca5 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/form.tsx @@ -1,4 +1,5 @@ -import { FC, useState } from "react"; +import type { FC } from "react"; +import { useState } from "react"; import { isEmpty } from "lodash-es"; import Link from "next/link"; import { useForm } from "react-hook-form"; @@ -6,13 +7,15 @@ import { useForm } from "react-hook-form"; import { API_BASE_URL } from "@plane/constants"; import { Button, getButtonStyling } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceGitlabAuthenticationConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceGitlabAuthenticationConfigurationKeys } from "@plane/types"; import { cn } from "@plane/utils"; // components import { CodeBlock } from "@/components/common/code-block"; import { ConfirmDiscardModal } from "@/components/common/confirm-discard-modal"; -import { ControllerInput, TControllerInputFormField } from "@/components/common/controller-input"; -import { CopyField, TCopyField } from "@/components/common/copy-field"; +import type { TControllerInputFormField } from "@/components/common/controller-input"; +import { ControllerInput } from "@/components/common/controller-input"; +import type { TCopyField } from "@/components/common/copy-field"; +import { CopyField } from "@/components/common/copy-field"; // hooks import { useInstance } from "@/hooks/store"; diff --git a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/layout.tsx b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/layout.tsx index fc89e9752fb..79b5de5afe9 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/gitlab/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/gitlab/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "GitLab Authentication - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/authentication/google/form.tsx b/apps/admin/app/(all)/(dashboard)/authentication/google/form.tsx index dfde992ea01..d9c3646b734 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/google/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/google/form.tsx @@ -1,5 +1,6 @@ "use client"; -import { FC, useState } from "react"; +import type { FC } from "react"; +import { useState } from "react"; import { isEmpty } from "lodash-es"; import Link from "next/link"; import { useForm } from "react-hook-form"; @@ -8,13 +9,15 @@ import { Monitor } from "lucide-react"; import { API_BASE_URL } from "@plane/constants"; import { Button, getButtonStyling } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceGoogleAuthenticationConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceGoogleAuthenticationConfigurationKeys } from "@plane/types"; import { cn } from "@plane/utils"; // components import { CodeBlock } from "@/components/common/code-block"; import { ConfirmDiscardModal } from "@/components/common/confirm-discard-modal"; -import { ControllerInput, TControllerInputFormField } from "@/components/common/controller-input"; -import { CopyField, TCopyField } from "@/components/common/copy-field"; +import type { TControllerInputFormField } from "@/components/common/controller-input"; +import { ControllerInput } from "@/components/common/controller-input"; +import type { TCopyField } from "@/components/common/copy-field"; +import { CopyField } from "@/components/common/copy-field"; // hooks import { useInstance } from "@/hooks/store"; diff --git a/apps/admin/app/(all)/(dashboard)/authentication/google/layout.tsx b/apps/admin/app/(all)/(dashboard)/authentication/google/layout.tsx index 5b3786b5fae..ddc0cff4589 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/google/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/google/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Google Authentication - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/authentication/layout.tsx b/apps/admin/app/(all)/(dashboard)/authentication/layout.tsx index 69753d9608a..bed80f2240d 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Authentication Settings - Plane Web", diff --git a/apps/admin/app/(all)/(dashboard)/authentication/page.tsx b/apps/admin/app/(all)/(dashboard)/authentication/page.tsx index 024874d0054..16be71e5862 100644 --- a/apps/admin/app/(all)/(dashboard)/authentication/page.tsx +++ b/apps/admin/app/(all)/(dashboard)/authentication/page.tsx @@ -5,7 +5,7 @@ import { observer } from "mobx-react"; import useSWR from "swr"; // plane internal packages import { setPromiseToast } from "@plane/propel/toast"; -import { TInstanceConfigurationKeys } from "@plane/types"; +import type { TInstanceConfigurationKeys } from "@plane/types"; import { Loader, ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; // hooks diff --git a/apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx b/apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx index beca83cb531..450a5f4e938 100644 --- a/apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx +++ b/apps/admin/app/(all)/(dashboard)/email/email-config-form.tsx @@ -1,15 +1,17 @@ "use client"; -import React, { FC, useMemo, useState } from "react"; +import type { FC } from "react"; +import React, { useMemo, useState } from "react"; import { useForm } from "react-hook-form"; // types import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceEmailConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceEmailConfigurationKeys } from "@plane/types"; // ui import { CustomSelect } from "@plane/ui"; // components -import { ControllerInput, TControllerInputFormField } from "@/components/common/controller-input"; +import type { TControllerInputFormField } from "@/components/common/controller-input"; +import { ControllerInput } from "@/components/common/controller-input"; // hooks import { useInstance } from "@/hooks/store"; // local components diff --git a/apps/admin/app/(all)/(dashboard)/email/layout.tsx b/apps/admin/app/(all)/(dashboard)/email/layout.tsx index cb321295107..0e6fc06cd3c 100644 --- a/apps/admin/app/(all)/(dashboard)/email/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/email/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; interface EmailLayoutProps { children: ReactNode; diff --git a/apps/admin/app/(all)/(dashboard)/email/test-email-modal.tsx b/apps/admin/app/(all)/(dashboard)/email/test-email-modal.tsx index 4d99f096f67..09117096074 100644 --- a/apps/admin/app/(all)/(dashboard)/email/test-email-modal.tsx +++ b/apps/admin/app/(all)/(dashboard)/email/test-email-modal.tsx @@ -1,4 +1,5 @@ -import React, { FC, useEffect, useState } from "react"; +import type { FC } from "react"; +import React, { useEffect, useState } from "react"; import { Dialog, Transition } from "@headlessui/react"; // plane imports import { Button } from "@plane/propel/button"; diff --git a/apps/admin/app/(all)/(dashboard)/general/form.tsx b/apps/admin/app/(all)/(dashboard)/general/form.tsx index d9ef1c2d71c..c91069b54e1 100644 --- a/apps/admin/app/(all)/(dashboard)/general/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/general/form.tsx @@ -1,12 +1,12 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import { observer } from "mobx-react"; import { Controller, useForm } from "react-hook-form"; import { Telescope } from "lucide-react"; // types import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IInstance, IInstanceAdmin } from "@plane/types"; +import type { IInstance, IInstanceAdmin } from "@plane/types"; // ui import { Input, ToggleSwitch } from "@plane/ui"; // components diff --git a/apps/admin/app/(all)/(dashboard)/general/intercom.tsx b/apps/admin/app/(all)/(dashboard)/general/intercom.tsx index 37f7e307114..a6f17d629ad 100644 --- a/apps/admin/app/(all)/(dashboard)/general/intercom.tsx +++ b/apps/admin/app/(all)/(dashboard)/general/intercom.tsx @@ -1,10 +1,11 @@ "use client"; -import { FC, useState } from "react"; +import type { FC } from "react"; +import { useState } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; import { MessageSquare } from "lucide-react"; -import { IFormattedInstanceConfiguration } from "@plane/types"; +import type { IFormattedInstanceConfiguration } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; // hooks import { useInstance } from "@/hooks/store"; diff --git a/apps/admin/app/(all)/(dashboard)/general/layout.tsx b/apps/admin/app/(all)/(dashboard)/general/layout.tsx index af300051052..f5167e7504b 100644 --- a/apps/admin/app/(all)/(dashboard)/general/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/general/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "General Settings - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/header.tsx b/apps/admin/app/(all)/(dashboard)/header.tsx index af7161c2dc9..82d7241f61f 100644 --- a/apps/admin/app/(all)/(dashboard)/header.tsx +++ b/apps/admin/app/(all)/(dashboard)/header.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import { observer } from "mobx-react"; import { usePathname } from "next/navigation"; import { Menu, Settings } from "lucide-react"; diff --git a/apps/admin/app/(all)/(dashboard)/image/form.tsx b/apps/admin/app/(all)/(dashboard)/image/form.tsx index 4e63962b9e5..f6adcaee4b1 100644 --- a/apps/admin/app/(all)/(dashboard)/image/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/image/form.tsx @@ -1,9 +1,9 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import { useForm } from "react-hook-form"; import { Button } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; -import { IFormattedInstanceConfiguration, TInstanceImageConfigurationKeys } from "@plane/types"; +import type { IFormattedInstanceConfiguration, TInstanceImageConfigurationKeys } from "@plane/types"; // components import { ControllerInput } from "@/components/common/controller-input"; // hooks diff --git a/apps/admin/app/(all)/(dashboard)/image/layout.tsx b/apps/admin/app/(all)/(dashboard)/image/layout.tsx index 7ec0ff54b7c..559a15f9d47 100644 --- a/apps/admin/app/(all)/(dashboard)/image/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/image/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; interface ImageLayoutProps { children: ReactNode; diff --git a/apps/admin/app/(all)/(dashboard)/layout.tsx b/apps/admin/app/(all)/(dashboard)/layout.tsx index 17962378375..76d74f4638c 100644 --- a/apps/admin/app/(all)/(dashboard)/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/layout.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, ReactNode, useEffect } from "react"; +import type { FC, ReactNode } from "react"; +import { useEffect } from "react"; import { observer } from "mobx-react"; import { useRouter } from "next/navigation"; // components diff --git a/apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx b/apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx index c4421ae5fd9..ddafc48818e 100644 --- a/apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx +++ b/apps/admin/app/(all)/(dashboard)/sidebar-help-section.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, useState, useRef } from "react"; +import type { FC } from "react"; +import { useState, useRef } from "react"; import { observer } from "mobx-react"; import Link from "next/link"; import { ExternalLink, FileText, HelpCircle, MoveLeft } from "lucide-react"; diff --git a/apps/admin/app/(all)/(dashboard)/sidebar.tsx b/apps/admin/app/(all)/(dashboard)/sidebar.tsx index 09dab86eef2..e37d6eb5c69 100644 --- a/apps/admin/app/(all)/(dashboard)/sidebar.tsx +++ b/apps/admin/app/(all)/(dashboard)/sidebar.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, useEffect, useRef } from "react"; +import type { FC } from "react"; +import { useEffect, useRef } from "react"; import { observer } from "mobx-react"; // plane helpers import { useOutsideClickDetector } from "@plane/hooks"; diff --git a/apps/admin/app/(all)/(dashboard)/workspace/create/form.tsx b/apps/admin/app/(all)/(dashboard)/workspace/create/form.tsx index c2c82484dde..6ec3fe4a6db 100644 --- a/apps/admin/app/(all)/(dashboard)/workspace/create/form.tsx +++ b/apps/admin/app/(all)/(dashboard)/workspace/create/form.tsx @@ -7,7 +7,7 @@ import { WEB_BASE_URL, ORGANIZATION_SIZE, RESTRICTED_URLS } from "@plane/constan import { Button, getButtonStyling } from "@plane/propel/button"; import { TOAST_TYPE, setToast } from "@plane/propel/toast"; import { InstanceWorkspaceService } from "@plane/services"; -import { IWorkspace } from "@plane/types"; +import type { IWorkspace } from "@plane/types"; // components import { CustomSelect, Input } from "@plane/ui"; // hooks diff --git a/apps/admin/app/(all)/(dashboard)/workspace/layout.tsx b/apps/admin/app/(all)/(dashboard)/workspace/layout.tsx index 78b0f3c4036..4749e2f7b0a 100644 --- a/apps/admin/app/(all)/(dashboard)/workspace/layout.tsx +++ b/apps/admin/app/(all)/(dashboard)/workspace/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; export const metadata: Metadata = { title: "Workspace Management - God Mode", diff --git a/apps/admin/app/(all)/(dashboard)/workspace/page.tsx b/apps/admin/app/(all)/(dashboard)/workspace/page.tsx index 344edfa2ebc..a03c443d8a4 100644 --- a/apps/admin/app/(all)/(dashboard)/workspace/page.tsx +++ b/apps/admin/app/(all)/(dashboard)/workspace/page.tsx @@ -8,7 +8,7 @@ import { Loader as LoaderIcon } from "lucide-react"; // types import { Button, getButtonStyling } from "@plane/propel/button"; import { setPromiseToast } from "@plane/propel/toast"; -import { TInstanceConfigurationKeys } from "@plane/types"; +import type { TInstanceConfigurationKeys } from "@plane/types"; import { Loader, ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; diff --git a/apps/admin/app/(all)/(home)/auth-banner.tsx b/apps/admin/app/(all)/(home)/auth-banner.tsx index 5d63808f138..c0a9a0e9263 100644 --- a/apps/admin/app/(all)/(home)/auth-banner.tsx +++ b/apps/admin/app/(all)/(home)/auth-banner.tsx @@ -1,7 +1,7 @@ -import { FC } from "react"; +import type { FC } from "react"; import { Info, X } from "lucide-react"; // plane constants -import { TAdminAuthErrorInfo } from "@plane/constants"; +import type { TAdminAuthErrorInfo } from "@plane/constants"; type TAuthBanner = { bannerData: TAdminAuthErrorInfo | undefined; diff --git a/apps/admin/app/(all)/(home)/auth-helpers.tsx b/apps/admin/app/(all)/(home)/auth-helpers.tsx index 7613548b969..4da6d7eca0c 100644 --- a/apps/admin/app/(all)/(home)/auth-helpers.tsx +++ b/apps/admin/app/(all)/(home)/auth-helpers.tsx @@ -1,10 +1,11 @@ -import { ReactNode } from "react"; +import type { ReactNode } from "react"; import Image from "next/image"; import Link from "next/link"; import { KeyRound, Mails } from "lucide-react"; // plane packages -import { SUPPORT_EMAIL, EAdminAuthErrorCodes, TAdminAuthErrorInfo } from "@plane/constants"; -import { TGetBaseAuthenticationModeProps, TInstanceAuthenticationModes } from "@plane/types"; +import type { TAdminAuthErrorInfo } from "@plane/constants"; +import { SUPPORT_EMAIL, EAdminAuthErrorCodes } from "@plane/constants"; +import type { TGetBaseAuthenticationModeProps, TInstanceAuthenticationModes } from "@plane/types"; import { resolveGeneralTheme } from "@plane/utils"; // components import { EmailCodesConfiguration } from "@/components/authentication/email-config-switch"; diff --git a/apps/admin/app/(all)/(home)/sign-in-form.tsx b/apps/admin/app/(all)/(home)/sign-in-form.tsx index 41b924fe264..2049bda6154 100644 --- a/apps/admin/app/(all)/(home)/sign-in-form.tsx +++ b/apps/admin/app/(all)/(home)/sign-in-form.tsx @@ -1,10 +1,12 @@ "use client"; -import { FC, useEffect, useMemo, useState } from "react"; +import type { FC } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useSearchParams } from "next/navigation"; import { Eye, EyeOff } from "lucide-react"; // plane internal packages -import { API_BASE_URL, EAdminAuthErrorCodes, TAdminAuthErrorInfo } from "@plane/constants"; +import type { EAdminAuthErrorCodes, TAdminAuthErrorInfo } from "@plane/constants"; +import { API_BASE_URL } from "@plane/constants"; import { Button } from "@plane/propel/button"; import { AuthService } from "@plane/services"; import { Input, Spinner } from "@plane/ui"; diff --git a/apps/admin/app/(all)/instance.provider.tsx b/apps/admin/app/(all)/instance.provider.tsx index ac8fa74e82c..19e15ec529d 100644 --- a/apps/admin/app/(all)/instance.provider.tsx +++ b/apps/admin/app/(all)/instance.provider.tsx @@ -1,4 +1,4 @@ -import { FC, ReactNode } from "react"; +import type { FC, ReactNode } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; // hooks diff --git a/apps/admin/app/(all)/store.provider.tsx b/apps/admin/app/(all)/store.provider.tsx index 7a0d4855911..648a37119b8 100644 --- a/apps/admin/app/(all)/store.provider.tsx +++ b/apps/admin/app/(all)/store.provider.tsx @@ -1,6 +1,7 @@ "use client"; -import { ReactNode, createContext } from "react"; +import type { ReactNode } from "react"; +import { createContext } from "react"; // plane admin store import { RootStore } from "@/plane-admin/store/root.store"; diff --git a/apps/admin/app/(all)/user.provider.tsx b/apps/admin/app/(all)/user.provider.tsx index 3a50823dcb7..e026c31da31 100644 --- a/apps/admin/app/(all)/user.provider.tsx +++ b/apps/admin/app/(all)/user.provider.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, ReactNode, useEffect } from "react"; +import type { FC, ReactNode } from "react"; +import { useEffect } from "react"; import { observer } from "mobx-react"; import useSWR from "swr"; // hooks diff --git a/apps/admin/app/layout.tsx b/apps/admin/app/layout.tsx index e735723695e..b9cdd17caff 100644 --- a/apps/admin/app/layout.tsx +++ b/apps/admin/app/layout.tsx @@ -1,5 +1,5 @@ -import { ReactNode } from "react"; -import { Metadata } from "next"; +import type { ReactNode } from "react"; +import type { Metadata } from "next"; // plane imports import { ADMIN_BASE_PATH } from "@plane/constants"; // styles diff --git a/apps/admin/ce/components/authentication/authentication-modes.tsx b/apps/admin/ce/components/authentication/authentication-modes.tsx index c9001670292..386e0c05e28 100644 --- a/apps/admin/ce/components/authentication/authentication-modes.tsx +++ b/apps/admin/ce/components/authentication/authentication-modes.tsx @@ -3,7 +3,7 @@ import Image from "next/image"; import { useTheme } from "next-themes"; import { KeyRound, Mails } from "lucide-react"; // types -import { +import type { TGetBaseAuthenticationModeProps, TInstanceAuthenticationMethodKeys, TInstanceAuthenticationModes, diff --git a/apps/admin/core/components/authentication/authentication-method-card.tsx b/apps/admin/core/components/authentication/authentication-method-card.tsx index 566551f48ef..df8e6dba637 100644 --- a/apps/admin/core/components/authentication/authentication-method-card.tsx +++ b/apps/admin/core/components/authentication/authentication-method-card.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; // helpers import { cn } from "@plane/utils"; diff --git a/apps/admin/core/components/authentication/email-config-switch.tsx b/apps/admin/core/components/authentication/email-config-switch.tsx index 16eb9870496..3a2a5f541ab 100644 --- a/apps/admin/core/components/authentication/email-config-switch.tsx +++ b/apps/admin/core/components/authentication/email-config-switch.tsx @@ -3,7 +3,7 @@ import React from "react"; import { observer } from "mobx-react"; // hooks -import { TInstanceAuthenticationMethodKeys } from "@plane/types"; +import type { TInstanceAuthenticationMethodKeys } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; import { useInstance } from "@/hooks/store"; // ui diff --git a/apps/admin/core/components/authentication/github-config.tsx b/apps/admin/core/components/authentication/github-config.tsx index d4bf9f2e1c9..33219145870 100644 --- a/apps/admin/core/components/authentication/github-config.tsx +++ b/apps/admin/core/components/authentication/github-config.tsx @@ -7,7 +7,7 @@ import Link from "next/link"; import { Settings2 } from "lucide-react"; // plane internal packages import { getButtonStyling } from "@plane/propel/button"; -import { TInstanceAuthenticationMethodKeys } from "@plane/types"; +import type { TInstanceAuthenticationMethodKeys } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; // hooks diff --git a/apps/admin/core/components/authentication/gitlab-config.tsx b/apps/admin/core/components/authentication/gitlab-config.tsx index a94768c9b35..6f0294c3cdc 100644 --- a/apps/admin/core/components/authentication/gitlab-config.tsx +++ b/apps/admin/core/components/authentication/gitlab-config.tsx @@ -7,7 +7,7 @@ import Link from "next/link"; import { Settings2 } from "lucide-react"; // plane internal packages import { getButtonStyling } from "@plane/propel/button"; -import { TInstanceAuthenticationMethodKeys } from "@plane/types"; +import type { TInstanceAuthenticationMethodKeys } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; // hooks diff --git a/apps/admin/core/components/authentication/google-config.tsx b/apps/admin/core/components/authentication/google-config.tsx index a1a243ecc06..ae0cecf338f 100644 --- a/apps/admin/core/components/authentication/google-config.tsx +++ b/apps/admin/core/components/authentication/google-config.tsx @@ -7,7 +7,7 @@ import Link from "next/link"; import { Settings2 } from "lucide-react"; // plane internal packages import { getButtonStyling } from "@plane/propel/button"; -import { TInstanceAuthenticationMethodKeys } from "@plane/types"; +import type { TInstanceAuthenticationMethodKeys } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; import { cn } from "@plane/utils"; // hooks diff --git a/apps/admin/core/components/authentication/password-config-switch.tsx b/apps/admin/core/components/authentication/password-config-switch.tsx index 5cbd9b03c2a..1126ff4fbee 100644 --- a/apps/admin/core/components/authentication/password-config-switch.tsx +++ b/apps/admin/core/components/authentication/password-config-switch.tsx @@ -3,7 +3,7 @@ import React from "react"; import { observer } from "mobx-react"; // hooks -import { TInstanceAuthenticationMethodKeys } from "@plane/types"; +import type { TInstanceAuthenticationMethodKeys } from "@plane/types"; import { ToggleSwitch } from "@plane/ui"; import { useInstance } from "@/hooks/store"; // ui diff --git a/apps/admin/core/components/common/banner.tsx b/apps/admin/core/components/common/banner.tsx index 932a0c629a3..32bc5bc77fc 100644 --- a/apps/admin/core/components/common/banner.tsx +++ b/apps/admin/core/components/common/banner.tsx @@ -1,4 +1,4 @@ -import { FC } from "react"; +import type { FC } from "react"; import { AlertCircle, CheckCircle2 } from "lucide-react"; type TBanner = { diff --git a/apps/admin/core/components/common/controller-input.tsx b/apps/admin/core/components/common/controller-input.tsx index cbcbafb2d07..4b16ffd07ce 100644 --- a/apps/admin/core/components/common/controller-input.tsx +++ b/apps/admin/core/components/common/controller-input.tsx @@ -1,7 +1,8 @@ "use client"; import React, { useState } from "react"; -import { Controller, Control } from "react-hook-form"; +import type { Control } from "react-hook-form"; +import { Controller } from "react-hook-form"; // icons import { Eye, EyeOff } from "lucide-react"; // plane internal packages diff --git a/apps/admin/core/components/instance/failure.tsx b/apps/admin/core/components/instance/failure.tsx index 2601934bc81..97ace834f86 100644 --- a/apps/admin/core/components/instance/failure.tsx +++ b/apps/admin/core/components/instance/failure.tsx @@ -1,5 +1,5 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import { observer } from "mobx-react"; import Image from "next/image"; import { useTheme } from "next-themes"; diff --git a/apps/admin/core/components/instance/instance-not-ready.tsx b/apps/admin/core/components/instance/instance-not-ready.tsx index 272a3808bb3..b01d938bf9b 100644 --- a/apps/admin/core/components/instance/instance-not-ready.tsx +++ b/apps/admin/core/components/instance/instance-not-ready.tsx @@ -1,6 +1,6 @@ "use client"; -import { FC } from "react"; +import type { FC } from "react"; import Image from "next/image"; import Link from "next/link"; import { Button } from "@plane/propel/button"; diff --git a/apps/admin/core/components/instance/setup-form.tsx b/apps/admin/core/components/instance/setup-form.tsx index a883c3167e2..a4d59b6895a 100644 --- a/apps/admin/core/components/instance/setup-form.tsx +++ b/apps/admin/core/components/instance/setup-form.tsx @@ -1,6 +1,7 @@ "use client"; -import { FC, useEffect, useMemo, useState } from "react"; +import type { FC } from "react"; +import { useEffect, useMemo, useState } from "react"; import { useSearchParams } from "next/navigation"; // icons import { Eye, EyeOff } from "lucide-react"; diff --git a/apps/admin/core/hooks/store/use-instance.tsx b/apps/admin/core/hooks/store/use-instance.tsx index 67ac3bca889..5917df3fa08 100644 --- a/apps/admin/core/hooks/store/use-instance.tsx +++ b/apps/admin/core/hooks/store/use-instance.tsx @@ -1,7 +1,7 @@ import { useContext } from "react"; // store import { StoreContext } from "@/app/(all)/store.provider"; -import { IInstanceStore } from "@/store/instance.store"; +import type { IInstanceStore } from "@/store/instance.store"; export const useInstance = (): IInstanceStore => { const context = useContext(StoreContext); diff --git a/apps/admin/core/hooks/store/use-theme.tsx b/apps/admin/core/hooks/store/use-theme.tsx index 0f07149b1db..d5a1e820e32 100644 --- a/apps/admin/core/hooks/store/use-theme.tsx +++ b/apps/admin/core/hooks/store/use-theme.tsx @@ -1,7 +1,7 @@ import { useContext } from "react"; // store import { StoreContext } from "@/app/(all)/store.provider"; -import { IThemeStore } from "@/store/theme.store"; +import type { IThemeStore } from "@/store/theme.store"; export const useTheme = (): IThemeStore => { const context = useContext(StoreContext); diff --git a/apps/admin/core/hooks/store/use-user.tsx b/apps/admin/core/hooks/store/use-user.tsx index eaf02862e26..56b988eb80e 100644 --- a/apps/admin/core/hooks/store/use-user.tsx +++ b/apps/admin/core/hooks/store/use-user.tsx @@ -1,7 +1,7 @@ import { useContext } from "react"; // store import { StoreContext } from "@/app/(all)/store.provider"; -import { IUserStore } from "@/store/user.store"; +import type { IUserStore } from "@/store/user.store"; export const useUser = (): IUserStore => { const context = useContext(StoreContext); diff --git a/apps/admin/core/hooks/store/use-workspace.tsx b/apps/admin/core/hooks/store/use-workspace.tsx index 2203ec948ca..c4578c91702 100644 --- a/apps/admin/core/hooks/store/use-workspace.tsx +++ b/apps/admin/core/hooks/store/use-workspace.tsx @@ -1,7 +1,7 @@ import { useContext } from "react"; // store import { StoreContext } from "@/app/(all)/store.provider"; -import { IWorkspaceStore } from "@/store/workspace.store"; +import type { IWorkspaceStore } from "@/store/workspace.store"; export const useWorkspace = (): IWorkspaceStore => { const context = useContext(StoreContext); diff --git a/apps/admin/core/store/instance.store.ts b/apps/admin/core/store/instance.store.ts index b27aa4c78b0..ec892292055 100644 --- a/apps/admin/core/store/instance.store.ts +++ b/apps/admin/core/store/instance.store.ts @@ -1,9 +1,10 @@ import { set } from "lodash-es"; import { observable, action, computed, makeObservable, runInAction } from "mobx"; // plane internal packages -import { EInstanceStatus, TInstanceStatus } from "@plane/constants"; +import type { TInstanceStatus } from "@plane/constants"; +import { EInstanceStatus } from "@plane/constants"; import { InstanceService } from "@plane/services"; -import { +import type { IInstance, IInstanceAdmin, IInstanceConfiguration, @@ -12,7 +13,7 @@ import { IInstanceConfig, } from "@plane/types"; // root store -import { CoreRootStore } from "@/store/root.store"; +import type { CoreRootStore } from "@/store/root.store"; export interface IInstanceStore { // issues diff --git a/apps/admin/core/store/root.store.ts b/apps/admin/core/store/root.store.ts index 8c53061ab91..68d11885b75 100644 --- a/apps/admin/core/store/root.store.ts +++ b/apps/admin/core/store/root.store.ts @@ -1,9 +1,13 @@ import { enableStaticRendering } from "mobx-react"; // stores -import { IInstanceStore, InstanceStore } from "./instance.store"; -import { IThemeStore, ThemeStore } from "./theme.store"; -import { IUserStore, UserStore } from "./user.store"; -import { IWorkspaceStore, WorkspaceStore } from "./workspace.store"; +import type { IInstanceStore } from "./instance.store"; +import { InstanceStore } from "./instance.store"; +import type { IThemeStore } from "./theme.store"; +import { ThemeStore } from "./theme.store"; +import type { IUserStore } from "./user.store"; +import { UserStore } from "./user.store"; +import type { IWorkspaceStore } from "./workspace.store"; +import { WorkspaceStore } from "./workspace.store"; enableStaticRendering(typeof window === "undefined"); diff --git a/apps/admin/core/store/theme.store.ts b/apps/admin/core/store/theme.store.ts index f47042d6e93..4512facd2bf 100644 --- a/apps/admin/core/store/theme.store.ts +++ b/apps/admin/core/store/theme.store.ts @@ -1,6 +1,6 @@ import { action, observable, makeObservable } from "mobx"; // root store -import { CoreRootStore } from "@/store/root.store"; +import type { CoreRootStore } from "@/store/root.store"; type TTheme = "dark" | "light"; export interface IThemeStore { diff --git a/apps/admin/core/store/user.store.ts b/apps/admin/core/store/user.store.ts index 85c56495b2d..1187355a04d 100644 --- a/apps/admin/core/store/user.store.ts +++ b/apps/admin/core/store/user.store.ts @@ -1,10 +1,11 @@ import { action, observable, runInAction, makeObservable } from "mobx"; // plane internal packages -import { EUserStatus, TUserStatus } from "@plane/constants"; +import type { TUserStatus } from "@plane/constants"; +import { EUserStatus } from "@plane/constants"; import { AuthService, UserService } from "@plane/services"; -import { IUser } from "@plane/types"; +import type { IUser } from "@plane/types"; // root store -import { CoreRootStore } from "@/store/root.store"; +import type { CoreRootStore } from "@/store/root.store"; export interface IUserStore { // observables diff --git a/apps/admin/core/store/workspace.store.ts b/apps/admin/core/store/workspace.store.ts index b8856620fa9..f9203ed40cb 100644 --- a/apps/admin/core/store/workspace.store.ts +++ b/apps/admin/core/store/workspace.store.ts @@ -2,9 +2,9 @@ import { set } from "lodash-es"; import { action, observable, runInAction, makeObservable, computed } from "mobx"; // plane imports import { InstanceWorkspaceService } from "@plane/services"; -import { IWorkspace, TLoader, TPaginationInfo } from "@plane/types"; +import type { IWorkspace, TLoader, TPaginationInfo } from "@plane/types"; // root store -import { CoreRootStore } from "@/store/root.store"; +import type { CoreRootStore } from "@/store/root.store"; export interface IWorkspaceStore { // observables