import React, { forwardRef } from 'react'; import './Input.css'; const Input = forwardRef(({ type = 'text', label, placeholder, error, success, disabled = false, required = false, icon, iconPosition = 'left', size = 'md', variant = 'default', className = '', helperText, ...props }, ref) => { const baseClasses = 'terra-input'; const sizeClasses = `terra-input--${size}`; const variantClasses = `terra-input--${variant}`; const stateClasses = [ error && 'terra-input--error', success && 'terra-input--success', disabled && 'terra-input--disabled', icon && `terra-input--with-icon-${iconPosition}` ].filter(Boolean).join(' '); const inputClasses = [ baseClasses, sizeClasses, variantClasses, stateClasses, className ].filter(Boolean).join(' '); const inputId = props.id || `input-${Math.random().toString(36).substr(2, 9)}`; return (
{label && ( )}
{icon && iconPosition === 'left' && ( {icon} )} {icon && iconPosition === 'right' && ( {icon} )}
{(error || success || helperText) && (
{error && {error}} {success && {success}} {helperText && !error && !success && ( {helperText} )}
)}
); }); Input.displayName = 'Input'; export default Input;