import { type InputHTMLAttributes, forwardRef } from "react";
import { clsx } from "clsx";
interface InputProps extends InputHTMLAttributes<HTMLInputElement> {
label?: string;
error?: string;
}
export const Input = forwardRef<HTMLInputElement, InputProps>(
({ label, error, className, id, ...props }, ref) => {
const inputId = id ?? label?.toLowerCase().replace(/\s+/g, "-");
return (
<div className="flex flex-col gap-1.5">
{label && (
<label htmlFor={inputId} className="text-[13px] font-medium text-[#1d1d1f]">
{label}
</label>
)}
<input
ref={ref}
id={inputId}
className={clsx(
"h-10 w-full rounded-[10px] border border-black/[0.12] bg-white px-3 text-[14px] text-[#1d1d1f]",
"placeholder:text-[#6e6e73] outline-none transition-all duration-150",
"focus:border-[#0071e3] focus:ring-3 focus:ring-[#0071e3]/15",
"disabled:opacity-50 disabled:cursor-not-allowed",
error && "border-red-400 focus:border-red-400 focus:ring-red-400/15",
className,
)}
{...props}
/>
{error && <p className="text-[12px] text-red-500">{error}</p>}
</div>
);
},
);
Input.displayName = "Input";