@avenue-ticketing/ui 0.12.0-beta.2 → 0.12.0-beta.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (58) hide show
  1. package/dist/react/badge-groups.js +2 -2
  2. package/dist/react/badge-groups.js.map +1 -1
  3. package/dist/react/badge.js +49 -18
  4. package/dist/react/badge.js.map +1 -1
  5. package/dist/react/button.js +2 -2
  6. package/dist/react/button.js.map +1 -1
  7. package/dist/react/combobox.js.map +1 -1
  8. package/dist/react/dropdown-account-breadcrumb.js.map +1 -1
  9. package/dist/react/dropdown-account-button.js +5 -5
  10. package/dist/react/dropdown-account-button.js.map +1 -1
  11. package/dist/react/dropdown-account-card-md.js +3 -3
  12. package/dist/react/dropdown-account-card-md.js.map +1 -1
  13. package/dist/react/dropdown-account-card-sm.js +3 -3
  14. package/dist/react/dropdown-account-card-sm.js.map +1 -1
  15. package/dist/react/dropdown-account-card-xs.js +3 -3
  16. package/dist/react/dropdown-account-card-xs.js.map +1 -1
  17. package/dist/react/dropdown-avatar.js +5 -5
  18. package/dist/react/dropdown-avatar.js.map +1 -1
  19. package/dist/react/dropdown-button-advanced.js +5 -5
  20. package/dist/react/dropdown-button-advanced.js.map +1 -1
  21. package/dist/react/dropdown-button-link.js +3 -3
  22. package/dist/react/dropdown-button-link.js.map +1 -1
  23. package/dist/react/dropdown-button-simple.js +5 -5
  24. package/dist/react/dropdown-button-simple.js.map +1 -1
  25. package/dist/react/dropdown-icon-advanced.js +3 -3
  26. package/dist/react/dropdown-icon-advanced.js.map +1 -1
  27. package/dist/react/dropdown-icon-simple.js +3 -3
  28. package/dist/react/dropdown-icon-simple.js.map +1 -1
  29. package/dist/react/dropdown-integration.js +5 -5
  30. package/dist/react/dropdown-integration.js.map +1 -1
  31. package/dist/react/dropdown-search-advanced.js +6 -6
  32. package/dist/react/dropdown-search-advanced.js.map +1 -1
  33. package/dist/react/dropdown-search-simple.js +6 -6
  34. package/dist/react/dropdown-search-simple.js.map +1 -1
  35. package/dist/react/dropdown.js +3 -3
  36. package/dist/react/dropdown.js.map +1 -1
  37. package/dist/react/input-date.js.map +1 -1
  38. package/dist/react/input-file.js +3 -3
  39. package/dist/react/input-file.js.map +1 -1
  40. package/dist/react/input-group.js.map +1 -1
  41. package/dist/react/input-number.js +2 -2
  42. package/dist/react/input-number.js.map +1 -1
  43. package/dist/react/input-payment.js +1 -1
  44. package/dist/react/input-payment.js.map +1 -1
  45. package/dist/react/input-tags-outer.js +1 -1
  46. package/dist/react/input-tags-outer.js.map +1 -1
  47. package/dist/react/input-tags.js.map +1 -1
  48. package/dist/react/input.js +1 -1
  49. package/dist/react/input.js.map +1 -1
  50. package/dist/react/multi-select.js +2 -2
  51. package/dist/react/multi-select.js.map +1 -1
  52. package/dist/react/select.js.map +1 -1
  53. package/dist/react/switch.js +1 -1
  54. package/dist/react/switch.js.map +1 -1
  55. package/dist/react/tag-select.js.map +1 -1
  56. package/dist/react/textarea.js.map +1 -1
  57. package/package.json +1 -1
  58. package/theme.css +2 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../../../utils/cx.ts","../../../../utils/is-react-component.ts","../../../../components/base/buttons/button.tsx","../../../../components/base/input/hint-text.tsx","../../../../components/base/tooltip/tooltip.tsx","../../../../components/base/input/label.tsx","../../../../components/base/input/input.tsx","../../../../components/base/input/input-group.tsx","../../../../components/base/input/input-file.tsx"],"names":["AriaLink","AriaButton","jsx","AriaText","jsxs","AriaTooltipTrigger","AriaTooltip","AriaOverlayArrow","AriaLabel","HelpCircle","AriaGroup","isDisabled","isInvalid","AriaInput","InfoCircle","EyeOff","Eye","AriaTextField","Fragment","useState"],"mappings":"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","file":"input-file.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","/* We cannot use type `unknown` instead of `any` here because it will break the type assertion `isReactComponent` function is providing. */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from \"react\";\n\ntype ReactComponent = React.FC<any> | React.ComponentClass<any, any>;\n\n/**\n * Checks if a given value is a function component.\n */\nexport const isFunctionComponent = (component: any): component is React.FC<any> => {\n return typeof component === \"function\";\n};\n\n/**\n * Checks if a given value is a class component.\n */\nexport const isClassComponent = (component: any): component is React.ComponentClass<any, any> => {\n return typeof component === \"function\" && component.prototype && (!!component.prototype.isReactComponent || !!component.prototype.render);\n};\n\n/**\n * Checks if a given value is a forward ref component.\n */\nexport const isForwardRefComponent = (component: any): component is React.ForwardRefExoticComponent<any> => {\n return typeof component === \"object\" && component !== null && component.$$typeof.toString() === \"Symbol(react.forward_ref)\";\n};\n\n/**\n * Checks if a given value is a valid React component.\n */\nexport const isReactComponent = (component: any): component is ReactComponent => {\n return isFunctionComponent(component) || isForwardRefComponent(component) || isClassComponent(component);\n};\n","\"use client\";\n\nimport type { FC, ReactElement, ReactNode } from \"react\";\nimport React, { isValidElement } from \"react\";\nimport type { ButtonProps as AriaButtonProps, LinkProps as AriaLinkProps } from \"react-aria-components\";\nimport { Button as AriaButton, Link as AriaLink } from \"react-aria-components\";\nimport { cx, sortCx } from \"@/utils/cx\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\n\n/**\n * Figma: Buttons/Button (3287:427074), Buttons/Button destructive (6218:85578)\n *\n * Hierarchy mapping (Figma → Untitled `color` prop):\n * - Primary → `primary` (dark neutral solid — default CTA, black in light mode)\n * - Brand → `brand` (purple solid)\n * - Secondary / Tertiary / Link color / Link gray → same names\n *\n * Focus: Figma spread-shadow ring (2px surface gap + 4px focus-ring), not outline.\n * Skeuomorphic: shadow-xs-skeuomorphic + gradient top rim (#ffffff1f).\n */\n\n/** Plain focus — Tertiary, Link color, Link gray (Figma Focus rings/focus-ring). */\nconst focusShadowPlain =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Skeuomorphic focus — Primary, Brand, Secondary (Figma focus-ring-shadow-xs-skeuomorphic). */\nconst focusShadowSkeuomorphic =\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-xs-skeuomorphic),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Figma Gradient/skeuemorphic-gradient-border — 1px inner rim, strongest at top. */\nconst skeuomorphicGradientBorderClass = [\n \"ring-1 ring-inset ring-transparent\",\n \"before:pointer-events-none before:absolute before:inset-px before:rounded-[inherit] before:border before:border-[#ffffff1f] before:content-['']\",\n \"before:[mask-image:linear-gradient(to_bottom,#000,transparent)]\",\n].join(\" \");\n\nconst skeuomorphicShadowClass = [\"shadow-xs-skeuomorphic\", focusShadowSkeuomorphic, \"overflow-hidden\"].join(\" \");\n\n/** Secondary focus — shadow-xs + spread focus ring (Figma focus-ring-shadow-xs-skeuomorphic; keeps real border). */\nconst focusShadowSecondary =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_1px_2px_0px_rgba(0,0,0,0.05),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Secondary depth — bottom inset only; outer edge is border-primary (inner 1px rim stacks visually with border). */\nconst secondaryInnerShadow =\n \"after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:content-[''] after:[box-shadow:inset_0px_-1px_0px_0px_rgba(0,0,0,0.05)]\";\n\nconst secondaryShadowClass = [\"relative overflow-hidden shadow-xs\", secondaryInnerShadow, focusShadowSecondary].join(\" \");\n\n/** Number input stepper buttons — shell owns border/focus; match outer rounded-lg corners. */\nconst inputNumberButtonClass =\n [\n \"in-data-number-input:border-0 in-data-number-input:shadow-none in-data-number-input:!rounded-none in-data-number-input:!h-full in-data-number-input:!min-h-0 in-data-number-input:self-stretch in-data-number-input:overflow-hidden\",\n \"in-data-number-input:before:hidden in-data-number-input:after:hidden\",\n \"in-data-number-input:focus-visible:outline-none in-data-number-input:focus-visible:shadow-none in-data-number-input:focus-visible:ring-0 in-data-number-input:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\n/** InputGroup addon buttons — shell owns outer border/corners; button is a flat inner segment (like NativeSelect). */\nconst inputAddonButtonClass =\n [\n \"in-data-input-wrapper:border-0 in-data-input-wrapper:shadow-none in-data-input-wrapper:!rounded-none in-data-input-wrapper:overflow-hidden\",\n \"in-data-input-wrapper:in-data-trailing:border-l in-data-input-wrapper:in-data-trailing:border-solid in-data-input-wrapper:in-data-trailing:border-primary\",\n \"in-data-input-wrapper:in-data-leading:border-r in-data-input-wrapper:in-data-leading:border-solid in-data-input-wrapper:in-data-leading:border-primary\",\n \"in-data-input-wrapper:group-invalid:in-data-trailing:border-error_subtle in-data-input-wrapper:group-invalid:in-data-leading:border-error_subtle\",\n \"in-data-input-wrapper:before:hidden in-data-input-wrapper:after:hidden\",\n \"in-data-input-wrapper:focus-visible:outline-none in-data-input-wrapper:focus-visible:shadow-none in-data-input-wrapper:focus-visible:ring-0 in-data-input-wrapper:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\nconst styles = sortCx({\n common: {\n root: [\n \"group relative inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-full font-body outline-none before:absolute\",\n \"font-semibold transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-out\",\n \"pressed:scale-[0.985] pressed:duration-100 pressed:ease-linear motion-reduce:pressed:scale-100\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed in-data-input-wrapper:disabled:opacity-100\",\n inputAddonButtonClass,\n inputNumberButtonClass,\n // Stretch to InputGroup row height; padding/typography follow `data-input-size` on the field (Figma 85:1269).\n \"in-data-input-wrapper:!h-full in-data-input-wrapper:!min-h-0 in-data-input-wrapper:self-stretch\",\n \"in-data-input-wrapper:in-data-[input-size=sm]:gap-1 in-data-input-wrapper:in-data-[input-size=sm]:px-3 in-data-input-wrapper:in-data-[input-size=sm]:py-2 in-data-input-wrapper:in-data-[input-size=sm]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=md]:gap-1 in-data-input-wrapper:in-data-[input-size=md]:px-3.5 in-data-input-wrapper:in-data-[input-size=md]:py-2.5 in-data-input-wrapper:in-data-[input-size=md]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=lg]:gap-1.5 in-data-input-wrapper:in-data-[input-size=lg]:px-4 in-data-input-wrapper:in-data-[input-size=lg]:py-2.5 in-data-input-wrapper:in-data-[input-size=lg]:text-md\",\n \"*:data-icon:pointer-events-none *:data-icon:shrink-0 *:data-icon:transition-inherit-all\",\n ].join(\" \"),\n icon: \"pointer-events-none shrink-0 transition-inherit-all\",\n },\n sizes: {\n xs: {\n root: [\n \"h-8 min-h-8 gap-1 px-[0.625rem] py-1.5 text-sm data-icon-only:size-8 data-icon-only:min-h-8 data-icon-only:min-w-8 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-4\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n sm: {\n root: [\n \"h-9 min-h-9 gap-1 px-3 py-2 text-sm data-icon-only:size-9 data-icon-only:min-h-9 data-icon-only:min-w-9 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n md: {\n root: [\n \"h-10 min-h-10 gap-1 px-3.5 py-2.5 text-sm data-icon-only:size-10 data-icon-only:min-h-10 data-icon-only:min-w-10 data-icon-only:p-2.5\",\n \"in-data-input-wrapper:data-icon-only:p-3\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-4\",\n },\n lg: {\n root: \"h-11 min-h-11 gap-1.5 px-4 py-2.5 text-md data-icon-only:size-11 data-icon-only:min-h-11 data-icon-only:min-w-11 data-icon-only:p-3 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n xl: {\n root: \"h-12 min-h-12 gap-1.5 px-[1.125rem] py-3 text-md data-icon-only:size-12 data-icon-only:min-h-12 data-icon-only:min-w-12 data-icon-only:p-3 data-icon-only:*:data-icon:size-6 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n },\n\n colors: {\n /** Figma Hierarchy=Primary — dark neutral solid; hover lightens to fg-tertiary_hover (#404040). */\n primary: {\n root: [\n \"bg-primary-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-fg-tertiary_hover dark:hover:bg-quaternary\",\n \"disabled:opacity-30\",\n \"data-loading:bg-fg-tertiary_hover dark:data-loading:bg-quaternary\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Brand — purple solid; hover darkens to bg-brand-solid_hover (#6d28d9). */\n brand: {\n root: [\n \"bg-brand-solid text-primary_on-brand\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-brand-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-brand-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-primary_on-brand\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Secondary — border-primary + shadow-xs + skeuomorphic inner rim overlay. */\n secondary: {\n root: [\n \"border border-solid border-primary bg-primary text-secondary\",\n secondaryShadowClass,\n \"hover:bg-primary_hover hover:text-secondary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-primary_hover\",\n \"*:data-icon:text-fg-secondary hover:*:data-icon:text-fg-quaternary_hover\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Tertiary */\n tertiary: {\n root: [\n \"border border-transparent bg-transparent text-tertiary\",\n focusShadowPlain,\n \"hover:bg-primary_hover hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-tertiary hover:*:data-icon:text-fg-quaternary_hover\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link color — text + icons share brand-secondary; hover underlines with fg-brand-secondary. */\n \"link-color\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-brand-secondary shadow-none\",\n focusShadowPlain,\n \"hover:text-brand-secondary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-brand-secondary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link gray — text + icons share tertiary; hover underlines with fg-quaternary. */\n \"link-gray\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-tertiary shadow-none\",\n focusShadowPlain,\n \"hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-quaternary\",\n ].join(\" \"),\n },\n \"primary-destructive\": {\n root: [\n \"bg-error-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-error-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n \"secondary-destructive\": {\n root: [\n \"border border-solid border-primary bg-primary text-error-primary\",\n secondaryShadowClass,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-primary\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n \"tertiary-destructive\": {\n root: [\n \"border border-transparent bg-transparent text-error-primary\",\n focusShadowPlain,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link (destructive) — text + icons share error-primary; hover underlines. */\n \"link-destructive\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-error-primary shadow-none\",\n focusShadowPlain,\n \"hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-current\",\n ].join(\" \"),\n },\n },\n});\n\n/**\n * Common props shared between button and anchor variants\n */\nexport interface CommonProps {\n /** Disables the button and shows a disabled state */\n isDisabled?: boolean;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** The size variant of the button */\n size?: keyof typeof styles.sizes;\n /** The color variant of the button */\n color?: keyof typeof styles.colors;\n /** Icon component or element to show before the text */\n iconLeading?: FC<{ className?: string }> | ReactNode;\n /** Icon component or element to show after the text */\n iconTrailing?: FC<{ className?: string }> | ReactNode;\n /** Removes horizontal padding from the text content */\n noTextPadding?: boolean;\n /** When true, keeps the text visible during loading state */\n showTextWhileLoading?: boolean;\n\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * Props for the button variant (non-link)\n */\nexport interface ButtonProps extends CommonProps, Omit<AriaButtonProps, \"children\" | \"className\"> {}\n/**\n * Props for the link variant (anchor tag)\n */\ninterface LinkProps extends CommonProps, Omit<AriaLinkProps, \"children\" | \"className\"> {\n href: NonNullable<AriaLinkProps[\"href\"]>;\n}\n\n/** Union type of button and link props */\nexport type Props = ButtonProps | LinkProps;\n\nexport const Button: {\n (props: LinkProps): ReactElement<LinkProps>;\n (props: ButtonProps): ReactElement<ButtonProps>;\n} = ({\n size = \"md\",\n color = \"primary\",\n children,\n className,\n noTextPadding,\n iconLeading: IconLeading,\n iconTrailing: IconTrailing,\n isDisabled: disabled,\n isLoading: loading,\n showTextWhileLoading,\n ...props\n}) => {\n const href = \"href\" in props ? props.href : undefined;\n\n const isIcon = (IconLeading || IconTrailing) && !children;\n const isLinkType = [\"link-gray\", \"link-color\", \"link-destructive\"].includes(color);\n\n noTextPadding = isLinkType || noTextPadding;\n\n const commonChildren = (\n <>\n {isValidElement(IconLeading) && IconLeading}\n {isReactComponent(IconLeading) && <IconLeading data-icon=\"leading\" className={styles.common.icon} />}\n\n {loading && (\n <svg\n fill=\"none\"\n data-icon=\"loading\"\n viewBox=\"0 0 256 256\"\n aria-hidden\n className={cx(\n styles.common.icon,\n \"size-5 animate-spin\",\n !showTextWhileLoading && \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n )}\n >\n <path\n fill=\"currentColor\"\n d=\"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60,61.46,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20-66.54-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z\"\n />\n </svg>\n )}\n\n {children && (\n <span data-text className={cx(\"transition-inherit-all\", !noTextPadding && !isLinkType && \"px-0.5\")}>\n {children}\n </span>\n )}\n\n {isValidElement(IconTrailing) && IconTrailing}\n {isReactComponent(IconTrailing) && <IconTrailing data-icon=\"trailing\" className={styles.common.icon} />}\n </>\n );\n\n const commonProps = {\n \"data-icon-only\": isIcon ? true : undefined,\n \"data-loading\": loading ? true : undefined,\n ...props,\n isDisabled: disabled || loading,\n className: cx(\n styles.common.root,\n styles.sizes[size].root,\n styles.colors[color].root,\n isLinkType && styles.sizes[size].linkRoot,\n (loading || (href && (disabled || loading))) && \"pointer-events-none\",\n loading && (showTextWhileLoading ? \"[&>*:not([data-icon=loading]):not([data-text])]:hidden\" : \"[&>*:not([data-icon=loading])]:invisible\"),\n className,\n ),\n children: commonChildren,\n };\n\n if (\"href\" in commonProps) {\n return <AriaLink {...commonProps} href={disabled || loading ? undefined : href} />;\n }\n\n return <AriaButton {...commonProps} type={commonProps.type || \"button\"} isPending={loading} />;\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport type { TextProps as AriaTextProps } from \"react-aria-components\";\nimport { Text as AriaText } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface HintTextProps extends AriaTextProps {\n /** Indicates that the hint text is an error message. */\n isInvalid?: boolean;\n ref?: Ref<HTMLElement>;\n size?: \"sm\" | \"md\";\n children: ReactNode;\n}\n\nexport const HintText = ({ isInvalid, className, size = \"md\", ...props }: HintTextProps) => {\n return (\n <AriaText\n {...props}\n slot={isInvalid ? \"errorMessage\" : \"description\"}\n className={cx(\n \"text-sm text-tertiary\",\n\n // Size\n size === \"sm\" && \"text-xs\",\n \"in-data-[input-size=sm]:text-xs\",\n\n // Invalid state\n isInvalid && \"text-error-primary\",\n \"group-invalid:text-error-primary\",\n\n className,\n )}\n />\n );\n};\n\nHintText.displayName = \"HintText\";\n","\"use client\";\n\n/** Figma: Tooltip (1052:485) */\n\nimport type { ReactNode } from \"react\";\nimport type {\n ButtonProps as AriaButtonProps,\n TooltipProps as AriaTooltipProps,\n TooltipTriggerComponentProps as AriaTooltipTriggerComponentProps,\n} from \"react-aria-components\";\nimport { Button as AriaButton, OverlayArrow as AriaOverlayArrow, Tooltip as AriaTooltip, TooltipTrigger as AriaTooltipTrigger } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface TooltipProps extends AriaTooltipTriggerComponentProps, Omit<AriaTooltipProps, \"children\"> {\n /**\n * The title of the tooltip.\n */\n title: ReactNode;\n /**\n * The description of the tooltip.\n */\n description?: ReactNode;\n /**\n * Whether to show the arrow on the tooltip.\n *\n * @default false\n */\n arrow?: boolean;\n /**\n * Delay in milliseconds before the tooltip is shown on first hover.\n *\n * @default 100\n */\n delay?: number;\n}\n\nexport const Tooltip = ({\n title,\n description,\n children,\n arrow = false,\n delay = 100,\n closeDelay = 0,\n trigger,\n isDisabled,\n isOpen,\n defaultOpen,\n offset = 6,\n crossOffset,\n placement = \"top\",\n onOpenChange,\n ...tooltipProps\n}: TooltipProps) => {\n const isTopOrBottomLeft = [\"top left\", \"top end\", \"bottom left\", \"bottom end\"].includes(placement);\n const isTopOrBottomRight = [\"top right\", \"top start\", \"bottom right\", \"bottom start\"].includes(placement);\n // Set negative cross offset for left and right placement to visually balance the tooltip.\n const calculatedCrossOffset = isTopOrBottomLeft ? -12 : isTopOrBottomRight ? 12 : 0;\n\n return (\n <AriaTooltipTrigger {...{ trigger, delay, closeDelay, isDisabled, isOpen, defaultOpen, onOpenChange }}>\n {children}\n\n <AriaTooltip\n {...tooltipProps}\n offset={offset}\n placement={placement}\n crossOffset={crossOffset ?? calculatedCrossOffset}\n className={({ isEntering, isExiting }) => cx(isEntering && \"ease-out animate-in\", isExiting && \"ease-in animate-out\")}\n >\n {({ isEntering, isExiting }) => (\n <div\n className={cx(\n \"z-50 flex max-w-xs origin-(--trigger-anchor-point) flex-col items-start gap-1 rounded-lg bg-primary-solid px-3 shadow-lg will-change-transform\",\n description ? \"py-3\" : \"py-2\",\n\n isEntering &&\n \"ease-out animate-in fade-in zoom-in-95 in-placement-left:slide-in-from-right-0.5 in-placement-right:slide-in-from-left-0.5 in-placement-top:slide-in-from-bottom-0.5 in-placement-bottom:slide-in-from-top-0.5\",\n isExiting &&\n \"ease-in animate-out fade-out zoom-out-95 in-placement-left:slide-out-to-right-0.5 in-placement-right:slide-out-to-left-0.5 in-placement-top:slide-out-to-bottom-0.5 in-placement-bottom:slide-out-to-top-0.5\",\n )}\n >\n <span className=\"text-xs font-semibold text-white\">{title}</span>\n\n {description && <span className=\"text-xs font-medium text-tooltip-supporting-text\">{description}</span>}\n\n {arrow && (\n <AriaOverlayArrow>\n <svg\n viewBox=\"0 0 100 100\"\n className=\"size-2.5 fill-bg-primary-solid in-placement-left:-rotate-90 in-placement-right:rotate-90 in-placement-top:rotate-0 in-placement-bottom:rotate-180\"\n >\n <path d=\"M0,0 L35.858,35.858 Q50,50 64.142,35.858 L100,0 Z\" />\n </svg>\n </AriaOverlayArrow>\n )}\n </div>\n )}\n </AriaTooltip>\n </AriaTooltipTrigger>\n );\n};\n\ninterface TooltipTriggerProps extends AriaButtonProps {}\n\nexport const TooltipTrigger = ({ children, className, ...buttonProps }: TooltipTriggerProps) => {\n return (\n <AriaButton {...buttonProps} className={(values) => cx(\"h-max w-max outline-hidden\", typeof className === \"function\" ? className(values) : className)}>\n {children}\n </AriaButton>\n );\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport type { LabelProps as AriaLabelProps } from \"react-aria-components\";\nimport { Label as AriaLabel } from \"react-aria-components\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx } from \"@/utils/cx\";\n\ninterface LabelProps extends AriaLabelProps {\n children: ReactNode;\n isInvalid?: boolean;\n isRequired?: boolean;\n tooltip?: string;\n tooltipDescription?: string;\n ref?: Ref<HTMLLabelElement>;\n}\n\nexport const Label = ({ isInvalid, isRequired, tooltip, tooltipDescription, className, ...props }: LabelProps) => {\n return (\n <AriaLabel\n // Used for conditionally hiding/showing the label element via CSS:\n // <Input label=\"Visible only on mobile\" className=\"lg:**:data-label:hidden\" />\n // or\n // <Input label=\"Visible only on mobile\" className=\"lg:label:hidden\" />\n data-label=\"true\"\n {...props}\n className={cx(\"flex cursor-default items-center gap-0.5 text-sm font-medium text-secondary\", className)}\n >\n {props.children}\n\n <span\n className={cx(\n \"hidden text-brand-tertiary\",\n isRequired && \"block\",\n typeof isRequired === \"undefined\" && \"group-required:block\",\n\n isInvalid && \"text-error-primary\",\n typeof isInvalid === \"undefined\" && \"group-invalid:text-error-primary\",\n )}\n >\n *\n </span>\n\n {tooltip && (\n <Tooltip title={tooltip} description={tooltipDescription} placement=\"top\">\n <TooltipTrigger\n // `TooltipTrigger` inherits the disabled state from the parent form field\n // but we don't that. We want the tooltip be enabled even if the parent\n // field is disabled.\n isDisabled={false}\n className=\"cursor-pointer text-fg-quaternary transition duration-200 hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\"\n >\n <HelpCircle className=\"size-4\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n </AriaLabel>\n );\n};\n\nLabel.displayName = \"Label\";\n","\"use client\";\n\nimport { type ComponentType, type HTMLAttributes, type ReactNode, type Ref, createContext, useContext, useState } from \"react\";\nimport { EyeIcon as Eye } from \"@phosphor-icons/react/dist/csr/Eye\";\nimport { EyeSlashIcon as EyeOff } from \"@phosphor-icons/react/dist/csr/EyeSlash\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport { InfoIcon as InfoCircle } from \"@phosphor-icons/react/dist/csr/Info\";\nimport type { InputProps as AriaInputProps, TextFieldProps as AriaTextFieldProps } from \"react-aria-components\";\nimport { Button as AriaButton, Group as AriaGroup, Input as AriaInput, TextField as AriaTextField } from \"react-aria-components\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport { Label } from \"@/components/base/input/label\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx, sortCx } from \"@/utils/cx\";\n\n/**\n * Figma: Inputs (85:1269)\n *\n * Default: border (1px) border-primary + shadow-xs.\n * Focus: 1px border-brand + inset ring-brand (2px visual, no layout shift from border-2).\n * Error default: border-error_subtle; error focus: border-error + inset ring-error.\n */\nexport const inputFocusRingShadow = \"border-brand ring-1 ring-inset ring-brand\";\nexport const inputErrorFocusRingShadow = \"border-error ring-1 ring-inset ring-error\";\n/** Shell focus overlay — border + inset ring on one ::after above children (no host border-brand; avoids double-ring gap). */\nexport const inputFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-brand after:ring-1 after:ring-inset after:ring-brand after:content-['']\";\nexport const inputErrorFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-error after:ring-1 after:ring-inset after:ring-error after:content-['']\";\nexport const inputErrorFocusRingGroupInvalidShellOverlay =\n \"group-invalid:focus-within:after:pointer-events-none group-invalid:focus-within:after:absolute group-invalid:focus-within:after:-inset-px group-invalid:focus-within:after:z-10 group-invalid:focus-within:after:rounded-lg group-invalid:focus-within:after:border group-invalid:focus-within:after:border-solid group-invalid:focus-within:after:border-error group-invalid:focus-within:after:ring-1 group-invalid:focus-within:after:ring-inset group-invalid:focus-within:after:ring-error group-invalid:focus-within:after:content-['']\";\nexport const inputFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-brand focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-brand\";\nexport const inputErrorFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-error focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-error\";\n\nexport interface InputBaseProps extends Omit<AriaInputProps, \"size\"> {\n /** Tooltip message on hover. */\n tooltip?: string;\n /** Whether the input is invalid. */\n isInvalid?: boolean;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /**\n * Input size.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Placeholder text. */\n placeholder?: string;\n /** Class name for the icon. */\n iconClassName?: string;\n /** Class name for the input. */\n inputClassName?: string;\n /** Class name for the input wrapper. */\n wrapperClassName?: string;\n /** Class name for the tooltip. */\n tooltipClassName?: string;\n /** Keyboard shortcut to display. */\n shortcut?: string | boolean;\n ref?: Ref<HTMLInputElement>;\n groupRef?: Ref<HTMLDivElement>;\n /** Icon component to display on the left side of the input. */\n icon?: ComponentType<HTMLAttributes<HTMLOrSVGElement>>;\n}\n\nexport const InputBase = ({\n ref,\n tooltip,\n shortcut,\n groupRef,\n size = \"md\",\n isInvalid,\n isDisabled,\n isRequired,\n icon: Icon,\n placeholder,\n wrapperClassName,\n tooltipClassName,\n inputClassName,\n iconClassName,\n type = \"text\",\n ...inputProps\n}: InputBaseProps) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n // Check if the input has a leading icon or tooltip\n const hasTrailingIcon = tooltip || isInvalid;\n const hasLeadingIcon = Icon;\n\n // If the input is inside a `TextFieldContext`, use its context to simplify applying styles\n const context = useContext(TextFieldContext);\n\n const inputSize = context?.size || size;\n\n const sizes = sortCx({\n sm: {\n root: cx(\"px-3 py-2 text-sm\", hasLeadingIcon && \"pl-9\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-4 stroke-[2.25px]\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-1.5\",\n },\n md: {\n root: cx(\"px-3 py-2 text-md\", hasLeadingIcon && \"pl-10\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-5\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-2\",\n },\n lg: {\n root: cx(\"px-3.5 py-2.5 text-md\", hasLeadingIcon && \"pl-10.5\", hasTrailingIcon && \"pr-9.5\"),\n iconLeading: \"left-3.5 size-5\",\n iconTrailing: \"right-3.5\",\n shortcut: \"pr-2.5\",\n },\n });\n\n return (\n <AriaGroup\n {...{ isDisabled, isInvalid }}\n ref={groupRef}\n className={({ isFocusWithin, isDisabled, isInvalid }) =>\n cx(\n \"group/input relative flex w-full flex-row place-content-center place-items-center rounded-lg border border-solid border-primary bg-primary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n isFocusWithin && !isDisabled && !isInvalid && inputFocusRingShadow,\n\n // Disabled state styles\n isDisabled && \"cursor-not-allowed opacity-50\",\n \"group-disabled:cursor-not-allowed group-disabled:opacity-50\",\n\n // Invalid state styles\n isInvalid && !isFocusWithin && \"border-error_subtle\",\n \"group-invalid:border-error_subtle\",\n \"group-invalid:focus-within:border-error group-invalid:focus-within:ring-1 group-invalid:focus-within:ring-inset group-invalid:focus-within:ring-error\",\n\n // Invalid + focus — darker error stroke (not brand)\n isInvalid && isFocusWithin && inputErrorFocusRingShadow,\n\n context?.wrapperClassName,\n wrapperClassName,\n )\n }\n >\n {/* Leading icon and Payment icon */}\n {Icon && (\n <Icon className={cx(\"pointer-events-none absolute text-fg-quaternary\", sizes[inputSize].iconLeading, context?.iconClassName, iconClassName)} />\n )}\n\n {/* Input field */}\n <AriaInput\n {...(inputProps as AriaInputProps)}\n ref={ref}\n required={isRequired}\n type={type === \"password\" && isPasswordVisible ? \"text\" : type}\n placeholder={placeholder}\n className={cx(\n \"m-0 w-full bg-transparent text-primary ring-0 outline-hidden placeholder:text-placeholder autofill:rounded-lg autofill:text-primary disabled:cursor-not-allowed\",\n sizes[inputSize].root,\n context?.inputClassName,\n inputClassName,\n )}\n />\n\n {/* Tooltip and help icon */}\n {tooltip && type !== \"password\" && (\n <Tooltip title={tooltip} placement=\"top\">\n <TooltipTrigger\n className={cx(\n \"absolute cursor-pointer text-fg-quaternary transition duration-100 ease-linear group-invalid/input:hidden hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n >\n <HelpCircle className=\"size-4 stroke-[2.25px]\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n\n {/* Invalid icon */}\n {type !== \"password\" && (\n <InfoCircle\n className={cx(\n \"pointer-events-none absolute hidden size-4 stroke-[2.25px] text-fg-error-secondary group-invalid/input:block\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <AriaButton\n aria-label=\"Toggle password visibility\"\n onClick={() => setIsPasswordVisible(!isPasswordVisible)}\n className={cx(\n \"absolute flex cursor-pointer items-center justify-center text-fg-quaternary transition duration-100 ease-linear hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover focus:outline-hidden\",\n sizes[inputSize].iconTrailing,\n )}\n >\n {isPasswordVisible ? <EyeOff className=\"size-4 stroke-[2.25px]\" /> : <Eye className=\"size-4 stroke-[2.25px]\" />}\n </AriaButton>\n )}\n\n {/* Shortcut */}\n {shortcut && (\n <div\n className={cx(\n \"pointer-events-none absolute inset-y-0.5 right-0.5 z-10 hidden items-center rounded-r-[inherit] bg-linear-to-r from-transparent to-bg-primary to-40% pl-8 md:flex\",\n sizes[inputSize].shortcut,\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none rounded px-1 py-px text-xs font-medium text-quaternary ring-1 ring-secondary select-none ring-inset\"\n >\n {typeof shortcut === \"string\" ? shortcut : \"⌘K\"}\n </span>\n </div>\n )}\n </AriaGroup>\n );\n};\n\nInputBase.displayName = \"InputBase\";\n\ninterface TextFieldContextProps extends Partial<Pick<InputBaseProps, \"size\" | \"wrapperClassName\" | \"inputClassName\" | \"iconClassName\" | \"tooltipClassName\">> {}\n\nconst TextFieldContext = createContext<TextFieldContextProps>({});\n\nexport interface TextFieldProps extends AriaTextFieldProps, TextFieldContextProps {}\n\nexport const TextField = ({ className, size = \"md\", inputClassName, wrapperClassName, iconClassName, tooltipClassName, ...props }: TextFieldProps) => {\n return (\n <TextFieldContext.Provider value={{ inputClassName, wrapperClassName, iconClassName, tooltipClassName, size }}>\n <AriaTextField\n {...props}\n data-input-wrapper\n data-input-size={size}\n className={(state) =>\n cx(\"group flex h-max w-full flex-col items-start justify-start gap-1.5\", typeof className === \"function\" ? className(state) : className)\n }\n />\n </TextFieldContext.Provider>\n );\n};\n\nTextField.displayName = \"TextField\";\n\nexport interface InputProps\n extends\n AriaTextFieldProps,\n Pick<\n InputBaseProps,\n | \"ref\"\n | \"placeholder\"\n | \"icon\"\n | \"shortcut\"\n | \"tooltip\"\n | \"groupRef\"\n | \"size\"\n | \"wrapperClassName\"\n | \"inputClassName\"\n | \"iconClassName\"\n | \"tooltipClassName\"\n > {\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide required indicator from label */\n hideRequiredIndicator?: boolean;\n}\n\nexport const Input = ({\n size = \"md\",\n placeholder,\n icon: Icon,\n label,\n hint,\n shortcut,\n hideRequiredIndicator,\n className,\n ref,\n groupRef,\n tooltip,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n type = \"text\",\n ...props\n}: InputProps) => {\n return (\n <TextField aria-label={!label ? placeholder : undefined} {...props} size={size} className={className}>\n {({ isRequired, isInvalid }) => (\n <>\n {label && (\n <Label isRequired={hideRequiredIndicator ? !hideRequiredIndicator : isRequired} isInvalid={isInvalid}>\n {label}\n </Label>\n )}\n\n <InputBase\n {...{\n ref,\n groupRef,\n size,\n placeholder,\n icon: Icon,\n shortcut,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n tooltip,\n type,\n isInvalid,\n }}\n />\n\n {hint && <HintText isInvalid={isInvalid}>{hint}</HintText>}\n </>\n )}\n </TextField>\n );\n};\n\nInput.displayName = \"Input\";\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport type { TextFieldProps } from \"@/components/base/input/input\";\nimport { TextField } from \"@/components/base/input/input\";\nimport { Label } from \"@/components/base/input/label\";\nimport { cx, sortCx } from \"@/utils/cx\";\n\n/** Inner field styles when the InputGroup shell owns the outer border (select or button addons). */\nconst inputGroupAddonInnerFieldClass =\n \"group-has-[select]:border-0 group-has-[select]:bg-transparent group-has-[select]:shadow-none group-has-[select]:ring-0 group-has-[select]:group-invalid:border-0 group-has-[select]:group-invalid:ring-0 group-has-[select]:group-invalid:shadow-none group-has-[select]:focus-within:border-0 group-has-[select]:focus-within:shadow-none group-has-[select]:focus-within:ring-0 group-has-[select]:group-invalid:focus-within:border-0 group-has-[select]:group-invalid:focus-within:ring-0 group-has-[section[data-trailing]_button]:border-0 group-has-[section[data-trailing]_button]:bg-transparent group-has-[section[data-trailing]_button]:shadow-none group-has-[section[data-trailing]_button]:ring-0 group-has-[section[data-trailing]_button]:group-invalid:border-0 group-has-[section[data-trailing]_button]:group-invalid:ring-0 group-has-[section[data-trailing]_button]:group-invalid:shadow-none group-has-[section[data-trailing]_button]:focus-within:border-0 group-has-[section[data-trailing]_button]:focus-within:shadow-none group-has-[section[data-trailing]_button]:focus-within:ring-0 group-has-[section[data-trailing]_button]:group-invalid:focus-within:border-0 group-has-[section[data-trailing]_button]:group-invalid:focus-within:ring-0 group-has-[section[data-leading]_button]:border-0 group-has-[section[data-leading]_button]:bg-transparent group-has-[section[data-leading]_button]:shadow-none group-has-[section[data-leading]_button]:ring-0 group-has-[section[data-leading]_button]:group-invalid:border-0 group-has-[section[data-leading]_button]:group-invalid:ring-0 group-has-[section[data-leading]_button]:group-invalid:shadow-none group-has-[section[data-leading]_button]:focus-within:border-0 group-has-[section[data-leading]_button]:focus-within:shadow-none group-has-[section[data-leading]_button]:focus-within:ring-0 group-has-[section[data-leading]_button]:group-invalid:focus-within:border-0 group-has-[section[data-leading]_button]:group-invalid:focus-within:ring-0\";\n\n/** Shell border when select or button addons are present (not InputPrefix — it keeps its own border). */\nconst inputGroupShellBorderClass =\n \"has-[select]:border has-[select]:border-solid has-[select]:border-primary has-[select]:shadow-xs has-[section[data-trailing]_button]:border has-[section[data-trailing]_button]:border-solid has-[section[data-trailing]_button]:border-primary has-[section[data-trailing]_button]:shadow-xs has-[section[data-leading]_button]:border has-[section[data-leading]_button]:border-solid has-[section[data-leading]_button]:border-primary has-[section[data-leading]_button]:shadow-xs\";\n\n/** Shell focus overlay — border + inset ring on one ::after (matches inputFocusRingShellOverlay). */\nconst inputGroupShellFocusClass =\n \"has-[select]:focus-within:after:pointer-events-none has-[select]:focus-within:after:absolute has-[select]:focus-within:after:-inset-px has-[select]:focus-within:after:z-10 has-[select]:focus-within:after:rounded-lg has-[select]:focus-within:after:border has-[select]:focus-within:after:border-solid has-[select]:focus-within:after:border-brand has-[select]:focus-within:after:ring-1 has-[select]:focus-within:after:ring-inset has-[select]:focus-within:after:ring-brand has-[select]:focus-within:after:content-[''] has-[section[data-trailing]_button]:focus-within:after:pointer-events-none has-[section[data-trailing]_button]:focus-within:after:absolute has-[section[data-trailing]_button]:focus-within:after:-inset-px has-[section[data-trailing]_button]:focus-within:after:z-10 has-[section[data-trailing]_button]:focus-within:after:rounded-lg has-[section[data-trailing]_button]:focus-within:after:border has-[section[data-trailing]_button]:focus-within:after:border-solid has-[section[data-trailing]_button]:focus-within:after:border-brand has-[section[data-trailing]_button]:focus-within:after:ring-1 has-[section[data-trailing]_button]:focus-within:after:ring-inset has-[section[data-trailing]_button]:focus-within:after:ring-brand has-[section[data-trailing]_button]:focus-within:after:content-[''] has-[section[data-leading]_button]:focus-within:after:pointer-events-none has-[section[data-leading]_button]:focus-within:after:absolute has-[section[data-leading]_button]:focus-within:after:-inset-px has-[section[data-leading]_button]:focus-within:after:z-10 has-[section[data-leading]_button]:focus-within:after:rounded-lg has-[section[data-leading]_button]:focus-within:after:border has-[section[data-leading]_button]:focus-within:after:border-solid has-[section[data-leading]_button]:focus-within:after:border-brand has-[section[data-leading]_button]:focus-within:after:ring-1 has-[section[data-leading]_button]:focus-within:after:ring-inset has-[section[data-leading]_button]:focus-within:after:ring-brand has-[section[data-leading]_button]:focus-within:after:content-['']\";\n\nconst inputGroupShellInvalidClass =\n \"has-[select]:border-error_subtle has-[select]:focus-within:after:pointer-events-none has-[select]:focus-within:after:absolute has-[select]:focus-within:after:-inset-px has-[select]:focus-within:after:z-10 has-[select]:focus-within:after:rounded-lg has-[select]:focus-within:after:border has-[select]:focus-within:after:border-solid has-[select]:focus-within:after:border-error has-[select]:focus-within:after:ring-1 has-[select]:focus-within:after:ring-inset has-[select]:focus-within:after:ring-error has-[select]:focus-within:after:content-[''] has-[section[data-trailing]_button]:border-error_subtle has-[section[data-trailing]_button]:focus-within:after:pointer-events-none has-[section[data-trailing]_button]:focus-within:after:absolute has-[section[data-trailing]_button]:focus-within:after:-inset-px has-[section[data-trailing]_button]:focus-within:after:z-10 has-[section[data-trailing]_button]:focus-within:after:rounded-lg has-[section[data-trailing]_button]:focus-within:after:border has-[section[data-trailing]_button]:focus-within:after:border-solid has-[section[data-trailing]_button]:focus-within:after:border-error has-[section[data-trailing]_button]:focus-within:after:ring-1 has-[section[data-trailing]_button]:focus-within:after:ring-inset has-[section[data-trailing]_button]:focus-within:after:ring-error has-[section[data-trailing]_button]:focus-within:after:content-[''] has-[section[data-leading]_button]:border-error_subtle has-[section[data-leading]_button]:focus-within:after:pointer-events-none has-[section[data-leading]_button]:focus-within:after:absolute has-[section[data-leading]_button]:focus-within:after:-inset-px has-[section[data-leading]_button]:focus-within:after:z-10 has-[section[data-leading]_button]:focus-within:after:rounded-lg has-[section[data-leading]_button]:focus-within:after:border has-[section[data-leading]_button]:focus-within:after:border-solid has-[section[data-leading]_button]:focus-within:after:border-error has-[section[data-leading]_button]:focus-within:after:ring-1 has-[section[data-leading]_button]:focus-within:after:ring-inset has-[section[data-leading]_button]:focus-within:after:ring-error has-[section[data-leading]_button]:focus-within:after:content-['']\";\n\ninterface InputPrefixProps extends HTMLAttributes<HTMLDivElement> {\n /** The position of the prefix. */\n position?: \"leading\" | \"trailing\";\n /** Indicates that the prefix is disabled. */\n isDisabled?: boolean;\n}\n\nexport const InputPrefix = ({ children, ...props }: InputPrefixProps) => (\n <span\n {...props}\n className={cx(\n \"flex h-full shrink-0 items-center self-stretch border border-solid border-primary bg-primary text-tertiary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n // Match InputBase invalid stroke when inside InputGroup\n \"in-data-input-wrapper:group-invalid:border-error_subtle in-data-input-wrapper:group-invalid:group-focus-within:border-error\",\n // Styles when the prefix is within an `InputGroup`\n \"in-data-input-wrapper:in-data-leading:-mr-px in-data-input-wrapper:in-data-leading:rounded-l-lg in-data-input-wrapper:in-data-leading:rounded-r-none in-data-input-wrapper:in-data-leading:border-r-0\",\n \"in-data-input-wrapper:in-data-trailing:-ml-px in-data-input-wrapper:in-data-trailing:rounded-r-lg in-data-input-wrapper:in-data-trailing:rounded-l-none in-data-input-wrapper:in-data-trailing:border-l-0\",\n // Default size styles — mirror InputBase input padding / typography\n \"px-3 py-2 text-md\",\n // Small size styles\n \"in-data-input-wrapper:in-data-[input-size=sm]:px-3 in-data-input-wrapper:in-data-[input-size=sm]:py-2 in-data-input-wrapper:in-data-[input-size=sm]:text-sm\",\n // Large size styles\n \"in-data-input-wrapper:in-data-[input-size=lg]:px-3.5 in-data-input-wrapper:in-data-[input-size=lg]:py-2.5 in-data-input-wrapper:in-data-[input-size=lg]:text-md\",\n\n props.className,\n )}\n >\n {children}\n </span>\n);\n\n// `${string}ClassName` is used to omit any className prop that ends with a `ClassName` suffix\ninterface InputGroupProps extends TextFieldProps {\n /** A prefix text that is displayed in the same box as the input.*/\n prefix?: string;\n /** A leading addon that is displayed with visual separation from the input. */\n leadingAddon?: ReactNode;\n /** A trailing addon that is displayed with visual separation from the input. */\n trailingAddon?: ReactNode;\n /** The class name to apply to the input group. */\n className?: string;\n /** The children of the input group (i.e `<InputBase />`) */\n children: ReactNode;\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide the required indicator from the label. */\n hideRequiredIndicator?: boolean;\n}\n\nexport const InputGroup = ({ size = \"md\", prefix, leadingAddon, trailingAddon, label, hint, hideRequiredIndicator, children, ...props }: InputGroupProps) => {\n const hasLeading = !!leadingAddon;\n const hasTrailing = !!trailingAddon;\n\n const paddings = sortCx({\n sm: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9 group-has-[select]:pl-2\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-1.5 pl-3\",\n },\n md: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9 group-has-[select]:pl-2.5\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-2 pl-3\",\n },\n lg: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9.5 group-has-[select]:pl-3\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-2 pl-3.5\",\n },\n });\n\n return (\n <TextField\n size={size}\n aria-label={label || undefined}\n inputClassName={cx(paddings[size].input)}\n tooltipClassName={cx(hasTrailing && !hasLeading && \"group-has-[select]:right-0\")}\n wrapperClassName={cx(\n \"z-10\",\n // Apply styles based on the presence of leading or trailing elements\n hasLeading && \"rounded-l-none\",\n hasTrailing && \"rounded-r-none\",\n inputGroupAddonInnerFieldClass,\n )}\n {...props}\n >\n {({ isDisabled, isInvalid, isRequired }) => (\n <>\n {label && <Label isRequired={hideRequiredIndicator ? false : isRequired}>{label}</Label>}\n\n <div\n // Used to apply styles based on the size of the input group within children\n data-input-size={size}\n className={cx(\n \"group relative flex h-max w-full flex-row items-stretch overflow-clip rounded-lg bg-primary transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n // Single outer shell for select / button addons (Figma 85:1269)\n inputGroupShellBorderClass,\n !isInvalid && inputGroupShellFocusClass,\n isInvalid && inputGroupShellInvalidClass,\n\n isDisabled && \"cursor-not-allowed\",\n )}\n >\n {leadingAddon && (\n <section data-leading={hasLeading || undefined} className=\"flex shrink-0 self-stretch group-disabled:opacity-50 *:h-full\">\n {leadingAddon}\n </section>\n )}\n\n {prefix && (\n <span className={cx(\"my-auto grow group-disabled:opacity-50\", paddings[size].leadingText)}>\n <p className={cx(\"text-md text-tertiary\", size === \"sm\" && \"text-sm\")}>{prefix}</p>\n </span>\n )}\n\n {children}\n\n {trailingAddon && (\n <section data-trailing={hasTrailing || undefined} className=\"flex shrink-0 self-stretch group-disabled:opacity-50 *:h-full\">\n {trailingAddon}\n </section>\n )}\n </div>\n\n {hint && (\n <HintText isInvalid={isInvalid} className={cx(size === \"sm\" && \"text-xs\")}>\n {hint}\n </HintText>\n )}\n </>\n )}\n </TextField>\n );\n};\n\nInputGroup.Prefix = InputPrefix;\n\nInputGroup.displayName = \"InputGroup\";\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"@/components/base/buttons/button\";\nimport { InputBase } from \"@/components/base/input/input\";\nimport { InputGroup } from \"@/components/base/input/input-group\";\nimport { cx } from \"@/utils/cx\";\n\ninterface InputFileProps {\n /**\n * The size of the input.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Label text for the input. */\n label?: string;\n /** Helper text displayed below the input. */\n hint?: ReactNode;\n /** Placeholder text displayed when no file is selected. */\n placeholder?: string;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is invalid. */\n isInvalid?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to hide the required indicator from the label. */\n hideRequiredIndicator?: boolean;\n /** Specifies what mime type of files are allowed. */\n acceptedFileTypes?: string[];\n /** Whether multiple files can be selected. */\n allowsMultiple?: boolean;\n /** Whether the file is currently uploading. */\n isLoading?: boolean;\n /** Handler when a user selects files. */\n onChange?: (files: FileList | null) => void;\n /** The class name for the root element. */\n className?: string;\n /**\n * The text of the upload button.\n * @default \"Upload\"\n */\n buttonText?: string;\n}\n\nexport const InputFile = ({\n size = \"sm\",\n label,\n hint,\n placeholder = \"Choose a file\",\n isDisabled,\n isInvalid,\n isRequired,\n hideRequiredIndicator,\n isLoading,\n acceptedFileTypes,\n allowsMultiple,\n onChange,\n className,\n buttonText = \"Upload\",\n}: InputFileProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [fileNames, setFileNames] = useState(\"\");\n\n const handleClick = () => {\n if (inputRef.current?.value) {\n inputRef.current.value = \"\";\n }\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files ?? null;\n if (files && files.length > 0) {\n setFileNames(\n Array.from(files)\n .map((f) => f.name)\n .join(\", \"),\n );\n } else {\n setFileNames(\"\");\n }\n onChange?.(files);\n };\n\n return (\n <>\n <InputGroup\n size={size}\n label={label}\n hint={hint}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isRequired={isRequired}\n hideRequiredIndicator={hideRequiredIndicator}\n className={className}\n trailingAddon={\n <Button size={size} color=\"secondary\" onClick={handleClick} isDisabled={isDisabled}>\n {buttonText}\n </Button>\n }\n >\n <div className=\"relative flex min-w-0 flex-1\">\n <InputBase\n placeholder={placeholder}\n value={fileNames}\n readOnly\n inputClassName={cx(\"cursor-pointer\", isLoading && \"pr-9\")}\n wrapperClassName=\"cursor-pointer\"\n onClick={handleClick}\n />\n {isLoading && (\n <svg fill=\"none\" viewBox=\"0 0 16 16\" className=\"pointer-events-none absolute top-1/2 right-3 z-20 size-4 -translate-y-1/2 text-fg-quaternary\">\n <circle className=\"stroke-current opacity-30\" cx=\"8\" cy=\"8\" r=\"6.5\" strokeWidth=\"1.5\" />\n <circle\n className=\"origin-center animate-spin stroke-current\"\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n strokeWidth=\"1.5\"\n strokeDasharray=\"10 40\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </InputGroup>\n\n <input\n ref={inputRef}\n type=\"file\"\n className=\"hidden\"\n disabled={isDisabled}\n accept={acceptedFileTypes?.toString()}\n multiple={allowsMultiple}\n onChange={handleChange}\n />\n </>\n );\n};\n\nInputFile.displayName = \"InputFile\";\n"]}
1
+ {"version":3,"sources":["../../../../utils/cx.ts","../../../../utils/is-react-component.ts","../../../../components/base/buttons/button.tsx","../../../../components/base/input/hint-text.tsx","../../../../components/base/tooltip/tooltip.tsx","../../../../components/base/input/label.tsx","../../../../components/base/input/input.tsx","../../../../components/base/input/input-group.tsx","../../../../components/base/input/input-file.tsx"],"names":["AriaLink","AriaButton","jsx","AriaText","jsxs","AriaTooltipTrigger","AriaTooltip","AriaOverlayArrow","AriaLabel","HelpCircle","AriaGroup","isDisabled","isInvalid","AriaInput","InfoCircle","EyeOff","Eye","AriaTextField","Fragment","useState"],"mappings":"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","file":"input-file.js","sourcesContent":["import { extendTailwindMerge } from \"tailwind-merge\";\n\nconst twMerge = extendTailwindMerge({\n extend: {\n theme: {\n text: [\"display-xs\", \"display-sm\", \"display-md\", \"display-lg\", \"display-xl\", \"display-2xl\"],\n },\n },\n});\n\n/**\n * This function is a wrapper around the twMerge function.\n * It is used to merge the classes inside style objects.\n */\nexport const cx = twMerge;\n\n/**\n * This function does nothing besides helping us to be able to\n * sort the classes inside style objects which is not supported\n * by the Tailwind IntelliSense by default.\n */\nexport function sortCx<T extends Record<string, string | number | Record<string, string | number | Record<string, string | number>>>>(classes: T): T {\n return classes;\n}\n","/* We cannot use type `unknown` instead of `any` here because it will break the type assertion `isReactComponent` function is providing. */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport type React from \"react\";\n\ntype ReactComponent = React.FC<any> | React.ComponentClass<any, any>;\n\n/**\n * Checks if a given value is a function component.\n */\nexport const isFunctionComponent = (component: any): component is React.FC<any> => {\n return typeof component === \"function\";\n};\n\n/**\n * Checks if a given value is a class component.\n */\nexport const isClassComponent = (component: any): component is React.ComponentClass<any, any> => {\n return typeof component === \"function\" && component.prototype && (!!component.prototype.isReactComponent || !!component.prototype.render);\n};\n\n/**\n * Checks if a given value is a forward ref component.\n */\nexport const isForwardRefComponent = (component: any): component is React.ForwardRefExoticComponent<any> => {\n return typeof component === \"object\" && component !== null && component.$$typeof.toString() === \"Symbol(react.forward_ref)\";\n};\n\n/**\n * Checks if a given value is a valid React component.\n */\nexport const isReactComponent = (component: any): component is ReactComponent => {\n return isFunctionComponent(component) || isForwardRefComponent(component) || isClassComponent(component);\n};\n","\"use client\";\n\nimport type { FC, ReactElement, ReactNode } from \"react\";\nimport React, { isValidElement } from \"react\";\nimport type { ButtonProps as AriaButtonProps, LinkProps as AriaLinkProps } from \"react-aria-components\";\nimport { Button as AriaButton, Link as AriaLink } from \"react-aria-components\";\nimport { cx, sortCx } from \"@/utils/cx\";\nimport { isReactComponent } from \"@/utils/is-react-component\";\n\n/**\n * Figma: Buttons/Button (3287:427074), Buttons/Button destructive (6218:85578)\n *\n * Hierarchy mapping (Figma → Untitled `color` prop):\n * - Primary → `primary` (dark neutral solid — default CTA, black in light mode)\n * - Brand → `brand` (purple solid)\n * - Secondary / Tertiary / Link color / Link gray → same names\n *\n * Focus: Figma spread-shadow ring (2px surface gap + 4px focus-ring), not outline.\n * Skeuomorphic: shadow-xs-skeuomorphic + gradient top rim (#ffffff1f).\n */\n\n/** Plain focus — Tertiary, Link color, Link gray (Figma Focus rings/focus-ring). */\nconst focusShadowPlain =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Skeuomorphic focus — Primary, Brand, Secondary (Figma focus-ring-shadow-xs-skeuomorphic). */\nconst focusShadowSkeuomorphic =\n \"focus-visible:outline-none focus-visible:[box-shadow:var(--shadow-xs-skeuomorphic),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Figma Gradient/skeuemorphic-gradient-border — 1px inner rim, strongest at top. */\nconst skeuomorphicGradientBorderClass = [\n \"ring-1 ring-inset ring-transparent\",\n \"before:pointer-events-none before:absolute before:inset-px before:rounded-[inherit] before:border before:border-[#ffffff1f] before:content-['']\",\n \"before:[mask-image:linear-gradient(to_bottom,#000,transparent)]\",\n].join(\" \");\n\nconst skeuomorphicShadowClass = [\"shadow-xs-skeuomorphic\", focusShadowSkeuomorphic, \"overflow-hidden\"].join(\" \");\n\n/** Secondary focus — shadow-xs + spread focus ring (Figma focus-ring-shadow-xs-skeuomorphic; keeps real border). */\nconst focusShadowSecondary =\n \"focus-visible:outline-none focus-visible:[box-shadow:0px_1px_2px_0px_rgba(0,0,0,0.05),0px_0px_0px_2px_var(--color-bg-primary),0px_0px_0px_4px_var(--color-focus-ring)]\";\n\n/** Secondary depth — bottom inset only; outer edge is border-primary (inner 1px rim stacks visually with border). */\nconst secondaryInnerShadow =\n \"after:pointer-events-none after:absolute after:inset-0 after:rounded-[inherit] after:content-[''] after:[box-shadow:inset_0px_-1px_0px_0px_rgba(0,0,0,0.05)]\";\n\nconst secondaryShadowClass = [\"relative overflow-hidden shadow-xs\", secondaryInnerShadow, focusShadowSecondary].join(\" \");\n\n/** Number input stepper buttons — shell owns border/focus; match outer rounded-lg corners. */\nconst inputNumberButtonClass =\n [\n \"in-data-number-input:border-0 in-data-number-input:shadow-none in-data-number-input:!rounded-none in-data-number-input:!h-full in-data-number-input:!min-h-0 in-data-number-input:self-stretch in-data-number-input:overflow-hidden\",\n \"in-data-number-input:before:hidden in-data-number-input:after:hidden\",\n \"in-data-number-input:focus-visible:outline-none in-data-number-input:focus-visible:shadow-none in-data-number-input:focus-visible:ring-0 in-data-number-input:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\n/** InputGroup addon buttons — shell owns outer border/corners; button is a flat inner segment (like NativeSelect). */\nconst inputAddonButtonClass =\n [\n \"in-data-input-wrapper:border-0 in-data-input-wrapper:shadow-none in-data-input-wrapper:!rounded-none in-data-input-wrapper:overflow-hidden\",\n \"in-data-input-wrapper:in-data-trailing:border-l in-data-input-wrapper:in-data-trailing:border-solid in-data-input-wrapper:in-data-trailing:border-primary\",\n \"in-data-input-wrapper:in-data-leading:border-r in-data-input-wrapper:in-data-leading:border-solid in-data-input-wrapper:in-data-leading:border-primary\",\n \"in-data-input-wrapper:group-invalid:in-data-trailing:border-error_subtle in-data-input-wrapper:group-invalid:in-data-leading:border-error_subtle\",\n \"in-data-input-wrapper:before:hidden in-data-input-wrapper:after:hidden\",\n \"in-data-input-wrapper:focus-visible:outline-none in-data-input-wrapper:focus-visible:shadow-none in-data-input-wrapper:focus-visible:ring-0 in-data-input-wrapper:focus-visible:![box-shadow:none]\",\n ].join(\" \");\n\nconst styles = sortCx({\n common: {\n root: [\n \"group relative inline-flex shrink-0 cursor-pointer items-center justify-center whitespace-nowrap rounded-full font-body outline-none before:absolute\",\n \"font-semibold transition-[color,background-color,border-color,box-shadow,opacity,transform] duration-150 ease-out\",\n \"pressed:scale-[0.985] pressed:duration-100 pressed:ease-linear motion-reduce:pressed:scale-100\",\n \"disabled:pointer-events-none disabled:cursor-not-allowed in-data-input-wrapper:disabled:opacity-100\",\n inputAddonButtonClass,\n inputNumberButtonClass,\n // Stretch to InputGroup row height; padding/typography follow `data-input-size` on the field (Figma 85:1269).\n \"in-data-input-wrapper:!h-full in-data-input-wrapper:!min-h-0 in-data-input-wrapper:self-stretch\",\n \"in-data-input-wrapper:in-data-[input-size=sm]:gap-1 in-data-input-wrapper:in-data-[input-size=sm]:px-3 in-data-input-wrapper:in-data-[input-size=sm]:py-2 in-data-input-wrapper:in-data-[input-size=sm]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=md]:gap-1 in-data-input-wrapper:in-data-[input-size=md]:px-3.5 in-data-input-wrapper:in-data-[input-size=md]:py-2.5 in-data-input-wrapper:in-data-[input-size=md]:text-sm\",\n \"in-data-input-wrapper:in-data-[input-size=lg]:gap-1.5 in-data-input-wrapper:in-data-[input-size=lg]:px-4 in-data-input-wrapper:in-data-[input-size=lg]:py-2.5 in-data-input-wrapper:in-data-[input-size=lg]:text-md\",\n \"*:data-icon:pointer-events-none *:data-icon:shrink-0 *:data-icon:transition-inherit-all\",\n ].join(\" \"),\n icon: \"pointer-events-none shrink-0 transition-inherit-all\",\n },\n sizes: {\n xs: {\n root: [\n \"h-8 min-h-8 gap-1 px-[0.625rem] py-1.5 text-sm data-icon-only:size-8 data-icon-only:min-h-8 data-icon-only:min-w-8 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-4\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n sm: {\n root: [\n \"h-9 min-h-9 gap-1 px-3 py-2 text-sm data-icon-only:size-9 data-icon-only:min-h-9 data-icon-only:min-w-9 data-icon-only:p-2\",\n \"in-data-input-wrapper:data-icon-only:p-2.5\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-3\",\n },\n md: {\n root: [\n \"h-10 min-h-10 gap-1 px-3.5 py-2.5 text-sm data-icon-only:size-10 data-icon-only:min-h-10 data-icon-only:min-w-10 data-icon-only:p-2.5\",\n \"in-data-input-wrapper:data-icon-only:p-3\",\n \"*:data-icon:size-5\",\n ].join(\" \"),\n linkRoot: \"h-auto min-h-0 gap-1 px-0! py-0! text-sm *:data-text:underline-offset-4\",\n },\n lg: {\n root: \"h-11 min-h-11 gap-1.5 px-4 py-2.5 text-md data-icon-only:size-11 data-icon-only:min-h-11 data-icon-only:min-w-11 data-icon-only:p-3 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n xl: {\n root: \"h-12 min-h-12 gap-1.5 px-[1.125rem] py-3 text-md data-icon-only:size-12 data-icon-only:min-h-12 data-icon-only:min-w-12 data-icon-only:p-3 data-icon-only:*:data-icon:size-6 *:data-icon:size-5\",\n linkRoot: \"h-auto min-h-0 gap-1.5 px-0! py-0! text-md *:data-text:underline-offset-4\",\n },\n },\n\n colors: {\n /** Figma Hierarchy=Primary — dark neutral solid; hover lightens to fg-tertiary_hover (#404040). */\n primary: {\n root: [\n \"bg-primary-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-fg-tertiary_hover dark:hover:bg-quaternary\",\n \"disabled:opacity-30\",\n \"data-loading:bg-fg-tertiary_hover dark:data-loading:bg-quaternary\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Brand — purple solid; hover darkens to bg-brand-solid_hover (#6d28d9). */\n brand: {\n root: [\n \"bg-brand-solid text-primary_on-brand\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-brand-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-brand-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-primary_on-brand\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Secondary — border-primary + shadow-xs + skeuomorphic inner rim overlay. */\n secondary: {\n root: [\n \"border border-solid border-primary bg-primary text-secondary\",\n secondaryShadowClass,\n \"hover:bg-primary_hover hover:text-secondary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-primary_hover\",\n \"*:data-icon:text-fg-secondary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Tertiary */\n tertiary: {\n root: [\n \"border border-transparent bg-transparent text-tertiary\",\n focusShadowPlain,\n \"hover:bg-primary_hover hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-tertiary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link color — text + icons share brand-secondary; hover underlines with fg-brand-secondary. */\n \"link-color\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-brand-secondary shadow-none\",\n focusShadowPlain,\n \"hover:text-brand-secondary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-brand-secondary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link gray — text + icons share tertiary; hover underlines with fg-quaternary. */\n \"link-gray\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-tertiary shadow-none\",\n focusShadowPlain,\n \"hover:text-tertiary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-fg-quaternary\",\n ].join(\" \"),\n },\n \"primary-destructive\": {\n root: [\n \"bg-error-solid text-white\",\n skeuomorphicShadowClass,\n skeuomorphicGradientBorderClass,\n \"hover:bg-error-solid_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-solid_hover\",\n \"*:data-icon:not([data-icon=loading]):text-white/70\",\n ].join(\" \"),\n },\n \"secondary-destructive\": {\n root: [\n \"border border-solid border-primary bg-primary text-error-primary\",\n secondaryShadowClass,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"data-loading:bg-error-primary\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n \"tertiary-destructive\": {\n root: [\n \"border border-transparent bg-transparent text-error-primary\",\n focusShadowPlain,\n \"hover:bg-error-primary hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-icon:text-fg-error-secondary hover:*:data-icon:text-fg-error-primary\",\n ].join(\" \"),\n },\n /** Figma Hierarchy=Link (destructive) — text + icons share error-primary; hover underlines. */\n \"link-destructive\": {\n root: [\n \"h-auto min-h-0 border-0 bg-transparent px-0! py-0! text-error-primary shadow-none\",\n focusShadowPlain,\n \"hover:text-error-primary_hover\",\n \"disabled:opacity-50\",\n \"*:data-text:underline *:data-text:decoration-transparent *:data-text:decoration-solid hover:*:data-text:decoration-current\",\n ].join(\" \"),\n },\n },\n});\n\n/**\n * Common props shared between button and anchor variants\n */\nexport interface CommonProps {\n /** Disables the button and shows a disabled state */\n isDisabled?: boolean;\n /** Shows a loading spinner and disables the button */\n isLoading?: boolean;\n /** The size variant of the button */\n size?: keyof typeof styles.sizes;\n /** The color variant of the button */\n color?: keyof typeof styles.colors;\n /** Icon component or element to show before the text */\n iconLeading?: FC<{ className?: string }> | ReactNode;\n /** Icon component or element to show after the text */\n iconTrailing?: FC<{ className?: string }> | ReactNode;\n /** Removes horizontal padding from the text content */\n noTextPadding?: boolean;\n /** When true, keeps the text visible during loading state */\n showTextWhileLoading?: boolean;\n\n children?: ReactNode;\n className?: string;\n}\n\n/**\n * Props for the button variant (non-link)\n */\nexport interface ButtonProps extends CommonProps, Omit<AriaButtonProps, \"children\" | \"className\"> {}\n/**\n * Props for the link variant (anchor tag)\n */\ninterface LinkProps extends CommonProps, Omit<AriaLinkProps, \"children\" | \"className\"> {\n href: NonNullable<AriaLinkProps[\"href\"]>;\n}\n\n/** Union type of button and link props */\nexport type Props = ButtonProps | LinkProps;\n\nexport const Button: {\n (props: LinkProps): ReactElement<LinkProps>;\n (props: ButtonProps): ReactElement<ButtonProps>;\n} = ({\n size = \"md\",\n color = \"primary\",\n children,\n className,\n noTextPadding,\n iconLeading: IconLeading,\n iconTrailing: IconTrailing,\n isDisabled: disabled,\n isLoading: loading,\n showTextWhileLoading,\n ...props\n}) => {\n const href = \"href\" in props ? props.href : undefined;\n\n const isIcon = (IconLeading || IconTrailing) && !children;\n const isLinkType = [\"link-gray\", \"link-color\", \"link-destructive\"].includes(color);\n\n noTextPadding = isLinkType || noTextPadding;\n\n const commonChildren = (\n <>\n {isValidElement(IconLeading) && IconLeading}\n {isReactComponent(IconLeading) && <IconLeading data-icon=\"leading\" className={styles.common.icon} />}\n\n {loading && (\n <svg\n fill=\"none\"\n data-icon=\"loading\"\n viewBox=\"0 0 256 256\"\n aria-hidden\n className={cx(\n styles.common.icon,\n \"size-5 animate-spin\",\n !showTextWhileLoading && \"absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2\",\n )}\n >\n <path\n fill=\"currentColor\"\n d=\"M232,128a104,104,0,0,1-208,0c0-41,23.81-78.36,60.66-95.27a8,8,0,0,1,6.68,14.54C60,61.46,40,93.27,40,128a88,88,0,0,0,176,0c0-34.73-20-66.54-51.34-80.73a8,8,0,0,1,6.68-14.54C208.19,49.64,232,87,232,128Z\"\n />\n </svg>\n )}\n\n {children && (\n <span data-text className={cx(\"transition-inherit-all\", !noTextPadding && !isLinkType && \"px-0.5\")}>\n {children}\n </span>\n )}\n\n {isValidElement(IconTrailing) && IconTrailing}\n {isReactComponent(IconTrailing) && <IconTrailing data-icon=\"trailing\" className={styles.common.icon} />}\n </>\n );\n\n const commonProps = {\n \"data-icon-only\": isIcon ? true : undefined,\n \"data-loading\": loading ? true : undefined,\n ...props,\n isDisabled: disabled || loading,\n className: cx(\n styles.common.root,\n styles.sizes[size].root,\n styles.colors[color].root,\n isLinkType && styles.sizes[size].linkRoot,\n (loading || (href && (disabled || loading))) && \"pointer-events-none\",\n loading && (showTextWhileLoading ? \"[&>*:not([data-icon=loading]):not([data-text])]:hidden\" : \"[&>*:not([data-icon=loading])]:invisible\"),\n className,\n ),\n children: commonChildren,\n };\n\n if (\"href\" in commonProps) {\n return <AriaLink {...commonProps} href={disabled || loading ? undefined : href} />;\n }\n\n return <AriaButton {...commonProps} type={commonProps.type || \"button\"} isPending={loading} />;\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport type { TextProps as AriaTextProps } from \"react-aria-components\";\nimport { Text as AriaText } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface HintTextProps extends AriaTextProps {\n /** Indicates that the hint text is an error message. */\n isInvalid?: boolean;\n ref?: Ref<HTMLElement>;\n size?: \"sm\" | \"md\";\n children: ReactNode;\n}\n\nexport const HintText = ({ isInvalid, className, size = \"md\", ...props }: HintTextProps) => {\n return (\n <AriaText\n {...props}\n slot={isInvalid ? \"errorMessage\" : \"description\"}\n className={cx(\n \"text-sm text-tertiary\",\n\n // Size\n size === \"sm\" && \"text-xs\",\n \"in-data-[input-size=sm]:text-xs\",\n\n // Invalid state\n isInvalid && \"text-error-primary\",\n \"group-invalid:text-error-primary\",\n\n className,\n )}\n />\n );\n};\n\nHintText.displayName = \"HintText\";\n","\"use client\";\n\n/** Figma: Tooltip (1052:485) */\n\nimport type { ReactNode } from \"react\";\nimport type {\n ButtonProps as AriaButtonProps,\n TooltipProps as AriaTooltipProps,\n TooltipTriggerComponentProps as AriaTooltipTriggerComponentProps,\n} from \"react-aria-components\";\nimport { Button as AriaButton, OverlayArrow as AriaOverlayArrow, Tooltip as AriaTooltip, TooltipTrigger as AriaTooltipTrigger } from \"react-aria-components\";\nimport { cx } from \"@/utils/cx\";\n\ninterface TooltipProps extends AriaTooltipTriggerComponentProps, Omit<AriaTooltipProps, \"children\"> {\n /**\n * The title of the tooltip.\n */\n title: ReactNode;\n /**\n * The description of the tooltip.\n */\n description?: ReactNode;\n /**\n * Whether to show the arrow on the tooltip.\n *\n * @default false\n */\n arrow?: boolean;\n /**\n * Delay in milliseconds before the tooltip is shown on first hover.\n *\n * @default 100\n */\n delay?: number;\n}\n\nexport const Tooltip = ({\n title,\n description,\n children,\n arrow = false,\n delay = 100,\n closeDelay = 0,\n trigger,\n isDisabled,\n isOpen,\n defaultOpen,\n offset = 6,\n crossOffset,\n placement = \"top\",\n onOpenChange,\n ...tooltipProps\n}: TooltipProps) => {\n const isTopOrBottomLeft = [\"top left\", \"top end\", \"bottom left\", \"bottom end\"].includes(placement);\n const isTopOrBottomRight = [\"top right\", \"top start\", \"bottom right\", \"bottom start\"].includes(placement);\n // Set negative cross offset for left and right placement to visually balance the tooltip.\n const calculatedCrossOffset = isTopOrBottomLeft ? -12 : isTopOrBottomRight ? 12 : 0;\n\n return (\n <AriaTooltipTrigger {...{ trigger, delay, closeDelay, isDisabled, isOpen, defaultOpen, onOpenChange }}>\n {children}\n\n <AriaTooltip\n {...tooltipProps}\n offset={offset}\n placement={placement}\n crossOffset={crossOffset ?? calculatedCrossOffset}\n className={({ isEntering, isExiting }) => cx(isEntering && \"ease-out animate-in\", isExiting && \"ease-in animate-out\")}\n >\n {({ isEntering, isExiting }) => (\n <div\n className={cx(\n \"z-50 flex max-w-xs origin-(--trigger-anchor-point) flex-col items-start gap-1 rounded-lg bg-primary-solid px-3 shadow-lg will-change-transform\",\n description ? \"py-3\" : \"py-2\",\n\n isEntering &&\n \"ease-out animate-in fade-in zoom-in-95 in-placement-left:slide-in-from-right-0.5 in-placement-right:slide-in-from-left-0.5 in-placement-top:slide-in-from-bottom-0.5 in-placement-bottom:slide-in-from-top-0.5\",\n isExiting &&\n \"ease-in animate-out fade-out zoom-out-95 in-placement-left:slide-out-to-right-0.5 in-placement-right:slide-out-to-left-0.5 in-placement-top:slide-out-to-bottom-0.5 in-placement-bottom:slide-out-to-top-0.5\",\n )}\n >\n <span className=\"text-xs font-semibold text-white\">{title}</span>\n\n {description && <span className=\"text-xs font-medium text-tooltip-supporting-text\">{description}</span>}\n\n {arrow && (\n <AriaOverlayArrow>\n <svg\n viewBox=\"0 0 100 100\"\n className=\"size-2.5 fill-bg-primary-solid in-placement-left:-rotate-90 in-placement-right:rotate-90 in-placement-top:rotate-0 in-placement-bottom:rotate-180\"\n >\n <path d=\"M0,0 L35.858,35.858 Q50,50 64.142,35.858 L100,0 Z\" />\n </svg>\n </AriaOverlayArrow>\n )}\n </div>\n )}\n </AriaTooltip>\n </AriaTooltipTrigger>\n );\n};\n\ninterface TooltipTriggerProps extends AriaButtonProps {}\n\nexport const TooltipTrigger = ({ children, className, ...buttonProps }: TooltipTriggerProps) => {\n return (\n <AriaButton {...buttonProps} className={(values) => cx(\"h-max w-max outline-hidden\", typeof className === \"function\" ? className(values) : className)}>\n {children}\n </AriaButton>\n );\n};\n","\"use client\";\n\nimport type { ReactNode, Ref } from \"react\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport type { LabelProps as AriaLabelProps } from \"react-aria-components\";\nimport { Label as AriaLabel } from \"react-aria-components\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx } from \"@/utils/cx\";\n\ninterface LabelProps extends AriaLabelProps {\n children: ReactNode;\n isInvalid?: boolean;\n isRequired?: boolean;\n tooltip?: string;\n tooltipDescription?: string;\n ref?: Ref<HTMLLabelElement>;\n}\n\nexport const Label = ({ isInvalid, isRequired, tooltip, tooltipDescription, className, ...props }: LabelProps) => {\n return (\n <AriaLabel\n // Used for conditionally hiding/showing the label element via CSS:\n // <Input label=\"Visible only on mobile\" className=\"lg:**:data-label:hidden\" />\n // or\n // <Input label=\"Visible only on mobile\" className=\"lg:label:hidden\" />\n data-label=\"true\"\n {...props}\n className={cx(\"flex cursor-default items-center gap-0.5 text-sm font-medium text-secondary\", className)}\n >\n {props.children}\n\n <span\n className={cx(\n \"hidden text-brand-tertiary\",\n isRequired && \"block\",\n typeof isRequired === \"undefined\" && \"group-required:block\",\n\n isInvalid && \"text-error-primary\",\n typeof isInvalid === \"undefined\" && \"group-invalid:text-error-primary\",\n )}\n >\n *\n </span>\n\n {tooltip && (\n <Tooltip title={tooltip} description={tooltipDescription} placement=\"top\">\n <TooltipTrigger\n // `TooltipTrigger` inherits the disabled state from the parent form field\n // but we don't that. We want the tooltip be enabled even if the parent\n // field is disabled.\n isDisabled={false}\n className=\"cursor-pointer text-fg-quaternary transition duration-200 hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\"\n >\n <HelpCircle className=\"size-4\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n </AriaLabel>\n );\n};\n\nLabel.displayName = \"Label\";\n","\"use client\";\n\nimport { type ComponentType, type HTMLAttributes, type ReactNode, type Ref, createContext, useContext, useState } from \"react\";\nimport { EyeIcon as Eye } from \"@phosphor-icons/react/dist/csr/Eye\";\nimport { EyeSlashIcon as EyeOff } from \"@phosphor-icons/react/dist/csr/EyeSlash\";\nimport { QuestionIcon as HelpCircle } from \"@phosphor-icons/react/dist/csr/Question\";\nimport { InfoIcon as InfoCircle } from \"@phosphor-icons/react/dist/csr/Info\";\nimport type { InputProps as AriaInputProps, TextFieldProps as AriaTextFieldProps } from \"react-aria-components\";\nimport { Button as AriaButton, Group as AriaGroup, Input as AriaInput, TextField as AriaTextField } from \"react-aria-components\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport { Label } from \"@/components/base/input/label\";\nimport { Tooltip, TooltipTrigger } from \"@/components/base/tooltip/tooltip\";\nimport { cx, sortCx } from \"@/utils/cx\";\n\n/**\n * Figma: Inputs (85:1269)\n *\n * Default: border (1px) border-primary + shadow-xs.\n * Focus: 1px border-brand + inset ring-brand (2px visual, no layout shift from border-2).\n * Error default: border-error_subtle; error focus: border-error + inset ring-error.\n */\nexport const inputFocusRingShadow = \"border-brand ring-1 ring-inset ring-brand\";\nexport const inputErrorFocusRingShadow = \"border-error ring-1 ring-inset ring-error\";\n/** Shell focus overlay — border + inset ring on one ::after above children (no host border-brand; avoids double-ring gap). */\nexport const inputFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-brand after:ring-1 after:ring-inset after:ring-brand after:content-['']\";\nexport const inputErrorFocusRingShellOverlay =\n \"after:pointer-events-none after:absolute after:-inset-px after:z-10 after:rounded-lg after:border after:border-solid after:border-error after:ring-1 after:ring-inset after:ring-error after:content-['']\";\nexport const inputErrorFocusRingGroupInvalidShellOverlay =\n \"group-invalid:focus-within:after:pointer-events-none group-invalid:focus-within:after:absolute group-invalid:focus-within:after:-inset-px group-invalid:focus-within:after:z-10 group-invalid:focus-within:after:rounded-lg group-invalid:focus-within:after:border group-invalid:focus-within:after:border-solid group-invalid:focus-within:after:border-error group-invalid:focus-within:after:ring-1 group-invalid:focus-within:after:ring-inset group-invalid:focus-within:after:ring-error group-invalid:focus-within:after:content-['']\";\nexport const inputFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-brand focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-brand\";\nexport const inputErrorFocusVisibleRingShadow =\n \"focus-visible:outline-none focus-visible:border-error focus-visible:ring-1 focus-visible:ring-inset focus-visible:ring-error\";\n\nexport interface InputBaseProps extends Omit<AriaInputProps, \"size\"> {\n /** Tooltip message on hover. */\n tooltip?: string;\n /** Whether the input is invalid. */\n isInvalid?: boolean;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /**\n * Input size.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Placeholder text. */\n placeholder?: string;\n /** Class name for the icon. */\n iconClassName?: string;\n /** Class name for the input. */\n inputClassName?: string;\n /** Class name for the input wrapper. */\n wrapperClassName?: string;\n /** Class name for the tooltip. */\n tooltipClassName?: string;\n /** Keyboard shortcut to display. */\n shortcut?: string | boolean;\n ref?: Ref<HTMLInputElement>;\n groupRef?: Ref<HTMLDivElement>;\n /** Icon component to display on the left side of the input. */\n icon?: ComponentType<HTMLAttributes<HTMLOrSVGElement>>;\n}\n\nexport const InputBase = ({\n ref,\n tooltip,\n shortcut,\n groupRef,\n size = \"md\",\n isInvalid,\n isDisabled,\n isRequired,\n icon: Icon,\n placeholder,\n wrapperClassName,\n tooltipClassName,\n inputClassName,\n iconClassName,\n type = \"text\",\n ...inputProps\n}: InputBaseProps) => {\n const [isPasswordVisible, setIsPasswordVisible] = useState(false);\n\n // Check if the input has a leading icon or tooltip\n const hasTrailingIcon = tooltip || isInvalid || type === \"password\";\n const hasLeadingIcon = Icon;\n\n // If the input is inside a `TextFieldContext`, use its context to simplify applying styles\n const context = useContext(TextFieldContext);\n\n const inputSize = context?.size || size;\n\n const sizes = sortCx({\n sm: {\n root: cx(\"px-3 py-2 text-sm\", hasLeadingIcon && \"pl-9\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-4 stroke-[2.25px]\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-1.5\",\n },\n md: {\n root: cx(\"px-3 py-2 text-md\", hasLeadingIcon && \"pl-10\", hasTrailingIcon && \"pr-9\"),\n iconLeading: \"left-3 size-5\",\n iconTrailing: \"right-3\",\n shortcut: \"pr-2\",\n },\n lg: {\n root: cx(\"px-3.5 py-2.5 text-md\", hasLeadingIcon && \"pl-10.5\", hasTrailingIcon && \"pr-9.5\"),\n iconLeading: \"left-3.5 size-5\",\n iconTrailing: \"right-3.5\",\n shortcut: \"pr-2.5\",\n },\n });\n\n return (\n <AriaGroup\n {...{ isDisabled, isInvalid }}\n ref={groupRef}\n className={({ isFocusWithin, isDisabled, isInvalid }) =>\n cx(\n \"group/input relative flex w-full flex-row place-content-center place-items-center rounded-lg border border-solid border-primary bg-primary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n isFocusWithin && !isDisabled && !isInvalid && inputFocusRingShadow,\n\n // Disabled state styles\n isDisabled && \"cursor-not-allowed opacity-50\",\n \"group-disabled:cursor-not-allowed group-disabled:opacity-50\",\n\n // Invalid state styles\n isInvalid && !isFocusWithin && \"border-error_subtle\",\n \"group-invalid:border-error_subtle\",\n \"group-invalid:focus-within:border-error group-invalid:focus-within:ring-1 group-invalid:focus-within:ring-inset group-invalid:focus-within:ring-error\",\n\n // Invalid + focus — darker error stroke (not brand)\n isInvalid && isFocusWithin && inputErrorFocusRingShadow,\n\n context?.wrapperClassName,\n wrapperClassName,\n )\n }\n >\n {/* Leading icon and Payment icon */}\n {Icon && (\n <Icon className={cx(\"pointer-events-none absolute text-fg-quaternary\", sizes[inputSize].iconLeading, context?.iconClassName, iconClassName)} />\n )}\n\n {/* Input field */}\n <AriaInput\n {...(inputProps as AriaInputProps)}\n ref={ref}\n required={isRequired}\n type={type === \"password\" && isPasswordVisible ? \"text\" : type}\n placeholder={placeholder}\n className={cx(\n \"m-0 w-full bg-transparent text-primary ring-0 outline-hidden placeholder:text-placeholder autofill:rounded-lg autofill:text-primary disabled:cursor-not-allowed\",\n sizes[inputSize].root,\n context?.inputClassName,\n inputClassName,\n )}\n />\n\n {/* Tooltip and help icon */}\n {tooltip && type !== \"password\" && (\n <Tooltip title={tooltip} placement=\"top\">\n <TooltipTrigger\n className={cx(\n \"absolute cursor-pointer text-fg-quaternary transition duration-100 ease-linear group-invalid/input:hidden hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n >\n <HelpCircle className=\"size-4 stroke-[2.25px]\" />\n </TooltipTrigger>\n </Tooltip>\n )}\n\n {/* Invalid icon */}\n {type !== \"password\" && (\n <InfoCircle\n className={cx(\n \"pointer-events-none absolute hidden size-4 stroke-[2.25px] text-fg-error-secondary group-invalid/input:block\",\n sizes[inputSize].iconTrailing,\n context?.tooltipClassName,\n tooltipClassName,\n )}\n />\n )}\n\n {/* Password visibility toggle */}\n {type === \"password\" && (\n <AriaButton\n aria-label=\"Toggle password visibility\"\n onClick={() => setIsPasswordVisible(!isPasswordVisible)}\n className={cx(\n \"absolute flex cursor-pointer items-center justify-center text-fg-quaternary transition duration-100 ease-linear hover:text-fg-quaternary_hover focus:text-fg-quaternary_hover focus:outline-hidden\",\n sizes[inputSize].iconTrailing,\n )}\n >\n {isPasswordVisible ? <EyeOff className=\"size-4 stroke-[2.25px]\" /> : <Eye className=\"size-4 stroke-[2.25px]\" />}\n </AriaButton>\n )}\n\n {/* Shortcut */}\n {shortcut && (\n <div\n className={cx(\n \"pointer-events-none absolute inset-y-0.5 right-0.5 z-10 hidden items-center rounded-r-[inherit] bg-linear-to-r from-transparent to-bg-primary to-40% pl-8 md:flex\",\n sizes[inputSize].shortcut,\n )}\n >\n <span\n aria-hidden=\"true\"\n className=\"pointer-events-none rounded px-1 py-px text-xs font-medium text-quaternary ring-1 ring-secondary select-none ring-inset\"\n >\n {typeof shortcut === \"string\" ? shortcut : \"⌘K\"}\n </span>\n </div>\n )}\n </AriaGroup>\n );\n};\n\nInputBase.displayName = \"InputBase\";\n\ninterface TextFieldContextProps extends Partial<Pick<InputBaseProps, \"size\" | \"wrapperClassName\" | \"inputClassName\" | \"iconClassName\" | \"tooltipClassName\">> {}\n\nconst TextFieldContext = createContext<TextFieldContextProps>({});\n\nexport interface TextFieldProps extends AriaTextFieldProps, TextFieldContextProps {}\n\nexport const TextField = ({ className, size = \"md\", inputClassName, wrapperClassName, iconClassName, tooltipClassName, ...props }: TextFieldProps) => {\n return (\n <TextFieldContext.Provider value={{ inputClassName, wrapperClassName, iconClassName, tooltipClassName, size }}>\n <AriaTextField\n {...props}\n data-input-wrapper\n data-input-size={size}\n className={(state) =>\n cx(\"group flex h-max w-full flex-col items-start justify-start gap-1.5\", typeof className === \"function\" ? className(state) : className)\n }\n />\n </TextFieldContext.Provider>\n );\n};\n\nTextField.displayName = \"TextField\";\n\nexport interface InputProps\n extends\n AriaTextFieldProps,\n Pick<\n InputBaseProps,\n | \"ref\"\n | \"placeholder\"\n | \"icon\"\n | \"shortcut\"\n | \"tooltip\"\n | \"groupRef\"\n | \"size\"\n | \"wrapperClassName\"\n | \"inputClassName\"\n | \"iconClassName\"\n | \"tooltipClassName\"\n > {\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide required indicator from label */\n hideRequiredIndicator?: boolean;\n}\n\nexport const Input = ({\n size = \"md\",\n placeholder,\n icon: Icon,\n label,\n hint,\n shortcut,\n hideRequiredIndicator,\n className,\n ref,\n groupRef,\n tooltip,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n type = \"text\",\n ...props\n}: InputProps) => {\n return (\n <TextField aria-label={!label ? placeholder : undefined} {...props} size={size} className={className}>\n {({ isRequired, isInvalid }) => (\n <>\n {label && (\n <Label isRequired={hideRequiredIndicator ? !hideRequiredIndicator : isRequired} isInvalid={isInvalid}>\n {label}\n </Label>\n )}\n\n <InputBase\n {...{\n ref,\n groupRef,\n size,\n placeholder,\n icon: Icon,\n shortcut,\n iconClassName,\n inputClassName,\n wrapperClassName,\n tooltipClassName,\n tooltip,\n type,\n isInvalid,\n }}\n />\n\n {hint && <HintText isInvalid={isInvalid}>{hint}</HintText>}\n </>\n )}\n </TextField>\n );\n};\n\nInput.displayName = \"Input\";\n","\"use client\";\n\nimport { type HTMLAttributes, type ReactNode } from \"react\";\nimport { HintText } from \"@/components/base/input/hint-text\";\nimport type { TextFieldProps } from \"@/components/base/input/input\";\nimport { TextField } from \"@/components/base/input/input\";\nimport { Label } from \"@/components/base/input/label\";\nimport { cx, sortCx } from \"@/utils/cx\";\n\n/** Inner field styles when the InputGroup shell owns the outer border (select or button addons). */\nconst inputGroupAddonInnerFieldClass =\n \"group-has-[select]:border-0 group-has-[select]:bg-transparent group-has-[select]:shadow-none group-has-[select]:ring-0 group-has-[select]:group-invalid:border-0 group-has-[select]:group-invalid:ring-0 group-has-[select]:group-invalid:shadow-none group-has-[select]:focus-within:border-0 group-has-[select]:focus-within:shadow-none group-has-[select]:focus-within:ring-0 group-has-[select]:group-invalid:focus-within:border-0 group-has-[select]:group-invalid:focus-within:ring-0 group-has-[section[data-trailing]_button]:border-0 group-has-[section[data-trailing]_button]:bg-transparent group-has-[section[data-trailing]_button]:shadow-none group-has-[section[data-trailing]_button]:ring-0 group-has-[section[data-trailing]_button]:group-invalid:border-0 group-has-[section[data-trailing]_button]:group-invalid:ring-0 group-has-[section[data-trailing]_button]:group-invalid:shadow-none group-has-[section[data-trailing]_button]:focus-within:border-0 group-has-[section[data-trailing]_button]:focus-within:shadow-none group-has-[section[data-trailing]_button]:focus-within:ring-0 group-has-[section[data-trailing]_button]:group-invalid:focus-within:border-0 group-has-[section[data-trailing]_button]:group-invalid:focus-within:ring-0 group-has-[section[data-leading]_button]:border-0 group-has-[section[data-leading]_button]:bg-transparent group-has-[section[data-leading]_button]:shadow-none group-has-[section[data-leading]_button]:ring-0 group-has-[section[data-leading]_button]:group-invalid:border-0 group-has-[section[data-leading]_button]:group-invalid:ring-0 group-has-[section[data-leading]_button]:group-invalid:shadow-none group-has-[section[data-leading]_button]:focus-within:border-0 group-has-[section[data-leading]_button]:focus-within:shadow-none group-has-[section[data-leading]_button]:focus-within:ring-0 group-has-[section[data-leading]_button]:group-invalid:focus-within:border-0 group-has-[section[data-leading]_button]:group-invalid:focus-within:ring-0\";\n\n/** Shell border when select or button addons are present (not InputPrefix — it keeps its own border). */\nconst inputGroupShellBorderClass =\n \"has-[select]:border has-[select]:border-solid has-[select]:border-primary has-[select]:shadow-xs has-[section[data-trailing]_button]:border has-[section[data-trailing]_button]:border-solid has-[section[data-trailing]_button]:border-primary has-[section[data-trailing]_button]:shadow-xs has-[section[data-leading]_button]:border has-[section[data-leading]_button]:border-solid has-[section[data-leading]_button]:border-primary has-[section[data-leading]_button]:shadow-xs\";\n\n/** Shell focus overlay — border + inset ring on one ::after (matches inputFocusRingShellOverlay). */\nconst inputGroupShellFocusClass =\n \"has-[select]:focus-within:after:pointer-events-none has-[select]:focus-within:after:absolute has-[select]:focus-within:after:-inset-px has-[select]:focus-within:after:z-10 has-[select]:focus-within:after:rounded-lg has-[select]:focus-within:after:border has-[select]:focus-within:after:border-solid has-[select]:focus-within:after:border-brand has-[select]:focus-within:after:ring-1 has-[select]:focus-within:after:ring-inset has-[select]:focus-within:after:ring-brand has-[select]:focus-within:after:content-[''] has-[section[data-trailing]_button]:focus-within:after:pointer-events-none has-[section[data-trailing]_button]:focus-within:after:absolute has-[section[data-trailing]_button]:focus-within:after:-inset-px has-[section[data-trailing]_button]:focus-within:after:z-10 has-[section[data-trailing]_button]:focus-within:after:rounded-lg has-[section[data-trailing]_button]:focus-within:after:border has-[section[data-trailing]_button]:focus-within:after:border-solid has-[section[data-trailing]_button]:focus-within:after:border-brand has-[section[data-trailing]_button]:focus-within:after:ring-1 has-[section[data-trailing]_button]:focus-within:after:ring-inset has-[section[data-trailing]_button]:focus-within:after:ring-brand has-[section[data-trailing]_button]:focus-within:after:content-[''] has-[section[data-leading]_button]:focus-within:after:pointer-events-none has-[section[data-leading]_button]:focus-within:after:absolute has-[section[data-leading]_button]:focus-within:after:-inset-px has-[section[data-leading]_button]:focus-within:after:z-10 has-[section[data-leading]_button]:focus-within:after:rounded-lg has-[section[data-leading]_button]:focus-within:after:border has-[section[data-leading]_button]:focus-within:after:border-solid has-[section[data-leading]_button]:focus-within:after:border-brand has-[section[data-leading]_button]:focus-within:after:ring-1 has-[section[data-leading]_button]:focus-within:after:ring-inset has-[section[data-leading]_button]:focus-within:after:ring-brand has-[section[data-leading]_button]:focus-within:after:content-['']\";\n\nconst inputGroupShellInvalidClass =\n \"has-[select]:border-error_subtle has-[select]:focus-within:after:pointer-events-none has-[select]:focus-within:after:absolute has-[select]:focus-within:after:-inset-px has-[select]:focus-within:after:z-10 has-[select]:focus-within:after:rounded-lg has-[select]:focus-within:after:border has-[select]:focus-within:after:border-solid has-[select]:focus-within:after:border-error has-[select]:focus-within:after:ring-1 has-[select]:focus-within:after:ring-inset has-[select]:focus-within:after:ring-error has-[select]:focus-within:after:content-[''] has-[section[data-trailing]_button]:border-error_subtle has-[section[data-trailing]_button]:focus-within:after:pointer-events-none has-[section[data-trailing]_button]:focus-within:after:absolute has-[section[data-trailing]_button]:focus-within:after:-inset-px has-[section[data-trailing]_button]:focus-within:after:z-10 has-[section[data-trailing]_button]:focus-within:after:rounded-lg has-[section[data-trailing]_button]:focus-within:after:border has-[section[data-trailing]_button]:focus-within:after:border-solid has-[section[data-trailing]_button]:focus-within:after:border-error has-[section[data-trailing]_button]:focus-within:after:ring-1 has-[section[data-trailing]_button]:focus-within:after:ring-inset has-[section[data-trailing]_button]:focus-within:after:ring-error has-[section[data-trailing]_button]:focus-within:after:content-[''] has-[section[data-leading]_button]:border-error_subtle has-[section[data-leading]_button]:focus-within:after:pointer-events-none has-[section[data-leading]_button]:focus-within:after:absolute has-[section[data-leading]_button]:focus-within:after:-inset-px has-[section[data-leading]_button]:focus-within:after:z-10 has-[section[data-leading]_button]:focus-within:after:rounded-lg has-[section[data-leading]_button]:focus-within:after:border has-[section[data-leading]_button]:focus-within:after:border-solid has-[section[data-leading]_button]:focus-within:after:border-error has-[section[data-leading]_button]:focus-within:after:ring-1 has-[section[data-leading]_button]:focus-within:after:ring-inset has-[section[data-leading]_button]:focus-within:after:ring-error has-[section[data-leading]_button]:focus-within:after:content-['']\";\n\ninterface InputPrefixProps extends HTMLAttributes<HTMLDivElement> {\n /** The position of the prefix. */\n position?: \"leading\" | \"trailing\";\n /** Indicates that the prefix is disabled. */\n isDisabled?: boolean;\n}\n\nexport const InputPrefix = ({ children, ...props }: InputPrefixProps) => (\n <span\n {...props}\n className={cx(\n \"flex h-full shrink-0 items-center self-stretch border border-solid border-primary bg-primary text-tertiary shadow-xs transition-[border-color,box-shadow] duration-100 ease-linear\",\n // Match InputBase invalid stroke when inside InputGroup\n \"in-data-input-wrapper:group-invalid:border-error_subtle in-data-input-wrapper:group-invalid:group-focus-within:border-error\",\n // Styles when the prefix is within an `InputGroup`\n \"in-data-input-wrapper:in-data-leading:-mr-px in-data-input-wrapper:in-data-leading:rounded-l-lg in-data-input-wrapper:in-data-leading:rounded-r-none in-data-input-wrapper:in-data-leading:border-r-0\",\n \"in-data-input-wrapper:in-data-trailing:-ml-px in-data-input-wrapper:in-data-trailing:rounded-r-lg in-data-input-wrapper:in-data-trailing:rounded-l-none in-data-input-wrapper:in-data-trailing:border-l-0\",\n // Default size styles — mirror InputBase input padding / typography\n \"px-3 py-2 text-md\",\n // Small size styles\n \"in-data-input-wrapper:in-data-[input-size=sm]:px-3 in-data-input-wrapper:in-data-[input-size=sm]:py-2 in-data-input-wrapper:in-data-[input-size=sm]:text-sm\",\n // Large size styles\n \"in-data-input-wrapper:in-data-[input-size=lg]:px-3.5 in-data-input-wrapper:in-data-[input-size=lg]:py-2.5 in-data-input-wrapper:in-data-[input-size=lg]:text-md\",\n\n props.className,\n )}\n >\n {children}\n </span>\n);\n\n// `${string}ClassName` is used to omit any className prop that ends with a `ClassName` suffix\ninterface InputGroupProps extends TextFieldProps {\n /** A prefix text that is displayed in the same box as the input.*/\n prefix?: string;\n /** A leading addon that is displayed with visual separation from the input. */\n leadingAddon?: ReactNode;\n /** A trailing addon that is displayed with visual separation from the input. */\n trailingAddon?: ReactNode;\n /** The class name to apply to the input group. */\n className?: string;\n /** The children of the input group (i.e `<InputBase />`) */\n children: ReactNode;\n /** Label text for the input */\n label?: string;\n /** Helper text displayed below the input */\n hint?: ReactNode;\n /** Whether to hide the required indicator from the label. */\n hideRequiredIndicator?: boolean;\n}\n\nexport const InputGroup = ({ size = \"md\", prefix, leadingAddon, trailingAddon, label, hint, hideRequiredIndicator, children, ...props }: InputGroupProps) => {\n const hasLeading = !!leadingAddon;\n const hasTrailing = !!trailingAddon;\n\n const paddings = sortCx({\n sm: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9 group-has-[select]:pl-2\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-1.5 pl-3\",\n },\n md: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9 group-has-[select]:pl-2.5\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-2 pl-3\",\n },\n lg: {\n input: cx(\n // Apply padding styles when select element is passed as a child\n hasLeading && \"group-has-[select]:pr-9.5 group-has-[select]:pl-3\",\n hasTrailing && (prefix ? \"group-has-[select]:pr-6 group-has-[select]:pl-0\" : \"group-has-[select]:pr-6 group-has-[select]:pl-3\"),\n ),\n leadingText: \"pr-2 pl-3.5\",\n },\n });\n\n return (\n <TextField\n size={size}\n aria-label={label || undefined}\n inputClassName={cx(paddings[size].input)}\n tooltipClassName={cx(hasTrailing && !hasLeading && \"group-has-[select]:right-0\")}\n wrapperClassName={cx(\n \"z-10\",\n // Apply styles based on the presence of leading or trailing elements\n hasLeading && \"rounded-l-none\",\n hasTrailing && \"rounded-r-none\",\n inputGroupAddonInnerFieldClass,\n )}\n {...props}\n >\n {({ isDisabled, isInvalid, isRequired }) => (\n <>\n {label && <Label isRequired={hideRequiredIndicator ? false : isRequired}>{label}</Label>}\n\n <div\n // Used to apply styles based on the size of the input group within children\n data-input-size={size}\n className={cx(\n \"group relative flex h-max w-full flex-row items-stretch overflow-clip rounded-lg bg-primary transition-[border-color,box-shadow] duration-100 ease-linear\",\n\n // Single outer shell for select / button addons (Figma 85:1269)\n inputGroupShellBorderClass,\n !isInvalid && inputGroupShellFocusClass,\n isInvalid && inputGroupShellInvalidClass,\n\n isDisabled && \"cursor-not-allowed\",\n )}\n >\n {leadingAddon && (\n <section data-leading={hasLeading || undefined} className=\"flex shrink-0 self-stretch group-disabled:opacity-50 *:h-full\">\n {leadingAddon}\n </section>\n )}\n\n {prefix && (\n <span className={cx(\"my-auto grow group-disabled:opacity-50\", paddings[size].leadingText)}>\n <p className={cx(\"text-md text-tertiary\", size === \"sm\" && \"text-sm\")}>{prefix}</p>\n </span>\n )}\n\n {children}\n\n {trailingAddon && (\n <section data-trailing={hasTrailing || undefined} className=\"flex shrink-0 self-stretch group-disabled:opacity-50 *:h-full\">\n {trailingAddon}\n </section>\n )}\n </div>\n\n {hint && (\n <HintText isInvalid={isInvalid} className={cx(size === \"sm\" && \"text-xs\")}>\n {hint}\n </HintText>\n )}\n </>\n )}\n </TextField>\n );\n};\n\nInputGroup.Prefix = InputPrefix;\n\nInputGroup.displayName = \"InputGroup\";\n","\"use client\";\n\nimport type { ReactNode } from \"react\";\nimport { useRef, useState } from \"react\";\nimport { Button } from \"@/components/base/buttons/button\";\nimport { InputBase } from \"@/components/base/input/input\";\nimport { InputGroup } from \"@/components/base/input/input-group\";\nimport { cx } from \"@/utils/cx\";\n\ninterface InputFileProps {\n /**\n * The size of the input.\n * @default \"sm\"\n */\n size?: \"sm\" | \"md\" | \"lg\";\n /** Label text for the input. */\n label?: string;\n /** Helper text displayed below the input. */\n hint?: ReactNode;\n /** Placeholder text displayed when no file is selected. */\n placeholder?: string;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is invalid. */\n isInvalid?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to hide the required indicator from the label. */\n hideRequiredIndicator?: boolean;\n /** Specifies what mime type of files are allowed. */\n acceptedFileTypes?: string[];\n /** Whether multiple files can be selected. */\n allowsMultiple?: boolean;\n /** Whether the file is currently uploading. */\n isLoading?: boolean;\n /** Handler when a user selects files. */\n onChange?: (files: FileList | null) => void;\n /** The class name for the root element. */\n className?: string;\n /**\n * The text of the upload button.\n * @default \"Upload\"\n */\n buttonText?: string;\n}\n\nexport const InputFile = ({\n size = \"sm\",\n label,\n hint,\n placeholder = \"Choose a file\",\n isDisabled,\n isInvalid,\n isRequired,\n hideRequiredIndicator,\n isLoading,\n acceptedFileTypes,\n allowsMultiple,\n onChange,\n className,\n buttonText = \"Upload\",\n}: InputFileProps) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [fileNames, setFileNames] = useState(\"\");\n\n const handleClick = () => {\n if (inputRef.current?.value) {\n inputRef.current.value = \"\";\n }\n inputRef.current?.click();\n };\n\n const handleChange = () => {\n const files = inputRef.current?.files ?? null;\n if (files && files.length > 0) {\n setFileNames(\n Array.from(files)\n .map((f) => f.name)\n .join(\", \"),\n );\n } else {\n setFileNames(\"\");\n }\n onChange?.(files);\n };\n\n return (\n <>\n <InputGroup\n size={size}\n label={label}\n hint={hint}\n isDisabled={isDisabled}\n isInvalid={isInvalid}\n isRequired={isRequired}\n hideRequiredIndicator={hideRequiredIndicator}\n className={className}\n trailingAddon={\n <Button size={size} color=\"secondary\" onClick={handleClick} isDisabled={isDisabled}>\n {buttonText}\n </Button>\n }\n >\n <div className=\"relative flex min-w-0 flex-1\">\n <InputBase\n placeholder={placeholder}\n value={fileNames}\n readOnly\n inputClassName={cx(\"cursor-pointer\", isLoading && \"pr-9\")}\n wrapperClassName=\"cursor-pointer\"\n onClick={handleClick}\n />\n {isLoading && (\n <svg fill=\"none\" viewBox=\"0 0 16 16\" className=\"pointer-events-none absolute top-1/2 right-3 z-20 size-4 -translate-y-1/2 text-fg-quaternary\">\n <circle className=\"stroke-current opacity-30\" cx=\"8\" cy=\"8\" r=\"6.5\" strokeWidth=\"1.5\" />\n <circle\n className=\"origin-center animate-spin stroke-current\"\n cx=\"8\"\n cy=\"8\"\n r=\"6.5\"\n strokeWidth=\"1.5\"\n strokeDasharray=\"10 40\"\n strokeLinecap=\"round\"\n />\n </svg>\n )}\n </div>\n </InputGroup>\n\n <input\n ref={inputRef}\n type=\"file\"\n className=\"hidden\"\n disabled={isDisabled}\n accept={acceptedFileTypes?.toString()}\n multiple={allowsMultiple}\n onChange={handleChange}\n />\n </>\n );\n};\n\nInputFile.displayName = \"InputFile\";\n"]}