Quellcode durchsuchen

feat: tailwind related improvement (#6085)

tags/0.6.14
Joel vor 1 Jahr
Ursprung
Commit
eff280f3e7
Es ist kein Account mit der E-Mail-Adresse des Committers verbunden
100 geänderte Dateien mit 112 neuen und 112 gelöschten Zeilen
  1. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx
  2. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx
  3. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/field.tsx
  4. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx
  5. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-panel.tsx
  6. 1
    1
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/tracing-icon.tsx
  7. 2
    2
      web/app/(commonLayout)/apps/AppCard.tsx
  8. 1
    1
      web/app/(commonLayout)/apps/page.tsx
  9. 1
    1
      web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout.tsx
  10. 1
    1
      web/app/(commonLayout)/datasets/DatasetCard.tsx
  11. 1
    1
      web/app/(shareLayout)/webapp-signin/page.tsx
  12. 1
    1
      web/app/activate/activateForm.tsx
  13. 1
    1
      web/app/activate/page.tsx
  14. 2
    2
      web/app/components/app-sidebar/app-info.tsx
  15. 1
    1
      web/app/components/app-sidebar/navLink.tsx
  16. 1
    1
      web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx
  17. 1
    1
      web/app/components/app/annotation/edit-annotation-modal/edit-item/index.tsx
  18. 1
    1
      web/app/components/app/annotation/header-opts/index.tsx
  19. 1
    1
      web/app/components/app/annotation/index.tsx
  20. 1
    1
      web/app/components/app/annotation/list.tsx
  21. 1
    1
      web/app/components/app/annotation/view-annotation-modal/index.tsx
  22. 1
    1
      web/app/components/app/app-publisher/suggested-action.tsx
  23. 2
    2
      web/app/components/app/configuration/base/feature-panel/index.tsx
  24. 1
    1
      web/app/components/app/configuration/base/icons/remove-icon/index.tsx
  25. 1
    1
      web/app/components/app/configuration/base/operation-btn/index.tsx
  26. 1
    1
      web/app/components/app/configuration/config-prompt/advanced-prompt-input.tsx
  27. 1
    1
      web/app/components/app/configuration/config-prompt/message-type-selector.tsx
  28. 1
    1
      web/app/components/app/configuration/config-prompt/prompt-editor-height-resize-wrap.tsx
  29. 1
    1
      web/app/components/app/configuration/config-prompt/simple-prompt-input.tsx
  30. 1
    1
      web/app/components/app/configuration/config-var/select-type-item/index.tsx
  31. 1
    1
      web/app/components/app/configuration/config-var/select-var-type.tsx
  32. 1
    1
      web/app/components/app/configuration/config-vision/param-config.tsx
  33. 1
    1
      web/app/components/app/configuration/config-vision/radio-group/index.tsx
  34. 3
    3
      web/app/components/app/configuration/config-voice/param-config-content.tsx
  35. 1
    1
      web/app/components/app/configuration/config-voice/param-config.tsx
  36. 1
    1
      web/app/components/app/configuration/config/agent/agent-setting/item-panel.tsx
  37. 1
    1
      web/app/components/app/configuration/config/agent/agent-tools/index.tsx
  38. 1
    1
      web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx
  39. 1
    1
      web/app/components/app/configuration/config/agent/prompt-editor.tsx
  40. 1
    1
      web/app/components/app/configuration/config/assistant-type-picker/index.tsx
  41. 1
    1
      web/app/components/app/configuration/config/feature/choose-feature/feature-item/index.tsx
  42. 1
    1
      web/app/components/app/configuration/dataset-config/card-item/index.tsx
  43. 3
    3
      web/app/components/app/configuration/dataset-config/context-var/index.tsx
  44. 1
    1
      web/app/components/app/configuration/dataset-config/context-var/var-picker.tsx
  45. 1
    1
      web/app/components/app/configuration/dataset-config/params-config/index.tsx
  46. 1
    1
      web/app/components/app/configuration/dataset-config/select-dataset/index.tsx
  47. 1
    1
      web/app/components/app/configuration/dataset-config/settings-modal/index.tsx
  48. 1
    1
      web/app/components/app/configuration/features/chat-group/opening-statement/index.tsx
  49. 1
    1
      web/app/components/app/configuration/toolbox/annotation/annotation-ctrl-btn/index.tsx
  50. 1
    1
      web/app/components/app/configuration/toolbox/score-slider/base-slider/index.tsx
  51. 1
    1
      web/app/components/app/create-app-dialog/newAppDialog.tsx
  52. 1
    1
      web/app/components/app/create-app-modal/index.tsx
  53. 3
    3
      web/app/components/app/create-from-dsl-modal/uploader.tsx
  54. 1
    1
      web/app/components/app/duplicate-modal/index.tsx
  55. 1
    1
      web/app/components/app/log-annotation/index.tsx
  56. 1
    1
      web/app/components/app/log/list.tsx
  57. 1
    1
      web/app/components/app/overview/apikey-info-panel/index.tsx
  58. 1
    1
      web/app/components/app/overview/apikey-info-panel/progress/index.tsx
  59. 1
    1
      web/app/components/app/overview/embedded/index.tsx
  60. 1
    1
      web/app/components/app/switch-app-modal/index.tsx
  61. 1
    1
      web/app/components/app/text-generate/item/index.tsx
  62. 1
    1
      web/app/components/app/text-generate/item/result-tab.tsx
  63. 1
    1
      web/app/components/app/text-generate/saved-items/index.tsx
  64. 4
    4
      web/app/components/app/type-selector/index.tsx
  65. 1
    1
      web/app/components/app/workflow-log/list.tsx
  66. 1
    1
      web/app/components/base/agent-log-modal/detail.tsx
  67. 1
    1
      web/app/components/base/agent-log-modal/index.tsx
  68. 1
    1
      web/app/components/base/agent-log-modal/iteration.tsx
  69. 1
    1
      web/app/components/base/agent-log-modal/tool-call.tsx
  70. 1
    1
      web/app/components/base/app-icon/index.tsx
  71. 1
    1
      web/app/components/base/auto-height-textarea/common.tsx
  72. 1
    1
      web/app/components/base/auto-height-textarea/index.tsx
  73. 1
    1
      web/app/components/base/avatar/index.tsx
  74. 1
    1
      web/app/components/base/block-input/index.tsx
  75. 1
    1
      web/app/components/base/button/add-button.tsx
  76. 1
    1
      web/app/components/base/button/index.tsx
  77. 2
    2
      web/app/components/base/chat/chat/answer/operation.tsx
  78. 1
    1
      web/app/components/base/chat/chat/answer/workflow-process.tsx
  79. 1
    1
      web/app/components/base/chat/chat/index.tsx
  80. 1
    1
      web/app/components/base/chat/chat/thought/tool.tsx
  81. 1
    1
      web/app/components/base/chat/embedded-chatbot/chat-wrapper.tsx
  82. 1
    1
      web/app/components/base/chat/embedded-chatbot/config-panel/index.tsx
  83. 1
    1
      web/app/components/base/chat/embedded-chatbot/index.tsx
  84. 1
    1
      web/app/components/base/checkbox/index.tsx
  85. 1
    1
      web/app/components/base/confirm/common.tsx
  86. 1
    1
      web/app/components/base/dialog/index.tsx
  87. 1
    1
      web/app/components/base/drawer-plus/index.tsx
  88. 1
    1
      web/app/components/base/drawer/index.tsx
  89. 1
    1
      web/app/components/base/emoji-picker/index.tsx
  90. 1
    1
      web/app/components/base/features/feature-choose/feature-item/index.tsx
  91. 1
    1
      web/app/components/base/features/feature-panel/file-upload/param-config.tsx
  92. 1
    1
      web/app/components/base/features/feature-panel/file-upload/radio-group/index.tsx
  93. 1
    1
      web/app/components/base/features/feature-panel/opening-statement/index.tsx
  94. 1
    1
      web/app/components/base/features/feature-panel/score-slider/base-slider/index.tsx
  95. 1
    1
      web/app/components/base/features/feature-panel/text-to-speech/param-config-content.tsx
  96. 1
    1
      web/app/components/base/features/feature-panel/text-to-speech/params-config.tsx
  97. 1
    1
      web/app/components/base/icons/script.js
  98. 1
    1
      web/app/components/base/icons/src/image/llm/BaichuanTextCn.tsx
  99. 1
    1
      web/app/components/base/icons/src/image/llm/Minimax.tsx
  100. 0
    0
      web/app/components/base/icons/src/image/llm/MinimaxText.tsx

+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/layout.tsx Datei anzeigen

import { useUnmount } from 'ahooks' import { useUnmount } from 'ahooks'
import React, { useCallback, useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import { usePathname, useRouter } from 'next/navigation' import { usePathname, useRouter } from 'next/navigation'
import cn from 'classnames'
import { import {
RiDashboard2Fill, RiDashboard2Fill,
RiDashboard2Line, RiDashboard2Line,
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useShallow } from 'zustand/react/shallow' import { useShallow } from 'zustand/react/shallow'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import { useStore } from '@/app/components/app/store' import { useStore } from '@/app/components/app/store'
import AppSideBar from '@/app/components/app-sidebar' import AppSideBar from '@/app/components/app-sidebar'
import type { NavIcon } from '@/app/components/app-sidebar/navLink' import type { NavIcon } from '@/app/components/app-sidebar/navLink'

+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/config-button.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useCallback, useEffect, useRef, useState } from 'react' import React, { useCallback, useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import type { PopupProps } from './config-popup' import type { PopupProps } from './config-popup'
import ConfigPopup from './config-popup' import ConfigPopup from './config-popup'
import cn from '@/utils/classnames'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general' import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
import { import {

+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/field.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'


type Props = { type Props = {
className?: string className?: string

+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/panel.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useCallback, useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { usePathname } from 'next/navigation' import { usePathname } from 'next/navigation'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import type { LangFuseConfig, LangSmithConfig } from './type' import type { LangFuseConfig, LangSmithConfig } from './type'
import { TracingProvider } from './type' import { TracingProvider } from './type'
import TracingIcon from './tracing-icon' import TracingIcon from './tracing-icon'
import ConfigButton from './config-button' import ConfigButton from './config-button'
import cn from '@/utils/classnames'
import { LangfuseIcon, LangsmithIcon } from '@/app/components/base/icons/src/public/tracing' import { LangfuseIcon, LangsmithIcon } from '@/app/components/base/icons/src/public/tracing'
import Indicator from '@/app/components/header/indicator' import Indicator from '@/app/components/header/indicator'
import { fetchTracingConfig as doFetchTracingConfig, fetchTracingStatus, updateTracingStatus } from '@/service/apps' import { fetchTracingConfig as doFetchTracingConfig, fetchTracingStatus, updateTracingStatus } from '@/service/apps'

+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/provider-panel.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useCallback } from 'react' import React, { useCallback } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { TracingProvider } from './type' import { TracingProvider } from './type'
import cn from '@/utils/classnames'
import { LangfuseIconBig, LangsmithIconBig } from '@/app/components/base/icons/src/public/tracing' import { LangfuseIconBig, LangsmithIconBig } from '@/app/components/base/icons/src/public/tracing'
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general' import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'



+ 1
- 1
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/tracing/tracing-icon.tsx Datei anzeigen

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


type Props = { type Props = {

+ 2
- 2
web/app/(commonLayout)/apps/AppCard.tsx Datei anzeigen

import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiMoreFill } from '@remixicon/react' import { RiMoreFill } from '@remixicon/react'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import type { App } from '@/types/app' import type { App } from '@/types/app'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
/> />
</div> </div>
</div> </div>
<div className='!hidden group-hover:!flex shrink-0 mx-1 w-[1px] h-[14px] bg-gray-200'/>
<div className='!hidden group-hover:!flex shrink-0 mx-1 w-[1px] h-[14px] bg-gray-200' />
<div className='!hidden group-hover:!flex shrink-0'> <div className='!hidden group-hover:!flex shrink-0'>
<CustomPopover <CustomPopover
htmlContent={<Operations />} htmlContent={<Operations />}

+ 1
- 1
web/app/(commonLayout)/apps/page.tsx Datei anzeigen

import classNames from 'classnames'
import style from '../list.module.css' import style from '../list.module.css'
import Apps from './Apps' import Apps from './Apps'
import classNames from '@/utils/classnames'
import { getLocaleOnServer, useTranslation as translate } from '@/i18n/server' import { getLocaleOnServer, useTranslation as translate } from '@/i18n/server'


const AppList = async () => { const AppList = async () => {

+ 1
- 1
web/app/(commonLayout)/datasets/(datasetDetailLayout)/[datasetId]/layout.tsx Datei anzeigen

import { usePathname } from 'next/navigation' import { usePathname } from 'next/navigation'
import useSWR from 'swr' import useSWR from 'swr'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import classNames from 'classnames'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import { import {
Cog8ToothIcon, Cog8ToothIcon,
} from '@heroicons/react/24/solid' } from '@heroicons/react/24/solid'
import Link from 'next/link' import Link from 'next/link'
import s from './style.module.css' import s from './style.module.css'
import classNames from '@/utils/classnames'
import { fetchDatasetDetail, fetchDatasetRelatedApps } from '@/service/datasets' import { fetchDatasetDetail, fetchDatasetRelatedApps } from '@/service/datasets'
import type { RelatedApp, RelatedAppResponse } from '@/models/datasets' import type { RelatedApp, RelatedAppResponse } from '@/models/datasets'
import AppSideBar from '@/app/components/app-sidebar' import AppSideBar from '@/app/components/app-sidebar'

+ 1
- 1
web/app/(commonLayout)/datasets/DatasetCard.tsx Datei anzeigen

import Link from 'next/link' import Link from 'next/link'
import { useCallback, useEffect, useState } from 'react' import { useCallback, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiMoreFill, RiMoreFill,
} from '@remixicon/react' } from '@remixicon/react'
import cn from '@/utils/classnames'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import { checkIsUsedInApp, deleteDataset } from '@/service/datasets' import { checkIsUsedInApp, deleteDataset } from '@/service/datasets'

+ 1
- 1
web/app/(shareLayout)/webapp-signin/page.tsx Datei anzeigen

'use client' 'use client'
import cn from 'classnames'
import { useRouter, useSearchParams } from 'next/navigation' import { useRouter, useSearchParams } from 'next/navigation'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect } from 'react' import React, { useEffect } from 'react'
import cn from '@/utils/classnames'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'
import { fetchSystemFeatures, fetchWebOAuth2SSOUrl, fetchWebOIDCSSOUrl, fetchWebSAMLSSOUrl } from '@/service/share' import { fetchSystemFeatures, fetchWebOAuth2SSOUrl, fetchWebOIDCSSOUrl, fetchWebSAMLSSOUrl } from '@/service/share'
import { setAccessToken } from '@/app/components/share/utils' import { setAccessToken } from '@/app/components/share/utils'

+ 1
- 1
web/app/activate/activateForm.tsx Datei anzeigen

import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import useSWR from 'swr' import useSWR from 'swr'
import { useSearchParams } from 'next/navigation' import { useSearchParams } from 'next/navigation'
import cn from 'classnames'
import Link from 'next/link' import Link from 'next/link'
import { CheckCircleIcon } from '@heroicons/react/24/solid' import { CheckCircleIcon } from '@heroicons/react/24/solid'
import style from './style.module.css' import style from './style.module.css'
import cn from '@/utils/classnames'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'


import { SimpleSelect } from '@/app/components/base/select' import { SimpleSelect } from '@/app/components/base/select'

+ 1
- 1
web/app/activate/page.tsx Datei anzeigen

import React from 'react' import React from 'react'
import cn from 'classnames'
import Header from '../signin/_header' import Header from '../signin/_header'
import style from '../signin/page.module.css' import style from '../signin/page.module.css'
import ActivateForm from './activateForm' import ActivateForm from './activateForm'
import cn from '@/utils/classnames'


const Activate = () => { const Activate = () => {
return ( return (

+ 2
- 2
web/app/components/app-sidebar/app-info.tsx Datei anzeigen

import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useContext, useContextSelector } from 'use-context-selector' import { useContext, useContextSelector } from 'use-context-selector'
import cn from 'classnames'
import { RiArrowDownSLine } from '@remixicon/react' import { RiArrowDownSLine } from '@remixicon/react'
import React, { useCallback, useState } from 'react' import React, { useCallback, useState } from 'react'
import AppIcon from '../base/app-icon' import AppIcon from '../base/app-icon'
import SwitchAppModal from '../app/switch-app-modal' import SwitchAppModal from '../app/switch-app-modal'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,
'w-full h-[256px] bg-center bg-no-repeat bg-contain rounded-xl', 'w-full h-[256px] bg-center bg-no-repeat bg-contain rounded-xl',
showSwitchTip === 'chat' && s.expertPic, showSwitchTip === 'chat' && s.expertPic,
showSwitchTip === 'completion' && s.completionPic, showSwitchTip === 'completion' && s.completionPic,
)}/>
)} />
<div className='px-4 pb-2'> <div className='px-4 pb-2'>
<div className='flex items-center gap-1 text-gray-700 text-md leading-6 font-semibold'> <div className='flex items-center gap-1 text-gray-700 text-md leading-6 font-semibold'>
{showSwitchTip === 'chat' ? t('app.newApp.advanced') : t('app.types.workflow')} {showSwitchTip === 'chat' ? t('app.newApp.advanced') : t('app.types.workflow')}

+ 1
- 1
web/app/components/app-sidebar/navLink.tsx Datei anzeigen

'use client' 'use client'


import { useSelectedLayoutSegment } from 'next/navigation' import { useSelectedLayoutSegment } from 'next/navigation'
import classNames from 'classnames'
import Link from 'next/link' import Link from 'next/link'
import classNames from '@/utils/classnames'


export type NavIcon = React.ComponentType< export type NavIcon = React.ComponentType<
React.PropsWithoutRef<React.ComponentProps<'svg'>> & { React.PropsWithoutRef<React.ComponentProps<'svg'>> & {

+ 1
- 1
web/app/components/app/annotation/batch-add-annotation-modal/csv-uploader.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react' import React, { useEffect, useRef, useState } from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import { RiDeleteBinLine } from '@remixicon/react' import { RiDeleteBinLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import { Csv as CSVIcon } from '@/app/components/base/icons/src/public/files' import { Csv as CSVIcon } from '@/app/components/base/icons/src/public/files'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

+ 1
- 1
web/app/components/app/annotation/edit-annotation-modal/edit-item/index.tsx Datei anzeigen

import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Textarea from 'rc-textarea' import Textarea from 'rc-textarea'
import cn from 'classnames'
import { RiDeleteBinLine } from '@remixicon/react' import { RiDeleteBinLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import { Robot, User } from '@/app/components/base/icons/src/public/avatar' import { Robot, User } from '@/app/components/base/icons/src/public/avatar'
import { Edit04 } from '@/app/components/base/icons/src/vender/line/general' import { Edit04 } from '@/app/components/base/icons/src/vender/line/general'
import { Edit04 as EditSolid } from '@/app/components/base/icons/src/vender/solid/general' import { Edit04 as EditSolid } from '@/app/components/base/icons/src/vender/solid/general'

+ 1
- 1
web/app/components/app/annotation/header-opts/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { Fragment, useEffect, useState } from 'react' import React, { Fragment, useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiAddLine, RiAddLine,
} from '@remixicon/react' } from '@remixicon/react'
import type { AnnotationItemBasic } from '../type' import type { AnnotationItemBasic } from '../type'
import BatchAddModal from '../batch-add-annotation-modal' import BatchAddModal from '../batch-add-annotation-modal'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import CustomPopover from '@/app/components/base/popover' import CustomPopover from '@/app/components/base/popover'
import { FileDownload02, FilePlus02 } from '@/app/components/base/icons/src/vender/line/files' import { FileDownload02, FilePlus02 } from '@/app/components/base/icons/src/vender/line/files'
import { ChevronRight } from '@/app/components/base/icons/src/vender/line/arrows' import { ChevronRight } from '@/app/components/base/icons/src/vender/line/arrows'

+ 1
- 1
web/app/components/app/annotation/index.tsx Datei anzeigen

import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Pagination } from 'react-headless-pagination' import { Pagination } from 'react-headless-pagination'
import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline' import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline'
import cn from 'classnames'
import Toast from '../../base/toast' import Toast from '../../base/toast'
import Filter from './filter' import Filter from './filter'
import type { QueryParam } from './filter' import type { QueryParam } from './filter'
import s from './style.module.css' import s from './style.module.css'
import { AnnotationEnableStatus, type AnnotationItem, type AnnotationItemBasic, JobStatus } from './type' import { AnnotationEnableStatus, type AnnotationItem, type AnnotationItemBasic, JobStatus } from './type'
import ViewAnnotationModal from './view-annotation-modal' import ViewAnnotationModal from './view-annotation-modal'
import cn from '@/utils/classnames'
import Switch from '@/app/components/base/switch' import Switch from '@/app/components/base/switch'
import { addAnnotation, delAnnotation, fetchAnnotationConfig as doFetchAnnotationConfig, editAnnotation, fetchAnnotationList, queryAnnotationJobStatus, updateAnnotationScore, updateAnnotationStatus } from '@/service/annotation' import { addAnnotation, delAnnotation, fetchAnnotationConfig as doFetchAnnotationConfig, editAnnotation, fetchAnnotationList, queryAnnotationJobStatus, updateAnnotationScore, updateAnnotationStatus } from '@/service/annotation'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'

+ 1
- 1
web/app/components/app/annotation/list.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiDeleteBinLine } from '@remixicon/react' import { RiDeleteBinLine } from '@remixicon/react'
import { Edit02 } from '../../base/icons/src/vender/line/general' import { Edit02 } from '../../base/icons/src/vender/line/general'
import s from './style.module.css' import s from './style.module.css'
import type { AnnotationItem } from './type' import type { AnnotationItem } from './type'
import RemoveAnnotationConfirmModal from './remove-annotation-confirm-modal' import RemoveAnnotationConfirmModal from './remove-annotation-confirm-modal'
import cn from '@/utils/classnames'
import useTimestamp from '@/hooks/use-timestamp' import useTimestamp from '@/hooks/use-timestamp'


type Props = { type Props = {

+ 1
- 1
web/app/components/app/annotation/view-annotation-modal/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { Pagination } from 'react-headless-pagination' import { Pagination } from 'react-headless-pagination'
import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline' import { ArrowLeftIcon, ArrowRightIcon } from '@heroicons/react/24/outline'
import EditItem, { EditItemType } from '../edit-annotation-modal/edit-item' import EditItem, { EditItemType } from '../edit-annotation-modal/edit-item'
import type { AnnotationItem, HitHistoryItem } from '../type' import type { AnnotationItem, HitHistoryItem } from '../type'
import s from './style.module.css' import s from './style.module.css'
import HitHistoryNoData from './hit-history-no-data' import HitHistoryNoData from './hit-history-no-data'
import cn from '@/utils/classnames'
import Drawer from '@/app/components/base/drawer-plus' import Drawer from '@/app/components/base/drawer-plus'
import { MessageCheckRemove } from '@/app/components/base/icons/src/vender/line/communication' import { MessageCheckRemove } from '@/app/components/base/icons/src/vender/line/communication'
import DeleteConfirmModal from '@/app/components/base/modal/delete-confirm-modal' import DeleteConfirmModal from '@/app/components/base/modal/delete-confirm-modal'

+ 1
- 1
web/app/components/app/app-publisher/suggested-action.tsx Datei anzeigen

import type { HTMLProps, PropsWithChildren } from 'react' import type { HTMLProps, PropsWithChildren } from 'react'
import classNames from 'classnames'
import classNames from '@/utils/classnames'
import { ArrowUpRight } from '@/app/components/base/icons/src/vender/line/arrows' import { ArrowUpRight } from '@/app/components/base/icons/src/vender/line/arrows'


export type SuggestedActionProps = PropsWithChildren<HTMLProps<HTMLAnchorElement> & { export type SuggestedActionProps = PropsWithChildren<HTMLProps<HTMLAnchorElement> & {

+ 2
- 2
web/app/components/app/configuration/base/feature-panel/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC, ReactNode } from 'react' import type { FC, ReactNode } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'
import ParamsConfig from '@/app/components/app/configuration/config-voice/param-config' import ParamsConfig from '@/app/components/app/configuration/config-voice/param-config'


export type IFeaturePanelProps = { export type IFeaturePanelProps = {
<div className='flex gap-2 items-center'> <div className='flex gap-2 items-center'>
{headerRight && <div>{headerRight}</div>} {headerRight && <div>{headerRight}</div>}
{isShowTextToSpeech && <div className='flex items-center'> {isShowTextToSpeech && <div className='flex items-center'>
<ParamsConfig/>
<ParamsConfig />
</div>} </div>}
</div> </div>
</div> </div>

+ 1
- 1
web/app/components/app/configuration/base/icons/remove-icon/index.tsx Datei anzeigen

'use client' 'use client'
import React, { useState } from 'react' import React, { useState } from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'


type IRemoveIconProps = { type IRemoveIconProps = {
className?: string className?: string

+ 1
- 1
web/app/components/app/configuration/base/operation-btn/index.tsx Datei anzeigen

import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { PlusIcon } from '@heroicons/react/20/solid' import { PlusIcon } from '@heroicons/react/20/solid'
import cn from 'classnames'
import cn from '@/utils/classnames'


export type IOperationBtnProps = { export type IOperationBtnProps = {
className?: string className?: string

+ 1
- 1
web/app/components/app/configuration/config-prompt/advanced-prompt-input.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import MessageTypeSelector from './message-type-selector' import MessageTypeSelector from './message-type-selector'
import ConfirmAddVar from './confirm-add-var' import ConfirmAddVar from './confirm-add-var'
import PromptEditorHeightResizeWrap from './prompt-editor-height-resize-wrap' import PromptEditorHeightResizeWrap from './prompt-editor-height-resize-wrap'
import cn from '@/utils/classnames'
import type { PromptRole, PromptVariable } from '@/models/debug' import type { PromptRole, PromptVariable } from '@/models/debug'
import { import {
Clipboard, Clipboard,

+ 1
- 1
web/app/components/app/configuration/config-prompt/message-type-selector.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useBoolean, useClickAway } from 'ahooks' import { useBoolean, useClickAway } from 'ahooks'
import cn from 'classnames'
import cn from '@/utils/classnames'
import { PromptRole } from '@/models/debug' import { PromptRole } from '@/models/debug'
import { ChevronSelectorVertical } from '@/app/components/base/icons/src/vender/line/arrows' import { ChevronSelectorVertical } from '@/app/components/base/icons/src/vender/line/arrows'
type Props = { type Props = {

+ 1
- 1
web/app/components/app/configuration/config-prompt/prompt-editor-height-resize-wrap.tsx Datei anzeigen

import React, { useCallback, useEffect, useState } from 'react' import React, { useCallback, useEffect, useState } from 'react'
import type { FC } from 'react' import type { FC } from 'react'
import { useDebounceFn } from 'ahooks' import { useDebounceFn } from 'ahooks'
import cn from 'classnames'
import cn from '@/utils/classnames'


type Props = { type Props = {
className?: string className?: string

+ 1
- 1
web/app/components/app/configuration/config-prompt/simple-prompt-input.tsx Datei anzeigen

import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import cn from 'classnames'
import { import {
RiQuestionLine, RiQuestionLine,
} from '@remixicon/react' } from '@remixicon/react'
import ConfirmAddVar from './confirm-add-var' import ConfirmAddVar from './confirm-add-var'
import s from './style.module.css' import s from './style.module.css'
import PromptEditorHeightResizeWrap from './prompt-editor-height-resize-wrap' import PromptEditorHeightResizeWrap from './prompt-editor-height-resize-wrap'
import cn from '@/utils/classnames'
import { type PromptVariable } from '@/models/debug' import { type PromptVariable } from '@/models/debug'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
import { AppType } from '@/types/app' import { AppType } from '@/types/app'

+ 1
- 1
web/app/components/app/configuration/config-var/select-type-item/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import type { InputVarType } from '@/app/components/workflow/types' import type { InputVarType } from '@/app/components/workflow/types'
import InputVarTypeIcon from '@/app/components/workflow/nodes/_base/components/input-var-type-icon' import InputVarTypeIcon from '@/app/components/workflow/nodes/_base/components/input-var-type-icon'
export type ISelectTypeItemProps = { export type ISelectTypeItemProps = {

+ 1
- 1
web/app/components/app/configuration/config-var/select-var-type.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import React, { useState } from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from '@/utils/classnames'
import OperationBtn from '@/app/components/app/configuration/base/operation-btn' import OperationBtn from '@/app/components/app/configuration/base/operation-btn'
import { import {
PortalToFollowElem, PortalToFollowElem,

+ 1
- 1
web/app/components/app/configuration/config-vision/param-config.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import { memo, useState } from 'react' import { memo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import VoiceParamConfig from './param-config-content' import VoiceParamConfig from './param-config-content'
import cn from '@/utils/classnames'
import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general'
import { import {
PortalToFollowElem, PortalToFollowElem,

+ 1
- 1
web/app/components/app/configuration/config-vision/radio-group/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'


type OPTION = { type OPTION = {
label: string label: string

+ 3
- 3
web/app/components/app/configuration/config-voice/param-config-content.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import React, { Fragment } from 'react' import React, { Fragment } from 'react'
import classNames from 'classnames'
import { import {
RiQuestionLine, RiQuestionLine,
} from '@remixicon/react' } from '@remixicon/react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { Listbox, Transition } from '@headlessui/react' import { Listbox, Transition } from '@headlessui/react'
import { CheckIcon, ChevronDownIcon } from '@heroicons/react/20/solid' import { CheckIcon, ChevronDownIcon } from '@heroicons/react/20/solid'
import classNames from '@/utils/classnames'
import RadioGroup from '@/app/components/app/configuration/config-vision/radio-group' import RadioGroup from '@/app/components/app/configuration/config-vision/radio-group'
import type { Item } from '@/app/components/base/select' import type { Item } from '@/app/components/base/select'
import ConfigContext from '@/context/debug-configuration' import ConfigContext from '@/context/debug-configuration'
'absolute inset-y-0 right-0 flex items-center pr-4 text-gray-700', 'absolute inset-y-0 right-0 flex items-center pr-4 text-gray-700',
)} )}
> >
<CheckIcon className="h-5 w-5" aria-hidden="true"/>
<CheckIcon className="h-5 w-5" aria-hidden="true" />
</span> </span>
)} )}
</> </>
'absolute inset-y-0 right-0 flex items-center pr-4 text-gray-700', 'absolute inset-y-0 right-0 flex items-center pr-4 text-gray-700',
)} )}
> >
<CheckIcon className="h-5 w-5" aria-hidden="true"/>
<CheckIcon className="h-5 w-5" aria-hidden="true" />
</span> </span>
)} )}
</> </>

+ 1
- 1
web/app/components/app/configuration/config-voice/param-config.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import { memo, useState } from 'react' import { memo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import VoiceParamConfig from './param-config-content' import VoiceParamConfig from './param-config-content'
import cn from '@/utils/classnames'
import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general'
import { import {
PortalToFollowElem, PortalToFollowElem,

+ 1
- 1
web/app/components/app/configuration/config/agent/agent-setting/item-panel.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import { RiQuestionLine } from '@remixicon/react' import { RiQuestionLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
type Props = { type Props = {
className?: string className?: string

+ 1
- 1
web/app/components/app/configuration/config/agent/agent-tools/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import produce from 'immer' import produce from 'immer'
import { import {
} from '@remixicon/react' } from '@remixicon/react'
import { useFormattingChangedDispatcher } from '../../../debug/hooks' import { useFormattingChangedDispatcher } from '../../../debug/hooks'
import SettingBuiltInTool from './setting-built-in-tool' import SettingBuiltInTool from './setting-built-in-tool'
import cn from '@/utils/classnames'
import Panel from '@/app/components/app/configuration/base/feature-panel' import Panel from '@/app/components/app/configuration/base/feature-panel'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'
import { InfoCircle } from '@/app/components/base/icons/src/vender/line/general' import { InfoCircle } from '@/app/components/base/icons/src/vender/line/general'

+ 1
- 1
web/app/components/app/configuration/config/agent/agent-tools/setting-built-in-tool.tsx Datei anzeigen

import React, { useEffect, useState } from 'react' import React, { useEffect, 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 cn from 'classnames'
import cn from '@/utils/classnames'
import Drawer from '@/app/components/base/drawer-plus' import Drawer from '@/app/components/base/drawer-plus'
import Form from '@/app/components/header/account-setting/model-provider-page/model-modal/Form' import Form from '@/app/components/header/account-setting/model-provider-page/model-modal/Form'
import { addDefaultValue, toolParametersToFormSchemas } from '@/app/components/tools/utils/to-form-schema' import { addDefaultValue, toolParametersToFormSchemas } from '@/app/components/tools/utils/to-form-schema'

+ 1
- 1
web/app/components/app/configuration/config/agent/prompt-editor.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import cn from 'classnames'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from '@/utils/classnames'
import { import {
Clipboard, Clipboard,
ClipboardCheck, ClipboardCheck,

+ 1
- 1
web/app/components/app/configuration/config/assistant-type-picker/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiArrowDownSLine } from '@remixicon/react' import { RiArrowDownSLine } from '@remixicon/react'
import AgentSetting from '../agent/agent-setting' import AgentSetting from '../agent/agent-setting'
import cn from '@/utils/classnames'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,

+ 1
- 1
web/app/components/app/configuration/config/feature/choose-feature/feature-item/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import Switch from '@/app/components/base/switch' import Switch from '@/app/components/base/switch'


export type IFeatureItemProps = { export type IFeatureItemProps = {

+ 1
- 1
web/app/components/app/configuration/dataset-config/card-item/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import TypeIcon from '../type-icon' import TypeIcon from '../type-icon'
import RemoveIcon from '../../base/icons/remove-icon' import RemoveIcon from '../../base/icons/remove-icon'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'
import { formatNumber } from '@/utils/format' import { formatNumber } from '@/utils/format'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'

+ 3
- 3
web/app/components/app/configuration/dataset-config/context-var/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiQuestionLine, RiQuestionLine,
} from '@remixicon/react' } from '@remixicon/react'
import type { Props } from './var-picker' import type { Props } from './var-picker'
import VarPicker from './var-picker' import VarPicker from './var-picker'
import cn from '@/utils/classnames'
import { BracketsX } from '@/app/components/base/icons/src/vender/line/development' import { BracketsX } from '@/app/components/base/icons/src/vender/line/development'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'


<div className={cn(notSetVar ? 'rounded-bl-xl rounded-br-xl bg-[#FEF0C7] border-[#FEF0C7]' : 'border-gray-200', 'flex justify-between items-center h-12 px-3 border-t ')}> <div className={cn(notSetVar ? 'rounded-bl-xl rounded-br-xl bg-[#FEF0C7] border-[#FEF0C7]' : 'border-gray-200', 'flex justify-between items-center h-12 px-3 border-t ')}>
<div className='flex items-center space-x-1 shrink-0'> <div className='flex items-center space-x-1 shrink-0'>
<div className='p-1'> <div className='p-1'>
<BracketsX className='w-4 h-4 text-primary-500'/>
<BracketsX className='w-4 h-4 text-primary-500' />
</div> </div>
<div className='mr-1 text-sm font-medium text-gray-800'>{t('appDebug.feature.dataSet.queryVariable.title')}</div> <div className='mr-1 text-sm font-medium text-gray-800'>{t('appDebug.feature.dataSet.queryVariable.title')}</div>
<Tooltip <Tooltip
</div>} </div>}
selector='context-var-tooltip' selector='context-var-tooltip'
> >
<RiQuestionLine className='w-3.5 h-3.5 text-gray-400'/>
<RiQuestionLine className='w-3.5 h-3.5 text-gray-400' />
</Tooltip> </Tooltip>
</div> </div>



+ 1
- 1
web/app/components/app/configuration/dataset-config/context-var/var-picker.tsx Datei anzeigen

import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { ChevronDownIcon } from '@heroicons/react/24/outline' import { ChevronDownIcon } from '@heroicons/react/24/outline'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,

+ 1
- 1
web/app/components/app/configuration/dataset-config/params-config/index.tsx Datei anzeigen

import { memo, useState } from 'react' import { memo, 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 cn from 'classnames'
import ConfigContent from './config-content' import ConfigContent from './config-content'
import cn from '@/utils/classnames'
import { Settings04 } from '@/app/components/base/icons/src/vender/line/general' import { Settings04 } from '@/app/components/base/icons/src/vender/line/general'
import ConfigContext from '@/context/debug-configuration' import ConfigContext from '@/context/debug-configuration'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'

+ 1
- 1
web/app/components/app/configuration/dataset-config/select-dataset/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { useGetState, useInfiniteScroll } from 'ahooks' import { useGetState, useInfiniteScroll } from 'ahooks'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import Link from 'next/link' import Link from 'next/link'
import produce from 'immer' import produce from 'immer'
import TypeIcon from '../type-icon' import TypeIcon from '../type-icon'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

+ 1
- 1
web/app/components/app/configuration/dataset-config/settings-modal/index.tsx Datei anzeigen

import { useRef, useState } from 'react' import { useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { isEqual } from 'lodash-es' import { isEqual } from 'lodash-es'
import cn from 'classnames'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import { BookOpenIcon } from '@heroicons/react/24/outline' import { BookOpenIcon } from '@heroicons/react/24/outline'
import cn from '@/utils/classnames'
import IndexMethodRadio from '@/app/components/datasets/settings/index-method-radio' import IndexMethodRadio from '@/app/components/datasets/settings/index-method-radio'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import type { DataSet } from '@/models/datasets' import type { DataSet } from '@/models/datasets'

+ 1
- 1
web/app/components/app/configuration/features/chat-group/opening-statement/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react' import React, { useEffect, useRef, useState } from 'react'
import cn from 'classnames'
import { import {
RiAddLine, RiAddLine,
RiDeleteBinLine, RiDeleteBinLine,
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import { ReactSortable } from 'react-sortablejs' import { ReactSortable } from 'react-sortablejs'
import cn from '@/utils/classnames'
import ConfigContext from '@/context/debug-configuration' import ConfigContext from '@/context/debug-configuration'
import Panel from '@/app/components/app/configuration/base/feature-panel' import Panel from '@/app/components/app/configuration/base/feature-panel'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

+ 1
- 1
web/app/components/app/configuration/toolbox/annotation/annotation-ctrl-btn/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useRef, useState } from 'react' import React, { useRef, useState } from 'react'
import { useHover } from 'ahooks' import { useHover } from 'ahooks'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from '@/utils/classnames'
import { MessageCheckRemove, MessageFastPlus } from '@/app/components/base/icons/src/vender/line/communication' import { MessageCheckRemove, MessageFastPlus } from '@/app/components/base/icons/src/vender/line/communication'
import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication' import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
import { Edit04 } from '@/app/components/base/icons/src/vender/line/general' import { Edit04 } from '@/app/components/base/icons/src/vender/line/general'

+ 1
- 1
web/app/components/app/configuration/toolbox/score-slider/base-slider/index.tsx Datei anzeigen

import ReactSlider from 'react-slider' import ReactSlider from 'react-slider'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'


type ISliderProps = { type ISliderProps = {
className?: string className?: string

+ 1
- 1
web/app/components/app/create-app-dialog/newAppDialog.tsx Datei anzeigen

import { Fragment, useCallback } from 'react' import { Fragment, useCallback } from 'react'
import type { ReactNode } from 'react' import type { ReactNode } from 'react'
import { Dialog, Transition } from '@headlessui/react' import { Dialog, Transition } from '@headlessui/react'
import cn from 'classnames'
import cn from '@/utils/classnames'


type DialogProps = { type DialogProps = {
className?: string className?: string

+ 1
- 1
web/app/components/app/create-app-modal/index.tsx Datei anzeigen

import type { MouseEventHandler } from 'react' import type { MouseEventHandler } from 'react'
import { useCallback, useRef, useState } from 'react' import { useCallback, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiCloseLine, RiCloseLine,
RiQuestionLine, RiQuestionLine,
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useContext, useContextSelector } from 'use-context-selector' import { useContext, useContextSelector } from 'use-context-selector'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import AppsContext, { useAppContext } from '@/context/app-context' import AppsContext, { useAppContext } from '@/context/app-context'
import { useProviderContext } from '@/context/provider-context' import { useProviderContext } from '@/context/provider-context'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'

+ 3
- 3
web/app/components/app/create-from-dsl-modal/uploader.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react' import React, { useEffect, useRef, useState } from 'react'
import cn from 'classnames'
import { import {
RiDeleteBinLine, RiDeleteBinLine,
} from '@remixicon/react' } from '@remixicon/react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import cn from '@/utils/classnames'
import { Yaml as YamlIcon } from '@/app/components/base/icons/src/public/files' import { Yaml as YamlIcon } from '@/app/components/base/icons/src/public/files'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import { UploadCloud01 } from '@/app/components/base/icons/src/vender/line/general' import { UploadCloud01 } from '@/app/components/base/icons/src/vender/line/general'
{!file && ( {!file && (
<div className={cn('flex items-center h-20 rounded-xl bg-gray-50 border border-dashed border-gray-200 text-sm font-normal', dragging && 'bg-[#F5F8FF] border border-[#B2CCFF]')}> <div className={cn('flex items-center h-20 rounded-xl bg-gray-50 border border-dashed border-gray-200 text-sm font-normal', dragging && 'bg-[#F5F8FF] border border-[#B2CCFF]')}>
<div className='w-full flex items-center justify-center space-x-2'> <div className='w-full flex items-center justify-center space-x-2'>
<UploadCloud01 className='w-6 h-6 mr-2'/>
<UploadCloud01 className='w-6 h-6 mr-2' />
<div className='text-gray-500'> <div className='text-gray-500'>
{t('datasetCreation.stepOne.uploader.button')} {t('datasetCreation.stepOne.uploader.button')}
<span className='pl-1 text-[#155eef] cursor-pointer' onClick={selectHandle}>{t('datasetDocuments.list.batchModal.browse')}</span> <span className='pl-1 text-[#155eef] cursor-pointer' onClick={selectHandle}>{t('datasetDocuments.list.batchModal.browse')}</span>
</div> </div>
</div> </div>
{dragging && <div ref={dragRef} className='absolute w-full h-full top-0 left-0'/>}
{dragging && <div ref={dragRef} className='absolute w-full h-full top-0 left-0' />}
</div> </div>
)} )}
{file && ( {file && (

+ 1
- 1
web/app/components/app/duplicate-modal/index.tsx Datei anzeigen

'use client' 'use client'
import React, { useState } from 'react' import React, { useState } from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import Toast from '@/app/components/base/toast' import Toast from '@/app/components/base/toast'

+ 1
- 1
web/app/components/app/log-annotation/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import cn from '@/utils/classnames'
import Log from '@/app/components/app/log' import Log from '@/app/components/app/log'
import WorkflowLog from '@/app/components/app/workflow-log' import WorkflowLog from '@/app/components/app/workflow-log'
import Annotation from '@/app/components/app/annotation' import Annotation from '@/app/components/app/annotation'

+ 1
- 1
web/app/components/app/log/list.tsx Datei anzeigen

import { createContext, useContext } from 'use-context-selector' import { createContext, useContext } from 'use-context-selector'
import { useShallow } from 'zustand/react/shallow' import { useShallow } from 'zustand/react/shallow'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import VarPanel from './var-panel' import VarPanel from './var-panel'
import cn from '@/utils/classnames'
import { randomString } from '@/utils' import { randomString } from '@/utils'
import type { FeedbackFunc, Feedbacktype, IChatItem, SubmitAnnotationFunc } from '@/app/components/base/chat/chat/type' import type { FeedbackFunc, Feedbacktype, IChatItem, SubmitAnnotationFunc } from '@/app/components/base/chat/chat/type'
import type { Annotation, ChatConversationFullDetailResponse, ChatConversationGeneralDetail, ChatConversationsResponse, ChatMessage, ChatMessagesRequest, CompletionConversationFullDetailResponse, CompletionConversationGeneralDetail, CompletionConversationsResponse, LogAnnotation } from '@/models/log' import type { Annotation, ChatConversationFullDetailResponse, ChatConversationGeneralDetail, ChatConversationsResponse, ChatMessage, ChatMessagesRequest, CompletionConversationFullDetailResponse, CompletionConversationGeneralDetail, CompletionConversationsResponse, LogAnnotation } from '@/models/log'

+ 1
- 1
web/app/components/app/overview/apikey-info-panel/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/general' import { LinkExternal02 } from '@/app/components/base/icons/src/vender/line/general'
import { IS_CE_EDITION } from '@/config' import { IS_CE_EDITION } from '@/config'

+ 1
- 1
web/app/components/app/overview/apikey-info-panel/progress/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'


export type IProgressProps = { export type IProgressProps = {
className?: string className?: string

+ 1
- 1
web/app/components/app/overview/embedded/index.tsx Datei anzeigen

import React, { useEffect, useState } from 'react' import React, { useEffect, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import style from './style.module.css' import style from './style.module.css'
import cn from '@/utils/classnames'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'
import copyStyle from '@/app/components/base/copy-btn/style.module.css' import copyStyle from '@/app/components/base/copy-btn/style.module.css'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'

+ 1
- 1
web/app/components/app/switch-app-modal/index.tsx Datei anzeigen

import { useRouter } from 'next/navigation' import { useRouter } from 'next/navigation'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
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'
import Confirm from '@/app/components/base/confirm' import Confirm from '@/app/components/base/confirm'

+ 1
- 1
web/app/components/app/text-generate/item/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react' import React, { useEffect, useRef, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiClipboardLine, RiClipboardLine,
} from '@remixicon/react' } from '@remixicon/react'
import { useBoolean } from 'ahooks' import { useBoolean } from 'ahooks'
import { HashtagIcon } from '@heroicons/react/24/solid' import { HashtagIcon } from '@heroicons/react/24/solid'
import ResultTab from './result-tab' import ResultTab from './result-tab'
import cn from '@/utils/classnames'
import { Markdown } from '@/app/components/base/markdown' import { Markdown } from '@/app/components/base/markdown'
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'

+ 1
- 1
web/app/components/app/text-generate/item/result-tab.tsx Datei anzeigen

memo, memo,
useEffect, useEffect,
} from 'react' } from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from '@/utils/classnames'
// import Loading from '@/app/components/base/loading' // import Loading from '@/app/components/base/loading'
import { Markdown } from '@/app/components/base/markdown' import { Markdown } from '@/app/components/base/markdown'
import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor'

+ 1
- 1
web/app/components/app/text-generate/saved-items/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import copy from 'copy-to-clipboard' import copy from 'copy-to-clipboard'
import NoData from './no-data' import NoData from './no-data'
import cn from '@/utils/classnames'
import type { SavedMessage } from '@/models/debug' import type { SavedMessage } from '@/models/debug'
import { Markdown } from '@/app/components/base/markdown' import { Markdown } from '@/app/components/base/markdown'
import { SimpleBtn, copyIcon } from '@/app/components/app/text-generate/item' import { SimpleBtn, copyIcon } from '@/app/components/app/text-generate/item'

+ 4
- 4
web/app/components/app/type-selector/index.tsx Datei anzeigen

import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import React, { useState } from 'react' import React, { useState } from 'react'
import cn from 'classnames'
import { RiArrowDownSLine } from '@remixicon/react' import { RiArrowDownSLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import { import {
PortalToFollowElem, PortalToFollowElem,
PortalToFollowElemContent, PortalToFollowElemContent,
}}> }}>
<ChatBot className='mr-2 w-4 h-4 text-[#1570EF]' /> <ChatBot className='mr-2 w-4 h-4 text-[#1570EF]' />
<div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.chatbot')}</div> <div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.chatbot')}</div>
{value === 'chatbot' && <Check className='w-4 h-4 text-primary-600'/>}
{value === 'chatbot' && <Check className='w-4 h-4 text-primary-600' />}
</div> </div>
<div className='flex items-center pl-3 py-[6px] pr-2 rounded-lg cursor-pointer hover:bg-gray-50' onClick={() => { <div className='flex items-center pl-3 py-[6px] pr-2 rounded-lg cursor-pointer hover:bg-gray-50' onClick={() => {
onChange('agent') onChange('agent')
}}> }}>
<CuteRobote className='mr-2 w-4 h-4 text-indigo-600' /> <CuteRobote className='mr-2 w-4 h-4 text-indigo-600' />
<div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.agent')}</div> <div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.agent')}</div>
{value === 'agent' && <Check className='w-4 h-4 text-primary-600'/>}
{value === 'agent' && <Check className='w-4 h-4 text-primary-600' />}
</div> </div>
<div className='flex items-center pl-3 py-[6px] pr-2 rounded-lg cursor-pointer hover:bg-gray-50' onClick={() => { <div className='flex items-center pl-3 py-[6px] pr-2 rounded-lg cursor-pointer hover:bg-gray-50' onClick={() => {
onChange('workflow') onChange('workflow')
}}> }}>
<Route className='mr-2 w-4 h-4 text-[#F79009]' /> <Route className='mr-2 w-4 h-4 text-[#F79009]' />
<div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.workflow')}</div> <div className='grow text-gray-700 text-[13px] font-medium leading-[18px]'>{t('app.typeSelector.workflow')}</div>
{value === 'workflow' && <Check className='w-4 h-4 text-primary-600'/>}
{value === 'workflow' && <Check className='w-4 h-4 text-primary-600' />}
</div> </div>
</div> </div>
</PortalToFollowElemContent> </PortalToFollowElemContent>

+ 1
- 1
web/app/components/app/workflow-log/list.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import DetailPanel from './detail' import DetailPanel from './detail'
import cn from '@/utils/classnames'
import type { WorkflowAppLogDetail, WorkflowLogsResponse } from '@/models/log' import type { WorkflowAppLogDetail, WorkflowLogsResponse } from '@/models/log'
import type { App } from '@/types/app' import type { App } from '@/types/app'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'

+ 1
- 1
web/app/components/base/agent-log-modal/detail.tsx Datei anzeigen

import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { flatten, uniq } from 'lodash-es' import { flatten, uniq } from 'lodash-es'
import cn from 'classnames'
import ResultPanel from './result' import ResultPanel from './result'
import TracingPanel from './tracing' import TracingPanel from './tracing'
import cn from '@/utils/classnames'
import { ToastContext } from '@/app/components/base/toast' import { ToastContext } from '@/app/components/base/toast'
import Loading from '@/app/components/base/loading' import Loading from '@/app/components/base/loading'
import { fetchAgentLogDetail } from '@/service/log' import { fetchAgentLogDetail } from '@/service/log'

+ 1
- 1
web/app/components/base/agent-log-modal/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import { useEffect, useRef, useState } from 'react' import { useEffect, useRef, useState } from 'react'
import { useClickAway } from 'ahooks' import { useClickAway } from 'ahooks'
import AgentLogDetail from './detail' import AgentLogDetail from './detail'
import cn from '@/utils/classnames'
import type { IChatItem } from '@/app/components/base/chat/chat/type' import type { IChatItem } from '@/app/components/base/chat/chat/type'


type AgentLogModalProps = { type AgentLogModalProps = {

+ 1
- 1
web/app/components/base/agent-log-modal/iteration.tsx Datei anzeigen

'use client' 'use client'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import type { FC } from 'react' import type { FC } from 'react'
import cn from 'classnames'
import ToolCall from './tool-call' import ToolCall from './tool-call'
import cn from '@/utils/classnames'
import type { AgentIteration } from '@/models/log' import type { AgentIteration } from '@/models/log'


type Props = { type Props = {

+ 1
- 1
web/app/components/base/agent-log-modal/tool-call.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import { useState } from 'react' import { useState } from 'react'
import cn from 'classnames'
import { import {
RiCheckboxCircleLine, RiCheckboxCircleLine,
RiErrorWarningLine, RiErrorWarningLine,
} from '@remixicon/react' } from '@remixicon/react'
import { useContext } from 'use-context-selector' import { useContext } from 'use-context-selector'
import cn from '@/utils/classnames'
import BlockIcon from '@/app/components/workflow/block-icon' import BlockIcon from '@/app/components/workflow/block-icon'
import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor' import CodeEditor from '@/app/components/workflow/nodes/_base/components/editor/code-editor'
import { CodeLanguage } from '@/app/components/workflow/nodes/code/types' import { CodeLanguage } from '@/app/components/workflow/nodes/code/types'

+ 1
- 1
web/app/components/base/app-icon/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import classNames from 'classnames'


import data from '@emoji-mart/data' import data from '@emoji-mart/data'
import { init } from 'emoji-mart' import { init } from 'emoji-mart'
import style from './style.module.css' import style from './style.module.css'
import classNames from '@/utils/classnames'


init({ data }) init({ data })



+ 1
- 1
web/app/components/base/auto-height-textarea/common.tsx Datei anzeigen

import { forwardRef, useEffect, useRef } from 'react' import { forwardRef, useEffect, useRef } from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'


type AutoHeightTextareaProps = type AutoHeightTextareaProps =
& React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement> & React.DetailedHTMLProps<React.TextareaHTMLAttributes<HTMLTextAreaElement>, HTMLTextAreaElement>

+ 1
- 1
web/app/components/base/auto-height-textarea/index.tsx Datei anzeigen

import { forwardRef, useEffect, useRef } from 'react' import { forwardRef, useEffect, useRef } from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'
import { sleep } from '@/utils' import { sleep } from '@/utils'


type IProps = { type IProps = {

+ 1
- 1
web/app/components/base/avatar/index.tsx Datei anzeigen

'use client' 'use client'
import cn from 'classnames'
import { useState } from 'react' import { useState } from 'react'
import cn from '@/utils/classnames'


type AvatarProps = { type AvatarProps = {
name: string name: string

+ 1
- 1
web/app/components/base/block-input/index.tsx Datei anzeigen



import type { ChangeEvent, FC } from 'react' import type { ChangeEvent, FC } from 'react'
import React, { useCallback, useEffect, useRef, useState } from 'react' import React, { useCallback, useEffect, useRef, useState } from 'react'
import classNames from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { varHighlightHTML } from '../../app/configuration/base/var-highlight' import { varHighlightHTML } from '../../app/configuration/base/var-highlight'
import Toast from '../toast' import Toast from '../toast'
import classNames from '@/utils/classnames'
import { checkKeys } from '@/utils/var' import { checkKeys } from '@/utils/var'


// regex to match the {{}} and replace it with a span // regex to match the {{}} and replace it with a span

+ 1
- 1
web/app/components/base/button/add-button.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import { RiAddLine } from '@remixicon/react' import { RiAddLine } from '@remixicon/react'
import cn from '@/utils/classnames'


type Props = { type Props = {
className?: string className?: string

+ 1
- 1
web/app/components/base/button/index.tsx Datei anzeigen

import type { CSSProperties } from 'react' import type { CSSProperties } from 'react'
import React from 'react' import React from 'react'
import { type VariantProps, cva } from 'class-variance-authority' import { type VariantProps, cva } from 'class-variance-authority'
import classNames from 'classnames'
import Spinner from '../spinner' import Spinner from '../spinner'
import classNames from '@/utils/classnames'


const buttonVariants = cva( const buttonVariants = cva(
'btn disabled:btn-disabled', 'btn disabled:btn-disabled',

+ 2
- 2
web/app/components/base/chat/chat/answer/operation.tsx Datei anzeigen

useMemo, useMemo,
useState, useState,
} from 'react' } from 'react'
import cn from 'classnames'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import type { ChatItem } from '../../types' import type { ChatItem } from '../../types'
import { useChatContext } from '../context' import { useChatContext } from '../context'
import cn from '@/utils/classnames'
import CopyBtn from '@/app/components/base/copy-btn' import CopyBtn from '@/app/components/base/copy-btn'
import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication' import { MessageFast } from '@/app/components/base/icons/src/vender/solid/communication'
import AudioBtn from '@/app/components/base/audio-btn' import AudioBtn from '@/app/components/base/audio-btn'
)} )}
{(config?.text_to_speech?.enabled) && ( {(config?.text_to_speech?.enabled) && (
<> <>
<div className='mx-1 w-[1px] h-[14px] bg-gray-200'/>
<div className='mx-1 w-[1px] h-[14px] bg-gray-200' />
<AudioBtn <AudioBtn
id={id} id={id}
value={content} value={content}

+ 1
- 1
web/app/components/base/chat/chat/answer/workflow-process.tsx Datei anzeigen

useMemo, useMemo,
useState, useState,
} from 'react' } from 'react'
import cn from 'classnames'
import { import {
RiArrowRightSLine, RiArrowRightSLine,
RiErrorWarningFill, RiErrorWarningFill,
} from '@remixicon/react' } from '@remixicon/react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import type { ChatItem, WorkflowProcess } from '../../types' import type { ChatItem, WorkflowProcess } from '../../types'
import cn from '@/utils/classnames'
import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general'
import { WorkflowRunningStatus } from '@/app/components/workflow/types' import { WorkflowRunningStatus } from '@/app/components/workflow/types'
import NodePanel from '@/app/components/workflow/run/node' import NodePanel from '@/app/components/workflow/run/node'

+ 1
- 1
web/app/components/base/chat/chat/index.tsx Datei anzeigen

} from 'react' } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { debounce } from 'lodash-es' import { debounce } from 'lodash-es'
import classNames from 'classnames'
import { useShallow } from 'zustand/react/shallow' import { useShallow } from 'zustand/react/shallow'
import type { import type {
ChatConfig, ChatConfig,
import ChatInput from './chat-input' import ChatInput from './chat-input'
import TryToAsk from './try-to-ask' import TryToAsk from './try-to-ask'
import { ChatContextProvider } from './context' import { ChatContextProvider } from './context'
import classNames from '@/utils/classnames'
import type { Emoji } from '@/app/components/tools/types' import type { Emoji } from '@/app/components/tools/types'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import { StopCircle } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices' import { StopCircle } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices'

+ 1
- 1
web/app/components/base/chat/chat/thought/tool.tsx Datei anzeigen

import React, { useState } from 'react' import React, { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'


import cn from 'classnames'
import { import {
RiArrowDownSLine, RiArrowDownSLine,
RiLoader2Line, RiLoader2Line,
} from '@remixicon/react' } from '@remixicon/react'
import type { ToolInfoInThought } from '../type' import type { ToolInfoInThought } from '../type'
import Panel from './panel' import Panel from './panel'
import cn from '@/utils/classnames'
import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general'
import { DataSet as DataSetIcon } from '@/app/components/base/icons/src/public/thought' import { DataSet as DataSetIcon } from '@/app/components/base/icons/src/public/thought'
import type { Emoji } from '@/app/components/tools/types' import type { Emoji } from '@/app/components/tools/types'

+ 1
- 1
web/app/components/base/chat/embedded-chatbot/chat-wrapper.tsx Datei anzeigen

import { useCallback, useEffect, useMemo } from 'react' import { useCallback, useEffect, useMemo } from 'react'
import cn from 'classnames'
import Chat from '../chat' import Chat from '../chat'
import type { import type {
ChatConfig, ChatConfig,
import { useEmbeddedChatbotContext } from './context' import { useEmbeddedChatbotContext } from './context'
import ConfigPanel from './config-panel' import ConfigPanel from './config-panel'
import { isDify } from './utils' import { isDify } from './utils'
import cn from '@/utils/classnames'
import { import {
fetchSuggestedQuestions, fetchSuggestedQuestions,
getUrl, getUrl,

+ 1
- 1
web/app/components/base/chat/embedded-chatbot/config-panel/index.tsx Datei anzeigen

import { useState } from 'react' import { useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { useEmbeddedChatbotContext } from '../context' import { useEmbeddedChatbotContext } from '../context'
import { useThemeContext } from '../theme/theme-context' import { useThemeContext } from '../theme/theme-context'
import { CssTransform } from '../theme/utils' import { CssTransform } from '../theme/utils'
import Form from './form' import Form from './form'
import cn from '@/utils/classnames'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import AppIcon from '@/app/components/base/app-icon' import AppIcon from '@/app/components/base/app-icon'
import { MessageDotsCircle } from '@/app/components/base/icons/src/vender/solid/communication' import { MessageDotsCircle } from '@/app/components/base/icons/src/vender/solid/communication'

+ 1
- 1
web/app/components/base/chat/embedded-chatbot/index.tsx Datei anzeigen

useEffect, useEffect,
useState, useState,
} from 'react' } from 'react'
import cn from 'classnames'
import { useAsyncEffect } from 'ahooks' import { useAsyncEffect } from 'ahooks'
import { import {
EmbeddedChatbotContext, EmbeddedChatbotContext,
import { useEmbeddedChatbot } from './hooks' import { useEmbeddedChatbot } from './hooks'
import { isDify } from './utils' import { isDify } from './utils'
import { useThemeContext } from './theme/theme-context' import { useThemeContext } from './theme/theme-context'
import cn from '@/utils/classnames'
import { checkOrSetAccessToken } from '@/app/components/share/utils' import { checkOrSetAccessToken } from '@/app/components/share/utils'
import AppUnavailable from '@/app/components/base/app-unavailable' import AppUnavailable from '@/app/components/base/app-unavailable'
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'

+ 1
- 1
web/app/components/base/checkbox/index.tsx Datei anzeigen

import cn from 'classnames'
import s from './index.module.css' import s from './index.module.css'
import cn from '@/utils/classnames'


type CheckboxProps = { type CheckboxProps = {
checked?: boolean checked?: boolean

+ 1
- 1
web/app/components/base/confirm/common.tsx Datei anzeigen

import type { FC, ReactElement } from 'react' import type { FC, ReactElement } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import { import {
RiCloseLine, RiCloseLine,
RiErrorWarningFill, RiErrorWarningFill,
} from '@remixicon/react' } from '@remixicon/react'
import s from './common.module.css' import s from './common.module.css'
import cn from '@/utils/classnames'
import Modal from '@/app/components/base/modal' import Modal from '@/app/components/base/modal'
import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'

+ 1
- 1
web/app/components/base/dialog/index.tsx Datei anzeigen

import { Fragment, useCallback } from 'react' import { Fragment, useCallback } from 'react'
import type { ElementType, ReactNode } from 'react' import type { ElementType, ReactNode } from 'react'
import { Dialog, Transition } from '@headlessui/react' import { Dialog, Transition } from '@headlessui/react'
import classNames from 'classnames'
import classNames from '@/utils/classnames'


// https://headlessui.com/react/dialog // https://headlessui.com/react/dialog



+ 1
- 1
web/app/components/base/drawer-plus/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React, { useRef } from 'react' import React, { useRef } from 'react'
import cn from 'classnames'
import { RiCloseLine } from '@remixicon/react' import { RiCloseLine } from '@remixicon/react'
import cn from '@/utils/classnames'
import Drawer from '@/app/components/base/drawer' import Drawer from '@/app/components/base/drawer'
import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints' import useBreakpoints, { MediaType } from '@/hooks/use-breakpoints'



+ 1
- 1
web/app/components/base/drawer/index.tsx Datei anzeigen

'use client' 'use client'
import cn from 'classnames'
import { Dialog } from '@headlessui/react' import { Dialog } from '@headlessui/react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import { XMarkIcon } from '@heroicons/react/24/outline' import { XMarkIcon } from '@heroicons/react/24/outline'
import Button from '../button' import Button from '../button'
import cn from '@/utils/classnames'


export type IDrawerProps = { export type IDrawerProps = {
title?: string title?: string

+ 1
- 1
web/app/components/base/emoji-picker/index.tsx Datei anzeigen

import data from '@emoji-mart/data' import data from '@emoji-mart/data'
import type { Emoji, EmojiMartData } from '@emoji-mart/data' import type { Emoji, EmojiMartData } from '@emoji-mart/data'
import { SearchIndex, init } from 'emoji-mart' import { SearchIndex, init } from 'emoji-mart'
import cn from 'classnames'
import { import {
MagnifyingGlassIcon, MagnifyingGlassIcon,
} from '@heroicons/react/24/outline' } from '@heroicons/react/24/outline'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import Divider from '@/app/components/base/divider' import Divider from '@/app/components/base/divider'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'



+ 1
- 1
web/app/components/base/features/feature-choose/feature-item/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useCallback } from 'react' import React, { useCallback } from 'react'
import produce from 'immer' import produce from 'immer'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'
import Switch from '@/app/components/base/switch' import Switch from '@/app/components/base/switch'
import { FeatureEnum } from '@/app/components/base/features/types' import { FeatureEnum } from '@/app/components/base/features/types'
import { useFeaturesStore } from '@/app/components/base/features/hooks' import { useFeaturesStore } from '@/app/components/base/features/hooks'

+ 1
- 1
web/app/components/base/features/feature-panel/file-upload/param-config.tsx Datei anzeigen



import { memo, useState } from 'react' import { memo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import type { OnFeaturesChange } from '../../types' import type { OnFeaturesChange } from '../../types'
import ParamConfigContent from './param-config-content' import ParamConfigContent from './param-config-content'
import cn from '@/utils/classnames'
import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general'
import { import {
PortalToFollowElem, PortalToFollowElem,

+ 1
- 1
web/app/components/base/features/feature-panel/file-upload/radio-group/index.tsx Datei anzeigen

'use client' 'use client'
import type { FC } from 'react' import type { FC } from 'react'
import React from 'react' import React from 'react'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'


type OPTION = { type OPTION = {
label: string label: string

+ 1
- 1
web/app/components/base/features/feature-panel/opening-statement/index.tsx Datei anzeigen

import type { FC } from 'react' import type { FC } from 'react'
import React, { useEffect, useRef, useState } from 'react' import React, { useEffect, useRef, useState } from 'react'
import produce from 'immer' import produce from 'immer'
import cn from 'classnames'
import { import {
RiAddLine, RiAddLine,
RiDeleteBinLine, RiDeleteBinLine,
useFeaturesStore, useFeaturesStore,
} from '../../hooks' } from '../../hooks'
import type { OnFeaturesChange } from '../../types' import type { OnFeaturesChange } from '../../types'
import cn from '@/utils/classnames'
import Panel from '@/app/components/app/configuration/base/feature-panel' import Panel from '@/app/components/app/configuration/base/feature-panel'
import Button from '@/app/components/base/button' import Button from '@/app/components/base/button'
import OperationBtn from '@/app/components/app/configuration/base/operation-btn' import OperationBtn from '@/app/components/app/configuration/base/operation-btn'

+ 1
- 1
web/app/components/base/features/feature-panel/score-slider/base-slider/index.tsx Datei anzeigen

import ReactSlider from 'react-slider' import ReactSlider from 'react-slider'
import cn from 'classnames'
import s from './style.module.css' import s from './style.module.css'
import cn from '@/utils/classnames'


type ISliderProps = { type ISliderProps = {
className?: string className?: string

+ 1
- 1
web/app/components/base/features/feature-panel/text-to-speech/param-config-content.tsx Datei anzeigen

import useSWR from 'swr' import useSWR from 'swr'
import produce from 'immer' import produce from 'immer'
import React, { Fragment } from 'react' import React, { Fragment } from 'react'
import classNames from 'classnames'
import { import {
RiQuestionLine, RiQuestionLine,
} from '@remixicon/react' } from '@remixicon/react'
useFeaturesStore, useFeaturesStore,
} from '../../hooks' } from '../../hooks'
import type { OnFeaturesChange } from '../../types' import type { OnFeaturesChange } from '../../types'
import classNames from '@/utils/classnames'
import type { Item } from '@/app/components/base/select' import type { Item } from '@/app/components/base/select'
import { fetchAppVoices } from '@/service/apps' import { fetchAppVoices } from '@/service/apps'
import Tooltip from '@/app/components/base/tooltip' import Tooltip from '@/app/components/base/tooltip'

+ 1
- 1
web/app/components/base/features/feature-panel/text-to-speech/params-config.tsx Datei anzeigen

'use client' 'use client'
import { memo, useState } from 'react' import { memo, useState } from 'react'
import { useTranslation } from 'react-i18next' import { useTranslation } from 'react-i18next'
import cn from 'classnames'
import type { OnFeaturesChange } from '../../types' import type { OnFeaturesChange } from '../../types'
import ParamConfigContent from './param-config-content' import ParamConfigContent from './param-config-content'
import cn from '@/utils/classnames'
import { Settings01 } from '@/app/components/base/icons/src/vender/line/general' import { Settings01 } from '@/app/components/base/icons/src/vender/line/general'
import { import {
PortalToFollowElem, PortalToFollowElem,

+ 1
- 1
web/app/components/base/icons/script.js Datei anzeigen

// DON NOT EDIT IT MANUALLY // DON NOT EDIT IT MANUALLY


import * as React from 'react' import * as React from 'react'
import cn from 'classnames'
import cn from '@/utils/classnames'
import s from './<%= fileName %>.module.css' import s from './<%= fileName %>.module.css'


const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>(( const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((

+ 1
- 1
web/app/components/base/icons/src/image/llm/BaichuanTextCn.tsx Datei anzeigen

// DON NOT EDIT IT MANUALLY // DON NOT EDIT IT MANUALLY


import * as React from 'react' import * as React from 'react'
import cn from 'classnames'
import s from './BaichuanTextCn.module.css' import s from './BaichuanTextCn.module.css'
import cn from '@/utils/classnames'


const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>(( const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
{ className, ...restProps }, { className, ...restProps },

+ 1
- 1
web/app/components/base/icons/src/image/llm/Minimax.tsx Datei anzeigen

// DON NOT EDIT IT MANUALLY // DON NOT EDIT IT MANUALLY


import * as React from 'react' import * as React from 'react'
import cn from 'classnames'
import s from './Minimax.module.css' import s from './Minimax.module.css'
import cn from '@/utils/classnames'


const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>(( const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
{ className, ...restProps }, { className, ...restProps },

+ 0
- 0
web/app/components/base/icons/src/image/llm/MinimaxText.tsx Datei anzeigen


Einige Dateien werden nicht angezeigt, da zu viele Dateien in diesem Diff geändert wurden.

Laden…
Abbrechen
Speichern