@aurora-is-near/intents-swap-widget 3.17.0 → 3.17.2

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 (131) hide show
  1. package/dist/components/Input.d.ts +8 -2
  2. package/dist/components/Input.js +88 -84
  3. package/dist/components/Input.js.map +1 -1
  4. package/dist/{config-BMe2x51b.js → config-BVaLnxO9.js} +804 -788
  5. package/dist/config-BVaLnxO9.js.map +1 -0
  6. package/dist/config.js +6 -5
  7. package/dist/config.js.map +1 -1
  8. package/dist/errors.js +1 -1
  9. package/dist/ext/alchemy/index.js +1 -1
  10. package/dist/ext/index.js +1 -1
  11. package/dist/features/BalanceRpcLoader/TokenBalanceLoader.js +1 -1
  12. package/dist/features/BalanceRpcLoader/index.js +1 -1
  13. package/dist/features/BalanceRpcLoader/useTokenBalanceRpc.js +1 -1
  14. package/dist/features/ChainsDropdown/index.js +1 -1
  15. package/dist/features/DepositMethodSwitcher.js +1 -1
  16. package/dist/features/ErrorBoundary.js +1 -1
  17. package/dist/features/ExternalDeposit.js +5 -4
  18. package/dist/features/ExternalDeposit.js.map +1 -1
  19. package/dist/features/SendAddress/index.js +1 -1
  20. package/dist/features/SendAddress/useNotification.js +1 -1
  21. package/dist/features/SubmitButton/index.js +1 -1
  22. package/dist/features/SuccessScreen/index.js +1 -1
  23. package/dist/features/SwapDirectionSwitcher.js +1 -1
  24. package/dist/features/SwapQuote/SwapQuote.js +1 -1
  25. package/dist/features/SwapQuote/index.js +1 -1
  26. package/dist/features/TokenInput/TokenInput.js +1 -1
  27. package/dist/features/TokenInput/TokenInputEmpty.js +1 -1
  28. package/dist/features/TokenInput/TokenInputSource.js +1 -1
  29. package/dist/features/TokenInput/TokenInputTarget.js +1 -1
  30. package/dist/features/TokenInput/WalletBalance.js +1 -1
  31. package/dist/features/TokenInput/hooks/index.js +1 -1
  32. package/dist/features/TokenInput/hooks/useTokenInputBalance.js +1 -1
  33. package/dist/features/TokenInput/index.js +1 -1
  34. package/dist/features/TokensList/TokenItem.js +1 -1
  35. package/dist/features/TokensList/TokensList.js +1 -1
  36. package/dist/features/TokensList/index.js +1 -1
  37. package/dist/features/TokensModal.js +64 -55
  38. package/dist/features/TokensModal.js.map +1 -1
  39. package/dist/features/WalletCompatibilityCheck/WalletCompatibilityModal.js +3 -3
  40. package/dist/features/WalletCompatibilityCheck/index.js +1 -1
  41. package/dist/features/index.js +1 -1
  42. package/dist/hooks/index.js +1 -1
  43. package/dist/hooks/useAllTokens.js +1 -1
  44. package/dist/hooks/useChains.js +1 -1
  45. package/dist/hooks/useCompatibilityCheck.js +1 -1
  46. package/dist/hooks/useDefaultToken.js +1 -1
  47. package/dist/hooks/useExternalDepositStatus/index.js +1 -1
  48. package/dist/hooks/useExternalDepositStatus/usePoaExternalDepositStatus.js +1 -1
  49. package/dist/hooks/useHandleKeyDown.d.ts +1 -1
  50. package/dist/hooks/useHandleKeyDown.js +12 -8
  51. package/dist/hooks/useHandleKeyDown.js.map +1 -1
  52. package/dist/hooks/useIntentsBalance.js +1 -1
  53. package/dist/hooks/useIsCompatibilityCheckRequired.js +1 -1
  54. package/dist/hooks/useMakeDepositAddress.js +1 -1
  55. package/dist/hooks/useMakeIntentsTransfer.js +4 -3
  56. package/dist/hooks/useMakeIntentsTransfer.js.map +1 -1
  57. package/dist/hooks/useMakeNEARFtTransferCall.js +4 -2
  58. package/dist/hooks/useMakeNEARFtTransferCall.js.map +1 -1
  59. package/dist/hooks/useMakeQuote.js +1 -1
  60. package/dist/hooks/useMakeQuoteTransfer.js +3 -2
  61. package/dist/hooks/useMakeQuoteTransfer.js.map +1 -1
  62. package/dist/hooks/useMakeSolanaTransfer.js +1 -1
  63. package/dist/hooks/useMakeTransfer.js +1 -1
  64. package/dist/hooks/useMergedBalance.js +1 -1
  65. package/dist/hooks/useSwitchChain.js +1 -1
  66. package/dist/hooks/useTheme.js +1 -1
  67. package/dist/hooks/useTokenInputPair.js +1 -1
  68. package/dist/hooks/useTokens.js +1 -1
  69. package/dist/hooks/useTokensFiltered.js +1 -1
  70. package/dist/hooks/useTokensIntentsUnique.js +1 -1
  71. package/dist/{index-Ce9bzNHX.js → index-JGjxyZXI.js} +70 -70
  72. package/dist/index-JGjxyZXI.js.map +1 -0
  73. package/dist/index.browser.esm-COWShN0a.js.map +1 -1
  74. package/dist/index.js +1 -1
  75. package/dist/machine/effects/index.js +1 -1
  76. package/dist/machine/effects/useAlchemyBalanceEffect.js +1 -1
  77. package/dist/machine/effects/useBalancesUpdateEffect.js +1 -1
  78. package/dist/machine/effects/useMakeQuoteEffect.js +1 -1
  79. package/dist/machine/effects/useSelectedTokensEffect.js +1 -1
  80. package/dist/machine/effects/useSetTokenBalanceEffect.js +1 -1
  81. package/dist/machine/effects/useSetTokenIntentsTargetEffect.js +1 -1
  82. package/dist/machine/effects/useWalletConnEffect.js +1 -1
  83. package/dist/machine/events/index.js +1 -1
  84. package/dist/machine/events/tokenSelect.js +1 -1
  85. package/dist/machine/events/validateInputAndMoveTo.js +1 -1
  86. package/dist/machine/events/validateInputs.js +1 -1
  87. package/dist/machine/index.js +1 -1
  88. package/dist/machine/snap.js +1 -1
  89. package/dist/machine/subscriptions/checkers/isSendAddressAsConnected.js +1 -1
  90. package/dist/machine/subscriptions/index.js +1 -1
  91. package/dist/theme/ThemeProvider.js +1 -1
  92. package/dist/utils/checkers/isUserDeniedSigning.d.ts +2 -1
  93. package/dist/utils/checkers/isUserDeniedSigning.js +6 -4
  94. package/dist/utils/checkers/isUserDeniedSigning.js.map +1 -1
  95. package/dist/utils/index.d.ts +1 -0
  96. package/dist/utils/index.js +26 -24
  97. package/dist/utils/index.js.map +1 -1
  98. package/dist/utils/intents/signers/near.d.ts +1 -1
  99. package/dist/utils/intents/signers/near.js +2 -2
  100. package/dist/utils/intents/signers/privy.d.ts +1 -1
  101. package/dist/utils/intents/signers/privy.js +1 -1
  102. package/dist/utils/intents/signers/solana.d.ts +1 -1
  103. package/dist/utils/intents/signers/solana.js.map +1 -1
  104. package/dist/utils/isErrorLikeObject.d.ts +4 -0
  105. package/dist/utils/isErrorLikeObject.js +5 -0
  106. package/dist/utils/isErrorLikeObject.js.map +1 -0
  107. package/dist/utils/near/getNearNep141StorageBalance.js +1 -1
  108. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js +5 -4
  109. package/dist/widgets/WidgetDeposit/WidgetDepositContent.js.map +1 -1
  110. package/dist/widgets/WidgetDeposit/WidgetDepositSkeleton.js +1 -1
  111. package/dist/widgets/WidgetSwap/WidgetSwapContent.js +5 -4
  112. package/dist/widgets/WidgetSwap/WidgetSwapContent.js.map +1 -1
  113. package/dist/widgets/WidgetSwap/WidgetSwapSkeleton.js +1 -1
  114. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js +5 -4
  115. package/dist/widgets/WidgetWithdraw/WidgetWithdrawContent.js.map +1 -1
  116. package/dist/widgets/WidgetWithdraw/WidgetWithdrawSkeleton.js +1 -1
  117. package/package.json +2 -2
  118. package/src/components/Input.tsx +111 -96
  119. package/src/features/TokensModal.tsx +19 -2
  120. package/src/hooks/useHandleKeyDown.ts +25 -3
  121. package/src/hooks/useMakeIntentsTransfer.ts +40 -29
  122. package/src/hooks/useMakeNEARFtTransferCall.ts +10 -0
  123. package/src/hooks/useMakeQuoteTransfer.ts +2 -1
  124. package/src/utils/checkers/isUserDeniedSigning.ts +11 -3
  125. package/src/utils/index.ts +1 -0
  126. package/src/utils/intents/signers/near.ts +1 -1
  127. package/src/utils/intents/signers/privy.ts +1 -1
  128. package/src/utils/intents/signers/solana.ts +1 -1
  129. package/src/utils/isErrorLikeObject.ts +11 -0
  130. package/dist/config-BMe2x51b.js.map +0 -1
  131. package/dist/index-Ce9bzNHX.js.map +0 -1
@@ -1,5 +1,4 @@
1
1
  import { InputProps } from '@headlessui/react';
2
- import { PropsWithChildren } from 'react';
3
2
  import { LucideIcon } from 'lucide-react';
4
3
  type State = 'default' | 'disabled' | 'error' | 'fixed';
5
4
  export type Props = Omit<InputProps, 'size'> & {
@@ -8,5 +7,12 @@ export type Props = Omit<InputProps, 'size'> & {
8
7
  focusOnMount?: boolean;
9
8
  state?: State;
10
9
  };
11
- export declare const Input: ({ state, defaultValue, focusOnMount, className, onChange, children, icon: Icon, ...inputProps }: PropsWithChildren<Props>) => import("react/jsx-runtime").JSX.Element;
10
+ export declare const Input: import('react').ForwardRefExoticComponent<Omit<InputProps, "size"> & {
11
+ icon?: LucideIcon;
12
+ defaultValue?: string;
13
+ focusOnMount?: boolean;
14
+ state?: State;
15
+ } & {
16
+ children?: import('react').ReactNode | undefined;
17
+ } & import('react').RefAttributes<HTMLInputElement>>;
12
18
  export {};
@@ -1,92 +1,96 @@
1
- import { jsx as s, jsxs as m } from "react/jsx-runtime";
2
- import { useRef as F, useState as w, useEffect as p, Fragment as I } from "react";
3
- import { Input as j } from "@headlessui/react";
4
- import * as B from "lucide-react";
5
- import { cn as n } from "../utils/cn.js";
6
- const E = ({
7
- state: e = "default",
8
- defaultValue: r = "",
9
- focusOnMount: x = !1,
10
- className: y,
11
- onChange: i,
12
- children: b,
13
- icon: u,
14
- ...c
15
- }) => {
16
- const d = F(null), [t, f] = w(!1), [a, o] = w(r), h = () => f(!0), v = () => f(!1), N = () => {
17
- o(""), i?.({
18
- target: { value: "" }
19
- });
20
- }, C = (g) => {
21
- o(g.target.value), i?.(g);
22
- };
23
- p(() => {
24
- o(r);
25
- }, [r]), p(() => {
26
- x && d.current?.focus();
27
- }, []);
28
- const l = ["disabled", "fixed"].includes(e);
29
- return /* @__PURE__ */ s(
30
- j,
31
- {
32
- type: "text",
33
- as: I,
34
- disabled: l,
35
- autoComplete: "off",
36
- className: n(
37
- "px-sw-lg py-sw-lg text-sw-label-md rounded-sw-md ring-transparent ring-1 ring-inset data-focus:outline-none transition-colors bg-sw-gray-800",
38
- {
39
- "text-sw-gray-400 bg-sw-gray-800": e === "fixed",
40
- "text-sw-status-error bg-sw-gray-800": e === "error",
41
- "text-sw-gray-50 bg-sw-gray-700": t && e === "default",
42
- "text-sw-gray-50 hover:bg-sw-gray-700": !t && e === "default",
43
- "cursor-not-allowed bg-sw-gray-800 text-sw-gray-400": e === "disabled"
44
- },
45
- y
46
- ),
47
- ...c,
48
- children: () => /* @__PURE__ */ m("div", { className: "flex items-center justify-between", children: [
49
- u && /* @__PURE__ */ s(u, { size: 16, className: "mr-sw-md text-sw-gray-200" }),
50
- /* @__PURE__ */ s(
51
- "input",
1
+ import { jsx as t, jsxs as m } from "react/jsx-runtime";
2
+ import { forwardRef as F, useRef as j, useImperativeHandle as R, useState as w, useEffect as p, Fragment as B } from "react";
3
+ import { Input as k } from "@headlessui/react";
4
+ import * as z from "lucide-react";
5
+ import { cn as i } from "../utils/cn.js";
6
+ const X = F(
7
+ ({
8
+ state: e = "default",
9
+ defaultValue: r = "",
10
+ focusOnMount: x = !1,
11
+ className: y,
12
+ onChange: u,
13
+ children: b,
14
+ icon: c,
15
+ ...d
16
+ }, h) => {
17
+ const a = j(null);
18
+ R(h, () => a.current);
19
+ const [s, f] = w(!1), [o, n] = w(r), v = () => f(!0), N = () => f(!1), I = () => {
20
+ n(""), u?.({
21
+ target: { value: "" }
22
+ });
23
+ }, C = (g) => {
24
+ n(g.target.value), u?.(g);
25
+ };
26
+ p(() => {
27
+ n(r);
28
+ }, [r]), p(() => {
29
+ x && a.current?.focus();
30
+ }, []);
31
+ const l = ["disabled", "fixed"].includes(e);
32
+ return /* @__PURE__ */ t(
33
+ k,
34
+ {
35
+ type: "text",
36
+ as: B,
37
+ disabled: l,
38
+ autoComplete: "off",
39
+ className: i(
40
+ "px-sw-lg py-sw-lg text-sw-label-md rounded-sw-md ring-transparent ring-1 ring-inset data-focus:outline-none transition-colors bg-sw-gray-800",
52
41
  {
53
- value: a,
54
- ref: d,
55
- onBlur: v,
56
- onFocus: h,
57
- onChange: C,
58
- disabled: l,
59
- placeholder: c.placeholder,
60
- autoComplete: "off",
61
- className: n("text-sw-label-md mr-auto w-full outline-none", {
62
- "cursor-not-allowed": e === "disabled"
63
- })
64
- }
42
+ "text-sw-gray-400 bg-sw-gray-800": e === "fixed",
43
+ "text-sw-status-error bg-sw-gray-800": e === "error",
44
+ "text-sw-gray-50 bg-sw-gray-700": s && e === "default",
45
+ "text-sw-gray-50 hover:bg-sw-gray-700": !s && e === "default",
46
+ "cursor-not-allowed bg-sw-gray-800 text-sw-gray-400": e === "disabled"
47
+ },
48
+ y
65
49
  ),
66
- !l && /* @__PURE__ */ m("div", { className: "gap-sw-md relative flex items-center justify-end", children: [
67
- b,
68
- a ? /* @__PURE__ */ s(
69
- "button",
50
+ ...d,
51
+ children: () => /* @__PURE__ */ m("div", { className: "flex items-center justify-between", children: [
52
+ c && /* @__PURE__ */ t(c, { size: 16, className: "mr-sw-md text-sw-gray-200" }),
53
+ /* @__PURE__ */ t(
54
+ "input",
70
55
  {
71
- type: "button",
72
- className: n(
73
- "opacity-0 transition-opacity duration-150 ease-in-out hover:text-sw-gray-50",
74
- {
75
- "cursor-pointer opacity-100": !!a,
76
- "cursor-default text-sw-gray-200": t,
77
- "cursor-default text-sw-gray-300": !t
78
- }
79
- ),
80
- onClick: N,
81
- children: /* @__PURE__ */ s(B.X, { className: "h-sw-xl w-sw-xl" })
56
+ value: o,
57
+ ref: a,
58
+ onBlur: N,
59
+ onFocus: v,
60
+ onChange: C,
61
+ disabled: l,
62
+ placeholder: d.placeholder,
63
+ autoComplete: "off",
64
+ className: i("text-sw-label-md mr-auto w-full outline-none", {
65
+ "cursor-not-allowed": e === "disabled"
66
+ })
82
67
  }
83
- ) : null
68
+ ),
69
+ !l && /* @__PURE__ */ m("div", { className: "gap-sw-md relative flex items-center justify-end", children: [
70
+ b,
71
+ o ? /* @__PURE__ */ t(
72
+ "button",
73
+ {
74
+ type: "button",
75
+ className: i(
76
+ "opacity-0 transition-opacity duration-150 ease-in-out hover:text-sw-gray-50",
77
+ {
78
+ "cursor-pointer opacity-100": !!o,
79
+ "cursor-default text-sw-gray-200": s,
80
+ "cursor-default text-sw-gray-300": !s
81
+ }
82
+ ),
83
+ onClick: I,
84
+ children: /* @__PURE__ */ t(z.X, { className: "h-sw-xl w-sw-xl" })
85
+ }
86
+ ) : null
87
+ ] })
84
88
  ] })
85
- ] })
86
- }
87
- );
88
- };
89
+ }
90
+ );
91
+ }
92
+ );
89
93
  export {
90
- E as Input
94
+ X as Input
91
95
  };
92
96
  //# sourceMappingURL=Input.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import { Fragment, useEffect, useRef, useState } from 'react';\nimport { Input as UIInput } from '@headlessui/react';\nimport type { InputProps } from '@headlessui/react';\nimport type { PropsWithChildren } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport * as Icons from 'lucide-react';\n\nimport { cn } from '@/utils/cn';\n\ntype State = 'default' | 'disabled' | 'error' | 'fixed';\n\nexport type Props = Omit<InputProps, 'size'> & {\n icon?: LucideIcon;\n defaultValue?: string;\n focusOnMount?: boolean;\n state?: State;\n};\n\nexport const Input = ({\n state = 'default',\n defaultValue = '',\n focusOnMount = false,\n className,\n onChange,\n children,\n icon: Icon,\n ...inputProps\n}: PropsWithChildren<Props>) => {\n const inputRef = useRef<HTMLInputElement>(null);\n const [isFocused, setIsFocused] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n const handleFocus = () => setIsFocused(true);\n const handleBlur = () => setIsFocused(false);\n const handleClear = () => {\n setValue('');\n onChange?.({\n target: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (focusOnMount) {\n inputRef.current?.focus();\n }\n }, []);\n\n const inputDisabled = ['disabled', 'fixed'].includes(state);\n\n return (\n <UIInput\n type=\"text\"\n as={Fragment}\n disabled={inputDisabled}\n autoComplete=\"off\"\n className={cn(\n 'px-sw-lg py-sw-lg text-sw-label-md rounded-sw-md ring-transparent ring-1 ring-inset data-focus:outline-none transition-colors bg-sw-gray-800',\n {\n 'text-sw-gray-400 bg-sw-gray-800': state === 'fixed',\n 'text-sw-status-error bg-sw-gray-800': state === 'error',\n 'text-sw-gray-50 bg-sw-gray-700': isFocused && state === 'default',\n 'text-sw-gray-50 hover:bg-sw-gray-700':\n !isFocused && state === 'default',\n 'cursor-not-allowed bg-sw-gray-800 text-sw-gray-400':\n state === 'disabled',\n },\n className,\n )}\n {...inputProps}>\n {() => (\n <div className=\"flex items-center justify-between\">\n {Icon && <Icon size={16} className=\"mr-sw-md text-sw-gray-200\" />}\n <input\n value={value}\n ref={inputRef}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={onInputChange}\n disabled={inputDisabled}\n placeholder={inputProps.placeholder}\n autoComplete=\"off\"\n className={cn('text-sw-label-md mr-auto w-full outline-none', {\n 'cursor-not-allowed': state === 'disabled',\n })}\n />\n {!inputDisabled && (\n <div className=\"gap-sw-md relative flex items-center justify-end\">\n {children}\n {value ? (\n <button\n type=\"button\"\n className={cn(\n 'opacity-0 transition-opacity duration-150 ease-in-out hover:text-sw-gray-50',\n {\n 'cursor-pointer opacity-100': !!value,\n 'cursor-default text-sw-gray-200': isFocused,\n 'cursor-default text-sw-gray-300': !isFocused,\n },\n )}\n onClick={handleClear}>\n <Icons.X className=\"h-sw-xl w-sw-xl\" />\n </button>\n ) : null}\n </div>\n )}\n </div>\n )}\n </UIInput>\n );\n};\n"],"names":["Input","state","defaultValue","focusOnMount","className","onChange","children","Icon","inputProps","inputRef","useRef","isFocused","setIsFocused","useState","value","setValue","handleFocus","handleBlur","handleClear","onInputChange","e","useEffect","inputDisabled","jsx","UIInput","Fragment","cn","jsxs","Icons"],"mappings":";;;;;AAkBO,MAAMA,IAAQ,CAAC;AAAA,EACpB,OAAAC,IAAQ;AAAA,EACR,cAAAC,IAAe;AAAA,EACf,cAAAC,IAAe;AAAA,EACf,WAAAC;AAAA,EACA,UAAAC;AAAA,EACA,UAAAC;AAAA,EACA,MAAMC;AAAA,EACN,GAAGC;AACL,MAAgC;AAC9B,QAAMC,IAAWC,EAAyB,IAAI,GACxC,CAACC,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAOC,CAAQ,IAAIF,EAASX,CAAY,GAEzCc,IAAc,MAAMJ,EAAa,EAAI,GACrCK,IAAa,MAAML,EAAa,EAAK,GACrCM,IAAc,MAAM;AACxB,IAAAH,EAAS,EAAE,GACXV,IAAW;AAAA,MACT,QAAQ,EAAE,OAAO,GAAA;AAAA,IAAG,CACkB;AAAA,EAC1C,GAEMc,IAAgB,CAACC,MAA2C;AAChE,IAAAL,EAASK,EAAE,OAAO,KAAK,GACvBf,IAAWe,CAAC;AAAA,EACd;AAEA,EAAAC,EAAU,MAAM;AACd,IAAAN,EAASb,CAAY;AAAA,EACvB,GAAG,CAACA,CAAY,CAAC,GAEjBmB,EAAU,MAAM;AACd,IAAIlB,KACFM,EAAS,SAAS,MAAA;AAAA,EAEtB,GAAG,CAAA,CAAE;AAEL,QAAMa,IAAgB,CAAC,YAAY,OAAO,EAAE,SAASrB,CAAK;AAE1D,SACE,gBAAAsB;AAAA,IAACC;AAAAA,IAAA;AAAA,MACC,MAAK;AAAA,MACL,IAAIC;AAAA,MACJ,UAAUH;AAAA,MACV,cAAa;AAAA,MACb,WAAWI;AAAA,QACT;AAAA,QACA;AAAA,UACE,mCAAmCzB,MAAU;AAAA,UAC7C,uCAAuCA,MAAU;AAAA,UACjD,kCAAkCU,KAAaV,MAAU;AAAA,UACzD,wCACE,CAACU,KAAaV,MAAU;AAAA,UAC1B,sDACEA,MAAU;AAAA,QAAA;AAAA,QAEdG;AAAA,MAAA;AAAA,MAED,GAAGI;AAAA,MACH,UAAA,MACC,gBAAAmB,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,QAAApB,KAAQ,gBAAAgB,EAAChB,GAAA,EAAK,MAAM,IAAI,WAAU,6BAA4B;AAAA,QAC/D,gBAAAgB;AAAA,UAAC;AAAA,UAAA;AAAA,YACC,OAAAT;AAAA,YACA,KAAKL;AAAA,YACL,QAAQQ;AAAA,YACR,SAASD;AAAA,YACT,UAAUG;AAAA,YACV,UAAUG;AAAA,YACV,aAAad,EAAW;AAAA,YACxB,cAAa;AAAA,YACb,WAAWkB,EAAG,gDAAgD;AAAA,cAC5D,sBAAsBzB,MAAU;AAAA,YAAA,CACjC;AAAA,UAAA;AAAA,QAAA;AAAA,QAEF,CAACqB,KACA,gBAAAK,EAAC,OAAA,EAAI,WAAU,oDACZ,UAAA;AAAA,UAAArB;AAAA,UACAQ,IACC,gBAAAS;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,MAAK;AAAA,cACL,WAAWG;AAAA,gBACT;AAAA,gBACA;AAAA,kBACE,8BAA8B,CAAC,CAACZ;AAAA,kBAChC,mCAAmCH;AAAA,kBACnC,mCAAmC,CAACA;AAAA,gBAAA;AAAA,cACtC;AAAA,cAEF,SAASO;AAAA,cACT,UAAA,gBAAAK,EAACK,EAAM,GAAN,EAAQ,WAAU,kBAAA,CAAkB;AAAA,YAAA;AAAA,UAAA,IAErC;AAAA,QAAA,EAAA,CACN;AAAA,MAAA,EAAA,CAEJ;AAAA,IAAA;AAAA,EAAA;AAIR;"}
1
+ {"version":3,"file":"Input.js","sources":["../../src/components/Input.tsx"],"sourcesContent":["import {\n forwardRef,\n Fragment,\n useEffect,\n useImperativeHandle,\n useRef,\n useState,\n} from 'react';\nimport { Input as UIInput } from '@headlessui/react';\nimport type { InputProps } from '@headlessui/react';\nimport type { PropsWithChildren } from 'react';\nimport type { LucideIcon } from 'lucide-react';\nimport * as Icons from 'lucide-react';\n\nimport { cn } from '@/utils/cn';\n\ntype State = 'default' | 'disabled' | 'error' | 'fixed';\n\nexport type Props = Omit<InputProps, 'size'> & {\n icon?: LucideIcon;\n defaultValue?: string;\n focusOnMount?: boolean;\n state?: State;\n};\n\nexport const Input = forwardRef<HTMLInputElement, PropsWithChildren<Props>>(\n (\n {\n state = 'default',\n defaultValue = '',\n focusOnMount = false,\n className,\n onChange,\n children,\n icon: Icon,\n ...inputProps\n },\n ref,\n ) => {\n const inputRef = useRef<HTMLInputElement>(null);\n\n useImperativeHandle(ref, () => inputRef.current!);\n\n const [isFocused, setIsFocused] = useState(false);\n const [value, setValue] = useState(defaultValue);\n\n const handleFocus = () => setIsFocused(true);\n const handleBlur = () => setIsFocused(false);\n const handleClear = () => {\n setValue('');\n onChange?.({\n target: { value: '' },\n } as React.ChangeEvent<HTMLInputElement>);\n };\n\n const onInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n setValue(e.target.value);\n onChange?.(e);\n };\n\n useEffect(() => {\n setValue(defaultValue);\n }, [defaultValue]);\n\n useEffect(() => {\n if (focusOnMount) {\n inputRef.current?.focus();\n }\n }, []);\n\n const inputDisabled = ['disabled', 'fixed'].includes(state);\n\n return (\n <UIInput\n type=\"text\"\n as={Fragment}\n disabled={inputDisabled}\n autoComplete=\"off\"\n className={cn(\n 'px-sw-lg py-sw-lg text-sw-label-md rounded-sw-md ring-transparent ring-1 ring-inset data-focus:outline-none transition-colors bg-sw-gray-800',\n {\n 'text-sw-gray-400 bg-sw-gray-800': state === 'fixed',\n 'text-sw-status-error bg-sw-gray-800': state === 'error',\n 'text-sw-gray-50 bg-sw-gray-700': isFocused && state === 'default',\n 'text-sw-gray-50 hover:bg-sw-gray-700':\n !isFocused && state === 'default',\n 'cursor-not-allowed bg-sw-gray-800 text-sw-gray-400':\n state === 'disabled',\n },\n className,\n )}\n {...inputProps}>\n {() => (\n <div className=\"flex items-center justify-between\">\n {Icon && <Icon size={16} className=\"mr-sw-md text-sw-gray-200\" />}\n <input\n value={value}\n ref={inputRef}\n onBlur={handleBlur}\n onFocus={handleFocus}\n onChange={onInputChange}\n disabled={inputDisabled}\n placeholder={inputProps.placeholder}\n autoComplete=\"off\"\n className={cn('text-sw-label-md mr-auto w-full outline-none', {\n 'cursor-not-allowed': state === 'disabled',\n })}\n />\n {!inputDisabled && (\n <div className=\"gap-sw-md relative flex items-center justify-end\">\n {children}\n {value ? (\n <button\n type=\"button\"\n className={cn(\n 'opacity-0 transition-opacity duration-150 ease-in-out hover:text-sw-gray-50',\n {\n 'cursor-pointer opacity-100': !!value,\n 'cursor-default text-sw-gray-200': isFocused,\n 'cursor-default text-sw-gray-300': !isFocused,\n },\n )}\n onClick={handleClear}>\n <Icons.X className=\"h-sw-xl w-sw-xl\" />\n </button>\n ) : null}\n </div>\n )}\n </div>\n )}\n </UIInput>\n );\n },\n);\n"],"names":["Input","forwardRef","state","defaultValue","focusOnMount","className","onChange","children","Icon","inputProps","ref","inputRef","useRef","useImperativeHandle","isFocused","setIsFocused","useState","value","setValue","handleFocus","handleBlur","handleClear","onInputChange","e","useEffect","inputDisabled","jsx","UIInput","Fragment","cn","jsxs","Icons"],"mappings":";;;;;AAyBO,MAAMA,IAAQC;AAAA,EACnB,CACE;AAAA,IACE,OAAAC,IAAQ;AAAA,IACR,cAAAC,IAAe;AAAA,IACf,cAAAC,IAAe;AAAA,IACf,WAAAC;AAAA,IACA,UAAAC;AAAA,IACA,UAAAC;AAAA,IACA,MAAMC;AAAA,IACN,GAAGC;AAAA,EAAA,GAELC,MACG;AACH,UAAMC,IAAWC,EAAyB,IAAI;AAE9C,IAAAC,EAAoBH,GAAK,MAAMC,EAAS,OAAQ;AAEhD,UAAM,CAACG,GAAWC,CAAY,IAAIC,EAAS,EAAK,GAC1C,CAACC,GAAOC,CAAQ,IAAIF,EAASb,CAAY,GAEzCgB,IAAc,MAAMJ,EAAa,EAAI,GACrCK,IAAa,MAAML,EAAa,EAAK,GACrCM,IAAc,MAAM;AACxB,MAAAH,EAAS,EAAE,GACXZ,IAAW;AAAA,QACT,QAAQ,EAAE,OAAO,GAAA;AAAA,MAAG,CACkB;AAAA,IAC1C,GAEMgB,IAAgB,CAACC,MAA2C;AAChE,MAAAL,EAASK,EAAE,OAAO,KAAK,GACvBjB,IAAWiB,CAAC;AAAA,IACd;AAEA,IAAAC,EAAU,MAAM;AACd,MAAAN,EAASf,CAAY;AAAA,IACvB,GAAG,CAACA,CAAY,CAAC,GAEjBqB,EAAU,MAAM;AACd,MAAIpB,KACFO,EAAS,SAAS,MAAA;AAAA,IAEtB,GAAG,CAAA,CAAE;AAEL,UAAMc,IAAgB,CAAC,YAAY,OAAO,EAAE,SAASvB,CAAK;AAE1D,WACE,gBAAAwB;AAAA,MAACC;AAAAA,MAAA;AAAA,QACC,MAAK;AAAA,QACL,IAAIC;AAAA,QACJ,UAAUH;AAAA,QACV,cAAa;AAAA,QACb,WAAWI;AAAA,UACT;AAAA,UACA;AAAA,YACE,mCAAmC3B,MAAU;AAAA,YAC7C,uCAAuCA,MAAU;AAAA,YACjD,kCAAkCY,KAAaZ,MAAU;AAAA,YACzD,wCACE,CAACY,KAAaZ,MAAU;AAAA,YAC1B,sDACEA,MAAU;AAAA,UAAA;AAAA,UAEdG;AAAA,QAAA;AAAA,QAED,GAAGI;AAAA,QACH,UAAA,MACC,gBAAAqB,EAAC,OAAA,EAAI,WAAU,qCACZ,UAAA;AAAA,UAAAtB,KAAQ,gBAAAkB,EAAClB,GAAA,EAAK,MAAM,IAAI,WAAU,6BAA4B;AAAA,UAC/D,gBAAAkB;AAAA,YAAC;AAAA,YAAA;AAAA,cACC,OAAAT;AAAA,cACA,KAAKN;AAAA,cACL,QAAQS;AAAA,cACR,SAASD;AAAA,cACT,UAAUG;AAAA,cACV,UAAUG;AAAA,cACV,aAAahB,EAAW;AAAA,cACxB,cAAa;AAAA,cACb,WAAWoB,EAAG,gDAAgD;AAAA,gBAC5D,sBAAsB3B,MAAU;AAAA,cAAA,CACjC;AAAA,YAAA;AAAA,UAAA;AAAA,UAEF,CAACuB,KACA,gBAAAK,EAAC,OAAA,EAAI,WAAU,oDACZ,UAAA;AAAA,YAAAvB;AAAA,YACAU,IACC,gBAAAS;AAAA,cAAC;AAAA,cAAA;AAAA,gBACC,MAAK;AAAA,gBACL,WAAWG;AAAA,kBACT;AAAA,kBACA;AAAA,oBACE,8BAA8B,CAAC,CAACZ;AAAA,oBAChC,mCAAmCH;AAAA,oBACnC,mCAAmC,CAACA;AAAA,kBAAA;AAAA,gBACtC;AAAA,gBAEF,SAASO;AAAA,gBACT,UAAA,gBAAAK,EAACK,EAAM,GAAN,EAAQ,WAAU,kBAAA,CAAkB;AAAA,cAAA;AAAA,YAAA,IAErC;AAAA,UAAA,EAAA,CACN;AAAA,QAAA,EAAA,CAEJ;AAAA,MAAA;AAAA,IAAA;AAAA,EAIR;AACF;"}