@crossmint/client-sdk-react-ui 1.9.3 → 1.10.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (748) hide show
  1. package/dist/chunk-2T2VCED7.js +17 -0
  2. package/dist/chunk-2T2VCED7.js.map +1 -0
  3. package/dist/chunk-33WZFL2D.js +80 -0
  4. package/dist/chunk-33WZFL2D.js.map +1 -0
  5. package/dist/chunk-35RV5AOT.cjs +70 -0
  6. package/dist/chunk-35RV5AOT.cjs.map +1 -0
  7. package/dist/chunk-3C5IQSUX.cjs +50 -0
  8. package/dist/chunk-3C5IQSUX.cjs.map +1 -0
  9. package/dist/chunk-3J6CUUWT.js +50 -0
  10. package/dist/chunk-3J6CUUWT.js.map +1 -0
  11. package/dist/chunk-3KR4GYLF.js +26 -0
  12. package/dist/chunk-3KR4GYLF.js.map +1 -0
  13. package/dist/chunk-3RXUFZTR.cjs +14 -0
  14. package/dist/chunk-3RXUFZTR.cjs.map +1 -0
  15. package/dist/chunk-43P7QWBK.cjs +17 -0
  16. package/dist/chunk-43P7QWBK.cjs.map +1 -0
  17. package/dist/chunk-4DAZAO6Y.cjs +59 -0
  18. package/dist/chunk-4DAZAO6Y.cjs.map +1 -0
  19. package/dist/chunk-5IX763AW.js +10 -0
  20. package/dist/chunk-5IX763AW.js.map +1 -0
  21. package/dist/chunk-5KK3YQWD.cjs +1 -0
  22. package/dist/chunk-5KK3YQWD.cjs.map +1 -0
  23. package/dist/chunk-5RX5WFEW.cjs +11 -0
  24. package/dist/chunk-5RX5WFEW.cjs.map +1 -0
  25. package/dist/chunk-5S4VO6RB.cjs +55 -0
  26. package/dist/chunk-5S4VO6RB.cjs.map +1 -0
  27. package/dist/chunk-6DNBJVR5.js +64 -0
  28. package/dist/chunk-6DNBJVR5.js.map +1 -0
  29. package/dist/chunk-6LO4NSRH.cjs +21 -0
  30. package/dist/chunk-6LO4NSRH.cjs.map +1 -0
  31. package/dist/chunk-7KIY6DLW.js +28 -0
  32. package/dist/chunk-7KIY6DLW.js.map +1 -0
  33. package/dist/chunk-7SBZ6OIH.js +1 -0
  34. package/dist/chunk-7SBZ6OIH.js.map +1 -0
  35. package/dist/chunk-A2JCJ2OV.cjs +119 -0
  36. package/dist/chunk-A2JCJ2OV.cjs.map +1 -0
  37. package/dist/chunk-A7J4DAE7.js +16 -0
  38. package/dist/chunk-A7J4DAE7.js.map +1 -0
  39. package/dist/chunk-ATHR4S2P.js +48 -0
  40. package/dist/chunk-ATHR4S2P.js.map +1 -0
  41. package/dist/chunk-AUEQQ4D3.js +119 -0
  42. package/dist/chunk-AUEQQ4D3.js.map +1 -0
  43. package/dist/chunk-AXZLLRBU.cjs +26 -0
  44. package/dist/chunk-AXZLLRBU.cjs.map +1 -0
  45. package/dist/chunk-B7LYPQ4K.cjs +38 -0
  46. package/dist/chunk-B7LYPQ4K.cjs.map +1 -0
  47. package/dist/chunk-BE2ZLB3L.cjs +19 -0
  48. package/dist/chunk-BE2ZLB3L.cjs.map +1 -0
  49. package/dist/chunk-BKVDVDKX.cjs +1 -0
  50. package/dist/chunk-BKVDVDKX.cjs.map +1 -0
  51. package/dist/chunk-C2VARNXL.js +70 -0
  52. package/dist/chunk-C2VARNXL.js.map +1 -0
  53. package/dist/chunk-CPYPI45H.js +98 -0
  54. package/dist/chunk-CPYPI45H.js.map +1 -0
  55. package/dist/chunk-CRTRMMJ7.js +59 -0
  56. package/dist/chunk-CRTRMMJ7.js.map +1 -0
  57. package/dist/chunk-CUODMU27.js +1265 -0
  58. package/dist/chunk-CUODMU27.js.map +1 -0
  59. package/dist/chunk-DJ32OEWG.cjs +54 -0
  60. package/dist/chunk-DJ32OEWG.cjs.map +1 -0
  61. package/dist/chunk-DZ5MGN25.js +147 -0
  62. package/dist/chunk-DZ5MGN25.js.map +1 -0
  63. package/dist/chunk-ENCR5SUW.cjs +51 -0
  64. package/dist/chunk-ENCR5SUW.cjs.map +1 -0
  65. package/dist/chunk-EOWJ7775.js +18 -0
  66. package/dist/chunk-EOWJ7775.js.map +1 -0
  67. package/dist/chunk-EVL7VEPX.js +14 -0
  68. package/dist/chunk-EVL7VEPX.js.map +1 -0
  69. package/dist/chunk-FKIMKZ4Y.js +17 -0
  70. package/dist/chunk-FKIMKZ4Y.js.map +1 -0
  71. package/dist/chunk-FOCUIKYH.cjs +1265 -0
  72. package/dist/chunk-FOCUIKYH.cjs.map +1 -0
  73. package/dist/chunk-GGE3H4XP.cjs +33 -0
  74. package/dist/chunk-GGE3H4XP.cjs.map +1 -0
  75. package/dist/chunk-GY6G3ZC2.cjs +41 -0
  76. package/dist/chunk-GY6G3ZC2.cjs.map +1 -0
  77. package/dist/chunk-H4F7UVPT.js +34 -0
  78. package/dist/chunk-H4F7UVPT.js.map +1 -0
  79. package/dist/chunk-HATQVB6H.js +19 -0
  80. package/dist/chunk-HATQVB6H.js.map +1 -0
  81. package/dist/chunk-HCW4RO2O.cjs +29 -0
  82. package/dist/chunk-HCW4RO2O.cjs.map +1 -0
  83. package/dist/chunk-HENBZUED.cjs +10 -0
  84. package/dist/chunk-HENBZUED.cjs.map +1 -0
  85. package/dist/chunk-HG57BLPT.js +31 -0
  86. package/dist/chunk-HG57BLPT.js.map +1 -0
  87. package/dist/chunk-HPOZ6I54.cjs +44 -0
  88. package/dist/chunk-HPOZ6I54.cjs.map +1 -0
  89. package/dist/chunk-HYGCZCR2.js +33 -0
  90. package/dist/chunk-HYGCZCR2.js.map +1 -0
  91. package/dist/chunk-I63FQCIV.js +189 -0
  92. package/dist/chunk-I63FQCIV.js.map +1 -0
  93. package/dist/chunk-IP4HQL5I.cjs +147 -0
  94. package/dist/chunk-IP4HQL5I.cjs.map +1 -0
  95. package/dist/chunk-IQPA3QOV.js +27 -0
  96. package/dist/chunk-IQPA3QOV.js.map +1 -0
  97. package/dist/chunk-KAXBBO66.cjs +30 -0
  98. package/dist/chunk-KAXBBO66.cjs.map +1 -0
  99. package/dist/chunk-KEKBOJCF.cjs +50 -0
  100. package/dist/chunk-KEKBOJCF.cjs.map +1 -0
  101. package/dist/chunk-KLWDDALZ.cjs +14 -0
  102. package/dist/chunk-KLWDDALZ.cjs.map +1 -0
  103. package/dist/chunk-KNOUJZN5.cjs +32 -0
  104. package/dist/chunk-KNOUJZN5.cjs.map +1 -0
  105. package/dist/chunk-L3FKENHU.js +14 -0
  106. package/dist/chunk-L3FKENHU.js.map +1 -0
  107. package/dist/chunk-L3L7YEW3.js +22 -0
  108. package/dist/chunk-L3L7YEW3.js.map +1 -0
  109. package/dist/chunk-MH37OJT2.cjs +80 -0
  110. package/dist/chunk-MH37OJT2.cjs.map +1 -0
  111. package/dist/chunk-MJHLKJ6X.cjs +212 -0
  112. package/dist/chunk-MJHLKJ6X.cjs.map +1 -0
  113. package/dist/chunk-MUS7DUPS.cjs +98 -0
  114. package/dist/chunk-MUS7DUPS.cjs.map +1 -0
  115. package/dist/chunk-NMXFWIFA.js +133 -0
  116. package/dist/chunk-NMXFWIFA.js.map +1 -0
  117. package/dist/chunk-OZS4WEKF.js +55 -0
  118. package/dist/chunk-OZS4WEKF.js.map +1 -0
  119. package/dist/chunk-PBSL6JOF.cjs +17 -0
  120. package/dist/chunk-PBSL6JOF.cjs.map +1 -0
  121. package/dist/chunk-PHCGCJSA.js +107 -0
  122. package/dist/chunk-PHCGCJSA.js.map +1 -0
  123. package/dist/chunk-Q3M4UH5U.cjs +48 -0
  124. package/dist/chunk-Q3M4UH5U.cjs.map +1 -0
  125. package/dist/chunk-QDKAU3H2.js +31 -0
  126. package/dist/chunk-QDKAU3H2.js.map +1 -0
  127. package/dist/chunk-QFQWKKVU.js +11 -0
  128. package/dist/chunk-QFQWKKVU.js.map +1 -0
  129. package/dist/chunk-QIPMBCAV.js +86 -0
  130. package/dist/chunk-QIPMBCAV.js.map +1 -0
  131. package/dist/chunk-QJ44PL7L.js +41 -0
  132. package/dist/chunk-QJ44PL7L.js.map +1 -0
  133. package/dist/chunk-QK5J7FD3.cjs +11 -0
  134. package/dist/chunk-QK5J7FD3.cjs.map +1 -0
  135. package/dist/chunk-QKALEGXY.js +153 -0
  136. package/dist/chunk-QKALEGXY.js.map +1 -0
  137. package/dist/chunk-QQXBYOKA.cjs +16 -0
  138. package/dist/chunk-QQXBYOKA.cjs.map +1 -0
  139. package/dist/chunk-QT7UEJZG.cjs +133 -0
  140. package/dist/chunk-QT7UEJZG.cjs.map +1 -0
  141. package/dist/chunk-QTGK3RB5.js +31 -0
  142. package/dist/chunk-QTGK3RB5.js.map +1 -0
  143. package/dist/chunk-QTL5I5C2.js +38 -0
  144. package/dist/chunk-QTL5I5C2.js.map +1 -0
  145. package/dist/chunk-R6IL3WOE.cjs +31 -0
  146. package/dist/chunk-R6IL3WOE.cjs.map +1 -0
  147. package/dist/chunk-RZPQIRIY.js +11 -0
  148. package/dist/chunk-RZPQIRIY.js.map +1 -0
  149. package/dist/chunk-RZT2J42J.js +29 -0
  150. package/dist/chunk-RZT2J42J.js.map +1 -0
  151. package/dist/chunk-SBA6FMFT.cjs +18 -0
  152. package/dist/chunk-SBA6FMFT.cjs.map +1 -0
  153. package/dist/chunk-SVI3L5G5.cjs +86 -0
  154. package/dist/chunk-SVI3L5G5.cjs.map +1 -0
  155. package/dist/chunk-SZA3XDJ5.cjs +1 -0
  156. package/dist/chunk-SZA3XDJ5.cjs.map +1 -0
  157. package/dist/chunk-TIQPIPH5.cjs +31 -0
  158. package/dist/chunk-TIQPIPH5.cjs.map +1 -0
  159. package/dist/chunk-U5EONMPH.js +30 -0
  160. package/dist/chunk-U5EONMPH.js.map +1 -0
  161. package/dist/chunk-UASNCH3A.cjs +27 -0
  162. package/dist/chunk-UASNCH3A.cjs.map +1 -0
  163. package/dist/chunk-UQAKJ4T7.cjs +29 -0
  164. package/dist/chunk-UQAKJ4T7.cjs.map +1 -0
  165. package/dist/chunk-URKPLEPV.cjs +189 -0
  166. package/dist/chunk-URKPLEPV.cjs.map +1 -0
  167. package/dist/chunk-VZIXXIU5.js +32 -0
  168. package/dist/chunk-VZIXXIU5.js.map +1 -0
  169. package/dist/chunk-W2Q46OO4.js +17 -0
  170. package/dist/chunk-W2Q46OO4.js.map +1 -0
  171. package/dist/chunk-W3SNJ5XS.cjs +153 -0
  172. package/dist/chunk-W3SNJ5XS.cjs.map +1 -0
  173. package/dist/chunk-WK5RAFJ3.js +54 -0
  174. package/dist/chunk-WK5RAFJ3.js.map +1 -0
  175. package/dist/chunk-WQ7WULBW.cjs +31 -0
  176. package/dist/chunk-WQ7WULBW.cjs.map +1 -0
  177. package/dist/chunk-XDJ6F7N4.cjs +107 -0
  178. package/dist/chunk-XDJ6F7N4.cjs.map +1 -0
  179. package/dist/chunk-XEZF7G64.js +212 -0
  180. package/dist/chunk-XEZF7G64.js.map +1 -0
  181. package/dist/chunk-XRFRY2LN.js +50 -0
  182. package/dist/chunk-XRFRY2LN.js.map +1 -0
  183. package/dist/chunk-XXJ7LQ44.js +1 -0
  184. package/dist/chunk-XXJ7LQ44.js.map +1 -0
  185. package/dist/chunk-XYMYRPVT.js +1 -0
  186. package/dist/chunk-XYMYRPVT.js.map +1 -0
  187. package/dist/chunk-Y7PF2Z3W.cjs +22 -0
  188. package/dist/chunk-Y7PF2Z3W.cjs.map +1 -0
  189. package/dist/chunk-YE55IKBP.cjs +34 -0
  190. package/dist/chunk-YE55IKBP.cjs.map +1 -0
  191. package/dist/chunk-YNJPYSO4.cjs +17 -0
  192. package/dist/chunk-YNJPYSO4.cjs.map +1 -0
  193. package/dist/chunk-YWVQCHQF.js +51 -0
  194. package/dist/chunk-YWVQCHQF.js.map +1 -0
  195. package/dist/chunk-ZCYU7QA6.cjs +64 -0
  196. package/dist/chunk-ZCYU7QA6.cjs.map +1 -0
  197. package/dist/chunk-ZDQGQY7Z.js +29 -0
  198. package/dist/chunk-ZDQGQY7Z.js.map +1 -0
  199. package/dist/chunk-ZIHCLVCD.js +44 -0
  200. package/dist/chunk-ZIHCLVCD.js.map +1 -0
  201. package/dist/chunk-ZMSST6ZZ.cjs +28 -0
  202. package/dist/chunk-ZMSST6ZZ.cjs.map +1 -0
  203. package/dist/chunk-ZUIS3FET.js +21 -0
  204. package/dist/chunk-ZUIS3FET.js.map +1 -0
  205. package/dist/components/CrossmintNFTCollectionView.cjs +9 -1
  206. package/dist/components/CrossmintNFTCollectionView.cjs.map +1 -0
  207. package/dist/components/CrossmintNFTCollectionView.js +9 -1
  208. package/dist/components/CrossmintNFTCollectionView.js.map +1 -0
  209. package/dist/components/CrossmintNFTDetail.cjs +9 -1
  210. package/dist/components/CrossmintNFTDetail.cjs.map +1 -0
  211. package/dist/components/CrossmintNFTDetail.js +9 -1
  212. package/dist/components/CrossmintNFTDetail.js.map +1 -0
  213. package/dist/components/auth/AuthForm.cjs +37 -1
  214. package/dist/components/auth/AuthForm.cjs.map +1 -0
  215. package/dist/components/auth/AuthForm.js +37 -1
  216. package/dist/components/auth/AuthForm.js.map +1 -0
  217. package/dist/components/auth/AuthFormBackButton.cjs +10 -1
  218. package/dist/components/auth/AuthFormBackButton.cjs.map +1 -0
  219. package/dist/components/auth/AuthFormBackButton.js +10 -1
  220. package/dist/components/auth/AuthFormBackButton.js.map +1 -0
  221. package/dist/components/auth/AuthFormDialog.cjs +37 -1
  222. package/dist/components/auth/AuthFormDialog.cjs.map +1 -0
  223. package/dist/components/auth/AuthFormDialog.js +37 -1
  224. package/dist/components/auth/AuthFormDialog.js.map +1 -0
  225. package/dist/components/auth/EmbeddedAuthForm.cjs +38 -1
  226. package/dist/components/auth/EmbeddedAuthForm.cjs.map +1 -0
  227. package/dist/components/auth/EmbeddedAuthForm.js +38 -1
  228. package/dist/components/auth/EmbeddedAuthForm.js.map +1 -0
  229. package/dist/components/auth/PasskeyPrompt.cjs +14 -1
  230. package/dist/components/auth/PasskeyPrompt.cjs.map +1 -0
  231. package/dist/components/auth/PasskeyPrompt.js +14 -1
  232. package/dist/components/auth/PasskeyPrompt.js.map +1 -0
  233. package/dist/components/auth/methods/email/EmailAuthFlow.cjs +37 -1
  234. package/dist/components/auth/methods/email/EmailAuthFlow.cjs.map +1 -0
  235. package/dist/components/auth/methods/email/EmailAuthFlow.js +37 -1
  236. package/dist/components/auth/methods/email/EmailAuthFlow.js.map +1 -0
  237. package/dist/components/auth/methods/email/EmailOTPInput.cjs +39 -1
  238. package/dist/components/auth/methods/email/EmailOTPInput.cjs.map +1 -0
  239. package/dist/components/auth/methods/email/EmailOTPInput.js +39 -1
  240. package/dist/components/auth/methods/email/EmailOTPInput.js.map +1 -0
  241. package/dist/components/auth/methods/email/EmailSignIn.cjs +37 -1
  242. package/dist/components/auth/methods/email/EmailSignIn.cjs.map +1 -0
  243. package/dist/components/auth/methods/email/EmailSignIn.js +37 -1
  244. package/dist/components/auth/methods/email/EmailSignIn.js.map +1 -0
  245. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs +37 -1
  246. package/dist/components/auth/methods/farcaster/FarcasterSignIn.cjs.map +1 -0
  247. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js +37 -1
  248. package/dist/components/auth/methods/farcaster/FarcasterSignIn.js.map +1 -0
  249. package/dist/components/auth/methods/google/GoogleSignIn.cjs +37 -1
  250. package/dist/components/auth/methods/google/GoogleSignIn.cjs.map +1 -0
  251. package/dist/components/auth/methods/google/GoogleSignIn.js +37 -1
  252. package/dist/components/auth/methods/google/GoogleSignIn.js.map +1 -0
  253. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs +37 -0
  254. package/dist/components/auth/methods/web3/Web3AuthFlow.cjs.map +1 -0
  255. package/dist/components/auth/methods/web3/Web3AuthFlow.d.cts +5 -0
  256. package/dist/components/auth/methods/web3/Web3AuthFlow.d.ts +5 -0
  257. package/dist/components/auth/methods/web3/Web3AuthFlow.js +37 -0
  258. package/dist/components/auth/methods/web3/Web3AuthFlow.js.map +1 -0
  259. package/dist/components/auth/methods/web3/Web3AuthWrapper.cjs +37 -0
  260. package/dist/components/auth/methods/web3/Web3AuthWrapper.cjs.map +1 -0
  261. package/dist/components/auth/methods/web3/Web3AuthWrapper.d.cts +10 -0
  262. package/dist/components/auth/methods/web3/Web3AuthWrapper.d.ts +10 -0
  263. package/dist/components/auth/methods/web3/Web3AuthWrapper.js +37 -0
  264. package/dist/components/auth/methods/web3/Web3AuthWrapper.js.map +1 -0
  265. package/dist/components/auth/methods/web3/Web3ConnectButton.cjs +11 -0
  266. package/dist/components/auth/methods/web3/Web3ConnectButton.cjs.map +1 -0
  267. package/dist/components/auth/methods/web3/Web3ConnectButton.d.cts +13 -0
  268. package/dist/components/auth/methods/web3/Web3ConnectButton.d.ts +13 -0
  269. package/dist/components/auth/methods/web3/Web3ConnectButton.js +11 -0
  270. package/dist/components/auth/methods/web3/Web3ConnectButton.js.map +1 -0
  271. package/dist/components/auth/methods/web3/Web3Connectors.cjs +37 -0
  272. package/dist/components/auth/methods/web3/Web3Connectors.cjs.map +1 -0
  273. package/dist/components/auth/methods/web3/Web3Connectors.d.cts +5 -0
  274. package/dist/components/auth/methods/web3/Web3Connectors.d.ts +5 -0
  275. package/dist/components/auth/methods/web3/Web3Connectors.js +37 -0
  276. package/dist/components/auth/methods/web3/Web3Connectors.js.map +1 -0
  277. package/dist/components/auth/methods/web3/Web3ProviderButton.cjs +9 -0
  278. package/dist/components/auth/methods/web3/Web3ProviderButton.cjs.map +1 -0
  279. package/dist/components/auth/methods/web3/Web3ProviderButton.d.cts +11 -0
  280. package/dist/components/auth/methods/web3/Web3ProviderButton.d.ts +11 -0
  281. package/dist/components/auth/methods/web3/Web3ProviderButton.js +9 -0
  282. package/dist/components/auth/methods/web3/Web3ProviderButton.js.map +1 -0
  283. package/dist/components/auth/methods/web3/Web3SignIn.cjs +37 -0
  284. package/dist/components/auth/methods/web3/Web3SignIn.cjs.map +1 -0
  285. package/dist/components/auth/methods/web3/Web3SignIn.d.cts +5 -0
  286. package/dist/components/auth/methods/web3/Web3SignIn.d.ts +5 -0
  287. package/dist/components/auth/methods/web3/Web3SignIn.js +37 -0
  288. package/dist/components/auth/methods/web3/Web3SignIn.js.map +1 -0
  289. package/dist/components/common/Dialog.cjs +26 -1
  290. package/dist/components/common/Dialog.cjs.map +1 -0
  291. package/dist/components/common/Dialog.d.cts +1 -2
  292. package/dist/components/common/Dialog.d.ts +1 -2
  293. package/dist/components/common/Dialog.js +26 -1
  294. package/dist/components/common/Dialog.js.map +1 -0
  295. package/dist/components/common/Divider.cjs +37 -1
  296. package/dist/components/common/Divider.cjs.map +1 -0
  297. package/dist/components/common/Divider.js +37 -1
  298. package/dist/components/common/Divider.js.map +1 -0
  299. package/dist/components/common/InputOTP.cjs +14 -1
  300. package/dist/components/common/InputOTP.cjs.map +1 -0
  301. package/dist/components/common/InputOTP.d.cts +5 -27
  302. package/dist/components/common/InputOTP.d.ts +5 -27
  303. package/dist/components/common/InputOTP.js +14 -1
  304. package/dist/components/common/InputOTP.js.map +1 -0
  305. package/dist/components/common/PoweredByCrossmint.cjs +10 -1
  306. package/dist/components/common/PoweredByCrossmint.cjs.map +1 -0
  307. package/dist/components/common/PoweredByCrossmint.js +10 -1
  308. package/dist/components/common/PoweredByCrossmint.js.map +1 -0
  309. package/dist/components/common/Spinner.cjs +9 -1
  310. package/dist/components/common/Spinner.cjs.map +1 -0
  311. package/dist/components/common/Spinner.js +9 -1
  312. package/dist/components/common/Spinner.js.map +1 -0
  313. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.cjs +8 -1
  314. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.cjs.map +1 -0
  315. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.js +8 -1
  316. package/dist/components/dynamic-xyz/DynamicContextProviderWrapper.js.map +1 -0
  317. package/dist/components/embed/EmbeddedCheckoutIFrame.cjs +8 -1
  318. package/dist/components/embed/EmbeddedCheckoutIFrame.cjs.map +1 -0
  319. package/dist/components/embed/EmbeddedCheckoutIFrame.js +8 -1
  320. package/dist/components/embed/EmbeddedCheckoutIFrame.js.map +1 -0
  321. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.cjs +11 -1
  322. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.cjs.map +1 -0
  323. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.js +11 -1
  324. package/dist/components/embed/crypto/CryptoEmbeddedCheckout.js.map +1 -0
  325. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.cjs +10 -1
  326. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.cjs.map +1 -0
  327. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.js +10 -1
  328. package/dist/components/embed/crypto/CryptoEmbeddedCheckoutIFrame.js.map +1 -0
  329. package/dist/components/embed/fiat/FiatEmbeddedCheckout.cjs +11 -1
  330. package/dist/components/embed/fiat/FiatEmbeddedCheckout.cjs.map +1 -0
  331. package/dist/components/embed/fiat/FiatEmbeddedCheckout.js +11 -1
  332. package/dist/components/embed/fiat/FiatEmbeddedCheckout.js.map +1 -0
  333. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.cjs +10 -1
  334. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.cjs.map +1 -0
  335. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.js +10 -1
  336. package/dist/components/embed/fiat/FiatEmbeddedCheckoutIFrame.js.map +1 -0
  337. package/dist/components/embed/fiat/FiatPaymentElement_OLD.cjs +75 -1
  338. package/dist/components/embed/fiat/FiatPaymentElement_OLD.cjs.map +1 -0
  339. package/dist/components/embed/fiat/FiatPaymentElement_OLD.js +75 -1
  340. package/dist/components/embed/fiat/FiatPaymentElement_OLD.js.map +1 -0
  341. package/dist/components/embed/index.cjs +14 -1
  342. package/dist/components/embed/index.cjs.map +1 -0
  343. package/dist/components/embed/index.js +14 -1
  344. package/dist/components/embed/index.js.map +1 -0
  345. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs +39 -1
  346. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.cjs.map +1 -0
  347. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js +39 -1
  348. package/dist/components/embed/v3/CrossmintEmbeddedCheckoutV3.js.map +1 -0
  349. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs +38 -1
  350. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.cjs.map +1 -0
  351. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js +38 -1
  352. package/dist/components/embed/v3/EmbeddedCheckoutV3IFrame.js.map +1 -0
  353. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs +135 -1
  354. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.cjs.map +1 -0
  355. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js +135 -1
  356. package/dist/components/embed/v3/crypto/CryptoWalletConnectionHandler.js.map +1 -0
  357. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.cjs +63 -1
  358. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.cjs.map +1 -0
  359. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.js +63 -1
  360. package/dist/components/embed/v3/crypto/utils/handleEvmTransaction.js.map +1 -0
  361. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.cjs +8 -1
  362. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.cjs.map +1 -0
  363. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.js +8 -1
  364. package/dist/components/embed/v3/crypto/utils/handleSendTransaction.js.map +1 -0
  365. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.cjs +51 -1
  366. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.cjs.map +1 -0
  367. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.js +51 -1
  368. package/dist/components/embed/v3/crypto/utils/handleSolanaTransaction.js.map +1 -0
  369. package/dist/components/embed/v3/index.cjs +40 -1
  370. package/dist/components/embed/v3/index.cjs.map +1 -0
  371. package/dist/components/embed/v3/index.js +40 -1
  372. package/dist/components/embed/v3/index.js.map +1 -0
  373. package/dist/components/hosted/CrossmintPayButton.cjs +11 -1
  374. package/dist/components/hosted/CrossmintPayButton.cjs.map +1 -0
  375. package/dist/components/hosted/CrossmintPayButton.js +11 -1
  376. package/dist/components/hosted/CrossmintPayButton.js.map +1 -0
  377. package/dist/components/hosted/index.cjs +12 -1
  378. package/dist/components/hosted/index.cjs.map +1 -0
  379. package/dist/components/hosted/index.js +12 -1
  380. package/dist/components/hosted/index.js.map +1 -0
  381. package/dist/components/hosted/styles.cjs +10 -1
  382. package/dist/components/hosted/styles.cjs.map +1 -0
  383. package/dist/components/hosted/styles.js +10 -1
  384. package/dist/components/hosted/styles.js.map +1 -0
  385. package/dist/components/index.cjs +70 -1
  386. package/dist/components/index.cjs.map +1 -0
  387. package/dist/components/index.js +70 -1
  388. package/dist/components/index.js.map +1 -0
  389. package/dist/consts/version.cjs +8 -1
  390. package/dist/consts/version.cjs.map +1 -0
  391. package/dist/consts/version.js +8 -1
  392. package/dist/consts/version.js.map +1 -0
  393. package/dist/hooks/index.cjs +49 -1
  394. package/dist/hooks/index.cjs.map +1 -0
  395. package/dist/hooks/index.d.cts +3 -2
  396. package/dist/hooks/index.d.ts +3 -2
  397. package/dist/hooks/index.js +49 -1
  398. package/dist/hooks/index.js.map +1 -0
  399. package/dist/hooks/useAuth.cjs +37 -1
  400. package/dist/hooks/useAuth.cjs.map +1 -0
  401. package/dist/hooks/useAuth.d.cts +8 -10
  402. package/dist/hooks/useAuth.d.ts +8 -10
  403. package/dist/hooks/useAuth.js +37 -1
  404. package/dist/hooks/useAuth.js.map +1 -0
  405. package/dist/hooks/useCrossmint.cjs +10 -1
  406. package/dist/hooks/useCrossmint.cjs.map +1 -0
  407. package/dist/hooks/useCrossmint.d.cts +0 -1
  408. package/dist/hooks/useCrossmint.d.ts +0 -1
  409. package/dist/hooks/useCrossmint.js +10 -1
  410. package/dist/hooks/useCrossmint.js.map +1 -0
  411. package/dist/hooks/useCrossmintAuth.cjs +37 -0
  412. package/dist/hooks/useCrossmintAuth.cjs.map +1 -0
  413. package/dist/hooks/useCrossmintAuth.d.cts +11 -0
  414. package/dist/hooks/useCrossmintAuth.d.ts +11 -0
  415. package/dist/hooks/useCrossmintAuth.js +37 -0
  416. package/dist/hooks/useCrossmintAuth.js.map +1 -0
  417. package/dist/hooks/useCrossmintCheckout.cjs +13 -1
  418. package/dist/hooks/useCrossmintCheckout.cjs.map +1 -0
  419. package/dist/hooks/useCrossmintCheckout.d.cts +2 -1
  420. package/dist/hooks/useCrossmintCheckout.d.ts +2 -1
  421. package/dist/hooks/useCrossmintCheckout.js +13 -1
  422. package/dist/hooks/useCrossmintCheckout.js.map +1 -0
  423. package/dist/hooks/useDeepEffect.cjs +8 -1
  424. package/dist/hooks/useDeepEffect.cjs.map +1 -0
  425. package/dist/hooks/useDeepEffect.js +8 -1
  426. package/dist/hooks/useDeepEffect.js.map +1 -0
  427. package/dist/hooks/useEnvironment.cjs +8 -1
  428. package/dist/hooks/useEnvironment.cjs.map +1 -0
  429. package/dist/hooks/useEnvironment.js +8 -1
  430. package/dist/hooks/useEnvironment.js.map +1 -0
  431. package/dist/hooks/useOAuthWindowListener.cjs +37 -1
  432. package/dist/hooks/useOAuthWindowListener.cjs.map +1 -0
  433. package/dist/hooks/useOAuthWindowListener.d.cts +2 -6
  434. package/dist/hooks/useOAuthWindowListener.d.ts +2 -6
  435. package/dist/hooks/useOAuthWindowListener.js +37 -1
  436. package/dist/hooks/useOAuthWindowListener.js.map +1 -0
  437. package/dist/hooks/useWallet.cjs +37 -1
  438. package/dist/hooks/useWallet.cjs.map +1 -0
  439. package/dist/hooks/useWallet.js +37 -1
  440. package/dist/hooks/useWallet.js.map +1 -0
  441. package/dist/icons/alert.cjs +8 -1
  442. package/dist/icons/alert.cjs.map +1 -0
  443. package/dist/icons/alert.js +8 -1
  444. package/dist/icons/alert.js.map +1 -0
  445. package/dist/icons/base64Icons.cjs +12 -0
  446. package/dist/icons/base64Icons.cjs.map +1 -0
  447. package/dist/icons/base64Icons.d.cts +5 -0
  448. package/dist/icons/base64Icons.d.ts +5 -0
  449. package/dist/icons/base64Icons.js +12 -0
  450. package/dist/icons/base64Icons.js.map +1 -0
  451. package/dist/icons/chevronRight.cjs +8 -0
  452. package/dist/icons/chevronRight.cjs.map +1 -0
  453. package/dist/icons/chevronRight.d.cts +9 -0
  454. package/dist/icons/chevronRight.d.ts +9 -0
  455. package/dist/icons/chevronRight.js +8 -0
  456. package/dist/icons/chevronRight.js.map +1 -0
  457. package/dist/icons/discord.cjs +29 -1
  458. package/dist/icons/discord.cjs.map +1 -0
  459. package/dist/icons/discord.js +29 -1
  460. package/dist/icons/discord.js.map +1 -0
  461. package/dist/icons/emailOTP.cjs +8 -1
  462. package/dist/icons/emailOTP.cjs.map +1 -0
  463. package/dist/icons/emailOTP.js +8 -1
  464. package/dist/icons/emailOTP.js.map +1 -0
  465. package/dist/icons/farcaster.cjs +8 -1
  466. package/dist/icons/farcaster.cjs.map +1 -0
  467. package/dist/icons/farcaster.js +8 -1
  468. package/dist/icons/farcaster.js.map +1 -0
  469. package/dist/icons/fingerprint.cjs +8 -1
  470. package/dist/icons/fingerprint.cjs.map +1 -0
  471. package/dist/icons/fingerprint.js +8 -1
  472. package/dist/icons/fingerprint.js.map +1 -0
  473. package/dist/icons/google.cjs +8 -1
  474. package/dist/icons/google.cjs.map +1 -0
  475. package/dist/icons/google.js +8 -1
  476. package/dist/icons/google.js.map +1 -0
  477. package/dist/icons/leftArrow.cjs +8 -1
  478. package/dist/icons/leftArrow.cjs.map +1 -0
  479. package/dist/icons/leftArrow.js +8 -1
  480. package/dist/icons/leftArrow.js.map +1 -0
  481. package/dist/icons/passkey.cjs +8 -1
  482. package/dist/icons/passkey.cjs.map +1 -0
  483. package/dist/icons/passkey.js +8 -1
  484. package/dist/icons/passkey.js.map +1 -0
  485. package/dist/icons/passkeyPromptLogo.cjs +8 -1
  486. package/dist/icons/passkeyPromptLogo.cjs.map +1 -0
  487. package/dist/icons/passkeyPromptLogo.js +8 -1
  488. package/dist/icons/passkeyPromptLogo.js.map +1 -0
  489. package/dist/icons/poweredByLeaf.cjs +8 -1
  490. package/dist/icons/poweredByLeaf.cjs.map +1 -0
  491. package/dist/icons/poweredByLeaf.d.cts +1 -2
  492. package/dist/icons/poweredByLeaf.d.ts +1 -2
  493. package/dist/icons/poweredByLeaf.js +8 -1
  494. package/dist/icons/poweredByLeaf.js.map +1 -0
  495. package/dist/icons/wallet.cjs +8 -0
  496. package/dist/icons/wallet.cjs.map +1 -0
  497. package/dist/icons/wallet.d.cts +9 -0
  498. package/dist/icons/wallet.d.ts +9 -0
  499. package/dist/icons/wallet.js +8 -0
  500. package/dist/icons/wallet.js.map +1 -0
  501. package/dist/icons/x.cjs +29 -1
  502. package/dist/icons/x.cjs.map +1 -0
  503. package/dist/icons/x.js +29 -1
  504. package/dist/icons/x.js.map +1 -0
  505. package/dist/index.cjs +126 -1
  506. package/dist/index.cjs.map +1 -0
  507. package/dist/index.d.cts +2 -3
  508. package/dist/index.d.ts +2 -3
  509. package/dist/index.js +126 -1
  510. package/dist/index.js.map +1 -0
  511. package/dist/providers/CrossmintAuthProvider.cjs +39 -1
  512. package/dist/providers/CrossmintAuthProvider.cjs.map +1 -0
  513. package/dist/providers/CrossmintAuthProvider.d.cts +9 -6
  514. package/dist/providers/CrossmintAuthProvider.d.ts +9 -6
  515. package/dist/providers/CrossmintAuthProvider.js +39 -1
  516. package/dist/providers/CrossmintAuthProvider.js.map +1 -0
  517. package/dist/providers/CrossmintWalletProvider.cjs +39 -1
  518. package/dist/providers/CrossmintWalletProvider.cjs.map +1 -0
  519. package/dist/providers/CrossmintWalletProvider.js +39 -1
  520. package/dist/providers/CrossmintWalletProvider.js.map +1 -0
  521. package/dist/providers/TwindProvider.cjs +9 -1
  522. package/dist/providers/TwindProvider.cjs.map +1 -0
  523. package/dist/providers/TwindProvider.js +9 -1
  524. package/dist/providers/TwindProvider.js.map +1 -0
  525. package/dist/providers/auth/AuthFormProvider.cjs +39 -1
  526. package/dist/providers/auth/AuthFormProvider.cjs.map +1 -0
  527. package/dist/providers/auth/AuthFormProvider.d.cts +7 -9
  528. package/dist/providers/auth/AuthFormProvider.d.ts +7 -9
  529. package/dist/providers/auth/AuthFormProvider.js +39 -1
  530. package/dist/providers/auth/AuthFormProvider.js.map +1 -0
  531. package/dist/providers/auth/FarcasterProvider.cjs +8 -1
  532. package/dist/providers/auth/FarcasterProvider.cjs.map +1 -0
  533. package/dist/providers/auth/FarcasterProvider.js +8 -1
  534. package/dist/providers/auth/FarcasterProvider.js.map +1 -0
  535. package/dist/providers/auth/web3/WagmiAuthProvider.cjs +8 -0
  536. package/dist/providers/auth/web3/WagmiAuthProvider.cjs.map +1 -0
  537. package/dist/providers/auth/web3/WagmiAuthProvider.d.cts +8 -0
  538. package/dist/providers/auth/web3/WagmiAuthProvider.d.ts +8 -0
  539. package/dist/providers/auth/web3/WagmiAuthProvider.js +8 -0
  540. package/dist/providers/auth/web3/WagmiAuthProvider.js.map +1 -0
  541. package/dist/providers/index.cjs +43 -1
  542. package/dist/providers/index.cjs.map +1 -0
  543. package/dist/providers/index.d.cts +2 -1
  544. package/dist/providers/index.d.ts +2 -1
  545. package/dist/providers/index.js +43 -1
  546. package/dist/providers/index.js.map +1 -0
  547. package/dist/testUtils.cjs +8 -1
  548. package/dist/testUtils.cjs.map +1 -0
  549. package/dist/testUtils.d.cts +1 -2
  550. package/dist/testUtils.d.ts +1 -2
  551. package/dist/testUtils.js +8 -1
  552. package/dist/testUtils.js.map +1 -0
  553. package/dist/twind.config.cjs +8 -1
  554. package/dist/twind.config.cjs.map +1 -0
  555. package/dist/twind.config.d.cts +0 -3
  556. package/dist/twind.config.d.ts +0 -3
  557. package/dist/twind.config.js +8 -1
  558. package/dist/twind.config.js.map +1 -0
  559. package/dist/types/auth.cjs +1 -1
  560. package/dist/types/auth.cjs.map +1 -0
  561. package/dist/types/auth.js +1 -0
  562. package/dist/types/auth.js.map +1 -0
  563. package/dist/utils/classNames.cjs +8 -1
  564. package/dist/utils/classNames.cjs.map +1 -0
  565. package/dist/utils/classNames.js +8 -1
  566. package/dist/utils/classNames.js.map +1 -0
  567. package/dist/utils/createCrossmintApiClient.cjs +9 -1
  568. package/dist/utils/createCrossmintApiClient.cjs.map +1 -0
  569. package/dist/utils/createCrossmintApiClient.js +9 -1
  570. package/dist/utils/createCrossmintApiClient.js.map +1 -0
  571. package/package.json +21 -15
  572. package/src/components/auth/AuthForm.tsx +10 -5
  573. package/src/components/auth/AuthFormBackButton.tsx +1 -5
  574. package/src/components/auth/AuthFormDialog.tsx +7 -2
  575. package/src/components/auth/methods/email/EmailOTPInput.tsx +13 -14
  576. package/src/components/auth/methods/email/EmailSignIn.tsx +15 -19
  577. package/src/components/auth/methods/farcaster/FarcasterSignIn.tsx +10 -14
  578. package/src/components/auth/methods/google/GoogleSignIn.tsx +7 -16
  579. package/src/components/auth/methods/web3/Web3AuthFlow.tsx +17 -0
  580. package/src/components/auth/methods/web3/Web3AuthWrapper.tsx +87 -0
  581. package/src/components/auth/methods/web3/Web3ConnectButton.tsx +62 -0
  582. package/src/components/auth/methods/web3/Web3Connectors.tsx +91 -0
  583. package/src/components/auth/methods/web3/Web3ProviderButton.tsx +38 -0
  584. package/src/components/auth/methods/web3/Web3SignIn.tsx +41 -0
  585. package/src/components/common/Dialog.tsx +10 -29
  586. package/src/components/common/Divider.tsx +1 -1
  587. package/src/components/common/InputOTP.tsx +9 -4
  588. package/src/components/common/PoweredByCrossmint.tsx +3 -10
  589. package/src/components/embed/v3/EmbeddedCheckoutV3IFrame.tsx +11 -3
  590. package/src/components/embed/v3/crypto/utils/handleSendTransaction.ts +12 -6
  591. package/src/hooks/index.ts +0 -1
  592. package/src/hooks/useAuth.ts +2 -2
  593. package/src/hooks/useCrossmint.test.tsx +4 -33
  594. package/src/hooks/useCrossmint.tsx +1 -12
  595. package/src/hooks/useCrossmintAuth.ts +12 -0
  596. package/src/hooks/useCrossmintCheckout.tsx +7 -5
  597. package/src/hooks/useOAuthWindowListener.ts +4 -10
  598. package/src/icons/base64Icons.ts +8 -0
  599. package/src/icons/chevronRight.tsx +21 -0
  600. package/src/icons/poweredByLeaf.tsx +81 -80
  601. package/src/icons/wallet.tsx +23 -0
  602. package/src/providers/CrossmintAuthProvider.test.tsx +72 -87
  603. package/src/providers/CrossmintAuthProvider.tsx +52 -49
  604. package/src/providers/CrossmintWalletProvider.test.tsx +15 -9
  605. package/src/providers/auth/AuthFormProvider.test.tsx +61 -19
  606. package/src/providers/auth/AuthFormProvider.tsx +52 -60
  607. package/src/providers/auth/web3/WagmiAuthProvider.tsx +56 -0
  608. package/src/testUtils.ts +0 -4
  609. package/src/twind.config.ts +12 -5
  610. package/dist/chunk-22TFOKGT.js +0 -1
  611. package/dist/chunk-265BME7Y.cjs +0 -1
  612. package/dist/chunk-2POV64LQ.js +0 -1
  613. package/dist/chunk-2TVTJ6GV.js +0 -1
  614. package/dist/chunk-2VQLMU5A.cjs +0 -1
  615. package/dist/chunk-2WSEHVNP.cjs +0 -1
  616. package/dist/chunk-3BUVHV54.js +0 -0
  617. package/dist/chunk-3JUSQ2QE.cjs +0 -1
  618. package/dist/chunk-47YB6ECI.cjs +0 -1
  619. package/dist/chunk-4IHRWQWT.js +0 -1
  620. package/dist/chunk-4ITU7JF2.js +0 -1
  621. package/dist/chunk-5DCSVXPM.js +0 -1
  622. package/dist/chunk-5IFQJPBE.cjs +0 -1
  623. package/dist/chunk-63OMZNLN.js +0 -1
  624. package/dist/chunk-6GZGVNLH.cjs +0 -1
  625. package/dist/chunk-6IWCD2YY.cjs +0 -1
  626. package/dist/chunk-72MMCJ2E.js +0 -0
  627. package/dist/chunk-72P3JMXX.js +0 -1
  628. package/dist/chunk-77PBG2JJ.js +0 -1
  629. package/dist/chunk-7CPFUVAV.js +0 -1
  630. package/dist/chunk-7HSC6Q3U.js +0 -1
  631. package/dist/chunk-7M23WP3P.js +0 -1
  632. package/dist/chunk-7MUBJ5DE.cjs +0 -1
  633. package/dist/chunk-7MYTZUEK.js +0 -1
  634. package/dist/chunk-7WTGDAJW.js +0 -1
  635. package/dist/chunk-7YJMOHOO.js +0 -1
  636. package/dist/chunk-7Z2T6P5L.cjs +0 -1
  637. package/dist/chunk-A3QHXPHD.js +0 -1
  638. package/dist/chunk-AMP2ZDXD.cjs +0 -1
  639. package/dist/chunk-ASU2E6GU.js +0 -1
  640. package/dist/chunk-B7GHWWM6.cjs +0 -1
  641. package/dist/chunk-BHJ5JTA2.js +0 -1
  642. package/dist/chunk-BR77Q3PK.cjs +0 -1
  643. package/dist/chunk-C3JRTLQP.js +0 -1
  644. package/dist/chunk-D3255LVM.cjs +0 -1
  645. package/dist/chunk-DCG56C7R.cjs +0 -1
  646. package/dist/chunk-DGZQUCSD.js +0 -1
  647. package/dist/chunk-E4TBJMOO.js +0 -1
  648. package/dist/chunk-E75QRQ6Q.js +0 -1
  649. package/dist/chunk-E7T2NBUP.cjs +0 -1
  650. package/dist/chunk-EK4Y233O.js +0 -1
  651. package/dist/chunk-EUXGP4IN.cjs +0 -1
  652. package/dist/chunk-EVADF7QA.js +0 -1
  653. package/dist/chunk-FFIN4TCT.cjs +0 -1
  654. package/dist/chunk-FON43I6G.cjs +0 -1
  655. package/dist/chunk-FYYNH6VT.js +0 -1
  656. package/dist/chunk-G6WJLBM7.js +0 -1
  657. package/dist/chunk-GJTS3VOX.cjs +0 -1
  658. package/dist/chunk-HFIIBQLK.js +0 -1
  659. package/dist/chunk-HHQZJJKE.js +0 -1
  660. package/dist/chunk-HWGRWJUT.cjs +0 -1
  661. package/dist/chunk-HYI4R74V.cjs +0 -1
  662. package/dist/chunk-I4GMMHQR.cjs +0 -1
  663. package/dist/chunk-IAJBYU5C.js +0 -1
  664. package/dist/chunk-IKY4YQDO.js +0 -1
  665. package/dist/chunk-IMV35JZB.cjs +0 -1
  666. package/dist/chunk-JGM3G5E2.js +0 -1
  667. package/dist/chunk-JSNLFGET.js +0 -1
  668. package/dist/chunk-JSNUJJQJ.js +0 -1
  669. package/dist/chunk-KY4UBKAO.cjs +0 -1
  670. package/dist/chunk-LF6WLVWL.js +0 -1
  671. package/dist/chunk-LZ5XEFKY.cjs +0 -1
  672. package/dist/chunk-MC3WZMO2.cjs +0 -1
  673. package/dist/chunk-MJMMQJVO.cjs +0 -1
  674. package/dist/chunk-N4QVZLJB.js +0 -1
  675. package/dist/chunk-NBJIJZGO.js +0 -1
  676. package/dist/chunk-NETRNZFY.js +0 -1
  677. package/dist/chunk-NFLGT52C.cjs +0 -1
  678. package/dist/chunk-NRN4WNQL.cjs +0 -1
  679. package/dist/chunk-NTIINLZM.cjs +0 -1
  680. package/dist/chunk-NY7SDPXG.js +0 -1
  681. package/dist/chunk-NZQIZ4ZY.cjs +0 -1
  682. package/dist/chunk-O5J2ZIJ6.cjs +0 -1
  683. package/dist/chunk-OEAPYLBR.cjs +0 -1
  684. package/dist/chunk-OOLXYAO7.js +0 -1
  685. package/dist/chunk-OVBCANGC.cjs +0 -1
  686. package/dist/chunk-PNUQCT4M.cjs +0 -1
  687. package/dist/chunk-PXDN3KFO.js +0 -1
  688. package/dist/chunk-QASKWI5Y.js +0 -1
  689. package/dist/chunk-QDOP7HRG.js +0 -1
  690. package/dist/chunk-QP4CMLMG.cjs +0 -1
  691. package/dist/chunk-QYQERFYL.cjs +0 -1
  692. package/dist/chunk-QZZXNJMU.js +0 -1
  693. package/dist/chunk-RGOIGFPQ.cjs +0 -1
  694. package/dist/chunk-RJGOALQ6.cjs +0 -1
  695. package/dist/chunk-RUQHINLO.js +0 -1
  696. package/dist/chunk-RYQRCUKB.js +0 -1
  697. package/dist/chunk-S73E6EBO.cjs +0 -1
  698. package/dist/chunk-SC5LQJBG.cjs +0 -1
  699. package/dist/chunk-SFDQPSSP.js +0 -1
  700. package/dist/chunk-SJFJI2OT.cjs +0 -1
  701. package/dist/chunk-SKRQKK2T.cjs +0 -1
  702. package/dist/chunk-SRQAQHYK.cjs +0 -1
  703. package/dist/chunk-SSWWXH5O.cjs +0 -1
  704. package/dist/chunk-SYDMK3TQ.js +0 -1
  705. package/dist/chunk-T422SK4C.cjs +0 -1
  706. package/dist/chunk-T5PSAJ3R.cjs +0 -1
  707. package/dist/chunk-TM7WDKYR.cjs +0 -1
  708. package/dist/chunk-TNCETEEL.js +0 -1
  709. package/dist/chunk-U6FTIAJO.js +0 -1
  710. package/dist/chunk-U7JNW7VQ.js +0 -1
  711. package/dist/chunk-UAFW3OWA.js +0 -1
  712. package/dist/chunk-UI2RH2CP.js +0 -1
  713. package/dist/chunk-UOHM5SBY.cjs +0 -1
  714. package/dist/chunk-UX6T7EAP.js +0 -1
  715. package/dist/chunk-V2YSOSYZ.cjs +0 -1
  716. package/dist/chunk-V4LKDMLV.js +0 -1
  717. package/dist/chunk-VI6TW7JT.cjs +0 -1
  718. package/dist/chunk-VIJFGMUH.js +0 -1
  719. package/dist/chunk-VWBAHXIO.cjs +0 -1
  720. package/dist/chunk-W4UPIFFS.cjs +0 -1
  721. package/dist/chunk-WABJHG6B.cjs +0 -1
  722. package/dist/chunk-WARJE3L2.cjs +0 -1
  723. package/dist/chunk-WF3RK7VH.js +0 -1
  724. package/dist/chunk-X5BBXO27.cjs +0 -1
  725. package/dist/chunk-XIVIIEY5.js +0 -1
  726. package/dist/chunk-XMNGTV3F.cjs +0 -1
  727. package/dist/chunk-Y5RJUIQB.cjs +0 -1
  728. package/dist/chunk-YKC4ST2J.js +0 -1
  729. package/dist/chunk-YLAJFXWZ.js +0 -0
  730. package/dist/chunk-YVTAV6EU.cjs +0 -1
  731. package/dist/chunk-Z2FGFHRQ.cjs +0 -1
  732. package/dist/hooks/useAuthSignIn.cjs +0 -1
  733. package/dist/hooks/useAuthSignIn.d.cts +0 -21
  734. package/dist/hooks/useAuthSignIn.d.ts +0 -21
  735. package/dist/hooks/useAuthSignIn.js +0 -1
  736. package/dist/hooks/useRefreshToken.cjs +0 -1
  737. package/dist/hooks/useRefreshToken.d.cts +0 -11
  738. package/dist/hooks/useRefreshToken.d.ts +0 -11
  739. package/dist/hooks/useRefreshToken.js +0 -1
  740. package/dist/utils/authCookies.cjs +0 -1
  741. package/dist/utils/authCookies.d.cts +0 -5
  742. package/dist/utils/authCookies.d.ts +0 -5
  743. package/dist/utils/authCookies.js +0 -1
  744. package/src/hooks/useAuthSignIn.ts +0 -117
  745. package/src/hooks/useRefreshToken.test.ts +0 -155
  746. package/src/hooks/useRefreshToken.ts +0 -68
  747. package/src/utils/authCookies.test.ts +0 -41
  748. package/src/utils/authCookies.ts +0 -13
@@ -1,19 +1,22 @@
1
- import { deleteCookie } from "@/utils/authCookies";
2
1
  import { SESSION_PREFIX, REFRESH_TOKEN_PREFIX } from "@crossmint/common-sdk-auth";
3
- import { fireEvent, render } from "@testing-library/react";
2
+ import { fireEvent, render, waitFor } from "@testing-library/react";
4
3
  import { type ReactNode, act } from "react";
5
- import { beforeEach, describe, expect, vi } from "vitest";
4
+ import { beforeEach, describe, expect, vi, it, type MockInstance } from "vitest";
6
5
  import { mock } from "vitest-mock-extended";
7
6
 
8
- import { CrossmintAuthService, getJWTExpiration } from "@crossmint/client-sdk-auth";
7
+ import { CrossmintAuth as CrossmintAuthClient, getJWTExpiration, deleteCookie } from "@crossmint/client-sdk-auth";
9
8
  import { type EVMSmartWallet, SmartWalletSDK } from "@crossmint/client-sdk-smart-wallet";
10
9
  import { createCrossmint } from "@crossmint/common-sdk-base";
11
10
 
12
11
  import { useAuth, useWallet } from "../hooks";
13
12
  import { CrossmintProvider, useCrossmint } from "../hooks/useCrossmint";
14
- import { MOCK_API_KEY, waitForSettledState } from "../testUtils";
13
+ import { MOCK_API_KEY } from "../testUtils";
15
14
  import { CrossmintAuthProvider, type CrossmintAuthWalletConfig } from "./CrossmintAuthProvider";
16
15
 
16
+ vi.mock("./auth/web3/WagmiAuthProvider", () => ({
17
+ WagmiAuthProvider: ({ children }: { children: ReactNode }) => <>{children}</>,
18
+ }));
19
+
17
20
  vi.mock("@crossmint/client-sdk-smart-wallet", async () => {
18
21
  const actual = await vi.importActual("@crossmint/client-sdk-smart-wallet");
19
22
  return {
@@ -26,10 +29,14 @@ vi.mock("@crossmint/client-sdk-smart-wallet", async () => {
26
29
 
27
30
  vi.mock("@crossmint/common-sdk-base", async () => {
28
31
  const actual = await vi.importActual("@crossmint/common-sdk-base");
32
+
33
+ class MockCrossmintApiClient {}
34
+
29
35
  return {
30
36
  ...actual,
31
37
  createCrossmint: vi.fn(),
32
38
  validateApiKeyAndGetCrossmintBaseUrl: vi.fn(),
39
+ CrossmintApiClient: MockCrossmintApiClient,
33
40
  };
34
41
  });
35
42
 
@@ -38,19 +45,6 @@ vi.mock("@crossmint/client-sdk-auth", async () => {
38
45
  return {
39
46
  ...actual,
40
47
  getJWTExpiration: vi.fn(),
41
- CrossmintAuthService: vi.fn().mockImplementation(() => ({
42
- refreshAuthMaterial: vi.fn().mockResolvedValue({
43
- jwt: "new-mock-jwt",
44
- refreshToken: {
45
- secret: "new-mock-refresh-token",
46
- expiresAt: new Date(Date.now() + 1000 * 60 * 60).toISOString(),
47
- },
48
- user: {
49
- id: "123",
50
- email: "test@test.com",
51
- },
52
- }),
53
- })),
54
48
  };
55
49
  });
56
50
 
@@ -69,9 +63,9 @@ function renderAuthProvider({
69
63
  }
70
64
 
71
65
  function TestComponent() {
72
- const { setJwt, setRefreshToken } = useCrossmint();
66
+ const { setJwt } = useCrossmint();
73
67
  const { wallet, status: walletStatus, error } = useWallet();
74
- const { status: authStatus, refreshToken } = useAuth();
68
+ const { status: authStatus } = useAuth();
75
69
  return (
76
70
  <div>
77
71
  <div data-testid="error">{error?.message ?? "No Error"}</div>
@@ -85,14 +79,6 @@ function TestComponent() {
85
79
  <button data-testid="clear-jwt-button" onClick={() => setJwt(undefined)}>
86
80
  Clear JWT
87
81
  </button>
88
-
89
- <div data-testid="refresh-token">{refreshToken ?? "No Refresh Token"}</div>
90
- <button data-testid="set-refresh-token" onClick={() => setRefreshToken("mock-refresh-token")}>
91
- Set Refresh Token
92
- </button>
93
- <button data-testid="clear-refresh-token-button" onClick={() => setRefreshToken(undefined)}>
94
- Clear Refresh Token
95
- </button>
96
82
  </div>
97
83
  );
98
84
  }
@@ -101,11 +87,33 @@ describe("CrossmintAuthProvider", () => {
101
87
  let mockSDK: SmartWalletSDK;
102
88
  let mockWallet: EVMSmartWallet;
103
89
  let embeddedWallets: CrossmintAuthWalletConfig;
104
- let mockCrossmintAuthService: { refreshAuthMaterial: ReturnType<typeof vi.fn> };
90
+ let handleRefreshAuthMaterialSpy: MockInstance;
91
+ let getOAuthUrlSpy: MockInstance;
105
92
 
106
93
  beforeEach(() => {
107
94
  vi.resetAllMocks();
108
- vi.mocked(createCrossmint).mockImplementation(() => ({}) as any);
95
+ vi.mocked(createCrossmint).mockImplementation(
96
+ () =>
97
+ ({
98
+ apiKey: MOCK_API_KEY,
99
+ }) as any
100
+ );
101
+
102
+ global.fetch = vi.fn().mockImplementation((url: string) => {
103
+ if (url.includes("/auth/social/")) {
104
+ return Promise.resolve({
105
+ ok: true,
106
+ json: () =>
107
+ Promise.resolve({
108
+ oauthUrl: "https://oauth.example.com",
109
+ }),
110
+ });
111
+ }
112
+ return Promise.resolve({
113
+ ok: true,
114
+ json: () => Promise.resolve({}),
115
+ });
116
+ });
109
117
 
110
118
  mockSDK = mock<SmartWalletSDK>();
111
119
  mockWallet = mock<EVMSmartWallet>();
@@ -122,19 +130,21 @@ describe("CrossmintAuthProvider", () => {
122
130
  deleteCookie(REFRESH_TOKEN_PREFIX);
123
131
  deleteCookie(SESSION_PREFIX);
124
132
 
125
- mockCrossmintAuthService = {
126
- refreshAuthMaterial: vi.fn().mockResolvedValue({
127
- jwt: "new-mock-jwt",
128
- refreshToken: {
129
- secret: "new-mock-refresh-token",
130
- expiresAt: new Date(Date.now() + 1000 * 60 * 60).toISOString(),
131
- },
132
- }),
133
- };
134
- vi.mocked(CrossmintAuthService).mockImplementation(() => mockCrossmintAuthService as any);
133
+ handleRefreshAuthMaterialSpy = vi.spyOn(CrossmintAuthClient.prototype, "handleRefreshAuthMaterial");
134
+ getOAuthUrlSpy = vi.spyOn(CrossmintAuthClient.prototype, "getOAuthUrl").mockResolvedValue("mock-oauth-url");
135
+ // Casts as any because refreshAuthMaterial is protected
136
+ vi.spyOn(CrossmintAuthClient.prototype as any, "refreshAuthMaterial").mockResolvedValue(
137
+ Promise.resolve({
138
+ jwt: "mock-jwt",
139
+ refreshToken: { secret: "mock-refresh-token", expiresAt: 123456 },
140
+ user: {},
141
+ })
142
+ );
143
+ const mockCrossmintAuth = CrossmintAuthClient.from(createCrossmint({ apiKey: MOCK_API_KEY }));
144
+ vi.spyOn(CrossmintAuthClient, "from").mockReturnValue(mockCrossmintAuth);
135
145
  });
136
146
 
137
- test("Happy path", async () => {
147
+ it("Happy path", async () => {
138
148
  await act(() => {
139
149
  document.cookie = `${REFRESH_TOKEN_PREFIX}=mock-refresh-token; path=/; SameSite=Lax;`;
140
150
  document.cookie = `${SESSION_PREFIX}=mock-jwt; path=/; SameSite=Lax;`;
@@ -147,25 +157,24 @@ describe("CrossmintAuthProvider", () => {
147
157
 
148
158
  expect(getByTestId("wallet-status").textContent).toBe("in-progress");
149
159
  expect(getByTestId("auth-status").textContent).toBe("logged-in");
150
- expect(getByTestId("refresh-token").textContent).toBe("No Refresh Token");
151
160
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
152
161
  expect(getByTestId("error").textContent).toBe("No Error");
153
162
 
154
- await waitForSettledState(() => {
163
+ await waitFor(() => {
155
164
  expect(getByTestId("wallet-status").textContent).toBe("loaded");
156
165
  expect(getByTestId("auth-status").textContent).toBe("logged-in");
157
- expect(getByTestId("refresh-token").textContent).toBe("new-mock-refresh-token");
158
166
  expect(getByTestId("wallet").textContent).toBe("Wallet Loaded");
159
167
  expect(getByTestId("error").textContent).toBe("No Error");
160
168
  });
161
169
 
162
- expect(mockCrossmintAuthService.refreshAuthMaterial).toHaveBeenCalledOnce();
170
+ expect(handleRefreshAuthMaterialSpy).toHaveBeenCalledOnce();
171
+ expect(getOAuthUrlSpy).toHaveBeenCalled();
163
172
  expect(vi.mocked(mockSDK.getOrCreateWallet)).toHaveBeenCalledOnce();
164
173
  });
165
174
 
166
- test(`When "createOnLogin" is "false", wallet is not loaded`, async () => {
175
+ it(`When "createOnLogin" is "false", wallet is not loaded`, async () => {
167
176
  document.cookie = `${SESSION_PREFIX}=mock-jwt; path=/;SameSite=Lax;`;
168
- const { getByTestId } = renderAuthProvider({
177
+ const { getByTestId } = await renderAuthProvider({
169
178
  children: <TestComponent />,
170
179
  embeddedWallets: {
171
180
  defaultChain: "polygon",
@@ -174,7 +183,7 @@ describe("CrossmintAuthProvider", () => {
174
183
  },
175
184
  });
176
185
 
177
- await waitForSettledState(() => {
186
+ await waitFor(() => {
178
187
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
179
188
  expect(getByTestId("wallet-status").textContent).toBe("not-loaded");
180
189
  });
@@ -182,13 +191,13 @@ describe("CrossmintAuthProvider", () => {
182
191
  expect(vi.mocked(mockSDK.getOrCreateWallet)).not.toHaveBeenCalled();
183
192
  });
184
193
 
185
- test(`When the jwt from crossmint provider is not defined, wallet is not loaded`, async () => {
186
- const { getByTestId } = renderAuthProvider({
194
+ it(`When the jwt from crossmint provider is not defined, wallet is not loaded`, async () => {
195
+ const { getByTestId } = await renderAuthProvider({
187
196
  children: <TestComponent />,
188
197
  embeddedWallets,
189
198
  });
190
199
 
191
- await waitForSettledState(() => {
200
+ await waitFor(() => {
192
201
  expect(getByTestId("wallet-status").textContent).toBe("not-loaded");
193
202
  expect(getByTestId("auth-status").textContent).toBe("logged-out");
194
203
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
@@ -197,14 +206,14 @@ describe("CrossmintAuthProvider", () => {
197
206
  expect(vi.mocked(mockSDK.getOrCreateWallet)).not.toHaveBeenCalled();
198
207
  });
199
208
 
200
- test("When the jwt is cleared, so is the wallet", async () => {
209
+ it("When the jwt is cleared, so is the wallet", async () => {
201
210
  document.cookie = `${SESSION_PREFIX}=mock-jwt; path=/;SameSite=Lax;`;
202
- const { getByTestId } = renderAuthProvider({
211
+ const { getByTestId } = await renderAuthProvider({
203
212
  children: <TestComponent />,
204
213
  embeddedWallets,
205
214
  });
206
215
 
207
- await waitForSettledState(() => {
216
+ await waitFor(() => {
208
217
  expect(getByTestId("wallet-status").textContent).toBe("loaded");
209
218
  expect(getByTestId("auth-status").textContent).toBe("logged-in");
210
219
  expect(getByTestId("wallet").textContent).toBe("Wallet Loaded");
@@ -212,7 +221,7 @@ describe("CrossmintAuthProvider", () => {
212
221
 
213
222
  fireEvent.click(getByTestId("clear-jwt-button"));
214
223
 
215
- await waitForSettledState(() => {
224
+ await waitFor(() => {
216
225
  expect(getByTestId("wallet-status").textContent).toBe("not-loaded");
217
226
  expect(getByTestId("auth-status").textContent).toBe("logged-out");
218
227
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
@@ -221,68 +230,44 @@ describe("CrossmintAuthProvider", () => {
221
230
  expect(vi.mocked(mockSDK.getOrCreateWallet)).toHaveBeenCalledOnce();
222
231
  });
223
232
 
224
- test(`Logging in and asserting the auth status`, async () => {
225
- const { getByTestId } = renderAuthProvider({
233
+ it(`Logging in and asserting the auth status`, async () => {
234
+ const { getByTestId } = await renderAuthProvider({
226
235
  children: <TestComponent />,
227
236
  embeddedWallets,
228
237
  });
229
238
 
230
- await waitForSettledState(() => {
239
+ await waitFor(() => {
231
240
  expect(getByTestId("auth-status").textContent).toBe("logged-out");
232
241
  });
233
242
 
234
243
  fireEvent.click(getByTestId("jwt-input"));
235
244
 
236
- await waitForSettledState(() => {
245
+ await waitFor(() => {
237
246
  expect(getByTestId("auth-status").textContent).toBe("logged-in");
238
247
  });
239
248
  });
240
249
 
241
- test("Setting and clearing refresh token", async () => {
242
- const { getByTestId } = renderAuthProvider({
243
- children: <TestComponent />,
244
- embeddedWallets,
245
- });
246
-
247
- expect(getByTestId("refresh-token").textContent).toBe("No Refresh Token");
248
-
249
- fireEvent.click(getByTestId("set-refresh-token"));
250
-
251
- await waitForSettledState(() => {
252
- expect(getByTestId("refresh-token").textContent).toBe("mock-refresh-token");
253
- });
254
-
255
- fireEvent.click(getByTestId("clear-refresh-token-button"));
256
-
257
- await waitForSettledState(() => {
258
- expect(getByTestId("refresh-token").textContent).toBe("No Refresh Token");
259
- });
260
- });
261
-
262
- test("Logout clears both JWT and refresh token", async () => {
250
+ it("Logout clears JWT", async () => {
263
251
  await act(() => {
264
252
  document.cookie = `${REFRESH_TOKEN_PREFIX}=mock-refresh-token; path=/; SameSite=Lax;`;
265
253
  document.cookie = `${SESSION_PREFIX}=mock-jwt; path=/; SameSite=Lax;`;
266
254
  });
267
255
 
268
- const { getByTestId } = renderAuthProvider({
256
+ const { getByTestId } = await renderAuthProvider({
269
257
  children: <TestComponent />,
270
258
  embeddedWallets,
271
259
  });
272
260
 
273
- await waitForSettledState(() => {
261
+ await waitFor(() => {
274
262
  expect(getByTestId("auth-status").textContent).toBe("logged-in");
275
- expect(getByTestId("refresh-token").textContent).toBe("new-mock-refresh-token");
276
263
  });
277
264
 
278
265
  await act(() => {
279
266
  fireEvent.click(getByTestId("clear-jwt-button"));
280
- fireEvent.click(getByTestId("clear-refresh-token-button"));
281
267
  });
282
268
 
283
- await waitForSettledState(() => {
269
+ await waitFor(() => {
284
270
  expect(getByTestId("auth-status").textContent).toBe("logged-out");
285
- expect(getByTestId("refresh-token").textContent).toBe("No Refresh Token");
286
271
  });
287
272
  });
288
273
  });
@@ -1,19 +1,13 @@
1
- import { type ReactNode, createContext, useEffect, useState } from "react";
1
+ import { type ReactNode, createContext, useEffect, useMemo, useRef, useState } from "react";
2
2
 
3
- import { CrossmintAuthService } from "@crossmint/client-sdk-auth";
3
+ import { CrossmintAuth, getCookie } from "@crossmint/client-sdk-auth";
4
4
  import type { EVMSmartWalletChain } from "@crossmint/client-sdk-smart-wallet";
5
5
  import { type UIConfig, validateApiKeyAndGetCrossmintBaseUrl } from "@crossmint/common-sdk-base";
6
- import {
7
- SESSION_PREFIX,
8
- REFRESH_TOKEN_PREFIX,
9
- type AuthMaterialWithUser,
10
- type SDKExternalUser,
11
- } from "@crossmint/common-sdk-auth";
6
+ import { type AuthMaterialWithUser, SESSION_PREFIX, type SDKExternalUser } from "@crossmint/common-sdk-auth";
12
7
 
13
8
  import AuthFormDialog from "../components/auth/AuthFormDialog";
14
- import { useCrossmint, useRefreshToken, useWallet } from "../hooks";
9
+ import { useCrossmint, useWallet } from "../hooks";
15
10
  import { CrossmintWalletProvider } from "./CrossmintWalletProvider";
16
- import { deleteCookie, getCookie, setCookie } from "@/utils/authCookies";
17
11
  import { AuthFormProvider } from "./auth/AuthFormProvider";
18
12
  import { TwindProvider } from "./TwindProvider";
19
13
 
@@ -24,33 +18,40 @@ export type CrossmintAuthWalletConfig = {
24
18
  showPasskeyHelpers?: boolean;
25
19
  };
26
20
 
27
- export type LoginMethod = "email" | "google" | "farcaster";
21
+ export type LoginMethod = "email" | "google" | "farcaster" | "web3";
28
22
 
29
23
  export type CrossmintAuthProviderProps = {
30
24
  embeddedWallets?: CrossmintAuthWalletConfig;
31
25
  appearance?: UIConfig;
32
26
  children: ReactNode;
33
27
  loginMethods?: LoginMethod[];
28
+ refreshRoute?: string;
29
+ logoutRoute?: string;
34
30
  };
35
31
 
36
32
  type AuthStatus = "logged-in" | "logged-out" | "in-progress";
37
33
 
38
- type AuthContextType = {
34
+ export interface AuthContextType {
35
+ crossmintAuth?: CrossmintAuth;
39
36
  login: () => void;
40
37
  logout: () => void;
41
38
  jwt?: string;
42
- refreshToken?: string;
43
39
  user?: SDKExternalUser;
44
40
  status: AuthStatus;
45
41
  getUser: () => void;
46
- };
42
+ }
47
43
 
48
- export const AuthContext = createContext<AuthContextType>({
44
+ const defaultContextValue: AuthContextType = {
45
+ crossmintAuth: undefined,
49
46
  login: () => {},
50
47
  logout: () => {},
48
+ jwt: undefined,
49
+ user: undefined,
51
50
  status: "logged-out",
52
51
  getUser: () => {},
53
- });
52
+ };
53
+
54
+ export const AuthContext = createContext<AuthContextType>(defaultContextValue);
54
55
 
55
56
  const defaultEmbeddedWallets: CrossmintAuthWalletConfig = {
56
57
  defaultChain: "base-sepolia",
@@ -63,33 +64,38 @@ export function CrossmintAuthProvider({
63
64
  children,
64
65
  appearance,
65
66
  loginMethods = ["email", "google"],
67
+ refreshRoute,
68
+ logoutRoute,
66
69
  }: CrossmintAuthProviderProps) {
67
70
  const [user, setUser] = useState<SDKExternalUser | undefined>(undefined);
68
- const { crossmint, setJwt, setRefreshToken } = useCrossmint(
69
- "CrossmintAuthProvider must be used within CrossmintProvider"
70
- );
71
- const crossmintAuthService = new CrossmintAuthService(crossmint.apiKey);
71
+ const { crossmint, setJwt } = useCrossmint("CrossmintAuthProvider must be used within CrossmintProvider");
72
+ // Only create the CrossmintAuth instance once, even in StrictMode, as the constructor calls /refresh
73
+ // It can only be called once to avoid race conditions
74
+ const crossmintAuthRef = useRef<CrossmintAuth | null>(null);
75
+ // biome-ignore lint/correctness/useExhaustiveDependencies: crossmint can't be a dependency because it updates with each jwt change
76
+ const crossmintAuth = useMemo(() => {
77
+ if (!crossmintAuthRef.current) {
78
+ crossmintAuthRef.current = CrossmintAuth.from(crossmint, {
79
+ callbacks: {
80
+ onLogout: () => {
81
+ setJwt(undefined);
82
+ setUser(undefined);
83
+ },
84
+ onTokenRefresh: (authMaterial: AuthMaterialWithUser) => {
85
+ setJwt(authMaterial.jwt);
86
+ setUser(authMaterial.user);
87
+ },
88
+ },
89
+ refreshRoute,
90
+ logoutRoute,
91
+ });
92
+ }
93
+ return crossmintAuthRef.current;
94
+ }, []);
95
+
72
96
  const crossmintBaseUrl = validateApiKeyAndGetCrossmintBaseUrl(crossmint.apiKey);
73
97
  const [dialogOpen, setDialogOpen] = useState(false);
74
98
 
75
- const setAuthMaterial = (authMaterial: AuthMaterialWithUser) => {
76
- setCookie(SESSION_PREFIX, authMaterial.jwt);
77
- setCookie(REFRESH_TOKEN_PREFIX, authMaterial.refreshToken.secret, authMaterial.refreshToken.expiresAt);
78
- setJwt(authMaterial.jwt);
79
- setRefreshToken(authMaterial.refreshToken.secret);
80
- setUser(authMaterial.user);
81
- };
82
-
83
- const logout = () => {
84
- deleteCookie(SESSION_PREFIX);
85
- deleteCookie(REFRESH_TOKEN_PREFIX);
86
- setJwt(undefined);
87
- setRefreshToken(undefined);
88
- setUser(undefined);
89
- };
90
-
91
- useRefreshToken({ crossmintAuthService, setAuthMaterial, logout });
92
-
93
99
  useEffect(() => {
94
100
  if (crossmint.jwt == null) {
95
101
  const jwt = getCookie(SESSION_PREFIX);
@@ -114,6 +120,10 @@ export function CrossmintAuthProvider({
114
120
  setDialogOpen(true);
115
121
  };
116
122
 
123
+ const logout = () => {
124
+ crossmintAuth.logout();
125
+ };
126
+
117
127
  const getAuthStatus = (): AuthStatus => {
118
128
  if (crossmint.jwt != null) {
119
129
  return "logged-in";
@@ -124,19 +134,13 @@ export function CrossmintAuthProvider({
124
134
  return "logged-out";
125
135
  };
126
136
 
127
- const fetchAuthMaterial = async (refreshToken: string): Promise<AuthMaterialWithUser> => {
128
- const authMaterial = await crossmintAuthService.refreshAuthMaterial(refreshToken);
129
- setAuthMaterial(authMaterial);
130
- return authMaterial;
131
- };
132
-
133
137
  const getUser = async () => {
134
138
  if (crossmint.jwt == null) {
135
139
  console.log("User not logged in");
136
140
  return;
137
141
  }
138
142
 
139
- const user = await crossmintAuthService.getUserFromClient(crossmint.jwt);
143
+ const user = await crossmintAuth.getUser();
140
144
  setUser(user);
141
145
  };
142
146
 
@@ -144,10 +148,10 @@ export function CrossmintAuthProvider({
144
148
  <TwindProvider>
145
149
  <AuthContext.Provider
146
150
  value={{
151
+ crossmintAuth,
147
152
  login,
148
153
  logout,
149
154
  jwt: crossmint.jwt,
150
- refreshToken: crossmint.refreshToken,
151
155
  user,
152
156
  status: getAuthStatus(),
153
157
  getUser,
@@ -160,12 +164,11 @@ export function CrossmintAuthProvider({
160
164
  >
161
165
  <AuthFormProvider
162
166
  initialState={{
163
- apiKey: crossmint.apiKey,
164
- baseUrl: crossmintBaseUrl,
165
- fetchAuthMaterial,
166
167
  appearance,
167
168
  setDialogOpen,
168
169
  loginMethods,
170
+ embeddedWallets,
171
+ baseUrl: crossmintBaseUrl,
169
172
  }}
170
173
  >
171
174
  <WalletManager embeddedWallets={embeddedWallets} accessToken={crossmint.jwt}>
@@ -8,9 +8,13 @@ import { createCrossmint } from "@crossmint/common-sdk-base";
8
8
 
9
9
  import { CrossmintProvider, useCrossmint } from "../hooks/useCrossmint";
10
10
  import { useWallet } from "../hooks/useWallet";
11
- import { MOCK_API_KEY, waitForSettledState } from "../testUtils";
11
+ import { MOCK_API_KEY } from "../testUtils";
12
12
  import { CrossmintWalletProvider } from "./CrossmintWalletProvider";
13
13
 
14
+ vi.mock("./auth/web3/WagmiAuthProvider", () => ({
15
+ WagmiAuthProvider: ({ children }: { children: ReactNode }) => <>{children}</>,
16
+ }));
17
+
14
18
  vi.mock("@crossmint/client-sdk-smart-wallet", async () => {
15
19
  const actual = await vi.importActual("@crossmint/client-sdk-smart-wallet");
16
20
  return {
@@ -76,6 +80,7 @@ describe("CrossmintWalletProvider", () => {
76
80
  jwt: "mock-jwt",
77
81
  },
78
82
  setJwt: () => {},
83
+ setRefreshToken: () => {},
79
84
  });
80
85
 
81
86
  mockSDK = mock<SmartWalletSDK>();
@@ -85,7 +90,7 @@ describe("CrossmintWalletProvider", () => {
85
90
  });
86
91
 
87
92
  describe("getOrCreateWallet", () => {
88
- test("happy path ", async () => {
93
+ it("happy path ", async () => {
89
94
  const { getByTestId } = renderWalletProvider({
90
95
  children: <TestComponent />,
91
96
  });
@@ -100,7 +105,7 @@ describe("CrossmintWalletProvider", () => {
100
105
  expect(getByTestId("error").textContent).toBe("No Error");
101
106
  });
102
107
 
103
- await waitForSettledState(() => {
108
+ await waitFor(() => {
104
109
  expect(getByTestId("status").textContent).toBe("loaded");
105
110
  expect(getByTestId("wallet").textContent).toBe("Wallet Loaded");
106
111
  expect(getByTestId("error").textContent).toBe("No Error");
@@ -117,6 +122,7 @@ describe("CrossmintWalletProvider", () => {
117
122
  jwt: undefined,
118
123
  },
119
124
  setJwt: () => {},
125
+ setRefreshToken: () => {},
120
126
  });
121
127
  });
122
128
 
@@ -127,7 +133,7 @@ describe("CrossmintWalletProvider", () => {
127
133
 
128
134
  fireEvent.click(getByTestId("create-wallet-button"));
129
135
 
130
- await waitForSettledState(() => {
136
+ await waitFor(() => {
131
137
  expect(getByTestId("status").textContent).toBe("not-loaded");
132
138
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
133
139
  expect(getByTestId("error").textContent).toBe("No Error");
@@ -155,7 +161,7 @@ describe("CrossmintWalletProvider", () => {
155
161
  expect(getByTestId("error").textContent).toBe("No Error");
156
162
  });
157
163
 
158
- await waitForSettledState(() => {
164
+ await waitFor(() => {
159
165
  expect(getByTestId("status").textContent).toBe("loading-error");
160
166
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
161
167
  expect(getByTestId("error").textContent).toBe("Wallet creation failed");
@@ -183,7 +189,7 @@ describe("CrossmintWalletProvider", () => {
183
189
  expect(getByTestId("error").textContent).toBe("No Error");
184
190
  });
185
191
 
186
- await waitForSettledState(() => {
192
+ await waitFor(() => {
187
193
  expect(getByTestId("status").textContent).toBe("loading-error");
188
194
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
189
195
  expect(getByTestId("error").textContent).toBe("Unknown Wallet Error: Wallet creation failed");
@@ -194,14 +200,14 @@ describe("CrossmintWalletProvider", () => {
194
200
  });
195
201
  });
196
202
 
197
- test("clearWallet happy path", async () => {
203
+ it("clearWallet happy path", async () => {
198
204
  const { getByTestId } = renderWalletProvider({
199
205
  children: <TestComponent />,
200
206
  });
201
207
 
202
208
  fireEvent.click(getByTestId("create-wallet-button"));
203
209
 
204
- await waitForSettledState(() => {
210
+ await waitFor(() => {
205
211
  expect(getByTestId("status").textContent).toBe("loaded");
206
212
  expect(getByTestId("wallet").textContent).toBe("Wallet Loaded");
207
213
  expect(getByTestId("error").textContent).toBe("No Error");
@@ -209,7 +215,7 @@ describe("CrossmintWalletProvider", () => {
209
215
 
210
216
  fireEvent.click(getByTestId("clear-wallet-button"));
211
217
 
212
- await waitForSettledState(() => {
218
+ await waitFor(() => {
213
219
  expect(getByTestId("status").textContent).toBe("not-loaded");
214
220
  expect(getByTestId("wallet").textContent).toBe("No Wallet");
215
221
  expect(getByTestId("error").textContent).toBe("No Error");