import { useRef } from 'react' import { CHAINS_BY_ID } from '@constants/chains' import Image from 'next/image' import { getHoverStyleForButton, getActiveStyleForButton } from '@/styles/hover' import { usePortfolioState } from '@/slices/portfolio/hooks' import { TokenAndBalance, sortTokensByBalanceDescending, } from '@/utils/actions/fetchPortfolioBalances' import { joinClassNames } from '@/utils/joinClassNames' import { NewTag } from '@/components/ui/NewTag' export const SelectSpecificNetworkButton = ({ itemChainId, onClick, dataId, isOrigin, isSelected, isActive, }: { itemChainId: number onClick: () => void dataId: string isOrigin: boolean isSelected: boolean isActive: boolean }) => { const ref = useRef(null) const chain = CHAINS_BY_ID[itemChainId] const buttonClasses = { other: 'whitespace-nowrap', grid: 'grid gap-0.5', space: 'pl-2 pr-1.5 py-2.5 w-full', border: 'border border-transparent', transition: 'transition-all duration-75', hover: getHoverStyleForButton(chain?.color), activeStyle: isActive || isSelected ? getActiveStyleForButton(chain?.color) : '', } return ( ) } function ButtonContent({ chainId, isOrigin, }: { chainId: number isOrigin: boolean }) { const chain = CHAINS_BY_ID[chainId] const { balances } = usePortfolioState() const balanceTokens = balances?.[chainId] && sortTokensByBalanceDescending( balances[chainId].filter((bt) => bt.balance > 0n) ) return ( chain && (
Switch Network {chain.name} {chain.isNew && } {isOrigin && balanceTokens?.length > 0 && ( )}
) ) } const ChainTokens = ({ balanceTokens, }: { balanceTokens: TokenAndBalance[] }) => { const max = balanceTokens?.length === 2 ? 2 : 1 const remainder: number = balanceTokens && balanceTokens.length - max > 0 ? balanceTokens.length - max : 0 return ( {balanceTokens?.slice(0, max).map((token: TokenAndBalance) => { return })} {remainder > 0 && (
{remainder}
    {balanceTokens?.slice(max).map((token: TokenAndBalance) => (
  • {token.token.symbol}
  • ))}
)}
) } function HoverIcon({ token }) { const symbol = token.token.symbol const src = token.token.icon const parsedBalance = token?.parsedBalance return ( {`${symbol}
{parsedBalance} {symbol}
) }