@daimo/pay 0.3.21 → 1.0.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 (302) hide show
  1. package/build/index.d.ts +132 -301
  2. package/build/package.json.js +103 -0
  3. package/build/package.json.js.map +1 -0
  4. package/build/src/assets/ScanIconWithLogos.js +34 -0
  5. package/build/src/assets/ScanIconWithLogos.js.map +1 -0
  6. package/build/src/assets/browsers.js +13 -0
  7. package/build/src/assets/browsers.js.map +1 -0
  8. package/build/src/assets/chains.js +152 -0
  9. package/build/src/assets/chains.js.map +1 -0
  10. package/build/src/assets/coins.js +6 -0
  11. package/build/src/assets/coins.js.map +1 -0
  12. package/build/src/assets/crepe.js +8 -0
  13. package/build/src/assets/crepe.js.map +1 -0
  14. package/build/src/assets/icons.js +28 -0
  15. package/build/src/assets/icons.js.map +1 -0
  16. package/build/src/assets/logos.js +131 -0
  17. package/build/src/assets/logos.js.map +1 -0
  18. package/build/src/assets/wallet.js +8 -0
  19. package/build/src/assets/wallet.js.map +1 -0
  20. package/build/src/assets/wave.js +6 -0
  21. package/build/src/assets/wave.js.map +1 -0
  22. package/build/src/components/Common/Alert/index.js +10 -0
  23. package/build/src/components/Common/Alert/index.js.map +1 -0
  24. package/build/src/components/Common/Alert/styles.js +55 -0
  25. package/build/src/components/Common/Alert/styles.js.map +1 -0
  26. package/build/src/components/Common/Avatar/index.js +66 -0
  27. package/build/src/components/Common/Avatar/index.js.map +1 -0
  28. package/build/src/components/Common/Avatar/styles.js +59 -0
  29. package/build/src/components/Common/Avatar/styles.js.map +1 -0
  30. package/build/src/components/Common/BrowserIcon/index.js +28 -0
  31. package/build/src/components/Common/BrowserIcon/index.js.map +1 -0
  32. package/build/src/components/Common/BrowserIcon/styles.js +20 -0
  33. package/build/src/components/Common/BrowserIcon/styles.js.map +1 -0
  34. package/build/src/components/Common/Button/index.js +38 -0
  35. package/build/src/components/Common/Button/index.js.map +1 -0
  36. package/build/src/components/Common/Button/styles.js +291 -0
  37. package/build/src/components/Common/Button/styles.js.map +1 -0
  38. package/build/src/components/Common/Chain/index.js +25 -0
  39. package/build/src/components/Common/Chain/index.js.map +1 -0
  40. package/build/src/components/Common/Chain/styles.js +94 -0
  41. package/build/src/components/Common/Chain/styles.js.map +1 -0
  42. package/build/src/components/Common/ChainSelectList/index.js +107 -0
  43. package/build/src/components/Common/ChainSelectList/index.js.map +1 -0
  44. package/build/src/components/Common/ChainSelectList/styles.js +228 -0
  45. package/build/src/components/Common/ChainSelectList/styles.js.map +1 -0
  46. package/build/src/components/Common/ConnectorList/index.js +70 -0
  47. package/build/src/components/Common/ConnectorList/index.js.map +1 -0
  48. package/build/src/components/Common/ConnectorList/styles.js +314 -0
  49. package/build/src/components/Common/ConnectorList/styles.js.map +1 -0
  50. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +71 -0
  51. package/build/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
  52. package/build/src/components/Common/CopyToClipboard/index.js +51 -0
  53. package/build/src/components/Common/CopyToClipboard/index.js.map +1 -0
  54. package/build/src/components/Common/CustomQRCode/QRCode.js +69 -0
  55. package/build/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
  56. package/build/src/components/Common/CustomQRCode/index.js +22 -0
  57. package/build/src/components/Common/CustomQRCode/index.js.map +1 -0
  58. package/build/src/components/Common/CustomQRCode/styles.js +155 -0
  59. package/build/src/components/Common/CustomQRCode/styles.js.map +1 -0
  60. package/build/src/components/Common/FitText/index.js +27 -0
  61. package/build/src/components/Common/FitText/index.js.map +1 -0
  62. package/build/src/components/Common/Modal/index.js +297 -0
  63. package/build/src/components/Common/Modal/index.js.map +1 -0
  64. package/build/src/components/Common/Modal/styles.js +660 -0
  65. package/build/src/components/Common/Modal/styles.js.map +1 -0
  66. package/build/src/components/Common/OptionsList/index.js +106 -0
  67. package/build/src/components/Common/OptionsList/index.js.map +1 -0
  68. package/build/src/components/Common/OptionsList/styles.js +165 -0
  69. package/build/src/components/Common/OptionsList/styles.js.map +1 -0
  70. package/build/src/components/Common/OrderHeader/index.js +215 -0
  71. package/build/src/components/Common/OrderHeader/index.js.map +1 -0
  72. package/build/src/components/Common/Portal/index.js +31 -0
  73. package/build/src/components/Common/Portal/index.js.map +1 -0
  74. package/build/src/components/Common/PoweredByFooter/index.js +44 -0
  75. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -0
  76. package/build/src/components/Common/ScrollArea/index.js +62 -0
  77. package/build/src/components/Common/ScrollArea/index.js.map +1 -0
  78. package/build/src/components/Common/ScrollArea/styles.js +168 -0
  79. package/build/src/components/Common/ScrollArea/styles.js.map +1 -0
  80. package/build/src/components/Common/Spinner/index.js +24 -0
  81. package/build/src/components/Common/Spinner/index.js.map +1 -0
  82. package/build/src/components/Common/Spinner/styles.js +22 -0
  83. package/build/src/components/Common/Spinner/styles.js.map +1 -0
  84. package/build/src/components/Common/ThemedButton/index.js +25 -0
  85. package/build/src/components/Common/ThemedButton/index.js.map +1 -0
  86. package/build/src/components/Common/ThemedButton/styles.js +152 -0
  87. package/build/src/components/Common/ThemedButton/styles.js.map +1 -0
  88. package/build/src/components/Common/Tooltip/index.js +97 -0
  89. package/build/src/components/Common/Tooltip/index.js.map +1 -0
  90. package/build/src/components/Common/Tooltip/styles.js +81 -0
  91. package/build/src/components/Common/Tooltip/styles.js.map +1 -0
  92. package/build/src/components/DaimoPay.js +232 -0
  93. package/build/src/components/DaimoPay.js.map +1 -0
  94. package/build/src/components/DaimoPayButton/index.js +129 -0
  95. package/build/src/components/DaimoPayButton/index.js.map +1 -0
  96. package/build/src/components/DaimoPayButton/styles.js +50 -0
  97. package/build/src/components/DaimoPayButton/styles.js.map +1 -0
  98. package/build/src/components/DaimoPayModal/ConnectUsing.js +45 -0
  99. package/build/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
  100. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js +202 -0
  101. package/build/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
  102. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js +133 -0
  103. package/build/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
  104. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +75 -0
  105. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
  106. package/build/src/components/DaimoPayModal/index.js +140 -0
  107. package/build/src/components/DaimoPayModal/index.js.map +1 -0
  108. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +21 -0
  109. package/build/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
  110. package/build/src/components/Pages/About/graphics.js +187 -0
  111. package/build/src/components/Pages/About/graphics.js.map +1 -0
  112. package/build/src/components/Pages/About/index.js +131 -0
  113. package/build/src/components/Pages/About/index.js.map +1 -0
  114. package/build/src/components/Pages/About/styles.js +144 -0
  115. package/build/src/components/Pages/About/styles.js.map +1 -0
  116. package/build/src/components/Pages/Confirmation/index.js +105 -0
  117. package/build/src/components/Pages/Confirmation/index.js.map +1 -0
  118. package/build/src/components/Pages/Connectors/index.js +20 -0
  119. package/build/src/components/Pages/Connectors/index.js.map +1 -0
  120. package/build/src/components/Pages/Connectors/styles.js +267 -0
  121. package/build/src/components/Pages/Connectors/styles.js.map +1 -0
  122. package/build/src/components/Pages/DownloadApp/index.js +30 -0
  123. package/build/src/components/Pages/DownloadApp/index.js.map +1 -0
  124. package/build/src/components/Pages/MobileConnectors/index.js +73 -0
  125. package/build/src/components/Pages/MobileConnectors/index.js.map +1 -0
  126. package/build/src/components/Pages/MobileConnectors/styles.js +65 -0
  127. package/build/src/components/Pages/MobileConnectors/styles.js.map +1 -0
  128. package/build/src/components/Pages/Onboarding/index.js +18 -0
  129. package/build/src/components/Pages/Onboarding/index.js.map +1 -0
  130. package/build/src/components/Pages/Onboarding/styles.js +229 -0
  131. package/build/src/components/Pages/Onboarding/styles.js.map +1 -0
  132. package/build/src/components/Pages/PayWithToken/index.js +204 -0
  133. package/build/src/components/Pages/PayWithToken/index.js.map +1 -0
  134. package/build/src/components/Pages/SelectDepositAddressChain/index.js +32 -0
  135. package/build/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
  136. package/build/src/components/Pages/SelectMethod/index.js +113 -0
  137. package/build/src/components/Pages/SelectMethod/index.js.map +1 -0
  138. package/build/src/components/Pages/SelectToken/index.js +62 -0
  139. package/build/src/components/Pages/SelectToken/index.js.map +1 -0
  140. package/build/src/components/Pages/Solana/ConnectSolana/index.js +37 -0
  141. package/build/src/components/Pages/Solana/ConnectSolana/index.js.map +1 -0
  142. package/build/src/components/Pages/Solana/ConnectorSolana/index.js +45 -0
  143. package/build/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
  144. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js +85 -0
  145. package/build/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
  146. package/build/src/components/Pages/Solana/SelectSolanaToken/index.js +38 -0
  147. package/build/src/components/Pages/Solana/SelectSolanaToken/index.js.map +1 -0
  148. package/build/src/components/Pages/SwitchNetworks/index.js +26 -0
  149. package/build/src/components/Pages/SwitchNetworks/index.js.map +1 -0
  150. package/build/src/components/Pages/WaitingDepositAddress/index.js +51 -0
  151. package/build/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
  152. package/build/src/components/Pages/WaitingOther/index.js +91 -0
  153. package/build/src/components/Pages/WaitingOther/index.js.map +1 -0
  154. package/build/src/components/Spinners/CircleSpinner/index.js +15 -0
  155. package/build/src/components/Spinners/CircleSpinner/index.js.map +1 -0
  156. package/build/src/components/Spinners/CircleSpinner/styles.js +118 -0
  157. package/build/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
  158. package/build/src/components/Spinners/SquircleSpinner/index.js +15 -0
  159. package/build/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
  160. package/build/src/components/Spinners/SquircleSpinner/styles.js +66 -0
  161. package/build/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
  162. package/build/src/components/contexts/solana/index.js +11 -0
  163. package/build/src/components/contexts/solana/index.js.map +1 -0
  164. package/build/src/components/contexts/web3/index.js +46 -0
  165. package/build/src/components/contexts/web3/index.js.map +1 -0
  166. package/build/src/constants/chainConfigs.js +306 -0
  167. package/build/src/constants/chainConfigs.js.map +1 -0
  168. package/build/src/constants/defaultTheme.js +6 -0
  169. package/build/src/constants/defaultTheme.js.map +1 -0
  170. package/build/src/defaultConfig.js +59 -0
  171. package/build/src/defaultConfig.js.map +1 -0
  172. package/build/src/defaultConnectors.js +43 -0
  173. package/build/src/defaultConnectors.js.map +1 -0
  174. package/build/src/hooks/connectors/useWalletConnectUri.js +93 -0
  175. package/build/src/hooks/connectors/useWalletConnectUri.js.map +1 -0
  176. package/build/src/hooks/useChainIsSupported.js +12 -0
  177. package/build/src/hooks/useChainIsSupported.js.map +1 -0
  178. package/build/src/hooks/useChains.js +11 -0
  179. package/build/src/hooks/useChains.js.map +1 -0
  180. package/build/src/hooks/useConnect.js +45 -0
  181. package/build/src/hooks/useConnect.js.map +1 -0
  182. package/build/src/hooks/useConnectCallback.js +18 -0
  183. package/build/src/hooks/useConnectCallback.js.map +1 -0
  184. package/build/src/hooks/useConnectors.js +29 -0
  185. package/build/src/hooks/useConnectors.js.map +1 -0
  186. package/build/src/hooks/useDaimoPayStatus.js +37 -0
  187. package/build/src/hooks/useDaimoPayStatus.js.map +1 -0
  188. package/build/src/hooks/useDepositAddressOptions.js +28 -0
  189. package/build/src/hooks/useDepositAddressOptions.js.map +1 -0
  190. package/build/src/hooks/useEnsFallbackConfig.js +16 -0
  191. package/build/src/hooks/useEnsFallbackConfig.js.map +1 -0
  192. package/build/src/hooks/useExternalPaymentOptions.js +46 -0
  193. package/build/src/hooks/useExternalPaymentOptions.js.map +1 -0
  194. package/build/src/hooks/useFitText.js +148 -0
  195. package/build/src/hooks/useFitText.js.map +1 -0
  196. package/build/src/hooks/useFocusTrap.js +60 -0
  197. package/build/src/hooks/useFocusTrap.js.map +1 -0
  198. package/build/src/hooks/useGoogleFont.js +45 -0
  199. package/build/src/hooks/useGoogleFont.js.map +1 -0
  200. package/build/src/hooks/useIsMobile.js +17 -0
  201. package/build/src/hooks/useIsMobile.js.map +1 -0
  202. package/build/src/hooks/useIsMounted.js +12 -0
  203. package/build/src/hooks/useIsMounted.js.map +1 -0
  204. package/build/src/hooks/useLastConnector.js +24 -0
  205. package/build/src/hooks/useLastConnector.js.map +1 -0
  206. package/build/src/hooks/useLocales.js +67 -0
  207. package/build/src/hooks/useLocales.js.map +1 -0
  208. package/build/src/hooks/useLockBodyScroll.js +53 -0
  209. package/build/src/hooks/useLockBodyScroll.js.map +1 -0
  210. package/build/src/hooks/useModal.js +35 -0
  211. package/build/src/hooks/useModal.js.map +1 -0
  212. package/build/src/hooks/usePayWithSolanaToken.js +50 -0
  213. package/build/src/hooks/usePayWithSolanaToken.js.map +1 -0
  214. package/build/src/hooks/usePayWithToken.js +57 -0
  215. package/build/src/hooks/usePayWithToken.js.map +1 -0
  216. package/build/src/hooks/usePaymentState.js +243 -0
  217. package/build/src/hooks/usePaymentState.js.map +1 -0
  218. package/build/src/hooks/usePrevious.js +14 -0
  219. package/build/src/hooks/usePrevious.js.map +1 -0
  220. package/build/src/hooks/useSolanaPaymentOptions.js +37 -0
  221. package/build/src/hooks/useSolanaPaymentOptions.js.map +1 -0
  222. package/build/src/hooks/useWalletConnectModal.js +52 -0
  223. package/build/src/hooks/useWalletConnectModal.js.map +1 -0
  224. package/build/src/hooks/useWalletPaymentOptions.js +40 -0
  225. package/build/src/hooks/useWalletPaymentOptions.js.map +1 -0
  226. package/build/src/hooks/useWindowSize.js +23 -0
  227. package/build/src/hooks/useWindowSize.js.map +1 -0
  228. package/build/src/index.js +10 -0
  229. package/build/src/index.js.map +1 -0
  230. package/build/src/localizations/index.js +57 -0
  231. package/build/src/localizations/index.js.map +1 -0
  232. package/build/src/localizations/locales/ar-AE.js +97 -0
  233. package/build/src/localizations/locales/ar-AE.js.map +1 -0
  234. package/build/src/localizations/locales/ca-AD.js +95 -0
  235. package/build/src/localizations/locales/ca-AD.js.map +1 -0
  236. package/build/src/localizations/locales/ee-EE.js +95 -0
  237. package/build/src/localizations/locales/ee-EE.js.map +1 -0
  238. package/build/src/localizations/locales/en-US.js +95 -0
  239. package/build/src/localizations/locales/en-US.js.map +1 -0
  240. package/build/src/localizations/locales/es-ES.js +95 -0
  241. package/build/src/localizations/locales/es-ES.js.map +1 -0
  242. package/build/src/localizations/locales/fa-IR.js +95 -0
  243. package/build/src/localizations/locales/fa-IR.js.map +1 -0
  244. package/build/src/localizations/locales/fr-FR.js +95 -0
  245. package/build/src/localizations/locales/fr-FR.js.map +1 -0
  246. package/build/src/localizations/locales/ja-JP.js +95 -0
  247. package/build/src/localizations/locales/ja-JP.js.map +1 -0
  248. package/build/src/localizations/locales/pt-BR.js +95 -0
  249. package/build/src/localizations/locales/pt-BR.js.map +1 -0
  250. package/build/src/localizations/locales/ru-RU.js +95 -0
  251. package/build/src/localizations/locales/ru-RU.js.map +1 -0
  252. package/build/src/localizations/locales/tr-TR.js +95 -0
  253. package/build/src/localizations/locales/tr-TR.js.map +1 -0
  254. package/build/src/localizations/locales/vi-VN.js +95 -0
  255. package/build/src/localizations/locales/vi-VN.js.map +1 -0
  256. package/build/src/localizations/locales/zh-CN.js +95 -0
  257. package/build/src/localizations/locales/zh-CN.js.map +1 -0
  258. package/build/src/styles/defaultTheme.js +89 -0
  259. package/build/src/styles/defaultTheme.js.map +1 -0
  260. package/build/src/styles/index.js +329 -0
  261. package/build/src/styles/index.js.map +1 -0
  262. package/build/src/styles/styled/index.js +16 -0
  263. package/build/src/styles/styled/index.js.map +1 -0
  264. package/build/src/styles/themes/base.js +141 -0
  265. package/build/src/styles/themes/base.js.map +1 -0
  266. package/build/src/styles/themes/index.js +13 -0
  267. package/build/src/styles/themes/index.js.map +1 -0
  268. package/build/src/styles/themes/midnight.js +76 -0
  269. package/build/src/styles/themes/midnight.js.map +1 -0
  270. package/build/src/styles/themes/minimal.js +96 -0
  271. package/build/src/styles/themes/minimal.js.map +1 -0
  272. package/build/src/styles/themes/nouns.js +81 -0
  273. package/build/src/styles/themes/nouns.js.map +1 -0
  274. package/build/src/styles/themes/retro.js +106 -0
  275. package/build/src/styles/themes/retro.js.map +1 -0
  276. package/build/src/styles/themes/rounded.js +106 -0
  277. package/build/src/styles/themes/rounded.js.map +1 -0
  278. package/build/src/styles/themes/soft.js +71 -0
  279. package/build/src/styles/themes/soft.js.map +1 -0
  280. package/build/src/styles/themes/web95.js +132 -0
  281. package/build/src/styles/themes/web95.js.map +1 -0
  282. package/build/src/utils/exports.js +12 -0
  283. package/build/src/utils/exports.js.map +1 -0
  284. package/build/src/utils/index.js +39 -0
  285. package/build/src/utils/index.js.map +1 -0
  286. package/build/src/utils/p3.js +16 -0
  287. package/build/src/utils/p3.js.map +1 -0
  288. package/build/src/utils/platform.js +13 -0
  289. package/build/src/utils/platform.js.map +1 -0
  290. package/build/src/utils/trpc.js +14 -0
  291. package/build/src/utils/trpc.js.map +1 -0
  292. package/build/src/utils/wallets.js +14 -0
  293. package/build/src/utils/wallets.js.map +1 -0
  294. package/build/src/wallets/index.js +32 -0
  295. package/build/src/wallets/index.js.map +1 -0
  296. package/build/src/wallets/useWallets.js +86 -0
  297. package/build/src/wallets/useWallets.js.map +1 -0
  298. package/build/src/wallets/walletConfigs.js +362 -0
  299. package/build/src/wallets/walletConfigs.js.map +1 -0
  300. package/package.json +5 -5
  301. package/build/index.es.js +0 -11565
  302. package/build/index.es.js.map +0 -1
@@ -0,0 +1,232 @@
1
+ import { jsx, jsxs } from 'react/jsx-runtime';
2
+ import { DaimoPayOrderMode, DaimoPayOrderStatusSource, DaimoPayIntentStatus, retryBackoff, debugJson } from '@daimo/common';
3
+ import { Buffer } from 'buffer';
4
+ import React, { createContext, useState, useEffect, useMemo, createElement } from 'react';
5
+ import { ThemeProvider } from 'styled-components';
6
+ import { WagmiContext, useAccount } from 'wagmi';
7
+ import { REQUIRED_CHAINS } from '../defaultConfig.js';
8
+ import { useChainIsSupported } from '../hooks/useChainIsSupported.js';
9
+ import { useChains } from '../hooks/useChains.js';
10
+ import { useConnectCallback } from '../hooks/useConnectCallback.js';
11
+ import { useThemeFont } from '../hooks/useGoogleFont.js';
12
+ import { usePaymentState } from '../hooks/usePaymentState.js';
13
+ import defaultTheme from '../styles/defaultTheme.js';
14
+ import { createTrpcClient } from '../utils/trpc.js';
15
+ import { DaimoPayModal } from './DaimoPayModal/index.js';
16
+ import { SolanaContextProvider } from './contexts/solana/index.js';
17
+ import { Web3ContextProvider } from './contexts/web3/index.js';
18
+
19
+ var ROUTES;
20
+ (function (ROUTES) {
21
+ ROUTES["SELECT_METHOD"] = "daimoPaySelectMethod";
22
+ ROUTES["SELECT_TOKEN"] = "daimoPaySelectToken";
23
+ ROUTES["WAITING_OTHER"] = "daimoPayWaitingOther";
24
+ ROUTES["SELECT_DEPOSIT_ADDRESS_CHAIN"] = "daimoPaySelectDepositAddressChain";
25
+ ROUTES["WAITING_DEPOSIT_ADDRESS"] = "daimoPayWaitingDepositAddress";
26
+ ROUTES["PAY_WITH_TOKEN"] = "daimoPayPayWithToken";
27
+ ROUTES["CONFIRMATION"] = "daimoPayConfirmation";
28
+ ROUTES["SOLANA_CONNECT"] = "daimoPaySolanaConnect";
29
+ ROUTES["SOLANA_CONNECTOR"] = "daimoPaySolanaConnector";
30
+ ROUTES["SOLANA_SELECT_TOKEN"] = "daimoPaySolanaSelectToken";
31
+ ROUTES["SOLANA_PAY_WITH_TOKEN"] = "daimoPaySolanaPayWithToken";
32
+ // Unused routes. Kept to minimize connectkit merge conflicts.
33
+ ROUTES["ONBOARDING"] = "onboarding";
34
+ ROUTES["ABOUT"] = "about";
35
+ ROUTES["CONNECTORS"] = "connectors";
36
+ ROUTES["MOBILECONNECTORS"] = "mobileConnectors";
37
+ ROUTES["CONNECT"] = "connect";
38
+ ROUTES["DOWNLOAD"] = "download";
39
+ ROUTES["SWITCHNETWORKS"] = "switchNetworks";
40
+ })(ROUTES || (ROUTES = {}));
41
+ /** Meant for internal use. This will be non-exported in a future SDK version. */
42
+ const Context = createContext(null);
43
+ const DaimoPayProviderWithoutSolana = ({ children, theme = "auto", mode = "auto", customTheme, options, onConnect, onDisconnect, debugMode = false, payApiUrl = "https://pay-api.daimo.xyz", }) => {
44
+ // DaimoPayProvider must be within a WagmiProvider
45
+ if (!React.useContext(WagmiContext)) {
46
+ throw Error("DaimoPayProvider must be within a WagmiProvider");
47
+ }
48
+ // Only allow for mounting DaimoPayProvider once, so we avoid weird global
49
+ // state collisions.
50
+ if (React.useContext(Context)) {
51
+ throw new Error("Multiple, nested usages of DaimoPayProvider detected. Please use only one.");
52
+ }
53
+ useConnectCallback({
54
+ onConnect,
55
+ onDisconnect,
56
+ });
57
+ const chains = useChains();
58
+ for (const requiredChain of REQUIRED_CHAINS) {
59
+ if (!chains.some((c) => c.id === requiredChain.id)) {
60
+ throw new Error(`Daimo Pay requires chains ${REQUIRED_CHAINS.map((c) => c.name).join(", ")}. Use \`getDefaultConfig\` to automatically configure required chains.`);
61
+ }
62
+ }
63
+ // Default config options
64
+ const defaultOptions = {
65
+ language: "en-US",
66
+ hideBalance: false,
67
+ hideTooltips: false,
68
+ hideQuestionMarkCTA: false,
69
+ hideNoWalletCTA: false,
70
+ walletConnectCTA: "link",
71
+ hideRecentBadge: false,
72
+ avoidLayoutShift: true,
73
+ embedGoogleFonts: false,
74
+ truncateLongENSAddress: true,
75
+ walletConnectName: undefined,
76
+ reducedMotion: false,
77
+ disclaimer: null,
78
+ bufferPolyfill: true,
79
+ customAvatar: undefined,
80
+ initialChainId: undefined,
81
+ enforceSupportedChains: false,
82
+ ethereumOnboardingUrl: undefined,
83
+ walletOnboardingUrl: undefined,
84
+ overlayBlur: undefined,
85
+ };
86
+ const opts = Object.assign({}, defaultOptions, options);
87
+ if (typeof window !== "undefined") {
88
+ // Buffer Polyfill, needed for bundlers that don't provide Node polyfills (e.g CRA, Vite, etc.)
89
+ if (opts.bufferPolyfill)
90
+ window.Buffer = window.Buffer ?? Buffer;
91
+ // Some bundlers may need `global` and `process.env` polyfills as well
92
+ // Not implemented here to avoid unexpected behaviors, but leaving example here for future reference
93
+ /*
94
+ * window.global = window.global ?? window;
95
+ * window.process = window.process ?? { env: {} };
96
+ */
97
+ }
98
+ const [ckTheme, setTheme] = useState(theme);
99
+ const [ckMode, setMode] = useState(mode);
100
+ const [ckCustomTheme, setCustomTheme] = useState(customTheme ?? {});
101
+ const [ckLang, setLang] = useState("en-US");
102
+ const [open, setOpen] = useState(false);
103
+ const [connector, setConnector] = useState({
104
+ id: "",
105
+ });
106
+ const [solanaConnector, setSolanaConnector] = useState();
107
+ const [route, setRoute] = useState(ROUTES.SELECT_METHOD);
108
+ const [errorMessage, setErrorMessage] = useState("");
109
+ const [resize, onResize] = useState(0);
110
+ // Include Google Font that is needed for a themes
111
+ if (opts.embedGoogleFonts)
112
+ useThemeFont(theme);
113
+ // Other Configuration
114
+ useEffect(() => setTheme(theme), [theme]);
115
+ useEffect(() => setLang(opts.language || "en-US"), [opts.language]);
116
+ useEffect(() => setErrorMessage(null), [route, open]);
117
+ // Check if chain is supported, elsewise redirect to switches page
118
+ const { chain, isConnected } = useAccount();
119
+ const isChainSupported = useChainIsSupported(chain?.id);
120
+ useEffect(() => {
121
+ if (isConnected && opts.enforceSupportedChains && !isChainSupported) {
122
+ setOpen(true);
123
+ setRoute(ROUTES.SWITCHNETWORKS);
124
+ }
125
+ }, [isConnected, isChainSupported, chain, route, open]);
126
+ const log = debugMode ? console.log : () => { };
127
+ // Connect to the Daimo Pay TRPC API
128
+ const trpc = useMemo(() => createTrpcClient(payApiUrl), [payApiUrl]);
129
+ // PaymentInfo is a second, inner context object containing a DaimoPayOrder
130
+ // plus all associated status and callbacks. In order for useContext() and
131
+ // downstream hooks like useDaimoPayStatus() to work correctly, we must set
132
+ // set refresh context when payment status changes; done via setDaimoPayOrder.
133
+ const [daimoPayOrder, setDaimoPayOrder] = useState();
134
+ const paymentState = usePaymentState({
135
+ trpc,
136
+ daimoPayOrder,
137
+ setDaimoPayOrder,
138
+ setOpen,
139
+ log,
140
+ });
141
+ // When a payment is in progress, poll for status updates. Do this regardless
142
+ // of whether the modal is still being displayed for useDaimoPayStatus().
143
+ useEffect(() => {
144
+ // Order just updated...
145
+ if (daimoPayOrder?.mode !== DaimoPayOrderMode.HYDRATED)
146
+ return;
147
+ const { sourceStatus, intentStatus } = daimoPayOrder;
148
+ let intervalMs = 0;
149
+ if (sourceStatus === DaimoPayOrderStatusSource.WAITING_PAYMENT) {
150
+ intervalMs = 2500; // additional, faster polling in WaitingOther
151
+ }
152
+ else if (intentStatus === DaimoPayIntentStatus.PENDING) {
153
+ intervalMs = 300; // poll fast from (payment initiated) to (finished)
154
+ }
155
+ else {
156
+ return;
157
+ }
158
+ log(`[PAY] polling in ${intervalMs}ms`);
159
+ setTimeout(() => retryBackoff("refreshOrder", () => paymentState.refreshOrder()), intervalMs);
160
+ }, [daimoPayOrder]);
161
+ const showPayment = async (modalOptions) => {
162
+ const { daimoPayOrder, payParams } = paymentState;
163
+ const id = daimoPayOrder?.id;
164
+ log(`[PAY] showing payment ${debugJson({ id, payParams, modalOptions })}`);
165
+ paymentState.setModalOptions(modalOptions);
166
+ if (daimoPayOrder &&
167
+ daimoPayOrder.mode === DaimoPayOrderMode.HYDRATED &&
168
+ (daimoPayOrder.destFastFinishTxHash || daimoPayOrder.destClaimTxHash)) {
169
+ setRoute(ROUTES.CONFIRMATION);
170
+ }
171
+ else {
172
+ setRoute(ROUTES.SELECT_METHOD);
173
+ }
174
+ setOpen(true);
175
+ };
176
+ const value = {
177
+ theme: ckTheme,
178
+ setTheme,
179
+ mode: ckMode,
180
+ setMode,
181
+ customTheme,
182
+ setCustomTheme,
183
+ lang: ckLang,
184
+ setLang,
185
+ open,
186
+ setOpen,
187
+ route,
188
+ setRoute,
189
+ connector,
190
+ setConnector,
191
+ solanaConnector,
192
+ setSolanaConnector,
193
+ onConnect,
194
+ // Other configuration
195
+ options: opts,
196
+ errorMessage,
197
+ debugMode,
198
+ log,
199
+ displayError: (message, code) => {
200
+ setErrorMessage(message);
201
+ console.log("---------DAIMOPAY DEBUG---------");
202
+ console.log(message);
203
+ if (code)
204
+ console.table(code);
205
+ console.log("---------/DAIMOPAY DEBUG---------");
206
+ },
207
+ resize,
208
+ triggerResize: () => onResize((prev) => prev + 1),
209
+ // Above: generic ConnectKit context
210
+ // Below: Daimo Pay context
211
+ showPayment,
212
+ paymentState,
213
+ trpc,
214
+ };
215
+ return createElement(Context.Provider, { value }, jsx(Web3ContextProvider, { enabled: open, children: jsxs(ThemeProvider, { theme: defaultTheme, children: [children, jsx(DaimoPayModal, { lang: ckLang, theme: ckTheme, mode: mode, customTheme: ckCustomTheme })] }) }));
216
+ };
217
+ /**
218
+ * Provides context for DaimoPayButton and hooks. Place in app root or layout.
219
+ */
220
+ const DaimoPayProvider = (props) => {
221
+ return (jsx(SolanaContextProvider, { solanaRpcUrl: props.solanaRpcUrl, children: jsx(DaimoPayProviderWithoutSolana, { ...props }) }));
222
+ };
223
+ /** Daimo Pay internal context. */
224
+ const usePayContext = () => {
225
+ const context = React.useContext(Context);
226
+ if (!context)
227
+ throw Error("DaimoPay Hook must be inside a Provider.");
228
+ return context;
229
+ };
230
+
231
+ export { Context, DaimoPayProvider, ROUTES, usePayContext };
232
+ //# sourceMappingURL=DaimoPay.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"DaimoPay.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,129 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { useEffect } from 'react';
3
+ import { usePayContext } from '../DaimoPay.js';
4
+ import { TextContainer } from './styles.js';
5
+ import { DaimoPayOrderMode, DaimoPayOrderStatusSource, writeDaimoPayOrderID, assertNotNull, DaimoPayIntentStatus } from '@daimo/common';
6
+ import { AnimatePresence } from 'framer-motion';
7
+ import { ResetContainer } from '../../styles/index.js';
8
+ import ThemedButton from '../Common/ThemedButton/index.js';
9
+ import { ThemeContainer } from '../Common/ThemedButton/styles.js';
10
+
11
+ /**
12
+ * A button that shows the Daimo Pay checkout. Replaces the traditional
13
+ * Connect Wallet » approve » execute sequence with a single action.
14
+ */
15
+ function DaimoPayButton(props) {
16
+ const { theme, mode, customTheme } = props;
17
+ const context = usePayContext();
18
+ return (jsx(DaimoPayButtonCustom, { ...props, children: ({ show }) => (jsx(ResetContainer, { "$useTheme": theme ?? context.theme, "$useMode": mode ?? context.mode, "$customTheme": customTheme ?? context.customTheme, children: jsx(ThemeContainer, { onClick: !props.disabled && show, children: jsx(ThemedButton, { theme: theme ?? context.theme, mode: mode ?? context.mode, customTheme: customTheme ?? context.customTheme, children: jsx(DaimoPayButtonInner, { disabled: props.disabled }) }) }) })) }));
19
+ }
20
+ /** Like DaimoPayButton, but with custom styling. */
21
+ function DaimoPayButtonCustom(props) {
22
+ const context = usePayContext();
23
+ // Pre-load payment info in background.
24
+ // Reload when any of the info changes.
25
+ let payParams = "appId" in props
26
+ ? {
27
+ appId: props.appId,
28
+ toChain: props.toChain,
29
+ toAddress: props.toAddress,
30
+ toToken: props.toToken,
31
+ toUnits: props.toUnits,
32
+ toCallData: props.toCallData,
33
+ isAmountEditable: props.amountEditable ?? false,
34
+ intent: props.intent,
35
+ paymentOptions: props.paymentOptions,
36
+ preferredChains: props.preferredChains,
37
+ preferredTokens: props.preferredTokens,
38
+ }
39
+ : null;
40
+ let payId = "payId" in props ? props.payId : null;
41
+ const { paymentState } = context;
42
+ useEffect(() => {
43
+ if (payId != null) {
44
+ paymentState.setPayId(payId);
45
+ }
46
+ else if (payParams != null) {
47
+ paymentState.setPayParams(payParams);
48
+ }
49
+ }, [payId, ...Object.values(payParams || {})]);
50
+ // Payment events: call these three event handlers.
51
+ const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
52
+ const order = paymentState.daimoPayOrder;
53
+ const hydOrder = order?.mode === DaimoPayOrderMode.HYDRATED ? order : null;
54
+ const isStarted = hydOrder?.sourceStatus !== DaimoPayOrderStatusSource.WAITING_PAYMENT;
55
+ useEffect(() => {
56
+ if (hydOrder == null || !isStarted)
57
+ return;
58
+ onPaymentStarted?.({
59
+ paymentId: writeDaimoPayOrderID(hydOrder.id),
60
+ type: "payment_started",
61
+ chainId: assertNotNull(hydOrder.sourceTokenAmount).token.chainId,
62
+ txHash: assertNotNull(hydOrder.sourceInitiateTxHash),
63
+ });
64
+ }, [isStarted]);
65
+ useEffect(() => {
66
+ if (hydOrder == null)
67
+ return;
68
+ if (hydOrder.intentStatus === DaimoPayIntentStatus.PENDING)
69
+ return;
70
+ const commonFields = {
71
+ paymentId: writeDaimoPayOrderID(hydOrder.id),
72
+ chainId: assertNotNull(hydOrder.destFinalCallTokenAmount).token.chainId,
73
+ txHash: assertNotNull(hydOrder.destFastFinishTxHash ?? hydOrder.destClaimTxHash),
74
+ };
75
+ if (hydOrder.intentStatus === DaimoPayIntentStatus.SUCCESSFUL) {
76
+ onPaymentCompleted?.({ type: "payment_completed", ...commonFields });
77
+ }
78
+ else if (hydOrder.intentStatus === DaimoPayIntentStatus.REFUNDED) {
79
+ onPaymentBounced?.({ type: "payment_bounced", ...commonFields });
80
+ }
81
+ }, [hydOrder?.intentStatus]);
82
+ // Validation
83
+ if ((payId == null) == (payParams == null)) {
84
+ throw new Error("Must specify either payId or appId, not both");
85
+ }
86
+ const { children, closeOnSuccess } = props;
87
+ const modalOptions = { closeOnSuccess };
88
+ const show = () => context.showPayment(modalOptions);
89
+ const hide = () => context.setOpen(false);
90
+ return children({ show, hide });
91
+ }
92
+ DaimoPayButtonCustom.displayName = "DaimoPayButton.Custom";
93
+ DaimoPayButton.Custom = DaimoPayButtonCustom;
94
+ const contentVariants = {
95
+ initial: {
96
+ zIndex: 2,
97
+ opacity: 0,
98
+ x: "-100%",
99
+ },
100
+ animate: {
101
+ opacity: 1,
102
+ x: 0.1,
103
+ transition: {
104
+ duration: 0.4,
105
+ ease: [0.25, 1, 0.5, 1],
106
+ },
107
+ },
108
+ exit: {
109
+ zIndex: 1,
110
+ opacity: 0,
111
+ x: "-100%",
112
+ pointerEvents: "none",
113
+ position: "absolute",
114
+ transition: {
115
+ duration: 0.4,
116
+ ease: [0.25, 1, 0.5, 1],
117
+ },
118
+ },
119
+ };
120
+ function DaimoPayButtonInner({ disabled }) {
121
+ const { paymentState } = usePayContext();
122
+ const label = paymentState?.daimoPayOrder?.metadata?.intent ?? "Pay";
123
+ return (jsx(AnimatePresence, { initial: false, children: jsx(TextContainer, { initial: "initial", animate: "animate", exit: "exit", variants: contentVariants, style: {
124
+ height: 40,
125
+ }, children: label }) }));
126
+ }
127
+
128
+ export { DaimoPayButton };
129
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,50 @@
1
+ import { motion } from 'framer-motion';
2
+ import styled from '../../styles/styled/index.js';
3
+
4
+ const TextContainer = styled(motion.div) `
5
+ top: 0;
6
+ bottom: 0;
7
+ left: 0;
8
+ display: inline-flex;
9
+ align-items: center;
10
+ justify-content: center;
11
+ white-space: nowrap;
12
+ `;
13
+ styled(motion.div) `
14
+ position: relative;
15
+ width: 24px;
16
+ height: 24px;
17
+ border-radius: 12px;
18
+ overflow: hidden;
19
+ svg {
20
+ display: block;
21
+ }
22
+ `;
23
+ styled(motion.div) `
24
+ pointer-events: none;
25
+ user-select: none;
26
+ position: relative;
27
+ width: 24px;
28
+ height: 24px;
29
+ margin-right: 8px;
30
+ `;
31
+ styled(motion.div) `
32
+ z-index: 1;
33
+ position: absolute;
34
+ inset: 0;
35
+ display: flex;
36
+ align-items: center;
37
+ justify-content: center;
38
+ border-radius: 100%;
39
+ box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.02);
40
+ background: var(--ck-body-color-danger, red);
41
+ color: #fff;
42
+ svg {
43
+ display: block;
44
+ position: relative;
45
+ top: -1px;
46
+ }
47
+ `;
48
+
49
+ export { TextContainer };
50
+ //# sourceMappingURL=styles.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"styles.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,45 @@
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
+ import { AnimatePresence, motion } from 'framer-motion';
3
+ import { useState, useEffect } from 'react';
4
+ import { useWallet } from '../../wallets/useWallets.js';
5
+ import { usePayContext } from '../DaimoPay.js';
6
+ import ConnectWithInjector from './ConnectWithInjector/index.js';
7
+ import ConnectWithQRCode from './ConnectWithQRCode.js';
8
+ import Alert from '../Common/Alert/index.js';
9
+ import { contentVariants } from '../Common/Modal/index.js';
10
+
11
+ const states = {
12
+ QRCODE: "qrcode",
13
+ INJECTOR: "injector",
14
+ };
15
+ const ConnectUsing = () => {
16
+ const context = usePayContext();
17
+ const wallet = useWallet(context.connector.id);
18
+ // If cannot be scanned, display injector flow, which if extension is not installed will show CTA to install it
19
+ const isQrCode = !wallet?.isInstalled && wallet?.getWalletConnectDeeplink;
20
+ const [status, setStatus] = useState(isQrCode ? states.QRCODE : states.INJECTOR);
21
+ useEffect(() => {
22
+ // if no provider, change to qrcode
23
+ const checkProvider = async () => {
24
+ const res = await wallet?.connector.getProvider();
25
+ if (!res) {
26
+ setStatus(states.QRCODE);
27
+ setTimeout(context.triggerResize, 10); // delay required here for modal to resize
28
+ }
29
+ };
30
+ if (status === states.INJECTOR)
31
+ checkProvider();
32
+ }, []);
33
+ if (!wallet)
34
+ return jsxs(Alert, { children: ["Connector not found ", context.connector.id] });
35
+ return (jsxs(AnimatePresence, { children: [status === states.QRCODE && (jsx(motion.div, { initial: "initial", animate: "animate", exit: "exit", variants: contentVariants, children: jsx(ConnectWithQRCode, { switchConnectMethod: (id) => {
36
+ //if (id) setId(id);
37
+ setStatus(states.INJECTOR);
38
+ } }) }, states.QRCODE)), status === states.INJECTOR && (jsx(motion.div, { initial: "initial", animate: "animate", exit: "exit", variants: contentVariants, children: jsx(ConnectWithInjector, { switchConnectMethod: (id) => {
39
+ //if (id) setId(id);
40
+ setStatus(states.QRCODE);
41
+ } }) }, states.INJECTOR))] }));
42
+ };
43
+
44
+ export { ConnectUsing as default };
45
+ //# sourceMappingURL=ConnectUsing.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ConnectUsing.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}