File size: 1,294 Bytes
6c4e56e | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 | import React from "react";
import { cn } from "../../../lib/utils";
const TextInput = ({
label,
name,
type = "text",
required = false,
textarea = false,
value,
onChange,
error,
className,
...props
}) => {
const inputClasses = cn(
"w-full px-4 py-2 text-sm bg-transparent border-b transition-colors",
error
? "border-b border-red-500 focus:border-b-red-500"
: "border-b border-gray-500 hover:border-b-blue-500 focus:border-b-blue-500 outline-none",
className
);
return (
<div className="space-y-2 mb-6">
<label className="text-sm text-gray-600 block mb-1">
{label}
{required && <span className="text-red-500 ml-1">*</span>}
</label>
{textarea ? (
<textarea
className={inputClasses}
name={name}
required={required}
value={value}
onChange={onChange}
rows={4}
{...props}
/>
) : (
<input
className={inputClasses}
name={name}
type={type}
required={required}
value={value}
onChange={onChange}
{...props}
/>
)}
{error && <p className="text-red-500 text-sm mt-1">{error}</p>}
</div>
);
};
export default TextInput;
|