import SideNav from './SideNav' import { ReactNode, useCallback, useEffect, useState } from 'react' import { ArrowRightIcon, ChevronRightIcon } from '@heroicons/react/solid' import { useViewport } from '../hooks/useViewport' import { breakpoints } from '../utils/theme' import { useTranslation } from 'next-i18next' import mangoStore from '../store/state' import BottomBar from './mobile/BottomBar' import useLocalStorageState from '../hooks/useLocalStorageState' import UserSetupModal from './modals/UserSetupModal' import { ConnectWalletButton } from './wallet/ConnectWalletButton' import ConnectedMenu from './wallet/ConnectedMenu' import WalletIcon from './icons/WalletIcon' import BounceLoader from './shared/BounceLoader' import MangoAccountsList from './MangoAccountsList' export const IS_ONBOARDED_KEY = 'isOnboarded' const Layout = ({ children }: { children: ReactNode }) => { const mangoAccount = mangoStore((s) => s.mangoAccount.current) const loadingMangoAccount = mangoStore((s) => s.mangoAccount.loading) const { t } = useTranslation('common') const [isCollapsed, setIsCollapsed] = useState(false) const { width } = useViewport() const isMobile = width ? width < breakpoints.md : false const [isOnboarded] = useLocalStorageState(IS_ONBOARDED_KEY) const [showUserSetupModal, setShowUserSetupModal] = useState(false) useEffect(() => { const collapsed = width ? width < breakpoints.xl : false setIsCollapsed(collapsed) }, [width]) useEffect(() => { if (width < breakpoints.lg) { setIsCollapsed(true) } }, [width]) const handleCloseModal = useCallback(() => { setShowUserSetupModal(false) }, []) const handleShowModal = useCallback(() => { setShowUserSetupModal(true) }, []) const handleToggleSidebar = () => { setIsCollapsed(!isCollapsed) setTimeout(() => { window.dispatchEvent(new Event('resize')) }, 100) } return ( <> {loadingMangoAccount && isOnboarded ? (
) : null}
{isMobile ? (
) : (
)}
{isMobile ? ( next ) : null} {mangoAccount ? ( ) : !isMobile ? ( 🔗{t('connect-helper')} ) : null}
{mangoAccount ? ( ) : isOnboarded ? ( ) : ( )}
{children}
{showUserSetupModal ? ( ) : null} ) } export default Layout