diff --git a/web/app/components/app-sidebar/app-info.tsx b/web/app/components/app-sidebar/app-info.tsx
index 18a9ac8bc8..5ec0e318a0 100644
--- a/web/app/components/app-sidebar/app-info.tsx
+++ b/web/app/components/app-sidebar/app-info.tsx
@@ -6,9 +6,11 @@ import {
RiDeleteBinLine,
RiEditLine,
RiEqualizer2Line,
+ RiExchange2Line,
RiFileCopy2Line,
RiFileDownloadLine,
RiFileUploadLine,
+ RiMoreLine,
} from '@remixicon/react'
import AppIcon from '../base/app-icon'
import SwitchAppModal from '../app/switch-app-modal'
@@ -32,6 +34,7 @@ import { fetchWorkflowDraft } from '@/service/workflow'
import ContentDialog from '@/app/components/base/content-dialog'
import Button from '@/app/components/base/button'
import CardView from '@/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/cardView'
+import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '../base/portal-to-follow-elem'
export type IAppInfoProps = {
expand: boolean
@@ -179,6 +182,11 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
const { isCurrentWorkspaceEditor } = useAppContext()
+ const [showMore, setShowMore] = useState(false)
+ const handleTriggerMore = useCallback(() => {
+ setShowMore(true)
+ }, [setShowMore])
+
if (!appDetail)
return null
@@ -276,22 +284,50 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
{t('app.export')}
- {
- (appDetail.mode === 'advanced-chat' || appDetail.mode === 'workflow') && (
+ {appDetail.mode !== 'agent-chat' &&
+
- )
- }
+
+
+
+ {
+ (appDetail.mode === 'advanced-chat' || appDetail.mode === 'workflow')
+ &&
{
+ setOpen(false)
+ setShowImportDSLModal(true)
+ }}>
+
+ {t('workflow.common.importDSL')}
+
+ }
+ {
+ (appDetail.mode === 'completion' || appDetail.mode === 'chat')
+ &&
{
+ setOpen(false)
+ setShowSwitchModal(true)
+ }}>
+
+ {t('app.switch')}
+
+ }
+
+
+ }
diff --git a/web/i18n/en-US/common.ts b/web/i18n/en-US/common.ts
index 0491ff57a8..8756095075 100644
--- a/web/i18n/en-US/common.ts
+++ b/web/i18n/en-US/common.ts
@@ -57,6 +57,7 @@ const translation = {
submit: 'Submit',
skip: 'Skip',
format: 'Format',
+ more: 'More',
},
errorMsg: {
fieldRequired: '{{field}} is required',
diff --git a/web/i18n/ja-JP/common.ts b/web/i18n/ja-JP/common.ts
index c6163ec5cd..f2d7e0b4f0 100644
--- a/web/i18n/ja-JP/common.ts
+++ b/web/i18n/ja-JP/common.ts
@@ -57,6 +57,7 @@ const translation = {
copied: 'コピーしました',
in: '中',
format: 'フォーマット',
+ more: 'もっと',
},
errorMsg: {
fieldRequired: '{{field}}は必要です',
diff --git a/web/i18n/zh-Hans/common.ts b/web/i18n/zh-Hans/common.ts
index 327f41ea05..22211a92aa 100644
--- a/web/i18n/zh-Hans/common.ts
+++ b/web/i18n/zh-Hans/common.ts
@@ -57,6 +57,7 @@ const translation = {
submit: '提交',
skip: '跳过',
format: '格式化',
+ more: '更多',
},
errorMsg: {
fieldRequired: '{{field}} 为必填项',