| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364 | 
							- '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<Props> = ({
 
-   value,
 
-   onChange,
 
-   placeholder = '',
 
-   isNumber = false,
 
- }) => {
 
-   const handleChange = useCallback((e: React.ChangeEvent<HTMLInputElement>) => {
 
-     const value = e.target.value
 
-     if (isNumber) {
 
-       let numberValue = Number.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 (
 
-     <input
 
-       type={isNumber ? 'number' : 'text'}
 
-       {...otherOption}
 
-       value={value}
 
-       onChange={handleChange}
 
-       className='system-xs-regular focus:bg-components-inout-border-active flex h-8 w-full rounded-lg border border-transparent
 
-       bg-components-input-bg-normal p-2 text-components-input-text-filled
 
-         caret-[#295eff] placeholder:text-components-input-text-placeholder hover:border
 
-         hover:border-components-input-border-hover hover:bg-components-input-bg-hover focus:border focus:border-components-input-border-active
 
-         focus:shadow-xs focus:shadow-shadow-shadow-3
 
-         focus-visible:outline-none'
 
-       placeholder={placeholder}
 
-     />
 
-   )
 
- }
 
- export default React.memo(Input)
 
 
  |