{"version":3,"file":"Input.cjs","sources":["../../../../src/components/Input/Input.tsx"],"sourcesContent":["import { forwardRef, useEffect, useRef } from \"react\";\nimport * as LabelPrimitive from \"@radix-ui/react-label\";\nimport { cva, cx } from \"class-variance-authority\";\nimport { Icon, IconName } from \"../Icon\";\n\nconst inputStyles = cva(\n  [\n    \"flex w-full items-center text-text-high-em\",\n    \"border-outline-med-em\",\n    \"group-has-[:disabled]:cursor-not-allowed group-has-[:disabled]:text-text-disabled group-has-[:disabled]:bg-surface-surface-1 group-has-[:disabled]:shadow-none group-has-[:disabled]:border-transparent\",\n    \"group-has-[:invalid]:shadow-focus-danger\",\n  ],\n  {\n    variants: {\n      size: {\n        sm: \"text-sm space-x-1 px-2 rounded-8 h-8\",\n        md: \"text-[13px] space-x-2 px-3 rounded-[10px] h-9\",\n        lg: \"text-[15px] space-x-3 px-4 rounded-12 h-12\",\n        xl: \"text-[18px] space-x-3 px-4 rounded-16 h-14\",\n      },\n      variant: {\n        secondary:\n          \"bg-surface-surface-smoke-gray text-text-med-em placeholder:text-text-disabled focus-within:shadow-focus-gray\",\n        tertiary:\n          \"bg-surface-primary-base-em-alpha text-text-primary-em placeholder:text-text-primary-med focus-within:shadow-focus-primary\",\n        primary:\n          \"bg-surface-primary-accent-1 text-text-primary-em placeholder:text-text-primary-med focus-within:shadow-focus-primary border border-surface-primary-med-em\",\n        ghost: \"bg-surface-surface-0 text-text-high-em focus-within:shadow-2\",\n      },\n    },\n    defaultVariants: {\n      size: \"md\",\n      variant: \"secondary\",\n    },\n  }\n);\n\nconst inputFieldStyles = cva(\n  [\"bg-[inherit] group-has-[:disabled]:placeholder:text-text-base-em\"],\n  {\n    variants: {\n      variant: {\n        secondary: \"placeholder:text-text-low-em\",\n        primary: \"placeholder:text-text-primary-med-em\",\n        tertiary: \"placeholder:text-text-primary-med-em\",\n        ghost: \"placeholder:text-text-low-em\",\n      },\n    },\n    defaultVariants: { variant: \"secondary\" },\n  }\n);\n\nexport type InputSizeProp = \"sm\" | \"md\" | \"lg\" | \"xl\";\nexport type InputVariantProp = \"secondary\" | \"primary\" | \"tertiary\" | \"ghost\";\n\ninterface InputProps\n  extends Omit<React.InputHTMLAttributes<HTMLInputElement>, \"size\"> {\n  label?: string | undefined | null;\n  message?: string | undefined | null;\n  leftIcon?: IconName | undefined | null;\n  rightIcon?: IconName | undefined | null;\n  size?: InputSizeProp | undefined;\n  variant?: InputVariantProp | undefined;\n  isInvalid?: boolean | undefined | null;\n}\n\nconst iconSize: Record<InputSizeProp, number> = {\n  sm: 14,\n  md: 18,\n  lg: 20,\n  xl: 24,\n};\n\nconst Input = forwardRef<HTMLInputElement, InputProps>(\n  ({\n    className,\n    id,\n    label,\n    message,\n    leftIcon,\n    rightIcon,\n    size = \"md\",\n    variant,\n    isInvalid,\n    ...props\n  }) => {\n    const inputRef = useRef<HTMLInputElement>(null);\n\n    useEffect(() => {\n      if (isInvalid && message) inputRef.current?.setCustomValidity(message);\n      else inputRef.current?.setCustomValidity(\"\");\n    }, [isInvalid, message]);\n\n    return (\n      <div className={cx(\"group\", className)}>\n        {label && (\n          <LabelPrimitive.Root\n            className={cx([\n              \"text-sm text-text-low-em\",\n              \"group-has-[:disabled]:text-text-base-em\",\n            ])}\n            htmlFor={id}\n          >\n            {label}\n          </LabelPrimitive.Root>\n        )}\n        <div\n          className={inputStyles({ size, variant })}\n          onClick={() => {\n            if (inputRef.current) inputRef.current.focus();\n          }}\n          onDoubleClick={() => {\n            if (inputRef.current) inputRef.current.select();\n          }}\n        >\n          {leftIcon && (\n            <Icon\n              size={iconSize[size]}\n              name={leftIcon}\n              className=\"text-text-med-em\"\n            />\n          )}\n          <InputField\n            className={inputFieldStyles({ variant })}\n            ref={inputRef}\n            id={id}\n            {...props}\n          />\n          {rightIcon && (\n            <Icon\n              size={iconSize[size]}\n              name={rightIcon}\n              className=\"text-text-med-em\"\n            />\n          )}\n        </div>\n        {message && (\n          <div\n            className={cx([\n              \"flex space-x-1 mt-2\",\n              \"group-has-[:disabled]:text-text-base-em\",\n              \"group-has-[:invalid]:text-text-danger-high-em\",\n            ])}\n          >\n            <Icon size={14} name=\"info-fill\" />\n            <p className=\"text-sm text-text-med-em group-has-[:disabled]:text-text-base-em\">\n              {message}\n            </p>\n          </div>\n        )}\n      </div>\n    );\n  }\n);\n\nInput.displayName = \"Input\";\n\nconst InputField = forwardRef<\n  HTMLInputElement,\n  React.InputHTMLAttributes<HTMLInputElement>\n>(({ className, ...props }, ref) => {\n  return (\n    <input\n      className={cx(\n        \"focus:outline-none bg-transparent w-full disabled:cursor-not-allowed disabled:text-text-low-em\",\n        className\n      )}\n      ref={ref}\n      {...props}\n    />\n  );\n});\n\nInputField.displayName = \"InputField\";\n\nexport { Input, InputField };\n"],"names":["cva","forwardRef","useRef","useEffect","cx","jsx","LabelPrimitive.Root","jsxs","Icon"],"mappings":"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"}