{"version":3,"sources":["../../../../src/components/molecules/TextAreaField/TextAreaField.tsx"],"names":["cva","forwardRef","jsxs","twMerge","jsx","TextArea","Label","Typography","useFormContext"],"mappings":"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","file":"TextAreaField.cjs","sourcesContent":["import { cva, type VariantProps } from \"class-variance-authority\";\nimport { TextArea, type TextAreaProps } from \"../../atoms/TextArea/TextArea\";\nimport { Label } from \"../../atoms/Label/Label\";\nimport { twMerge } from \"tailwind-merge\";\nimport { Typography } from \"../../atoms/Typography/Typography\";\nimport { useFormContext, type RegisterOptions } from \"react-hook-form\";\nimport { forwardRef } from \"react\";\n\ntype TextAreaFieldProps = Omit<TextAreaProps, \"className\"> & {\n  label?: string;\n  id?: string;\n  error?: string;\n  hint?: string;\n  className?: string;\n} & VariantProps<typeof textAreaFieldVariants>;\n\nconst textAreaFieldVariants = cva(\"relative\", {\n  variants: {\n    labelBehavior: {\n      floating: null,\n      placeholder: null,\n    },\n    textAreaSize: {\n      sm: null,\n      md: null,\n      lg: null,\n    },\n  },\n  defaultVariants: {\n    textAreaSize: \"sm\",\n    labelBehavior: \"floating\",\n  },\n});\n\nconst textAreaVariants = cva(null, {\n  variants: {\n    labelBehavior: {\n      floating: \"peer\",\n      placeholder: \"\",\n    },\n    textAreaSize: {\n      sm: null,\n      md: null,\n      lg: null,\n    },\n  },\n  compoundVariants: [\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"sm\",\n      class: `pt-5`,\n    },\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"md\",\n      class: \"pt-6\",\n    },\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"lg\",\n      class: \"pt-7\",\n    },\n  ],\n  defaultVariants: {\n    labelBehavior: \"floating\",\n    textAreaSize: \"sm\",\n  },\n});\n\nconst labelVariants = cva(\"\", {\n  variants: {\n    labelBehavior: {\n      floating:\n        \"pointer-events-none absolute transition-all text-font-secondary \\\n        left-[0.55rem] top-4 \\\n        peer-focus:top-1 peer-[&:not(:placeholder-shown)]:top-1 leading-none\",\n      horizontal: \"\",\n      placeholder: \"\",\n    },\n    textAreaSize: { sm: null, md: null, lg: null },\n  },\n  compoundVariants: [\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"sm\",\n      class: `\n        peer-placeholder-shown:text-sm\n        peer-focus:text-[0.625rem]\n        peer-[&:not(:placeholder-shown)]:text-[0.625rem]\n        peer-focus:translate-y-0.5\n        peer-[&:not(:placeholder-shown)]:translate-y-0.5\n      `,\n    },\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"md\",\n      class: `\n        peer-placeholder-shown:text-base\n        peer-focus:text-xs\n        peer-[&:not(:placeholder-shown)]:text-xs\n        peer-focus:translate-y-1\n        peer-[&:not(:placeholder-shown)]:translate-y-1\n      `,\n    },\n    {\n      labelBehavior: \"floating\",\n      textAreaSize: \"lg\",\n      class: `\n        peer-placeholder-shown:text-lg\n        peer-focus:text-sm\n        peer-[&:not(:placeholder-shown)]:text-sm\n        peer-focus:translate-y-1\n        peer-[&:not(:placeholder-shown)]:translate-y-1\n      `,\n    },\n  ],\n  defaultVariants: { textAreaSize: \"sm\" },\n});\n\nexport const TextAreaField = forwardRef<\n  HTMLTextAreaElement,\n  TextAreaFieldProps\n>(\n  (\n    {\n      textAreaSize,\n      labelBehavior,\n      label,\n      id,\n      error,\n      hint,\n      className,\n      ...props\n    },\n    ref\n  ) => {\n    const isFloating = (labelBehavior ?? \"floating\") === \"floating\";\n    return (\n      <div\n        className={twMerge(\n          textAreaFieldVariants({ textAreaSize, labelBehavior }),\n          className\n        )}\n      >\n        <TextArea\n          id={id}\n          ref={ref}\n          textAreaSize={textAreaSize}\n          appearance={error ? \"error\" : undefined}\n          placeholder={isFloating ? \" \" : label}\n          className={textAreaVariants({ textAreaSize, labelBehavior })}\n          {...props}\n        />\n        <Label\n          htmlFor={id}\n          className={twMerge(\n            labelVariants({ textAreaSize, labelBehavior }),\n            !isFloating && \"hidden\"\n          )}\n        >\n          {label}\n        </Label>\n        {hint && !error && (\n          <Typography className=\"text-xs absolute mt-0.5\" color=\"secondary\">\n            {hint}\n          </Typography>\n        )}\n        {error && (\n          <Typography color=\"danger\" className=\"text-xs absolute mt-0.5\">\n            {error}\n          </Typography>\n        )}\n      </div>\n    );\n  }\n);\n\nTextAreaField.displayName = \"TextAreaField\";\n\nexport type FormTextAreaFieldProps = TextAreaFieldProps & {\n  name: string;\n  registerOptions?: RegisterOptions;\n};\n\nexport function FormTextAreaField({\n  name,\n  registerOptions = {},\n  ...props\n}: FormTextAreaFieldProps) {\n  const { register, getFieldState, formState } = useFormContext();\n\n  const { error } = getFieldState(name, formState);\n\n  return (\n    <TextAreaField\n      {...props}\n      {...register(name, registerOptions)}\n      error={error?.message}\n    />\n  );\n}\n"]}