import { useCallback, useState } from 'react' import Modal from 'components/Modals/Modal' import AccountSummaryInModal from 'components/account/AccountSummary/AccountSummaryInModal' import Button from 'components/common/Button' import Card from 'components/common/Card' import Divider from 'components/common/Divider' import { ArrowRight } from 'components/common/Icons' import Text from 'components/common/Text' import TokenInputWithSlider from 'components/common/TokenInput/TokenInputWithSlider' import AssetImage from 'components/common/assets/AssetImage' import { BN_ZERO } from 'constants/math' import { BNCoin } from 'types/classes/BNCoin' import { byDenom } from 'utils/array' import { BN } from 'utils/helpers' interface Props { account: Account asset: Asset title: string coinBalances: BNCoin[] actionButtonText: string contentHeader?: JSX.Element onClose: () => void onChange: (value: BigNumber) => void onAction: (value: BigNumber, isMax: boolean) => void onDebounce: () => void } export default function AssetAmountSelectActionModal(props: Props) { const { account, asset, title, coinBalances, actionButtonText, contentHeader = null, onClose, onChange, onAction, onDebounce, } = props const [amount, setAmount] = useState(BN_ZERO) const maxAmount = BN(coinBalances.find(byDenom(asset.denom))?.amount ?? 0) const handleAmountChange = useCallback( (value: BigNumber) => { setAmount(value) onChange(value) }, [onChange], ) const handleActionClick = useCallback(() => { onAction(amount, amount.isEqualTo(maxAmount)) }, [amount, maxAmount, onAction]) return ( {title} } headerClassName='gradient-header pl-2 pr-2.5 py-2.5 border-b-white/5 border-b' contentClassName='flex flex-col min-h-[400px]' > {contentHeader}
) }