import React, { forwardRef } from 'react'; interface InputProps extends React.InputHTMLAttributes { label?: string; error?: string; helperText?: string; fullWidth?: boolean; leftIcon?: React.ReactNode; rightIcon?: React.ReactNode; } export const Input = forwardRef( ( { label, error, helperText, fullWidth = false, leftIcon, rightIcon, className = '', disabled, ...props }, ref ) => { const baseClasses = 'block px-4 py-2 text-base border rounded-lg transition-colors focus:outline-none focus:ring-2 focus:ring-offset-0 disabled:opacity-50 disabled:cursor-not-allowed'; const borderClasses = error ? 'border-error focus:ring-error focus:border-error' : 'border-gray-300 focus:ring-primary focus:border-primary'; const widthClass = fullWidth ? 'w-full' : ''; const inputClasses = `${baseClasses} ${borderClasses} ${widthClass} ${leftIcon ? 'pl-10' : ''} ${rightIcon ? 'pr-10' : ''} ${className}`; return (
{label && ( )}
{leftIcon && (
{leftIcon}
)} {rightIcon && (
{rightIcon}
)}
{error && (

{error}

)} {helperText && !error && (

{helperText}

)}
); } ); Input.displayName = 'Input';