import { Build } from '@mui/icons-material' import { useState } from 'react' import { useTranslation } from 'react-i18next' import { TokenCardInfo, ValenceAccountDisplayProps } from '@dao-dao/types' import { serializeTokenSource } from '@dao-dao/utils' import { ErrorPage } from './error' import { Loader } from './logo' import { TokenLineHeader } from './token' import { Tooltip, TooltipInfoIcon } from './tooltip' export const ValenceAccountDisplay = ({ account, tokens, TokenLine, TreasuryHistoryGraph, ButtonLink, IconButtonLink, configureRebalancerHref, className, }: ValenceAccountDisplayProps) => { const { t } = useTranslation() const valenceAccountRebalancerTargets = account.config?.rebalancer?.targets.map(({ token }) => serializeTokenSource(token) ) || [] // Maps serialized token source to color. const [tokenSourceColorMap, setTokenSourceColorMap] = useState< Record >({}) // Rebalanced tokens const rebalancedTokens = tokens.loading || tokens.errored ? [] : tokens.data.filter(({ token }) => valenceAccountRebalancerTargets.includes(serializeTokenSource(token)) ) // Other tokens const otherTokens = tokens.loading || tokens.errored ? [] : tokens.data.filter((token) => !rebalancedTokens.includes(token)) return (

{t('title.rebalancer')}

{!!configureRebalancerHref && ( )}
{tokens.loading || (!tokens.errored && tokens.updating && tokens.data.length === 0) ? ( ) : tokens.errored ? (
              {tokens.error instanceof Error
                ? tokens.error.message
                : `${tokens.error}`}
            
) : ( tokens.data.length > 0 && ( <> {account.config.rebalancer && ( )}
{account.config.rebalancer && ( <> {rebalancedTokens.map((props, index) => ( ))} {otherTokens.length > 0 && ( <>

{t('title.nonRebalancedTokens')}

)} )} {otherTokens.length > 0 && ( )} {otherTokens.map((props, index) => ( ))} {!!configureRebalancerHref && !account.config.rebalancer && ( {t('button.setUpRebalancer')} )}
) )}
) }