import React, { useCallback, useRef, useState } from 'react' import { useTranslation } from 'react-i18next' import { useAppContext } from '@/context/app-context' import { RiEqualizer2Line, RiMenuLine, } from '@remixicon/react' import { PortalToFollowElem, PortalToFollowElemContent, PortalToFollowElemTrigger, } from '@/app/components/base/portal-to-follow-elem' import AppIcon from '../base/app-icon' import Divider from '../base/divider' import AppInfo from './app-info' import NavLink from './navLink' import { useStore as useAppStore } from '@/app/components/app/store' import type { NavIcon } from './navLink' import cn from '@/utils/classnames' type Props = { navigation: Array<{ name: string href: string icon: NavIcon selectedIcon: NavIcon }> } const AppSidebarDropdown = ({ navigation }: Props) => { const { t } = useTranslation() const { isCurrentWorkspaceEditor } = useAppContext() const appDetail = useAppStore(state => state.appDetail) const [detailExpand, setDetailExpand] = useState(false) 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]) if (!appDetail) return null return ( <>