- {/* Header */}
+
+
+
+ {hasNewVersion && (
+
+ )}
+
-
- {['LLM', 'text embedding', 'speech2text'].map(tag => (
-
- ))}
-
)}
diff --git a/web/app/components/plugins/plugin-detail-panel/operation-dropdown.tsx b/web/app/components/plugins/plugin-detail-panel/operation-dropdown.tsx
new file mode 100644
index 0000000000..c9be924a65
--- /dev/null
+++ b/web/app/components/plugins/plugin-detail-panel/operation-dropdown.tsx
@@ -0,0 +1,61 @@
+'use client'
+import type { FC } from 'react'
+import React, { useCallback, useRef, useState } from 'react'
+import { useTranslation } from 'react-i18next'
+import { RiArrowRightUpLine, RiMoreFill } from '@remixicon/react'
+import ActionButton from '@/app/components/base/action-button'
+// import Button from '@/app/components/base/button'
+import {
+ PortalToFollowElem,
+ PortalToFollowElemContent,
+ PortalToFollowElemTrigger,
+} from '@/app/components/base/portal-to-follow-elem'
+import cn from '@/utils/classnames'
+
+type Props = {
+}
+
+const OperationDropdown: FC
= () => {
+ const { t } = useTranslation()
+ const [open, doSetOpen] = useState(false)
+ const openRef = useRef(open)
+ const setOpen = useCallback((v: boolean) => {
+ doSetOpen(v)
+ openRef.current = v
+ }, [doSetOpen])
+
+ const handleTrigger = useCallback(() => {
+ setOpen(!openRef.current)
+ }, [setOpen])
+
+ return (
+
+
+
+
+
+
+
+
+
{t('plugin.detailPanel.operation.info')}
+
{t('plugin.detailPanel.operation.checkUpdate')}
+
+
{t('plugin.detailPanel.operation.viewDetail')}
+
+
+
+
{t('plugin.detailPanel.operation.remove')}
+
+
+
+ )
+}
+export default React.memo(OperationDropdown)
diff --git a/web/i18n/en-US/plugin.ts b/web/i18n/en-US/plugin.ts
index 55acb354ab..239c1fc322 100644
--- a/web/i18n/en-US/plugin.ts
+++ b/web/i18n/en-US/plugin.ts
@@ -1,6 +1,15 @@
const translation = {
from: 'From',
endpointsEnabled: '{{num}} sets of endpoints enabled',
+ detailPanel: {
+ operation: {
+ update: 'Update',
+ info: 'Plugin Info',
+ checkUpdate: 'Check Update',
+ viewDetail: 'View Detail',
+ remove: 'Remove',
+ },
+ },
}
export default translation
diff --git a/web/i18n/zh-Hans/plugin.ts b/web/i18n/zh-Hans/plugin.ts
index e540d590f6..e89c5bddef 100644
--- a/web/i18n/zh-Hans/plugin.ts
+++ b/web/i18n/zh-Hans/plugin.ts
@@ -1,6 +1,15 @@
const translation = {
from: '来自',
endpointsEnabled: '{{num}} 组端点已启用',
+ detailPanel: {
+ operation: {
+ update: '更新',
+ info: '插件信息',
+ checkUpdate: '检查更新',
+ viewDetail: '查看详情',
+ remove: '移除',
+ },
+ },
}
export default translation