@daimo/pay 1.15.0 → 1.16.1

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 (375) hide show
  1. package/build/components/DaimoPayButton/index.d.ts +13 -0
  2. package/build/hooks/useConnect.d.ts +8 -8
  3. package/build/hooks/useLocales.d.ts +2 -1
  4. package/build/hooks/useWalletPaymentOptions.d.ts +12 -1
  5. package/build/index.d.ts +626 -15
  6. package/build/localizations/locales/en-US.d.ts +2 -0
  7. package/build/localizations/locales/index.d.ts +1 -0
  8. package/build/package.json.js +6 -4
  9. package/build/package.json.js.map +1 -1
  10. package/build/payment/paymentFsm.d.ts +5 -0
  11. package/build/payment/paymentUtils.d.ts +6 -0
  12. package/build/src/assets/MobileWithLogos.js +320 -1
  13. package/build/src/assets/MobileWithLogos.js.map +1 -1
  14. package/build/src/assets/ScanIconWithLogos.js +216 -10
  15. package/build/src/assets/ScanIconWithLogos.js.map +1 -1
  16. package/build/src/assets/browsers.js +963 -7
  17. package/build/src/assets/browsers.js.map +1 -1
  18. package/build/src/assets/chains.js +633 -103
  19. package/build/src/assets/chains.js.map +1 -1
  20. package/build/src/assets/coins.js +38 -1
  21. package/build/src/assets/coins.js.map +1 -1
  22. package/build/src/assets/crepe.js +35 -1
  23. package/build/src/assets/crepe.js.map +1 -1
  24. package/build/src/assets/icons.js +258 -15
  25. package/build/src/assets/icons.js.map +1 -1
  26. package/build/src/assets/logos.js +1510 -140
  27. package/build/src/assets/logos.js.map +1 -1
  28. package/build/src/assets/wallet.js +32 -1
  29. package/build/src/assets/wallet.js.map +1 -1
  30. package/build/src/assets/wave.js +41 -1
  31. package/build/src/assets/wave.js.map +1 -1
  32. package/build/src/components/Common/Alert/index.js +4 -1
  33. package/build/src/components/Common/Alert/index.js.map +1 -1
  34. package/build/src/components/Common/Alert/styles.js +4 -4
  35. package/build/src/components/Common/Alert/styles.js.map +1 -1
  36. package/build/src/components/Common/AmountInput/AmountInputField.js +29 -18
  37. package/build/src/components/Common/AmountInput/AmountInputField.js.map +1 -1
  38. package/build/src/components/Common/AmountInput/index.js +112 -99
  39. package/build/src/components/Common/AmountInput/index.js.map +1 -1
  40. package/build/src/components/Common/Avatar/index.js +63 -51
  41. package/build/src/components/Common/Avatar/index.js.map +1 -1
  42. package/build/src/components/Common/Avatar/styles.js +9 -14
  43. package/build/src/components/Common/Avatar/styles.js.map +1 -1
  44. package/build/src/components/Common/BrowserIcon/index.js +15 -14
  45. package/build/src/components/Common/BrowserIcon/index.js.map +1 -1
  46. package/build/src/components/Common/BrowserIcon/styles.js +1 -1
  47. package/build/src/components/Common/BrowserIcon/styles.js.map +1 -1
  48. package/build/src/components/Common/Button/index.js +131 -25
  49. package/build/src/components/Common/Button/index.js.map +1 -1
  50. package/build/src/components/Common/Button/styles.js +20 -24
  51. package/build/src/components/Common/Button/styles.js.map +1 -1
  52. package/build/src/components/Common/Chain/index.js +130 -14
  53. package/build/src/components/Common/Chain/index.js.map +1 -1
  54. package/build/src/components/Common/Chain/styles.js +9 -13
  55. package/build/src/components/Common/Chain/styles.js.map +1 -1
  56. package/build/src/components/Common/ChainSelectList/index.js +232 -89
  57. package/build/src/components/Common/ChainSelectList/index.js.map +1 -1
  58. package/build/src/components/Common/ChainSelectList/styles.js +11 -13
  59. package/build/src/components/Common/ChainSelectList/styles.js.map +1 -1
  60. package/build/src/components/Common/CircleTimer.js +85 -41
  61. package/build/src/components/Common/CircleTimer.js.map +1 -1
  62. package/build/src/components/Common/ConnectorList/index.js +106 -80
  63. package/build/src/components/Common/ConnectorList/index.js.map +1 -1
  64. package/build/src/components/Common/ConnectorList/styles.js +28 -36
  65. package/build/src/components/Common/ConnectorList/styles.js.map +1 -1
  66. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +16 -9
  67. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -1
  68. package/build/src/components/Common/CopyToClipboard/index.js +3 -5
  69. package/build/src/components/Common/CopyToClipboard/index.js.map +1 -1
  70. package/build/src/components/Common/CustomQRCode/QRCode.js +120 -57
  71. package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -1
  72. package/build/src/components/Common/CustomQRCode/index.js +60 -10
  73. package/build/src/components/Common/CustomQRCode/index.js.map +1 -1
  74. package/build/src/components/Common/CustomQRCode/styles.js +6 -6
  75. package/build/src/components/Common/CustomQRCode/styles.js.map +1 -1
  76. package/build/src/components/Common/FitText/index.js +24 -17
  77. package/build/src/components/Common/FitText/index.js.map +1 -1
  78. package/build/src/components/Common/Modal/index.js +481 -267
  79. package/build/src/components/Common/Modal/index.js.map +1 -1
  80. package/build/src/components/Common/Modal/styles.js +44 -48
  81. package/build/src/components/Common/Modal/styles.js.map +1 -1
  82. package/build/src/components/Common/OptionsList/index.js +75 -33
  83. package/build/src/components/Common/OptionsList/index.js.map +1 -1
  84. package/build/src/components/Common/OptionsList/styles.js +7 -8
  85. package/build/src/components/Common/OptionsList/styles.js.map +1 -1
  86. package/build/src/components/Common/OrderHeader/index.js +109 -65
  87. package/build/src/components/Common/OrderHeader/index.js.map +1 -1
  88. package/build/src/components/Common/PaymentBreakdown/index.js +29 -7
  89. package/build/src/components/Common/PaymentBreakdown/index.js.map +1 -1
  90. package/build/src/components/Common/Portal/index.js +21 -22
  91. package/build/src/components/Common/Portal/index.js.map +1 -1
  92. package/build/src/components/Common/PoweredByFooter/index.js +39 -21
  93. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
  94. package/build/src/components/Common/ScrollArea/index.js +107 -52
  95. package/build/src/components/Common/ScrollArea/index.js.map +1 -1
  96. package/build/src/components/Common/ScrollArea/styles.js +7 -11
  97. package/build/src/components/Common/ScrollArea/styles.js.map +1 -1
  98. package/build/src/components/Common/SelectAnotherMethodButton/index.js +67 -55
  99. package/build/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -1
  100. package/build/src/components/Common/Spinner/index.js +56 -16
  101. package/build/src/components/Common/Spinner/index.js.map +1 -1
  102. package/build/src/components/Common/Spinner/styles.js +2 -2
  103. package/build/src/components/Common/Spinner/styles.js.map +1 -1
  104. package/build/src/components/Common/SwitchButton/index.js +18 -15
  105. package/build/src/components/Common/SwitchButton/index.js.map +1 -1
  106. package/build/src/components/Common/ThemedButton/index.js +37 -16
  107. package/build/src/components/Common/ThemedButton/index.js.map +1 -1
  108. package/build/src/components/Common/ThemedButton/styles.js +2 -2
  109. package/build/src/components/Common/ThemedButton/styles.js.map +1 -1
  110. package/build/src/components/Common/TokenChainLogo/index.js +14 -8
  111. package/build/src/components/Common/TokenChainLogo/index.js.map +1 -1
  112. package/build/src/components/Common/Tooltip/index.js +115 -83
  113. package/build/src/components/Common/Tooltip/index.js.map +1 -1
  114. package/build/src/components/Common/Tooltip/styles.js +8 -8
  115. package/build/src/components/Common/Tooltip/styles.js.map +1 -1
  116. package/build/src/components/Common/WalletChainLogo/index.js +13 -6
  117. package/build/src/components/Common/WalletChainLogo/index.js.map +1 -1
  118. package/build/src/components/DaimoPayButton/index.js +170 -176
  119. package/build/src/components/DaimoPayButton/index.js.map +1 -1
  120. package/build/src/components/DaimoPayButton/styles.js +4 -4
  121. package/build/src/components/DaimoPayButton/styles.js.map +1 -1
  122. package/build/src/components/DaimoPayModal/ConnectUsing.js +50 -24
  123. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -1
  124. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +303 -163
  125. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -1
  126. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +10 -12
  127. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -1
  128. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +69 -39
  129. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  130. package/build/src/components/DaimoPayModal/index.js +409 -416
  131. package/build/src/components/DaimoPayModal/index.js.map +1 -1
  132. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +15 -11
  133. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -1
  134. package/build/src/components/Pages/About/graphics.js +796 -130
  135. package/build/src/components/Pages/About/graphics.js.map +1 -1
  136. package/build/src/components/Pages/About/index.js +203 -110
  137. package/build/src/components/Pages/About/index.js.map +1 -1
  138. package/build/src/components/Pages/About/styles.js +11 -15
  139. package/build/src/components/Pages/About/styles.js.map +1 -1
  140. package/build/src/components/Pages/Confirmation/index.js +72 -41
  141. package/build/src/components/Pages/Confirmation/index.js.map +1 -1
  142. package/build/src/components/Pages/Connectors/index.js +50 -16
  143. package/build/src/components/Pages/Connectors/index.js.map +1 -1
  144. package/build/src/components/Pages/Connectors/styles.js +10 -10
  145. package/build/src/components/Pages/Connectors/styles.js.map +1 -1
  146. package/build/src/components/Pages/DownloadApp/index.js +23 -18
  147. package/build/src/components/Pages/DownloadApp/index.js.map +1 -1
  148. package/build/src/components/Pages/Error/index.js +27 -15
  149. package/build/src/components/Pages/Error/index.js.map +1 -1
  150. package/build/src/components/Pages/MobileConnectors/index.js +50 -44
  151. package/build/src/components/Pages/MobileConnectors/index.js.map +1 -1
  152. package/build/src/components/Pages/MobileConnectors/styles.js +9 -11
  153. package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -1
  154. package/build/src/components/Pages/Onboarding/index.js +20 -4
  155. package/build/src/components/Pages/Onboarding/index.js.map +1 -1
  156. package/build/src/components/Pages/Onboarding/styles.js +13 -13
  157. package/build/src/components/Pages/Onboarding/styles.js.map +1 -1
  158. package/build/src/components/Pages/PayWithToken/index.js +133 -122
  159. package/build/src/components/Pages/PayWithToken/index.js.map +1 -1
  160. package/build/src/components/Pages/SelectAmount/index.js +12 -5
  161. package/build/src/components/Pages/SelectAmount/index.js.map +1 -1
  162. package/build/src/components/Pages/SelectDepositAddressAmount/index.js +56 -38
  163. package/build/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -1
  164. package/build/src/components/Pages/SelectDepositAddressChain/index.js +57 -40
  165. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -1
  166. package/build/src/components/Pages/SelectExchange/index.js +29 -24
  167. package/build/src/components/Pages/SelectExchange/index.js.map +1 -1
  168. package/build/src/components/Pages/SelectExternalAmount/index.js +57 -41
  169. package/build/src/components/Pages/SelectExternalAmount/index.js.map +1 -1
  170. package/build/src/components/Pages/SelectMethod/index.js +201 -183
  171. package/build/src/components/Pages/SelectMethod/index.js.map +1 -1
  172. package/build/src/components/Pages/SelectToken/index.js +72 -46
  173. package/build/src/components/Pages/SelectToken/index.js.map +1 -1
  174. package/build/src/components/Pages/SelectWalletAmount/index.js +40 -32
  175. package/build/src/components/Pages/SelectWalletAmount/index.js.map +1 -1
  176. package/build/src/components/Pages/SelectWalletChain/index.js +40 -36
  177. package/build/src/components/Pages/SelectWalletChain/index.js.map +1 -1
  178. package/build/src/components/Pages/SelectZKP/index.js +29 -24
  179. package/build/src/components/Pages/SelectZKP/index.js.map +1 -1
  180. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +60 -45
  181. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -1
  182. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +73 -61
  183. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -1
  184. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js +12 -5
  185. package/build/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -1
  186. package/build/src/components/Pages/SwitchNetworks/index.js +29 -10
  187. package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -1
  188. package/build/src/components/Pages/WaitingDepositAddress/index.js +339 -178
  189. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -1
  190. package/build/src/components/Pages/WaitingExternal/index.js +69 -46
  191. package/build/src/components/Pages/WaitingExternal/index.js.map +1 -1
  192. package/build/src/components/Pages/WaitingWallet/index.js +37 -16
  193. package/build/src/components/Pages/WaitingWallet/index.js.map +1 -1
  194. package/build/src/components/Spinners/CircleSpinner/index.js +96 -7
  195. package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -1
  196. package/build/src/components/Spinners/CircleSpinner/styles.js +6 -7
  197. package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -1
  198. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js +18 -9
  199. package/build/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -1
  200. package/build/src/components/Spinners/SquircleSpinner/index.js +60 -7
  201. package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -1
  202. package/build/src/components/Spinners/SquircleSpinner/styles.js +4 -4
  203. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -1
  204. package/build/src/components/Spinners/TokenLogoSpinner/index.js +12 -1
  205. package/build/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -1
  206. package/build/src/components/Spinners/TokenLogoSpinner/styles.js +1 -1
  207. package/build/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -1
  208. package/build/src/components/Spinners/WalletPaymentSpinner/index.js +27 -20
  209. package/build/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -1
  210. package/build/src/components/Spinners/styles.js +3 -4
  211. package/build/src/components/Spinners/styles.js.map +1 -1
  212. package/build/src/constants/defaultTheme.js +1 -1
  213. package/build/src/constants/defaultTheme.js.map +1 -1
  214. package/build/src/constants/routes.js +29 -30
  215. package/build/src/constants/routes.js.map +1 -1
  216. package/build/src/defaultConfig.js +49 -46
  217. package/build/src/defaultConfig.js.map +1 -1
  218. package/build/src/defaultConnectors.js +32 -19
  219. package/build/src/defaultConnectors.js.map +1 -1
  220. package/build/src/hooks/useChainIsSupported.js +3 -5
  221. package/build/src/hooks/useChainIsSupported.js.map +1 -1
  222. package/build/src/hooks/useChains.js +3 -4
  223. package/build/src/hooks/useChains.js.map +1 -1
  224. package/build/src/hooks/useConnect.js +51 -39
  225. package/build/src/hooks/useConnect.js.map +1 -1
  226. package/build/src/hooks/useConnectCallback.js +15 -12
  227. package/build/src/hooks/useConnectCallback.js.map +1 -1
  228. package/build/src/hooks/useConnectors.js +2 -2
  229. package/build/src/hooks/useConnectors.js.map +1 -1
  230. package/build/src/hooks/useDaimoPay.js +98 -82
  231. package/build/src/hooks/useDaimoPay.js.map +1 -1
  232. package/build/src/hooks/useDaimoPayStatus.js +4 -15
  233. package/build/src/hooks/useDaimoPayStatus.js.map +1 -1
  234. package/build/src/hooks/useDaimoPayUI.js +7 -7
  235. package/build/src/hooks/useDaimoPayUI.js.map +1 -1
  236. package/build/src/hooks/useDepositAddressOptions.js +29 -25
  237. package/build/src/hooks/useDepositAddressOptions.js.map +1 -1
  238. package/build/src/hooks/useEnsFallbackConfig.js +5 -5
  239. package/build/src/hooks/useEnsFallbackConfig.js.map +1 -1
  240. package/build/src/hooks/useExternalPaymentOptions.js +57 -52
  241. package/build/src/hooks/useExternalPaymentOptions.js.map +1 -1
  242. package/build/src/hooks/useFitText.js +120 -135
  243. package/build/src/hooks/useFitText.js.map +1 -1
  244. package/build/src/hooks/useFocusTrap.js +33 -37
  245. package/build/src/hooks/useFocusTrap.js.map +1 -1
  246. package/build/src/hooks/useIsMobile.js +3 -3
  247. package/build/src/hooks/useIsMobile.js.map +1 -1
  248. package/build/src/hooks/useIsMounted.js +3 -5
  249. package/build/src/hooks/useIsMounted.js.map +1 -1
  250. package/build/src/hooks/useLastConnector.js +15 -15
  251. package/build/src/hooks/useLastConnector.js.map +1 -1
  252. package/build/src/hooks/useLocales.js +44 -42
  253. package/build/src/hooks/useLocales.js.map +1 -1
  254. package/build/src/hooks/useLockBodyScroll.js +38 -44
  255. package/build/src/hooks/useLockBodyScroll.js.map +1 -1
  256. package/build/src/hooks/useOrderUsdLimits.js +17 -19
  257. package/build/src/hooks/useOrderUsdLimits.js.map +1 -1
  258. package/build/src/hooks/usePayContext.js +3 -5
  259. package/build/src/hooks/usePayContext.js.map +1 -1
  260. package/build/src/hooks/usePaymentState.js +351 -321
  261. package/build/src/hooks/usePaymentState.js.map +1 -1
  262. package/build/src/hooks/usePrevious.js +6 -7
  263. package/build/src/hooks/usePrevious.js.map +1 -1
  264. package/build/src/hooks/useSolanaPaymentOptions.js +33 -33
  265. package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -1
  266. package/build/src/hooks/useTokenOptions.js +131 -95
  267. package/build/src/hooks/useTokenOptions.js.map +1 -1
  268. package/build/src/hooks/useUntronAvailability.js +26 -34
  269. package/build/src/hooks/useUntronAvailability.js.map +1 -1
  270. package/build/src/hooks/useWalletPaymentOptions.js +86 -61
  271. package/build/src/hooks/useWalletPaymentOptions.js.map +1 -1
  272. package/build/src/hooks/useWindowSize.js +16 -16
  273. package/build/src/hooks/useWindowSize.js.map +1 -1
  274. package/build/src/localizations/index.js +28 -31
  275. package/build/src/localizations/index.js.map +1 -1
  276. package/build/src/localizations/locales/ar-AE.js +88 -88
  277. package/build/src/localizations/locales/ar-AE.js.map +1 -1
  278. package/build/src/localizations/locales/ca-AD.js +88 -88
  279. package/build/src/localizations/locales/ca-AD.js.map +1 -1
  280. package/build/src/localizations/locales/ee-EE.js +96 -88
  281. package/build/src/localizations/locales/ee-EE.js.map +1 -1
  282. package/build/src/localizations/locales/en-US.js +134 -124
  283. package/build/src/localizations/locales/en-US.js.map +1 -1
  284. package/build/src/localizations/locales/es-ES.js +126 -124
  285. package/build/src/localizations/locales/es-ES.js.map +1 -1
  286. package/build/src/localizations/locales/fa-IR.js +88 -88
  287. package/build/src/localizations/locales/fa-IR.js.map +1 -1
  288. package/build/src/localizations/locales/fr-FR.js +88 -88
  289. package/build/src/localizations/locales/fr-FR.js.map +1 -1
  290. package/build/src/localizations/locales/ja-JP.js +88 -88
  291. package/build/src/localizations/locales/ja-JP.js.map +1 -1
  292. package/build/src/localizations/locales/pt-BR.js +96 -88
  293. package/build/src/localizations/locales/pt-BR.js.map +1 -1
  294. package/build/src/localizations/locales/ru-RU.js +92 -88
  295. package/build/src/localizations/locales/ru-RU.js.map +1 -1
  296. package/build/src/localizations/locales/tr-TR.js +96 -88
  297. package/build/src/localizations/locales/tr-TR.js.map +1 -1
  298. package/build/src/localizations/locales/vi-VN.js +96 -88
  299. package/build/src/localizations/locales/vi-VN.js.map +1 -1
  300. package/build/src/localizations/locales/zh-CN.js +88 -88
  301. package/build/src/localizations/locales/zh-CN.js.map +1 -1
  302. package/build/src/payment/paymentEffects.js +237 -264
  303. package/build/src/payment/paymentEffects.js.map +1 -1
  304. package/build/src/payment/paymentFsm.js +167 -187
  305. package/build/src/payment/paymentFsm.js.map +1 -1
  306. package/build/src/payment/paymentStore.js +8 -10
  307. package/build/src/payment/paymentStore.js.map +1 -1
  308. package/build/src/payment/paymentUtils.js +10 -0
  309. package/build/src/payment/paymentUtils.js.map +1 -0
  310. package/build/src/provider/DaimoPayProvider.js +258 -245
  311. package/build/src/provider/DaimoPayProvider.js.map +1 -1
  312. package/build/src/provider/PayContext.js +0 -1
  313. package/build/src/provider/PayContext.js.map +1 -1
  314. package/build/src/provider/PaymentProvider.js +18 -17
  315. package/build/src/provider/PaymentProvider.js.map +1 -1
  316. package/build/src/provider/SolanaContextProvider.js +6 -3
  317. package/build/src/provider/SolanaContextProvider.js.map +1 -1
  318. package/build/src/provider/Web3ContextProvider.js +23 -23
  319. package/build/src/provider/Web3ContextProvider.js.map +1 -1
  320. package/build/src/stateStore.js +28 -74
  321. package/build/src/stateStore.js.map +1 -1
  322. package/build/src/styles/defaultTheme.js +64 -73
  323. package/build/src/styles/defaultTheme.js.map +1 -1
  324. package/build/src/styles/index.js +202 -217
  325. package/build/src/styles/index.js.map +1 -1
  326. package/build/src/styles/styled/index.js +0 -10
  327. package/build/src/styles/styled/index.js.map +1 -1
  328. package/build/src/styles/themes/base.js +136 -136
  329. package/build/src/styles/themes/base.js.map +1 -1
  330. package/build/src/styles/themes/index.js.map +1 -1
  331. package/build/src/styles/themes/midnight.js +71 -71
  332. package/build/src/styles/themes/midnight.js.map +1 -1
  333. package/build/src/styles/themes/minimal.js +75 -75
  334. package/build/src/styles/themes/minimal.js.map +1 -1
  335. package/build/src/styles/themes/nouns.js +76 -76
  336. package/build/src/styles/themes/nouns.js.map +1 -1
  337. package/build/src/styles/themes/retro.js +88 -88
  338. package/build/src/styles/themes/retro.js.map +1 -1
  339. package/build/src/styles/themes/rounded.js +84 -84
  340. package/build/src/styles/themes/rounded.js.map +1 -1
  341. package/build/src/styles/themes/soft.js +66 -66
  342. package/build/src/styles/themes/soft.js.map +1 -1
  343. package/build/src/styles/themes/web95.js +95 -95
  344. package/build/src/styles/themes/web95.js.map +1 -1
  345. package/build/src/utils/exports.js +0 -1
  346. package/build/src/utils/exports.js.map +1 -1
  347. package/build/src/utils/format.js +25 -63
  348. package/build/src/utils/format.js.map +1 -1
  349. package/build/src/utils/index.js +23 -20
  350. package/build/src/utils/index.js.map +1 -1
  351. package/build/src/utils/p3.js +8 -9
  352. package/build/src/utils/p3.js.map +1 -1
  353. package/build/src/utils/platform.js +6 -8
  354. package/build/src/utils/platform.js.map +1 -1
  355. package/build/src/utils/polling.js +31 -31
  356. package/build/src/utils/polling.js.map +1 -1
  357. package/build/src/utils/supportUrl.js +9 -9
  358. package/build/src/utils/supportUrl.js.map +1 -1
  359. package/build/src/utils/trpc.js +11 -11
  360. package/build/src/utils/trpc.js.map +1 -1
  361. package/build/src/utils/validateInput.js +9 -29
  362. package/build/src/utils/validateInput.js.map +1 -1
  363. package/build/src/wallets/index.js +13 -22
  364. package/build/src/wallets/index.js.map +1 -1
  365. package/build/src/wallets/useWallets.js +183 -181
  366. package/build/src/wallets/useWallets.js.map +1 -1
  367. package/build/src/wallets/walletConfigs.js +230 -235
  368. package/build/src/wallets/walletConfigs.js.map +1 -1
  369. package/build/src/world-mini-app/WorldPayButton.js +113 -118
  370. package/build/src/world-mini-app/WorldPayButton.js.map +1 -1
  371. package/build/src/world-mini-app/promptWorldPayment.js +49 -47
  372. package/build/src/world-mini-app/promptWorldPayment.js.map +1 -1
  373. package/build/types-7ed033b6.d.ts +66 -0
  374. package/build/world.d.ts +89 -1
  375. package/package.json +6 -4
@@ -12,134 +12,145 @@ import { PageContent, ModalContent, ModalH1, Link } from '../../Common/Modal/sty
12
12
  import PaymentBreakdown from '../../Common/PaymentBreakdown/index.js';
13
13
  import TokenLogoSpinner from '../../Spinners/TokenLogoSpinner/index.js';
14
14
 
15
- var PayState;
16
- (function (PayState) {
17
- PayState["RequestingPayment"] = "Waiting For Payment";
18
- PayState["SwitchingChain"] = "Switching Chain";
19
- PayState["RequestCancelled"] = "Payment Cancelled";
20
- PayState["RequestSuccessful"] = "Payment Successful";
21
- PayState["RequestFailed"] = "Payment Failed";
22
- })(PayState || (PayState = {}));
23
15
  const PayWithToken = () => {
24
- const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();
25
- const { payWithToken, selectedTokenOption } = paymentState;
26
- const { order } = useDaimoPay();
27
- const [payState, setPayStateInner] = useState(PayState.RequestingPayment);
28
- const setPayState = (state) => {
29
- setPayStateInner(state);
30
- log(`[PAY TOKEN] payState: ${state}`);
31
- trpc.nav.mutate({
32
- action: "pay-with-token-state",
33
- data: { state },
34
- });
35
- };
36
- const [txURL, setTxURL] = useState();
37
- const locales = useLocales();
38
- const walletChainId = useChainId();
39
- const { switchChainAsync } = useSwitchChain();
40
- const trySwitchingChain = async (option, forceSwitch = false) => {
41
- if (walletChainId !== option.required.token.chainId || forceSwitch) {
42
- const resultChain = await (async () => {
43
- try {
44
- return await switchChainAsync({
45
- chainId: option.required.token.chainId,
46
- });
47
- }
48
- catch (e) {
49
- console.error("Failed to switch chain", e);
50
- return null;
51
- }
52
- })();
53
- if (resultChain?.id !== option.required.token.chainId) {
54
- return false;
55
- }
56
- }
57
- return true;
58
- };
59
- const handleTransfer = async (option) => {
60
- // Switch chain if necessary
61
- setPayState(PayState.SwitchingChain);
62
- const switchChain = await trySwitchingChain(option);
63
- if (!switchChain) {
64
- console.error("Switching chain failed");
65
- setPayState(PayState.RequestCancelled);
66
- return;
67
- }
68
- setPayState(PayState.RequestingPayment);
16
+ const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();
17
+ const { payWithToken, selectedTokenOption } = paymentState;
18
+ const { order } = useDaimoPay();
19
+ const [payState, setPayStateInner] = useState(
20
+ "Waiting For Payment" /* RequestingPayment */
21
+ );
22
+ const setPayState = (state) => {
23
+ setPayStateInner(state);
24
+ log(`[PAY TOKEN] payState: ${state}`);
25
+ trpc.nav.mutate({
26
+ action: "pay-with-token-state",
27
+ data: { state }
28
+ });
29
+ };
30
+ const [txURL, setTxURL] = useState();
31
+ const locales = useLocales();
32
+ const walletChainId = useChainId();
33
+ const { switchChainAsync } = useSwitchChain();
34
+ const trySwitchingChain = async (option, forceSwitch = false) => {
35
+ if (walletChainId !== option.required.token.chainId || forceSwitch) {
36
+ const resultChain = await (async () => {
69
37
  try {
70
- const result = await payWithToken(option);
71
- if (!result.txHash) {
72
- // Transaction not submitted yet. Do nothing, just keep polling.
73
- return;
74
- }
75
- setTxURL(getChainExplorerTxUrl(option.required.token.chainId, result.txHash));
76
- if (result.success) {
77
- setPayState(PayState.RequestSuccessful);
78
- setTimeout(() => {
79
- setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
80
- }, 200);
81
- }
82
- else {
83
- setPayState(PayState.RequestFailed);
84
- }
38
+ return await switchChainAsync({
39
+ chainId: option.required.token.chainId
40
+ });
41
+ } catch (e) {
42
+ console.error("Failed to switch chain", e);
43
+ return null;
85
44
  }
86
- catch (e) {
87
- if (e?.name === "ConnectorChainMismatchError") {
88
- // Workaround for Rainbow wallet bug -- user is able to switch chain
89
- // without the wallet updating the chain ID for wagmi.
90
- log("Chain mismatch detected, attempting to switch and retry");
91
- const switchSuccessful = await trySwitchingChain(option, true);
92
- if (switchSuccessful) {
93
- setPayState(PayState.RequestingPayment);
94
- try {
95
- const retryResult = await payWithToken(option);
96
- if (!retryResult.txHash) {
97
- // Transaction not submitted yet. Do nothing, just keep polling.
98
- return;
99
- }
100
- setTxURL(getChainExplorerTxUrl(option.required.token.chainId, retryResult.txHash));
101
- if (retryResult.success) {
102
- setPayState(PayState.RequestSuccessful);
103
- setTimeout(() => {
104
- setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
105
- }, 200);
106
- }
107
- else {
108
- setPayState(PayState.RequestFailed);
109
- }
110
- return; // Payment handled after switching chain
111
- }
112
- catch (retryError) {
113
- console.error("Failed to pay with token after switching chain", retryError);
114
- throw retryError;
115
- }
116
- }
45
+ })();
46
+ if (resultChain?.id !== option.required.token.chainId) {
47
+ return false;
48
+ }
49
+ }
50
+ return true;
51
+ };
52
+ const handleTransfer = async (option) => {
53
+ setPayState("Switching Chain" /* SwitchingChain */);
54
+ const switchChain = await trySwitchingChain(option);
55
+ if (!switchChain) {
56
+ console.error("Switching chain failed");
57
+ setPayState("Payment Cancelled" /* RequestCancelled */);
58
+ return;
59
+ }
60
+ setPayState("Waiting For Payment" /* RequestingPayment */);
61
+ try {
62
+ const result = await payWithToken(option);
63
+ if (!result.txHash) {
64
+ return;
65
+ }
66
+ setTxURL(
67
+ getChainExplorerTxUrl(option.required.token.chainId, result.txHash)
68
+ );
69
+ if (result.success) {
70
+ setPayState("Payment Successful" /* RequestSuccessful */);
71
+ setTimeout(() => {
72
+ setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
73
+ }, 200);
74
+ } else {
75
+ setPayState("Payment Failed" /* RequestFailed */);
76
+ }
77
+ } catch (e) {
78
+ if (e?.name === "ConnectorChainMismatchError") {
79
+ log("Chain mismatch detected, attempting to switch and retry");
80
+ const switchSuccessful = await trySwitchingChain(option, true);
81
+ if (switchSuccessful) {
82
+ setPayState("Waiting For Payment" /* RequestingPayment */);
83
+ try {
84
+ const retryResult = await payWithToken(option);
85
+ if (!retryResult.txHash) {
86
+ return;
87
+ }
88
+ setTxURL(
89
+ getChainExplorerTxUrl(
90
+ option.required.token.chainId,
91
+ retryResult.txHash
92
+ )
93
+ );
94
+ if (retryResult.success) {
95
+ setPayState("Payment Successful" /* RequestSuccessful */);
96
+ setTimeout(() => {
97
+ setRoute(ROUTES.CONFIRMATION, { event: "wait-pay-with-token" });
98
+ }, 200);
99
+ } else {
100
+ setPayState("Payment Failed" /* RequestFailed */);
117
101
  }
118
- setPayState(PayState.RequestCancelled);
119
- console.error("Failed to pay with token", e);
120
- }
121
- };
122
- useEffect(() => {
123
- if (!selectedTokenOption)
124
102
  return;
125
- const transferTimeout = setTimeout(() => {
126
- handleTransfer(selectedTokenOption);
127
- }, 100);
128
- return () => {
129
- clearTimeout(transferTimeout);
130
- };
131
- // eslint-disable-next-line react-hooks/exhaustive-deps
132
- }, [selectedTokenOption]);
133
- useEffect(() => {
134
- triggerResize();
135
- // eslint-disable-next-line react-hooks/exhaustive-deps
136
- }, [payState]);
137
- if (selectedTokenOption == null) {
138
- return jsx(PageContent, {});
103
+ } catch (retryError) {
104
+ console.error(
105
+ "Failed to pay with token after switching chain",
106
+ retryError
107
+ );
108
+ throw retryError;
109
+ }
110
+ }
111
+ }
112
+ setPayState("Payment Cancelled" /* RequestCancelled */);
113
+ console.error("Failed to pay with token", e);
139
114
  }
140
- return (jsxs(PageContent, { children: [jsx(TokenLogoSpinner, { token: selectedTokenOption.required.token }), jsxs(ModalContent, { style: { paddingBottom: 0 }, "$preserveDisplay": true, children: [txURL ? (jsx(ModalH1, { children: jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: payState }) })) : (jsx(ModalH1, { children: payState })), jsx(PaymentBreakdown, { paymentOption: selectedTokenOption }), payState === PayState.RequestCancelled && (jsx(Button, { onClick: () => handleTransfer(selectedTokenOption), children: locales.retryPayment })), payState === PayState.RequestFailed && (jsx(Button, { onClick: () => {
141
- window.open(getSupportUrl(order?.id?.toString() ?? "", `Pay with token${txURL ? ` ${txURL}` : ""}`), "_blank");
142
- }, children: locales.contactSupport }))] })] }));
115
+ };
116
+ useEffect(() => {
117
+ if (!selectedTokenOption) return;
118
+ const transferTimeout = setTimeout(() => {
119
+ handleTransfer(selectedTokenOption);
120
+ }, 100);
121
+ return () => {
122
+ clearTimeout(transferTimeout);
123
+ };
124
+ }, [selectedTokenOption]);
125
+ useEffect(() => {
126
+ triggerResize();
127
+ }, [payState]);
128
+ if (selectedTokenOption == null) {
129
+ return /* @__PURE__ */ jsx(PageContent, {});
130
+ }
131
+ return /* @__PURE__ */ jsxs(PageContent, { children: [
132
+ /* @__PURE__ */ jsx(TokenLogoSpinner, { token: selectedTokenOption.required.token }),
133
+ /* @__PURE__ */ jsxs(ModalContent, { style: { paddingBottom: 0 }, $preserveDisplay: true, children: [
134
+ txURL ? /* @__PURE__ */ jsx(ModalH1, { children: /* @__PURE__ */ jsx(Link, { href: txURL, target: "_blank", rel: "noopener noreferrer", children: payState }) }) : /* @__PURE__ */ jsx(ModalH1, { children: payState }),
135
+ /* @__PURE__ */ jsx(PaymentBreakdown, { paymentOption: selectedTokenOption }),
136
+ payState === "Payment Cancelled" /* RequestCancelled */ && /* @__PURE__ */ jsx(Button, { onClick: () => handleTransfer(selectedTokenOption), children: locales.retryPayment }),
137
+ payState === "Payment Failed" /* RequestFailed */ && /* @__PURE__ */ jsx(
138
+ Button,
139
+ {
140
+ onClick: () => {
141
+ window.open(
142
+ getSupportUrl(
143
+ order?.id?.toString() ?? "",
144
+ `Pay with token${txURL ? ` ${txURL}` : ""}`
145
+ ),
146
+ "_blank"
147
+ );
148
+ },
149
+ children: locales.contactSupport
150
+ }
151
+ )
152
+ ] })
153
+ ] });
143
154
  };
144
155
 
145
156
  export { PayWithToken as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/PayWithToken/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/PayWithToken/index.tsx"],"sourcesContent":["import { getChainExplorerTxUrl, WalletPaymentOption } from \"@daimo/pay-common\";\nimport React, { useEffect, useState } from \"react\";\nimport { useChainId, useSwitchChain } from \"wagmi\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { useDaimoPay } from \"../../../hooks/useDaimoPay\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\nimport { getSupportUrl } from \"../../../utils/supportUrl\";\nimport { TrpcClient } from \"../../../utils/trpc\";\nimport Button from \"../../Common/Button\";\nimport {\n Link,\n ModalContent,\n ModalH1,\n PageContent,\n} from \"../../Common/Modal/styles\";\nimport PaymentBreakdown from \"../../Common/PaymentBreakdown\";\nimport TokenLogoSpinner from \"../../Spinners/TokenLogoSpinner\";\n\nenum PayState {\n RequestingPayment = \"Waiting For Payment\",\n SwitchingChain = \"Switching Chain\",\n RequestCancelled = \"Payment Cancelled\",\n RequestSuccessful = \"Payment Successful\",\n RequestFailed = \"Payment Failed\",\n}\n\nconst PayWithToken: React.FC = () => {\n const { triggerResize, paymentState, setRoute, log, trpc } = usePayContext();\n const { payWithToken, selectedTokenOption } = paymentState;\n const { order } = useDaimoPay();\n const [payState, setPayStateInner] = useState<PayState>(\n PayState.RequestingPayment,\n );\n const setPayState = (state: PayState) => {\n setPayStateInner(state);\n log(`[PAY TOKEN] payState: ${state}`);\n (trpc as TrpcClient).nav.mutate({\n action: \"pay-with-token-state\",\n data: { state },\n });\n };\n const [txURL, setTxURL] = useState<string | undefined>();\n const locales = useLocales();\n const walletChainId = useChainId();\n const { switchChainAsync } = useSwitchChain();\n\n const trySwitchingChain = async (\n option: WalletPaymentOption,\n forceSwitch: boolean = false,\n ): Promise<boolean> => {\n if (walletChainId !== option.required.token.chainId || forceSwitch) {\n const resultChain = await (async () => {\n try {\n return await switchChainAsync({\n chainId: option.required.token.chainId,\n });\n } catch (e) {\n console.error(\"Failed to switch chain\", e);\n return null;\n }\n })();\n\n if (resultChain?.id !== option.required.token.chainId) {\n return false;\n }\n }\n\n return true;\n };\n\n const handleTransfer = async (option: WalletPaymentOption) => {\n // Switch chain if necessary\n setPayState(PayState.SwitchingChain);\n const switchChain = await trySwitchingChain(option);\n\n if (!switchChain) {\n console.error(\"Switching chain failed\");\n setPayState(PayState.RequestCancelled);\n return;\n }\n\n setPayState(PayState.RequestingPayment);\n try {\n const result = await payWithToken(option);\n if (!result.txHash) {\n // Transaction not submitted yet. Do nothing, just keep polling.\n return;\n }\n setTxURL(\n getChainExplorerTxUrl(option.required.token.chainId, result.txHash),\n );\n if (result.success) {\n setPayState(PayState.RequestSuccessful);\n setTimeout(() => {\n setRoute(ROUTES.CONFIRMATION, { event: \"wait-pay-with-token\" });\n }, 200);\n } else {\n setPayState(PayState.RequestFailed);\n }\n } catch (e: any) {\n if (e?.name === \"ConnectorChainMismatchError\") {\n // Workaround for Rainbow wallet bug -- user is able to switch chain\n // without the wallet updating the chain ID for wagmi.\n log(\"Chain mismatch detected, attempting to switch and retry\");\n const switchSuccessful = await trySwitchingChain(option, true);\n if (switchSuccessful) {\n setPayState(PayState.RequestingPayment);\n try {\n const retryResult = await payWithToken(option);\n if (!retryResult.txHash) {\n // Transaction not submitted yet. Do nothing, just keep polling.\n return;\n }\n setTxURL(\n getChainExplorerTxUrl(\n option.required.token.chainId,\n retryResult.txHash,\n ),\n );\n if (retryResult.success) {\n setPayState(PayState.RequestSuccessful);\n setTimeout(() => {\n setRoute(ROUTES.CONFIRMATION, { event: \"wait-pay-with-token\" });\n }, 200);\n } else {\n setPayState(PayState.RequestFailed);\n }\n return; // Payment handled after switching chain\n } catch (retryError) {\n console.error(\n \"Failed to pay with token after switching chain\",\n retryError,\n );\n throw retryError;\n }\n }\n }\n setPayState(PayState.RequestCancelled);\n console.error(\"Failed to pay with token\", e);\n }\n };\n\n useEffect(() => {\n if (!selectedTokenOption) return;\n\n const transferTimeout = setTimeout(() => {\n handleTransfer(selectedTokenOption);\n }, 100);\n return () => {\n clearTimeout(transferTimeout);\n };\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [selectedTokenOption]);\n\n useEffect(() => {\n triggerResize();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [payState]);\n\n if (selectedTokenOption == null) {\n return <PageContent></PageContent>;\n }\n\n return (\n <PageContent>\n <TokenLogoSpinner token={selectedTokenOption.required.token} />\n <ModalContent style={{ paddingBottom: 0 }} $preserveDisplay={true}>\n {txURL ? (\n <ModalH1>\n <Link href={txURL} target=\"_blank\" rel=\"noopener noreferrer\">\n {payState}\n </Link>\n </ModalH1>\n ) : (\n <ModalH1>{payState}</ModalH1>\n )}\n <PaymentBreakdown paymentOption={selectedTokenOption} />\n {payState === PayState.RequestCancelled && (\n <Button onClick={() => handleTransfer(selectedTokenOption)}>\n {locales.retryPayment}\n </Button>\n )}\n {payState === PayState.RequestFailed && (\n <Button\n onClick={() => {\n window.open(\n getSupportUrl(\n order?.id?.toString() ?? \"\",\n `Pay with token${txURL ? ` ${txURL}` : \"\"}`,\n ),\n \"_blank\",\n );\n }}\n >\n {locales.contactSupport}\n </Button>\n )}\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default PayWithToken;\n"],"names":[],"mappings":"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"}
@@ -5,12 +5,19 @@ import { ROUTES } from '../../../constants/routes.js';
5
5
  import { usePayContext } from '../../../hooks/usePayContext.js';
6
6
 
7
7
  const SelectAmount = () => {
8
- const { paymentState } = usePayContext();
9
- const { selectedTokenOption, setSelectedTokenOption } = paymentState;
10
- if (selectedTokenOption == null) {
11
- return jsx(PageContent, {});
8
+ const { paymentState } = usePayContext();
9
+ const { selectedTokenOption, setSelectedTokenOption } = paymentState;
10
+ if (selectedTokenOption == null) {
11
+ return /* @__PURE__ */ jsx(PageContent, {});
12
+ }
13
+ return /* @__PURE__ */ jsx(
14
+ MultiCurrencySelectAmount,
15
+ {
16
+ selectedTokenOption,
17
+ setSelectedTokenOption,
18
+ nextPage: ROUTES.PAY_WITH_TOKEN
12
19
  }
13
- return (jsx(MultiCurrencySelectAmount, { selectedTokenOption: selectedTokenOption, setSelectedTokenOption: setSelectedTokenOption, nextPage: ROUTES.PAY_WITH_TOKEN }));
20
+ );
14
21
  };
15
22
 
16
23
  export { SelectAmount as default };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectAmount/index.tsx"],"sourcesContent":[null],"names":["_jsx"],"mappings":";;;;;;AAMM,MAAA,YAAY,GAAa,MAAK;AAClC,IAAA,MAAM,EAAE,YAAY,EAAE,GAAG,aAAa,EAAE,CAAC;AACzC,IAAA,MAAM,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,GAAG,YAAY,CAAC;AAErE,IAAA,IAAI,mBAAmB,IAAI,IAAI,EAAE;QAC/B,OAAOA,GAAA,CAAC,WAAW,EAAA,EAAA,CAAe,CAAC;KACpC;AAED,IAAA,QACEA,GAAC,CAAA,yBAAyB,IACxB,mBAAmB,EAAE,mBAAmB,EACxC,sBAAsB,EAAE,sBAAsB,EAC9C,QAAQ,EAAE,MAAM,CAAC,cAAc,EAAA,CAC/B,EACF;AACJ;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectAmount/index.tsx"],"sourcesContent":["import React from \"react\";\nimport MultiCurrencySelectAmount from \"../../Common/AmountInput\";\nimport { PageContent } from \"../../Common/Modal/styles\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nconst SelectAmount: React.FC = () => {\n const { paymentState } = usePayContext();\n const { selectedTokenOption, setSelectedTokenOption } = paymentState;\n\n if (selectedTokenOption == null) {\n return <PageContent></PageContent>;\n }\n\n return (\n <MultiCurrencySelectAmount\n selectedTokenOption={selectedTokenOption}\n setSelectedTokenOption={setSelectedTokenOption}\n nextPage={ROUTES.PAY_WITH_TOKEN}\n />\n );\n};\n\nexport default SelectAmount;\n"],"names":[],"mappings":";;;;;;AAMA,MAAM,eAAyB,MAAM;AACnC,EAAM,MAAA,EAAE,YAAa,EAAA,GAAI,aAAc,EAAA,CAAA;AACvC,EAAM,MAAA,EAAE,mBAAqB,EAAA,sBAAA,EAA2B,GAAA,YAAA,CAAA;AAExD,EAAA,IAAI,uBAAuB,IAAM,EAAA;AAC/B,IAAA,2BAAQ,WAAY,EAAA,EAAA,CAAA,CAAA;AAAA,GACtB;AAEA,EACE,uBAAA,GAAA;AAAA,IAAC,yBAAA;AAAA,IAAA;AAAA,MACC,mBAAA;AAAA,MACA,sBAAA;AAAA,MACA,UAAU,MAAO,CAAA,cAAA;AAAA,KAAA;AAAA,GACnB,CAAA;AAEJ;;;;"}
@@ -11,47 +11,65 @@ import Button from '../../Common/Button/index.js';
11
11
  import ExternalPaymentSpinner from '../../Spinners/ExternalPaymentSpinner/index.js';
12
12
 
13
13
  const SelectDepositAddressAmount = () => {
14
- const { paymentState, setRoute, triggerResize } = usePayContext();
15
- const { selectedDepositAddressOption } = paymentState;
16
- const maxUsdLimit = paymentState.getOrderUsdLimit();
17
- const minUsd = selectedDepositAddressOption?.minimumUsd ?? 0;
18
- const minimumMessage = minUsd > 0 ? `Minimum ${formatUsd(minUsd, "up")}` : null;
19
- const [usdInput, setUsdInput] = useState("");
20
- const [message, setMessage] = useState(minimumMessage);
21
- const [continueDisabled, setContinueDisabled] = useState(true);
22
- useEffect(() => {
23
- triggerResize();
24
- }, [message]); // eslint-disable-line react-hooks/exhaustive-deps
25
- if (selectedDepositAddressOption == null) {
26
- return jsx(PageContent, {});
14
+ const { paymentState, setRoute, triggerResize } = usePayContext();
15
+ const { selectedDepositAddressOption } = paymentState;
16
+ const maxUsdLimit = paymentState.getOrderUsdLimit();
17
+ const minUsd = selectedDepositAddressOption?.minimumUsd ?? 0;
18
+ const minimumMessage = minUsd > 0 ? `Minimum ${formatUsd(minUsd, "up")}` : null;
19
+ const [usdInput, setUsdInput] = useState("");
20
+ const [message, setMessage] = useState(minimumMessage);
21
+ const [continueDisabled, setContinueDisabled] = useState(true);
22
+ useEffect(() => {
23
+ triggerResize();
24
+ }, [message]);
25
+ if (selectedDepositAddressOption == null) {
26
+ return /* @__PURE__ */ jsx(PageContent, {});
27
+ }
28
+ const handleAmountChange = (e) => {
29
+ const value = e.target.value;
30
+ if (value !== "" && !isValidNumber(value, USD_DECIMALS)) return;
31
+ setUsdInput(value);
32
+ if (Number(value) > maxUsdLimit) {
33
+ setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);
34
+ } else {
35
+ setMessage(minimumMessage);
27
36
  }
28
- const handleAmountChange = (e) => {
29
- const value = e.target.value;
30
- if (value !== "" && !isValidNumber(value, USD_DECIMALS))
31
- return;
32
- setUsdInput(value);
33
- if (Number(value) > maxUsdLimit) {
34
- setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);
35
- }
36
- else {
37
- setMessage(minimumMessage);
38
- }
39
- const usd = Number(sanitizeNumber(value));
40
- setContinueDisabled(usd <= 0 || usd > maxUsdLimit || usd < minUsd);
41
- };
42
- const handleKeyDown = (e) => {
43
- if (e.key === "Enter" && !continueDisabled) {
44
- handleContinue();
37
+ const usd = Number(sanitizeNumber(value));
38
+ setContinueDisabled(usd <= 0 || usd > maxUsdLimit || usd < minUsd);
39
+ };
40
+ const handleKeyDown = (e) => {
41
+ if (e.key === "Enter" && !continueDisabled) {
42
+ handleContinue();
43
+ }
44
+ };
45
+ const handleContinue = () => {
46
+ const amountUsd = Number(sanitizeNumber(usdInput));
47
+ paymentState.setChosenUsd(amountUsd);
48
+ setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });
49
+ };
50
+ return /* @__PURE__ */ jsxs(PageContent, { children: [
51
+ /* @__PURE__ */ jsx(
52
+ ExternalPaymentSpinner,
53
+ {
54
+ logoURI: selectedDepositAddressOption.logoURI,
55
+ logoShape: "circle"
56
+ }
57
+ ),
58
+ /* @__PURE__ */ jsxs(ModalContent, { $preserveDisplay: true, children: [
59
+ /* @__PURE__ */ jsx(AmountInputContainer, { children: /* @__PURE__ */ jsx(
60
+ AmountInputField,
61
+ {
62
+ value: usdInput,
63
+ onChange: handleAmountChange,
64
+ onKeyDown: handleKeyDown
45
65
  }
46
- };
47
- const handleContinue = () => {
48
- const amountUsd = Number(sanitizeNumber(usdInput));
49
- paymentState.setChosenUsd(amountUsd);
50
- setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });
51
- };
52
- return (jsxs(PageContent, { children: [jsx(ExternalPaymentSpinner, { logoURI: selectedDepositAddressOption.logoURI, logoShape: "circle" }), jsxs(ModalContent, { "$preserveDisplay": true, children: [jsx(AmountInputContainer, { children: jsx(AmountInputField, { value: usdInput, onChange: handleAmountChange, onKeyDown: handleKeyDown }) }), message && jsx(ModalBody, { children: message }), jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })] })] }));
66
+ ) }),
67
+ message && /* @__PURE__ */ jsx(ModalBody, { children: message }),
68
+ /* @__PURE__ */ jsx(Button, { onClick: handleContinue, disabled: continueDisabled, children: "Continue" })
69
+ ] })
70
+ ] });
53
71
  };
54
- const AmountInputContainer = styled.div `
72
+ const AmountInputContainer = styled.div`
55
73
  display: flex;
56
74
  align-items: center;
57
75
  justify-content: center;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressAmount/index.tsx"],"sourcesContent":[null],"names":["_jsx","_jsxs"],"mappings":";;;;;;;;;;;;AAiBM,MAAA,0BAA0B,GAAa,MAAK;IAChD,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,aAAa,EAAE,CAAC;AAClE,IAAA,MAAM,EAAE,4BAA4B,EAAE,GAAG,YAAY,CAAC;AAEtD,IAAA,MAAM,WAAW,GAAG,YAAY,CAAC,gBAAgB,EAAE,CAAC;AACpD,IAAA,MAAM,MAAM,GAAG,4BAA4B,EAAE,UAAU,IAAI,CAAC,CAAC;IAC7D,MAAM,cAAc,GAClB,MAAM,GAAG,CAAC,GAAG,CAAW,QAAA,EAAA,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAA,CAAE,GAAG,IAAI,CAAC;IAE3D,MAAM,CAAC,QAAQ,EAAE,WAAW,CAAC,GAAG,QAAQ,CAAS,EAAE,CAAC,CAAC;IACrD,MAAM,CAAC,OAAO,EAAE,UAAU,CAAC,GAAG,QAAQ,CAAgB,cAAc,CAAC,CAAC;IACtE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE/D,SAAS,CAAC,MAAK;AACb,QAAA,aAAa,EAAE,CAAC;AAClB,KAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC;AAEd,IAAA,IAAI,4BAA4B,IAAI,IAAI,EAAE;QACxC,OAAOA,GAAA,CAAC,WAAW,EAAA,EAAA,CAAe,CAAC;KACpC;AAED,IAAA,MAAM,kBAAkB,GAAG,CAAC,CAAsC,KAAI;AACpE,QAAA,MAAM,KAAK,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;QAC7B,IAAI,KAAK,KAAK,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,CAAC;YAAE,OAAO;QAEhE,WAAW,CAAC,KAAK,CAAC,CAAC;AAEnB,QAAA,IAAI,MAAM,CAAC,KAAK,CAAC,GAAG,WAAW,EAAE;YAC/B,UAAU,CAAC,WAAW,SAAS,CAAC,WAAW,CAAC,CAAA,CAAE,CAAC,CAAC;SACjD;aAAM;YACL,UAAU,CAAC,cAAc,CAAC,CAAC;SAC5B;QAED,MAAM,GAAG,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC;AAC1C,QAAA,mBAAmB,CAAC,GAAG,IAAI,CAAC,IAAI,GAAG,GAAG,WAAW,IAAI,GAAG,GAAG,MAAM,CAAC,CAAC;AACrE,KAAC,CAAC;AAEF,IAAA,MAAM,aAAa,GAAG,CAAC,CAAwC,KAAI;QACjE,IAAI,CAAC,CAAC,GAAG,KAAK,OAAO,IAAI,CAAC,gBAAgB,EAAE;AAC1C,YAAA,cAAc,EAAE,CAAC;SAClB;AACH,KAAC,CAAC;IAEF,MAAM,cAAc,GAAG,MAAK;QAC1B,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC;AACnD,QAAA,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;QACrC,QAAQ,CAAC,MAAM,CAAC,uBAAuB,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;AAC1D,KAAC,CAAC;AAEF,IAAA,QACEC,IAAA,CAAC,WAAW,EAAA,EAAA,QAAA,EAAA,CACVD,GAAC,CAAA,sBAAsB,EACrB,EAAA,OAAO,EAAE,4BAA4B,CAAC,OAAO,EAC7C,SAAS,EAAC,QAAQ,EAAA,CAClB,EACFC,IAAA,CAAC,YAAY,EAAA,EAAA,kBAAA,EAAmB,IAAI,EAAA,QAAA,EAAA,CAClCD,GAAC,CAAA,oBAAoB,EACnB,EAAA,QAAA,EAAAA,GAAA,CAAC,gBAAgB,EAAA,EACf,KAAK,EAAE,QAAQ,EACf,QAAQ,EAAE,kBAAkB,EAC5B,SAAS,EAAE,aAAa,EACxB,CAAA,EAAA,CACmB,EACtB,OAAO,IAAIA,GAAA,CAAC,SAAS,EAAE,EAAA,QAAA,EAAA,OAAO,EAAa,CAAA,EAC5CA,GAAC,CAAA,MAAM,EAAC,EAAA,OAAO,EAAE,cAAc,EAAE,QAAQ,EAAE,gBAAgB,EAAA,QAAA,EAAA,UAAA,EAAA,CAElD,CACI,EAAA,CAAA,CAAA,EAAA,CACH,EACd;AACJ,EAAE;AAEF,MAAM,oBAAoB,GAAG,MAAM,CAAC,GAAG,CAAA,CAAA;;;;CAItC;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Pages/SelectDepositAddressAmount/index.tsx"],"sourcesContent":["import React, { useEffect, useState } from \"react\";\nimport { ROUTES } from \"../../../constants/routes\";\nimport { usePayContext } from \"../../../hooks/usePayContext\";\n\nimport {\n ModalBody,\n ModalContent,\n PageContent,\n} from \"../../Common/Modal/styles\";\n\nimport styled from \"../../../styles/styled\";\nimport { formatUsd, USD_DECIMALS } from \"../../../utils/format\";\nimport { isValidNumber, sanitizeNumber } from \"../../../utils/validateInput\";\nimport AmountInputField from \"../../Common/AmountInput/AmountInputField\";\nimport Button from \"../../Common/Button\";\nimport ExternalPaymentSpinner from \"../../Spinners/ExternalPaymentSpinner\";\n\nconst SelectDepositAddressAmount: React.FC = () => {\n const { paymentState, setRoute, triggerResize } = usePayContext();\n const { selectedDepositAddressOption } = paymentState;\n\n const maxUsdLimit = paymentState.getOrderUsdLimit();\n const minUsd = selectedDepositAddressOption?.minimumUsd ?? 0;\n const minimumMessage =\n minUsd > 0 ? `Minimum ${formatUsd(minUsd, \"up\")}` : null;\n\n const [usdInput, setUsdInput] = useState<string>(\"\");\n const [message, setMessage] = useState<string | null>(minimumMessage);\n const [continueDisabled, setContinueDisabled] = useState(true);\n\n useEffect(() => {\n triggerResize();\n }, [message]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (selectedDepositAddressOption == null) {\n return <PageContent></PageContent>;\n }\n\n const handleAmountChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n const value = e.target.value;\n if (value !== \"\" && !isValidNumber(value, USD_DECIMALS)) return;\n\n setUsdInput(value);\n\n if (Number(value) > maxUsdLimit) {\n setMessage(`Maximum ${formatUsd(maxUsdLimit)}`);\n } else {\n setMessage(minimumMessage);\n }\n\n const usd = Number(sanitizeNumber(value));\n setContinueDisabled(usd <= 0 || usd > maxUsdLimit || usd < minUsd);\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (e.key === \"Enter\" && !continueDisabled) {\n handleContinue();\n }\n };\n\n const handleContinue = () => {\n const amountUsd = Number(sanitizeNumber(usdInput));\n paymentState.setChosenUsd(amountUsd);\n setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, { amountUsd });\n };\n\n return (\n <PageContent>\n <ExternalPaymentSpinner\n logoURI={selectedDepositAddressOption.logoURI}\n logoShape=\"circle\"\n />\n <ModalContent $preserveDisplay={true}>\n <AmountInputContainer>\n <AmountInputField\n value={usdInput}\n onChange={handleAmountChange}\n onKeyDown={handleKeyDown}\n />\n </AmountInputContainer>\n {message && <ModalBody>{message}</ModalBody>}\n <Button onClick={handleContinue} disabled={continueDisabled}>\n Continue\n </Button>\n </ModalContent>\n </PageContent>\n );\n};\n\nconst AmountInputContainer = styled.div`\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nexport default SelectDepositAddressAmount;\n"],"names":[],"mappings":"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"}
@@ -9,46 +9,63 @@ import { OrderHeader } from '../../Common/OrderHeader/index.js';
9
9
  import SelectAnotherMethodButton from '../../Common/SelectAnotherMethodButton/index.js';
10
10
 
11
11
  const SelectDepositAddressChain = () => {
12
- const { setRoute, paymentState } = usePayContext();
13
- const pay = useDaimoPay();
14
- const { order } = pay;
15
- const { isDepositFlow, setSelectedDepositAddressOption, depositAddressOptions, untronAvailable, } = paymentState;
16
- return (jsxs(PageContent, { children: [jsx(OrderHeader, { minified: true }), !depositAddressOptions.loading &&
17
- depositAddressOptions.options?.length === 0 && (jsxs(ModalContent, { style: {
18
- display: "flex",
19
- alignItems: "center",
20
- justifyContent: "center",
21
- paddingTop: 16,
22
- paddingBottom: 16,
23
- }, children: [jsx(ModalH1, { children: "Chains unavailable." }), jsx(SelectAnotherMethodButton, {})] })), jsx(OptionsList, { requiredSkeletons: 4, isLoading: depositAddressOptions.loading, options: (depositAddressOptions.options ?? [])
24
- .map((option) => {
25
- const disabled =
26
- // Disable if usd below min
27
- (option.minimumUsd > 0 &&
28
- order?.mode === DaimoPayOrderMode.HYDRATED &&
29
- order.usdValue < option.minimumUsd) ||
30
- // Disable if TRON_USDT unavailable
31
- (option.id === DepositAddressPaymentOptions.TRON_USDT &&
32
- untronAvailable === false);
33
- return {
34
- id: option.id,
35
- title: option.id,
36
- icons: [option.logoURI],
37
- disabled,
38
- onClick: () => {
39
- setSelectedDepositAddressOption(option);
40
- const meta = { event: "click-option", option: option.id };
41
- if (isDepositFlow) {
42
- setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);
43
- }
44
- else {
45
- setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, meta);
46
- }
47
- },
48
- };
49
- })
50
- // Push disabled options to the bottom of the list
51
- .sort((a, b) => Number(a.disabled) - Number(b.disabled)) })] }));
12
+ const { setRoute, paymentState } = usePayContext();
13
+ const pay = useDaimoPay();
14
+ const { order } = pay;
15
+ const {
16
+ isDepositFlow,
17
+ setSelectedDepositAddressOption,
18
+ depositAddressOptions,
19
+ untronAvailable
20
+ } = paymentState;
21
+ return /* @__PURE__ */ jsxs(PageContent, { children: [
22
+ /* @__PURE__ */ jsx(OrderHeader, { minified: true }),
23
+ !depositAddressOptions.loading && depositAddressOptions.options?.length === 0 && /* @__PURE__ */ jsxs(
24
+ ModalContent,
25
+ {
26
+ style: {
27
+ display: "flex",
28
+ alignItems: "center",
29
+ justifyContent: "center",
30
+ paddingTop: 16,
31
+ paddingBottom: 16
32
+ },
33
+ children: [
34
+ /* @__PURE__ */ jsx(ModalH1, { children: "Chains unavailable." }),
35
+ /* @__PURE__ */ jsx(SelectAnotherMethodButton, {})
36
+ ]
37
+ }
38
+ ),
39
+ /* @__PURE__ */ jsx(
40
+ OptionsList,
41
+ {
42
+ requiredSkeletons: 4,
43
+ isLoading: depositAddressOptions.loading,
44
+ options: (depositAddressOptions.options ?? []).map((option) => {
45
+ const disabled = (
46
+ // Disable if usd below min
47
+ option.minimumUsd > 0 && order?.mode === DaimoPayOrderMode.HYDRATED && order.usdValue < option.minimumUsd || // Disable if TRON_USDT unavailable
48
+ option.id === DepositAddressPaymentOptions.TRON_USDT && untronAvailable === false
49
+ );
50
+ return {
51
+ id: option.id,
52
+ title: option.id,
53
+ icons: [option.logoURI],
54
+ disabled,
55
+ onClick: () => {
56
+ setSelectedDepositAddressOption(option);
57
+ const meta = { event: "click-option", option: option.id };
58
+ if (isDepositFlow) {
59
+ setRoute(ROUTES.SELECT_DEPOSIT_ADDRESS_AMOUNT, meta);
60
+ } else {
61
+ setRoute(ROUTES.WAITING_DEPOSIT_ADDRESS, meta);
62
+ }
63
+ }
64
+ };
65
+ }).sort((a, b) => Number(a.disabled) - Number(b.disabled))
66
+ }
67
+ )
68
+ ] });
52
69
  };
53
70
 
54
71
  export { SelectDepositAddressChain as default };