import { Sticker, Pile, FramedImage, Heading, Body, Stack, } from '@biom3/react'; import { PurchaseItem } from '@imtbl/checkout-sdk'; import { useContext, useEffect, useState } from 'react'; import { CryptoFiatContext } from '../../../context/crypto-fiat-context/CryptoFiatContext'; import { PurchaseContext } from '../context/PurchaseContext'; import { calculateCryptoToFiat } from '../../../lib/utils'; interface PurchaseItemHeroProps { items: PurchaseItem[]; } export function PurchaseItemHero({ items }: PurchaseItemHeroProps) { const { purchaseState: { quote } } = useContext(PurchaseContext); const { cryptoFiatState: { conversions } } = useContext(CryptoFiatContext); const [detailsLoading, setDetailsLoading] = useState(true); const [fiatPrice, setFiatPrice] = useState(undefined); const item = items[0] ?? null; const totalQty = items?.reduce((sum, purchaseItem: PurchaseItem) => sum + purchaseItem.qty, 0) || 0; useEffect(() => { if (!quote?.totalCurrencyAmount || !conversions) return; const fiatPriceConversion = calculateCryptoToFiat( String(quote.totalCurrencyAmount), quote.currency.name, conversions, ); setFiatPrice(fiatPriceConversion); setDetailsLoading(false); }, [quote, conversions]); return ( item && ( {totalQty > 1 ? ( )} sx={{ w: 'base.spacing.x33', h: 'base.spacing.x33', mb: 'base.spacing.x4', }} emphasized /> ) : ( )} sx={{ w: 'base.spacing.x33', h: 'base.spacing.x33', mb: 'base.spacing.x4', }} /> )} {item.name} {detailsLoading ? ( <> ) : ( <> {fiatPrice && ( USD $ {fiatPrice} )} {quote?.totalCurrencyAmount && ( {quote.currency.name} {' '} {quote.totalCurrencyAmount} )} )} ) ); }