'use client' import type { FC } from 'react' import React, { useCallback } from 'react' type Props = { value: string | number onChange: (value: string | number) => void placeholder?: string isNumber?: boolean } const MIN_VALUE = 0 const Input: FC = ({ value, onChange, placeholder = '', isNumber = false, }) => { const handleChange = useCallback((e: React.ChangeEvent) => { const value = e.target.value if (isNumber) { let numberValue = parseInt(value, 10) // integer only if (isNaN(numberValue)) { onChange('') return } if (numberValue < MIN_VALUE) numberValue = MIN_VALUE onChange(numberValue) return } onChange(value) }, [isNumber, onChange]) const otherOption = (() => { if (isNumber) { return { min: MIN_VALUE, } } return { } })() return ( ) } export default React.memo(Input)