diff --git a/packages/console/package.json b/packages/console/package.json index c210f5598..0a855adf6 100644 --- a/packages/console/package.json +++ b/packages/console/package.json @@ -142,8 +142,22 @@ "namedComponents": "function-declaration", "unnamedComponents": "arrow-function" } + ], + "import/no-unused-modules": [ + "error", + { "unusedExports": true } ] - } + }, + "overrides": [ + { + "files": [ + "*.d.ts", "**/mdx-components/*/index.tsx" + ], + "rules": { + "import/no-unused-modules": "off" + } + } + ] }, "stylelint": { "extends": "@silverhand/eslint-config-react/.stylelintrc" diff --git a/packages/console/src/components/EmptyDataPlaceholder/index.tsx b/packages/console/src/components/EmptyDataPlaceholder/index.tsx index 27655c70f..bc0eb4a1b 100644 --- a/packages/console/src/components/EmptyDataPlaceholder/index.tsx +++ b/packages/console/src/components/EmptyDataPlaceholder/index.tsx @@ -8,7 +8,7 @@ import useTheme from '@/hooks/use-theme'; import * as styles from './index.module.scss'; -export type Props = { +type Props = { title?: string; size?: 'large' | 'medium' | 'small'; }; diff --git a/packages/console/src/components/IconButton/index.tsx b/packages/console/src/components/IconButton/index.tsx index 477c3bba5..118926147 100644 --- a/packages/console/src/components/IconButton/index.tsx +++ b/packages/console/src/components/IconButton/index.tsx @@ -4,7 +4,7 @@ import { forwardRef, useRef } from 'react'; import * as styles from './index.module.scss'; -export type Props = Omit, 'size' | 'type'> & { +type Props = Omit, 'size' | 'type'> & { size?: 'small' | 'medium' | 'large'; iconClassName?: string; }; diff --git a/packages/console/src/components/MultiTextInput/utils.ts b/packages/console/src/components/MultiTextInput/utils.ts index d9b2f542b..55eb3ab06 100644 --- a/packages/console/src/components/MultiTextInput/utils.ts +++ b/packages/console/src/components/MultiTextInput/utils.ts @@ -5,10 +5,7 @@ import { safeParseJson } from '@/utils/json'; import type { MultiTextInputError, MultiTextInputRule } from './types'; import { multiTextInputErrorGuard } from './types'; -export const validate = ( - value?: string[], - rule?: MultiTextInputRule -): MultiTextInputError | undefined => { +const validate = (value?: string[], rule?: MultiTextInputRule): MultiTextInputError | undefined => { if (!rule) { return; } diff --git a/packages/console/src/components/RoleScopesTransfer/components/TargetScopeItem/index.tsx b/packages/console/src/components/RoleScopesTransfer/components/TargetScopeItem/index.tsx index e32a84e7c..6840be31e 100644 --- a/packages/console/src/components/RoleScopesTransfer/components/TargetScopeItem/index.tsx +++ b/packages/console/src/components/RoleScopesTransfer/components/TargetScopeItem/index.tsx @@ -5,7 +5,7 @@ import IconButton from '@/components/IconButton'; import * as styles from './index.module.scss'; -export type Props = { +type Props = { scope: ScopeResponse; onDelete: (scope: ScopeResponse) => void; }; diff --git a/packages/console/src/components/Uploader/index.tsx b/packages/console/src/components/Uploader/index.tsx deleted file mode 100644 index f600c34eb..000000000 --- a/packages/console/src/components/Uploader/index.tsx +++ /dev/null @@ -1,3 +0,0 @@ -export { default as FileUploader } from './FileUploader'; -export { default as ImageUploader } from './ImageUploader'; -export { default as ImageUploaderField } from './ImageUploaderField'; diff --git a/packages/console/src/components/VerificationCodeInput/index.tsx b/packages/console/src/components/VerificationCodeInput/index.tsx index d6a0248e8..bb0a47a16 100644 --- a/packages/console/src/components/VerificationCodeInput/index.tsx +++ b/packages/console/src/components/VerificationCodeInput/index.tsx @@ -5,7 +5,7 @@ import * as styles from './index.module.scss'; export const defaultLength = 6; -export type Props = { +type Props = { name: string; className?: string; length?: number; diff --git a/packages/console/src/contexts/AppConfirmModalProvider/index.tsx b/packages/console/src/contexts/AppConfirmModalProvider/index.tsx index 814c979b1..ca6e4386e 100644 --- a/packages/console/src/contexts/AppConfirmModalProvider/index.tsx +++ b/packages/console/src/contexts/AppConfirmModalProvider/index.tsx @@ -5,7 +5,7 @@ import { useState, useRef, useMemo, createContext, useCallback, useEffect } from import ConfirmModal from '@/components/ConfirmModal'; import type { ConfirmModalProps } from '@/components/ConfirmModal'; -export type ModalContentRenderProps = { +type ModalContentRenderProps = { confirm: (data?: unknown) => void; cancel: (data?: unknown) => void; }; diff --git a/packages/console/src/contexts/AppEndpointsProvider.tsx b/packages/console/src/contexts/AppEndpointsProvider.tsx index e04904b47..5e060ca03 100644 --- a/packages/console/src/contexts/AppEndpointsProvider.tsx +++ b/packages/console/src/contexts/AppEndpointsProvider.tsx @@ -10,7 +10,7 @@ type Props = { children: ReactNode; }; -export type AppEndpoints = { +type AppEndpoints = { /** * The Logto endpoint for the current tenant. * diff --git a/packages/console/src/contexts/TenantsProvider.tsx b/packages/console/src/contexts/TenantsProvider.tsx index 8e221c50a..19e7f2cdc 100644 --- a/packages/console/src/contexts/TenantsProvider.tsx +++ b/packages/console/src/contexts/TenantsProvider.tsx @@ -11,7 +11,7 @@ type Props = { children: ReactNode; }; -export type Tenants = { +type Tenants = { tenants?: TenantInfo[]; isSettle: boolean; setTenants: (tenants: TenantInfo[]) => void; diff --git a/packages/console/src/hooks/use-confirm-modal.ts b/packages/console/src/hooks/use-confirm-modal.ts index 1cbe00730..e1d4197bb 100644 --- a/packages/console/src/hooks/use-confirm-modal.ts +++ b/packages/console/src/hooks/use-confirm-modal.ts @@ -2,6 +2,4 @@ import { useContext } from 'react'; import { AppConfirmModalContext } from '@/contexts/AppConfirmModalProvider'; -export type { ModalContentRenderProps } from '@/contexts/AppConfirmModalProvider'; - export const useConfirmModal = () => useContext(AppConfirmModalContext); diff --git a/packages/console/src/hooks/use-user-preferences.ts b/packages/console/src/hooks/use-user-preferences.ts index 36306e3a0..3d8e24b14 100644 --- a/packages/console/src/hooks/use-user-preferences.ts +++ b/packages/console/src/hooks/use-user-preferences.ts @@ -19,7 +19,7 @@ const userPreferencesGuard = z.object({ connectorSieNoticeConfirmed: z.boolean().optional(), }); -export type UserPreferences = z.infer; +type UserPreferences = z.infer; type DefaultUserPreference = { language: (typeof builtInConsoleLanguages)[number]; diff --git a/packages/console/src/onboarding/constants/index.ts b/packages/console/src/onboarding/constants/index.ts index 54ec67990..9b8ff596e 100644 --- a/packages/console/src/onboarding/constants/index.ts +++ b/packages/console/src/onboarding/constants/index.ts @@ -9,7 +9,6 @@ export const emailUsLink = buildUrl(contactEmailLink, { subject: 'Cloud pricing and special offer', }).replace(/\+/g, '%20'); -export const logtoBlogLink = 'https://blog.logto.io/?utm_source=console'; export const aboutCloudPreviewLink = 'https://docs.logto.io/about/cloud-preview?utm_source=console'; export const gtagAwTrackingId = 'AW-11124811245'; diff --git a/packages/console/src/onboarding/pages/SignInExperience/index.tsx b/packages/console/src/onboarding/pages/SignInExperience/index.tsx index 65c7e3276..9b67f0276 100644 --- a/packages/console/src/onboarding/pages/SignInExperience/index.tsx +++ b/packages/console/src/onboarding/pages/SignInExperience/index.tsx @@ -16,7 +16,7 @@ import FormField from '@/components/FormField'; import OverlayScrollbar from '@/components/OverlayScrollbar'; import PageMeta from '@/components/PageMeta'; import TextInput from '@/components/TextInput'; -import { ImageUploaderField } from '@/components/Uploader'; +import ImageUploaderField from '@/components/Uploader/ImageUploaderField'; import useApi from '@/hooks/use-api'; import type { RequestError } from '@/hooks/use-api'; import useUserAssetsService from '@/hooks/use-user-assets-service'; diff --git a/packages/console/src/onboarding/types.ts b/packages/console/src/onboarding/types.ts index 298719541..b4e2ee65a 100644 --- a/packages/console/src/onboarding/types.ts +++ b/packages/console/src/onboarding/types.ts @@ -48,7 +48,7 @@ export enum Reason { Others = 'others', } -export const questionnaireGuard = z.object({ +const questionnaireGuard = z.object({ project: z.nativeEnum(Project), deploymentType: z.nativeEnum(DeploymentType), titles: z.array(z.nativeEnum(Title)).optional(), diff --git a/packages/console/src/pages/Connectors/components/ConnectorForm/hooks.tsx b/packages/console/src/pages/Connectors/components/ConnectorForm/hooks.tsx index 0a1f6976f..a002a3005 100644 --- a/packages/console/src/pages/Connectors/components/ConnectorForm/hooks.tsx +++ b/packages/console/src/pages/Connectors/components/ConnectorForm/hooks.tsx @@ -6,7 +6,7 @@ import { parseFormConfig } from '@/pages/Connectors/components/ConnectorForm/uti import type { ConnectorFormType } from '@/pages/Connectors/types'; import { safeParseJson } from '@/utils/json'; -export const useJsonStringConfigParser = () => { +const useJsonStringConfigParser = () => { const { t } = useTranslation(undefined, { keyPrefix: 'admin_console' }); return (config: string) => { diff --git a/packages/console/src/pages/Dashboard/types.ts b/packages/console/src/pages/Dashboard/types.ts index 4adfa3a54..5d9d203ad 100644 --- a/packages/console/src/pages/Dashboard/types.ts +++ b/packages/console/src/pages/Dashboard/types.ts @@ -1,4 +1,4 @@ -export type CountAndDelta = { +type CountAndDelta = { count: number; delta: number; }; diff --git a/packages/console/src/pages/Profile/components/CardContent/index.tsx b/packages/console/src/pages/Profile/components/CardContent/index.tsx index 603bc785b..c52aacdfc 100644 --- a/packages/console/src/pages/Profile/components/CardContent/index.tsx +++ b/packages/console/src/pages/Profile/components/CardContent/index.tsx @@ -10,7 +10,7 @@ import NotSet from '../NotSet'; import * as styles from './index.module.scss'; -export type Action = { +type Action = { name: AdminConsoleKey; handler: () => void; }; diff --git a/packages/console/src/pages/Profile/containers/BasicUserInfoUpdateModal/index.tsx b/packages/console/src/pages/Profile/containers/BasicUserInfoUpdateModal/index.tsx index c9a7229e5..ccad2dc67 100644 --- a/packages/console/src/pages/Profile/containers/BasicUserInfoUpdateModal/index.tsx +++ b/packages/console/src/pages/Profile/containers/BasicUserInfoUpdateModal/index.tsx @@ -8,7 +8,7 @@ import ReactModal from 'react-modal'; import Button from '@/components/Button'; import ModalLayout from '@/components/ModalLayout'; import TextInput from '@/components/TextInput'; -import { ImageUploaderField } from '@/components/Uploader'; +import ImageUploaderField from '@/components/Uploader/ImageUploaderField'; import { adminTenantEndpoint, meApi } from '@/consts'; import { useStaticApi } from '@/hooks/use-api'; import { useConfirmModal } from '@/hooks/use-confirm-modal'; diff --git a/packages/console/src/pages/Profile/containers/VerificationCodeModal/index.tsx b/packages/console/src/pages/Profile/containers/VerificationCodeModal/index.tsx index 514aa406a..9523197e0 100644 --- a/packages/console/src/pages/Profile/containers/VerificationCodeModal/index.tsx +++ b/packages/console/src/pages/Profile/containers/VerificationCodeModal/index.tsx @@ -18,7 +18,7 @@ import { handleError, parseLocationState } from '../../utils'; import * as styles from './index.module.scss'; -export const resendTimeout = 59; +const resendTimeout = 59; const getTimeout = () => { const now = new Date(); diff --git a/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx b/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx index cb42768ab..863a734e7 100644 --- a/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx +++ b/packages/console/src/pages/SignInExperience/tabs/Branding/BrandingForm.tsx @@ -10,7 +10,7 @@ import DangerousRaw from '@/components/DangerousRaw'; import FormField from '@/components/FormField'; import Switch from '@/components/Switch'; import TextInput from '@/components/TextInput'; -import { ImageUploaderField } from '@/components/Uploader'; +import ImageUploaderField from '@/components/Uploader/ImageUploaderField'; import useUserAssetsService from '@/hooks/use-user-assets-service'; import { uriValidator } from '@/utils/validator'; diff --git a/packages/console/src/pages/SignInExperience/tabs/Others/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts b/packages/console/src/pages/SignInExperience/tabs/Others/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts index 28ca0a61a..76b12619c 100644 --- a/packages/console/src/pages/SignInExperience/tabs/Others/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts +++ b/packages/console/src/pages/SignInExperience/tabs/Others/components/ManageLanguage/LanguageEditor/use-language-editor-context.ts @@ -2,9 +2,9 @@ import type { LanguageTag } from '@logto/language-kit'; import { noop } from '@silverhand/essentials'; import { createContext, useMemo, useState } from 'react'; -export type ConfirmationState = 'none' | 'try-close' | 'try-switch-language' | 'try-add-language'; +type ConfirmationState = 'none' | 'try-close' | 'try-switch-language' | 'try-add-language'; -export type Context = { +type Context = { selectedLanguage: LanguageTag; preSelectedLanguage?: LanguageTag; preAddedLanguage?: LanguageTag; diff --git a/packages/console/src/pages/Webhooks/components/BasicWebhookForm/index.tsx b/packages/console/src/pages/Webhooks/components/BasicWebhookForm/index.tsx index aa7426db7..8823b464f 100644 --- a/packages/console/src/pages/Webhooks/components/BasicWebhookForm/index.tsx +++ b/packages/console/src/pages/Webhooks/components/BasicWebhookForm/index.tsx @@ -12,7 +12,7 @@ import { type BasicWebhookFormType } from '../../types'; import * as styles from './index.module.scss'; -export const hookEventOptions = Object.values(HookEvent).map((event) => ({ +const hookEventOptions = Object.values(HookEvent).map((event) => ({ title: hookEventLabel[event], value: event, })); diff --git a/packages/ui/src/containers/TermsAndPrivacy/TermsAndPrivacyConfirmModalContent/index.tsx b/packages/ui/src/containers/TermsAndPrivacy/TermsAndPrivacyConfirmModalContent/index.tsx index 044cbc7ef..387b8db3d 100644 --- a/packages/ui/src/containers/TermsAndPrivacy/TermsAndPrivacyConfirmModalContent/index.tsx +++ b/packages/ui/src/containers/TermsAndPrivacy/TermsAndPrivacyConfirmModalContent/index.tsx @@ -4,9 +4,8 @@ import { useTranslation, Trans } from 'react-i18next'; import PageContext from '@/Providers/PageContextProvider/PageContext'; import TermsLinks from '@/components/TermsLinks'; -import type { ModalContentRenderProps } from '@/hooks/use-confirm-modal'; -const TermsAndPrivacyConfirmModalContent = ({ cancel }: ModalContentRenderProps) => { +const TermsAndPrivacyConfirmModalContent = () => { const { experienceSettings } = useContext(PageContext); const { termsOfUseUrl, privacyPolicyUrl } = experienceSettings ?? {};