UNPKG

@mvp-rockets/namma-generator

Version:

A generator to generate mvp-rockets projects

100 lines (91 loc) 2.4 kB
import PropTypes from "prop-types"; const InputBox = ({ isError, errorMessage, className, variant, disabled, type, register, id, dbName, isLabel, labelFor, labelText, labelClass, placeholder, ...otherProps }) => { const inputSizeStyles = { Default: "px-4 py-[10px]", Small: "p-2", Large: "px-4 py-3", }; const inputDisabledClass = disabled ? "cursor-not-allowed disabled:bg-neutral-100 disabled:border-neutral-100 disabled:placeholder:text-error-500" : "cursor-pointer"; const inputBorderStyle = isError ? "border-error-100 hover:border-error-100 focus:border-error-100" : "border-neutral-300 hover:border-neutral-500 focus:border-primary-900"; return ( <div className="relative"> {isLabel && ( <label htmlFor={labelFor} className={`text-neutral-900 text-base leading-6 font-normal block pb-2 ${labelClass}`} > {labelText} </label> )} <input type={type} placeholder={placeholder} {...(register && { ...register(dbName) })} className={` ${inputSizeStyles[variant]} w-full border bg-white rounded-lg outline-none placeholder:text-neutral-400 text-neutral-900 text-base font-normal leading-[21px] appearance-none ${inputDisabledClass} ${inputBorderStyle} select-none ${className} `} disabled={disabled} {...otherProps} /> {isError && ( <span className={`text-error-100 pl-0.5 text-sm pt-2 font-normal leading-[21px] select-none`} > {errorMessage} </span> )} </div> ); }; InputBox.defaultProps = { isError: false, className: "", variant: "Default", disabled: false, isLabel: false, type: "text", }; InputBox.propTypes = { id: PropTypes.string, dbName: PropTypes.string, type: PropTypes.string, placeholder: PropTypes.string, disableClass: PropTypes.string, baseClasses: PropTypes.string, className: PropTypes.string, variant: PropTypes.oneOf(["Default", "Small", "Large"]), disabled: PropTypes.bool, isError: PropTypes.bool, errorMessage: PropTypes.string, register: PropTypes.func, isLabel: PropTypes.bool, labelText: PropTypes.string, labelFor: PropTypes.string, labelClass: PropTypes.string, }; export default InputBox;