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 (
)
}