import Link from 'next/link' import { EllipsisHorizontalIcon, BuildingLibraryIcon, LightBulbIcon, ArrowTopRightOnSquareIcon, ChevronDownIcon, CurrencyDollarIcon, ChartBarIcon, Cog8ToothIcon, ArrowsRightLeftIcon, ArrowTrendingUpIcon, XMarkIcon, MagnifyingGlassIcon, BanknotesIcon, } from '@heroicons/react/20/solid' import { useRouter } from 'next/router' import { useTranslation } from 'next-i18next' import { Fragment, ReactNode, useState } from 'react' import { Disclosure, Popover, Transition } from '@headlessui/react' import MangoAccountSummary from './account/MangoAccountSummary' import Tooltip from './shared/Tooltip' import { HealthType } from '@blockworks-foundation/mango-v4' import { useWallet } from '@solana/wallet-adapter-react' import mangoStore from '@store/mangoStore' import HealthHeart from './account/HealthHeart' import useMangoAccount from 'hooks/useMangoAccount' import { useTheme } from 'next-themes' import { IconButton } from './shared/Button' const SideNav = ({ collapsed }: { collapsed: boolean }) => { const { t } = useTranslation(['common', 'search']) const { connected } = useWallet() const group = mangoStore.getState().group const { mangoAccount } = useMangoAccount() const router = useRouter() const { pathname } = router return (
next Mango
} title={t('account')} pagePath="/" /> } title={t('swap')} pagePath="/swap" /> } title={t('trade')} pagePath="/trade" /> } title={t('borrow')} pagePath="/borrow" /> } title={t('stats')} pagePath="/stats" /> } title={t('settings')} pagePath="/settings" /> } title={t('more')} > {/* } title={t('fees')} pagePath="/fees" hideIconBg /> */} } title={t('search:search-accounts')} pagePath="/search" hideIconBg showTooltip={false} /> } title={t('learn')} pagePath="https://docs.mango.markets" hideIconBg isExternal showTooltip={false} /> } title={t('governance')} pagePath="https://dao.mango.markets" hideIconBg isExternal showTooltip={false} />
} isOpen panelTitle={`${mangoAccount?.name || ''} ${t('account')}`} title={

{t('account')}

{mangoAccount ? mangoAccount.name : connected ? 'No Account' : 'Connect'}

} alignBottom hideIconBg showClose >
) } export default SideNav const MenuItem = ({ active, collapsed, icon, title, pagePath, hideIconBg, isExternal, showTooltip = true, }: { active?: boolean collapsed: boolean icon: ReactNode title: string pagePath: string hideIconBg?: boolean isExternal?: boolean showTooltip?: boolean }) => { const { theme } = useTheme() return (
{icon}
{title}
{isExternal ? ( ) : null}
) } export const ExpandableMenuItem = ({ alignBottom, children, collapsed, hideIconBg, icon, panelTitle, isOpen, showClose, title, }: { alignBottom?: boolean children: ReactNode collapsed: boolean hideIconBg?: boolean icon: ReactNode panelTitle?: string isOpen?: boolean showClose?: boolean title: string | ReactNode }) => { const [showMenu, setShowMenu] = useState(isOpen || false) const { theme } = useTheme() const toggleMenu = () => { setShowMenu(!showMenu) } return collapsed ? (
toggleMenu()} >
{icon}
{showMenu ? (
{panelTitle ? (

{panelTitle}

) : null} {showClose ? ( setShowMenu(false)} hideBg size="small" > ) : null}
{children}
) : null}
) : (
setShowMenu(!showMenu)} role="button" className={`w-full px-4 py-2 ${ alignBottom ? 'h-[64px] hover:bg-th-bkg-2' : '' }`} >
{icon}
{title}
{children}
) }