import { FormControl } from 'components/FormControl' import { AddressInput, NumberInput } from 'components/forms/FormInput' import { useEffect, useId, useMemo } from 'react' import { FaMinus, FaPlus } from 'react-icons/fa' import { useInputState } from './FormInput.hooks' export interface Balance { address: string amount: string } export interface AddressBalancesProps { title: string subtitle?: string isRequired?: boolean entries: [string, Balance][] onAdd: () => void onChange: (key: string, balance: Balance) => void onRemove: (key: string) => void } export function AddressBalances(props: AddressBalancesProps) { const { title, subtitle, isRequired, entries, onAdd, onChange, onRemove } = props return ( {entries.map(([id], i) => ( ))} ) } export interface AddressBalanceProps { id: string isLast: boolean onAdd: AddressBalancesProps['onAdd'] onChange: AddressBalancesProps['onChange'] onRemove: AddressBalancesProps['onRemove'] } export function AddressBalance({ id, isLast, onAdd, onChange, onRemove }: AddressBalanceProps) { const Icon = useMemo(() => (isLast ? FaPlus : FaMinus), [isLast]) const htmlId = useId() const addressState = useInputState({ id: `ib-address-${htmlId}`, name: `ib-address-${htmlId}`, title: `Wallet Address`, }) const amountState = useInputState({ id: `ib-balance-${htmlId}`, name: `ib-balance-${htmlId}`, title: `Balance`, placeholder: '0', }) useEffect(() => { onChange(id, { address: addressState.value, amount: amountState.value, }) }, [addressState.value, amountState.value, id]) return (
) }