/// import { action } from '@storybook/addon-actions'; import type { StoryFn } from '@storybook/react'; import type { BN } from 'fuels'; import { bn } from 'fuels'; import { useEffect, useState } from 'react'; import { Box } from '../Box'; import { Stack } from '../Box/Stack'; import { Button } from '../Button'; import { Text } from '../Text'; import { InputAmount } from './InputAmount'; export default { component: InputAmount, title: 'Form/InputAmount', argTypes: { hiddenBalance: { defaultValue: false, control: 'boolean', }, hiddenMaxButton: { defaultValue: false, control: 'boolean', }, }, }; const BALANCE = bn.parseUnits('1.570000044'); const Template: StoryFn = (args) => { const [amount, setAmount] = useState(bn()); const { units } = args || {}; const valueOne = bn.parseUnits('1', units).add(11); const valueTwo = bn.parseUnits('1', units); // Log onChange amount useEffect(() => { if (amount) { action('onChange')(amount.formatUnits()); } }, [amount]); return ( Amount: {amount?.format({ precision: units, units })} ); }; export const Usage = Template.bind({}); Usage.args = { label: 'Amount', balance: BALANCE, }; export const EthUnits = Template.bind({}); EthUnits.args = { label: 'Amount', balance: bn.parseUnits('1.570000044', 18), units: 18, }; export const NoBalance = Template.bind({}); NoBalance.args = { label: 'Amount', balance: undefined, }; export const NoAction = Template.bind({}); NoAction.args = { label: 'Amount', hiddenBalance: true, hiddenMaxButton: true, }; export const Asset = Template.bind({}); Asset.args = { label: 'Amount', balance: BALANCE, asset: { name: 'ETH', imageUrl: './assets/eth.svg', }, onClickAsset: undefined, }; export const AssetTooltip = Template.bind({}); AssetTooltip.args = { label: 'Amount', balance: BALANCE, asset: { name: 'ETH', imageUrl: './assets/eth.svg', }, assetTooltip: 'Lorem Ipsum', onClickAsset: undefined, }; export const AssetOnClick = Template.bind({}); AssetOnClick.args = { label: 'Amount', balance: BALANCE, asset: { name: 'ETH', imageUrl: './assets/eth.svg', }, // eslint-disable-next-line @typescript-eslint/no-empty-function onClickAsset: () => {}, }; export const AssetNoImage = Template.bind({}); AssetNoImage.args = { label: 'Amount', balance: BALANCE, asset: { name: 'ETH', address: '0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48', }, onClickAsset: undefined, }; export const Loader = () => ( );