import React, { forwardRef, ReactNode } from 'react'; import { Box } from './primitives/Box'; import { Stack } from './primitives/Stack'; import { Text } from './Text'; interface InputProps extends React.InputHTMLAttributes { label?: string; icon?: ReactNode; errorMessage?: string; variant?: 'default' | 'error'; } export const Input = forwardRef( ({ label, icon, errorMessage, variant = 'default', className = '', ...props }, ref) => { const isError = variant === 'error' || !!errorMessage; const baseClasses = 'w-full px-4 py-2 bg-deep-graphite border rounded-lg text-white placeholder:text-gray-500 focus:outline-none transition-all duration-150 sm:text-sm'; const variantClasses = isError ? 'border-warning-amber focus:border-warning-amber focus:ring-1 focus:ring-warning-amber' : 'border-charcoal-outline focus:border-primary-blue focus:ring-1 focus:ring-primary-blue'; const classes = `${baseClasses} ${variantClasses} ${icon ? 'pl-11' : ''} ${className}`; return ( {label && ( {label} )} {icon && ( {icon} )} {errorMessage && ( {errorMessage} )} ); } ); Input.displayName = 'Input';