diff --git a/web/app/components/base/features/new-feature-panel/dialog-wrapper.tsx b/web/app/components/base/features/new-feature-panel/dialog-wrapper.tsx
new file mode 100644
index 0000000000..f076c186c5
--- /dev/null
+++ b/web/app/components/base/features/new-feature-panel/dialog-wrapper.tsx
@@ -0,0 +1,57 @@
+import { Fragment, useCallback } from 'react'
+import type { ReactNode } from 'react'
+import { Dialog, Transition } from '@headlessui/react'
+import cn from '@/utils/classnames'
+
+type DialogProps = {
+ className?: string
+ children: ReactNode
+ show: boolean
+ onClose?: () => void
+}
+
+const DialogWrapper = ({
+ className,
+ children,
+ show,
+ onClose,
+}: DialogProps) => {
+ const close = useCallback(() => onClose?.(), [onClose])
+ return (
+
+
+
+ )
+}
+
+export default DialogWrapper
diff --git a/web/app/components/base/features/new-feature-panel/index.tsx b/web/app/components/base/features/new-feature-panel/index.tsx
new file mode 100644
index 0000000000..fb35a45c8b
--- /dev/null
+++ b/web/app/components/base/features/new-feature-panel/index.tsx
@@ -0,0 +1,36 @@
+import { useTranslation } from 'react-i18next'
+import { RiCloseLine } from '@remixicon/react'
+import DialogWrapper from '@/app/components/base/features/new-feature-panel/dialog-wrapper'
+
+type Props = {
+ show: boolean
+ disabled: boolean
+ onChange: () => void
+ onClose: () => void
+}
+
+const NewFeaturePanel = ({ show, onClose }: Props) => {
+ const { t } = useTranslation()
+
+ return (
+
+
+
+
+
{t('workflow.common.features')}
+
{t('workflow.common.featuresDescription')}
+
+
+
+
+
+
+
+ )
+}
+
+export default NewFeaturePanel
diff --git a/web/app/components/workflow/features.tsx b/web/app/components/workflow/features.tsx
index 60a47bf177..43bbfa3a35 100644
--- a/web/app/components/workflow/features.tsx
+++ b/web/app/components/workflow/features.tsx
@@ -2,22 +2,14 @@ import {
memo,
useCallback,
} from 'react'
-import { useTranslation } from 'react-i18next'
-import { RiCloseLine } from '@remixicon/react'
import { useStore } from './store'
import {
- useIsChatMode,
useNodesReadOnly,
useNodesSyncDraft,
} from './hooks'
-import {
- FeaturesChoose,
- FeaturesPanel,
-} from '@/app/components/base/features'
+import NewFeaturePanel from '@/app/components/base/features/new-feature-panel'
const Features = () => {
- const { t } = useTranslation()
- const isChatMode = useIsChatMode()
const setShowFeaturesPanel = useStore(s => s.setShowFeaturesPanel)
const { nodesReadOnly } = useNodesReadOnly()
const { handleSyncWorkflowDraft } = useNodesSyncDraft()
@@ -27,39 +19,45 @@ const Features = () => {
}, [handleSyncWorkflowDraft])
return (
-
-
- {t('workflow.common.features')}
-
- {
- isChatMode && (
- <>
-
-
- >
- )
- }
-
setShowFeaturesPanel(false)}
- >
-
-
-
-
-
- {},
- }}
- />
-
-
+ setShowFeaturesPanel(false)}
+ />
+ //
+ //
+ // {t('workflow.common.features')}
+ //
+ // {
+ // isChatMode && (
+ // <>
+ //
+ //
+ // >
+ // )
+ // }
+ //
setShowFeaturesPanel(false)}
+ // >
+ //
+ //
+ //
+ //
+ //
+ // {},
+ // }}
+ // />
+ //
+ //
)
}
diff --git a/web/i18n/en-US/workflow.ts b/web/i18n/en-US/workflow.ts
index 2c99e08228..4ff7bf452f 100644
--- a/web/i18n/en-US/workflow.ts
+++ b/web/i18n/en-US/workflow.ts
@@ -19,6 +19,7 @@ const translation = {
goBackToEdit: 'Go back to editor',
conversationLog: 'Conversation Log',
features: 'Features',
+ featuresDescription: 'Enhance web app user experience',
debugAndPreview: 'Preview',
restart: 'Restart',
currentDraft: 'Current Draft',
diff --git a/web/i18n/zh-Hans/workflow.ts b/web/i18n/zh-Hans/workflow.ts
index 1c12c2244b..03c43d0fda 100644
--- a/web/i18n/zh-Hans/workflow.ts
+++ b/web/i18n/zh-Hans/workflow.ts
@@ -19,6 +19,7 @@ const translation = {
goBackToEdit: '返回编辑模式',
conversationLog: '对话记录',
features: '功能',
+ featuresDescription: '增强 web app 用户体验',
debugAndPreview: '预览',
restart: '重新开始',
currentDraft: '当前草稿',