import React from "react"; import { FontAwesomeIcon } from "@fortawesome/react-fontawesome"; import { faCaretRight } from "@fortawesome/free-solid-svg-icons/faCaretRight"; import AddressHighlighter from "./components/AddressHighlighter"; import ValueHighlighter from "./components/ValueHighlighter"; import DecoratedAddressLink from "./components/DecoratedAddressLink"; import FormattedBalance from "./components/FormattedBalance"; import { AddressContext, TokenMetas, TokenTransfer, TransactionData, } from "./types"; type TokenTransferItemProps = { t: TokenTransfer; txData: TransactionData; tokenMetas: TokenMetas; }; const TokenTransferItem: React.FC<TokenTransferItemProps> = ({ t, txData, tokenMetas, }) => ( <div className="flex items-baseline space-x-2 px-2 py-1 truncate hover:bg-gray-100"> <span className="text-gray-500"> <FontAwesomeIcon icon={faCaretRight} size="1x" /> </span> <div className="grid grid-cols-5 gap-x-1"> <div className="flex space-x-1"> <span className="font-bold">From</span> <AddressHighlighter address={t.from}> <DecoratedAddressLink address={t.from} addressCtx={AddressContext.FROM} txFrom={t.from === txData.from} txTo={t.from === txData.to} /> </AddressHighlighter> </div> <div className="flex space-x-1"> <span className="font-bold">To</span> <AddressHighlighter address={t.to}> <DecoratedAddressLink address={t.to} addressCtx={AddressContext.TO} txFrom={t.to === txData.from} txTo={t.to === txData.to} /> </AddressHighlighter> </div> <div className="col-span-3 flex space-x-1"> <span className="font-bold">For</span> <span> <ValueHighlighter value={t.value}> <FormattedBalance value={t.value} decimals={tokenMetas[t.token].decimals} /> </ValueHighlighter> </span> <AddressHighlighter address={t.token}> <DecoratedAddressLink address={t.token} text={ tokenMetas[t.token] ? `${tokenMetas[t.token].name} (${tokenMetas[t.token].symbol})` : "" } tokenMeta={tokenMetas[t.token]} /> </AddressHighlighter> </div> </div> </div> ); export default React.memo(TokenTransferItem);