// @flow import React from 'react'; import classnames from 'classnames'; import { formatCredits, formatFullPrice } from 'util/format-credits'; type Props = { amount: number, precision: number, showFree: boolean, showFullPrice: boolean, showPlus: boolean, isEstimate?: boolean, large?: boolean, showLBC?: boolean, fee?: boolean, badge?: boolean, }; class CreditAmount extends React.PureComponent { static defaultProps = { precision: 2, showFree: false, showFullPrice: false, showPlus: false, showLBC: true, }; render() { const { amount, precision, showFullPrice, showFree, showPlus, large, isEstimate, fee, showLBC, badge, } = this.props; const minimumRenderableAmount = 10 ** (-1 * precision); const fullPrice = formatFullPrice(amount, 2); const isFree = parseFloat(amount) === 0; let formattedAmount; if (showFullPrice) { formattedAmount = fullPrice; } else { formattedAmount = amount > 0 && amount < minimumRenderableAmount ? `<${minimumRenderableAmount}` : formatCredits(amount, precision); } let amountText; if (showFree && isFree) { amountText = __('FREE'); } else { amountText = formattedAmount; if (showPlus && amount > 0) { amountText = `+${amountText}`; } if (showLBC) { amountText = `${amountText} ${__('LBC')}`; } if (fee) { amountText = `${amountText} ${__('fee')}`; } } return ( 0, 'badge--free': badge && isFree, 'badge--large': large, })} > {amountText} {isEstimate ? ( * ) : null} ); } } export default CreditAmount;