Spaces:
Build error
Build error
Workflow-Engine
/
web
/app
/components
/header
/account-setting
/model-provider-page
/model-modal
/Input.tsx
import type { FC } from 'react' | |
import { CheckCircle } from '@/app/components/base/icons/src/vender/solid/general' | |
type InputProps = { | |
value?: string | |
onChange: (v: string) => void | |
onFocus?: () => void | |
placeholder?: string | |
validated?: boolean | |
className?: string | |
disabled?: boolean | |
type?: string | |
min?: number | |
max?: number | |
} | |
const Input: FC<InputProps> = ({ | |
value, | |
onChange, | |
onFocus, | |
placeholder, | |
validated, | |
className, | |
disabled, | |
type = 'text', | |
min, | |
max, | |
}) => { | |
const toLimit = (v: string) => { | |
const minNum = parseFloat(`${min}`) | |
const maxNum = parseFloat(`${max}`) | |
if (!isNaN(minNum) && parseFloat(v) < minNum) { | |
onChange(`${min}`) | |
return | |
} | |
if (!isNaN(maxNum) && parseFloat(v) > maxNum) | |
onChange(`${max}`) | |
} | |
return ( | |
<div className='relative'> | |
<input | |
tabIndex={0} | |
className={` | |
block px-3 w-full h-9 bg-gray-100 text-sm rounded-lg border border-transparent | |
appearance-none outline-none caret-primary-600 | |
hover:border-[rgba(0,0,0,0.08)] hover:bg-gray-50 | |
focus:bg-white focus:border-gray-300 focus:shadow-xs | |
placeholder:text-sm placeholder:text-gray-400 | |
${validated && 'pr-[30px]'} | |
${className} | |
`} | |
placeholder={placeholder || ''} | |
onChange={e => onChange(e.target.value)} | |
onBlur={e => toLimit(e.target.value)} | |
onFocus={onFocus} | |
value={value} | |
disabled={disabled} | |
type={type} | |
min={min} | |
max={max} | |
/> | |
{ | |
validated && ( | |
<div className='absolute top-2.5 right-2.5'> | |
<CheckCircle className='w-4 h-4 text-[#039855]' /> | |
</div> | |
) | |
} | |
</div> | |
) | |
} | |
export default Input | |