2f7b266e6b
* MP-1674: replaced the logo and added dekstop only nav * MP-1677: borrowCapacity implemented into the SubAccount Nav * MP-1677: adjusted the SubAccount navigation * M1677: fixed the button and SearchInput component * MP-1674: fixed the NavLink component * MP-1674: fixed the SubAccount navigation * tidy: cleaning up the trading view * MP-1674: added withdraw and funding functions * MP-1674: worked on the AccountStats * MP-1671: modal work * MP-1647: improvised CreditAccount expander * tidy: fixed the page structure * MP-1758: finished the SearchInput layout * MP-1759: updated the semicircle graphs * MP-1759: SemiCircle to Gauge * fix: implemented animated numbers * tidy: refactor * MP-1759: added Tooltip to the Gauge * fix: replace animate={true} with animate * fix: fixed the Gauge timing * fix: updated the BorrowCapacity styles * fix: renamed SubAccount to Account * fix: Text should not be a button, Button should be * tidy: format * fix: Text no clicky * fix: replaced all the Text appearances with onClick
192 lines
6.7 KiB
TypeScript
192 lines
6.7 KiB
TypeScript
import { ExecuteResult } from '@cosmjs/cosmwasm-stargate'
|
|
import { UseMutateFunction } from '@tanstack/react-query'
|
|
import classNames from 'classnames'
|
|
import { useMemo, useState } from 'react'
|
|
|
|
import { FundAccountModal, WithdrawModal } from 'components/Account'
|
|
import Button from 'components/Button'
|
|
import ArrowDown from 'components/Icons/arrow-down.svg'
|
|
import ArrowUp from 'components/Icons/arrow-up.svg'
|
|
import ChevronDownIcon from 'components/Icons/expand.svg'
|
|
import Overlay from 'components/Overlay'
|
|
import Text from 'components/Text'
|
|
|
|
interface Props {
|
|
creditAccountsList: string[]
|
|
selectedAccount: string | null
|
|
deleteCreditAccount: UseMutateFunction<ExecuteResult | undefined, Error, void, unknown>
|
|
setSelectedAccount: (id: string) => void
|
|
createCreditAccount: () => void
|
|
}
|
|
|
|
const MAX_VISIBLE_CREDIT_ACCOUNTS = 5
|
|
|
|
const SubAccountNavigation = ({
|
|
creditAccountsList,
|
|
createCreditAccount,
|
|
deleteCreditAccount,
|
|
selectedAccount,
|
|
setSelectedAccount,
|
|
}: Props) => {
|
|
const { firstCreditAccounts, restCreditAccounts } = useMemo(() => {
|
|
return {
|
|
firstCreditAccounts: creditAccountsList?.slice(0, MAX_VISIBLE_CREDIT_ACCOUNTS) ?? [],
|
|
restCreditAccounts: creditAccountsList?.slice(MAX_VISIBLE_CREDIT_ACCOUNTS) ?? [],
|
|
}
|
|
}, [creditAccountsList])
|
|
|
|
const [showManageMenu, setShowManageMenu] = useState(false)
|
|
const [showMoreMenu, setShowMoreMenu] = useState(false)
|
|
const [showFundWalletModal, setShowFundWalletModal] = useState(false)
|
|
const [showWithdrawModal, setShowWithdrawModal] = useState(false)
|
|
|
|
return (
|
|
<>
|
|
{firstCreditAccounts.map((account) => (
|
|
<Button
|
|
key={account}
|
|
className={classNames(
|
|
'cursor-pointer whitespace-nowrap px-4 text-base hover:text-white',
|
|
selectedAccount === account ? 'text-white' : ' text-white/40',
|
|
)}
|
|
variant='text'
|
|
onClick={() => setSelectedAccount(account)}
|
|
>
|
|
Account {account}
|
|
</Button>
|
|
))}
|
|
<div className='relative'>
|
|
{restCreditAccounts.length > 0 && (
|
|
<>
|
|
<Button
|
|
className='flex items-center px-3 py-3 text-base hover:text-white'
|
|
variant='text'
|
|
onClick={() => setShowMoreMenu(!showMoreMenu)}
|
|
>
|
|
More
|
|
<span className='ml-1 inline-block w-3'>
|
|
<ChevronDownIcon />
|
|
</span>
|
|
</Button>
|
|
<Overlay show={showMoreMenu} setShow={setShowMoreMenu}>
|
|
<div className='flex w-[120px] flex-wrap p-4'>
|
|
{restCreditAccounts.map((account) => (
|
|
<Button
|
|
key={account}
|
|
variant='text'
|
|
className={classNames(
|
|
'w-full whitespace-nowrap py-2 text-sm',
|
|
selectedAccount === account
|
|
? 'text-secondary'
|
|
: 'cursor-pointer text-accent-dark hover:text-secondary',
|
|
)}
|
|
onClick={() => {
|
|
setShowMoreMenu(!showMoreMenu)
|
|
setSelectedAccount(account)
|
|
}}
|
|
>
|
|
Account {account}
|
|
</Button>
|
|
))}
|
|
</div>
|
|
</Overlay>
|
|
</>
|
|
)}
|
|
</div>
|
|
<div className='relative'>
|
|
<Button
|
|
className={classNames(
|
|
'flex items-center px-3 py-3 text-base hover:text-white',
|
|
showManageMenu ? 'text-white' : 'text-white/40',
|
|
)}
|
|
onClick={() => setShowManageMenu(!showManageMenu)}
|
|
variant='text'
|
|
>
|
|
Manage
|
|
<span className='ml-1 inline-block w-3'>
|
|
<ChevronDownIcon />
|
|
</span>
|
|
</Button>
|
|
<Overlay className='-left-[86px]' show={showManageMenu} setShow={setShowManageMenu}>
|
|
<div className='flex w-[274px] flex-wrap'>
|
|
<Text
|
|
size='sm'
|
|
uppercase={true}
|
|
className='w-full px-4 pt-4 text-center text-accent-dark'
|
|
>
|
|
Manage
|
|
</Text>
|
|
<div className='flex w-full justify-between border-b border-b-black/10 p-4'>
|
|
<Button
|
|
className='flex w-[115px] items-center justify-center pl-0 pr-2'
|
|
onClick={() => {
|
|
setShowFundWalletModal(true)
|
|
setShowManageMenu(!showManageMenu)
|
|
}}
|
|
>
|
|
<span className='mr-1 w-3'>
|
|
<ArrowUp />
|
|
</span>
|
|
Fund
|
|
</Button>
|
|
<Button
|
|
className='flex w-[115px] items-center justify-center pl-0 pr-2'
|
|
color='secondary'
|
|
onClick={() => {
|
|
setShowWithdrawModal(true)
|
|
setShowManageMenu(!showManageMenu)
|
|
}}
|
|
>
|
|
<span className='mr-1 w-3'>
|
|
<ArrowDown />
|
|
</span>
|
|
Withdraw
|
|
</Button>
|
|
</div>
|
|
<div className='flex w-full flex-wrap p-4'>
|
|
<Button
|
|
className='w-full cursor-pointer whitespace-nowrap py-2 text-left text-sm text-accent-dark hover:text-secondary'
|
|
variant='text'
|
|
onClick={() => {
|
|
setShowManageMenu(!showManageMenu)
|
|
createCreditAccount()
|
|
}}
|
|
>
|
|
Create Account
|
|
</Button>
|
|
<Button
|
|
className='w-full cursor-pointer whitespace-nowrap py-2 text-left text-sm text-accent-dark hover:text-secondary'
|
|
variant='text'
|
|
onClick={() => {
|
|
setShowManageMenu(!showManageMenu)
|
|
deleteCreditAccount()
|
|
}}
|
|
>
|
|
Close Account
|
|
</Button>
|
|
<Button
|
|
className='w-full cursor-pointer whitespace-nowrap py-2 text-left text-sm text-accent-dark hover:text-secondary'
|
|
variant='text'
|
|
onClick={() => alert('TODO')}
|
|
>
|
|
Transfer Balance
|
|
</Button>
|
|
<Button
|
|
className='w-full cursor-pointer whitespace-nowrap py-2 text-left text-sm text-accent-dark hover:text-secondary'
|
|
variant='text'
|
|
onClick={() => alert('TODO')}
|
|
>
|
|
Rearrange
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</Overlay>
|
|
</div>
|
|
<FundAccountModal open={showFundWalletModal} setOpen={setShowFundWalletModal} />
|
|
<WithdrawModal open={showWithdrawModal} setOpen={setShowWithdrawModal} />
|
|
</>
|
|
)
|
|
}
|
|
|
|
export default SubAccountNavigation
|