@crossmint/client-sdk-react-ui 1.18.4 → 1.19.0-alpha.0

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 (785) hide show
  1. package/dist/chunk-2DG4R653.cjs +79 -0
  2. package/dist/chunk-2DG4R653.cjs.map +1 -0
  3. package/dist/chunk-2T2VCED7.js +17 -0
  4. package/dist/chunk-2T2VCED7.js.map +1 -0
  5. package/dist/chunk-33WZFL2D.js +80 -0
  6. package/dist/chunk-33WZFL2D.js.map +1 -0
  7. package/dist/chunk-35QBUT6F.js +89 -0
  8. package/dist/chunk-35QBUT6F.js.map +1 -0
  9. package/dist/chunk-35RV5AOT.cjs +70 -0
  10. package/dist/chunk-35RV5AOT.cjs.map +1 -0
  11. package/dist/chunk-3CWYQQ65.cjs +45 -0
  12. package/dist/chunk-3CWYQQ65.cjs.map +1 -0
  13. package/dist/chunk-3IQALRY5.js +14 -0
  14. package/dist/chunk-3IQALRY5.js.map +1 -0
  15. package/dist/chunk-3J6CUUWT.js +50 -0
  16. package/dist/chunk-3J6CUUWT.js.map +1 -0
  17. package/dist/chunk-3KR4GYLF.js +26 -0
  18. package/dist/chunk-3KR4GYLF.js.map +1 -0
  19. package/dist/chunk-43P7QWBK.cjs +17 -0
  20. package/dist/chunk-43P7QWBK.cjs.map +1 -0
  21. package/dist/chunk-4D4AAZAE.cjs +32 -0
  22. package/dist/chunk-4D4AAZAE.cjs.map +1 -0
  23. package/dist/chunk-4DAZAO6Y.cjs +59 -0
  24. package/dist/chunk-4DAZAO6Y.cjs.map +1 -0
  25. package/dist/chunk-4EZ2R33I.cjs +28 -0
  26. package/dist/chunk-4EZ2R33I.cjs.map +1 -0
  27. package/dist/chunk-5BYCXTC3.js +17 -0
  28. package/dist/chunk-5BYCXTC3.js.map +1 -0
  29. package/dist/chunk-5KK3YQWD.cjs +1 -0
  30. package/dist/chunk-5KK3YQWD.cjs.map +1 -0
  31. package/dist/chunk-5OGRPJ2L.js +198 -0
  32. package/dist/chunk-5OGRPJ2L.js.map +1 -0
  33. package/dist/chunk-5RDAQSJK.cjs +27 -0
  34. package/dist/chunk-5RDAQSJK.cjs.map +1 -0
  35. package/dist/chunk-5RX5WFEW.cjs +11 -0
  36. package/dist/chunk-5RX5WFEW.cjs.map +1 -0
  37. package/dist/chunk-5TH75X5L.js +27 -0
  38. package/dist/chunk-5TH75X5L.js.map +1 -0
  39. package/dist/chunk-6A5ZUKVT.cjs +31 -0
  40. package/dist/chunk-6A5ZUKVT.cjs.map +1 -0
  41. package/dist/chunk-6LO4NSRH.cjs +21 -0
  42. package/dist/chunk-6LO4NSRH.cjs.map +1 -0
  43. package/dist/chunk-6TFIQWYJ.js +79 -0
  44. package/dist/chunk-6TFIQWYJ.js.map +1 -0
  45. package/dist/chunk-72LSMHPL.js +131 -0
  46. package/dist/chunk-72LSMHPL.js.map +1 -0
  47. package/dist/chunk-7EPTEGBP.cjs +51 -0
  48. package/dist/chunk-7EPTEGBP.cjs.map +1 -0
  49. package/dist/chunk-7HBAJHZZ.cjs +198 -0
  50. package/dist/chunk-7HBAJHZZ.cjs.map +1 -0
  51. package/dist/chunk-7HENIDX5.js +39 -0
  52. package/dist/chunk-7HENIDX5.js.map +1 -0
  53. package/dist/chunk-7IC6PRTG.js +10 -0
  54. package/dist/chunk-7IC6PRTG.js.map +1 -0
  55. package/dist/chunk-7KIY6DLW.js +28 -0
  56. package/dist/chunk-7KIY6DLW.js.map +1 -0
  57. package/dist/chunk-7UXIFMNO.js +1 -0
  58. package/dist/chunk-7UXIFMNO.js.map +1 -0
  59. package/dist/chunk-A7J4DAE7.js +16 -0
  60. package/dist/chunk-A7J4DAE7.js.map +1 -0
  61. package/dist/chunk-ATHR4S2P.js +48 -0
  62. package/dist/chunk-ATHR4S2P.js.map +1 -0
  63. package/dist/chunk-AXZLLRBU.cjs +26 -0
  64. package/dist/chunk-AXZLLRBU.cjs.map +1 -0
  65. package/dist/chunk-B7LYPQ4K.cjs +38 -0
  66. package/dist/chunk-B7LYPQ4K.cjs.map +1 -0
  67. package/dist/chunk-C2VARNXL.js +70 -0
  68. package/dist/chunk-C2VARNXL.js.map +1 -0
  69. package/dist/chunk-C3MY2FND.cjs +78 -0
  70. package/dist/chunk-C3MY2FND.cjs.map +1 -0
  71. package/dist/chunk-CRTRMMJ7.js +59 -0
  72. package/dist/chunk-CRTRMMJ7.js.map +1 -0
  73. package/dist/chunk-DF5JCCWO.cjs +124 -0
  74. package/dist/chunk-DF5JCCWO.cjs.map +1 -0
  75. package/dist/chunk-EAEMD3DY.cjs +34 -0
  76. package/dist/chunk-EAEMD3DY.cjs.map +1 -0
  77. package/dist/chunk-EH64D65Z.cjs +137 -0
  78. package/dist/chunk-EH64D65Z.cjs.map +1 -0
  79. package/dist/chunk-EON274FF.cjs +33 -0
  80. package/dist/chunk-EON274FF.cjs.map +1 -0
  81. package/dist/chunk-EOWJ7775.js +18 -0
  82. package/dist/chunk-EOWJ7775.js.map +1 -0
  83. package/dist/chunk-F2AWZC4M.js +51 -0
  84. package/dist/chunk-F2AWZC4M.js.map +1 -0
  85. package/dist/chunk-F3AMLCQL.js +22 -0
  86. package/dist/chunk-F3AMLCQL.js.map +1 -0
  87. package/dist/chunk-FCL2DOPJ.js +33 -0
  88. package/dist/chunk-FCL2DOPJ.js.map +1 -0
  89. package/dist/chunk-FHPIRUUD.cjs +17 -0
  90. package/dist/chunk-FHPIRUUD.cjs.map +1 -0
  91. package/dist/chunk-FKL462NZ.js +22 -0
  92. package/dist/chunk-FKL462NZ.js.map +1 -0
  93. package/dist/chunk-FU74NHZW.js +34 -0
  94. package/dist/chunk-FU74NHZW.js.map +1 -0
  95. package/dist/chunk-FXKNGWFA.cjs +17 -0
  96. package/dist/chunk-FXKNGWFA.cjs.map +1 -0
  97. package/dist/chunk-H4F7UVPT.js +34 -0
  98. package/dist/chunk-H4F7UVPT.js.map +1 -0
  99. package/dist/chunk-H4TVOH5V.cjs +51 -0
  100. package/dist/chunk-H4TVOH5V.cjs.map +1 -0
  101. package/dist/chunk-HCW4RO2O.cjs +29 -0
  102. package/dist/chunk-HCW4RO2O.cjs.map +1 -0
  103. package/dist/chunk-HFPR3JUK.js +31 -0
  104. package/dist/chunk-HFPR3JUK.js.map +1 -0
  105. package/dist/chunk-HIU3FK4M.cjs +13 -0
  106. package/dist/chunk-HIU3FK4M.cjs.map +1 -0
  107. package/dist/chunk-HPOZ6I54.cjs +44 -0
  108. package/dist/chunk-HPOZ6I54.cjs.map +1 -0
  109. package/dist/chunk-I22MLYYW.cjs +21 -0
  110. package/dist/chunk-I22MLYYW.cjs.map +1 -0
  111. package/dist/chunk-I63FQCIV.js +189 -0
  112. package/dist/chunk-I63FQCIV.js.map +1 -0
  113. package/dist/chunk-IDJ7FOHB.js +34 -0
  114. package/dist/chunk-IDJ7FOHB.js.map +1 -0
  115. package/dist/chunk-IQPA3QOV.js +27 -0
  116. package/dist/chunk-IQPA3QOV.js.map +1 -0
  117. package/dist/chunk-IUCMANQB.js +137 -0
  118. package/dist/chunk-IUCMANQB.js.map +1 -0
  119. package/dist/chunk-JBCO6SN6.js +50 -0
  120. package/dist/chunk-JBCO6SN6.js.map +1 -0
  121. package/dist/chunk-JVVTHOFN.js +153 -0
  122. package/dist/chunk-JVVTHOFN.js.map +1 -0
  123. package/dist/chunk-KBMNS57M.js +17 -0
  124. package/dist/chunk-KBMNS57M.js.map +1 -0
  125. package/dist/chunk-KEKBOJCF.cjs +50 -0
  126. package/dist/chunk-KEKBOJCF.cjs.map +1 -0
  127. package/dist/chunk-KLWDDALZ.cjs +14 -0
  128. package/dist/chunk-KLWDDALZ.cjs.map +1 -0
  129. package/dist/chunk-KNOUJZN5.cjs +32 -0
  130. package/dist/chunk-KNOUJZN5.cjs.map +1 -0
  131. package/dist/chunk-KPQDVXHK.js +105 -0
  132. package/dist/chunk-KPQDVXHK.js.map +1 -0
  133. package/dist/chunk-KYC6TDD4.cjs +82 -0
  134. package/dist/chunk-KYC6TDD4.cjs.map +1 -0
  135. package/dist/chunk-L3FKENHU.js +14 -0
  136. package/dist/chunk-L3FKENHU.js.map +1 -0
  137. package/dist/chunk-LAI55KMW.cjs +34 -0
  138. package/dist/chunk-LAI55KMW.cjs.map +1 -0
  139. package/dist/chunk-LD7PAUBR.cjs +31 -0
  140. package/dist/chunk-LD7PAUBR.cjs.map +1 -0
  141. package/dist/chunk-LEAESLKV.cjs +131 -0
  142. package/dist/chunk-LEAESLKV.cjs.map +1 -0
  143. package/dist/chunk-LYNYDYMA.js +31 -0
  144. package/dist/chunk-LYNYDYMA.js.map +1 -0
  145. package/dist/chunk-LYUX72JO.cjs +110 -0
  146. package/dist/chunk-LYUX72JO.cjs.map +1 -0
  147. package/dist/chunk-MH37OJT2.cjs +80 -0
  148. package/dist/chunk-MH37OJT2.cjs.map +1 -0
  149. package/dist/chunk-MSZ635MU.cjs +22 -0
  150. package/dist/chunk-MSZ635MU.cjs.map +1 -0
  151. package/dist/chunk-OBYFRT3I.cjs +14 -0
  152. package/dist/chunk-OBYFRT3I.cjs.map +1 -0
  153. package/dist/chunk-OYO5HXKX.js +32 -0
  154. package/dist/chunk-OYO5HXKX.js.map +1 -0
  155. package/dist/chunk-OZKGMYKX.js +21 -0
  156. package/dist/chunk-OZKGMYKX.js.map +1 -0
  157. package/dist/chunk-PCY3N6C2.js +1 -0
  158. package/dist/chunk-PCY3N6C2.js.map +1 -0
  159. package/dist/chunk-PHCGCJSA.js +107 -0
  160. package/dist/chunk-PHCGCJSA.js.map +1 -0
  161. package/dist/chunk-PIBLEOBQ.js +124 -0
  162. package/dist/chunk-PIBLEOBQ.js.map +1 -0
  163. package/dist/chunk-PQSWDEZX.js +28 -0
  164. package/dist/chunk-PQSWDEZX.js.map +1 -0
  165. package/dist/chunk-Q3M4UH5U.cjs +48 -0
  166. package/dist/chunk-Q3M4UH5U.cjs.map +1 -0
  167. package/dist/chunk-QBYRMPKN.js +82 -0
  168. package/dist/chunk-QBYRMPKN.js.map +1 -0
  169. package/dist/chunk-QDKAU3H2.js +31 -0
  170. package/dist/chunk-QDKAU3H2.js.map +1 -0
  171. package/dist/chunk-QQXBYOKA.cjs +16 -0
  172. package/dist/chunk-QQXBYOKA.cjs.map +1 -0
  173. package/dist/chunk-QTL5I5C2.js +38 -0
  174. package/dist/chunk-QTL5I5C2.js.map +1 -0
  175. package/dist/chunk-QUZAE6AP.cjs +1898 -0
  176. package/dist/chunk-QUZAE6AP.cjs.map +1 -0
  177. package/dist/chunk-R6IL3WOE.cjs +31 -0
  178. package/dist/chunk-R6IL3WOE.cjs.map +1 -0
  179. package/dist/chunk-RB34BJZ6.js +57 -0
  180. package/dist/chunk-RB34BJZ6.js.map +1 -0
  181. package/dist/chunk-RU4ZOZP5.cjs +1 -0
  182. package/dist/chunk-RU4ZOZP5.cjs.map +1 -0
  183. package/dist/chunk-RZPQIRIY.js +11 -0
  184. package/dist/chunk-RZPQIRIY.js.map +1 -0
  185. package/dist/chunk-SBA6FMFT.cjs +18 -0
  186. package/dist/chunk-SBA6FMFT.cjs.map +1 -0
  187. package/dist/chunk-STNIRPZP.js +78 -0
  188. package/dist/chunk-STNIRPZP.js.map +1 -0
  189. package/dist/chunk-SZA3XDJ5.cjs +1 -0
  190. package/dist/chunk-SZA3XDJ5.cjs.map +1 -0
  191. package/dist/chunk-SZMTAO74.cjs +50 -0
  192. package/dist/chunk-SZMTAO74.cjs.map +1 -0
  193. package/dist/chunk-TKFSXTH5.js +51 -0
  194. package/dist/chunk-TKFSXTH5.js.map +1 -0
  195. package/dist/chunk-TOCRVS5A.js +1898 -0
  196. package/dist/chunk-TOCRVS5A.js.map +1 -0
  197. package/dist/chunk-UASNCH3A.cjs +27 -0
  198. package/dist/chunk-UASNCH3A.cjs.map +1 -0
  199. package/dist/chunk-UD3UTFV3.cjs +1 -0
  200. package/dist/chunk-UD3UTFV3.cjs.map +1 -0
  201. package/dist/chunk-URKPLEPV.cjs +189 -0
  202. package/dist/chunk-URKPLEPV.cjs.map +1 -0
  203. package/dist/chunk-UYMSOJYK.cjs +89 -0
  204. package/dist/chunk-UYMSOJYK.cjs.map +1 -0
  205. package/dist/chunk-V7CWLETC.js +13 -0
  206. package/dist/chunk-V7CWLETC.js.map +1 -0
  207. package/dist/chunk-VEPJM7ZC.cjs +125 -0
  208. package/dist/chunk-VEPJM7ZC.cjs.map +1 -0
  209. package/dist/chunk-VKQ4YOEX.cjs +19 -0
  210. package/dist/chunk-VKQ4YOEX.cjs.map +1 -0
  211. package/dist/chunk-VPXCDIYZ.cjs +153 -0
  212. package/dist/chunk-VPXCDIYZ.cjs.map +1 -0
  213. package/dist/chunk-VZIXXIU5.js +32 -0
  214. package/dist/chunk-VZIXXIU5.js.map +1 -0
  215. package/dist/chunk-WO6OW46H.cjs +57 -0
  216. package/dist/chunk-WO6OW46H.cjs.map +1 -0
  217. package/dist/chunk-WS6OOSH7.js +110 -0
  218. package/dist/chunk-WS6OOSH7.js.map +1 -0
  219. package/dist/chunk-WVM3I3I3.js +45 -0
  220. package/dist/chunk-WVM3I3I3.js.map +1 -0
  221. package/dist/chunk-XDJ6F7N4.cjs +107 -0
  222. package/dist/chunk-XDJ6F7N4.cjs.map +1 -0
  223. package/dist/chunk-XSXE5LWO.js +19 -0
  224. package/dist/chunk-XSXE5LWO.js.map +1 -0
  225. package/dist/chunk-XW53XESI.cjs +39 -0
  226. package/dist/chunk-XW53XESI.cjs.map +1 -0
  227. package/dist/chunk-XXJ7LQ44.js +1 -0
  228. package/dist/chunk-XXJ7LQ44.js.map +1 -0
  229. package/dist/chunk-XYMYRPVT.js +1 -0
  230. package/dist/chunk-XYMYRPVT.js.map +1 -0
  231. package/dist/chunk-YE55IKBP.cjs +34 -0
  232. package/dist/chunk-YE55IKBP.cjs.map +1 -0
  233. package/dist/chunk-YHFDNKTS.cjs +10 -0
  234. package/dist/chunk-YHFDNKTS.cjs.map +1 -0
  235. package/dist/chunk-YKL53K3C.cjs +22 -0
  236. package/dist/chunk-YKL53K3C.cjs.map +1 -0
  237. package/dist/chunk-YWGWSNTU.js +125 -0
  238. package/dist/chunk-YWGWSNTU.js.map +1 -0
  239. package/dist/chunk-Z6QSH522.cjs +105 -0
  240. package/dist/chunk-Z6QSH522.cjs.map +1 -0
  241. package/dist/chunk-ZDQGQY7Z.js +29 -0
  242. package/dist/chunk-ZDQGQY7Z.js.map +1 -0
  243. package/dist/chunk-ZIHCLVCD.js +44 -0
  244. package/dist/chunk-ZIHCLVCD.js.map +1 -0
  245. package/dist/chunk-ZMSST6ZZ.cjs +28 -0
  246. package/dist/chunk-ZMSST6ZZ.cjs.map +1 -0
  247. package/dist/chunk-ZUIS3FET.js +21 -0
  248. package/dist/chunk-ZUIS3FET.js.map +1 -0
  249. package/dist/components/CrossmintNFTCollectionView.cjs +9 -1
  250. package/dist/components/CrossmintNFTCollectionView.cjs.map +1 -0
  251. package/dist/components/CrossmintNFTCollectionView.js +9 -1
  252. package/dist/components/CrossmintNFTCollectionView.js.map +1 -0
  253. package/dist/components/CrossmintNFTDetail.cjs +9 -1
  254. package/dist/components/CrossmintNFTDetail.cjs.map +1 -0
  255. package/dist/components/CrossmintNFTDetail.js +9 -1
  256. package/dist/components/CrossmintNFTDetail.js.map +1 -0
  257. package/dist/components/auth/AuthForm.cjs +44 -1
  258. package/dist/components/auth/AuthForm.cjs.map +1 -0
  259. package/dist/components/auth/AuthForm.js +44 -1
  260. package/dist/components/auth/AuthForm.js.map +1 -0
  261. package/dist/components/auth/AuthFormBackButton.cjs +44 -1
  262. package/dist/components/auth/AuthFormBackButton.cjs.map +1 -0
  263. package/dist/components/auth/AuthFormBackButton.js +44 -1
  264. package/dist/components/auth/AuthFormBackButton.js.map +1 -0
  265. package/dist/components/auth/AuthFormDialog.cjs +44 -1
  266. package/dist/components/auth/AuthFormDialog.cjs.map +1 -0
  267. package/dist/components/auth/AuthFormDialog.js +44 -1
  268. package/dist/components/auth/AuthFormDialog.js.map +1 -0
  269. package/dist/components/auth/EmbeddedAuthForm.cjs +45 -1
  270. package/dist/components/auth/EmbeddedAuthForm.cjs.map +1 -0
  271. package/dist/components/auth/EmbeddedAuthForm.js +45 -1
  272. package/dist/components/auth/EmbeddedAuthForm.js.map +1 -0
  273. package/dist/components/auth/PasskeyPrompt.cjs +15 -1
  274. package/dist/components/auth/PasskeyPrompt.cjs.map +1 -0
  275. package/dist/components/auth/PasskeyPrompt.js +15 -1
  276. package/dist/components/auth/PasskeyPrompt.js.map +1 -0
  277. package/dist/components/auth/methods/email/EmailAuthFlow.cjs +44 -1
  278. package/dist/components/auth/methods/email/EmailAuthFlow.cjs.map +1 -0
  279. package/dist/components/auth/methods/email/EmailAuthFlow.js +44 -1
  280. package/dist/components/auth/methods/email/EmailAuthFlow.js.map +1 -0
  281. package/dist/components/auth/methods/email/EmailOTPInput.cjs +46 -1
  282. package/dist/components/auth/methods/email/EmailOTPInput.cjs.map +1 -0
  283. package/dist/components/auth/methods/email/EmailOTPInput.js +46 -1
  284. package/dist/components/auth/methods/email/EmailOTPInput.js.map +1 -0
  285. package/dist/components/auth/methods/email/EmailSignIn.cjs +44 -1
  286. package/dist/components/auth/methods/email/EmailSignIn.cjs.map +1 -0
  287. package/dist/components/auth/methods/email/EmailSignIn.js +44 -1
  288. package/dist/components/auth/methods/email/EmailSignIn.js.map +1 -0
  289. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs +44 -1
  290. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs.map +1 -0
  291. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js +44 -1
  292. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js.map +1 -0
  293. package/dist/components/auth/methods/google/ContinueWithGoogle.cjs +44 -1
  294. package/dist/components/auth/methods/google/ContinueWithGoogle.cjs.map +1 -0
  295. package/dist/components/auth/methods/google/ContinueWithGoogle.js +44 -1
  296. package/dist/components/auth/methods/google/ContinueWithGoogle.js.map +1 -0
  297. package/dist/components/auth/methods/google/GoogleSignIn.cjs +44 -1
  298. package/dist/components/auth/methods/google/GoogleSignIn.cjs.map +1 -0
  299. package/dist/components/auth/methods/google/GoogleSignIn.js +44 -1
  300. package/dist/components/auth/methods/google/GoogleSignIn.js.map +1 -0
  301. package/dist/components/auth/methods/twitter/TwitterSignIn.cjs +44 -1
  302. package/dist/components/auth/methods/twitter/TwitterSignIn.cjs.map +1 -0
  303. package/dist/components/auth/methods/twitter/TwitterSignIn.js +44 -1
  304. package/dist/components/auth/methods/twitter/TwitterSignIn.js.map +1 -0
  305. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs +44 -1
  306. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs.map +1 -0
  307. package/dist/components/auth/methods/web3/Web3AuthFlow.js +44 -1
  308. package/dist/components/auth/methods/web3/Web3AuthFlow.js.map +1 -0
  309. package/dist/components/auth/methods/web3/Web3AuthFlowButton.cjs +44 -1
  310. package/dist/components/auth/methods/web3/Web3AuthFlowButton.cjs.map +1 -0
  311. package/dist/components/auth/methods/web3/Web3AuthFlowButton.js +44 -1
  312. package/dist/components/auth/methods/web3/Web3AuthFlowButton.js.map +1 -0
  313. package/dist/components/auth/methods/web3/Web3Connector.cjs +65 -1
  314. package/dist/components/auth/methods/web3/Web3Connector.cjs.map +1 -0
  315. package/dist/components/auth/methods/web3/Web3Connector.js +65 -1
  316. package/dist/components/auth/methods/web3/Web3Connector.js.map +1 -0
  317. package/dist/components/auth/methods/web3/Web3ConnectorButton.cjs +53 -1
  318. package/dist/components/auth/methods/web3/Web3ConnectorButton.cjs.map +1 -0
  319. package/dist/components/auth/methods/web3/Web3ConnectorButton.js +53 -1
  320. package/dist/components/auth/methods/web3/Web3ConnectorButton.js.map +1 -0
  321. package/dist/components/auth/methods/web3/Web3Connectors.cjs +44 -1
  322. package/dist/components/auth/methods/web3/Web3Connectors.cjs.map +1 -0
  323. package/dist/components/auth/methods/web3/Web3Connectors.js +44 -1
  324. package/dist/components/auth/methods/web3/Web3Connectors.js.map +1 -0
  325. package/dist/components/common/CountdownButton.cjs +9 -1
  326. package/dist/components/common/CountdownButton.cjs.map +1 -0
  327. package/dist/components/common/CountdownButton.js +9 -1
  328. package/dist/components/common/CountdownButton.js.map +1 -0
  329. package/dist/components/common/CrossmintLogoV2/CrossmintLogoV2.cjs +9 -1
  330. package/dist/components/common/CrossmintLogoV2/CrossmintLogoV2.cjs.map +1 -0
  331. package/dist/components/common/CrossmintLogoV2/CrossmintLogoV2.js +9 -1
  332. package/dist/components/common/CrossmintLogoV2/CrossmintLogoV2.js.map +1 -0
  333. package/dist/components/common/CrossmintLogoV2/consts.cjs +12 -1
  334. package/dist/components/common/CrossmintLogoV2/consts.cjs.map +1 -0
  335. package/dist/components/common/CrossmintLogoV2/consts.js +12 -1
  336. package/dist/components/common/CrossmintLogoV2/consts.js.map +1 -0
  337. package/dist/components/common/CrossmintLogoV2/schemas.cjs +34 -1
  338. package/dist/components/common/CrossmintLogoV2/schemas.cjs.map +1 -0
  339. package/dist/components/common/CrossmintLogoV2/schemas.js +34 -1
  340. package/dist/components/common/CrossmintLogoV2/schemas.js.map +1 -0
  341. package/dist/components/common/Dialog.cjs +26 -1
  342. package/dist/components/common/Dialog.cjs.map +1 -0
  343. package/dist/components/common/Dialog.js +26 -1
  344. package/dist/components/common/Dialog.js.map +1 -0
  345. package/dist/components/common/Divider.cjs +44 -1
  346. package/dist/components/common/Divider.cjs.map +1 -0
  347. package/dist/components/common/Divider.js +44 -1
  348. package/dist/components/common/Divider.js.map +1 -0
  349. package/dist/components/common/InputOTP.cjs +14 -1
  350. package/dist/components/common/InputOTP.cjs.map +1 -0
  351. package/dist/components/common/InputOTP.js +14 -1
  352. package/dist/components/common/InputOTP.js.map +1 -0
  353. package/dist/components/common/SecuredByCrossmint.cjs +10 -1
  354. package/dist/components/common/SecuredByCrossmint.cjs.map +1 -0
  355. package/dist/components/common/SecuredByCrossmint.js +10 -1
  356. package/dist/components/common/SecuredByCrossmint.js.map +1 -0
  357. package/dist/components/common/Spinner.cjs +9 -1
  358. package/dist/components/common/Spinner.cjs.map +1 -0
  359. package/dist/components/common/Spinner.js +9 -1
  360. package/dist/components/common/Spinner.js.map +1 -0
  361. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.cjs +8 -1
  362. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.cjs.map +1 -0
  363. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.js +8 -1
  364. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.js.map +1 -0
  365. package/dist/components/embed/EmbeddedCheckoutIFrame.cjs +8 -1
  366. package/dist/components/embed/EmbeddedCheckoutIFrame.cjs.map +1 -0
  367. package/dist/components/embed/EmbeddedCheckoutIFrame.js +8 -1
  368. package/dist/components/embed/EmbeddedCheckoutIFrame.js.map +1 -0
  369. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.cjs +11 -1
  370. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.cjs.map +1 -0
  371. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.js +11 -1
  372. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.js.map +1 -0
  373. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.cjs +10 -1
  374. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.cjs.map +1 -0
  375. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.js +10 -1
  376. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.js.map +1 -0
  377. package/dist/components/embed/fiat/FiatEmbeddedCheckout.cjs +11 -1
  378. package/dist/components/embed/fiat/FiatEmbeddedCheckout.cjs.map +1 -0
  379. package/dist/components/embed/fiat/FiatEmbeddedCheckout.js +11 -1
  380. package/dist/components/embed/fiat/FiatEmbeddedCheckout.js.map +1 -0
  381. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.cjs +10 -1
  382. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.cjs.map +1 -0
  383. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.js +10 -1
  384. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.js.map +1 -0
  385. package/dist/components/embed/fiat/FiatPaymentElement_OLD.cjs +75 -1
  386. package/dist/components/embed/fiat/FiatPaymentElement_OLD.cjs.map +1 -0
  387. package/dist/components/embed/fiat/FiatPaymentElement_OLD.js +75 -1
  388. package/dist/components/embed/fiat/FiatPaymentElement_OLD.js.map +1 -0
  389. package/dist/components/embed/index.cjs +14 -1
  390. package/dist/components/embed/index.cjs.map +1 -0
  391. package/dist/components/embed/index.js +14 -1
  392. package/dist/components/embed/index.js.map +1 -0
  393. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs +47 -1
  394. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs.map +1 -0
  395. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js +47 -1
  396. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js.map +1 -0
  397. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs +46 -1
  398. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs.map +1 -0
  399. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js +46 -1
  400. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js.map +1 -0
  401. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs +174 -1
  402. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs.map +1 -0
  403. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js +174 -1
  404. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js.map +1 -0
  405. package/dist/components/embed/v3/crypto/PayerConnectionHandler.cjs +8 -1
  406. package/dist/components/embed/v3/crypto/PayerConnectionHandler.cjs.map +1 -0
  407. package/dist/components/embed/v3/crypto/PayerConnectionHandler.js +8 -1
  408. package/dist/components/embed/v3/crypto/PayerConnectionHandler.js.map +1 -0
  409. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.cjs +72 -1
  410. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.cjs.map +1 -0
  411. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.js +72 -1
  412. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.js.map +1 -0
  413. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.cjs +8 -1
  414. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.cjs.map +1 -0
  415. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.js +8 -1
  416. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.js.map +1 -0
  417. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.cjs +55 -1
  418. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.cjs.map +1 -0
  419. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.js +55 -1
  420. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.js.map +1 -0
  421. package/dist/components/embed/v3/crypto/utils/handleSuiTransaction.cjs +71 -1
  422. package/dist/components/embed/v3/crypto/utils/handleSuiTransaction.cjs.map +1 -0
  423. package/dist/components/embed/v3/crypto/utils/handleSuiTransaction.js +71 -1
  424. package/dist/components/embed/v3/crypto/utils/handleSuiTransaction.js.map +1 -0
  425. package/dist/components/embed/v3/index.cjs +48 -1
  426. package/dist/components/embed/v3/index.cjs.map +1 -0
  427. package/dist/components/embed/v3/index.js +48 -1
  428. package/dist/components/embed/v3/index.js.map +1 -0
  429. package/dist/components/hosted/CrossmintPayButton_DEPRECATED.cjs +11 -1
  430. package/dist/components/hosted/CrossmintPayButton_DEPRECATED.cjs.map +1 -0
  431. package/dist/components/hosted/CrossmintPayButton_DEPRECATED.js +11 -1
  432. package/dist/components/hosted/CrossmintPayButton_DEPRECATED.js.map +1 -0
  433. package/dist/components/hosted/index.cjs +21 -1
  434. package/dist/components/hosted/index.cjs.map +1 -0
  435. package/dist/components/hosted/index.js +21 -1
  436. package/dist/components/hosted/index.js.map +1 -0
  437. package/dist/components/hosted/styles.cjs +10 -1
  438. package/dist/components/hosted/styles.cjs.map +1 -0
  439. package/dist/components/hosted/styles.js +10 -1
  440. package/dist/components/hosted/styles.js.map +1 -0
  441. package/dist/components/hosted/v3/CrossmintHostedCheckoutV3.cjs +13 -1
  442. package/dist/components/hosted/v3/CrossmintHostedCheckoutV3.cjs.map +1 -0
  443. package/dist/components/hosted/v3/CrossmintHostedCheckoutV3.js +13 -1
  444. package/dist/components/hosted/v3/CrossmintHostedCheckoutV3.js.map +1 -0
  445. package/dist/components/hosted/v3/index.cjs +14 -1
  446. package/dist/components/hosted/v3/index.cjs.map +1 -0
  447. package/dist/components/hosted/v3/index.js +14 -1
  448. package/dist/components/hosted/v3/index.js.map +1 -0
  449. package/dist/components/index.cjs +85 -1
  450. package/dist/components/index.cjs.map +1 -0
  451. package/dist/components/index.js +85 -1
  452. package/dist/components/index.js.map +1 -0
  453. package/dist/components/signers/EmailInput.cjs +11 -0
  454. package/dist/components/signers/EmailInput.cjs.map +1 -0
  455. package/dist/components/signers/EmailInput.d.cts +12 -0
  456. package/dist/components/signers/EmailInput.d.ts +12 -0
  457. package/dist/components/signers/EmailInput.js +11 -0
  458. package/dist/components/signers/EmailInput.js.map +1 -0
  459. package/dist/components/signers/EmailOTPInput.cjs +13 -0
  460. package/dist/components/signers/EmailOTPInput.cjs.map +1 -0
  461. package/dist/components/signers/EmailOTPInput.d.cts +13 -0
  462. package/dist/components/signers/EmailOTPInput.d.ts +13 -0
  463. package/dist/components/signers/EmailOTPInput.js +13 -0
  464. package/dist/components/signers/EmailOTPInput.js.map +1 -0
  465. package/dist/components/signers/EmailSignersDialog.cjs +18 -0
  466. package/dist/components/signers/EmailSignersDialog.cjs.map +1 -0
  467. package/dist/components/signers/EmailSignersDialog.d.cts +16 -0
  468. package/dist/components/signers/EmailSignersDialog.d.ts +16 -0
  469. package/dist/components/signers/EmailSignersDialog.js +18 -0
  470. package/dist/components/signers/EmailSignersDialog.js.map +1 -0
  471. package/dist/consts/version.cjs +8 -1
  472. package/dist/consts/version.cjs.map +1 -0
  473. package/dist/consts/version.js +8 -1
  474. package/dist/consts/version.js.map +1 -0
  475. package/dist/hooks/index.cjs +56 -1
  476. package/dist/hooks/index.cjs.map +1 -0
  477. package/dist/hooks/index.js +56 -1
  478. package/dist/hooks/index.js.map +1 -0
  479. package/dist/hooks/useAuth.cjs +44 -1
  480. package/dist/hooks/useAuth.cjs.map +1 -0
  481. package/dist/hooks/useAuth.js +44 -1
  482. package/dist/hooks/useAuth.js.map +1 -0
  483. package/dist/hooks/useCrossmint.cjs +10 -1
  484. package/dist/hooks/useCrossmint.cjs.map +1 -0
  485. package/dist/hooks/useCrossmint.js +10 -1
  486. package/dist/hooks/useCrossmint.js.map +1 -0
  487. package/dist/hooks/useCrossmintAuth.cjs +44 -1
  488. package/dist/hooks/useCrossmintAuth.cjs.map +1 -0
  489. package/dist/hooks/useCrossmintAuth.js +44 -1
  490. package/dist/hooks/useCrossmintAuth.js.map +1 -0
  491. package/dist/hooks/useCrossmintCheckout.cjs +13 -1
  492. package/dist/hooks/useCrossmintCheckout.cjs.map +1 -0
  493. package/dist/hooks/useCrossmintCheckout.js +13 -1
  494. package/dist/hooks/useCrossmintCheckout.js.map +1 -0
  495. package/dist/hooks/useDeepEffect.cjs +8 -1
  496. package/dist/hooks/useDeepEffect.cjs.map +1 -0
  497. package/dist/hooks/useDeepEffect.js +8 -1
  498. package/dist/hooks/useDeepEffect.js.map +1 -0
  499. package/dist/hooks/useDynamicConnect.cjs +8 -1
  500. package/dist/hooks/useDynamicConnect.cjs.map +1 -0
  501. package/dist/hooks/useDynamicConnect.js +8 -1
  502. package/dist/hooks/useDynamicConnect.js.map +1 -0
  503. package/dist/hooks/useEnvironment.cjs +8 -1
  504. package/dist/hooks/useEnvironment.cjs.map +1 -0
  505. package/dist/hooks/useEnvironment.js +8 -1
  506. package/dist/hooks/useEnvironment.js.map +1 -0
  507. package/dist/hooks/useOAuthWindowListener.cjs +44 -1
  508. package/dist/hooks/useOAuthWindowListener.cjs.map +1 -0
  509. package/dist/hooks/useOAuthWindowListener.js +44 -1
  510. package/dist/hooks/useOAuthWindowListener.js.map +1 -0
  511. package/dist/hooks/useSignerInvisibleIFrame.cjs +8 -0
  512. package/dist/hooks/useSignerInvisibleIFrame.cjs.map +1 -0
  513. package/dist/hooks/useSignerInvisibleIFrame.d.cts +377 -0
  514. package/dist/hooks/useSignerInvisibleIFrame.d.ts +377 -0
  515. package/dist/hooks/useSignerInvisibleIFrame.js +8 -0
  516. package/dist/hooks/useSignerInvisibleIFrame.js.map +1 -0
  517. package/dist/hooks/useWallet.cjs +44 -1
  518. package/dist/hooks/useWallet.cjs.map +1 -0
  519. package/dist/hooks/useWallet.d.cts +16 -0
  520. package/dist/hooks/useWallet.d.ts +16 -0
  521. package/dist/hooks/useWallet.js +44 -1
  522. package/dist/hooks/useWallet.js.map +1 -0
  523. package/dist/icons/alert.cjs +8 -1
  524. package/dist/icons/alert.cjs.map +1 -0
  525. package/dist/icons/alert.js +8 -1
  526. package/dist/icons/alert.js.map +1 -0
  527. package/dist/icons/base64Icons.cjs +12 -1
  528. package/dist/icons/base64Icons.cjs.map +1 -0
  529. package/dist/icons/base64Icons.js +12 -1
  530. package/dist/icons/base64Icons.js.map +1 -0
  531. package/dist/icons/chevronRight.cjs +8 -1
  532. package/dist/icons/chevronRight.cjs.map +1 -0
  533. package/dist/icons/chevronRight.js +8 -1
  534. package/dist/icons/chevronRight.js.map +1 -0
  535. package/dist/icons/discord.cjs +29 -1
  536. package/dist/icons/discord.cjs.map +1 -0
  537. package/dist/icons/discord.js +29 -1
  538. package/dist/icons/discord.js.map +1 -0
  539. package/dist/icons/emailOTP.cjs +8 -1
  540. package/dist/icons/emailOTP.cjs.map +1 -0
  541. package/dist/icons/emailOTP.js +8 -1
  542. package/dist/icons/emailOTP.js.map +1 -0
  543. package/dist/icons/farcaster.cjs +8 -1
  544. package/dist/icons/farcaster.cjs.map +1 -0
  545. package/dist/icons/farcaster.js +8 -1
  546. package/dist/icons/farcaster.js.map +1 -0
  547. package/dist/icons/fingerprint.cjs +8 -1
  548. package/dist/icons/fingerprint.cjs.map +1 -0
  549. package/dist/icons/fingerprint.js +8 -1
  550. package/dist/icons/fingerprint.js.map +1 -0
  551. package/dist/icons/google.cjs +8 -1
  552. package/dist/icons/google.cjs.map +1 -0
  553. package/dist/icons/google.js +8 -1
  554. package/dist/icons/google.js.map +1 -0
  555. package/dist/icons/leftArrow.cjs +8 -1
  556. package/dist/icons/leftArrow.cjs.map +1 -0
  557. package/dist/icons/leftArrow.js +8 -1
  558. package/dist/icons/leftArrow.js.map +1 -0
  559. package/dist/icons/passkey.cjs +8 -1
  560. package/dist/icons/passkey.cjs.map +1 -0
  561. package/dist/icons/passkey.js +8 -1
  562. package/dist/icons/passkey.js.map +1 -0
  563. package/dist/icons/passkeyPromptLogo.cjs +8 -1
  564. package/dist/icons/passkeyPromptLogo.cjs.map +1 -0
  565. package/dist/icons/passkeyPromptLogo.js +8 -1
  566. package/dist/icons/passkeyPromptLogo.js.map +1 -0
  567. package/dist/icons/securedByLeaf.cjs +8 -1
  568. package/dist/icons/securedByLeaf.cjs.map +1 -0
  569. package/dist/icons/securedByLeaf.js +8 -1
  570. package/dist/icons/securedByLeaf.js.map +1 -0
  571. package/dist/icons/twitter.cjs +8 -1
  572. package/dist/icons/twitter.cjs.map +1 -0
  573. package/dist/icons/twitter.js +8 -1
  574. package/dist/icons/twitter.js.map +1 -0
  575. package/dist/icons/wallet.cjs +8 -1
  576. package/dist/icons/wallet.cjs.map +1 -0
  577. package/dist/icons/wallet.js +8 -1
  578. package/dist/icons/wallet.js.map +1 -0
  579. package/dist/icons/x.cjs +29 -1
  580. package/dist/icons/x.cjs.map +1 -0
  581. package/dist/icons/x.js +29 -1
  582. package/dist/icons/x.js.map +1 -0
  583. package/dist/index.cjs +117 -1
  584. package/dist/index.cjs.map +1 -0
  585. package/dist/index.js +117 -1
  586. package/dist/index.js.map +1 -0
  587. package/dist/providers/CrossmintAuthProvider.cjs +46 -1
  588. package/dist/providers/CrossmintAuthProvider.cjs.map +1 -0
  589. package/dist/providers/CrossmintAuthProvider.js +46 -1
  590. package/dist/providers/CrossmintAuthProvider.js.map +1 -0
  591. package/dist/providers/CrossmintWalletProvider.cjs +46 -1
  592. package/dist/providers/CrossmintWalletProvider.cjs.map +1 -0
  593. package/dist/providers/CrossmintWalletProvider.d.cts +6 -1
  594. package/dist/providers/CrossmintWalletProvider.d.ts +6 -1
  595. package/dist/providers/CrossmintWalletProvider.js +46 -1
  596. package/dist/providers/CrossmintWalletProvider.js.map +1 -0
  597. package/dist/providers/TwindProvider.cjs +9 -1
  598. package/dist/providers/TwindProvider.cjs.map +1 -0
  599. package/dist/providers/TwindProvider.js +9 -1
  600. package/dist/providers/TwindProvider.js.map +1 -0
  601. package/dist/providers/auth/AuthFormProvider.cjs +46 -1
  602. package/dist/providers/auth/AuthFormProvider.cjs.map +1 -0
  603. package/dist/providers/auth/AuthFormProvider.js +46 -1
  604. package/dist/providers/auth/AuthFormProvider.js.map +1 -0
  605. package/dist/providers/auth/FarcasterProvider.cjs +8 -1
  606. package/dist/providers/auth/FarcasterProvider.cjs.map +1 -0
  607. package/dist/providers/auth/FarcasterProvider.js +8 -1
  608. package/dist/providers/auth/FarcasterProvider.js.map +1 -0
  609. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.cjs +44 -1
  610. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.cjs.map +1 -0
  611. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.js +44 -1
  612. package/dist/providers/auth/web3/DynamicWeb3WalletConnect.js.map +1 -0
  613. package/dist/providers/index.cjs +50 -1
  614. package/dist/providers/index.cjs.map +1 -0
  615. package/dist/providers/index.js +50 -1
  616. package/dist/providers/index.js.map +1 -0
  617. package/dist/providers/signers/CrossmintSignerProvider.cjs +48 -0
  618. package/dist/providers/signers/CrossmintSignerProvider.cjs.map +1 -0
  619. package/dist/providers/signers/CrossmintSignerProvider.d.cts +25 -0
  620. package/dist/providers/signers/CrossmintSignerProvider.d.ts +25 -0
  621. package/dist/providers/signers/CrossmintSignerProvider.js +48 -0
  622. package/dist/providers/signers/CrossmintSignerProvider.js.map +1 -0
  623. package/dist/testUtils.cjs +8 -1
  624. package/dist/testUtils.cjs.map +1 -0
  625. package/dist/testUtils.js +8 -1
  626. package/dist/testUtils.js.map +1 -0
  627. package/dist/twind.config.cjs +8 -1
  628. package/dist/twind.config.cjs.map +1 -0
  629. package/dist/twind.config.js +8 -1
  630. package/dist/twind.config.js.map +1 -0
  631. package/dist/types/auth.cjs +1 -1
  632. package/dist/types/auth.cjs.map +1 -0
  633. package/dist/types/auth.d.cts +1 -0
  634. package/dist/types/auth.d.ts +1 -0
  635. package/dist/types/auth.js +1 -0
  636. package/dist/types/auth.js.map +1 -0
  637. package/dist/types/passkey.cjs +1 -1
  638. package/dist/types/passkey.cjs.map +1 -0
  639. package/dist/types/passkey.js +1 -0
  640. package/dist/types/passkey.js.map +1 -0
  641. package/dist/types/wallet.cjs +1 -1
  642. package/dist/types/wallet.cjs.map +1 -0
  643. package/dist/types/wallet.js +1 -0
  644. package/dist/types/wallet.js.map +1 -0
  645. package/dist/utils/classNames.cjs +8 -1
  646. package/dist/utils/classNames.cjs.map +1 -0
  647. package/dist/utils/classNames.js +8 -1
  648. package/dist/utils/classNames.js.map +1 -0
  649. package/dist/utils/createCrossmintApiClient.cjs +9 -1
  650. package/dist/utils/createCrossmintApiClient.cjs.map +1 -0
  651. package/dist/utils/createCrossmintApiClient.js +9 -1
  652. package/dist/utils/createCrossmintApiClient.js.map +1 -0
  653. package/dist/utils/createPasskeySigner.cjs +8 -1
  654. package/dist/utils/createPasskeySigner.cjs.map +1 -0
  655. package/dist/utils/createPasskeySigner.js +8 -1
  656. package/dist/utils/createPasskeySigner.js.map +1 -0
  657. package/dist/utils/dynamic/dynamicChainToCrossmintChain.cjs +10 -1
  658. package/dist/utils/dynamic/dynamicChainToCrossmintChain.cjs.map +1 -0
  659. package/dist/utils/dynamic/dynamicChainToCrossmintChain.js +10 -1
  660. package/dist/utils/dynamic/dynamicChainToCrossmintChain.js.map +1 -0
  661. package/dist/utils/errorUtils.cjs +8 -0
  662. package/dist/utils/errorUtils.cjs.map +1 -0
  663. package/dist/utils/errorUtils.d.cts +6 -0
  664. package/dist/utils/errorUtils.d.ts +6 -0
  665. package/dist/utils/errorUtils.js +8 -0
  666. package/dist/utils/errorUtils.js.map +1 -0
  667. package/dist/utils/mapSignerToWalletType.cjs +8 -1
  668. package/dist/utils/mapSignerToWalletType.cjs.map +1 -0
  669. package/dist/utils/mapSignerToWalletType.js +8 -1
  670. package/dist/utils/mapSignerToWalletType.js.map +1 -0
  671. package/package.json +68 -70
  672. package/dist/chunk-2BOQSASO.cjs +0 -1
  673. package/dist/chunk-2POV64LQ.js +0 -1
  674. package/dist/chunk-2PVYNZP7.cjs +0 -1
  675. package/dist/chunk-2TF5QOM6.cjs +0 -1
  676. package/dist/chunk-2VBA64WU.js +0 -1
  677. package/dist/chunk-2VQLMU5A.cjs +0 -1
  678. package/dist/chunk-2WSEHVNP.cjs +0 -1
  679. package/dist/chunk-2ZIM34DD.js +0 -1
  680. package/dist/chunk-3BUVHV54.js +0 -0
  681. package/dist/chunk-3EQVCVCE.cjs +0 -1
  682. package/dist/chunk-3WVCUHA6.js +0 -6
  683. package/dist/chunk-4IHRWQWT.js +0 -1
  684. package/dist/chunk-4KDASQO6.js +0 -1
  685. package/dist/chunk-4M3AILL5.js +0 -1
  686. package/dist/chunk-56YL3XJW.cjs +0 -1
  687. package/dist/chunk-5IFQJPBE.cjs +0 -1
  688. package/dist/chunk-5X3MPD2V.js +0 -1
  689. package/dist/chunk-72MMCJ2E.js +0 -0
  690. package/dist/chunk-72P3JMXX.js +0 -1
  691. package/dist/chunk-77PBG2JJ.js +0 -1
  692. package/dist/chunk-77QJFA6J.js +0 -1
  693. package/dist/chunk-AHD64NAJ.cjs +0 -1
  694. package/dist/chunk-BFHQZOV3.js +0 -1
  695. package/dist/chunk-BOEX3ELO.cjs +0 -1
  696. package/dist/chunk-BR77Q3PK.cjs +0 -1
  697. package/dist/chunk-C3JRTLQP.js +0 -1
  698. package/dist/chunk-DB7QSYKD.cjs +0 -1
  699. package/dist/chunk-DGZQUCSD.js +0 -1
  700. package/dist/chunk-DQD3L5EO.cjs +0 -1
  701. package/dist/chunk-DWUPCQVR.js +0 -1
  702. package/dist/chunk-E4TBJMOO.js +0 -1
  703. package/dist/chunk-E65EGG73.cjs +0 -1
  704. package/dist/chunk-EA7H4AXL.js +0 -1
  705. package/dist/chunk-EMXNIC4M.js +0 -1
  706. package/dist/chunk-EUXGP4IN.cjs +0 -1
  707. package/dist/chunk-F5VRTLLU.cjs +0 -1
  708. package/dist/chunk-FASRTACD.cjs +0 -1
  709. package/dist/chunk-FQ246XXN.cjs +0 -1
  710. package/dist/chunk-FTE5SMK4.cjs +0 -1
  711. package/dist/chunk-GARYGAY7.cjs +0 -1
  712. package/dist/chunk-GPQZG7HC.cjs +0 -1
  713. package/dist/chunk-H34D6PAN.js +0 -1
  714. package/dist/chunk-HG5ML6KX.cjs +0 -1
  715. package/dist/chunk-HLGNSXEQ.cjs +0 -1
  716. package/dist/chunk-HVZ5M3FY.js +0 -1
  717. package/dist/chunk-I4GMMHQR.cjs +0 -1
  718. package/dist/chunk-IAJBYU5C.js +0 -1
  719. package/dist/chunk-IHVBGZGV.cjs +0 -1
  720. package/dist/chunk-IMV35JZB.cjs +0 -1
  721. package/dist/chunk-J3X3J537.cjs +0 -1
  722. package/dist/chunk-J6YZ5NIK.cjs +0 -1
  723. package/dist/chunk-JGM3G5E2.js +0 -1
  724. package/dist/chunk-JMTTGUQL.js +0 -1
  725. package/dist/chunk-JNLQRLIC.cjs +0 -1
  726. package/dist/chunk-JPJKOERH.js +0 -1
  727. package/dist/chunk-JSNUJJQJ.js +0 -1
  728. package/dist/chunk-KFL42A3A.js +0 -1
  729. package/dist/chunk-KI4HRYHD.cjs +0 -1
  730. package/dist/chunk-KK4UFBKJ.js +0 -1
  731. package/dist/chunk-L6UXIP23.cjs +0 -6
  732. package/dist/chunk-L7JAEZCV.cjs +0 -1
  733. package/dist/chunk-LD3MRJ3F.js +0 -1
  734. package/dist/chunk-LGI44G6N.js +0 -1
  735. package/dist/chunk-N65GIM5A.js +0 -1
  736. package/dist/chunk-NB7AJIPT.js +0 -0
  737. package/dist/chunk-NBJIJZGO.js +0 -1
  738. package/dist/chunk-NFLGT52C.cjs +0 -1
  739. package/dist/chunk-NRN4WNQL.cjs +0 -1
  740. package/dist/chunk-NZQIZ4ZY.cjs +0 -1
  741. package/dist/chunk-O5J2ZIJ6.cjs +0 -1
  742. package/dist/chunk-OOLXYAO7.js +0 -1
  743. package/dist/chunk-OOUVDURG.js +0 -1
  744. package/dist/chunk-PXDN3KFO.js +0 -1
  745. package/dist/chunk-PXDZIFSL.js +0 -1
  746. package/dist/chunk-PZ3KXKJD.cjs +0 -1
  747. package/dist/chunk-PZUWRGVP.cjs +0 -1
  748. package/dist/chunk-QASKWI5Y.js +0 -1
  749. package/dist/chunk-QLPV72AE.cjs +0 -1
  750. package/dist/chunk-QVXTNSBH.js +0 -1
  751. package/dist/chunk-QYQERFYL.cjs +0 -1
  752. package/dist/chunk-ROJ6HFVK.js +0 -1
  753. package/dist/chunk-RYQRCUKB.js +0 -1
  754. package/dist/chunk-RZG2PAKA.js +0 -1
  755. package/dist/chunk-S73E6EBO.cjs +0 -1
  756. package/dist/chunk-SFDQPSSP.js +0 -1
  757. package/dist/chunk-SRQAQHYK.cjs +0 -1
  758. package/dist/chunk-TM7WDKYR.cjs +0 -1
  759. package/dist/chunk-TNCETEEL.js +0 -1
  760. package/dist/chunk-TWX7ZBKZ.cjs +0 -1
  761. package/dist/chunk-TXOVDTYK.cjs +0 -1
  762. package/dist/chunk-UAFW3OWA.js +0 -1
  763. package/dist/chunk-UDQUVZUQ.js +0 -1
  764. package/dist/chunk-UILJI3DM.js +0 -1
  765. package/dist/chunk-UT5FQX57.js +0 -1
  766. package/dist/chunk-VB5DXNMG.js +0 -1
  767. package/dist/chunk-VHNBXIOC.js +0 -1
  768. package/dist/chunk-VI6TW7JT.cjs +0 -1
  769. package/dist/chunk-VICDJGDE.cjs +0 -1
  770. package/dist/chunk-VLDE23JX.js +0 -1
  771. package/dist/chunk-VWL76U5G.js +0 -1
  772. package/dist/chunk-W4UPIFFS.cjs +0 -1
  773. package/dist/chunk-WABJHG6B.cjs +0 -1
  774. package/dist/chunk-WHFUW3W3.js +0 -0
  775. package/dist/chunk-WHRHGJWN.cjs +0 -1
  776. package/dist/chunk-WMBBIP2C.cjs +0 -1
  777. package/dist/chunk-WNZVU2GK.cjs +0 -1
  778. package/dist/chunk-WVR62VBG.js +0 -1
  779. package/dist/chunk-WW6GUXHG.js +0 -1
  780. package/dist/chunk-X5BBXO27.cjs +0 -1
  781. package/dist/chunk-XUT4N66R.cjs +0 -1
  782. package/dist/chunk-YXF74MVI.cjs +0 -1
  783. package/dist/chunk-Z2FGFHRQ.cjs +0 -1
  784. package/dist/chunk-ZBQCXWMD.cjs +0 -1
  785. package/dist/chunk-ZZYJ6XM2.js +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/providers/signers/CrossmintSignerProvider.tsx","../src/hooks/useWallet.ts","../src/providers/CrossmintWalletProvider.tsx","../src/hooks/useAuth.ts","../src/providers/CrossmintAuthProvider.tsx","../src/components/auth/AuthFormDialog.tsx","../src/providers/auth/AuthFormProvider.tsx","../src/hooks/useCrossmintAuth.ts","../src/components/auth/AuthForm.tsx","../src/components/auth/methods/email/EmailAuthFlow.tsx","../src/components/auth/methods/email/EmailOTPInput.tsx","../src/components/auth/AuthFormBackButton.tsx","../src/components/auth/methods/email/EmailSignIn.tsx","../src/hooks/useOAuthWindowListener.ts","../src/components/auth/methods/google/ContinueWithGoogle.tsx","../src/components/common/Divider.tsx","../src/components/auth/methods/google/GoogleSignIn.tsx","../src/components/auth/methods/farcaster/FarcasterSignIn.tsx","../src/components/auth/methods/twitter/TwitterSignIn.tsx","../src/components/auth/methods/web3/Web3AuthFlowButton.tsx","../src/components/auth/methods/web3/Web3Connectors.tsx","../src/components/auth/methods/web3/Web3AuthFlow.tsx","../src/providers/auth/web3/DynamicWeb3WalletConnect.tsx"],"names":["createContext","useContext","useRef","useState","useEffect","useMemo","CrossmintWallets","base58","useCallback","jsx","oauthUrlMap","error","Color","jsxs","_a","_b","_e","Fragment","defaultEmail","user"],"mappings":"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","sourcesContent":["import {\n createContext,\n useContext,\n type ReactNode,\n useRef,\n useState,\n useEffect,\n useMemo,\n type Dispatch,\n type SetStateAction,\n} from \"react\";\nimport { CrossmintWallets } from \"@crossmint/wallets-sdk\";\nimport type { ValidWalletState } from \"@crossmint/client-sdk-react-base\";\nimport { PublicKey, type VersionedTransaction } from \"@solana/web3.js\";\nimport base58 from \"bs58\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { useCrossmint } from \"@/hooks\";\nimport { deriveWalletErrorState } from \"@/utils/errorUtils\";\nimport { EmailSignersDialog } from \"@/components/signers/EmailSignersDialog\";\nimport { useSignerIFrameWindow } from \"@/hooks/useSignerInvisibleIFrame\";\n\nconst DEFAULT_EVENT_OPTIONS = {\n timeoutMs: 10_000,\n intervalMs: 5_000,\n};\n\ninterface CrossmintSignerProviderProps {\n children: ReactNode;\n walletState: ValidWalletState;\n appearance?: UIConfig;\n setWalletState: Dispatch<SetStateAction<ValidWalletState>>;\n}\n\ntype CrossmintSignerContext = {\n experimental_getOrCreateWalletWithRecoveryKey: (args: { type: \"solana\"; email?: string }) => Promise<void>;\n};\n\nexport const CrossmintSignerContext = createContext<CrossmintSignerContext | null>(null);\n\nexport function CrossmintSignerProvider({ children, setWalletState, appearance }: CrossmintSignerProviderProps) {\n const {\n crossmint: { apiKey, jwt },\n } = useCrossmint();\n const smartWalletSDK = useMemo(() => CrossmintWallets.from({ apiKey, jwt }), [apiKey, jwt]);\n\n const [step, setStep] = useState<\"initial\" | \"otp\">(\"initial\");\n const [dialogOpen, setDialogOpen] = useState(false);\n const iframeWindow = useSignerIFrameWindow();\n const successHandlerRef = useRef<(() => void) | null>(null);\n const errorHandlerRef = useRef<((error: Error) => void) | null>(null);\n\n const experimental_getOrCreateWalletWithRecoveryKey = async (args: { type: \"solana\"; email?: string }) => {\n if (args.type !== \"solana\") {\n throw new Error(\"Unsupported wallet type, only solana is supported at the moment\");\n }\n if (!iframeWindow.current) {\n throw new Error(\"IFrame window not initialized\");\n }\n\n try {\n setWalletState({ status: \"in-progress\" });\n\n // First check if the signer already exists\n const signerResponse = await iframeWindow.current?.sendAction({\n event: \"request:get-public-key\",\n responseEvent: \"response:get-public-key\",\n data: {\n authData: {\n jwt: jwt!,\n apiKey,\n },\n data: {\n chainLayer: \"solana\",\n },\n },\n });\n\n if (signerResponse.status === \"success\") {\n // Return the existing wallet\n await getOrCreateSolanaWalletWithSigner(signerResponse.publicKey);\n return;\n }\n\n if (args.email != null) {\n // Submit the email and move straight to OTP step\n await handleEmailSubmit(args.email);\n return;\n }\n\n // OTHERWISE, we need to create a new signer\n // Create a promise that resolves when the flow is complete\n return new Promise<void>((resolve, reject) => {\n setDialogOpen(true);\n setStep(\"initial\");\n\n const cleanup = () => {\n setDialogOpen(false);\n setStep(\"initial\");\n };\n\n const successHandler = () => {\n cleanup();\n resolve();\n };\n\n const errorHandler = (error: Error) => {\n cleanup();\n reject(error);\n };\n\n successHandlerRef.current = successHandler;\n errorHandlerRef.current = errorHandler;\n });\n } catch (error) {\n console.error(\"There was an error creating a wallet \", error);\n setWalletState(deriveWalletErrorState(error));\n throw error;\n }\n };\n\n const handleOnGetOrCreateRecoveryKey = async (email: string) => {\n try {\n if (!iframeWindow.current) {\n throw new Error(\"IFrame window not initialized\");\n }\n\n if (jwt == null) {\n throw new Error(\"JWT not set\");\n }\n\n console.log(\"Creating Recovery Key\");\n const res = await iframeWindow.current?.sendAction({\n event: \"request:create-signer\",\n responseEvent: \"response:create-signer\",\n data: {\n authData: {\n jwt,\n apiKey,\n },\n data: {\n chainLayer: \"solana\",\n authId: `email:${email}`,\n },\n },\n });\n\n if (res.status === \"error\") {\n throw new Error(res.error);\n }\n\n // If the signer already exists, proceed directly to wallet creation\n if (res.status === \"success\" && res.address != null) {\n await getOrCreateSolanaWalletWithSigner(res.address);\n setStep(\"initial\");\n setDialogOpen(false);\n }\n } catch (err) {\n console.error(\"There was an error creating a recovery key \", err);\n throw err;\n }\n };\n\n const handleEmailSubmit = async (email: string) => {\n try {\n await handleOnGetOrCreateRecoveryKey(email);\n setStep(\"otp\");\n setDialogOpen(true);\n } catch (error) {\n console.error(\"Error in email submission:\", error);\n errorHandlerRef.current?.(error as Error);\n throw error;\n }\n };\n\n const handleOTPSubmit = async (token: string) => {\n if (!iframeWindow.current) {\n throw new Error(\"IFrame window not initialized\");\n }\n if (jwt == null) {\n throw new Error(\"JWT not set\");\n }\n try {\n const res = await iframeWindow.current.sendAction({\n event: \"request:send-otp\",\n responseEvent: \"response:send-otp\",\n data: {\n authData: {\n jwt,\n apiKey,\n },\n data: {\n encryptedOtp: token,\n chainLayer: \"solana\",\n },\n },\n });\n\n if (res.status === \"error\") {\n throw new Error(res.error);\n }\n\n await getOrCreateSolanaWalletWithSigner(res.address);\n setStep(\"initial\");\n setDialogOpen(false);\n\n // Resolve the promise when the flow is complete\n successHandlerRef.current?.();\n } catch (error) {\n console.error(\"Error in OTP submission:\", error);\n errorHandlerRef.current?.(error as Error);\n throw error;\n }\n };\n\n async function getOrCreateSolanaWalletWithSigner(publicSignerAddress: string) {\n if (jwt == null) {\n throw new Error(\"[getOrCreateSolanaWalletWithSigner] JWT not set!\");\n }\n\n try {\n const wallet = await smartWalletSDK.getOrCreateWallet(\"solana-smart-wallet\", {\n adminSigner: {\n type: \"solana-keypair\",\n address: publicSignerAddress,\n signer: {\n signMessage: async (message: Uint8Array) => {\n if (iframeWindow.current == null) {\n throw new Error(\"IFrame window not initialized\");\n }\n\n const res = await iframeWindow.current.sendAction({\n event: \"request:sign-message\",\n responseEvent: \"response:sign-message\",\n data: {\n authData: {\n jwt,\n apiKey,\n },\n data: {\n message: base58.encode(message),\n chainLayer: \"solana\",\n encoding: \"base58\",\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n if (res.status === \"error\") {\n throw new Error(res.error);\n }\n if (res.signature == null) {\n throw new Error(\"Failed to sign message\");\n }\n return base58.decode(res.signature);\n },\n signTransaction: async (transaction: VersionedTransaction) => {\n console.log(\"Signing transaction...\", transaction);\n const res = await iframeWindow.current?.sendAction({\n event: \"request:sign-transaction\",\n responseEvent: \"response:sign-transaction\",\n data: {\n authData: {\n jwt,\n apiKey,\n },\n data: {\n transaction: base58.encode(transaction.serialize()),\n chainLayer: \"solana\",\n encoding: \"base58\",\n },\n },\n options: DEFAULT_EVENT_OPTIONS,\n });\n\n if (res?.status === \"error\") {\n throw new Error(res.error);\n }\n if (res?.signature == null) {\n throw new Error(\"Failed to sign transaction\");\n }\n transaction.addSignature(new PublicKey(publicSignerAddress), base58.decode(res.signature));\n return transaction;\n },\n },\n },\n });\n setWalletState({ status: \"loaded\", wallet, type: \"solana-smart-wallet\" });\n } catch (error) {\n console.error(\"Error creating wallet with signer:\", error);\n setWalletState(deriveWalletErrorState(error));\n throw error;\n }\n }\n\n useEffect(() => {\n document.body.style.overflow = dialogOpen ? \"hidden\" : \"\";\n }, [dialogOpen]);\n\n return (\n <CrossmintSignerContext.Provider value={{ experimental_getOrCreateWalletWithRecoveryKey }}>\n <EmailSignersDialog\n open={dialogOpen}\n setOpen={setDialogOpen}\n step={step}\n setStep={setStep}\n onSubmitOTP={handleOTPSubmit}\n onResendOTPCode={async (email: string) => {\n await handleOnGetOrCreateRecoveryKey(email);\n setStep(\"otp\");\n }}\n onSubmitEmail={handleEmailSubmit}\n appearance={appearance}\n />\n {children}\n </CrossmintSignerContext.Provider>\n );\n}\n\nexport function useCrossmintSigner({ enabled = true }: { enabled?: boolean } = {}) {\n const context = useContext(CrossmintSignerContext);\n if (!enabled) {\n return {\n experimental_getOrCreateWalletWithRecoveryKey: async () => {\n await Promise.reject(\n new Error(\"useCrossmintSigner is disabled, please set 'experimental_enableRecoveryKeys' to true\")\n );\n },\n };\n }\n if (context === null) {\n throw new Error(\"useCrossmintSigner must be used within a CrossmintSignerProvider\");\n }\n return context;\n}\n","import { useContext } from \"react\";\n\nimport { WalletContext } from \"../providers/CrossmintWalletProvider\";\n\nexport function useWallet() {\n const walletContext = useContext(WalletContext);\n\n if (!walletContext) {\n throw new Error(\"useWallet must be used within CrossmintAuthProvider or CrossmintWalletProvider\");\n }\n\n return walletContext;\n}\n","import { type Dispatch, type ReactNode, type SetStateAction, createContext, useMemo, useState } from \"react\";\nimport { createPortal } from \"react-dom\";\nimport { CrossmintWallets, type EVMSmartWallet, type SolanaSmartWallet } from \"@crossmint/wallets-sdk\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\n\nimport { PasskeyPrompt } from \"@/components/auth/PasskeyPrompt\";\nimport type { PasskeySigner } from \"@/types/passkey\";\nimport { useCrossmint } from \"../hooks\";\nimport type { GetOrCreateWalletProps } from \"@/types/wallet\";\nimport { createWebAuthnPasskeySigner } from \"@/utils/createPasskeySigner\";\nimport { CrossmintSignerProvider, useCrossmintSigner } from \"./signers/CrossmintSignerProvider\";\nimport { TwindProvider } from \"./TwindProvider\";\nimport { deriveWalletErrorState } from \"@/utils/errorUtils\";\n\ntype ValidPasskeyPromptType =\n | \"create-wallet\"\n | \"transaction\"\n | \"not-supported\"\n | \"create-wallet-error\"\n | \"transaction-error\";\ntype PasskeyPromptState =\n | {\n type: ValidPasskeyPromptType;\n open: true;\n primaryActionOnClick: () => void;\n secondaryActionOnClick?: () => void;\n }\n | { open: false };\n\ntype ValidWalletState =\n | { status: \"not-loaded\" | \"in-progress\" }\n | { status: \"loaded\"; wallet: EVMSmartWallet; type: \"evm-smart-wallet\" }\n | { status: \"loaded\"; wallet: SolanaSmartWallet; type: \"solana-smart-wallet\" }\n | { status: \"loading-error\"; error: string };\n\ntype WalletContextFunctions = {\n getOrCreateWallet: (args: GetOrCreateWalletProps) => Promise<{ startedCreation: boolean; reason?: string }>;\n createPasskeySigner: (name: string, promptType?: ValidPasskeyPromptType) => Promise<PasskeySigner | null>;\n clearWallet: () => void;\n experimental_getOrCreateWalletWithRecoveryKey?: (args: { type: \"solana\"; email?: string }) => Promise<void>;\n passkeySigner?: PasskeySigner;\n};\n\ntype WalletType = {\n \"evm-smart-wallet\": EVMSmartWallet;\n \"solana-smart-wallet\": SolanaSmartWallet;\n};\n\ntype LoadedWalletState<T extends keyof WalletType> = {\n status: \"loaded\";\n wallet: WalletType[T];\n type: T;\n error?: undefined;\n};\n\ntype WalletContext =\n | ({\n status: \"not-loaded\" | \"in-progress\";\n wallet?: undefined;\n type?: undefined;\n error?: undefined;\n } & WalletContextFunctions)\n | ({\n status: \"loading-error\";\n wallet?: undefined;\n type?: undefined;\n error: string;\n } & WalletContextFunctions)\n | (LoadedWalletState<\"evm-smart-wallet\"> & WalletContextFunctions)\n | (LoadedWalletState<\"solana-smart-wallet\"> & WalletContextFunctions);\n\nexport const WalletContext = createContext<WalletContext>({\n status: \"not-loaded\",\n getOrCreateWallet: () => Promise.resolve({ startedCreation: false }),\n createPasskeySigner: () => Promise.resolve(null),\n clearWallet: () => {},\n});\n\nexport function CrossmintWalletProvider({\n children,\n showPasskeyHelpers = true,\n appearance,\n experimental_enableRecoveryKeys = false,\n}: {\n children: ReactNode;\n showPasskeyHelpers?: boolean;\n appearance?: UIConfig;\n experimental_enableRecoveryKeys?: boolean;\n}) {\n const [walletState, setWalletState] = useState<ValidWalletState>({\n status: \"not-loaded\",\n });\n\n const walletProviderProps = {\n walletState,\n setWalletState,\n showPasskeyHelpers,\n appearance,\n experimental_enableRecoveryKeys,\n };\n\n return experimental_enableRecoveryKeys ? (\n <TwindProvider>\n <CrossmintSignerProvider walletState={walletState} setWalletState={setWalletState} appearance={appearance}>\n <WalletProvider {...walletProviderProps}>{children}</WalletProvider>\n </CrossmintSignerProvider>\n </TwindProvider>\n ) : (\n <WalletProvider {...walletProviderProps}>{children}</WalletProvider>\n );\n}\n\nfunction WalletProvider({\n children,\n showPasskeyHelpers = true,\n appearance,\n walletState,\n setWalletState,\n experimental_enableRecoveryKeys,\n}: {\n children: ReactNode;\n showPasskeyHelpers?: boolean;\n appearance?: UIConfig;\n walletState: ValidWalletState;\n setWalletState: Dispatch<SetStateAction<ValidWalletState>>;\n experimental_enableRecoveryKeys?: boolean;\n}) {\n const { crossmint } = useCrossmint(\"CrossmintWalletProvider must be used within CrossmintProvider\");\n const { experimental_getOrCreateWalletWithRecoveryKey } = useCrossmintSigner({\n enabled: experimental_enableRecoveryKeys ?? false,\n });\n\n const smartWalletSDK = useMemo(\n () => CrossmintWallets.from({ apiKey: crossmint.apiKey, jwt: crossmint?.jwt }),\n [crossmint.apiKey, crossmint.jwt]\n );\n\n const [passkeyPromptState, setPasskeyPromptState] = useState<PasskeyPromptState>({ open: false });\n\n const getOrCreateWallet = async (props: GetOrCreateWalletProps) => {\n if (walletState.status == \"in-progress\") {\n return {\n startedCreation: false,\n reason: \"Wallet is already loading.\",\n };\n }\n\n if (crossmint.jwt == null) {\n return {\n startedCreation: false,\n reason: `Jwt not set in \"CrossmintProvider\".`,\n };\n }\n\n try {\n setWalletState({ status: \"in-progress\" });\n const passkeyPromptCallbacks = {\n onWalletCreationStart: createPasskeyPrompt(\"create-wallet\"),\n onWalletCreationFail: createPasskeyPrompt(\"create-wallet-error\"),\n onTransactionStart: createPasskeyPrompt(\"transaction\"),\n onTransactionFail: createPasskeyPrompt(\"transaction-error\"),\n };\n\n switch (props.type) {\n case \"evm-smart-wallet\": {\n const walletArgs = {\n adminSigner: props.args.adminSigner ?? { type: \"evm-passkey\" },\n linkedUser: props.args.linkedUser,\n };\n const wallet = await smartWalletSDK.getOrCreateWallet(\"evm-smart-wallet\", walletArgs, {\n experimental_callbacks:\n walletArgs.adminSigner?.type === \"evm-passkey\" ? passkeyPromptCallbacks : undefined,\n });\n setWalletState({ status: \"loaded\", wallet, type: \"evm-smart-wallet\" });\n break;\n }\n case \"solana-smart-wallet\": {\n const wallet = await smartWalletSDK.getOrCreateWallet(\"solana-smart-wallet\", props.args);\n setWalletState({ status: \"loaded\", wallet, type: \"solana-smart-wallet\" });\n break;\n }\n }\n } catch (error: unknown) {\n console.error(\"There was an error creating a wallet \", error);\n setWalletState(deriveWalletErrorState(error));\n }\n return { startedCreation: true };\n };\n\n const createPasskeyPrompt = (type: ValidPasskeyPromptType) => () =>\n new Promise<void>((resolve) => {\n if (!showPasskeyHelpers) {\n resolve();\n return;\n }\n setPasskeyPromptState({\n type,\n open: true,\n primaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n secondaryActionOnClick: () => {\n setPasskeyPromptState({ open: false });\n resolve();\n },\n });\n });\n\n const clearWallet = () => {\n setWalletState({ status: \"not-loaded\" });\n };\n\n const createPasskeySigner = async (name: string, promptType?: ValidPasskeyPromptType) => {\n if (promptType != null) {\n await createPasskeyPrompt(promptType)();\n }\n return await createWebAuthnPasskeySigner(name);\n };\n\n const contextValue = useMemo(\n () => ({\n ...walletState,\n getOrCreateWallet,\n createPasskeySigner,\n clearWallet,\n experimental_getOrCreateWalletWithRecoveryKey,\n }),\n [walletState, experimental_getOrCreateWalletWithRecoveryKey]\n );\n\n return (\n <WalletContext.Provider value={contextValue}>\n {children}\n {passkeyPromptState.open\n ? createPortal(<PasskeyPrompt state={passkeyPromptState} appearance={appearance} />, document.body)\n : null}\n </WalletContext.Provider>\n );\n}\n","import { useContext } from \"react\";\n\nimport { AuthContext } from \"../providers\";\n\nexport function useAuth() {\n const context = useContext(AuthContext);\n if (context === undefined) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return context;\n}\n","import {\n type ReactNode,\n type MouseEvent,\n createContext,\n useEffect,\n useMemo,\n useRef,\n useState,\n useCallback,\n} from \"react\";\nimport { CrossmintAuth, getCookie } from \"@crossmint/client-sdk-auth\";\nimport { type UIConfig, validateApiKeyAndGetCrossmintBaseUrl } from \"@crossmint/common-sdk-base\";\nimport { type AuthMaterialWithUser, SESSION_PREFIX, type SDKExternalUser } from \"@crossmint/common-sdk-auth\";\n\nimport AuthFormDialog from \"../components/auth/AuthFormDialog\";\nimport { useCrossmint, useWallet } from \"../hooks\";\nimport { CrossmintWalletProvider } from \"./CrossmintWalletProvider\";\nimport { AuthFormProvider } from \"./auth/AuthFormProvider\";\nimport { TwindProvider } from \"./TwindProvider\";\nimport type { AuthStatus, CrossmintAuthProviderEmbeddedWallets, LoginMethod } from \"@/types/auth\";\nimport type { GetOrCreateWalletAdminSigner, GetOrCreateWalletProps } from \"@/types/wallet\";\nimport { DynamicWeb3WalletConnect } from \"./auth/web3/DynamicWeb3WalletConnect\";\nimport { mapSignerToWalletType } from \"@/utils/mapSignerToWalletType\";\nimport { useDynamicConnect } from \"@/hooks/useDynamicConnect\";\n\ntype CrossmintAuthProviderProps = {\n embeddedWallets?: CrossmintAuthProviderEmbeddedWallets;\n appearance?: UIConfig;\n termsOfServiceText?: string | ReactNode;\n prefetchOAuthUrls?: boolean;\n onLoginSuccess?: () => void;\n authModalTitle?: string;\n children: ReactNode;\n loginMethods?: LoginMethod[];\n refreshRoute?: string;\n logoutRoute?: string;\n};\n\ntype AuthContextType = {\n crossmintAuth?: CrossmintAuth;\n login: (defaultEmail?: string | MouseEvent) => void;\n logout: () => void;\n jwt?: string;\n user?: SDKExternalUser;\n status: AuthStatus;\n getUser: () => void;\n};\n\nconst defaultContextValue: AuthContextType = {\n crossmintAuth: undefined,\n login: () => {},\n logout: () => {},\n jwt: undefined,\n user: undefined,\n status: \"initializing\",\n getUser: () => {},\n};\n\nexport const AuthContext = createContext<AuthContextType>(defaultContextValue);\n\nconst defaultEmbeddedWallets: CrossmintAuthProviderEmbeddedWallets = {\n createOnLogin: \"off\",\n type: \"evm-smart-wallet\",\n experimental_enableRecoveryKeys: false,\n};\n\nexport function CrossmintAuthProvider({\n embeddedWallets = defaultEmbeddedWallets,\n children,\n appearance,\n termsOfServiceText,\n prefetchOAuthUrls = true,\n authModalTitle,\n onLoginSuccess,\n loginMethods = [\"email\", \"google\"],\n refreshRoute,\n logoutRoute,\n}: CrossmintAuthProviderProps) {\n const [user, setUser] = useState<SDKExternalUser | undefined>(undefined);\n const { crossmint, setJwt } = useCrossmint(\"CrossmintAuthProvider must be used within CrossmintProvider\");\n // Only create the CrossmintAuth instance once, even in StrictMode, as the constructor calls /refresh\n // It can only be called once to avoid race conditions\n const crossmintAuthRef = useRef<CrossmintAuth | null>(null);\n // biome-ignore lint/correctness/useExhaustiveDependencies: crossmint can't be a dependency because it updates with each jwt change\n const crossmintAuth = useMemo(() => {\n if (!crossmintAuthRef.current) {\n crossmintAuthRef.current = CrossmintAuth.from(crossmint, {\n callbacks: {\n onLogout: () => {\n setJwt(undefined);\n setUser(undefined);\n },\n onTokenRefresh: (authMaterial: AuthMaterialWithUser) => {\n setJwt(authMaterial.jwt);\n setUser(authMaterial.user);\n },\n },\n refreshRoute,\n logoutRoute,\n });\n }\n return crossmintAuthRef.current;\n }, []);\n\n const crossmintBaseUrl = validateApiKeyAndGetCrossmintBaseUrl(crossmint.apiKey);\n const [dialogOpen, setDialogOpen] = useState(false);\n const [initialized, setInitialized] = useState(false);\n const [defaultEmail, setDefaultEmail] = useState<string | undefined>(undefined);\n // Web3 auth related state\n const [isDynamicSdkLoaded, setIsDynamicSdkLoaded] = useState(false);\n const isWeb3Enabled = loginMethods.some((method) => method.startsWith(\"web3\"));\n\n const triggerHasJustLoggedIn = useCallback(() => {\n onLoginSuccess?.();\n }, [onLoginSuccess]);\n\n // Initialize auth state\n useEffect(() => {\n if (crossmint.jwt == null) {\n const jwt = getCookie(SESSION_PREFIX);\n setJwt(jwt);\n }\n setInitialized(true);\n }, [crossmint.jwt, setJwt]);\n\n // Close dialog on successful login\n useEffect(() => {\n if (crossmint.jwt != null && dialogOpen) {\n setDialogOpen(false);\n triggerHasJustLoggedIn();\n }\n }, [crossmint.jwt, dialogOpen, triggerHasJustLoggedIn]);\n\n const login = useCallback(\n (defaultEmail?: string | MouseEvent) => {\n if (crossmint.jwt != null) {\n console.log(\"User already logged in\");\n return;\n }\n\n // Only set defaultEmail when explicitly passed as a string, ignoring MouseEvent from onClick handlers\n // PREVENTS BREAKING CHANGE!\n if (defaultEmail != null && typeof defaultEmail === \"string\") {\n setDefaultEmail(defaultEmail);\n }\n setDialogOpen(true);\n },\n [crossmint.jwt]\n );\n\n const logout = useCallback(() => {\n crossmintAuth.logout();\n }, [crossmintAuth]);\n\n const getAuthStatus = useCallback((): AuthStatus => {\n if (!initialized) {\n return \"initializing\";\n }\n // For web3-enabled auth, we need to wait for the Dynamic SDK to load\n if (isWeb3Enabled && !isDynamicSdkLoaded) {\n return \"initializing\";\n }\n if (crossmint.jwt != null) {\n return \"logged-in\";\n }\n if (dialogOpen) {\n return \"in-progress\";\n }\n return \"logged-out\";\n }, [initialized, crossmint.jwt, dialogOpen, isDynamicSdkLoaded, isWeb3Enabled]);\n\n const getUser = useCallback(async () => {\n if (crossmint.jwt == null) {\n console.log(\"User not logged in\");\n return;\n }\n\n const user = await crossmintAuth.getUser();\n setUser(user);\n }, [crossmint.jwt, crossmintAuth]);\n\n const authContextValue = useMemo(\n () => ({\n crossmintAuth,\n login,\n logout,\n jwt: crossmint.jwt,\n user,\n status: getAuthStatus(),\n getUser,\n }),\n [crossmintAuth, login, logout, crossmint.jwt, user, getAuthStatus, getUser]\n );\n\n return (\n <TwindProvider>\n <AuthContext.Provider value={authContextValue}>\n <CrossmintWalletProvider\n key={crossmint.jwt}\n showPasskeyHelpers={embeddedWallets.showPasskeyHelpers}\n appearance={appearance}\n experimental_enableRecoveryKeys={embeddedWallets.experimental_enableRecoveryKeys ?? false}\n >\n <AuthFormProvider\n setDialogOpen={(open, successfulLogin) => {\n setDialogOpen(open);\n if (successfulLogin) {\n // This will be triggered from the OTP form\n triggerHasJustLoggedIn();\n }\n }}\n preFetchOAuthUrls={getAuthStatus() === \"logged-out\" && prefetchOAuthUrls}\n initialState={{\n appearance,\n loginMethods,\n termsOfServiceText,\n authModalTitle,\n embeddedWallets,\n baseUrl: crossmintBaseUrl,\n defaultEmail,\n }}\n >\n <DynamicWeb3WalletConnect\n enabled={isWeb3Enabled}\n apiKeyEnvironment={crossmint.apiKey.includes(\"production\") ? \"production\" : \"staging\"}\n >\n <WalletManager\n embeddedWallets={embeddedWallets}\n accessToken={crossmint.jwt}\n setIsDynamicSdkLoaded={setIsDynamicSdkLoaded}\n isWeb3Enabled={isWeb3Enabled}\n />\n\n {children}\n <AuthFormDialog open={dialogOpen} />\n </DynamicWeb3WalletConnect>\n </AuthFormProvider>\n </CrossmintWalletProvider>\n </AuthContext.Provider>\n </TwindProvider>\n );\n}\n\nfunction WalletManager({\n embeddedWallets,\n accessToken,\n setIsDynamicSdkLoaded,\n isWeb3Enabled,\n}: {\n embeddedWallets: CrossmintAuthProviderEmbeddedWallets;\n accessToken: string | undefined;\n setIsDynamicSdkLoaded: (sdkHasLoaded: boolean) => void;\n isWeb3Enabled: boolean;\n}) {\n const { getOrCreateWallet, clearWallet, status: walletStatus } = useWallet();\n const { sdkHasLoaded, getAdminSigner, cleanup, isDynamicWalletConnected } = useDynamicConnect(\n isWeb3Enabled,\n setIsDynamicSdkLoaded,\n accessToken\n );\n const { createOnLogin, adminSigner: defaultAdminSigner, linkedUser } = embeddedWallets;\n const canGetOrCreateWallet =\n createOnLogin === \"all-users\" && walletStatus === \"not-loaded\" && accessToken != null && sdkHasLoaded;\n\n const handleWalletCreation = useCallback(async () => {\n if (!canGetOrCreateWallet) {\n return;\n }\n\n let adminSigner: GetOrCreateWalletAdminSigner = defaultAdminSigner;\n let walletType = embeddedWallets.type;\n\n if (isDynamicWalletConnected) {\n adminSigner = (await getAdminSigner()) ?? adminSigner;\n walletType = mapSignerToWalletType(adminSigner?.type) ?? walletType;\n }\n\n // If an external wallet is not connected, the type is required\n if (!isDynamicWalletConnected && embeddedWallets.type == null) {\n console.error(\n \"[CrossmintAuthProvider] ⚠️ embeddedWallets.type is required when no external wallet is connected\"\n );\n return;\n }\n\n getOrCreateWallet({\n type: walletType,\n args: {\n adminSigner,\n linkedUser,\n },\n } as GetOrCreateWalletProps);\n }, [canGetOrCreateWallet, getOrCreateWallet, linkedUser, defaultAdminSigner, embeddedWallets.type, getAdminSigner]);\n\n const handleWalletCleanup = useCallback(() => {\n if (accessToken == null && walletStatus === \"loaded\") {\n clearWallet();\n }\n cleanup();\n }, [walletStatus, accessToken, clearWallet, cleanup]);\n\n useEffect(() => {\n handleWalletCreation();\n handleWalletCleanup();\n }, [handleWalletCreation, handleWalletCleanup]);\n\n return null;\n}\n","import { VisuallyHidden } from \"@radix-ui/react-visually-hidden\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { AuthForm } from \"./AuthForm\";\nimport { Dialog, DialogContent, DialogDescription, DialogTitle } from \"../common/Dialog\";\nimport { useEffect } from \"react\";\n\nexport default function AuthFormDialog({ open }: { open: boolean }) {\n const { appearance, setDialogOpen } = useAuthForm();\n\n useEffect(() => {\n document.body.style.overflow = open ? \"hidden\" : \"\";\n }, [open]);\n\n return (\n <Dialog modal={false} open={open} onOpenChange={setDialogOpen}>\n <DialogContent\n onInteractOutside={(e) => e.preventDefault()}\n onOpenAutoFocus={(e) => e.preventDefault()}\n closeButtonColor={appearance?.colors?.textPrimary}\n closeButtonRingColor={appearance?.colors?.accent}\n className=\"!p-0 !min-[480px]:p-0\"\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.background,\n }}\n >\n <VisuallyHidden asChild>\n <DialogTitle>Crossmint Auth</DialogTitle>\n </VisuallyHidden>\n <VisuallyHidden asChild>\n <DialogDescription>Sign in via Crossmint</DialogDescription>\n </VisuallyHidden>\n\n <AuthForm className=\"max-w-[448px]\" />\n </DialogContent>\n </Dialog>\n );\n}\n","import { createContext, useCallback, useContext, useEffect, useState, type ReactNode } from \"react\";\nimport { CrossmintAuthenticationError, type OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport type { CrossmintAuthProviderEmbeddedWallets, LoginMethod } from \"@/types/auth\";\n\ntype AuthStep = \"initial\" | \"otp\" | \"qrCode\" | \"web3\" | \"web3/metamask\" | \"web3/walletconnect\";\n\ntype OAuthUrlMap = Record<OAuthProvider, string>;\nconst initialOAuthUrlMap: OAuthUrlMap = {\n google: \"\",\n twitter: \"\",\n // Farcaster is not included here as it uses a different authentication method\n};\ninterface AuthFormContextType {\n step: AuthStep;\n error: string | null;\n appearance?: UIConfig;\n termsOfServiceText?: string | ReactNode;\n authModalTitle?: string;\n loginMethods: LoginMethod[];\n defaultEmail?: string;\n oauthUrlMap: OAuthUrlMap;\n isLoadingOauthUrlMap: boolean;\n baseUrl: string;\n setStep: (step: AuthStep) => void;\n setError: (error: string | null) => void;\n setDialogOpen: (open: boolean, successfulLogin?: boolean) => void;\n}\n\ntype ContextInitialStateProps = {\n appearance?: UIConfig;\n termsOfServiceText?: string | ReactNode;\n authModalTitle?: string;\n loginMethods: LoginMethod[];\n defaultEmail?: string;\n baseUrl: string;\n setDialogOpen?: (open: boolean, successfulLogin?: boolean) => void;\n embeddedWallets: CrossmintAuthProviderEmbeddedWallets;\n};\n\ntype AuthFormProviderProps = {\n setDialogOpen?: (open: boolean, successfulLogin?: boolean) => void;\n preFetchOAuthUrls: boolean;\n initialState: ContextInitialStateProps;\n children: ReactNode;\n};\n\nconst AuthFormContext = createContext<AuthFormContextType | undefined>(undefined);\n\nexport const useAuthForm = () => {\n const context = useContext(AuthFormContext);\n if (!context) {\n throw new Error(\"useAuthForm must be used within an AuthFormProvider\");\n }\n return context;\n};\n\nexport const AuthFormProvider = ({\n setDialogOpen,\n preFetchOAuthUrls,\n initialState,\n children,\n}: AuthFormProviderProps) => {\n const { crossmintAuth } = useCrossmintAuth();\n const [step, setStep] = useState<AuthStep>(\"initial\");\n const [error, setError] = useState<string | null>(null);\n const [oauthUrlMap, setOauthUrlMap] = useState<OAuthUrlMap>(initialOAuthUrlMap);\n const [isLoadingOauthUrlMap, setIsLoadingOauthUrlMap] = useState(true);\n\n const { loginMethods, baseUrl, appearance, termsOfServiceText, authModalTitle, defaultEmail } = initialState;\n\n const preFetchAndSetOauthUrl = useCallback(async () => {\n setIsLoadingOauthUrlMap(true);\n try {\n const oauthProviders = loginMethods.filter(\n (method): method is OAuthProvider => method in initialOAuthUrlMap\n );\n\n const oauthPromiseList = oauthProviders.map(async (provider) => {\n const url = await crossmintAuth?.getOAuthUrl(provider);\n return { [provider]: url };\n });\n\n const oauthUrlMap = Object.assign({}, ...(await Promise.all(oauthPromiseList)));\n setOauthUrlMap(oauthUrlMap);\n } catch (error) {\n setError(\n error instanceof CrossmintAuthenticationError\n ? error.message\n : \"Unable to load oauth providers. Please try again later.\"\n );\n } finally {\n setIsLoadingOauthUrlMap(false);\n }\n }, [loginMethods, crossmintAuth]);\n\n useEffect(() => {\n // Only pre-fetch oauth urls if the user is not logged in\n if (preFetchOAuthUrls) {\n preFetchAndSetOauthUrl();\n }\n }, [preFetchAndSetOauthUrl, preFetchOAuthUrls]);\n\n const handleToggleDialog = (open: boolean, successfulLogin?: boolean) => {\n setDialogOpen?.(open, successfulLogin);\n if (!open) {\n // Delay to allow the close transition to complete before resetting the step\n setTimeout(() => setStep(\"initial\"), 250);\n }\n };\n\n const value: AuthFormContextType = {\n step,\n error,\n baseUrl,\n appearance,\n termsOfServiceText,\n authModalTitle,\n loginMethods,\n defaultEmail,\n oauthUrlMap,\n isLoadingOauthUrlMap,\n setDialogOpen: handleToggleDialog,\n setError,\n setStep,\n };\n\n return <AuthFormContext.Provider value={value}>{children}</AuthFormContext.Provider>;\n};\n","import { useContext } from \"react\";\nimport { AuthContext } from \"../providers/CrossmintAuthProvider\";\n\nexport function useCrossmintAuth() {\n const context = useContext(AuthContext);\n\n if (!context) {\n throw new Error(\"useCrossmintAuth must be used within a CrossmintAuthProvider\");\n }\n\n return context;\n}\n","import Color from \"color\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { EmailAuthFlow } from \"./methods/email/EmailAuthFlow\";\nimport { Divider } from \"../common/Divider\";\nimport { GoogleSignIn } from \"./methods/google/GoogleSignIn\";\nimport { FarcasterSignIn } from \"./methods/farcaster/FarcasterSignIn\";\nimport { SecuredByCrossmint } from \"../common/SecuredByCrossmint\";\nimport { FarcasterProvider } from \"../../providers/auth/FarcasterProvider\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AlertIcon } from \"@/icons/alert\";\nimport { TwitterSignIn } from \"./methods/twitter/TwitterSignIn\";\nimport { Web3AuthFlow } from \"./methods/web3/Web3AuthFlow\";\n\nexport function AuthForm({ className }: { className?: string }) {\n const { step, appearance, loginMethods, baseUrl, error, termsOfServiceText, authModalTitle } = useAuthForm();\n\n return (\n <div\n className={classNames(\n \"relative pt-10 pb-[30px] px-6 !min-[480px]:px-10 flex flex-col gap-[10px] antialiased animate-none\",\n className\n )}\n >\n {error != null ? (\n <div\n className=\"flex items-start justify-start w-full rounded-lg p-2 mt-4 bg-cm-danger-muted\"\n style={{\n backgroundColor: new Color(appearance?.colors?.danger ?? \"#f44336\").alpha(0.12).toString(),\n }}\n >\n <div className=\"min-w-[20px]\">\n <AlertIcon customColor={appearance?.colors?.danger ?? \"#f44336\"} />\n </div>\n <p className=\"ml-2 text-sm\" style={{ color: appearance?.colors?.danger ?? \"#f44336\" }}>\n {error}\n </p>\n </div>\n ) : null}\n\n {step === \"initial\" ? (\n <div>\n <h1\n className=\"text-2xl font-bold text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n {authModalTitle ?? \"Sign in to Crossmint\"}\n </h1>\n <p\n className=\"text-base font-normal mb-3 text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Access using one of the options below.\n </p>\n </div>\n ) : null}\n\n {loginMethods.includes(\"google\") ? <GoogleSignIn /> : null}\n {loginMethods.includes(\"farcaster\") ? (\n <FarcasterProvider baseUrl={baseUrl}>\n <FarcasterSignIn />\n </FarcasterProvider>\n ) : null}\n {loginMethods.includes(\"twitter\") ? <TwitterSignIn /> : null}\n {loginMethods.some((method) => method.startsWith(\"web3\")) ? <Web3AuthFlow /> : null}\n\n {loginMethods.includes(\"email\") ? (\n <div>\n {loginMethods.length > 1 ? <Divider appearance={appearance} text=\"OR\" /> : null}\n <EmailAuthFlow />\n </div>\n ) : null}\n\n {step === \"initial\" && termsOfServiceText != null ? (\n <div\n className=\"text-sm text-center text-cm-text-secondary mt-2\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n <style>{`\n p a {\n color: ${appearance?.colors?.textLink ?? \"#1A74E9\"};\n }\n `}</style>\n {termsOfServiceText}\n </div>\n ) : null}\n\n {step === \"initial\" || step === \"otp\" ? (\n <SecuredByCrossmint\n className=\"mt-1.5 md:mt-4 justify-center\"\n color={appearance?.colors?.textSecondary ?? \"#67797F\"}\n />\n ) : null}\n </div>\n );\n}\n","import { useState } from \"react\";\nimport { EmailOTPInput } from \"./EmailOTPInput\";\nimport { EmailSignIn } from \"./EmailSignIn\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\n\nexport function EmailAuthFlow() {\n const { step } = useAuthForm();\n const [otpEmailData, setOtpEmailData] = useState<OtpEmailPayload | null>(null);\n\n if (step === \"otp\") {\n return <EmailOTPInput otpEmailData={otpEmailData} setOtpEmailData={setOtpEmailData} />;\n }\n if (step === \"initial\") {\n return <EmailSignIn setOtpEmailData={setOtpEmailData} />;\n }\n\n return null;\n}\n","import { useState } from \"react\";\nimport { InputOTP, InputOTPGroup, InputOTPSlot } from \"@/components/common/InputOTP\";\nimport { EmailOtpIcon } from \"@/icons/emailOTP\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { CountdownButton } from \"@/components/common/CountdownButton\";\n\nexport const EMAIL_VERIFICATION_TOKEN_LENGTH = 6;\n\nexport function EmailOTPInput({\n otpEmailData,\n setOtpEmailData,\n}: { otpEmailData: OtpEmailPayload | null; setOtpEmailData: (data: OtpEmailPayload | null) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setDialogOpen, setStep, setError } = useAuthForm();\n\n const [token, setToken] = useState(\"\");\n const [hasError, setHasError] = useState(false);\n const [loading, setLoading] = useState(false);\n\n const handleOnSubmitOTP = async () => {\n setLoading(true);\n try {\n const oneTimeSecret = await crossmintAuth?.confirmEmailOtp(\n otpEmailData?.email ?? \"\",\n otpEmailData?.emailId ?? \"\",\n token\n );\n\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false, true);\n setStep(\"initial\");\n } catch (error) {\n console.error(\"Error confirming email OTP\", error);\n setError(\"Invalid code. Please try again.\");\n setHasError(true);\n } finally {\n setLoading(false);\n }\n };\n\n const handleOnResendCode = async () => {\n try {\n await crossmintAuth?.sendEmailOtp(otpEmailData?.email ?? \"\");\n } catch (_e: unknown) {\n setError(\"Failed to resend code. Please try again.\");\n }\n };\n\n const handleOnBack = () => {\n setStep(\"initial\");\n setOtpEmailData(null);\n };\n\n return (\n <div>\n <AuthFormBackButton\n onClick={handleOnBack}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center justify-start w-full\">\n <div className=\"relative left-3\">\n <EmailOtpIcon\n customAccentColor={appearance?.colors?.accent}\n customButtonBackgroundColor={appearance?.colors?.buttonBackground}\n customBackgroundColor={appearance?.colors?.background}\n />\n </div>\n <p\n className=\"text-base font-normal mt-4 mb-1 text-center text-cm-text-primary\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n {\"Check your email\"}\n </p>\n <p\n className=\"text-center text-cm-text-secondary px-4\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n A temporary login code has been sent to{\" \"}\n {otpEmailData?.email ? otpEmailData.email : \"your email address\"}\n </p>\n <div className=\"py-8\">\n <InputOTP\n maxLength={EMAIL_VERIFICATION_TOKEN_LENGTH}\n value={token}\n onChange={(val) => {\n setToken(val);\n setHasError(false);\n setError(null);\n }}\n onComplete={handleOnSubmitOTP}\n disabled={loading}\n customStyles={{\n accent: appearance?.colors?.accent ?? \"#04AA6D\",\n danger: appearance?.colors?.danger ?? \"#f44336\",\n border: appearance?.colors?.border ?? \"#E5E7EB\",\n textPrimary: appearance?.colors?.textPrimary ?? \"#909ca3\",\n buttonBackground: appearance?.colors?.buttonBackground ?? \"#eff6ff\",\n inputBackground: appearance?.colors?.inputBackground ?? \"#FFFFFF\",\n borderRadius: appearance?.borderRadius,\n }}\n >\n <InputOTPGroup>\n <InputOTPSlot index={0} hasError={hasError} />\n <InputOTPSlot index={1} hasError={hasError} />\n <InputOTPSlot index={2} hasError={hasError} />\n <InputOTPSlot index={3} hasError={hasError} />\n <InputOTPSlot index={4} hasError={hasError} />\n <InputOTPSlot index={5} hasError={hasError} />\n </InputOTPGroup>\n </InputOTP>\n </div>\n\n <div className=\"text-xs leading-tight text-cm-text-secondary text-center\">\n <span style={{ color: appearance?.colors?.textSecondary }}>\n Can't find the email? Check spam folder.\n {\"\\n\"}\n Some emails may take several minutes to arrive.\n </span>\n </div>\n\n <CountdownButton\n initialSeconds={60}\n appearance={appearance}\n countdownText={(seconds) => `Re-send code in ${seconds}s`}\n countdownCompleteText=\"Re-send code\"\n handleOnClick={handleOnResendCode}\n />\n </div>\n </div>\n );\n}\n","import type React from \"react\";\nimport { classNames } from \"../../utils/classNames\";\nimport { LeftArrowIcon } from \"@/icons/leftArrow\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\n\nexport const AuthFormBackButton = ({\n className,\n iconColor,\n ringColor,\n onClick,\n ...props\n}: React.HTMLAttributes<HTMLButtonElement> & { iconColor?: string; ringColor?: string }) => {\n const { setError } = useAuthForm();\n\n return (\n <button\n className={classNames(\n \"absolute left-4 top-4 min-[480px]:!left-6 min-[480px]:!top-6 rounded-full opacity-70 ring-offset-background text-cm-text-primary transition-opacity hover:opacity-100 focus:outline-none focus:ring-2 focus:ring-cm-accent focus:ring-offset-2 disabled:pointer-events-none\",\n className\n )}\n onClick={(event) => {\n setError(null);\n onClick?.(event);\n }}\n {...props}\n >\n <LeftArrowIcon className=\"w-6 h-6\" style={{ color: iconColor }} />\n </button>\n );\n};\n","import { type FormEvent, useState } from \"react\";\nimport Color from \"color\";\n\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AlertIcon } from \"../../../../icons/alert\";\nimport { isEmailValid } from \"@crossmint/common-sdk-auth\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { OtpEmailPayload } from \"@/types/auth\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { ContinueWithGoogle } from \"../google/ContinueWithGoogle\";\n\nexport function EmailSignIn({ setOtpEmailData }: { setOtpEmailData: (data: OtpEmailPayload) => void }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, defaultEmail, setStep, setError } = useAuthForm();\n\n const [emailInput, setEmailInput] = useState(defaultEmail ?? \"\");\n const [emailError, setEmailError] = useState(\"\");\n const [isLoading, setIsLoading] = useState(false);\n\n /** Continue with google button will only show under the following conditions:\n * 1. Email is a gmail address\n * 2. Email DOES NOT contain a \"+\" character\n * 3. Email is valid\n */\n const showGoogleContinueButton =\n emailInput.toLowerCase().includes(\"@gmail.com\") &&\n !emailInput.toLowerCase().includes(\"+\") &&\n isEmailValid(emailInput) &&\n !isLoading;\n\n async function handleOnSubmit(e: FormEvent<HTMLFormElement>) {\n e.preventDefault();\n\n setIsLoading(true);\n\n try {\n const trimmedEmailInput = emailInput.trim().toLowerCase();\n const emailSignInRes = (await crossmintAuth?.sendEmailOtp(trimmedEmailInput)) as { emailId: string };\n\n setOtpEmailData({ email: trimmedEmailInput, emailId: emailSignInRes.emailId });\n setStep(\"otp\");\n } catch (_e: unknown) {\n setIsLoading(false);\n setError(\"Failed to send email. Please try again or contact support.\");\n }\n }\n\n return (\n <>\n <div className=\"flex flex-col items-start justify-start w-full rounded-lg\">\n <div className=\"w-full\">\n <label\n className=\"text-cm-text-primary block mb-[5px]\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Email\n </label>\n <form\n role=\"form\"\n className=\"relative\"\n onSubmit={(e) => {\n // Prevent form submission if Google button should be shown\n if (showGoogleContinueButton) {\n e.preventDefault();\n return;\n }\n // Otherwise proceed with normal submission if email is valid\n if (isEmailValid(emailInput)) {\n handleOnSubmit(e);\n } else {\n e.preventDefault();\n }\n }}\n noValidate // we want to handle validation ourselves\n >\n <label htmlFor=\"emailInput\" className=\"sr-only\">\n Email\n </label>\n <input\n className={classNames(\n \"flex-grow text-cm-text-primary text-left pl-[16px] h-[58px] w-full border border-cm-border rounded-xl bg-cm-background-primary placeholder:text-md\",\n \"transition-none duration-200 ease-in-out\",\n \"focus:outline-none focus-ring-custom\", // Add focus ring\n \"placeholder:[color:var(--placeholder-color)]\",\n emailError ? \"border-red-500\" : \"\",\n showGoogleContinueButton ? \"pr-[132px]\" : \"pr-[80px]\"\n )}\n style={{\n color: appearance?.colors?.textPrimary,\n borderRadius: appearance?.borderRadius,\n borderColor: emailError ? appearance?.colors?.danger : appearance?.colors?.border,\n backgroundColor: appearance?.colors?.inputBackground,\n // @ts-expect-error Add custom placeholder & ring color to tailwind\n \"--placeholder-color\": appearance?.colors?.textSecondary ?? \"#67797F\",\n \"--focus-ring-color\": new Color(appearance?.colors?.accent ?? \"#04AA6D\")\n .alpha(0.18)\n .toString(),\n }}\n type=\"email\"\n placeholder=\"your@email.com\"\n value={emailInput}\n onChange={(e) => {\n setEmailInput(e.target.value);\n setEmailError(\"\");\n setError(null);\n }}\n readOnly={isLoading}\n aria-describedby=\"emailError\"\n />\n <div className=\"absolute inset-y-0 right-0 flex items-center pr-4\">\n {emailError && <AlertIcon customColor={appearance?.colors?.danger} />}\n {isLoading && (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n )}\n {showGoogleContinueButton ? (\n <ContinueWithGoogle emailInput={emailInput} appearance={appearance} />\n ) : !emailError && !isLoading ? (\n <button\n type=\"submit\"\n className={classNames(\n \"font-medium text-cm-accent text-nowrap bg-cm-background-primary\",\n !isEmailValid(emailInput) ? \"!cursor-not-allowed opacity-60\" : \"cursor-pointer\"\n )}\n style={{\n color: appearance?.colors?.accent,\n backgroundColor: appearance?.colors?.inputBackground,\n }}\n disabled={!isEmailValid(emailInput) || isLoading}\n >\n Submit\n </button>\n ) : null}\n </div>\n </form>\n {emailError && <p className=\"text-xs text-red-500 mb-2 pt-2\">{emailError}</p>}\n </div>\n </div>\n </>\n );\n}\n","import type { OAuthProvider } from \"@crossmint/common-sdk-auth\";\nimport { ChildWindow, PopupWindow } from \"@crossmint/client-sdk-window\";\nimport { useEffect, useRef, useState } from \"react\";\nimport { z } from \"zod\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { useCrossmintAuth } from \"./useCrossmintAuth\";\n\nexport const useOAuthWindowListener = (provider: OAuthProvider) => {\n const { crossmintAuth } = useCrossmintAuth();\n const { oauthUrlMap, setError } = useAuthForm();\n const [isLoading, setIsLoading] = useState(false);\n const childRef = useRef<ChildWindow<IncomingEvents, OutgoingEvents> | null>(null);\n\n useEffect(() => {\n if (childRef.current == null) {\n childRef.current = new ChildWindow<IncomingEvents, OutgoingEvents>(window.opener || window.parent, \"*\", {\n incomingEvents,\n });\n }\n\n return () => {\n if (childRef.current != null) {\n childRef.current.off(\"authMaterialFromPopupCallback\");\n }\n };\n }, []);\n\n const createPopupAndSetupListeners = async (providerLoginHint?: string) => {\n if (childRef.current == null) {\n throw new Error(\"Child window not initialized\");\n }\n setIsLoading(true);\n setError(null);\n\n const baseUrl = new URL(oauthUrlMap[provider]);\n\n // The provider_login_hint is a parameter that can be used to pre-fill the email field of the OAuth provider to allow auto-login if session exists.\n // Stytch Docs: https://stytch.com/docs/api/oauth-google-start#additional-provider-parameters\n if (providerLoginHint != null) {\n // Clear existing params but save them\n const existingParams = Array.from(baseUrl.searchParams.entries());\n baseUrl.search = \"\";\n\n // Add provider_login_hint first\n if (providerLoginHint) {\n baseUrl.searchParams.append(\"provider_login_hint\", providerLoginHint);\n }\n\n // Add all other params after\n existingParams.forEach(([key, value]) => {\n baseUrl.searchParams.append(key, value);\n });\n }\n\n const popup = await PopupWindow.init(baseUrl.toString(), {\n awaitToLoad: false,\n crossOrigin: true,\n width: 400,\n height: 700,\n });\n\n const handleAuthMaterial = async (data: { oneTimeSecret: string }) => {\n await crossmintAuth?.handleRefreshAuthMaterial(data.oneTimeSecret);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n popup.window.close();\n setIsLoading(false);\n };\n\n const handleError = (data: { error: string }) => {\n setError(data.error);\n childRef.current?.off(\"errorFromPopupCallback\");\n popup.window.close();\n setIsLoading(false);\n };\n\n childRef.current.on(\"authMaterialFromPopupCallback\", handleAuthMaterial);\n childRef.current.on(\"errorFromPopupCallback\", handleError);\n // Add a check for manual window closure\n // Ideally we should find a more explicit way of doing this, but I think this is fine for now.\n const checkWindowClosure = setInterval(() => {\n if (popup.window.closed) {\n clearInterval(checkWindowClosure);\n setIsLoading(false);\n childRef.current?.off(\"authMaterialFromPopupCallback\");\n }\n }, 2500); // Check every 2.5 seconds\n };\n\n return {\n createPopupAndSetupListeners,\n isLoading,\n };\n};\n\nconst incomingEvents = {\n authMaterialFromPopupCallback: z.object({ oneTimeSecret: z.string() }),\n errorFromPopupCallback: z.object({ error: z.string() }),\n};\n\ntype IncomingEvents = {\n authMaterialFromPopupCallback: typeof incomingEvents.authMaterialFromPopupCallback;\n errorFromPopupCallback: typeof incomingEvents.errorFromPopupCallback;\n};\n\ntype OutgoingEvents = Record<string, never>;\n","import type { UIConfig } from \"@crossmint/common-sdk-base\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { useOAuthWindowListener } from \"@/hooks/useOAuthWindowListener\";\nimport { GoogleIcon } from \"@/icons/google\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function ContinueWithGoogle({ emailInput, appearance }: { emailInput: string; appearance?: UIConfig }) {\n const { createPopupAndSetupListeners, isLoading: isLoadingOAuthWindow } = useOAuthWindowListener(\"google\");\n\n return (\n <button\n type=\"button\"\n className={classNames(\n \"flex items-center gap-2 justify-center h-[32px] px-2.5 border border-cm-border rounded-xl bg-cm-background-primary\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoadingOAuthWindow ? \"cursor-not-allowed hover:bg-cm-muted-primary\" : \"\"\n )}\n onClick={\n isLoadingOAuthWindow ? undefined : () => createPopupAndSetupListeners(emailInput.trim().toLowerCase())\n }\n style={{\n backgroundColor: appearance?.colors?.buttonBackground,\n borderRadius: appearance?.borderRadius,\n }}\n >\n <GoogleIcon className=\"max-h-[18px] max-w-[18px] h-[18px] w-[18px]\" />\n {isLoadingOAuthWindow ? (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n width: \"18px\",\n height: \"18px\",\n }}\n />\n ) : (\n <span className=\"text-cm-accent\" style={{ color: appearance?.colors?.accent }}>\n Continue\n </span>\n )}\n </button>\n );\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport type { UIConfig } from \"@crossmint/common-sdk-base\";\n\nexport function Divider({ appearance, text }: { appearance?: UIConfig; text?: string }) {\n const { step } = useAuthForm();\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <div className=\"flex items-center justify-center w-full pt-2 pb-3\">\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n {text != null ? (\n <p\n className=\"flex-none px-2 text-sm text-cm-text-primary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n {text}\n </p>\n ) : null}\n <span className=\"w-full h-[1px] bg-cm-border\" style={{ backgroundColor: appearance?.colors?.border }} />\n </div>\n );\n}\n","import type { ButtonHTMLAttributes } from \"react\";\nimport { GoogleIcon } from \"@/icons/google\";\nimport { useOAuthWindowListener } from \"@/hooks/useOAuthWindowListener\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function GoogleSignIn({ ...props }: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { step, appearance, isLoadingOauthUrlMap } = useAuthForm();\n const { createPopupAndSetupListeners, isLoading: isLoadingOAuthWindow } = useOAuthWindowListener(\"google\");\n const isLoading = isLoadingOauthUrlMap || isLoadingOAuthWindow;\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoading ? \"cursor-not-allowed hover:bg-cm-muted-primary\" : \"\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={isLoading ? undefined : () => createPopupAndSetupListeners()}\n {...props}\n >\n <>\n <GoogleIcon className=\"max-h-[25px] max-w-[25px] h-[25px] w-[25px] absolute left-[18px]\" />\n {isLoading ? (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n ) : (\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Google\n </span>\n )}\n </>\n <span className=\"sr-only\">Sign in with Google</span>\n </button>\n );\n}\n","import { useEffect, useMemo, useState } from \"react\";\nimport { useSignIn, QRCode, type UseSignInData } from \"@farcaster/auth-kit\";\nimport { FarcasterIcon } from \"@/icons/farcaster\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { classNames } from \"@/utils/classNames\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nexport function FarcasterSignIn() {\n const { step, appearance, setStep, setError } = useAuthForm();\n\n if (step === \"initial\") {\n return (\n <div>\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={() => {\n setStep(\"qrCode\");\n setError(null);\n }}\n >\n <FarcasterIcon className=\"max-h-[25px] max-w-[25px] h-[25px] w-[25px] absolute left-[18px]\" />\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </span>\n <span className=\"sr-only\">Sign in with Farcaster</span>\n </button>\n </div>\n );\n }\n\n if (step === \"qrCode\") {\n return <FarcasterQRCode />;\n }\n\n return null;\n}\n\n// We want this to be a separate component so it can completely un-render when the user goes back to the initial screen\nfunction FarcasterQRCode() {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, setStep, setDialogOpen, setError } = useAuthForm();\n const [farcasterData, setFarcasterData] = useState<UseSignInData | null>(null);\n\n const farcasterProps = useMemo(\n () => ({\n onSuccess: (data: UseSignInData) => {\n // Step 3. set the farcaster data once the sign in is successful\n setFarcasterData(data);\n },\n }),\n []\n );\n\n const { signIn, url: qrCodeUrl, connect, signOut, isConnected } = useSignIn(farcasterProps);\n\n const handleFarcasterSignIn = async (data: UseSignInData) => {\n setError(null);\n try {\n const oneTimeSecret = await crossmintAuth?.signInWithFarcaster(data);\n // Step 5. fetch the auth material, close the dialog, and unrender any farcaster client stuff\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret as string);\n setDialogOpen(false);\n setStep(\"initial\");\n } catch (error) {\n console.error(\"Error during Farcaster sign-in:\", error);\n setError(\"Failed to sign in with Farcaster\");\n }\n };\n\n useEffect(() => {\n if (farcasterData != null) {\n // Step 4. call the handleFarcasterSignInfunction to handle the sign in\n handleFarcasterSignIn(farcasterData);\n }\n }, [farcasterData]);\n\n useEffect(() => {\n if (isConnected) {\n // Step 2. once connected, call the signIn function to start the sign in process\n signIn();\n }\n }, [isConnected]);\n\n useEffect(() => {\n // Step 1. call the connect function to initialize the connection\n connect();\n }, []);\n\n return (\n <div>\n <AuthFormBackButton\n onClick={() => {\n signOut();\n setStep(\"initial\");\n }}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n\n <div className=\"flex flex-col items-center gap-4\">\n <div className=\"text-center\">\n <h3\n className=\"text-lg font-semibold text-cm-text-primary mb-2\"\n style={{ color: appearance?.colors?.textPrimary }}\n >\n Sign in with Farcaster\n </h3>\n <p\n className=\"text-base font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Scan with your phone's camera to continue.\n </p>\n </div>\n <div\n className=\"bg-white aspect-square rounded-lg p-4\"\n style={{\n backgroundColor: appearance?.colors?.inputBackground,\n borderRadius: appearance?.borderRadius,\n }}\n >\n {qrCodeUrl != null ? (\n <QRCode uri={qrCodeUrl} size={280} />\n ) : (\n <div className=\"min-h-[246px] flex items-center justify-center\">\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n </div>\n )}\n </div>\n {qrCodeUrl ? (\n <>\n <p\n className=\"text-base text-center font-normal text-cm-text-secondary\"\n style={{ color: appearance?.colors?.textSecondary }}\n >\n Alternatively, click on this link to open Warpcast.\n </p>\n <a\n href={qrCodeUrl}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n className=\"text-base font-normal text-cm-link\"\n style={{ color: appearance?.colors?.textLink }}\n >\n Open Warpcast\n </a>\n </>\n ) : null}\n </div>\n </div>\n );\n}\n","import type { ButtonHTMLAttributes } from \"react\";\nimport { TwitterIcon } from \"@/icons/twitter\";\nimport { useOAuthWindowListener } from \"@/hooks/useOAuthWindowListener\";\nimport { Spinner } from \"@/components/common/Spinner\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function TwitterSignIn({ ...props }: ButtonHTMLAttributes<HTMLButtonElement>) {\n const { step, appearance, isLoadingOauthUrlMap } = useAuthForm();\n const { createPopupAndSetupListeners, isLoading: isLoadingOAuthWindow } = useOAuthWindowListener(\"twitter\");\n const isLoading = isLoadingOauthUrlMap || isLoadingOAuthWindow;\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\",\n isLoading ? \"cursor-not-allowed hover:bg-cm-muted-primary\" : \"\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={isLoading ? undefined : () => createPopupAndSetupListeners()}\n {...props}\n >\n <>\n <TwitterIcon className=\"max-h-[25px] max-w-[25px] h-[25px] w-[25px] absolute left-[18px]\" />\n\n {isLoading ? (\n <Spinner\n style={{\n color: appearance?.colors?.textSecondary,\n fill: appearance?.colors?.textPrimary,\n }}\n />\n ) : (\n <span\n className=\"font-medium\"\n style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}\n >\n Sign in with X\n </span>\n )}\n </>\n <span className=\"sr-only\">Sign in with X</span>\n </button>\n );\n}\n","import { ChevronRightIcon } from \"@/icons/chevronRight\";\nimport { WalletIcon } from \"@/icons/wallet\";\nimport { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { classNames } from \"@/utils/classNames\";\n\nexport function Web3AuthFlowButton() {\n const { step, appearance, setStep, setError } = useAuthForm();\n\n if (step !== \"initial\") {\n return null;\n }\n\n return (\n <button\n className={classNames(\n \"relative flex text-base p-4 bg-cm-muted-primary text-cm-text-primary items-center w-full rounded-xl justify-center\",\n \"transition-colors duration-200 ease-in-out\",\n \"hover:bg-cm-hover focus:bg-cm-hover outline-none\"\n )}\n style={{\n borderRadius: appearance?.borderRadius,\n borderColor: appearance?.colors?.border,\n backgroundColor: appearance?.colors?.buttonBackground,\n }}\n onClick={() => {\n setStep(\"web3\");\n setError(null);\n }}\n >\n <WalletIcon\n className=\"h-[21px] w-[21px] absolute left-[20px]\"\n style={{ color: appearance?.colors?.textPrimary }}\n />\n <span className=\"font-medium\" style={{ margin: \"0px 32px\", color: appearance?.colors?.textPrimary }}>\n Continue with a wallet\n </span>\n <ChevronRightIcon\n className=\"h-[21px] w-[21px] absolute right-[20px]\"\n style={{ color: appearance?.colors?.textSecondary }}\n />\n <span className=\"sr-only\">Continue with a wallet</span>\n </button>\n );\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { AuthFormBackButton } from \"../../AuthFormBackButton\";\nimport { DynamicEmbeddedWidget } from \"@dynamic-labs/sdk-react-core\";\n\nexport function Web3Connectors() {\n const { appearance, step, setStep } = useAuthForm();\n\n if (step === \"web3\") {\n return (\n <>\n <AuthFormBackButton\n onClick={() => setStep(\"initial\")}\n iconColor={appearance?.colors?.textPrimary}\n ringColor={appearance?.colors?.accent}\n />\n <div className=\"flex flex-col items-center\">\n <div className=\"flex flex-col gap-[10px] w-full\">\n <div className=\"widget-container\">\n <DynamicEmbeddedWidget background=\"none\" />\n </div>\n </div>\n </div>\n </>\n );\n }\n\n return null;\n}\n","import { useAuthForm } from \"@/providers/auth/AuthFormProvider\";\nimport { Web3AuthFlowButton } from \"./Web3AuthFlowButton\";\nimport { Web3Connectors } from \"./Web3Connectors\";\n\nexport function Web3AuthFlow() {\n const { step } = useAuthForm();\n\n // Show wallet connectors when in any web3 step\n if (step.startsWith(\"web3\")) {\n return <Web3Connectors />;\n }\n\n // Show initial connect button on first step\n if (step === \"initial\") {\n return <Web3AuthFlowButton />;\n }\n\n return null;\n}\n","import type React from \"react\";\nimport base58 from \"bs58\";\nimport { EthereumWalletConnectors } from \"@dynamic-labs/ethereum\";\nimport { SolanaWalletConnectors } from \"@dynamic-labs/solana\";\nimport type { APIKeyEnvironmentPrefix } from \"@crossmint/common-sdk-base\";\nimport DynamicContextProviderWrapper from \"@/components/dynamic-xyz/DynamicContextProviderWrapper\";\nimport { useCrossmintAuth } from \"@/hooks/useCrossmintAuth\";\nimport { useAuthForm } from \"../AuthFormProvider\";\nimport { dynamicChainToCrossmintChain } from \"@/utils/dynamic/dynamicChainToCrossmintChain\";\n\nexport function DynamicWeb3WalletConnect({\n children,\n apiKeyEnvironment,\n enabled,\n}: { children: React.ReactNode; apiKeyEnvironment: APIKeyEnvironmentPrefix; enabled: boolean }) {\n const { crossmintAuth } = useCrossmintAuth();\n const { appearance, loginMethods } = useAuthForm();\n\n let connectors = enabled ? [EthereumWalletConnectors, SolanaWalletConnectors] : undefined;\n if (loginMethods.includes(\"web3:evm-only\")) {\n connectors = [EthereumWalletConnectors];\n } else if (loginMethods.includes(\"web3:solana-only\")) {\n connectors = [SolanaWalletConnectors];\n }\n\n const cssOverrides = `.powered-by-dynamic { display: none !important; } .wallet-list__scroll-container { padding: 0px !important; } .wallet-list__search-container { padding-left: 0px !important; padding-right: 0px !important; } .dynamic-footer { display: none !important; } h1 { color: ${appearance?.colors?.textPrimary} !important; } * { color: ${appearance?.colors?.textSecondary} !important; }`;\n\n return (\n <DynamicContextProviderWrapper\n key={`${apiKeyEnvironment}-${loginMethods.join(\",\")}`}\n apiKeyEnvironment={apiKeyEnvironment}\n settings={{\n walletConnectors: connectors,\n cssOverrides,\n events: {\n onWalletRemoved() {\n console.log(\"[CryptoWalletConnectionHandler] onWalletRemoved\");\n },\n onAuthFlowCancel() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowCancel\");\n },\n onAuthFlowClose() {\n console.log(\"[CryptoWalletConnectionHandler] onAuthFlowClose\");\n },\n onAuthFailure(data, reason) {\n console.error(\"[CryptoWalletConnectionHandler] onAuthFailure\", data, reason);\n },\n onAuthSuccess(data) {\n console.log(\"[CryptoWalletConnectionHandler] onAuthSuccess\", data);\n },\n },\n handlers: {\n handleConnectedWallet: async (args) => {\n console.log(\"[CryptoWalletConnectionHandler] handleConnectedWallet\", args);\n const address = args.address;\n if (!address) {\n console.error(\"[CryptoWalletConnectionHandler] handleConnectedWallet: address is missing\");\n return false;\n }\n const chain = await dynamicChainToCrossmintChain(args);\n const type = chain === \"solana\" ? \"solana\" : \"evm\";\n try {\n const res = await crossmintAuth?.signInWithSmartWallet(address, type);\n const rawSignature = (await args.connector?.proveOwnership(\n address,\n res.challenge\n )) as string;\n\n let signature = rawSignature;\n if (type === \"solana\") {\n const signatureBuffer = Buffer.from(rawSignature, \"base64\");\n signature = base58.encode(signatureBuffer);\n }\n const authResponse = (await crossmintAuth?.authenticateSmartWallet(\n address,\n type,\n signature\n )) as {\n oneTimeSecret: string;\n };\n const oneTimeSecret = authResponse.oneTimeSecret;\n await crossmintAuth?.handleRefreshAuthMaterial(oneTimeSecret);\n } catch (error) {\n console.error(\"[CryptoWalletConnectionHandler] Error authenticating wallet:\", error);\n false;\n }\n return true;\n },\n },\n }}\n >\n {children}\n </DynamicContextProviderWrapper>\n );\n}\n"]}
@@ -0,0 +1,31 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunk35RV5AOTcjs = require('./chunk-35RV5AOT.cjs');
4
+
5
+
6
+ var _chunkSBA6FMFTcjs = require('./chunk-SBA6FMFT.cjs');
7
+
8
+
9
+ var _chunk4DAZAO6Ycjs = require('./chunk-4DAZAO6Y.cjs');
10
+
11
+ // src/components/embed/fiat/FiatEmbeddedCheckoutIFrame.tsx
12
+
13
+
14
+
15
+ var _clientsdkbase = require('@crossmint/client-sdk-base');
16
+ var _jsxruntime = require('react/jsx-runtime');
17
+ function FiatEmbeddedCheckoutIFrame(props) {
18
+ const { emitInternalEvent } = _clientsdkbase.crossmintIFrameService.call(void 0, props);
19
+ _chunkSBA6FMFTcjs.useDeepEffect.call(void 0, () => {
20
+ emitInternalEvent({
21
+ type: "params-update",
22
+ payload: _clientsdkbase.embeddedCheckoutPropsToUpdatableParamsPayload.call(void 0, props)
23
+ });
24
+ }, [props.recipient, props.mintConfig, props.locale, props.currency, props.whPassThroughArgs]);
25
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunk35RV5AOTcjs.CrossmintEmbeddedCheckoutIFrame, _chunk4DAZAO6Ycjs.__spreadValues.call(void 0, {}, props));
26
+ }
27
+
28
+
29
+
30
+ exports.FiatEmbeddedCheckoutIFrame = FiatEmbeddedCheckoutIFrame;
31
+ //# sourceMappingURL=chunk-R6IL3WOE.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/components/embed/fiat/FiatEmbeddedCheckoutIFrame.tsx"],"names":[],"mappings":";;;;;;;;;;;AAAA;AAAA,EAEI;AAAA,EACA;AAAA,OACG;AAeI;AAVI,SAAR,2BAA4C,OAAkC;AACjF,QAAM,EAAE,kBAAkB,IAAI,uBAAuB,KAAK;AAE1D,gBAAc,MAAM;AAChB,sBAAkB;AAAA,MACd,MAAM;AAAA,MACN,SAAS,8CAA8C,KAAK;AAAA,IAChE,CAAC;AAAA,EACL,GAAG,CAAC,MAAM,WAAW,MAAM,YAAY,MAAM,QAAQ,MAAM,UAAU,MAAM,iBAAiB,CAAC;AAE7F,SAAO,oBAAC,oDAAoC,MAAO;AACvD","sourcesContent":["import {\n type FiatEmbeddedCheckoutProps,\n crossmintIFrameService,\n embeddedCheckoutPropsToUpdatableParamsPayload,\n} from \"@crossmint/client-sdk-base\";\n\nimport useDeepEffect from \"../../../hooks/useDeepEffect\";\nimport CrossmintEmbeddedCheckoutIFrame from \"../EmbeddedCheckoutIFrame\";\n\nexport default function FiatEmbeddedCheckoutIFrame(props: FiatEmbeddedCheckoutProps) {\n const { emitInternalEvent } = crossmintIFrameService(props);\n\n useDeepEffect(() => {\n emitInternalEvent({\n type: \"params-update\",\n payload: embeddedCheckoutPropsToUpdatableParamsPayload(props),\n });\n }, [props.recipient, props.mintConfig, props.locale, props.currency, props.whPassThroughArgs]);\n\n return <CrossmintEmbeddedCheckoutIFrame {...props} />;\n}\n"]}
@@ -0,0 +1,57 @@
1
+ import {
2
+ __async
3
+ } from "./chunk-CRTRMMJ7.js";
4
+
5
+ // src/hooks/useSignerInvisibleIFrame.ts
6
+ import { useEffect, useRef } from "react";
7
+ import { IFrameWindow } from "@crossmint/client-sdk-window";
8
+ import { signerInboundEvents, signerOutboundEvents } from "@crossmint/client-signers";
9
+ function createInvisibleIFrame(url) {
10
+ return __async(this, null, function* () {
11
+ const iframe = document.createElement("iframe");
12
+ iframe.src = url;
13
+ iframe.style.position = "absolute";
14
+ iframe.style.opacity = "0";
15
+ iframe.style.pointerEvents = "none";
16
+ iframe.style.width = "0";
17
+ iframe.style.height = "0";
18
+ iframe.style.border = "none";
19
+ iframe.style.top = "-9999px";
20
+ iframe.style.left = "-9999px";
21
+ return new Promise((resolve, reject) => {
22
+ iframe.onload = () => resolve(iframe);
23
+ iframe.onerror = () => reject("Failed to load iframe content");
24
+ document.body.appendChild(iframe);
25
+ });
26
+ });
27
+ }
28
+ function useSignerIFrameWindow() {
29
+ const iframeWindow = useRef(null);
30
+ useEffect(() => {
31
+ const initIFrameWindow = () => __async(this, null, function* () {
32
+ try {
33
+ const iframeUrl = new URL("https://crossmint-signer-frames.onrender.com/");
34
+ const iframeElement = yield createInvisibleIFrame(iframeUrl.toString());
35
+ iframeWindow.current = yield IFrameWindow.init(iframeElement, {
36
+ targetOrigin: iframeUrl.origin,
37
+ incomingEvents: signerOutboundEvents,
38
+ outgoingEvents: signerInboundEvents
39
+ });
40
+ yield iframeWindow.current.handshakeWithChild();
41
+ } catch (err) {
42
+ console.error("Failed to initialize or connect to iframe:", err);
43
+ }
44
+ });
45
+ initIFrameWindow();
46
+ return () => {
47
+ if (iframeWindow.current) {
48
+ }
49
+ };
50
+ }, []);
51
+ return iframeWindow;
52
+ }
53
+
54
+ export {
55
+ useSignerIFrameWindow
56
+ };
57
+ //# sourceMappingURL=chunk-RB34BJZ6.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useSignerInvisibleIFrame.ts"],"sourcesContent":["import { useEffect, useRef } from \"react\";\nimport { IFrameWindow } from \"@crossmint/client-sdk-window\";\nimport { signerInboundEvents, signerOutboundEvents } from \"@crossmint/client-signers\";\n\nasync function createInvisibleIFrame(url: string): Promise<HTMLIFrameElement> {\n const iframe = document.createElement(\"iframe\");\n iframe.src = url;\n\n // Make the iframe invisible but functional\n iframe.style.position = \"absolute\";\n iframe.style.opacity = \"0\";\n iframe.style.pointerEvents = \"none\";\n iframe.style.width = \"0\";\n iframe.style.height = \"0\";\n iframe.style.border = \"none\";\n iframe.style.top = \"-9999px\";\n iframe.style.left = \"-9999px\";\n\n return new Promise((resolve, reject) => {\n iframe.onload = () => resolve(iframe);\n iframe.onerror = () => reject(\"Failed to load iframe content\");\n document.body.appendChild(iframe);\n });\n}\n\nexport function useSignerIFrameWindow() {\n const iframeWindow = useRef<IFrameWindow<typeof signerOutboundEvents, typeof signerInboundEvents> | null>(null);\n useEffect(() => {\n const initIFrameWindow = async () => {\n try {\n const iframeUrl = new URL(\"https://crossmint-signer-frames.onrender.com/\");\n const iframeElement = await createInvisibleIFrame(iframeUrl.toString());\n iframeWindow.current = await IFrameWindow.init(iframeElement, {\n targetOrigin: iframeUrl.origin,\n incomingEvents: signerOutboundEvents,\n outgoingEvents: signerInboundEvents,\n });\n\n await iframeWindow.current.handshakeWithChild();\n } catch (err) {\n console.error(\"Failed to initialize or connect to iframe:\", err);\n }\n };\n initIFrameWindow();\n // Cleanup function\n return () => {\n if (iframeWindow.current) {\n // Add cleanup if needed\n }\n };\n }, []);\n\n return iframeWindow;\n}\n"],"mappings":";;;;;AAAA,SAAS,WAAW,cAAc;AAClC,SAAS,oBAAoB;AAC7B,SAAS,qBAAqB,4BAA4B;AAE1D,SAAe,sBAAsB,KAAyC;AAAA;AAC1E,UAAM,SAAS,SAAS,cAAc,QAAQ;AAC9C,WAAO,MAAM;AAGb,WAAO,MAAM,WAAW;AACxB,WAAO,MAAM,UAAU;AACvB,WAAO,MAAM,gBAAgB;AAC7B,WAAO,MAAM,QAAQ;AACrB,WAAO,MAAM,SAAS;AACtB,WAAO,MAAM,SAAS;AACtB,WAAO,MAAM,MAAM;AACnB,WAAO,MAAM,OAAO;AAEpB,WAAO,IAAI,QAAQ,CAAC,SAAS,WAAW;AACpC,aAAO,SAAS,MAAM,QAAQ,MAAM;AACpC,aAAO,UAAU,MAAM,OAAO,+BAA+B;AAC7D,eAAS,KAAK,YAAY,MAAM;AAAA,IACpC,CAAC;AAAA,EACL;AAAA;AAEO,SAAS,wBAAwB;AACpC,QAAM,eAAe,OAAqF,IAAI;AAC9G,YAAU,MAAM;AACZ,UAAM,mBAAmB,MAAY;AACjC,UAAI;AACA,cAAM,YAAY,IAAI,IAAI,+CAA+C;AACzE,cAAM,gBAAgB,MAAM,sBAAsB,UAAU,SAAS,CAAC;AACtE,qBAAa,UAAU,MAAM,aAAa,KAAK,eAAe;AAAA,UAC1D,cAAc,UAAU;AAAA,UACxB,gBAAgB;AAAA,UAChB,gBAAgB;AAAA,QACpB,CAAC;AAED,cAAM,aAAa,QAAQ,mBAAmB;AAAA,MAClD,SAAS,KAAK;AACV,gBAAQ,MAAM,8CAA8C,GAAG;AAAA,MACnE;AAAA,IACJ;AACA,qBAAiB;AAEjB,WAAO,MAAM;AACT,UAAI,aAAa,SAAS;AAAA,MAE1B;AAAA,IACJ;AAAA,EACJ,GAAG,CAAC,CAAC;AAEL,SAAO;AACX;","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-RU4ZOZP5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ // src/utils/classNames.ts
2
+ import { clsx } from "clsx";
3
+ import { twMerge } from "tailwind-merge";
4
+ function classNames(...inputs) {
5
+ return twMerge(clsx(inputs));
6
+ }
7
+
8
+ export {
9
+ classNames
10
+ };
11
+ //# sourceMappingURL=chunk-RZPQIRIY.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/utils/classNames.ts"],"sourcesContent":["import { type ClassValue, clsx } from \"clsx\";\nimport { twMerge } from \"tailwind-merge\";\n\n/**\n * Combines multiple class names into a single string.\n *\n * @param inputs - The class names to combine.\n * @returns The combined class names as a string.\n */\nexport function classNames(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs));\n}\n"],"mappings":";AAAA,SAA0B,YAAY;AACtC,SAAS,eAAe;AAQjB,SAAS,cAAc,QAAsB;AAChD,SAAO,QAAQ,KAAK,MAAM,CAAC;AAC/B;","names":[]}
@@ -0,0 +1,18 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }// src/hooks/useDeepEffect.ts
2
+ var _lodashisequal = require('lodash.isequal'); var _lodashisequal2 = _interopRequireDefault(_lodashisequal);
3
+ var _react = require('react');
4
+ function useDeepEffect(callback, dependencies) {
5
+ const dependenciesRef = _react.useRef.call(void 0, dependencies);
6
+ _react.useEffect.call(void 0, () => {
7
+ const hasChanged = dependencies.some((dep, i) => !_lodashisequal2.default.call(void 0, dep, dependenciesRef.current[i]));
8
+ if (hasChanged) {
9
+ dependenciesRef.current = dependencies;
10
+ return callback();
11
+ }
12
+ }, [dependencies]);
13
+ }
14
+
15
+
16
+
17
+ exports.useDeepEffect = useDeepEffect;
18
+ //# sourceMappingURL=chunk-SBA6FMFT.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDeepEffect.ts"],"names":[],"mappings":";AAAA,OAAO,aAAa;AACpB,SAAmD,WAAW,cAAc;AAE7D,SAAR,cAA+B,UAA0B,cAAoC;AAChG,QAAM,kBAAkB,OAAO,YAAY;AAE3C,YAAU,MAAM;AACZ,UAAM,aAAa,aAAa,KAAK,CAAC,KAAK,MAAM,CAAC,QAAQ,KAAK,gBAAgB,QAAQ,CAAC,CAAC,CAAC;AAE1F,QAAI,YAAY;AACZ,sBAAgB,UAAU;AAC1B,aAAO,SAAS;AAAA,IACpB;AAAA,EACJ,GAAG,CAAC,YAAY,CAAC;AACrB","sourcesContent":["import isEqual from \"lodash.isequal\";\nimport { type DependencyList, type EffectCallback, useEffect, useRef } from \"react\";\n\nexport default function useDeepEffect(callback: EffectCallback, dependencies: DependencyList): void {\n const dependenciesRef = useRef(dependencies);\n\n useEffect(() => {\n const hasChanged = dependencies.some((dep, i) => !isEqual(dep, dependenciesRef.current[i]));\n\n if (hasChanged) {\n dependenciesRef.current = dependencies;\n return callback();\n }\n }, [dependencies]);\n}\n"]}
@@ -0,0 +1,78 @@
1
+ import {
2
+ __async,
3
+ __spreadProps,
4
+ __spreadValues
5
+ } from "./chunk-CRTRMMJ7.js";
6
+
7
+ // src/hooks/useDynamicConnect.ts
8
+ import { isEthereumWallet } from "@dynamic-labs/ethereum";
9
+ import { useDynamicContext } from "@dynamic-labs/sdk-react-core";
10
+ import { isSolanaWallet } from "@dynamic-labs/solana";
11
+ import { useCallback, useEffect } from "react";
12
+ function useDynamicConnect(isWeb3Enabled, setIsDynamicSdkLoaded, accessToken) {
13
+ const {
14
+ primaryWallet: connectedDynamicWallet,
15
+ sdkHasLoaded,
16
+ removeWallet,
17
+ handleUnlinkWallet
18
+ } = useDynamicContext();
19
+ const dynamicSdkHasLoaded = !isWeb3Enabled || sdkHasLoaded;
20
+ useEffect(() => {
21
+ if (isWeb3Enabled) {
22
+ setIsDynamicSdkLoaded(dynamicSdkHasLoaded);
23
+ }
24
+ }, [dynamicSdkHasLoaded, isWeb3Enabled]);
25
+ const getAdminSigner = () => __async(this, null, function* () {
26
+ if (!connectedDynamicWallet) {
27
+ return null;
28
+ }
29
+ try {
30
+ if (isEthereumWallet(connectedDynamicWallet)) {
31
+ const dynamicClient = yield connectedDynamicWallet.getWalletClient();
32
+ return __spreadProps(__spreadValues({}, dynamicClient), {
33
+ address: dynamicClient.account.address,
34
+ signer: {
35
+ type: "viem_v2",
36
+ account: __spreadProps(__spreadValues({}, dynamicClient.account), {
37
+ signMessage: (data) => __async(this, null, function* () {
38
+ return yield dynamicClient.signMessage({
39
+ message: data.message
40
+ });
41
+ })
42
+ })
43
+ },
44
+ type: "evm-keypair"
45
+ });
46
+ }
47
+ if (isSolanaWallet(connectedDynamicWallet)) {
48
+ const signer = yield connectedDynamicWallet.getSigner();
49
+ return __spreadProps(__spreadValues({}, signer), {
50
+ address: connectedDynamicWallet.address,
51
+ signer: __spreadValues({}, signer),
52
+ type: "solana-keypair"
53
+ });
54
+ }
55
+ return null;
56
+ } catch (error) {
57
+ console.error("Failed to get admin signer", error);
58
+ return null;
59
+ }
60
+ });
61
+ const cleanup = useCallback(() => {
62
+ if (!accessToken && connectedDynamicWallet) {
63
+ removeWallet(connectedDynamicWallet.id);
64
+ handleUnlinkWallet(connectedDynamicWallet.id);
65
+ }
66
+ }, [accessToken, connectedDynamicWallet, removeWallet, handleUnlinkWallet]);
67
+ return {
68
+ sdkHasLoaded: dynamicSdkHasLoaded,
69
+ getAdminSigner,
70
+ cleanup,
71
+ isDynamicWalletConnected: !!connectedDynamicWallet
72
+ };
73
+ }
74
+
75
+ export {
76
+ useDynamicConnect
77
+ };
78
+ //# sourceMappingURL=chunk-STNIRPZP.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/hooks/useDynamicConnect.ts"],"sourcesContent":["import type { Account, Chain, SignableMessage, Transport, WalletClient } from \"viem\";\nimport { isEthereumWallet } from \"@dynamic-labs/ethereum\";\nimport { useDynamicContext } from \"@dynamic-labs/sdk-react-core\";\nimport { type IEmbeddedWalletSolanaSigner, isSolanaWallet } from \"@dynamic-labs/solana\";\nimport { useCallback, useEffect } from \"react\";\n\ntype EVMWalletClient = WalletClient<Transport, Chain, Account>;\n\nexport type CustomEVMAdminSigner = EVMWalletClient & {\n type: \"evm-keypair\";\n address: `0x${string}`;\n signer: {\n type: \"viem_v2\";\n signMessage: (data: {\n message: SignableMessage;\n }) => Promise<`0x${string}`>;\n account: Account;\n };\n};\n\nexport type CustomSolanaAdminSigner = IEmbeddedWalletSolanaSigner & {\n type: \"solana-keypair\";\n address: string;\n signer: IEmbeddedWalletSolanaSigner;\n};\n\nexport function useDynamicConnect(\n isWeb3Enabled: boolean,\n setIsDynamicSdkLoaded: (sdkHasLoaded: boolean) => void,\n accessToken?: string\n) {\n const {\n primaryWallet: connectedDynamicWallet,\n sdkHasLoaded,\n removeWallet,\n handleUnlinkWallet,\n } = useDynamicContext();\n const dynamicSdkHasLoaded = !isWeb3Enabled || sdkHasLoaded;\n\n useEffect(() => {\n if (isWeb3Enabled) {\n setIsDynamicSdkLoaded(dynamicSdkHasLoaded);\n }\n }, [dynamicSdkHasLoaded, isWeb3Enabled]);\n\n const getAdminSigner = async () => {\n if (!connectedDynamicWallet) {\n return null;\n }\n\n try {\n if (isEthereumWallet(connectedDynamicWallet)) {\n const dynamicClient = await connectedDynamicWallet.getWalletClient();\n return {\n ...dynamicClient,\n address: dynamicClient.account.address,\n signer: {\n type: \"viem_v2\",\n account: {\n ...dynamicClient.account,\n signMessage: async (data: { message: SignableMessage }) => {\n return await dynamicClient.signMessage({\n message: data.message,\n });\n },\n },\n },\n type: \"evm-keypair\",\n } as CustomEVMAdminSigner;\n }\n if (isSolanaWallet(connectedDynamicWallet)) {\n const signer = await connectedDynamicWallet.getSigner();\n return {\n ...signer,\n address: connectedDynamicWallet.address,\n signer: {\n ...signer,\n },\n type: \"solana-keypair\",\n } as CustomSolanaAdminSigner;\n }\n return null;\n } catch (error) {\n console.error(\"Failed to get admin signer\", error);\n return null;\n }\n };\n\n const cleanup = useCallback(() => {\n if (!accessToken && connectedDynamicWallet) {\n removeWallet(connectedDynamicWallet.id);\n handleUnlinkWallet(connectedDynamicWallet.id);\n }\n }, [accessToken, connectedDynamicWallet, removeWallet, handleUnlinkWallet]);\n\n return {\n sdkHasLoaded: dynamicSdkHasLoaded,\n getAdminSigner,\n cleanup,\n isDynamicWalletConnected: !!connectedDynamicWallet,\n };\n}\n"],"mappings":";;;;;;;AACA,SAAS,wBAAwB;AACjC,SAAS,yBAAyB;AAClC,SAA2C,sBAAsB;AACjE,SAAS,aAAa,iBAAiB;AAsBhC,SAAS,kBACZ,eACA,uBACA,aACF;AACE,QAAM;AAAA,IACF,eAAe;AAAA,IACf;AAAA,IACA;AAAA,IACA;AAAA,EACJ,IAAI,kBAAkB;AACtB,QAAM,sBAAsB,CAAC,iBAAiB;AAE9C,YAAU,MAAM;AACZ,QAAI,eAAe;AACf,4BAAsB,mBAAmB;AAAA,IAC7C;AAAA,EACJ,GAAG,CAAC,qBAAqB,aAAa,CAAC;AAEvC,QAAM,iBAAiB,MAAY;AAC/B,QAAI,CAAC,wBAAwB;AACzB,aAAO;AAAA,IACX;AAEA,QAAI;AACA,UAAI,iBAAiB,sBAAsB,GAAG;AAC1C,cAAM,gBAAgB,MAAM,uBAAuB,gBAAgB;AACnE,eAAO,iCACA,gBADA;AAAA,UAEH,SAAS,cAAc,QAAQ;AAAA,UAC/B,QAAQ;AAAA,YACJ,MAAM;AAAA,YACN,SAAS,iCACF,cAAc,UADZ;AAAA,cAEL,aAAa,CAAO,SAAuC;AACvD,uBAAO,MAAM,cAAc,YAAY;AAAA,kBACnC,SAAS,KAAK;AAAA,gBAClB,CAAC;AAAA,cACL;AAAA,YACJ;AAAA,UACJ;AAAA,UACA,MAAM;AAAA,QACV;AAAA,MACJ;AACA,UAAI,eAAe,sBAAsB,GAAG;AACxC,cAAM,SAAS,MAAM,uBAAuB,UAAU;AACtD,eAAO,iCACA,SADA;AAAA,UAEH,SAAS,uBAAuB;AAAA,UAChC,QAAQ,mBACD;AAAA,UAEP,MAAM;AAAA,QACV;AAAA,MACJ;AACA,aAAO;AAAA,IACX,SAAS,OAAO;AACZ,cAAQ,MAAM,8BAA8B,KAAK;AACjD,aAAO;AAAA,IACX;AAAA,EACJ;AAEA,QAAM,UAAU,YAAY,MAAM;AAC9B,QAAI,CAAC,eAAe,wBAAwB;AACxC,mBAAa,uBAAuB,EAAE;AACtC,yBAAmB,uBAAuB,EAAE;AAAA,IAChD;AAAA,EACJ,GAAG,CAAC,aAAa,wBAAwB,cAAc,kBAAkB,CAAC;AAE1E,SAAO;AAAA,IACH,cAAc;AAAA,IACd;AAAA,IACA;AAAA,IACA,0BAA0B,CAAC,CAAC;AAAA,EAChC;AACJ;","names":[]}
@@ -0,0 +1 @@
1
+ "use strict";//# sourceMappingURL=chunk-SZA3XDJ5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":""}
@@ -0,0 +1,50 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkYKL53K3Ccjs = require('./chunk-YKL53K3C.cjs');
4
+
5
+
6
+ var _chunkKEKBOJCFcjs = require('./chunk-KEKBOJCF.cjs');
7
+
8
+ // src/hooks/useCrossmintCheckout.tsx
9
+ var _react = require('react');
10
+ var _jsxruntime = require('react/jsx-runtime');
11
+ var CrossmintCheckoutContext = _react.createContext.call(void 0, void 0);
12
+ function CrossmintCheckoutProvider({ children }) {
13
+ const [order, setOrder] = _react.useState.call(void 0, void 0);
14
+ const [orderClientSecret, setOrderClientSecret] = _react.useState.call(void 0, void 0);
15
+ const { crossmint } = _chunkKEKBOJCFcjs.useCrossmint.call(void 0, );
16
+ const apiClient = _chunkYKL53K3Ccjs.createCrossmintApiClient.call(void 0, crossmint, {
17
+ usageOrigin: "client"
18
+ });
19
+ _react.useEffect.call(void 0, () => {
20
+ const listener = (event) => {
21
+ if (event.origin !== new URL(apiClient.baseUrl).origin) {
22
+ return;
23
+ }
24
+ if (event.data.event !== "order:updated") {
25
+ return;
26
+ }
27
+ const { order: order2, orderClientSecret: orderClientSecret2 } = event.data.data;
28
+ setOrder(order2);
29
+ setOrderClientSecret(orderClientSecret2);
30
+ };
31
+ window.addEventListener("message", listener);
32
+ return () => {
33
+ window.removeEventListener("message", listener);
34
+ };
35
+ }, [order]);
36
+ return /* @__PURE__ */ _jsxruntime.jsx.call(void 0, CrossmintCheckoutContext.Provider, { value: { order, orderClientSecret }, children });
37
+ }
38
+ function useCrossmintCheckout() {
39
+ const context = _react.useContext.call(void 0, CrossmintCheckoutContext);
40
+ if (!context) {
41
+ throw new Error("useCrossmintCheckout must be used within a CrossmintCheckoutProvider");
42
+ }
43
+ return context;
44
+ }
45
+
46
+
47
+
48
+
49
+ exports.CrossmintCheckoutProvider = CrossmintCheckoutProvider; exports.useCrossmintCheckout = useCrossmintCheckout;
50
+ //# sourceMappingURL=chunk-SZMTAO74.cjs.map