{"version":3,"sources":["../src/components/inputs/InputWrapper.tsx"],"names":["jsxs","cn","jsx"],"mappings":"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","file":"chunk-7EZBMGEE.cjs","sourcesContent":["import type { ReactNode } from \"react\";\nimport { cn } from \"../../utils/cn\";\nimport type { AffixPosition } from \"./inputs.types\";\nimport type { Size } from \"../../utils/types\";\n\ninterface InputWrapperProps {\n  children: ReactNode;\n  prefix?: ReactNode;\n  suffix?: ReactNode;\n  prefixPosition?: AffixPosition;\n  suffixPosition?: AffixPosition;\n  size?: Size;\n  /** Extra padding className to apply to the input when affixes are \"inside\" */\n  insidePrefixPadding?: string;\n  insideSuffixPadding?: string;\n}\n\n// NOTE: these must be COMPLETE, static class strings. Tailwind only detects\n// utilities it can see verbatim in the source — building the arbitrary variant\n// at runtime (e.g. `[&_input]:${\"pl-9\"}`) means `[&_input]:pl-9` is never\n// emitted to CSS, so the inside affix gets no padding and overlaps the text\n// (issue #6). Keep input/select/textarea spelled out here.\nconst insidePaddingLeft: Record<Size, string> = {\n  xs: \"[&_input]:pl-7 [&_select]:pl-7 [&_textarea]:pl-7\",\n  sm: \"[&_input]:pl-8 [&_select]:pl-8 [&_textarea]:pl-8\",\n  md: \"[&_input]:pl-9 [&_select]:pl-9 [&_textarea]:pl-9\",\n  lg: \"[&_input]:pl-10 [&_select]:pl-10 [&_textarea]:pl-10\",\n  xl: \"[&_input]:pl-11 [&_select]:pl-11 [&_textarea]:pl-11\",\n};\n\nconst insidePaddingRight: Record<Size, string> = {\n  xs: \"[&_input]:pr-7 [&_select]:pr-7 [&_textarea]:pr-7\",\n  sm: \"[&_input]:pr-8 [&_select]:pr-8 [&_textarea]:pr-8\",\n  md: \"[&_input]:pr-9 [&_select]:pr-9 [&_textarea]:pr-9\",\n  lg: \"[&_input]:pr-10 [&_select]:pr-10 [&_textarea]:pr-10\",\n  xl: \"[&_input]:pr-11 [&_select]:pr-11 [&_textarea]:pr-11\",\n};\n\nconst affixOutsideClasses =\n  \"inline-flex items-center border border-zinc-300 bg-zinc-50 px-3 text-sm text-zinc-500 dark:border-zinc-700 dark:bg-zinc-800 dark:text-zinc-400\";\n\nexport function InputWrapper({\n  children,\n  prefix,\n  suffix,\n  prefixPosition = \"inside\",\n  suffixPosition = \"inside\",\n  size = \"md\",\n}: InputWrapperProps) {\n  const hasInsidePrefix = prefix && prefixPosition === \"inside\";\n  const hasInsideSuffix = suffix && suffixPosition === \"inside\";\n  const hasOutsidePrefix = prefix && prefixPosition === \"outside\";\n  const hasOutsideSuffix = suffix && suffixPosition === \"outside\";\n  const hasOutside = hasOutsidePrefix || hasOutsideSuffix;\n\n  if (!prefix && !suffix) {\n    return <>{children}</>;\n  }\n\n  if (hasOutside) {\n    return (\n      <div data-react-fancy-input-wrapper=\"\" className=\"flex\">\n        {hasOutsidePrefix && (\n          <span className={cn(affixOutsideClasses, \"rounded-l-lg border-r-0\")}>\n            {prefix}\n          </span>\n        )}\n        <div\n          className={cn(\n            \"relative flex flex-1 items-center\",\n            hasInsidePrefix && \"relative\",\n          )}\n        >\n          {hasInsidePrefix && (\n            <span className=\"pointer-events-none absolute left-3 z-10 text-zinc-400 dark:text-zinc-500\">\n              {prefix}\n            </span>\n          )}\n          <div\n            className={cn(\n              \"w-full [&>*]:w-full\",\n              hasOutsidePrefix && !hasOutsideSuffix && \"[&_input]:rounded-l-none [&_select]:rounded-l-none [&_textarea]:rounded-l-none\",\n              !hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-r-none [&_select]:rounded-r-none [&_textarea]:rounded-r-none\",\n              hasOutsidePrefix && hasOutsideSuffix && \"[&_input]:rounded-none [&_select]:rounded-none [&_textarea]:rounded-none\",\n              hasInsidePrefix && insidePaddingLeft[size],\n            )}\n          >\n            {children}\n          </div>\n          {hasInsideSuffix && (\n            <span className=\"pointer-events-none absolute right-3 z-10 text-zinc-400 dark:text-zinc-500\">\n              {suffix}\n            </span>\n          )}\n        </div>\n        {hasOutsideSuffix && (\n          <span className={cn(affixOutsideClasses, \"rounded-r-lg border-l-0\")}>\n            {suffix}\n          </span>\n        )}\n      </div>\n    );\n  }\n\n  // Both inside\n  return (\n    <div data-react-fancy-input-wrapper=\"\" className=\"relative flex items-center\">\n      {hasInsidePrefix && (\n        <span className=\"pointer-events-none absolute left-3 z-10 text-zinc-400 dark:text-zinc-500\">\n          {prefix}\n        </span>\n      )}\n      <div\n        className={cn(\n          \"w-full\",\n          hasInsidePrefix && insidePaddingLeft[size],\n          hasInsideSuffix && insidePaddingRight[size],\n        )}\n      >\n        {children}\n      </div>\n      {hasInsideSuffix && (\n        <span className=\"pointer-events-none absolute right-3 z-10 text-zinc-400 dark:text-zinc-500\">\n          {suffix}\n        </span>\n      )}\n    </div>\n  );\n}\n"]}