import React, { useContext } from 'react'; import PropTypes from 'prop-types'; import classnames from 'classnames'; import Box from '../../ui/box/box'; import Button from '../../ui/button'; import EditGasFeeButton from '../edit-gas-fee-button/edit-gas-fee-button'; import Typography from '../../ui/typography/typography'; import { ALIGN_ITEMS, BLOCK_SIZES, COLORS, DISPLAY, FLEX_DIRECTION, FONT_WEIGHT, JUSTIFY_CONTENT, TEXT_ALIGN, TYPOGRAPHY, } from '../../../helpers/constants/design-system'; import { I18nContext } from '../../../../.storybook/i18n'; import GasDetailsItem from '../gas-details-item/gas-details-item'; import MultiLayerFeeMessage from '../multilayer-fee-message/multi-layer-fee-message'; import { formatCurrency } from '../../../helpers/utils/confirm-tx.util'; export default function ApproveContentCard({ showHeader = true, symbol, title, showEdit, showAdvanceGasFeeOptions = false, onEditClick, footer, noBorder, supportsEIP1559V2, renderTransactionDetailsContent, renderDataContent, isMultiLayerFeeNetwork, ethTransactionTotal, nativeCurrency, fullTxData, hexTransactionTotal, fiatTransactionTotal, currentCurrency, isSetApproveForAll, isApprovalOrRejection, data, }) { const t = useContext(I18nContext); return ( {showHeader && ( {supportsEIP1559V2 && title === t('transactionFee') ? null : ( <> {symbol} {title} )} {showEdit && (!showAdvanceGasFeeOptions || !supportsEIP1559V2) && ( )} {showEdit && showAdvanceGasFeeOptions && supportsEIP1559V2 && ( )} )} {renderTransactionDetailsContent && (!isMultiLayerFeeNetwork && supportsEIP1559V2 ? ( ) : ( {isMultiLayerFeeNetwork ? ( {t('transactionDetailLayer2GasHeading')} {`${ethTransactionTotal} ${nativeCurrency}`} ) : ( <> {t('feeAssociatedRequest')} {formatCurrency(fiatTransactionTotal, currentCurrency)} {`${ethTransactionTotal} ${nativeCurrency}`} )} ))} {renderDataContent && ( {isSetApproveForAll ? t('functionSetApprovalForAll') : t('functionApprove')} {isSetApproveForAll && isApprovalOrRejection !== undefined ? ( {`${t('parameters')}: ${isApprovalOrRejection}`} ) : null} {data} )} {footer} ); } ApproveContentCard.propTypes = { /** * Whether to show header including icon, transaction fee text and edit button */ showHeader: PropTypes.bool, /** * Symbol icon */ symbol: PropTypes.node, /** * Title to be included in the header */ title: PropTypes.string, /** * Whether to show edit button or not */ showEdit: PropTypes.bool, /** * Whether to show advanced gas fee options or not */ showAdvanceGasFeeOptions: PropTypes.bool, /** * Should open customize gas modal when edit button is clicked */ onEditClick: PropTypes.func, /** * Footer to be shown */ footer: PropTypes.node, /** * Whether to include border-bottom or not */ noBorder: PropTypes.bool, /** * Is enhanced gas fee enabled or not */ supportsEIP1559V2: PropTypes.bool, /** * Whether to render transaction details content or not */ renderTransactionDetailsContent: PropTypes.bool, /** * Whether to render data content or not */ renderDataContent: PropTypes.bool, /** * Is multi-layer fee network or not */ isMultiLayerFeeNetwork: PropTypes.bool, /** * Total sum of the transaction in native currency */ ethTransactionTotal: PropTypes.string, /** * Current native currency */ nativeCurrency: PropTypes.string, /** * Current transaction */ fullTxData: PropTypes.object, /** * Total sum of the transaction converted to hex value */ hexTransactionTotal: PropTypes.string, /** * Total sum of the transaction in fiat currency */ fiatTransactionTotal: PropTypes.string, /** * Current fiat currency */ currentCurrency: PropTypes.string, /** * Is set approve for all or not */ isSetApproveForAll: PropTypes.bool, /** * Whether a current set approval for all transaction will approve or revoke access */ isApprovalOrRejection: PropTypes.bool, /** * Current transaction data */ data: PropTypes.string, };