chore: lint require and how to import react (#30041)

This commit is contained in:
Stephen Zhou 2025-12-23 18:02:10 +08:00 committed by GitHub
parent 72ca3607a3
commit 403adefc07
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1078 changed files with 1680 additions and 1216 deletions

View File

@ -1,9 +1,7 @@
import fs from 'node:fs' import fs from 'node:fs'
import path from 'node:path' import path from 'node:path'
import vm from 'node:vm'
// Mock functions to simulate the check-i18n functionality import { transpile } from 'typescript'
const vm = require('node:vm')
const transpile = require('typescript').transpile
describe('check-i18n script functionality', () => { describe('check-i18n script functionality', () => {
const testDir = path.join(__dirname, '../i18n-test') const testDir = path.join(__dirname, '../i18n-test')

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen, waitFor } from '@testing-library/react' import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import CheckCode from '@/app/(shareLayout)/webapp-signin/check-code/page' import CheckCode from '@/app/(shareLayout)/webapp-signin/check-code/page'
import MailAndPasswordAuth from '@/app/(shareLayout)/webapp-signin/components/mail-and-password-auth' import MailAndPasswordAuth from '@/app/(shareLayout)/webapp-signin/components/mail-and-password-auth'

View File

@ -1,5 +1,5 @@
import { render, screen, waitFor } from '@testing-library/react' import { render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import WebAppStoreProvider, { useWebAppStore } from '@/context/web-app-context' import WebAppStoreProvider, { useWebAppStore } from '@/context/web-app-context'
import { AccessMode } from '@/models/access-control' import { AccessMode } from '@/models/access-control'

View File

@ -1,6 +1,6 @@
import type { ActionItem } from '../../app/components/goto-anything/actions/types' import type { ActionItem } from '../../app/components/goto-anything/actions/types'
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import CommandSelector from '../../app/components/goto-anything/command-selector' import CommandSelector from '../../app/components/goto-anything/command-selector'
vi.mock('cmdk', () => ({ vi.mock('cmdk', () => ({

View File

@ -1,5 +1,5 @@
import { render, screen } from '@testing-library/react' import { render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
// Type alias for search mode // Type alias for search mode
type SearchMode = 'scopes' | 'commands' | null type SearchMode = 'scopes' | 'commands' | null

View File

@ -6,7 +6,7 @@
*/ */
import { render, screen } from '@testing-library/react' import { render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
// Mock environment variables before importing constants // Mock environment variables before importing constants
const originalEnv = process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT const originalEnv = process.env.NEXT_PUBLIC_MAX_PARALLEL_LIMIT

View File

@ -6,7 +6,7 @@
*/ */
import { cleanup, render } from '@testing-library/react' import { cleanup, render } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import BlockInput from '../app/components/base/block-input' import BlockInput from '../app/components/base/block-input'
import SupportVarInput from '../app/components/workflow/nodes/_base/components/support-var-input' import SupportVarInput from '../app/components/workflow/nodes/_base/components/support-var-input'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/app/log-annotation' import Main from '@/app/components/app/log-annotation'
import { PageType } from '@/app/components/base/features/new-feature-panel/annotation-reply/type' import { PageType } from '@/app/components/base/features/new-feature-panel/annotation-reply/type'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Configuration from '@/app/components/app/configuration' import Configuration from '@/app/components/app/configuration'
const IConfiguration = async () => { const IConfiguration = async () => {

View File

@ -1,5 +1,5 @@
import type { Locale } from '@/i18n-config' import type { Locale } from '@/i18n-config'
import React from 'react' import * as React from 'react'
import DevelopMain from '@/app/components/develop' import DevelopMain from '@/app/components/develop'
export type IDevelopProps = { export type IDevelopProps = {

View File

@ -15,7 +15,8 @@ import {
import { useUnmount } from 'ahooks' import { useUnmount } from 'ahooks'
import dynamic from 'next/dynamic' import dynamic from 'next/dynamic'
import { usePathname, useRouter } from 'next/navigation' import { usePathname, useRouter } from 'next/navigation'
import React, { useCallback, useEffect, useState } from 'react' import * as React from 'react'
import { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useShallow } from 'zustand/react/shallow' import { useShallow } from 'zustand/react/shallow'
import AppSideBar from '@/app/components/app-sidebar' import AppSideBar from '@/app/components/app-sidebar'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/app/log-annotation' import Main from '@/app/components/app/log-annotation'
import { PageType } from '@/app/components/base/features/new-feature-panel/annotation-reply/type' import { PageType } from '@/app/components/base/features/new-feature-panel/annotation-reply/type'

View File

@ -4,7 +4,8 @@ import type { IAppCardProps } from '@/app/components/app/overview/app-card'
import type { BlockEnum } from '@/app/components/workflow/types' import type { BlockEnum } from '@/app/components/workflow/types'
import type { UpdateAppSiteCodeResponse } from '@/models/app' import type { UpdateAppSiteCodeResponse } from '@/models/app'
import type { App } from '@/types/app' import type { App } from '@/types/app'
import React, { useCallback, useMemo } from 'react' import * as React from 'react'
import { useCallback, useMemo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import AppCard from '@/app/components/app/overview/app-card' import AppCard from '@/app/components/app/overview/app-card'

View File

@ -2,7 +2,8 @@
import type { PeriodParams } from '@/app/components/app/overview/app-chart' import type { PeriodParams } from '@/app/components/app/overview/app-chart'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import quarterOfYear from 'dayjs/plugin/quarterOfYear' import quarterOfYear from 'dayjs/plugin/quarterOfYear'
import React, { useState } from 'react' import * as React from 'react'
import { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { TIME_PERIOD_MAPPING as LONG_TIME_PERIOD_MAPPING } from '@/app/components/app/log/filter' import { TIME_PERIOD_MAPPING as LONG_TIME_PERIOD_MAPPING } from '@/app/components/app/log/filter'
import { AvgResponseTime, AvgSessionInteractions, AvgUserInteractions, ConversationsChart, CostChart, EndUsersChart, MessagesChart, TokenPerSecond, UserSatisfactionRate, WorkflowCostChart, WorkflowDailyTerminalsChart, WorkflowMessagesChart } from '@/app/components/app/overview/app-chart' import { AvgResponseTime, AvgSessionInteractions, AvgUserInteractions, ConversationsChart, CostChart, EndUsersChart, MessagesChart, TokenPerSecond, UserSatisfactionRate, WorkflowCostChart, WorkflowDailyTerminalsChart, WorkflowMessagesChart } from '@/app/components/app/overview/app-chart'

View File

@ -3,7 +3,7 @@ import type { FC } from 'react'
import type { PeriodParams } from '@/app/components/app/overview/app-chart' import type { PeriodParams } from '@/app/components/app/overview/app-chart'
import type { Item } from '@/app/components/base/select' import type { Item } from '@/app/components/base/select'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { SimpleSelect } from '@/app/components/base/select' import { SimpleSelect } from '@/app/components/base/select'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import ApikeyInfoPanel from '@/app/components/app/overview/apikey-info-panel' import ApikeyInfoPanel from '@/app/components/app/overview/apikey-info-panel'
import ChartView from './chart-view' import ChartView from './chart-view'
import TracingPanel from './tracing/panel' import TracingPanel from './tracing/panel'

View File

@ -5,7 +5,8 @@ import type { TriggerProps } from '@/app/components/base/date-and-time-picker/ty
import { RiCalendarLine } from '@remixicon/react' import { RiCalendarLine } from '@remixicon/react'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { noop } from 'lodash-es' import { noop } from 'lodash-es'
import React, { useCallback } from 'react' import * as React from 'react'
import { useCallback } from 'react'
import Picker from '@/app/components/base/date-and-time-picker/date-picker' import Picker from '@/app/components/base/date-and-time-picker/date-picker'
import { useI18N } from '@/context/i18n' import { useI18N } from '@/context/i18n'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'

View File

@ -3,7 +3,8 @@ import type { Dayjs } from 'dayjs'
import type { FC } from 'react' import type { FC } from 'react'
import type { PeriodParams, PeriodParamsWithTimeRange } from '@/app/components/app/overview/app-chart' import type { PeriodParams, PeriodParamsWithTimeRange } from '@/app/components/app/overview/app-chart'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { HourglassShape } from '@/app/components/base/icons/src/vender/other' import { HourglassShape } from '@/app/components/base/icons/src/vender/other'
import { useI18N } from '@/context/i18n' import { useI18N } from '@/context/i18n'
import { formatToLocalTime } from '@/utils/format' import { formatToLocalTime } from '@/utils/format'

View File

@ -4,7 +4,8 @@ import type { PeriodParamsWithTimeRange, TimeRange } from '@/app/components/app/
import type { Item } from '@/app/components/base/select' import type { Item } from '@/app/components/base/select'
import { RiArrowDownSLine, RiCheckLine } from '@remixicon/react' import { RiArrowDownSLine, RiCheckLine } from '@remixicon/react'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import React, { useCallback } from 'react' import * as React from 'react'
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { SimpleSelect } from '@/app/components/base/select' import { SimpleSelect } from '@/app/components/base/select'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'

View File

@ -1,5 +1,5 @@
import { render } from '@testing-library/react' import { render } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import { OpikIconBig } from '@/app/components/base/icons/src/public/tracing' import { OpikIconBig } from '@/app/components/base/icons/src/public/tracing'
import iconData from '@/app/components/base/icons/src/public/tracing/OpikIconBig.json' import iconData from '@/app/components/base/icons/src/public/tracing/OpikIconBig.json'
import { normalizeAttrs } from '@/app/components/base/icons/utils' import { normalizeAttrs } from '@/app/components/base/icons/utils'

View File

@ -2,7 +2,8 @@
import type { FC } from 'react' import type { FC } from 'react'
import type { PopupProps } from './config-popup' import type { PopupProps } from './config-popup'
import React, { useCallback, useRef, useState } from 'react' import * as React from 'react'
import { useCallback, useRef, useState } from 'react'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,

View File

@ -2,7 +2,8 @@
import type { FC, JSX } from 'react' import type { FC, JSX } from 'react'
import type { AliyunConfig, ArizeConfig, DatabricksConfig, LangFuseConfig, LangSmithConfig, MLflowConfig, OpikConfig, PhoenixConfig, TencentConfig, WeaveConfig } from './type' import type { AliyunConfig, ArizeConfig, DatabricksConfig, LangFuseConfig, LangSmithConfig, MLflowConfig, OpikConfig, PhoenixConfig, TencentConfig, WeaveConfig } from './type'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Divider from '@/app/components/base/divider' import Divider from '@/app/components/base/divider'
import Switch from '@/app/components/base/switch' import Switch from '@/app/components/base/switch'

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import Input from '@/app/components/base/input' import Input from '@/app/components/base/input'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'

View File

@ -8,7 +8,8 @@ import {
} from '@remixicon/react' } from '@remixicon/react'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import { usePathname } from 'next/navigation' import { usePathname } from 'next/navigation'
import React, { useEffect, useState } from 'react' import * as React from 'react'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Divider from '@/app/components/base/divider' import Divider from '@/app/components/base/divider'
import { AliyunIcon, ArizeIcon, DatabricksIcon, LangfuseIcon, LangsmithIcon, MlflowIcon, OpikIcon, PhoenixIcon, TencentIcon, WeaveIcon } from '@/app/components/base/icons/src/public/tracing' import { AliyunIcon, ArizeIcon, DatabricksIcon, LangfuseIcon, LangsmithIcon, MlflowIcon, OpikIcon, PhoenixIcon, TencentIcon, WeaveIcon } from '@/app/components/base/icons/src/public/tracing'

View File

@ -2,7 +2,8 @@
import type { FC } from 'react' import type { FC } from 'react'
import type { AliyunConfig, ArizeConfig, DatabricksConfig, LangFuseConfig, LangSmithConfig, MLflowConfig, OpikConfig, PhoenixConfig, TencentConfig, WeaveConfig } from './type' import type { AliyunConfig, ArizeConfig, DatabricksConfig, LangFuseConfig, LangSmithConfig, MLflowConfig, OpikConfig, PhoenixConfig, TencentConfig, WeaveConfig } from './type'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'

View File

@ -3,7 +3,8 @@ import type { FC } from 'react'
import { import {
RiEqualizer2Line, RiEqualizer2Line,
} from '@remixicon/react' } from '@remixicon/react'
import React, { useCallback } from 'react' import * as React from 'react'
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { AliyunIconBig, ArizeIconBig, DatabricksIconBig, LangfuseIconBig, LangsmithIconBig, MlflowIconBig, OpikIconBig, PhoenixIconBig, TencentIconBig, WeaveIconBig } from '@/app/components/base/icons/src/public/tracing' import { AliyunIconBig, ArizeIconBig, DatabricksIconBig, LangfuseIconBig, LangsmithIconBig, MlflowIconBig, OpikIconBig, PhoenixIconBig, TencentIconBig, WeaveIconBig } from '@/app/components/base/icons/src/public/tracing'
import { Eye as View } from '@/app/components/base/icons/src/vender/solid/general' import { Eye as View } from '@/app/components/base/icons/src/vender/solid/general'

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import { TracingIcon as Icon } from '@/app/components/base/icons/src/public/tracing' import { TracingIcon as Icon } from '@/app/components/base/icons/src/public/tracing'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React, { useEffect } from 'react' import * as React from 'react'
import { useEffect } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useAppContext } from '@/context/app-context' import { useAppContext } from '@/context/app-context'
import useDocumentTitle from '@/hooks/use-document-title' import useDocumentTitle from '@/hooks/use-document-title'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
const page = () => { const page = () => {
return ( return (

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import MainDetail from '@/app/components/datasets/documents/detail' import MainDetail from '@/app/components/datasets/documents/detail'
export type IDocumentDetailProps = { export type IDocumentDetailProps = {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Settings from '@/app/components/datasets/documents/detail/settings' import Settings from '@/app/components/datasets/documents/detail/settings'
export type IProps = { export type IProps = {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import CreateFromPipeline from '@/app/components/datasets/documents/create-from-pipeline' import CreateFromPipeline from '@/app/components/datasets/documents/create-from-pipeline'
const CreateFromPipelinePage = async () => { const CreateFromPipelinePage = async () => {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import DatasetUpdateForm from '@/app/components/datasets/create' import DatasetUpdateForm from '@/app/components/datasets/create'
export type IProps = { export type IProps = {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/datasets/documents' import Main from '@/app/components/datasets/documents'
export type IProps = { export type IProps = {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/datasets/hit-testing' import Main from '@/app/components/datasets/hit-testing'
type Props = { type Props = {

View File

@ -10,7 +10,8 @@ import {
RiFocus2Line, RiFocus2Line,
} from '@remixicon/react' } from '@remixicon/react'
import { usePathname } from 'next/navigation' import { usePathname } from 'next/navigation'
import React, { useEffect, useMemo, useState } from 'react' import * as React from 'react'
import { useEffect, useMemo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import AppSideBar from '@/app/components/app-sidebar' import AppSideBar from '@/app/components/app-sidebar'
import { useStore } from '@/app/components/app/store' import { useStore } from '@/app/components/app/store'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Form from '@/app/components/datasets/settings/form' import Form from '@/app/components/datasets/settings/form'
import { getLocaleOnServer, useTranslation as translate } from '@/i18n-config/server' import { getLocaleOnServer, useTranslation as translate } from '@/i18n-config/server'

View File

@ -1,5 +1,5 @@
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
export type IDatasetDetail = { export type IDatasetDetail = {
children: React.ReactNode children: React.ReactNode

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import ExternalKnowledgeBaseConnector from '@/app/components/datasets/external-knowledge-base/connector' import ExternalKnowledgeBaseConnector from '@/app/components/datasets/external-knowledge-base/connector'
const ExternalKnowledgeBaseCreation = () => { const ExternalKnowledgeBaseCreation = () => {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import CreateFromPipeline from '@/app/components/datasets/create-from-pipeline' import CreateFromPipeline from '@/app/components/datasets/create-from-pipeline'
const DatasetCreation = async () => { const DatasetCreation = async () => {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import DatasetUpdateForm from '@/app/components/datasets/create' import DatasetUpdateForm from '@/app/components/datasets/create'
const DatasetCreation = async () => { const DatasetCreation = async () => {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import AppList from '@/app/components/explore/app-list' import AppList from '@/app/components/explore/app-list'
const Apps = () => { const Apps = () => {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/explore/installed-app' import Main from '@/app/components/explore/installed-app'
export type IInstalledAppProps = { export type IInstalledAppProps = {

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC, PropsWithChildren } from 'react' import type { FC, PropsWithChildren } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import ExploreClient from '@/app/components/explore' import ExploreClient from '@/app/components/explore'
import useDocumentTitle from '@/hooks/use-document-title' import useDocumentTitle from '@/hooks/use-document-title'

View File

@ -1,5 +1,5 @@
import type { ReactNode } from 'react' import type { ReactNode } from 'react'
import React from 'react' import * as React from 'react'
import AmplitudeProvider from '@/app/components/base/amplitude' import AmplitudeProvider from '@/app/components/base/amplitude'
import GA, { GaType } from '@/app/components/base/ga' import GA, { GaType } from '@/app/components/base/ga'
import Zendesk from '@/app/components/base/zendesk' import Zendesk from '@/app/components/base/zendesk'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React, { useEffect } from 'react' import * as React from 'react'
import { useEffect } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import ToolProviderList from '@/app/components/tools/provider-list' import ToolProviderList from '@/app/components/tools/provider-list'
import { useAppContext } from '@/context/app-context' import { useAppContext } from '@/context/app-context'

View File

@ -1,5 +1,5 @@
'use client' 'use client'
import React from 'react' import * as React from 'react'
import ChatWithHistoryWrap from '@/app/components/base/chat/chat-with-history' import ChatWithHistoryWrap from '@/app/components/base/chat/chat-with-history'
import AuthenticatedLayout from '../../components/authenticated-layout' import AuthenticatedLayout from '../../components/authenticated-layout'

View File

@ -1,5 +1,5 @@
'use client' 'use client'
import React from 'react' import * as React from 'react'
import EmbeddedChatbot from '@/app/components/base/chat/embedded-chatbot' import EmbeddedChatbot from '@/app/components/base/chat/embedded-chatbot'
import AuthenticatedLayout from '../../components/authenticated-layout' import AuthenticatedLayout from '../../components/authenticated-layout'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/share/text-generation' import Main from '@/app/components/share/text-generation'
import AuthenticatedLayout from '../../components/authenticated-layout' import AuthenticatedLayout from '../../components/authenticated-layout'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import { usePathname, useRouter, useSearchParams } from 'next/navigation' import { usePathname, useRouter, useSearchParams } from 'next/navigation'
import React, { useCallback, useEffect } from 'react' import * as React from 'react'
import { useCallback, useEffect } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import AppUnavailable from '@/app/components/base/app-unavailable' import AppUnavailable from '@/app/components/base/app-unavailable'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'

View File

@ -1,6 +1,7 @@
'use client' 'use client'
import { useRouter, useSearchParams } from 'next/navigation' import { useRouter, useSearchParams } from 'next/navigation'
import React, { useCallback, useEffect } from 'react' import * as React from 'react'
import { useCallback, useEffect } from 'react'
import AppUnavailable from '@/app/components/base/app-unavailable' import AppUnavailable from '@/app/components/base/app-unavailable'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import { RiContractLine, RiDoorLockLine, RiErrorWarningFill } from '@remixicon/react' import { RiContractLine, RiDoorLockLine, RiErrorWarningFill } from '@remixicon/react'
import Link from 'next/link' import Link from 'next/link'
import React, { useCallback, useEffect, useState } from 'react' import * as React from 'react'
import { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'
import { IS_CE_EDITION } from '@/config' import { IS_CE_EDITION } from '@/config'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { useRouter, useSearchParams } from 'next/navigation' import { useRouter, useSearchParams } from 'next/navigation'
import React, { useCallback } from 'react' import * as React from 'react'
import { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import AppUnavailable from '@/app/components/base/app-unavailable' import AppUnavailable from '@/app/components/base/app-unavailable'
import { useGlobalPublicStore } from '@/context/global-public-context' import { useGlobalPublicStore } from '@/context/global-public-context'

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import Main from '@/app/components/share/text-generation' import Main from '@/app/components/share/text-generation'
import AuthenticatedLayout from '../../components/authenticated-layout' import AuthenticatedLayout from '../../components/authenticated-layout'

View File

@ -5,7 +5,8 @@ import type { OnImageInput } from '@/app/components/base/app-icon-picker/ImageIn
import type { AvatarProps } from '@/app/components/base/avatar' import type { AvatarProps } from '@/app/components/base/avatar'
import type { ImageFile } from '@/types/app' import type { ImageFile } from '@/types/app'
import { RiDeleteBin5Line, RiPencilLine } from '@remixicon/react' import { RiDeleteBin5Line, RiPencilLine } from '@remixicon/react'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import ImageInput from '@/app/components/base/app-icon-picker/ImageInput' import ImageInput from '@/app/components/base/app-icon-picker/ImageInput'

View File

@ -2,7 +2,8 @@ import type { ResponseError } from '@/service/fetch'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import { noop } from 'lodash-es' import { noop } from 'lodash-es'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React, { useState } from 'react' import * as React from 'react'
import { useState } from 'react'
import { Trans, useTranslation } from 'react-i18next' import { Trans, useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

View File

@ -1,5 +1,5 @@
import type { ReactNode } from 'react' import type { ReactNode } from 'react'
import React from 'react' import * as React from 'react'
import AmplitudeProvider from '@/app/components/base/amplitude' import AmplitudeProvider from '@/app/components/base/amplitude'
import GA, { GaType } from '@/app/components/base/ga' import GA, { GaType } from '@/app/components/base/ga'
import HeaderWrapper from '@/app/components/header/header-wrapper' import HeaderWrapper from '@/app/components/header/header-wrapper'

View File

@ -9,7 +9,8 @@ import {
} from '@remixicon/react' } from '@remixicon/react'
import dayjs from 'dayjs' import dayjs from 'dayjs'
import { useRouter, useSearchParams } from 'next/navigation' import { useRouter, useSearchParams } from 'next/navigation'
import React, { useEffect, useRef } from 'react' import * as React from 'react'
import { useEffect, useRef } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Avatar from '@/app/components/base/avatar' import Avatar from '@/app/components/base/avatar'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

View File

@ -1,5 +1,5 @@
'use client' 'use client'
import React from 'react' import * as React from 'react'
import { useGlobalPublicStore } from '@/context/global-public-context' import { useGlobalPublicStore } from '@/context/global-public-context'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'
import Header from '../signin/_header' import Header from '../signin/_header'

View File

@ -13,7 +13,8 @@ import {
} from '@remixicon/react' } from '@remixicon/react'
import dynamic from 'next/dynamic' import dynamic from 'next/dynamic'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import CardView from '@/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view' import CardView from '@/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/card-view'

View File

@ -3,7 +3,8 @@ import {
RiEqualizer2Line, RiEqualizer2Line,
RiMenuLine, RiMenuLine,
} from '@remixicon/react' } from '@remixicon/react'
import React, { useCallback, useRef, useState } from 'react' import * as React from 'react'
import { useCallback, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useStore as useAppStore } from '@/app/components/app/store' import { useStore as useAppStore } from '@/app/components/app/store'
import { import {

View File

@ -1,4 +1,4 @@
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { import {
ApiAggregate, ApiAggregate,

View File

@ -1,7 +1,8 @@
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'
import { RiMoreFill } from '@remixicon/react' import { RiMoreFill } from '@remixicon/react'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import React, { useCallback, useState } from 'react' import * as React from 'react'
import { useCallback, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useSelector as useAppContextWithSelector } from '@/context/app-context' import { useSelector as useAppContextWithSelector } from '@/context/app-context'
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'

View File

@ -2,7 +2,7 @@ import type { DataSet } from '@/models/datasets'
import { RiEditLine } from '@remixicon/react' import { RiEditLine } from '@remixicon/react'
import { render, screen, waitFor } from '@testing-library/react' import { render, screen, waitFor } from '@testing-library/react'
import userEvent from '@testing-library/user-event' import userEvent from '@testing-library/user-event'
import React from 'react' import * as React from 'react'
import { import {
ChunkingMode, ChunkingMode,
DatasetPermission, DatasetPermission,

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'
import React, { useMemo } from 'react' import * as React from 'react'
import { useMemo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
import { useKnowledge } from '@/hooks/use-knowledge' import { useKnowledge } from '@/hooks/use-knowledge'

View File

@ -1,5 +1,5 @@
import type { RemixiconComponentType } from '@remixicon/react' import type { RemixiconComponentType } from '@remixicon/react'
import React from 'react' import * as React from 'react'
type MenuItemProps = { type MenuItemProps = {
name: string name: string

View File

@ -1,5 +1,5 @@
import { RiDeleteBinLine, RiEditLine, RiFileDownloadLine } from '@remixicon/react' import { RiDeleteBinLine, RiEditLine, RiFileDownloadLine } from '@remixicon/react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail' import { useDatasetDetailContextWithSelector } from '@/context/dataset-detail'
import Divider from '../../base/divider' import Divider from '../../base/divider'

View File

@ -3,7 +3,8 @@ import type { DataSet } from '@/models/datasets'
import { import {
RiMenuLine, RiMenuLine,
} from '@remixicon/react' } from '@remixicon/react'
import React, { useCallback, useRef, useState } from 'react' import * as React from 'react'
import { useCallback, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { import {
PortalToFollowElem, PortalToFollowElem,

View File

@ -1,7 +1,8 @@
import type { NavIcon } from './navLink' import type { NavIcon } from './navLink'
import { useHover, useKeyPress } from 'ahooks' import { useHover, useKeyPress } from 'ahooks'
import { usePathname } from 'next/navigation' import { usePathname } from 'next/navigation'
import React, { useCallback, useEffect, useState } from 'react' import * as React from 'react'
import { useCallback, useEffect, useState } from 'react'
import { useShallow } from 'zustand/react/shallow' import { useShallow } from 'zustand/react/shallow'
import { useStore as useAppStore } from '@/app/components/app/store' import { useStore as useAppStore } from '@/app/components/app/store'
import { useEventEmitterContextContext } from '@/context/event-emitter' import { useEventEmitterContextContext } from '@/context/event-emitter'

View File

@ -1,6 +1,6 @@
import type { NavLinkProps } from './navLink' import type { NavLinkProps } from './navLink'
import { render, screen } from '@testing-library/react' import { render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import NavLink from './navLink' import NavLink from './navLink'
// Mock Next.js navigation // Mock Next.js navigation

View File

@ -2,7 +2,7 @@
import type { RemixiconComponentType } from '@remixicon/react' import type { RemixiconComponentType } from '@remixicon/react'
import Link from 'next/link' import Link from 'next/link'
import { useSelectedLayoutSegment } from 'next/navigation' import { useSelectedLayoutSegment } from 'next/navigation'
import React from 'react' import * as React from 'react'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'
export type NavIcon = React.ComponentType< export type NavIcon = React.ComponentType<

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
// Simple Mock Components that reproduce the exact UI issues // Simple Mock Components that reproduce the exact UI issues
const MockNavLink = ({ name, mode }: { name: string, mode: string }) => { const MockNavLink = ({ name, mode }: { name: string, mode: string }) => {

View File

@ -4,7 +4,7 @@
*/ */
import { render } from '@testing-library/react' import { render } from '@testing-library/react'
import React from 'react' import * as React from 'react'
// Mock Next.js navigation // Mock Next.js navigation
vi.mock('next/navigation', () => ({ vi.mock('next/navigation', () => ({

View File

@ -1,5 +1,5 @@
import { RiArrowLeftSLine, RiArrowRightSLine } from '@remixicon/react' import { RiArrowLeftSLine, RiArrowRightSLine } from '@remixicon/react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { cn } from '@/utils/classnames' import { cn } from '@/utils/classnames'
import Button from '../base/button' import Button from '../base/button'

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import EditItem, { EditItemType } from './index' import EditItem, { EditItemType } from './index'
describe('AddAnnotationModal/EditItem', () => { describe('AddAnnotationModal/EditItem', () => {

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Robot, User } from '@/app/components/base/icons/src/public/avatar' import { Robot, User } from '@/app/components/base/icons/src/public/avatar'
import Textarea from '@/app/components/base/textarea' import Textarea from '@/app/components/base/textarea'

View File

@ -1,6 +1,6 @@
import type { Mock } from 'vitest' import type { Mock } from 'vitest'
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import AddAnnotationModal from './index' import AddAnnotationModal from './index'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import type { AnnotationItemBasic } from '../type' import type { AnnotationItemBasic } from '../type'
import React, { useState } from 'react' import * as React from 'react'
import { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import Checkbox from '@/app/components/base/checkbox' import Checkbox from '@/app/components/base/checkbox'

View File

@ -1,5 +1,5 @@
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import BatchAction from './batch-action' import BatchAction from './batch-action'
describe('BatchAction', () => { describe('BatchAction', () => {

View File

@ -1,7 +1,7 @@
import type { FC } from 'react' import type { FC } from 'react'
import { RiDeleteBinLine } from '@remixicon/react' import { RiDeleteBinLine } from '@remixicon/react'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'
import Divider from '@/app/components/base/divider' import Divider from '@/app/components/base/divider'

View File

@ -1,6 +1,6 @@
import type { Locale } from '@/i18n-config' import type { Locale } from '@/i18n-config'
import { render, screen } from '@testing-library/react' import { render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import I18nContext from '@/context/i18n' import I18nContext from '@/context/i18n'
import { LanguagesSupported } from '@/i18n-config/language' import { LanguagesSupported } from '@/i18n-config/language'
import CSVDownload from './csv-downloader' import CSVDownload from './csv-downloader'

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { import {
useCSVDownloader, useCSVDownloader,

View File

@ -1,6 +1,6 @@
import type { Props } from './csv-uploader' import type { Props } from './csv-uploader'
import { fireEvent, render, screen, waitFor } from '@testing-library/react' import { fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import CSVUploader from './csv-uploader' import CSVUploader from './csv-uploader'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { RiDeleteBinLine } from '@remixicon/react' import { RiDeleteBinLine } from '@remixicon/react'
import React, { useEffect, useRef, useState } from 'react' import * as React from 'react'
import { useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

View File

@ -1,7 +1,7 @@
import type { Mock } from 'vitest' import type { Mock } from 'vitest'
import type { IBatchModalProps } from './index' import type { IBatchModalProps } from './index'
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import { annotationBatchImport, checkAnnotationBatchImportProgress } from '@/service/annotation' import { annotationBatchImport, checkAnnotationBatchImportProgress } from '@/service/annotation'

View File

@ -2,7 +2,8 @@
import type { FC } from 'react' import type { FC } from 'react'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import { noop } from 'lodash-es' import { noop } from 'lodash-es'
import React, { useEffect, useState } from 'react' import * as React from 'react'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import ClearAllAnnotationsConfirmModal from './index' import ClearAllAnnotationsConfirmModal from './index'
vi.mock('react-i18next', () => ({ vi.mock('react-i18next', () => ({

View File

@ -1,7 +1,7 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'

View File

@ -1,7 +1,8 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { RiDeleteBinLine, RiEditFill, RiEditLine } from '@remixicon/react' import { RiDeleteBinLine, RiEditFill, RiEditLine } from '@remixicon/react'
import React, { useEffect, useState } from 'react' import * as React from 'react'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import { Robot, User } from '@/app/components/base/icons/src/public/avatar' import { Robot, User } from '@/app/components/base/icons/src/public/avatar'

View File

@ -1,6 +1,7 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import * as React from 'react'
import { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'
import Drawer from '@/app/components/base/drawer-plus' import Drawer from '@/app/components/base/drawer-plus'

View File

@ -1,5 +1,5 @@
import { render, screen } from '@testing-library/react' import { render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import EmptyElement from './empty-element' import EmptyElement from './empty-element'
describe('EmptyElement', () => { describe('EmptyElement', () => {

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC, SVGProps } from 'react' import type { FC, SVGProps } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
const ThreeDotsIcon = ({ className }: SVGProps<SVGElement>) => { const ThreeDotsIcon = ({ className }: SVGProps<SVGElement>) => {

View File

@ -1,7 +1,7 @@
import type { Mock } from 'vitest' import type { Mock } from 'vitest'
import type { QueryParam } from './filter' import type { QueryParam } from './filter'
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import useSWR from 'swr' import useSWR from 'swr'
import Filter from './filter' import Filter from './filter'

View File

@ -1,6 +1,6 @@
'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import * as React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import useSWR from 'swr' import useSWR from 'swr'
import Input from '@/app/components/base/input' import Input from '@/app/components/base/input'

View File

@ -7,7 +7,8 @@ import {
RiDeleteBinLine, RiDeleteBinLine,
RiMoreFill, RiMoreFill,
} from '@remixicon/react' } from '@remixicon/react'
import React, { Fragment, useEffect, useState } from 'react' import * as React from 'react'
import { Fragment, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { import {
useCSVDownloader, useCSVDownloader,

View File

@ -2,7 +2,7 @@ import type { Mock } from 'vitest'
import type { AnnotationItem } from './type' import type { AnnotationItem } from './type'
import type { App } from '@/types/app' import type { App } from '@/types/app'
import { act, fireEvent, render, screen, waitFor } from '@testing-library/react' import { act, fireEvent, render, screen, waitFor } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import { import {

View File

@ -6,7 +6,8 @@ import type { AnnotationReplyConfig } from '@/models/debug'
import type { App } from '@/types/app' import type { App } from '@/types/app'
import { RiEqualizer2Line } from '@remixicon/react' import { RiEqualizer2Line } from '@remixicon/react'
import { useDebounce } from 'ahooks' import { useDebounce } from 'ahooks'
import React, { useEffect, useState } from 'react' import * as React from 'react'
import { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import ActionButton from '@/app/components/base/action-button' import ActionButton from '@/app/components/base/action-button'
import ConfigParamModal from '@/app/components/base/features/new-feature-panel/annotation-reply/config-param-modal' import ConfigParamModal from '@/app/components/base/features/new-feature-panel/annotation-reply/config-param-modal'

View File

@ -1,6 +1,6 @@
import type { AnnotationItem } from './type' import type { AnnotationItem } from './type'
import { fireEvent, render, screen, within } from '@testing-library/react' import { fireEvent, render, screen, within } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import List from './list' import List from './list'
const mockFormatTime = vi.fn(() => 'formatted-time') const mockFormatTime = vi.fn(() => 'formatted-time')

View File

@ -2,7 +2,8 @@
import type { FC } from 'react' import type { FC } from 'react'
import type { AnnotationItem } from './type' import type { AnnotationItem } from './type'
import { RiDeleteBinLine, RiEditLine } from '@remixicon/react' import { RiDeleteBinLine, RiEditLine } from '@remixicon/react'
import React, { useCallback, useMemo } from 'react' import * as React from 'react'
import { useCallback, useMemo } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import ActionButton from '@/app/components/base/action-button' import ActionButton from '@/app/components/base/action-button'
import Checkbox from '@/app/components/base/checkbox' import Checkbox from '@/app/components/base/checkbox'

View File

@ -1,5 +1,5 @@
import { fireEvent, render, screen } from '@testing-library/react' import { fireEvent, render, screen } from '@testing-library/react'
import React from 'react' import * as React from 'react'
import RemoveAnnotationConfirmModal from './index' import RemoveAnnotationConfirmModal from './index'
vi.mock('react-i18next', () => ({ vi.mock('react-i18next', () => ({

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