import { Button, MenuItem, ShimmerCircle, Stack, prettyFormatNumber, } from '@biom3/react'; import { useTranslation } from 'react-i18next'; import { calculateCryptoToFiat, tokenValueFormat, } from '../../../lib/utils'; import { TokenImage } from '../../../components/TokenImage/TokenImage'; import { FundingBalance } from '../types'; import { useSaleContext } from '../context/SaleContextProvider'; type SelectCoinDropdownProps = { balance: FundingBalance; conversions: Map; isFreeMint: boolean; canOpen: boolean; onClick: () => void; onProceed: (balance: FundingBalance) => void; loading?: boolean; priceDisplay?: boolean; }; export function SelectCoinDropdown({ balance, conversions, isFreeMint, canOpen, onClick, onProceed, loading, priceDisplay, }: SelectCoinDropdownProps) { const { t } = useTranslation(); const { environment, config: { theme }, } = useSaleContext(); const { token, userBalance, fundsRequired } = balance.fundingItem; const fiatAmount = calculateCryptoToFiat( fundsRequired.formattedAmount, token.symbol, conversions, '', ); const balanceFiatAmount = calculateCryptoToFiat( userBalance.formattedBalance, token.symbol, conversions, '', ); const displayDropdown = !isFreeMint; return ( {displayDropdown && ( )} /> {t(`views.ORDER_SUMMARY.orderReview.payWith.${balance.type}`, { symbol: token.symbol, })} {`${t('views.ORDER_SUMMARY.orderReview.balance', { amount: prettyFormatNumber( tokenValueFormat(userBalance.formattedBalance), ), })} ${ balanceFiatAmount ? t('views.ORDER_SUMMARY.currency.fiat', { amount: prettyFormatNumber( tokenValueFormat(balanceFiatAmount), ), }) : '' }`} {priceDisplay && ( )} {canOpen && ( )} {!canOpen && loading && } )} ); }