34 lines
925 B
TypeScript
34 lines
925 B
TypeScript
import React, {
|
|
FC, HTMLInputTypeAttribute,
|
|
ReactElement
|
|
} from "react"
|
|
|
|
const Field: FC<FieldProps> = ({children, type = 'text', className = '', ...props}) => {
|
|
|
|
return <div className="form-control">
|
|
{children && <label className="block text-gray-900 dark:text-gray-200"
|
|
htmlFor={props.id ?? undefined}>
|
|
{children}
|
|
</label>}
|
|
<input className={`${className} mt-2 w-full rounded dark:bg-gray-700`}
|
|
type={type}
|
|
{...props}/>
|
|
<div className={`error-message`} />
|
|
</div>
|
|
}
|
|
|
|
export default Field
|
|
|
|
interface FieldProps {
|
|
children?: ReactElement|string,
|
|
type?: HTMLInputTypeAttribute,
|
|
name: string,
|
|
id?: string,
|
|
value?: string|number|undefined,
|
|
placeholder?: string,
|
|
autoFocus?: boolean,
|
|
className?: string,
|
|
step?: string,
|
|
onChange: (event: React.ChangeEvent<HTMLInputElement>) => void,
|
|
}
|