{"version":3,"file":"index.cjs","sources":["../../../../src/components/InputWrapper/InputWrapper.tsx"],"sourcesContent":["import { Error, FormElementContainer, FormRoot } from '@/components/FormContainer';\nimport { Label } from '@/components/Label';\nimport { cn, cva } from '@/lib/cva';\nimport {\n  ButtonHTMLAttributes,\n  ComponentProps,\n  ComponentPropsWithRef,\n  ElementType,\n  HTMLAttributes,\n  InputHTMLAttributes,\n  ReactNode,\n  SVGProps,\n  TextareaHTMLAttributes,\n  forwardRef,\n} from 'react';\nimport styles from './InputWrapper.module.css';\n\nconst wrapperVariants = cva(styles.wrapper, {\n  variants: {\n    error: {\n      true: styles.wrapper_error,\n      false: '',\n    },\n    resize: {\n      none: '',\n      vertical: styles.wrapper_resize_vertical,\n      horizontal: styles.wrapper_resize_horizontal,\n      both: styles.wrapper_resize_both,\n    },\n  },\n  defaultVariants: {\n    error: false,\n    resize: 'none',\n  },\n});\n\nexport interface WrapperProps {\n  className?: string;\n  id: string;\n  label?: ReactNode;\n  labelColor?: string;\n  error?: ReactNode;\n  disabled?: boolean;\n  children: ReactNode;\n  orientation?: 'vertical' | 'horizontal';\n  dir?: 'start' | 'end';\n  resize?: 'none' | 'vertical' | 'horizontal' | 'both';\n}\n\nexport const InputWrapper = ({\n  className,\n  id,\n  label = '',\n  labelColor,\n  error,\n  disabled,\n  children,\n  orientation,\n  dir,\n  resize = 'none',\n}: WrapperProps) => {\n  return (\n    <FormRoot\n      $orientation={orientation}\n      $dir={dir}\n      $addLabelPadding\n    >\n      <FormElementContainer>\n        <div\n          data-resize={resize}\n          className={cn(\n            wrapperVariants({ error: !!error, resize }),\n            disabled && styles.disabled,\n            className\n          )}\n        >\n          {children}\n        </div>\n        {!!error && error !== true && <Error>{error}</Error>}\n      </FormElementContainer>\n      {label && (\n        <Label\n          htmlFor={id}\n          disabled={disabled}\n          error={!!error}\n          style={labelColor ? { color: labelColor } : undefined}\n        >\n          {label}\n        </Label>\n      )}\n    </FormRoot>\n  );\n};\n\nconst inputVariants = cva(styles.input, {\n  variants: {\n    hasStartContent: {\n      true: styles['input_has-start-content'],\n      false: '',\n    },\n    hasEndContent: {\n      true: styles['input_has-end-content'],\n      false: '',\n    },\n  },\n  defaultVariants: {\n    hasStartContent: false,\n    hasEndContent: false,\n  },\n});\n\ninterface InputElementOwnProps {\n  $hasStartContent?: boolean;\n  $hasEndContent?: boolean;\n  /** Render as a different element/component. */\n  as?: ElementType;\n}\n\nexport type InputElementProps<T extends ElementType = 'input'> = Omit<\n  ComponentProps<T>,\n  keyof InputElementOwnProps\n> &\n  InputElementOwnProps;\n\ntype InputElementPolymorphicComponent = <T extends ElementType = 'input'>(\n  props: InputElementProps<T>\n) => ReactNode;\n\nconst _InputElement = <T extends ElementType = 'input'>(\n  { as, $hasStartContent, $hasEndContent, className, ...props }: InputElementProps<T>,\n  ref: ComponentPropsWithRef<T>['ref']\n) => {\n  const Component = as ?? 'input';\n  return (\n    <Component\n      ref={ref}\n      {...props}\n      className={cn(\n        inputVariants({\n          hasStartContent: !!$hasStartContent,\n          hasEndContent: !!$hasEndContent,\n        }),\n        className\n      )}\n    />\n  );\n};\n\nexport const InputElement: InputElementPolymorphicComponent = forwardRef(_InputElement);\n\nexport interface NumberInputElementProps extends InputHTMLAttributes<HTMLInputElement> {\n  $hasStartContent?: boolean;\n  $hasEndContent?: boolean;\n  $hideControls?: boolean;\n}\n\nexport const NumberInputElement = forwardRef<HTMLInputElement, NumberInputElementProps>(\n  ({ $hideControls, $hasStartContent, $hasEndContent, className, ...props }, ref) => (\n    <input\n      ref={ref}\n      {...props}\n      className={cn(\n        inputVariants({\n          hasStartContent: !!$hasStartContent,\n          hasEndContent: !!$hasEndContent,\n        }),\n        $hideControls && styles['number-input_hide-controls'],\n        className\n      )}\n    />\n  )\n);\n\nexport const TextAreaElement = forwardRef<\n  HTMLTextAreaElement,\n  TextareaHTMLAttributes<HTMLTextAreaElement>\n>(({ className, ...props }, ref) => (\n  <textarea\n    ref={ref}\n    {...props}\n    className={cn(styles.textarea, className)}\n  />\n));\n\nexport const IconButton = forwardRef<\n  HTMLButtonElement,\n  ButtonHTMLAttributes<HTMLButtonElement>\n>(({ className, ...props }, ref) => (\n  <button\n    ref={ref}\n    type=\"button\"\n    {...props}\n    className={cn(styles['icon-button'], className)}\n  />\n));\n\nexport const IconWrapper = ({ className, ...props }: SVGProps<SVGSVGElement>) => (\n  <svg\n    {...props}\n    className={cn(styles['icon-wrapper'], className)}\n  />\n);\n\nexport const InputStartContent = ({\n  className,\n  ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n  <div\n    {...props}\n    className={cn(styles['start-content'], className)}\n  />\n);\n\nexport const InputEndContent = ({\n  className,\n  ...props\n}: HTMLAttributes<HTMLDivElement>) => (\n  <div\n    {...props}\n    className={cn(styles['end-content'], className)}\n  />\n);\n"],"names":["cva","styles","jsxs","FormRoot","FormElementContainer","jsx","cn","Error","Label","forwardRef"],"mappings":"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"}