'use client'; import React from 'react'; const Input = ({ type = 'text', value, onChange, placeholder = '', label, error, required = false, disabled = false, className = '', description, min, max, step, ...props }) => { const baseInputClassName = `w-full px-[10px] py-[7px] rounded-lg text-[13px] focus:outline-none transition-all duration-[120ms] ease-out disabled:opacity-50 disabled:cursor-not-allowed bg-white border border-neutral-300 text-neutral-900 placeholder-neutral-400 focus:border-neutral-500 focus:ring-1 focus:ring-neutral-500/20 dark:bg-neutral-900/60 dark:border-neutral-700/50 dark:text-white dark:placeholder-neutral-500 dark:focus:border-neutral-600 dark:focus:ring-neutral-600/20 ${ error ? 'border-red-500/50 dark:border-red-500/50' : '' } ${className}`; const handleChange = (e) => { let newValue = e.target.value; // Handle number type conversions if (type === 'number') { // Convert empty string to 0 for numeric inputs to prevent database errors if (newValue === '' || newValue === null || newValue === undefined) { newValue = 0; } else { newValue = parseFloat(newValue); // Handle NaN case if (isNaN(newValue)) { newValue = 0; } } } onChange?.(newValue); }; // Enhanced color input renderer const renderColorInput = () => { return (
); }; return (
{label && ( )} {type === 'color' ? ( renderColorInput() ) : ( )} {error && (

{error}

)} {description && !error && (

{description}

)}
); }; export default Input;