@daimo/pay 1.19.5 → 1.19.7

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 (442) hide show
  1. package/build/_virtual/common.js +4 -0
  2. package/build/_virtual/common.js.map +1 -0
  3. package/build/_virtual/common2.js +4 -0
  4. package/build/_virtual/common2.js.map +1 -0
  5. package/build/_virtual/hash.js +4 -0
  6. package/build/_virtual/hash.js.map +1 -0
  7. package/build/_virtual/hash2.js +4 -0
  8. package/build/_virtual/hash2.js.map +1 -0
  9. package/build/_virtual/index.js +4 -0
  10. package/build/_virtual/index.js.map +1 -0
  11. package/build/_virtual/index2.js +4 -0
  12. package/build/_virtual/index2.js.map +1 -0
  13. package/build/_virtual/inherits_browser.js +4 -0
  14. package/build/_virtual/inherits_browser.js.map +1 -0
  15. package/build/_virtual/ripemd.js +4 -0
  16. package/build/_virtual/ripemd.js.map +1 -0
  17. package/build/_virtual/sha.js +4 -0
  18. package/build/_virtual/sha.js.map +1 -0
  19. package/build/_virtual/utils.js +4 -0
  20. package/build/_virtual/utils.js.map +1 -0
  21. package/build/node_modules/@binance/w3w-utils/dist/index.js +7 -0
  22. package/build/node_modules/@binance/w3w-utils/dist/index.js.map +1 -0
  23. package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js +349 -0
  24. package/build/node_modules/@binance/w3w-utils/node_modules/eventemitter3/index.js.map +1 -0
  25. package/build/node_modules/hash.js/lib/hash/common.js +105 -0
  26. package/build/node_modules/hash.js/lib/hash/common.js.map +1 -0
  27. package/build/node_modules/hash.js/lib/hash/hmac.js +60 -0
  28. package/build/node_modules/hash.js/lib/hash/hmac.js.map +1 -0
  29. package/build/node_modules/hash.js/lib/hash/ripemd.js +159 -0
  30. package/build/node_modules/hash.js/lib/hash/ripemd.js.map +1 -0
  31. package/build/node_modules/hash.js/lib/hash/sha/1.js +88 -0
  32. package/build/node_modules/hash.js/lib/hash/sha/1.js.map +1 -0
  33. package/build/node_modules/hash.js/lib/hash/sha/224.js +42 -0
  34. package/build/node_modules/hash.js/lib/hash/sha/224.js.map +1 -0
  35. package/build/node_modules/hash.js/lib/hash/sha/256.js +120 -0
  36. package/build/node_modules/hash.js/lib/hash/sha/256.js.map +1 -0
  37. package/build/node_modules/hash.js/lib/hash/sha/384.js +48 -0
  38. package/build/node_modules/hash.js/lib/hash/sha/384.js.map +1 -0
  39. package/build/node_modules/hash.js/lib/hash/sha/512.js +344 -0
  40. package/build/node_modules/hash.js/lib/hash/sha/512.js.map +1 -0
  41. package/build/node_modules/hash.js/lib/hash/sha/common.js +61 -0
  42. package/build/node_modules/hash.js/lib/hash/sha/common.js.map +1 -0
  43. package/build/node_modules/hash.js/lib/hash/sha.js +23 -0
  44. package/build/node_modules/hash.js/lib/hash/sha.js.map +1 -0
  45. package/build/node_modules/hash.js/lib/hash/utils.js +291 -0
  46. package/build/node_modules/hash.js/lib/hash/utils.js.map +1 -0
  47. package/build/node_modules/hash.js/lib/hash.js +34 -0
  48. package/build/node_modules/hash.js/lib/hash.js.map +1 -0
  49. package/build/node_modules/inherits/inherits_browser.js +39 -0
  50. package/build/node_modules/inherits/inherits_browser.js.map +1 -0
  51. package/build/node_modules/minimalistic-assert/index.js +22 -0
  52. package/build/node_modules/minimalistic-assert/index.js.map +1 -0
  53. package/build/package.json.js +2 -2
  54. package/build/pay/packages/connectkit/package.json.js +123 -0
  55. package/build/pay/packages/connectkit/package.json.js.map +1 -0
  56. package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js +329 -0
  57. package/build/pay/packages/connectkit/src/assets/MobileWithLogos.js.map +1 -0
  58. package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js +243 -0
  59. package/build/pay/packages/connectkit/src/assets/ScanIconWithLogos.js.map +1 -0
  60. package/build/pay/packages/connectkit/src/assets/browsers.js +969 -0
  61. package/build/pay/packages/connectkit/src/assets/browsers.js.map +1 -0
  62. package/build/pay/packages/connectkit/src/assets/chains.js +639 -0
  63. package/build/pay/packages/connectkit/src/assets/chains.js.map +1 -0
  64. package/build/pay/packages/connectkit/src/assets/icons.js +273 -0
  65. package/build/pay/packages/connectkit/src/assets/icons.js.map +1 -0
  66. package/build/pay/packages/connectkit/src/assets/logos.js +1722 -0
  67. package/build/pay/packages/connectkit/src/assets/logos.js.map +1 -0
  68. package/build/pay/packages/connectkit/src/assets/wave.js +46 -0
  69. package/build/pay/packages/connectkit/src/assets/wave.js.map +1 -0
  70. package/build/pay/packages/connectkit/src/components/Common/Alert/index.js +13 -0
  71. package/build/pay/packages/connectkit/src/components/Common/Alert/index.js.map +1 -0
  72. package/build/pay/packages/connectkit/src/components/Common/Alert/styles.js +55 -0
  73. package/build/pay/packages/connectkit/src/components/Common/Alert/styles.js.map +1 -0
  74. package/build/pay/packages/connectkit/src/components/Common/AmountInput/AmountInputField.js +71 -0
  75. package/build/pay/packages/connectkit/src/components/Common/AmountInput/AmountInputField.js.map +1 -0
  76. package/build/pay/packages/connectkit/src/components/Common/AmountInput/index.js +159 -0
  77. package/build/pay/packages/connectkit/src/components/Common/AmountInput/index.js.map +1 -0
  78. package/build/pay/packages/connectkit/src/components/Common/Avatar/index.js +78 -0
  79. package/build/pay/packages/connectkit/src/components/Common/Avatar/index.js.map +1 -0
  80. package/build/pay/packages/connectkit/src/components/Common/Avatar/styles.js +54 -0
  81. package/build/pay/packages/connectkit/src/components/Common/Avatar/styles.js.map +1 -0
  82. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/index.js +29 -0
  83. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/index.js.map +1 -0
  84. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/styles.js +20 -0
  85. package/build/pay/packages/connectkit/src/components/Common/BrowserIcon/styles.js.map +1 -0
  86. package/build/pay/packages/connectkit/src/components/Common/Button/index.js +144 -0
  87. package/build/pay/packages/connectkit/src/components/Common/Button/index.js.map +1 -0
  88. package/build/pay/packages/connectkit/src/components/Common/Button/styles.js +287 -0
  89. package/build/pay/packages/connectkit/src/components/Common/Button/styles.js.map +1 -0
  90. package/build/pay/packages/connectkit/src/components/Common/Chain/index.js +141 -0
  91. package/build/pay/packages/connectkit/src/components/Common/Chain/index.js.map +1 -0
  92. package/build/pay/packages/connectkit/src/components/Common/Chain/styles.js +90 -0
  93. package/build/pay/packages/connectkit/src/components/Common/Chain/styles.js.map +1 -0
  94. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/index.js +250 -0
  95. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/index.js.map +1 -0
  96. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/styles.js +226 -0
  97. package/build/pay/packages/connectkit/src/components/Common/ChainSelectList/styles.js.map +1 -0
  98. package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js +92 -0
  99. package/build/pay/packages/connectkit/src/components/Common/CircleTimer.js.map +1 -0
  100. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js +121 -0
  101. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/index.js.map +1 -0
  102. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/styles.js +344 -0
  103. package/build/pay/packages/connectkit/src/components/Common/ConnectorList/styles.js.map +1 -0
  104. package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js +78 -0
  105. package/build/pay/packages/connectkit/src/components/Common/CopyToClipboard/CopyToClipboardIcon.js.map +1 -0
  106. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js +132 -0
  107. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/QRCode.js.map +1 -0
  108. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js +89 -0
  109. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/index.js.map +1 -0
  110. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js +142 -0
  111. package/build/pay/packages/connectkit/src/components/Common/CustomQRCode/styles.js.map +1 -0
  112. package/build/pay/packages/connectkit/src/components/Common/FitText/index.js +34 -0
  113. package/build/pay/packages/connectkit/src/components/Common/FitText/index.js.map +1 -0
  114. package/build/pay/packages/connectkit/src/components/Common/Modal/index.js +547 -0
  115. package/build/pay/packages/connectkit/src/components/Common/Modal/index.js.map +1 -0
  116. package/build/pay/packages/connectkit/src/components/Common/Modal/styles.js +665 -0
  117. package/build/pay/packages/connectkit/src/components/Common/Modal/styles.js.map +1 -0
  118. package/build/pay/packages/connectkit/src/components/Common/OptionsList/index.js +145 -0
  119. package/build/pay/packages/connectkit/src/components/Common/OptionsList/index.js.map +1 -0
  120. package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js +138 -0
  121. package/build/pay/packages/connectkit/src/components/Common/OptionsList/styles.js.map +1 -0
  122. package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js +148 -0
  123. package/build/pay/packages/connectkit/src/components/Common/OrderHeader/index.js.map +1 -0
  124. package/build/pay/packages/connectkit/src/components/Common/PaymentBreakdown/index.js +70 -0
  125. package/build/pay/packages/connectkit/src/components/Common/PaymentBreakdown/index.js.map +1 -0
  126. package/build/pay/packages/connectkit/src/components/Common/Portal/index.js +30 -0
  127. package/build/pay/packages/connectkit/src/components/Common/Portal/index.js.map +1 -0
  128. package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js +39 -0
  129. package/build/pay/packages/connectkit/src/components/Common/PoweredByFooter/index.js.map +1 -0
  130. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/index.js +120 -0
  131. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/index.js.map +1 -0
  132. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js +169 -0
  133. package/build/pay/packages/connectkit/src/components/Common/ScrollArea/styles.js.map +1 -0
  134. package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js +96 -0
  135. package/build/pay/packages/connectkit/src/components/Common/SelectAnotherMethodButton/index.js.map +1 -0
  136. package/build/pay/packages/connectkit/src/components/Common/Spinner/index.js +64 -0
  137. package/build/pay/packages/connectkit/src/components/Common/Spinner/index.js.map +1 -0
  138. package/build/pay/packages/connectkit/src/components/Common/Spinner/styles.js +22 -0
  139. package/build/pay/packages/connectkit/src/components/Common/Spinner/styles.js.map +1 -0
  140. package/build/pay/packages/connectkit/src/components/Common/SwitchButton/index.js +43 -0
  141. package/build/pay/packages/connectkit/src/components/Common/SwitchButton/index.js.map +1 -0
  142. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/index.js +46 -0
  143. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/index.js.map +1 -0
  144. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/styles.js +152 -0
  145. package/build/pay/packages/connectkit/src/components/Common/ThemedButton/styles.js.map +1 -0
  146. package/build/pay/packages/connectkit/src/components/Common/TokenChainLogo/index.js +62 -0
  147. package/build/pay/packages/connectkit/src/components/Common/TokenChainLogo/index.js.map +1 -0
  148. package/build/pay/packages/connectkit/src/components/Common/Tooltip/index.js +129 -0
  149. package/build/pay/packages/connectkit/src/components/Common/Tooltip/index.js.map +1 -0
  150. package/build/pay/packages/connectkit/src/components/Common/Tooltip/styles.js +81 -0
  151. package/build/pay/packages/connectkit/src/components/Common/Tooltip/styles.js.map +1 -0
  152. package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js +31 -0
  153. package/build/pay/packages/connectkit/src/components/Common/WalletChainLogo/index.js.map +1 -0
  154. package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js +196 -0
  155. package/build/pay/packages/connectkit/src/components/DaimoPayButton/index.js.map +1 -0
  156. package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js +50 -0
  157. package/build/pay/packages/connectkit/src/components/DaimoPayButton/styles.js.map +1 -0
  158. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js +70 -0
  159. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectUsing.js.map +1 -0
  160. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js +339 -0
  161. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/index.js.map +1 -0
  162. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js +131 -0
  163. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithInjector/styles.js.map +1 -0
  164. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js +86 -0
  165. package/build/pay/packages/connectkit/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -0
  166. package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js +605 -0
  167. package/build/pay/packages/connectkit/src/components/DaimoPayModal/index.js.map +1 -0
  168. package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js +25 -0
  169. package/build/pay/packages/connectkit/src/components/DaimoPayThemeProvider/DaimoPayThemeProvider.js.map +1 -0
  170. package/build/pay/packages/connectkit/src/components/Pages/About/graphics.js +853 -0
  171. package/build/pay/packages/connectkit/src/components/Pages/About/graphics.js.map +1 -0
  172. package/build/pay/packages/connectkit/src/components/Pages/About/index.js +222 -0
  173. package/build/pay/packages/connectkit/src/components/Pages/About/index.js.map +1 -0
  174. package/build/pay/packages/connectkit/src/components/Pages/About/styles.js +140 -0
  175. package/build/pay/packages/connectkit/src/components/Pages/About/styles.js.map +1 -0
  176. package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js +126 -0
  177. package/build/pay/packages/connectkit/src/components/Pages/Confirmation/index.js.map +1 -0
  178. package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js +26 -0
  179. package/build/pay/packages/connectkit/src/components/Pages/Connectors/index.js.map +1 -0
  180. package/build/pay/packages/connectkit/src/components/Pages/Error/index.js +57 -0
  181. package/build/pay/packages/connectkit/src/components/Pages/Error/index.js.map +1 -0
  182. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js +108 -0
  183. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/index.js.map +1 -0
  184. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/styles.js +64 -0
  185. package/build/pay/packages/connectkit/src/components/Pages/MobileConnectors/styles.js.map +1 -0
  186. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/index.js +34 -0
  187. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/index.js.map +1 -0
  188. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/styles.js +229 -0
  189. package/build/pay/packages/connectkit/src/components/Pages/Onboarding/styles.js.map +1 -0
  190. package/build/pay/packages/connectkit/src/components/Pages/PayWithToken/index.js +157 -0
  191. package/build/pay/packages/connectkit/src/components/Pages/PayWithToken/index.js.map +1 -0
  192. package/build/pay/packages/connectkit/src/components/Pages/SelectAmount/index.js +24 -0
  193. package/build/pay/packages/connectkit/src/components/Pages/SelectAmount/index.js.map +1 -0
  194. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js +79 -0
  195. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressAmount/index.js.map +1 -0
  196. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js +80 -0
  197. package/build/pay/packages/connectkit/src/components/Pages/SelectDepositAddressChain/index.js.map +1 -0
  198. package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js +62 -0
  199. package/build/pay/packages/connectkit/src/components/Pages/SelectExchange/index.js.map +1 -0
  200. package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js +80 -0
  201. package/build/pay/packages/connectkit/src/components/Pages/SelectExternalAmount/index.js.map +1 -0
  202. package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js +315 -0
  203. package/build/pay/packages/connectkit/src/components/Pages/SelectMethod/index.js.map +1 -0
  204. package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js +99 -0
  205. package/build/pay/packages/connectkit/src/components/Pages/SelectToken/index.js.map +1 -0
  206. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js +71 -0
  207. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletAmount/index.js.map +1 -0
  208. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletChain/index.js +55 -0
  209. package/build/pay/packages/connectkit/src/components/Pages/SelectWalletChain/index.js.map +1 -0
  210. package/build/pay/packages/connectkit/src/components/Pages/SelectZKP/index.js +41 -0
  211. package/build/pay/packages/connectkit/src/components/Pages/SelectZKP/index.js.map +1 -0
  212. package/build/pay/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js +94 -0
  213. package/build/pay/packages/connectkit/src/components/Pages/Solana/ConnectorSolana/index.js.map +1 -0
  214. package/build/pay/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js +92 -0
  215. package/build/pay/packages/connectkit/src/components/Pages/Solana/PayWithSolanaToken/index.js.map +1 -0
  216. package/build/pay/packages/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js +24 -0
  217. package/build/pay/packages/connectkit/src/components/Pages/Solana/SelectSolanaAmount/index.js.map +1 -0
  218. package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js +45 -0
  219. package/build/pay/packages/connectkit/src/components/Pages/SwitchNetworks/index.js.map +1 -0
  220. package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js +586 -0
  221. package/build/pay/packages/connectkit/src/components/Pages/WaitingDepositAddress/index.js.map +1 -0
  222. package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js +174 -0
  223. package/build/pay/packages/connectkit/src/components/Pages/WaitingExternal/index.js.map +1 -0
  224. package/build/pay/packages/connectkit/src/components/Pages/WaitingWallet/index.js +49 -0
  225. package/build/pay/packages/connectkit/src/components/Pages/WaitingWallet/index.js.map +1 -0
  226. package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js +56 -0
  227. package/build/pay/packages/connectkit/src/components/Pages/Warning/index.js.map +1 -0
  228. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/index.js +104 -0
  229. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/index.js.map +1 -0
  230. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/styles.js +117 -0
  231. package/build/pay/packages/connectkit/src/components/Spinners/CircleSpinner/styles.js.map +1 -0
  232. package/build/pay/packages/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js +29 -0
  233. package/build/pay/packages/connectkit/src/components/Spinners/ExternalPaymentSpinner/index.js.map +1 -0
  234. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/index.js +68 -0
  235. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/index.js.map +1 -0
  236. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.js +66 -0
  237. package/build/pay/packages/connectkit/src/components/Spinners/SquircleSpinner/styles.js.map +1 -0
  238. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/index.js +24 -0
  239. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/index.js.map +1 -0
  240. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js +40 -0
  241. package/build/pay/packages/connectkit/src/components/Spinners/TokenLogoSpinner/styles.js.map +1 -0
  242. package/build/pay/packages/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js +37 -0
  243. package/build/pay/packages/connectkit/src/components/Spinners/WalletPaymentSpinner/index.js.map +1 -0
  244. package/build/pay/packages/connectkit/src/components/Spinners/styles.js +32 -0
  245. package/build/pay/packages/connectkit/src/components/Spinners/styles.js.map +1 -0
  246. package/build/pay/packages/connectkit/src/constants/defaultTheme.js +6 -0
  247. package/build/pay/packages/connectkit/src/constants/defaultTheme.js.map +1 -0
  248. package/build/pay/packages/connectkit/src/constants/limits.js +4 -0
  249. package/build/pay/packages/connectkit/src/constants/limits.js.map +1 -0
  250. package/build/pay/packages/connectkit/src/constants/paymentOptions.js +62 -0
  251. package/build/pay/packages/connectkit/src/constants/paymentOptions.js.map +1 -0
  252. package/build/pay/packages/connectkit/src/constants/routes.js +31 -0
  253. package/build/pay/packages/connectkit/src/constants/routes.js.map +1 -0
  254. package/build/pay/packages/connectkit/src/constants/wallets.js +7 -0
  255. package/build/pay/packages/connectkit/src/constants/wallets.js.map +1 -0
  256. package/build/pay/packages/connectkit/src/defaultConfig.js +64 -0
  257. package/build/pay/packages/connectkit/src/defaultConfig.js.map +1 -0
  258. package/build/pay/packages/connectkit/src/defaultConnectors.js +37 -0
  259. package/build/pay/packages/connectkit/src/defaultConnectors.js.map +1 -0
  260. package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js +10 -0
  261. package/build/pay/packages/connectkit/src/hooks/useChainIsSupported.js.map +1 -0
  262. package/build/pay/packages/connectkit/src/hooks/useChains.js +10 -0
  263. package/build/pay/packages/connectkit/src/hooks/useChains.js.map +1 -0
  264. package/build/pay/packages/connectkit/src/hooks/useConnect.js +61 -0
  265. package/build/pay/packages/connectkit/src/hooks/useConnect.js.map +1 -0
  266. package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js +21 -0
  267. package/build/pay/packages/connectkit/src/hooks/useConnectCallback.js.map +1 -0
  268. package/build/pay/packages/connectkit/src/hooks/useConnectors.js +20 -0
  269. package/build/pay/packages/connectkit/src/hooks/useConnectors.js.map +1 -0
  270. package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js +131 -0
  271. package/build/pay/packages/connectkit/src/hooks/useDaimoPay.js.map +1 -0
  272. package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js +12 -0
  273. package/build/pay/packages/connectkit/src/hooks/useDaimoPayStatus.js.map +1 -0
  274. package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js +15 -0
  275. package/build/pay/packages/connectkit/src/hooks/useDaimoPayUI.js.map +1 -0
  276. package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js +35 -0
  277. package/build/pay/packages/connectkit/src/hooks/useDepositAddressOptions.js.map +1 -0
  278. package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js +16 -0
  279. package/build/pay/packages/connectkit/src/hooks/useEnsFallbackConfig.js.map +1 -0
  280. package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js +79 -0
  281. package/build/pay/packages/connectkit/src/hooks/useExternalPaymentOptions.js.map +1 -0
  282. package/build/pay/packages/connectkit/src/hooks/useFitText.js +133 -0
  283. package/build/pay/packages/connectkit/src/hooks/useFitText.js.map +1 -0
  284. package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js +53 -0
  285. package/build/pay/packages/connectkit/src/hooks/useFocusTrap.js.map +1 -0
  286. package/build/pay/packages/connectkit/src/hooks/useIsMobile.js +11 -0
  287. package/build/pay/packages/connectkit/src/hooks/useIsMobile.js.map +1 -0
  288. package/build/pay/packages/connectkit/src/hooks/useIsMounted.js +10 -0
  289. package/build/pay/packages/connectkit/src/hooks/useIsMounted.js.map +1 -0
  290. package/build/pay/packages/connectkit/src/hooks/useLastConnector.js +24 -0
  291. package/build/pay/packages/connectkit/src/hooks/useLastConnector.js.map +1 -0
  292. package/build/pay/packages/connectkit/src/hooks/useLocales.js +60 -0
  293. package/build/pay/packages/connectkit/src/hooks/useLocales.js.map +1 -0
  294. package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js +47 -0
  295. package/build/pay/packages/connectkit/src/hooks/useLockBodyScroll.js.map +1 -0
  296. package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js +24 -0
  297. package/build/pay/packages/connectkit/src/hooks/useOrderUsdLimits.js.map +1 -0
  298. package/build/pay/packages/connectkit/src/hooks/usePayContext.js +11 -0
  299. package/build/pay/packages/connectkit/src/hooks/usePayContext.js.map +1 -0
  300. package/build/pay/packages/connectkit/src/hooks/usePaymentState.js +410 -0
  301. package/build/pay/packages/connectkit/src/hooks/usePaymentState.js.map +1 -0
  302. package/build/pay/packages/connectkit/src/hooks/usePrevious.js +13 -0
  303. package/build/pay/packages/connectkit/src/hooks/usePrevious.js.map +1 -0
  304. package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js +38 -0
  305. package/build/pay/packages/connectkit/src/hooks/useSolanaPaymentOptions.js.map +1 -0
  306. package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js +152 -0
  307. package/build/pay/packages/connectkit/src/hooks/useTokenOptions.js.map +1 -0
  308. package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js +32 -0
  309. package/build/pay/packages/connectkit/src/hooks/useUntronAvailability.js.map +1 -0
  310. package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js +97 -0
  311. package/build/pay/packages/connectkit/src/hooks/useWalletPaymentOptions.js.map +1 -0
  312. package/build/pay/packages/connectkit/src/hooks/useWindowSize.js +23 -0
  313. package/build/pay/packages/connectkit/src/hooks/useWindowSize.js.map +1 -0
  314. package/build/pay/packages/connectkit/src/index.js +14 -0
  315. package/build/pay/packages/connectkit/src/index.js.map +1 -0
  316. package/build/pay/packages/connectkit/src/localizations/index.js +48 -0
  317. package/build/pay/packages/connectkit/src/localizations/index.js.map +1 -0
  318. package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js +95 -0
  319. package/build/pay/packages/connectkit/src/localizations/locales/ar-AE.js.map +1 -0
  320. package/build/pay/packages/connectkit/src/localizations/locales/ca-AD.js +93 -0
  321. package/build/pay/packages/connectkit/src/localizations/locales/ca-AD.js.map +1 -0
  322. package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js +101 -0
  323. package/build/pay/packages/connectkit/src/localizations/locales/ee-EE.js.map +1 -0
  324. package/build/pay/packages/connectkit/src/localizations/locales/en-US.js +145 -0
  325. package/build/pay/packages/connectkit/src/localizations/locales/en-US.js.map +1 -0
  326. package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js +138 -0
  327. package/build/pay/packages/connectkit/src/localizations/locales/es-ES.js.map +1 -0
  328. package/build/pay/packages/connectkit/src/localizations/locales/fa-IR.js +93 -0
  329. package/build/pay/packages/connectkit/src/localizations/locales/fa-IR.js.map +1 -0
  330. package/build/pay/packages/connectkit/src/localizations/locales/fr-FR.js +93 -0
  331. package/build/pay/packages/connectkit/src/localizations/locales/fr-FR.js.map +1 -0
  332. package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js +93 -0
  333. package/build/pay/packages/connectkit/src/localizations/locales/ja-JP.js.map +1 -0
  334. package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js +145 -0
  335. package/build/pay/packages/connectkit/src/localizations/locales/pt-BR.js.map +1 -0
  336. package/build/pay/packages/connectkit/src/localizations/locales/ru-RU.js +97 -0
  337. package/build/pay/packages/connectkit/src/localizations/locales/ru-RU.js.map +1 -0
  338. package/build/pay/packages/connectkit/src/localizations/locales/tr-TR.js +101 -0
  339. package/build/pay/packages/connectkit/src/localizations/locales/tr-TR.js.map +1 -0
  340. package/build/pay/packages/connectkit/src/localizations/locales/vi-VN.js +101 -0
  341. package/build/pay/packages/connectkit/src/localizations/locales/vi-VN.js.map +1 -0
  342. package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js +93 -0
  343. package/build/pay/packages/connectkit/src/localizations/locales/zh-CN.js.map +1 -0
  344. package/build/pay/packages/connectkit/src/payment/paymentEffects.js +268 -0
  345. package/build/pay/packages/connectkit/src/payment/paymentEffects.js.map +1 -0
  346. package/build/pay/packages/connectkit/src/payment/paymentFsm.js +234 -0
  347. package/build/pay/packages/connectkit/src/payment/paymentFsm.js.map +1 -0
  348. package/build/pay/packages/connectkit/src/payment/paymentStore.js +18 -0
  349. package/build/pay/packages/connectkit/src/payment/paymentStore.js.map +1 -0
  350. package/build/pay/packages/connectkit/src/payment/paymentUtils.js +10 -0
  351. package/build/pay/packages/connectkit/src/payment/paymentUtils.js.map +1 -0
  352. package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js +292 -0
  353. package/build/pay/packages/connectkit/src/provider/DaimoPayProvider.js.map +1 -0
  354. package/build/pay/packages/connectkit/src/provider/PayContext.js +6 -0
  355. package/build/pay/packages/connectkit/src/provider/PayContext.js.map +1 -0
  356. package/build/pay/packages/connectkit/src/provider/PaymentProvider.js +29 -0
  357. package/build/pay/packages/connectkit/src/provider/PaymentProvider.js.map +1 -0
  358. package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js +14 -0
  359. package/build/pay/packages/connectkit/src/provider/SolanaContextProvider.js.map +1 -0
  360. package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js +36 -0
  361. package/build/pay/packages/connectkit/src/provider/Web3ContextProvider.js.map +1 -0
  362. package/build/pay/packages/connectkit/src/stateStore.js +36 -0
  363. package/build/pay/packages/connectkit/src/stateStore.js.map +1 -0
  364. package/build/pay/packages/connectkit/src/styles/defaultTheme.js +80 -0
  365. package/build/pay/packages/connectkit/src/styles/defaultTheme.js.map +1 -0
  366. package/build/pay/packages/connectkit/src/styles/index.js +313 -0
  367. package/build/pay/packages/connectkit/src/styles/index.js.map +1 -0
  368. package/build/pay/packages/connectkit/src/styles/styled/index.js +6 -0
  369. package/build/pay/packages/connectkit/src/styles/styled/index.js.map +1 -0
  370. package/build/pay/packages/connectkit/src/styles/themes/base.js +141 -0
  371. package/build/pay/packages/connectkit/src/styles/themes/base.js.map +1 -0
  372. package/build/pay/packages/connectkit/src/styles/themes/index.js +13 -0
  373. package/build/pay/packages/connectkit/src/styles/themes/index.js.map +1 -0
  374. package/build/pay/packages/connectkit/src/styles/themes/midnight.js +76 -0
  375. package/build/pay/packages/connectkit/src/styles/themes/midnight.js.map +1 -0
  376. package/build/pay/packages/connectkit/src/styles/themes/minimal.js +96 -0
  377. package/build/pay/packages/connectkit/src/styles/themes/minimal.js.map +1 -0
  378. package/build/pay/packages/connectkit/src/styles/themes/nouns.js +81 -0
  379. package/build/pay/packages/connectkit/src/styles/themes/nouns.js.map +1 -0
  380. package/build/pay/packages/connectkit/src/styles/themes/retro.js +106 -0
  381. package/build/pay/packages/connectkit/src/styles/themes/retro.js.map +1 -0
  382. package/build/pay/packages/connectkit/src/styles/themes/rounded.js +106 -0
  383. package/build/pay/packages/connectkit/src/styles/themes/rounded.js.map +1 -0
  384. package/build/pay/packages/connectkit/src/styles/themes/soft.js +71 -0
  385. package/build/pay/packages/connectkit/src/styles/themes/soft.js.map +1 -0
  386. package/build/pay/packages/connectkit/src/styles/themes/web95.js +132 -0
  387. package/build/pay/packages/connectkit/src/styles/themes/web95.js.map +1 -0
  388. package/build/pay/packages/connectkit/src/utils/exports.js +6 -0
  389. package/build/pay/packages/connectkit/src/utils/exports.js.map +1 -0
  390. package/build/pay/packages/connectkit/src/utils/format.js +45 -0
  391. package/build/pay/packages/connectkit/src/utils/format.js.map +1 -0
  392. package/build/pay/packages/connectkit/src/utils/index.js +42 -0
  393. package/build/pay/packages/connectkit/src/utils/index.js.map +1 -0
  394. package/build/pay/packages/connectkit/src/utils/p3.js +15 -0
  395. package/build/pay/packages/connectkit/src/utils/p3.js.map +1 -0
  396. package/build/pay/packages/connectkit/src/utils/platform.js +11 -0
  397. package/build/pay/packages/connectkit/src/utils/platform.js.map +1 -0
  398. package/build/pay/packages/connectkit/src/utils/polling.js +35 -0
  399. package/build/pay/packages/connectkit/src/utils/polling.js.map +1 -0
  400. package/build/pay/packages/connectkit/src/utils/supportUrl.js +16 -0
  401. package/build/pay/packages/connectkit/src/utils/supportUrl.js.map +1 -0
  402. package/build/pay/packages/connectkit/src/utils/trpc.js +19 -0
  403. package/build/pay/packages/connectkit/src/utils/trpc.js.map +1 -0
  404. package/build/pay/packages/connectkit/src/utils/validateInput.js +16 -0
  405. package/build/pay/packages/connectkit/src/utils/validateInput.js.map +1 -0
  406. package/build/pay/packages/connectkit/src/wallets/index.js +21 -0
  407. package/build/pay/packages/connectkit/src/wallets/index.js.map +1 -0
  408. package/build/pay/packages/connectkit/src/wallets/useWallets.js +278 -0
  409. package/build/pay/packages/connectkit/src/wallets/useWallets.js.map +1 -0
  410. package/build/pay/packages/connectkit/src/wallets/walletConfigs.js +281 -0
  411. package/build/pay/packages/connectkit/src/wallets/walletConfigs.js.map +1 -0
  412. package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js +165 -0
  413. package/build/pay/packages/connectkit/src/world-mini-app/WorldPayButton.js.map +1 -0
  414. package/build/pay/packages/connectkit/src/world-mini-app/promptWorldPayment.js +59 -0
  415. package/build/pay/packages/connectkit/src/world-mini-app/promptWorldPayment.js.map +1 -0
  416. package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js +76 -0
  417. package/build/pay/packages/connectkit/src/world-mini-app/useWithdrawToWorld.js.map +1 -0
  418. package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js +74 -0
  419. package/build/pay/packages/connectkit/src/world-mini-app/useWorldSignIn.js.map +1 -0
  420. package/build/pay/packages/connectkit/src/world.js +4 -0
  421. package/build/pay/packages/connectkit/src/world.js.map +1 -0
  422. package/build/src/components/Common/PoweredByFooter/index.js +10 -37
  423. package/build/src/components/Common/PoweredByFooter/index.js.map +1 -1
  424. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js +3 -0
  425. package/build/src/components/DaimoPayModal/ConnectWithQRCode.js.map +1 -1
  426. package/build/src/components/Pages/Confirmation/index.js +8 -10
  427. package/build/src/components/Pages/Confirmation/index.js.map +1 -1
  428. package/build/src/payment/paymentEffects.js +9 -7
  429. package/build/src/payment/paymentEffects.js.map +1 -1
  430. package/build/src/provider/DaimoPayProvider.js +9 -1
  431. package/build/src/provider/DaimoPayProvider.js.map +1 -1
  432. package/build/src/provider/PaymentProvider.js +9 -3
  433. package/build/src/provider/PaymentProvider.js.map +1 -1
  434. package/build/src/utils/polling.js +14 -5
  435. package/build/src/utils/polling.js.map +1 -1
  436. package/build/src/utils/wallets.js +9 -0
  437. package/build/src/utils/wallets.js.map +1 -0
  438. package/build/src/wallets/useWallets.js +1 -1
  439. package/build/src/wallets/useWallets.js.map +1 -1
  440. package/build/src/wallets/walletConfigs.js +8 -84
  441. package/build/src/wallets/walletConfigs.js.map +1 -1
  442. package/package.json +2 -2
@@ -0,0 +1,165 @@
1
+ import { jsx } from 'react/jsx-runtime';
2
+ import { getOrderSourceChainId, DaimoPayEventType, writeDaimoPayOrderID, getDaimoPayOrderView, getOrderDestChainId, assertNotNull } from '@daimo/pay-common';
3
+ import { useState, useEffect, useRef, useCallback } from 'react';
4
+ import ThemedButton from '../components/Common/ThemedButton/index.js';
5
+ import { DaimoPayButtonInner } from '../components/DaimoPayButton/index.js';
6
+ import { ROUTES } from '../constants/routes.js';
7
+ import { useDaimoPay } from '../hooks/useDaimoPay.js';
8
+ import { usePayContext } from '../hooks/usePayContext.js';
9
+ import { ResetContainer } from '../styles/index.js';
10
+ import { promptWorldcoinPayment } from './promptWorldPayment.js';
11
+ import { MiniKit } from '@worldcoin/minikit-js';
12
+ import useIsMobile from '../hooks/useIsMobile.js';
13
+ import { ThemeContainer } from '../components/Common/ThemedButton/styles.js';
14
+
15
+ function WorldPayButton(props) {
16
+ const { theme, mode, customTheme } = props;
17
+ const context = usePayContext();
18
+ return /* @__PURE__ */ jsx(WorldPayButtonCustom, { ...props, children: ({ show, isMiniKitReady }) => /* @__PURE__ */ jsx(
19
+ ResetContainer,
20
+ {
21
+ $useTheme: theme ?? context.theme,
22
+ $useMode: mode ?? context.mode,
23
+ $customTheme: customTheme ?? context.customTheme,
24
+ children: /* @__PURE__ */ jsx(
25
+ ThemeContainer,
26
+ {
27
+ onClick: props.disabled || !isMiniKitReady ? void 0 : show,
28
+ children: /* @__PURE__ */ jsx(ThemedButton, { children: /* @__PURE__ */ jsx(DaimoPayButtonInner, {}) })
29
+ }
30
+ )
31
+ }
32
+ ) });
33
+ }
34
+ function WorldPayButtonCustom(props) {
35
+ const pay = useDaimoPay();
36
+ const context = usePayContext();
37
+ const { paymentState, log } = context;
38
+ const [isMiniKitReady, setIsMiniKitReady] = useState(false);
39
+ const { isIOS } = useIsMobile();
40
+ const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;
41
+ useEffect(() => {
42
+ log("[WORLD] Installing MiniKit");
43
+ const result = MiniKit.install();
44
+ log("[WORLD] MiniKit install result", result);
45
+ log("[WORLD] MiniKit is installed", MiniKit.isInstalled());
46
+ setIsMiniKitReady(MiniKit.isInstalled());
47
+ }, []);
48
+ useEffect(() => {
49
+ if ("payId" in props) {
50
+ log("[WORLD] Using payId from props: ", props.payId);
51
+ paymentState.setPayId(props.payId);
52
+ } else {
53
+ log("[WORLD] Creating preview order");
54
+ paymentState.setPayParams(props);
55
+ }
56
+ }, [JSON.stringify(props || {})]);
57
+ useEffect(() => {
58
+ context.setShowContactSupport(!isIOS);
59
+ }, [isIOS]);
60
+ const hasAutoOpened = useRef(false);
61
+ useEffect(() => {
62
+ if (!props.defaultOpen || hasAutoOpened.current) return;
63
+ if (pay.order == null) return;
64
+ show();
65
+ hasAutoOpened.current = true;
66
+ }, [pay.order, props.defaultOpen, hasAutoOpened.current]);
67
+ const sentStart = useRef(false);
68
+ useEffect(() => {
69
+ if (sentStart.current) return;
70
+ if (pay.paymentState !== "payment_started") return;
71
+ const sourceChainId = getOrderSourceChainId(pay.order);
72
+ if (sourceChainId == null) return;
73
+ sentStart.current = true;
74
+ onPaymentStarted?.({
75
+ type: DaimoPayEventType.PaymentStarted,
76
+ paymentId: writeDaimoPayOrderID(pay.order.id),
77
+ chainId: sourceChainId,
78
+ txHash: pay.order.sourceInitiateTxHash,
79
+ payment: getDaimoPayOrderView(pay.order)
80
+ });
81
+ }, [pay.order, pay.paymentState]);
82
+ const sentComplete = useRef(false);
83
+ useEffect(() => {
84
+ if (sentComplete.current) return;
85
+ if (pay.paymentState !== "payment_completed" && pay.paymentState !== "payment_bounced")
86
+ return;
87
+ sentComplete.current = true;
88
+ const eventType = pay.paymentState === "payment_completed" ? DaimoPayEventType.PaymentCompleted : DaimoPayEventType.PaymentBounced;
89
+ const event = {
90
+ type: eventType,
91
+ paymentId: writeDaimoPayOrderID(pay.order.id),
92
+ chainId: getOrderDestChainId(pay.order),
93
+ txHash: assertNotNull(
94
+ pay.order.destFastFinishTxHash ?? pay.order.destClaimTxHash,
95
+ `[WORLD PAY BUTTON] dest tx hash null on order ${pay.order.id} when intent status is ${pay.order.intentStatus}`
96
+ ),
97
+ payment: getDaimoPayOrderView(pay.order)
98
+ };
99
+ if (pay.paymentState === "payment_completed") {
100
+ onPaymentCompleted?.(event);
101
+ } else if (pay.paymentState === "payment_bounced") {
102
+ onPaymentBounced?.(event);
103
+ }
104
+ }, [pay.order, pay.paymentState]);
105
+ const showSpinner = useCallback(() => {
106
+ log(`[WORLD] showing spinner ${pay.order?.id}`);
107
+ const modalOptions = {
108
+ closeOnSuccess: props.closeOnSuccess,
109
+ resetOnSuccess: props.resetOnSuccess
110
+ };
111
+ context.showPayment(modalOptions);
112
+ context.setRoute(ROUTES.CONFIRMATION);
113
+ }, [pay.order?.id, log, props.closeOnSuccess, props.resetOnSuccess]);
114
+ const show = useCallback(async () => {
115
+ log(`[WORLD] showing payment ${pay.order?.id}`);
116
+ if (!isMiniKitReady) {
117
+ console.error(
118
+ "[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature."
119
+ );
120
+ return;
121
+ }
122
+ if (pay.paymentState === "error") {
123
+ log("[WORLD] showing payment error page");
124
+ const modalOptions = {
125
+ closeOnSuccess: props.closeOnSuccess,
126
+ resetOnSuccess: props.resetOnSuccess
127
+ };
128
+ context.showPayment(modalOptions);
129
+ return;
130
+ }
131
+ if (["payment_started", "payment_completed", "payment_bounced"].includes(
132
+ pay.paymentState
133
+ )) {
134
+ showSpinner();
135
+ return;
136
+ }
137
+ log(`[WORLD] hydrating order ${pay.order?.id}`);
138
+ const { order } = await pay.hydrateOrder();
139
+ log(
140
+ `[WORLD] hydrated order ${pay.order?.id}. Prompting payment with MiniKit`
141
+ );
142
+ const payRes = await promptWorldcoinPayment(order, context.trpc);
143
+ if (payRes == null || payRes.finalPayload.status == "error") {
144
+ log("[WORLD] Failed to prompt Worldcoin payment: ", payRes);
145
+ return;
146
+ }
147
+ log(`[WORLD] triggering payment search on ${pay.order?.id}`);
148
+ pay.paySource();
149
+ showSpinner();
150
+ }, [
151
+ pay,
152
+ showSpinner,
153
+ context.trpc,
154
+ isMiniKitReady,
155
+ log,
156
+ props.closeOnSuccess,
157
+ props.resetOnSuccess
158
+ ]);
159
+ return props.children({ show, isMiniKitReady });
160
+ }
161
+ WorldPayButtonCustom.displayName = "WorldPayButton.Custom";
162
+ WorldPayButton.Custom = WorldPayButtonCustom;
163
+
164
+ export { WorldPayButton };
165
+ //# sourceMappingURL=WorldPayButton.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WorldPayButton.js","sources":["../../../../../../src/world-mini-app/WorldPayButton.tsx"],"sourcesContent":["import {\n assertNotNull,\n DaimoPayEventType,\n DaimoPayUserMetadata,\n getDaimoPayOrderView,\n getOrderDestChainId,\n getOrderSourceChainId,\n PaymentBouncedEvent,\n PaymentCompletedEvent,\n PaymentStartedEvent,\n writeDaimoPayOrderID,\n} from \"@daimo/pay-common\";\nimport { ReactElement, useCallback, useEffect, useRef, useState } from \"react\";\nimport { Address, Hex } from \"viem\";\nimport ThemedButton, {\n ThemeContainer,\n} from \"../components/Common/ThemedButton\";\nimport { DaimoPayButtonInner } from \"../components/DaimoPayButton\";\nimport { ROUTES } from \"../constants/routes\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { ResetContainer } from \"../styles\";\nimport { CustomTheme, Mode, Theme } from \"../types\";\nimport { promptWorldcoinPayment } from \"./promptWorldPayment\";\n\nimport { MiniKit } from \"@worldcoin/minikit-js\";\nimport useIsMobile from \"../hooks/useIsMobile\";\n\nexport type WorldPayButtonPaymentProps =\n | {\n /**\n * Your public app ID. Specify either (payId) or (appId + parameters).\n */\n appId: string;\n /**\n * Destination chain ID.\n */\n toChain: number;\n /**\n * The destination token to send, completing payment. Must be an ERC-20\n * token or the zero address, indicating the native token / ETH.\n */\n toToken: Address;\n /**\n * The amount of destination token to send (transfer or approve).\n */\n toUnits: string;\n /**\n * The destination address to transfer to, or contract to call.\n */\n toAddress: Address;\n /**\n * Optional calldata to call an arbitrary function on `toAddress`.\n */\n toCallData?: Hex;\n /**\n * The intent verb, such as \"Pay\", \"Deposit\", or \"Purchase\".\n */\n intent?: string;\n /**\n * External ID. E.g. a correlation ID.\n */\n externalId?: string;\n /**\n * Developer metadata. E.g. correlation ID.\n * */\n metadata?: DaimoPayUserMetadata;\n /**\n * The address to refund to if the payment bounces.\n */\n refundAddress?: Address;\n }\n | {\n /** The payment ID, generated via the Daimo Pay API. Replaces params above. */\n payId: string;\n };\n\ntype WorldPayButtonCommonProps = WorldPayButtonPaymentProps & {\n /** Called when user sends payment and transaction is seen on chain */\n onPaymentStarted?: (event: PaymentStartedEvent) => void;\n /** Called when destination transfer or call completes successfully */\n onPaymentCompleted?: (event: PaymentCompletedEvent) => void;\n /** Called when destination call reverts and funds are refunded */\n onPaymentBounced?: (event: PaymentBouncedEvent) => void;\n /** Open the modal by default. */\n defaultOpen?: boolean;\n /** Automatically close the modal after a successful payment. */\n closeOnSuccess?: boolean;\n /** Reset the payment after a successful payment. */\n resetOnSuccess?: boolean;\n};\n\nexport type WorldPayButtonProps = WorldPayButtonCommonProps & {\n /** Light mode, dark mode, or auto. */\n mode?: Mode;\n /** Named theme. See docs for options. */\n theme?: Theme;\n /** Custom theme. See docs for options. */\n customTheme?: CustomTheme;\n /** Disable interaction. */\n disabled?: boolean;\n};\n\nexport type WorldPayButtonCustomProps = WorldPayButtonCommonProps & {\n children: (renderProps: {\n show: () => void;\n isMiniKitReady: boolean;\n }) => ReactElement;\n};\n\nexport function WorldPayButton(props: WorldPayButtonProps) {\n const { theme, mode, customTheme } = props;\n const context = usePayContext();\n\n return (\n <WorldPayButtonCustom {...props}>\n {({ show, isMiniKitReady }) => (\n <ResetContainer\n $useTheme={theme ?? context.theme}\n $useMode={mode ?? context.mode}\n $customTheme={customTheme ?? context.customTheme}\n >\n <ThemeContainer\n onClick={props.disabled || !isMiniKitReady ? undefined : show}\n >\n <ThemedButton>\n <DaimoPayButtonInner />\n </ThemedButton>\n </ThemeContainer>\n </ResetContainer>\n )}\n </WorldPayButtonCustom>\n );\n}\n\nfunction WorldPayButtonCustom(props: WorldPayButtonCustomProps) {\n const pay = useDaimoPay();\n const context = usePayContext();\n const { paymentState, log } = context;\n const [isMiniKitReady, setIsMiniKitReady] = useState(false);\n const { isIOS } = useIsMobile();\n\n // Payment events: call these three event handlers.\n const { onPaymentStarted, onPaymentCompleted, onPaymentBounced } = props;\n\n // Install Minikit if not already installed\n useEffect(() => {\n log(\"[WORLD] Installing MiniKit\");\n const result = MiniKit.install();\n log(\"[WORLD] MiniKit install result\", result);\n log(\"[WORLD] MiniKit is installed\", MiniKit.isInstalled());\n setIsMiniKitReady(MiniKit.isInstalled());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n // Set the payParams\n useEffect(() => {\n if (\"payId\" in props) {\n log(\"[WORLD] Using payId from props: \", props.payId);\n paymentState.setPayId(props.payId);\n } else {\n log(\"[WORLD] Creating preview order\");\n paymentState.setPayParams(props);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [JSON.stringify(props || {})]);\n\n // Set the showContactSupport flag\n useEffect(() => {\n // Links are broken on iOS in World App, so hide the contact support button\n context.setShowContactSupport(!isIOS);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [isIOS]);\n\n // Open the modal by default if the defaultOpen prop is true\n const hasAutoOpened = useRef(false);\n useEffect(() => {\n if (!props.defaultOpen || hasAutoOpened.current) return;\n if (pay.order == null) return;\n show();\n hasAutoOpened.current = true;\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, props.defaultOpen, hasAutoOpened.current]);\n\n // Emit onPaymentStart handler when payment state changes to payment_started\n const sentStart = useRef(false);\n useEffect(() => {\n if (sentStart.current) return;\n if (pay.paymentState !== \"payment_started\") return;\n\n // TODO: Populate source payment details immediately when the user pays.\n // Use this hack because source chain id is not immediately populated when\n // payment_started\n const sourceChainId = getOrderSourceChainId(pay.order);\n if (sourceChainId == null) return;\n\n sentStart.current = true;\n onPaymentStarted?.({\n type: DaimoPayEventType.PaymentStarted,\n paymentId: writeDaimoPayOrderID(pay.order.id),\n chainId: sourceChainId,\n txHash: pay.order.sourceInitiateTxHash,\n payment: getDaimoPayOrderView(pay.order),\n });\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, pay.paymentState]);\n\n // Emit onPaymentComplete or onPaymentBounced handler when payment state\n // changes to payment_completed or payment_bounced\n const sentComplete = useRef(false);\n useEffect(() => {\n if (sentComplete.current) return;\n if (\n pay.paymentState !== \"payment_completed\" &&\n pay.paymentState !== \"payment_bounced\"\n )\n return;\n\n sentComplete.current = true;\n const eventType =\n pay.paymentState === \"payment_completed\"\n ? DaimoPayEventType.PaymentCompleted\n : DaimoPayEventType.PaymentBounced;\n const event = {\n type: eventType,\n paymentId: writeDaimoPayOrderID(pay.order.id),\n chainId: getOrderDestChainId(pay.order),\n txHash: assertNotNull(\n pay.order.destFastFinishTxHash ?? pay.order.destClaimTxHash,\n `[WORLD PAY BUTTON] dest tx hash null on order ${pay.order.id} when intent status is ${pay.order.intentStatus}`,\n ),\n payment: getDaimoPayOrderView(pay.order),\n };\n\n if (pay.paymentState === \"payment_completed\") {\n onPaymentCompleted?.(event as PaymentCompletedEvent);\n } else if (pay.paymentState === \"payment_bounced\") {\n onPaymentBounced?.(event as PaymentBouncedEvent);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order, pay.paymentState]);\n\n // Navigate to the confirmation page in the modal to show the spinner\n const showSpinner = useCallback(() => {\n log(`[WORLD] showing spinner ${pay.order?.id}`);\n const modalOptions = {\n closeOnSuccess: props.closeOnSuccess,\n resetOnSuccess: props.resetOnSuccess,\n };\n context.showPayment(modalOptions);\n context.setRoute(ROUTES.CONFIRMATION);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order?.id, log, props.closeOnSuccess, props.resetOnSuccess]);\n\n // Show the Worldcoin payment drawer and pop open the Daimo Pay modal\n const show = useCallback(async () => {\n log(`[WORLD] showing payment ${pay.order?.id}`);\n if (!isMiniKitReady) {\n console.error(\n \"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature.\",\n );\n return;\n }\n if (pay.paymentState === \"error\") {\n log(\"[WORLD] showing payment error page\");\n const modalOptions = {\n closeOnSuccess: props.closeOnSuccess,\n resetOnSuccess: props.resetOnSuccess,\n };\n context.showPayment(modalOptions);\n return;\n }\n\n if (\n [\"payment_started\", \"payment_completed\", \"payment_bounced\"].includes(\n pay.paymentState,\n )\n ) {\n showSpinner();\n return;\n }\n\n log(`[WORLD] hydrating order ${pay.order?.id}`);\n const { order } = await pay.hydrateOrder();\n log(\n `[WORLD] hydrated order ${pay.order?.id}. Prompting payment with MiniKit`,\n );\n const payRes = await promptWorldcoinPayment(order, context.trpc);\n if (payRes == null || payRes.finalPayload.status == \"error\") {\n log(\"[WORLD] Failed to prompt Worldcoin payment: \", payRes);\n return;\n }\n\n log(`[WORLD] triggering payment search on ${pay.order?.id}`);\n pay.paySource();\n\n // Optimistically assume the source payment is correct and show the\n // confirmation spinner\n showSpinner();\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [\n pay,\n showSpinner,\n context.trpc,\n isMiniKitReady,\n log,\n props.closeOnSuccess,\n props.resetOnSuccess,\n ]);\n\n return props.children({ show, isMiniKitReady });\n}\n\nWorldPayButtonCustom.displayName = \"WorldPayButton.Custom\";\n\nWorldPayButton.Custom = WorldPayButtonCustom;\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,59 @@
1
+ import { worldchainWLD, worldchainUSDC, assert } from '@daimo/pay-common';
2
+ import { getAddress } from 'viem';
3
+ import { MiniKit, Tokens } from '@worldcoin/minikit-js';
4
+
5
+ async function promptWorldcoinPayment(order, trpc) {
6
+ try {
7
+ if (!MiniKit.isInstalled()) {
8
+ console.error(
9
+ "[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature."
10
+ );
11
+ return null;
12
+ }
13
+ const paymentOptions = await trpc.getTokenPaymentOptions.query({
14
+ orderId: order.id,
15
+ tokens: [
16
+ {
17
+ chainId: worldchainWLD.chainId,
18
+ token: worldchainWLD.token
19
+ },
20
+ {
21
+ chainId: worldchainUSDC.chainId,
22
+ token: worldchainUSDC.token
23
+ }
24
+ ]
25
+ });
26
+ const wld = paymentOptions.find(
27
+ (opt) => getAddress(opt.token.token) === getAddress(worldchainWLD.token)
28
+ );
29
+ const usdc = paymentOptions.find(
30
+ (opt) => getAddress(opt.token.token) === getAddress(worldchainUSDC.token)
31
+ );
32
+ assert(wld != null, "WLD DP token not found");
33
+ assert(usdc != null, "USDC DP token not found");
34
+ const paymentId = crypto.randomUUID().replace(/-/g, "");
35
+ const payload = {
36
+ reference: paymentId,
37
+ to: order.intentAddr,
38
+ tokens: [
39
+ {
40
+ symbol: Tokens.WLD,
41
+ token_amount: wld.amount
42
+ },
43
+ {
44
+ symbol: Tokens.USDC,
45
+ token_amount: usdc.amount
46
+ }
47
+ ],
48
+ description: order.metadata.intent
49
+ };
50
+ const { finalPayload } = await MiniKit.commandsAsync.pay(payload);
51
+ return { paymentId, finalPayload };
52
+ } catch (error) {
53
+ console.error("[WORLD] Error sending payment", error);
54
+ return null;
55
+ }
56
+ }
57
+
58
+ export { promptWorldcoinPayment };
59
+ //# sourceMappingURL=promptWorldPayment.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptWorldPayment.js","sources":["../../../../../../src/world-mini-app/promptWorldPayment.ts"],"sourcesContent":["import {\n assert,\n DaimoPayHydratedOrderWithOrg,\n DaimoPayTokenAmount,\n worldchainUSDC,\n worldchainWLD,\n} from \"@daimo/pay-common\";\nimport { getAddress } from \"viem\";\n\nimport {\n MiniAppPaymentPayload,\n MiniKit,\n PayCommandInput,\n Tokens,\n} from \"@worldcoin/minikit-js\";\n\n/**\n * Open Worldcoin's payment drawer and prompt the user to pay a Daimo Pay order.\n */\nexport async function promptWorldcoinPayment(\n order: DaimoPayHydratedOrderWithOrg,\n trpc: any,\n): Promise<{ paymentId: string; finalPayload: MiniAppPaymentPayload } | null> {\n try {\n if (!MiniKit.isInstalled()) {\n console.error(\n \"[WORLD] MiniKit is not installed. Please install @worldcoin/minikit-js to use this feature.\",\n );\n return null;\n }\n\n const paymentOptions = (await trpc.getTokenPaymentOptions.query({\n orderId: order.id,\n tokens: [\n {\n chainId: worldchainWLD.chainId,\n token: worldchainWLD.token,\n },\n {\n chainId: worldchainUSDC.chainId,\n token: worldchainUSDC.token,\n },\n ],\n })) as DaimoPayTokenAmount[];\n\n const wld = paymentOptions.find(\n (opt) => getAddress(opt.token.token) === getAddress(worldchainWLD.token),\n );\n const usdc = paymentOptions.find(\n (opt) => getAddress(opt.token.token) === getAddress(worldchainUSDC.token),\n );\n\n assert(wld != null, \"WLD DP token not found\");\n assert(usdc != null, \"USDC DP token not found\");\n\n const paymentId = crypto.randomUUID().replace(/-/g, \"\");\n const payload: PayCommandInput = {\n reference: paymentId,\n to: order.intentAddr,\n tokens: [\n {\n symbol: Tokens.WLD,\n token_amount: wld.amount,\n },\n {\n symbol: Tokens.USDC,\n token_amount: usdc.amount,\n },\n ],\n description: order.metadata.intent,\n };\n const { finalPayload } = await MiniKit.commandsAsync.pay(payload);\n return { paymentId, finalPayload };\n } catch (error: unknown) {\n console.error(\"[WORLD] Error sending payment\", error);\n return null;\n }\n}\n"],"names":[],"mappings":";;;;AAmBsB,eAAA,sBAAA,CACpB,OACA,IAC4E,EAAA;AAC5E,EAAI,IAAA;AACF,IAAI,IAAA,CAAC,OAAQ,CAAA,WAAA,EAAe,EAAA;AAC1B,MAAQ,OAAA,CAAA,KAAA;AAAA,QACN,6FAAA;AAAA,OACF,CAAA;AACA,MAAO,OAAA,IAAA,CAAA;AAAA,KACT;AAEA,IAAA,MAAM,cAAkB,GAAA,MAAM,IAAK,CAAA,sBAAA,CAAuB,KAAM,CAAA;AAAA,MAC9D,SAAS,KAAM,CAAA,EAAA;AAAA,MACf,MAAQ,EAAA;AAAA,QACN;AAAA,UACE,SAAS,aAAc,CAAA,OAAA;AAAA,UACvB,OAAO,aAAc,CAAA,KAAA;AAAA,SACvB;AAAA,QACA;AAAA,UACE,SAAS,cAAe,CAAA,OAAA;AAAA,UACxB,OAAO,cAAe,CAAA,KAAA;AAAA,SACxB;AAAA,OACF;AAAA,KACD,CAAA,CAAA;AAED,IAAA,MAAM,MAAM,cAAe,CAAA,IAAA;AAAA,MACzB,CAAC,QAAQ,UAAW,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,KAAM,UAAW,CAAA,aAAA,CAAc,KAAK,CAAA;AAAA,KACzE,CAAA;AACA,IAAA,MAAM,OAAO,cAAe,CAAA,IAAA;AAAA,MAC1B,CAAC,QAAQ,UAAW,CAAA,GAAA,CAAI,MAAM,KAAK,CAAA,KAAM,UAAW,CAAA,cAAA,CAAe,KAAK,CAAA;AAAA,KAC1E,CAAA;AAEA,IAAO,MAAA,CAAA,GAAA,IAAO,MAAM,wBAAwB,CAAA,CAAA;AAC5C,IAAO,MAAA,CAAA,IAAA,IAAQ,MAAM,yBAAyB,CAAA,CAAA;AAE9C,IAAA,MAAM,YAAY,MAAO,CAAA,UAAA,EAAa,CAAA,OAAA,CAAQ,MAAM,EAAE,CAAA,CAAA;AACtD,IAAA,MAAM,OAA2B,GAAA;AAAA,MAC/B,SAAW,EAAA,SAAA;AAAA,MACX,IAAI,KAAM,CAAA,UAAA;AAAA,MACV,MAAQ,EAAA;AAAA,QACN;AAAA,UACE,QAAQ,MAAO,CAAA,GAAA;AAAA,UACf,cAAc,GAAI,CAAA,MAAA;AAAA,SACpB;AAAA,QACA;AAAA,UACE,QAAQ,MAAO,CAAA,IAAA;AAAA,UACf,cAAc,IAAK,CAAA,MAAA;AAAA,SACrB;AAAA,OACF;AAAA,MACA,WAAA,EAAa,MAAM,QAAS,CAAA,MAAA;AAAA,KAC9B,CAAA;AACA,IAAA,MAAM,EAAE,YAAa,EAAA,GAAI,MAAM,OAAQ,CAAA,aAAA,CAAc,IAAI,OAAO,CAAA,CAAA;AAChE,IAAO,OAAA,EAAE,WAAW,YAAa,EAAA,CAAA;AAAA,WAC1B,KAAgB,EAAA;AACvB,IAAQ,OAAA,CAAA,KAAA,CAAM,iCAAiC,KAAK,CAAA,CAAA;AACpD,IAAO,OAAA,IAAA,CAAA;AAAA,GACT;AACF;;;;"}
@@ -0,0 +1,76 @@
1
+ import { worldchainUSDC } from '@daimo/pay-common';
2
+ import { MiniKit } from '@worldcoin/minikit-js';
3
+ import { useState, useEffect, useCallback } from 'react';
4
+ import { getAddress } from 'viem';
5
+ import { ROUTES } from '../constants/routes.js';
6
+ import { useDaimoPay } from '../hooks/useDaimoPay.js';
7
+ import { usePayContext } from '../hooks/usePayContext.js';
8
+ import { useWorldSignIn } from './useWorldSignIn.js';
9
+
10
+ function useWithdrawToWorld() {
11
+ const { signInWithWorld } = useWorldSignIn();
12
+ const [isMiniKitReady, setIsMiniKitReady] = useState(false);
13
+ const pay = useDaimoPay();
14
+ const context = usePayContext();
15
+ const { paymentState, log } = context;
16
+ const [modalOptions, setModalOptions] = useState({
17
+ closeOnSuccess: false,
18
+ resetOnSuccess: false
19
+ });
20
+ useEffect(() => {
21
+ log("[WORLD] Installing MiniKit");
22
+ const result = MiniKit.install();
23
+ log("[WORLD] MiniKit install result", result);
24
+ log("[WORLD] MiniKit is installed", MiniKit.isInstalled());
25
+ setIsMiniKitReady(MiniKit.isInstalled());
26
+ }, []);
27
+ const showSpinner = useCallback(() => {
28
+ log(`[WORLD] showing spinner ${pay.order?.id}`);
29
+ context.showPayment(modalOptions);
30
+ context.setRoute(ROUTES.CONFIRMATION);
31
+ }, [pay.order?.id, modalOptions]);
32
+ useEffect(() => {
33
+ if (pay.paymentState === "payment_started") {
34
+ showSpinner();
35
+ }
36
+ }, [pay.paymentState, showSpinner]);
37
+ const withdrawToWorld = useCallback(
38
+ async ({
39
+ appId,
40
+ toUnits,
41
+ closeOnSuccess = false,
42
+ resetOnSuccess = false
43
+ }) => {
44
+ if (!isMiniKitReady) {
45
+ console.error("[WORLD_WITHDRAW] MiniKit is not installed");
46
+ return null;
47
+ }
48
+ const worldUser = await signInWithWorld();
49
+ if (!worldUser?.walletAddress) {
50
+ log("[WORLD_WITHDRAW] user is not signed in");
51
+ return null;
52
+ }
53
+ await paymentState.setPayParams({
54
+ appId,
55
+ toChain: worldchainUSDC.chainId,
56
+ toToken: getAddress(worldchainUSDC.token),
57
+ toUnits,
58
+ toAddress: getAddress(worldUser.walletAddress),
59
+ intent: "Withdraw to World App"
60
+ });
61
+ const hydratedState = await pay.hydrateOrder();
62
+ const intentAddress = hydratedState.order.intentAddr;
63
+ log(
64
+ `[WORLD_WITHDRAW] hydrated order ${pay.order?.id} with intent address ${intentAddress}. Polling for payment`
65
+ );
66
+ setModalOptions({ closeOnSuccess, resetOnSuccess });
67
+ return intentAddress;
68
+ },
69
+ // eslint-disable-next-line react-hooks/exhaustive-deps
70
+ [isMiniKitReady, signInWithWorld, pay, log]
71
+ );
72
+ return { withdrawToWorld };
73
+ }
74
+
75
+ export { useWithdrawToWorld };
76
+ //# sourceMappingURL=useWithdrawToWorld.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWithdrawToWorld.js","sources":["../../../../../../src/world-mini-app/useWithdrawToWorld.tsx"],"sourcesContent":["import { worldchainUSDC } from \"@daimo/pay-common\";\nimport { MiniKit } from \"@worldcoin/minikit-js\";\nimport { useCallback, useEffect, useState } from \"react\";\nimport { Address, getAddress } from \"viem\";\nimport { ROUTES } from \"../constants/routes\";\nimport { useDaimoPay } from \"../hooks/useDaimoPay\";\nimport { usePayContext } from \"../hooks/usePayContext\";\nimport { DaimoPayModalOptions } from \"../types\";\nimport { useWorldSignIn } from \"./useWorldSignIn\";\n\nexport function useWithdrawToWorld() {\n const { signInWithWorld } = useWorldSignIn();\n const [isMiniKitReady, setIsMiniKitReady] = useState(false);\n\n const pay = useDaimoPay();\n const context = usePayContext();\n const { paymentState, log } = context;\n const [modalOptions, setModalOptions] = useState<DaimoPayModalOptions>({\n closeOnSuccess: false,\n resetOnSuccess: false,\n });\n\n // Install Minikit if not already installed\n useEffect(() => {\n log(\"[WORLD] Installing MiniKit\");\n const result = MiniKit.install();\n log(\"[WORLD] MiniKit install result\", result);\n log(\"[WORLD] MiniKit is installed\", MiniKit.isInstalled());\n setIsMiniKitReady(MiniKit.isInstalled());\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, []);\n\n const showSpinner = useCallback(() => {\n log(`[WORLD] showing spinner ${pay.order?.id}`);\n context.showPayment(modalOptions);\n context.setRoute(ROUTES.CONFIRMATION);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pay.order?.id, modalOptions]);\n\n // Auto-open spinner when payment starts\n useEffect(() => {\n if (pay.paymentState === \"payment_started\") {\n showSpinner();\n }\n }, [pay.paymentState, showSpinner]);\n\n const withdrawToWorld = useCallback(\n async ({\n appId,\n toUnits,\n closeOnSuccess = false,\n resetOnSuccess = false,\n }: {\n appId: string;\n toUnits: string;\n closeOnSuccess?: boolean;\n resetOnSuccess?: boolean;\n }): Promise<Address | null> => {\n if (!isMiniKitReady) {\n console.error(\"[WORLD_WITHDRAW] MiniKit is not installed\");\n return null;\n }\n\n const worldUser = await signInWithWorld();\n\n if (!worldUser?.walletAddress) {\n log(\"[WORLD_WITHDRAW] user is not signed in\");\n return null;\n }\n\n // Create a payment to withdraw to the user's world wallet\n await paymentState.setPayParams({\n appId,\n toChain: worldchainUSDC.chainId,\n toToken: getAddress(worldchainUSDC.token),\n toUnits,\n toAddress: getAddress(worldUser.walletAddress),\n intent: \"Withdraw to World App\",\n });\n\n // Hydrate the order and return the intent address\n const hydratedState = await pay.hydrateOrder();\n const intentAddress = hydratedState.order.intentAddr;\n log(\n `[WORLD_WITHDRAW] hydrated order ${pay.order?.id} with intent address ${intentAddress}. Polling for payment`,\n );\n setModalOptions({ closeOnSuccess, resetOnSuccess });\n return intentAddress;\n },\n // eslint-disable-next-line react-hooks/exhaustive-deps\n [isMiniKitReady, signInWithWorld, pay, log],\n );\n\n return { withdrawToWorld };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { MiniKit } from '@worldcoin/minikit-js';
2
+ import { useState, useCallback } from 'react';
3
+
4
+ function useWorldSignIn() {
5
+ const [worldUser, setWorldUser] = useState(null);
6
+ const [isLoadingSignIn, setIsLoadingSignIn] = useState(false);
7
+ const signInWithWorld = useCallback(async () => {
8
+ if (worldUser != null) {
9
+ console.log("[WORLD_SIGNIN] user already signed in");
10
+ return worldUser;
11
+ }
12
+ setIsLoadingSignIn(true);
13
+ try {
14
+ if (!MiniKit.isInstalled()) {
15
+ console.log("[WORLD_SIGNIN] MiniKit is not installed");
16
+ return null;
17
+ }
18
+ const res = await fetch("https://pay.daimo.com/api/worldcoin/siwe-nonce");
19
+ const { nonce } = await res.json();
20
+ console.log("[WORLD_SIGNIN] nonce", nonce);
21
+ const nextWeek = new Date(Date.now() + 7 * 24 * 60 * 60 * 1e3);
22
+ const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1e3);
23
+ const { commandPayload: generateMessageResult, finalPayload } = await MiniKit.commandsAsync.walletAuth({
24
+ nonce,
25
+ requestId: "0",
26
+ expirationTime: nextWeek,
27
+ notBefore: yesterday,
28
+ statement: "Sign in"
29
+ });
30
+ console.log(
31
+ "[WORLD_SIGNIN] generateMessageResult",
32
+ generateMessageResult
33
+ );
34
+ console.log("[WORLD_SIGNIN] finalPayload", finalPayload);
35
+ if (finalPayload.status === "error") {
36
+ return null;
37
+ } else {
38
+ const response = await fetch(
39
+ "https://pay.daimo.com/api/worldcoin/complete-siwe",
40
+ {
41
+ method: "POST",
42
+ headers: {
43
+ "Content-Type": "application/json"
44
+ },
45
+ body: JSON.stringify({
46
+ payload: finalPayload,
47
+ nonce
48
+ })
49
+ }
50
+ );
51
+ const verificationResponse = await response.json();
52
+ console.log(
53
+ "[WORLD_SIGNIN] verification response",
54
+ verificationResponse
55
+ );
56
+ if (verificationResponse.isValid) {
57
+ console.log("[WORLD_SIGNIN] user is valid");
58
+ const user = await MiniKit.getUserByAddress(finalPayload.address);
59
+ setWorldUser(user);
60
+ return user;
61
+ }
62
+ }
63
+ } catch (error) {
64
+ console.error("[WORLD_SIGNIN] error", error);
65
+ } finally {
66
+ setIsLoadingSignIn(false);
67
+ }
68
+ return null;
69
+ }, [setWorldUser, setIsLoadingSignIn, worldUser]);
70
+ return { signInWithWorld, worldUser, isLoadingSignIn };
71
+ }
72
+
73
+ export { useWorldSignIn };
74
+ //# sourceMappingURL=useWorldSignIn.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useWorldSignIn.js","sources":["../../../../../../src/world-mini-app/useWorldSignIn.tsx"],"sourcesContent":["import { MiniKit } from \"@worldcoin/minikit-js\";\nimport { useCallback, useState } from \"react\";\n\nexport function useWorldSignIn(): {\n signInWithWorld: () => Promise<typeof MiniKit.user | null>;\n worldUser: typeof MiniKit.user | null;\n isLoadingSignIn: boolean;\n} {\n const [worldUser, setWorldUser] = useState<typeof MiniKit.user | null>(null);\n const [isLoadingSignIn, setIsLoadingSignIn] = useState(false);\n\n const signInWithWorld = useCallback(async (): Promise<\n typeof MiniKit.user | null\n > => {\n if (worldUser != null) {\n console.log(\"[WORLD_SIGNIN] user already signed in\");\n return worldUser;\n }\n\n setIsLoadingSignIn(true);\n try {\n if (!MiniKit.isInstalled()) {\n console.log(\"[WORLD_SIGNIN] MiniKit is not installed\");\n return null;\n }\n\n const res = await fetch(\"https://pay.daimo.com/api/worldcoin/siwe-nonce\");\n const { nonce } = await res.json();\n\n console.log(\"[WORLD_SIGNIN] nonce\", nonce);\n\n const nextWeek = new Date(Date.now() + 7 * 24 * 60 * 60 * 1000);\n const yesterday = new Date(Date.now() - 24 * 60 * 60 * 1000);\n\n const { commandPayload: generateMessageResult, finalPayload } =\n await MiniKit.commandsAsync.walletAuth({\n nonce,\n requestId: \"0\",\n expirationTime: nextWeek,\n notBefore: yesterday,\n statement: \"Sign in\",\n });\n\n console.log(\n \"[WORLD_SIGNIN] generateMessageResult\",\n generateMessageResult,\n );\n console.log(\"[WORLD_SIGNIN] finalPayload\", finalPayload);\n\n if (finalPayload.status === \"error\") {\n return null;\n } else {\n const response = await fetch(\n \"https://pay.daimo.com/api/worldcoin/complete-siwe\",\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({\n payload: finalPayload,\n nonce,\n }),\n },\n );\n const verificationResponse = await response.json();\n\n console.log(\n \"[WORLD_SIGNIN] verification response\",\n verificationResponse,\n );\n if (verificationResponse.isValid) {\n console.log(\"[WORLD_SIGNIN] user is valid\");\n const user = await MiniKit.getUserByAddress(finalPayload.address);\n setWorldUser(user);\n return user;\n }\n }\n } catch (error) {\n console.error(\"[WORLD_SIGNIN] error\", error);\n } finally {\n setIsLoadingSignIn(false);\n }\n return null;\n }, [setWorldUser, setIsLoadingSignIn, worldUser]);\n\n return { signInWithWorld, worldUser, isLoadingSignIn };\n}\n"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export { useWithdrawToWorld } from './world-mini-app/useWithdrawToWorld.js';
2
+ export { useWorldSignIn } from './world-mini-app/useWorldSignIn.js';
3
+ export { WorldPayButton } from './world-mini-app/WorldPayButton.js';
4
+ //# sourceMappingURL=world.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"world.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;"}
@@ -1,61 +1,34 @@
1
- import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
1
+ import { jsxs, jsx } from 'react/jsx-runtime';
2
2
  import { motion } from 'framer-motion';
3
- import { useState, useEffect } from 'react';
4
- import { keyframes } from 'styled-components';
5
3
  import useLocales from '../../../hooks/useLocales.js';
6
4
  import styled from '../../../styles/styled/index.js';
7
5
 
8
6
  const PoweredByFooter = ({
9
- supportUrl,
10
- showNeedHelpImmediately
7
+ receiptUrl
11
8
  } = {}) => {
12
- const [supportVisible, setSupportVisible] = useState(showNeedHelpImmediately);
13
9
  const locales = useLocales();
14
- useEffect(() => {
15
- if (supportUrl == null) return;
16
- const timer = setTimeout(() => {
17
- setSupportVisible(true);
18
- }, 2500);
19
- return () => clearTimeout(timer);
20
- }, [supportUrl]);
21
- return /* @__PURE__ */ jsx(Container, { children: /* @__PURE__ */ jsx(TextLink, { href: supportVisible ? supportUrl : void 0, children: /* @__PURE__ */ jsx("span", { children: supportVisible ? /* @__PURE__ */ jsxs(Fragment, { children: [
22
- "Need help? ",
23
- /* @__PURE__ */ jsx(Underline, { children: "Contact support" })
24
- ] }) : /* @__PURE__ */ jsxs(Fragment, { children: [
25
- locales.poweredBy,
26
- " Daimo Pay"
27
- ] }) }) }) });
10
+ return /* @__PURE__ */ jsxs(Container, { children: [
11
+ receiptUrl ? /* @__PURE__ */ jsx(TextLink, { href: receiptUrl, target: "_blank", rel: "noreferrer", children: /* @__PURE__ */ jsx(Underline, { children: "Show receipt" }) }) : /* @__PURE__ */ jsxs(TextLink, { children: [
12
+ locales.poweredBy,
13
+ " Daimo Pay"
14
+ ] }),
15
+ /* @__PURE__ */ jsx("div", { className: "h-4" })
16
+ ] });
28
17
  };
29
18
  const Container = styled(motion.div)`
30
19
  text-align: center;
31
20
  margin-top: 16px;
32
21
  margin-bottom: -4px;
33
22
  `;
34
- keyframes`
35
- 0%{ opacity:0; }
36
- 100%{ opacity:1; }
37
- `;
38
23
  const TextLink = styled.a`
39
24
  appearance: none;
40
25
  user-select: none;
41
- display: inline-flex;
42
- align-items: center;
43
- justify-content: center;
44
- gap: 10px;
45
- height: 42px;
46
- padding: 0 16px;
47
- border-radius: 6px;
48
- background: none;
49
26
  color: var(--ck-body-color-muted);
50
27
  text-decoration-color: var(--ck-body-color-muted);
28
+ text-decoration: none;
51
29
  font-size: 15px;
52
30
  line-height: 18px;
53
31
  font-weight: 400;
54
-
55
- span {
56
- opacity: 1;
57
- transition: opacity 300ms ease;
58
- }
59
32
  `;
60
33
  const Underline = styled(motion.span)`
61
34
  text-underline-offset: 2px;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../../../src/components/Common/PoweredByFooter/index.tsx"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport { useEffect, useState } from \"react\";\nimport { keyframes } from \"styled-components\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport styled from \"../../../styles/styled\";\n\nconst PoweredByFooter = ({\n supportUrl,\n showNeedHelpImmediately,\n}: { supportUrl?: string; showNeedHelpImmediately?: boolean } = {}) => {\n const [supportVisible, setSupportVisible] = useState(showNeedHelpImmediately);\n const locales = useLocales();\n useEffect(() => {\n if (supportUrl == null) return;\n // Show the support link after delay\n const timer = setTimeout(() => {\n setSupportVisible(true);\n }, 2500);\n return () => clearTimeout(timer);\n }, [supportUrl]);\n\n return (\n <Container>\n <TextLink href={supportVisible ? supportUrl : undefined}>\n <span>\n {supportVisible ? (\n <>\n Need help? <Underline>Contact support</Underline>\n </>\n ) : (\n <>{locales.poweredBy} Daimo Pay</>\n )}\n </span>\n </TextLink>\n </Container>\n );\n};\n\nconst Container = styled(motion.div)`\n text-align: center;\n margin-top: 16px;\n margin-bottom: -4px;\n`;\n\nconst fadeIn = keyframes`\n 0%{ opacity:0; }\n 100%{ opacity:1; }\n`;\n\nconst TextLink = styled.a`\n appearance: none;\n user-select: none;\n display: inline-flex;\n align-items: center;\n justify-content: center;\n gap: 10px;\n height: 42px;\n padding: 0 16px;\n border-radius: 6px;\n background: none;\n color: var(--ck-body-color-muted);\n text-decoration-color: var(--ck-body-color-muted);\n font-size: 15px;\n line-height: 18px;\n font-weight: 400;\n\n span {\n opacity: 1;\n transition: opacity 300ms ease;\n }\n`;\n\nconst Underline = styled(motion.span)`\n text-underline-offset: 2px;\n text-decoration: underline;\n`;\n\nexport default PoweredByFooter;\n"],"names":[],"mappings":";;;;;;;AAMA,MAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AAAA,EACA,uBAAA;AACF,CAAA,GAAgE,EAAO,KAAA;AACrE,EAAA,MAAM,CAAC,cAAA,EAAgB,iBAAiB,CAAA,GAAI,SAAS,uBAAuB,CAAA,CAAA;AAC5E,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAC3B,EAAA,SAAA,CAAU,MAAM;AACd,IAAA,IAAI,cAAc,IAAM,EAAA,OAAA;AAExB,IAAM,MAAA,KAAA,GAAQ,WAAW,MAAM;AAC7B,MAAA,iBAAA,CAAkB,IAAI,CAAA,CAAA;AAAA,OACrB,IAAI,CAAA,CAAA;AACP,IAAO,OAAA,MAAM,aAAa,KAAK,CAAA,CAAA;AAAA,GACjC,EAAG,CAAC,UAAU,CAAC,CAAA,CAAA;AAEf,EACE,uBAAA,GAAA,CAAC,SACC,EAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,QAAS,EAAA,EAAA,IAAA,EAAM,cAAiB,GAAA,UAAA,GAAa,KAC5C,CAAA,EAAA,QAAA,kBAAA,GAAA,CAAC,MACE,EAAA,EAAA,QAAA,EAAA,cAAA,mBACG,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,aAAA;AAAA,oBACW,GAAA,CAAC,aAAU,QAAe,EAAA,iBAAA,EAAA,CAAA;AAAA,GAAA,EACvC,oBAEG,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,IAAQ,OAAA,CAAA,SAAA;AAAA,IAAU,YAAA;AAAA,GAAU,EAAA,CAAA,EAEnC,GACF,CACF,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMpB,SAAA,CAAA;AAAA;AAAA;AAAA,EAAA;AAKf,MAAM,WAAW,MAAO,CAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAuBxB,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
1
+ {"version":3,"file":"index.js","sources":["../../../../../src/components/Common/PoweredByFooter/index.tsx"],"sourcesContent":["import { motion } from \"framer-motion\";\nimport useLocales from \"../../../hooks/useLocales\";\nimport styled from \"../../../styles/styled\";\n\nconst PoweredByFooter = ({\n receiptUrl,\n}: {\n receiptUrl?: string;\n} = {}) => {\n const locales = useLocales();\n return (\n <Container>\n {receiptUrl ? (\n <TextLink href={receiptUrl} target=\"_blank\" rel=\"noreferrer\">\n <Underline>Show receipt</Underline>\n </TextLink>\n ) : (\n <TextLink>{locales.poweredBy} Daimo Pay</TextLink>\n )}\n <div className=\"h-4\" />\n </Container>\n );\n};\n\nconst Container = styled(motion.div)`\n text-align: center;\n margin-top: 16px;\n margin-bottom: -4px;\n`;\n\nconst TextLink = styled.a`\n appearance: none;\n user-select: none;\n color: var(--ck-body-color-muted);\n text-decoration-color: var(--ck-body-color-muted);\n text-decoration: none;\n font-size: 15px;\n line-height: 18px;\n font-weight: 400;\n`;\n\nconst Underline = styled(motion.span)`\n text-underline-offset: 2px;\n text-decoration: underline;\n`;\n\nexport default PoweredByFooter;\n"],"names":[],"mappings":";;;;;AAIA,MAAM,kBAAkB,CAAC;AAAA,EACvB,UAAA;AACF,CAAA,GAEI,EAAO,KAAA;AACT,EAAA,MAAM,UAAU,UAAW,EAAA,CAAA;AAC3B,EAAA,4BACG,SACE,EAAA,EAAA,QAAA,EAAA;AAAA,IAAA,UAAA,mBACE,GAAA,CAAA,QAAA,EAAA,EAAS,IAAM,EAAA,UAAA,EAAY,QAAO,QAAS,EAAA,GAAA,EAAI,YAC9C,EAAA,QAAA,kBAAA,GAAA,CAAC,SAAU,EAAA,EAAA,QAAA,EAAA,cAAA,EAAY,CACzB,EAAA,CAAA,wBAEC,QAAU,EAAA,EAAA,QAAA,EAAA;AAAA,MAAQ,OAAA,CAAA,SAAA;AAAA,MAAU,YAAA;AAAA,KAAU,EAAA,CAAA;AAAA,oBAEzC,GAAA,CAAC,KAAI,EAAA,EAAA,SAAA,EAAU,KAAM,EAAA,CAAA;AAAA,GACvB,EAAA,CAAA,CAAA;AAEJ,EAAA;AAEA,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAMnC,MAAM,WAAW,MAAO,CAAA,CAAA,CAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,CAAA,CAAA;AAWxB,MAAM,SAAA,GAAY,MAAO,CAAA,MAAA,CAAO,IAAI,CAAA,CAAA;AAAA;AAAA;AAAA,CAAA;;;;"}
@@ -36,6 +36,9 @@ const ConnectWithQRCode = ({
36
36
  const url = externalUrl ?? // QR code opens eg. Binance
37
37
  walletDeeplink ?? // open in wallet
38
38
  `https://pay.daimo.com/pay?id=${payId}&mode=browser`;
39
+ if (context.debugMode) {
40
+ console.log("[DEBUG] QR Code URL:", url);
41
+ }
39
42
  const isUniquePaymentOption = context.uniquePaymentMethodPage === ROUTES.CONNECT || context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;
40
43
  return /* @__PURE__ */ jsxs(PageContent, { children: [
41
44
  isUniquePaymentOption && /* @__PURE__ */ jsx(OrderHeader, {}),
@@ -1 +1 @@
1
- {"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { WALLET_ID_MOBILE_WALLETS } from \"../../constants/wallets\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useWallet } from \"../../wallets/useWallets\";\nimport { OrderHeader } from \"../Common/OrderHeader\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is a walletConfig, then show a QR that the user can scan\n * from their phone. This deeplinks into the wallet's checkout page\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl?: string | null }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { isAndroid, isIOS } = useIsMobile();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const walletDeeplink = wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId, platform)\n : null;\n\n const url =\n externalUrl ?? // QR code opens eg. Binance\n walletDeeplink ?? // open in wallet\n `https://pay.daimo.com/pay?id=${payId}&mode=browser`; // browser\n\n // Show order header only for unique payment option scenario\n const isUniquePaymentOption =\n context.uniquePaymentMethodPage === ROUTES.CONNECT ||\n context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;\n\n return (\n <PageContent>\n {isUniquePaymentOption && <OrderHeader />}\n <ModalContent style={{ paddingBottom: 8 }}>\n <CustomQRCode\n value={url}\n image={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : wallet?.id ? (\n wallet.icon\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ConnectWithQRCode.js","sources":["../../../../src/components/DaimoPayModal/ConnectWithQRCode.tsx"],"sourcesContent":["import React from \"react\";\nimport { usePayContext } from \"../../hooks/usePayContext\";\n\nimport { ModalContent, PageContent } from \"../Common/Modal/styles\";\n\nimport ScanIconWithLogos from \"../../assets/ScanIconWithLogos\";\nimport { useDaimoPay } from \"../../hooks/useDaimoPay\";\nimport useLocales from \"../../hooks/useLocales\";\nimport CustomQRCode from \"../Common/CustomQRCode\";\n\nimport { writeDaimoPayOrderID } from \"@daimo/pay-common\";\nimport { SquircleIcon } from \"../../assets/logos\";\nimport MobileWithLogos from \"../../assets/MobileWithLogos\";\nimport { ROUTES } from \"../../constants/routes\";\nimport { WALLET_ID_MOBILE_WALLETS } from \"../../constants/wallets\";\nimport useIsMobile from \"../../hooks/useIsMobile\";\nimport { useWallet } from \"../../wallets/useWallets\";\nimport { OrderHeader } from \"../Common/OrderHeader\";\n\n/**\n * Continues a Daimo Pay flow in another app.\n * - If the pendingConnectorId is a mobile wallet, deeplink directly into that\n * wallet. This opens the flow in eg. the Rainbow in-app browser, letting the\n * user finish the flow in a single app switch instead of multiple.\n * - If the pendingConnectorId is MOBILE_WALLETS_CONNECTOR_ID, then show a QR\n * that the user can scan from their phone. This opens the flow in eg. mobile\n * Safari, letting them pick which app they want to use & finish there.\n * - If the pendingConnectorId is a walletConfig, then show a QR that the user can scan\n * from their phone. This deeplinks into the wallet's checkout page\n */\nconst ConnectWithQRCode: React.FC<{ externalUrl?: string | null }> = ({\n externalUrl,\n}) => {\n const context = usePayContext();\n const { isAndroid, isIOS } = useIsMobile();\n const { pendingConnectorId, paymentState } = context;\n const walletFromConnectors = useWallet(pendingConnectorId ?? \"\");\n // Fall back to selectedWallet for wallets from walletConfigs (e.g. unique payment options)\n const wallet = walletFromConnectors || paymentState.selectedWallet;\n const externalOption = paymentState.selectedExternalOption;\n const pay = useDaimoPay();\n\n const locales = useLocales({\n CONNECTORNAME: wallet?.name ?? externalOption?.id,\n });\n\n if (!wallet && !externalOption)\n return <> No wallet or external option found </>;\n\n const payId = pay.order ? writeDaimoPayOrderID(pay.order.id) : \"\";\n const platform = isIOS ? \"ios\" : isAndroid ? \"android\" : \"other\";\n\n const isDesktopLinkToMobileWallets = wallet?.id === WALLET_ID_MOBILE_WALLETS;\n const walletDeeplink = wallet?.getDaimoPayDeeplink\n ? wallet.getDaimoPayDeeplink(payId, platform)\n : null;\n\n const url =\n externalUrl ?? // QR code opens eg. Binance\n walletDeeplink ?? // open in wallet\n `https://pay.daimo.com/pay?id=${payId}&mode=browser`; // browser\n\n if (context.debugMode) {\n console.log(\"[DEBUG] QR Code URL:\", url);\n }\n\n // Show order header only for unique payment option scenario\n const isUniquePaymentOption =\n context.uniquePaymentMethodPage === ROUTES.CONNECT ||\n context.uniquePaymentMethodPage === ROUTES.WAITING_EXTERNAL;\n\n return (\n <PageContent>\n {isUniquePaymentOption && <OrderHeader />}\n <ModalContent style={{ paddingBottom: 8 }}>\n <CustomQRCode\n value={url}\n image={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : wallet?.id ? (\n wallet.icon\n ) : (\n <div\n style={{\n width: \"100%\",\n height: \"100%\",\n borderRadius: \"22.5%\",\n overflow: \"hidden\",\n display: \"flex\",\n alignItems: \"center\",\n justifyContent: \"center\",\n backgroundColor: \"var(--ck-body-background)\",\n transform: \"scale(1.3) translateY(5%)\",\n transformOrigin: \"center center\",\n }}\n >\n <MobileWithLogos />\n </div>\n )\n }\n tooltipMessage={\n isDesktopLinkToMobileWallets ? (\n <>\n <ScanIconWithLogos />\n <span>\n Finish the payment <br />\n on your mobile phone\n </span>\n </>\n ) : (\n <>\n <ScanIconWithLogos\n logo={\n externalOption?.logoURI ? (\n <SquircleIcon icon={externalOption.logoURI} alt=\"Logo\" />\n ) : (\n wallet?.icon\n )\n }\n />\n <span>{locales.scanScreen_tooltip_default}</span>\n </>\n )\n }\n />\n </ModalContent>\n </PageContent>\n );\n};\n\nexport default ConnectWithQRCode;\n"],"names":[],"mappings":"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"}