diff --git a/web/app/components/app-sidebar/app-info.tsx b/web/app/components/app-sidebar/app-info.tsx
index 27a6e352a8..7c41811ebd 100644
--- a/web/app/components/app-sidebar/app-info.tsx
+++ b/web/app/components/app-sidebar/app-info.tsx
@@ -6,8 +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'
@@ -33,6 +36,7 @@ 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 Divider from '../base/divider'
+import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger } from '../base/portal-to-follow-elem'
export type IAppInfoProps = {
expand: boolean
@@ -194,6 +198,11 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
const { isCurrentWorkspaceEditor } = useAppContext()
+ const [showMore, setShowMore] = useState(false)
+ const handleTriggerMore = useCallback(() => {
+ setShowMore(true)
+ }, [setShowMore])
+
if (!appDetail)
return null
@@ -278,7 +287,8 @@ const AppInfo = ({ expand }: IAppInfoProps) => {
setOpen(false)
setShowDuplicateModal(true)
}}>
- {t('app.duplicate')}
+