import { debounce } from 'lodash' import React, { useCallback } from 'react' import { NumericFormat } from 'react-number-format' import { joinClassNames } from '@/utils/joinClassNames' import LoadingDots from './tailwind/LoadingDots' interface AmountInputTypes { inputRef?: React.RefObject disabled?: boolean isLoading?: boolean showValue: string handleFromValueChange?: (event: React.ChangeEvent) => void setIsTyping?: (isTyping: boolean) => void className?: string } export function AmountInput({ inputRef, disabled = false, isLoading = false, showValue, handleFromValueChange, setIsTyping, className, }: AmountInputTypes) { const debouncedSetIsTyping = useCallback( debounce((value: boolean) => setIsTyping?.(value), 600), [setIsTyping] ) const handleInputChange = (event: React.ChangeEvent) => { setIsTyping?.(true) debouncedSetIsTyping(false) handleFromValueChange?.(event) } const inputClassNames = { unset: 'bg-transparent border-none p-0', layout: 'w-full', placeholder: 'placeholder:text-zinc-500 placeholder:dark:text-zinc-400', font: 'text-xl md:text-2xl font-medium', focus: 'focus:outline-none focus:ring-0 focus:border-none', custom: className, loading: isLoading ? 'invisible' : '', } return (
{isLoading && }
) }