'use client' import { useTranslation } from 'react-i18next' import { Fragment, useState } from 'react' import { useRouter } from 'next/navigation' import { useContext, useContextSelector } from 'use-context-selector' import { RiAccountCircleLine, RiArrowDownSLine, RiArrowRightUpLine, RiBookOpenLine, RiGithubLine, RiInformation2Line, RiLogoutBoxRLine, RiMap2Line, RiSettings3Line, RiStarLine } from '@remixicon/react' import Link from 'next/link' import { Menu, Transition } from '@headlessui/react' import Indicator from '../indicator' import AccountAbout from '../account-about' import GithubStar from '../github-star' import WorkplaceSelector from './workplace-selector' import Support from './support' import Compliance from './compliance' import classNames from '@/utils/classnames' import I18n from '@/context/i18n' import Avatar from '@/app/components/base/avatar' import { logout } from '@/service/common' import AppContext, { useAppContext } from '@/context/app-context' import { useModalContext } from '@/context/modal-context' import { LanguagesSupported } from '@/i18n/language' import { LicenseStatus } from '@/types/feature' import { IS_CLOUD_EDITION } from '@/config' export type IAppSelector = { isMobile: boolean } export default function AppSelector({ isMobile }: IAppSelector) { const itemClassName = ` flex items-center w-full h-9 pl-3 pr-2 text-text-secondary system-md-regular rounded-lg hover:bg-state-base-hover cursor-pointer gap-1 ` const router = useRouter() const [aboutVisible, setAboutVisible] = useState(false) const systemFeatures = useContextSelector(AppContext, v => v.systemFeatures) const { locale } = useContext(I18n) const { t } = useTranslation() const { userProfile, langeniusVersionInfo, isCurrentWorkspaceOwner } = useAppContext() const { setShowAccountSettingModal } = useModalContext() const handleLogout = async () => { await logout({ url: '/logout', params: {}, }) localStorage.removeItem('setup_status') localStorage.removeItem('console_token') localStorage.removeItem('refresh_token') router.push('/signin') } return (