import { formatFiatAmount } from '@/internal/utils/formatFiatAmount'; import { truncateDecimalPlaces } from '@/internal/utils/truncateDecimalPlaces'; import { cn, text } from '@/styles/theme'; import { TokenImage } from '@/token/components/TokenImage'; import { useMemo } from 'react'; import { formatUnits } from 'viem'; import type { TokenBalanceProps } from '../types'; export function TokenBalance({ token, onClick, onActionPress, actionText = 'Max', classNames, 'aria-label': ariaLabel, ...contentProps }: TokenBalanceProps) { if (onClick) { return (
{onActionPress && ( )}
); } return (
{onActionPress && ( )}
); } function TokenBalanceContent({ token, subtitle, showImage = true, onActionPress, tokenSize = 40, classNames, }: TokenBalanceProps) { const formattedFiatValue = useMemo( () => formatFiatAmount({ amount: token.fiatBalance, currency: 'USD', }), [token.fiatBalance], ); const formattedCryptoValue = useMemo( () => truncateDecimalPlaces( formatUnits(BigInt(token.cryptoBalance), token.decimals), 3, ), [token.cryptoBalance, token.decimals], ); return (
{showImage && }
{token.name?.trim()} {`${formattedCryptoValue} ${token.symbol} ${subtitle ?? ''}`}
{!onActionPress && ( {formattedFiatValue} )}
); } function ActionButton({ actionText, onActionPress, className, }: Pick & { className?: string; }) { return ( ); }