@b3dotfun/sdk 0.1.69 → 0.1.70-alpha.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 (481) hide show
  1. package/dist/cjs/anyspend/constants/rpc.d.ts +1 -1
  2. package/dist/cjs/anyspend/constants/rpc.js +1 -1
  3. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +2 -0
  4. package/dist/cjs/anyspend/react/components/AnySpend.js +12 -4
  5. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  7. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  8. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +7 -3
  9. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  10. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +3 -3
  11. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  12. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +4 -4
  13. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +1 -1
  14. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +1 -1
  15. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  16. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  17. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  18. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  19. package/dist/cjs/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  20. package/dist/cjs/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  21. package/dist/cjs/anyspend/react/components/checkout/CartSummary.js +13 -11
  22. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  23. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  24. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  25. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  26. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.js +2 -4
  27. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  28. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  29. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +43 -23
  30. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  31. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  32. package/dist/cjs/anyspend/react/components/checkout/FiatCheckoutPanel.js +1 -2
  33. package/dist/cjs/anyspend/react/components/checkout/KycGate.js +1 -2
  34. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  35. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.js +9 -0
  36. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  37. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  38. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  39. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +10 -9
  40. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  41. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +7 -2
  42. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  43. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +37 -6
  44. package/dist/cjs/anyspend/react/components/common/StepProgress.d.ts +2 -0
  45. package/dist/cjs/anyspend/react/components/common/StepProgress.js +7 -2
  46. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  47. package/dist/cjs/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +4 -6
  48. package/dist/cjs/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  49. package/dist/cjs/anyspend/react/hooks/useKycStatus.js +11 -7
  50. package/dist/cjs/anyspend/utils/chain.js +8 -7
  51. package/dist/cjs/app.shared.js +9 -7
  52. package/dist/cjs/global-account/better-auth-client.d.ts +1883 -0
  53. package/dist/cjs/global-account/better-auth-client.js +17 -0
  54. package/dist/cjs/global-account/bsmnt.d.ts +0 -1
  55. package/dist/cjs/global-account/bsmnt.js +0 -6
  56. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -1
  57. package/dist/cjs/global-account/react/components/B3DynamicModal.js +5 -2
  58. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  59. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  60. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +8 -1
  61. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +3 -1
  62. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +27 -2
  63. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +11 -13
  64. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -8
  65. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthClientProvider.d.ts +17 -0
  66. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthClientProvider.js +31 -0
  67. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  68. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +121 -0
  69. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  70. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  71. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  72. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  73. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  74. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +4 -2
  75. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +36 -4
  76. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  77. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +6 -0
  78. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +17 -6
  79. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  80. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.js +57 -0
  81. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +14 -29
  82. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  83. package/dist/cjs/global-account/react/components/Send/Send.js +5 -2
  84. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  85. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +68 -0
  86. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  87. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +173 -0
  88. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  89. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +85 -0
  90. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +14 -4
  91. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  92. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +14 -5
  93. package/dist/cjs/global-account/react/components/SignInWithB3/components/AuthButton.js +10 -1
  94. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  95. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.js +10 -0
  96. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  97. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +141 -0
  98. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +96 -15
  99. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  100. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +20 -3
  101. package/dist/cjs/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  102. package/dist/cjs/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  103. package/dist/cjs/global-account/react/components/Toast/ToastContext.js +30 -7
  104. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  105. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.js +27 -0
  106. package/dist/cjs/global-account/react/components/custom/Button.d.ts +1 -1
  107. package/dist/cjs/global-account/react/components/index.d.ts +6 -0
  108. package/dist/cjs/global-account/react/components/index.js +14 -3
  109. package/dist/cjs/global-account/react/components/ui/button.d.ts +1 -1
  110. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  111. package/dist/cjs/global-account/react/hooks/index.js +5 -2
  112. package/dist/cjs/global-account/react/hooks/useAuth.js +26 -15
  113. package/dist/cjs/global-account/react/hooks/useAuthentication.js +23 -12
  114. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  115. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.js +31 -3
  116. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  117. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +159 -0
  118. package/dist/cjs/global-account/react/hooks/useConnect.d.ts +2 -2
  119. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  120. package/dist/cjs/global-account/react/hooks/useTWAuth.js +0 -1
  121. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +14 -1
  122. package/dist/cjs/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  123. package/dist/cjs/global-account/react/utils/createWagmiConfig.js +5 -24
  124. package/dist/cjs/global-account/react/utils/index.d.ts +0 -1
  125. package/dist/cjs/global-account/react/utils/index.js +0 -1
  126. package/dist/cjs/global-account/react/utils/profileDisplay.js +17 -18
  127. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +7 -7
  128. package/dist/cjs/shared/constants/chains/b3Chain.js +4 -4
  129. package/dist/cjs/shared/constants/chains/b3Viem.d.ts +6 -0
  130. package/dist/cjs/shared/constants/chains/b3Viem.js +19 -0
  131. package/dist/cjs/shared/constants/chains/supported.d.ts +1 -1
  132. package/dist/cjs/shared/constants/index.d.ts +1 -0
  133. package/dist/cjs/shared/constants/index.js +2 -1
  134. package/dist/cjs/shared/generated/chain-networks.json +2 -2
  135. package/dist/cjs/shared/utils/chains.d.ts +1 -1
  136. package/dist/cjs/shared/utils/chains.js +2 -2
  137. package/dist/cjs/shared/utils/session-duration.d.ts +15 -0
  138. package/dist/cjs/shared/utils/session-duration.js +69 -0
  139. package/dist/cjs/wallet/react/components/ConnectWallet.d.ts +11 -0
  140. package/dist/cjs/wallet/react/components/ConnectWallet.js +467 -0
  141. package/dist/cjs/wallet/react/components/WalletProvider.d.ts +35 -0
  142. package/dist/cjs/wallet/react/components/WalletProvider.js +20 -0
  143. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  144. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.js +22 -0
  145. package/dist/cjs/wallet/react/hooks/useWalletState.d.ts +31 -0
  146. package/dist/cjs/wallet/react/hooks/useWalletState.js +63 -0
  147. package/dist/cjs/wallet/react/index.d.ts +5 -0
  148. package/dist/cjs/wallet/react/index.js +16 -0
  149. package/dist/cjs/wallet/utils/createWalletConfig.d.ts +21 -0
  150. package/dist/cjs/wallet/utils/createWalletConfig.js +24 -0
  151. package/dist/esm/anyspend/constants/rpc.d.ts +1 -1
  152. package/dist/esm/anyspend/constants/rpc.js +1 -1
  153. package/dist/esm/anyspend/react/components/AnySpend.d.ts +2 -0
  154. package/dist/esm/anyspend/react/components/AnySpend.js +12 -4
  155. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  156. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  157. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  158. package/dist/esm/anyspend/react/components/AnySpendCustom.js +7 -3
  159. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  160. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +3 -3
  161. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  162. package/dist/esm/anyspend/react/components/AnySpendNFT.js +4 -4
  163. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +2 -2
  164. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +2 -2
  165. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  166. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  167. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  168. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  169. package/dist/esm/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  170. package/dist/esm/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  171. package/dist/esm/anyspend/react/components/checkout/CartSummary.js +13 -11
  172. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  173. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  174. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  175. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  176. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.js +2 -4
  177. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  178. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  179. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +44 -24
  180. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  181. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  182. package/dist/esm/anyspend/react/components/checkout/FiatCheckoutPanel.js +2 -3
  183. package/dist/esm/anyspend/react/components/checkout/KycGate.js +2 -3
  184. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  185. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.js +6 -0
  186. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  187. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  188. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  189. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +9 -8
  190. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  191. package/dist/esm/anyspend/react/components/common/OrderDetails.js +8 -3
  192. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  193. package/dist/esm/anyspend/react/components/common/OrderStatus.js +34 -3
  194. package/dist/esm/anyspend/react/components/common/StepProgress.d.ts +2 -0
  195. package/dist/esm/anyspend/react/components/common/StepProgress.js +4 -2
  196. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  197. package/dist/esm/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +5 -7
  198. package/dist/esm/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  199. package/dist/esm/anyspend/react/hooks/useKycStatus.js +9 -5
  200. package/dist/esm/anyspend/utils/chain.js +10 -9
  201. package/dist/esm/app.shared.js +9 -7
  202. package/dist/esm/global-account/better-auth-client.d.ts +1883 -0
  203. package/dist/esm/global-account/better-auth-client.js +13 -0
  204. package/dist/esm/global-account/bsmnt.d.ts +0 -1
  205. package/dist/esm/global-account/bsmnt.js +0 -5
  206. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -1
  207. package/dist/esm/global-account/react/components/B3DynamicModal.js +5 -2
  208. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  209. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  210. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +8 -1
  211. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +3 -1
  212. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +27 -2
  213. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +6 -8
  214. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +4 -6
  215. package/dist/esm/global-account/react/components/B3Provider/BetterAuthClientProvider.d.ts +17 -0
  216. package/dist/esm/global-account/react/components/B3Provider/BetterAuthClientProvider.js +27 -0
  217. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  218. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +116 -0
  219. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  220. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  221. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  222. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  223. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  224. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +5 -3
  225. package/dist/esm/global-account/react/components/ManageAccount/Header.js +37 -5
  226. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  227. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +7 -1
  228. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +16 -8
  229. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  230. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.js +52 -0
  231. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +16 -31
  232. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  233. package/dist/esm/global-account/react/components/Send/Send.js +5 -2
  234. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  235. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +65 -0
  236. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  237. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +170 -0
  238. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  239. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +82 -0
  240. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +15 -5
  241. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  242. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +14 -5
  243. package/dist/esm/global-account/react/components/SignInWithB3/components/AuthButton.js +11 -2
  244. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  245. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.js +7 -0
  246. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  247. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +138 -0
  248. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +100 -19
  249. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  250. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +19 -2
  251. package/dist/esm/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  252. package/dist/esm/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  253. package/dist/esm/global-account/react/components/Toast/ToastContext.js +30 -7
  254. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  255. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.js +21 -0
  256. package/dist/esm/global-account/react/components/custom/Button.d.ts +1 -1
  257. package/dist/esm/global-account/react/components/index.d.ts +6 -0
  258. package/dist/esm/global-account/react/components/index.js +6 -0
  259. package/dist/esm/global-account/react/components/ui/button.d.ts +1 -1
  260. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  261. package/dist/esm/global-account/react/hooks/index.js +1 -0
  262. package/dist/esm/global-account/react/hooks/useAuth.js +28 -17
  263. package/dist/esm/global-account/react/hooks/useAuthentication.js +24 -13
  264. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  265. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.js +33 -5
  266. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  267. package/dist/esm/global-account/react/hooks/useBetterAuth.js +151 -0
  268. package/dist/esm/global-account/react/hooks/useConnect.d.ts +2 -2
  269. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  270. package/dist/esm/global-account/react/hooks/useTWAuth.js +0 -1
  271. package/dist/esm/global-account/react/stores/useModalStore.d.ts +14 -1
  272. package/dist/esm/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  273. package/dist/esm/global-account/react/utils/createWagmiConfig.js +5 -23
  274. package/dist/esm/global-account/react/utils/index.d.ts +0 -1
  275. package/dist/esm/global-account/react/utils/index.js +0 -1
  276. package/dist/esm/global-account/react/utils/profileDisplay.js +17 -18
  277. package/dist/esm/shared/constants/chains/b3Chain.d.ts +7 -7
  278. package/dist/esm/shared/constants/chains/b3Chain.js +4 -4
  279. package/dist/esm/shared/constants/chains/b3Viem.d.ts +6 -0
  280. package/dist/esm/shared/constants/chains/b3Viem.js +16 -0
  281. package/dist/esm/shared/constants/chains/supported.d.ts +1 -1
  282. package/dist/esm/shared/constants/index.d.ts +1 -0
  283. package/dist/esm/shared/constants/index.js +1 -0
  284. package/dist/esm/shared/generated/chain-networks.json +2 -2
  285. package/dist/esm/shared/utils/chains.d.ts +1 -1
  286. package/dist/esm/shared/utils/chains.js +2 -2
  287. package/dist/esm/shared/utils/session-duration.d.ts +15 -0
  288. package/dist/esm/shared/utils/session-duration.js +64 -0
  289. package/dist/esm/wallet/react/components/ConnectWallet.d.ts +11 -0
  290. package/dist/esm/wallet/react/components/ConnectWallet.js +431 -0
  291. package/dist/esm/wallet/react/components/WalletProvider.d.ts +35 -0
  292. package/dist/esm/wallet/react/components/WalletProvider.js +17 -0
  293. package/dist/esm/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  294. package/dist/esm/wallet/react/hooks/useWalletDisconnect.js +19 -0
  295. package/dist/esm/wallet/react/hooks/useWalletState.d.ts +31 -0
  296. package/dist/esm/wallet/react/hooks/useWalletState.js +60 -0
  297. package/dist/esm/wallet/react/index.d.ts +5 -0
  298. package/dist/esm/wallet/react/index.js +8 -0
  299. package/dist/esm/wallet/utils/createWalletConfig.d.ts +21 -0
  300. package/dist/esm/wallet/utils/createWalletConfig.js +21 -0
  301. package/dist/styles/index.css +1 -1
  302. package/dist/types/anyspend/constants/rpc.d.ts +1 -1
  303. package/dist/types/anyspend/react/components/AnySpend.d.ts +2 -0
  304. package/dist/types/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  305. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  306. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  307. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  308. package/dist/types/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  309. package/dist/types/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  310. package/dist/types/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  311. package/dist/types/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  312. package/dist/types/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  313. package/dist/types/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  314. package/dist/types/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  315. package/dist/types/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  316. package/dist/types/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  317. package/dist/types/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  318. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  319. package/dist/types/anyspend/react/components/common/StepProgress.d.ts +2 -0
  320. package/dist/types/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  321. package/dist/types/global-account/better-auth-client.d.ts +1883 -0
  322. package/dist/types/global-account/bsmnt.d.ts +0 -1
  323. package/dist/types/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  324. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +8 -1
  325. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +27 -2
  326. package/dist/types/global-account/react/components/B3Provider/BetterAuthClientProvider.d.ts +17 -0
  327. package/dist/types/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  328. package/dist/types/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  329. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  330. package/dist/types/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  331. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  332. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  333. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  334. package/dist/types/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  335. package/dist/types/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  336. package/dist/types/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  337. package/dist/types/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  338. package/dist/types/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  339. package/dist/types/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  340. package/dist/types/global-account/react/components/custom/Button.d.ts +1 -1
  341. package/dist/types/global-account/react/components/index.d.ts +6 -0
  342. package/dist/types/global-account/react/components/ui/button.d.ts +1 -1
  343. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  344. package/dist/types/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  345. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  346. package/dist/types/global-account/react/hooks/useConnect.d.ts +2 -2
  347. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  348. package/dist/types/global-account/react/stores/useModalStore.d.ts +14 -1
  349. package/dist/types/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  350. package/dist/types/global-account/react/utils/index.d.ts +0 -1
  351. package/dist/types/shared/constants/chains/b3Chain.d.ts +7 -7
  352. package/dist/types/shared/constants/chains/b3Viem.d.ts +6 -0
  353. package/dist/types/shared/constants/chains/supported.d.ts +1 -1
  354. package/dist/types/shared/constants/index.d.ts +1 -0
  355. package/dist/types/shared/utils/chains.d.ts +1 -1
  356. package/dist/types/shared/utils/session-duration.d.ts +15 -0
  357. package/dist/types/wallet/react/components/ConnectWallet.d.ts +11 -0
  358. package/dist/types/wallet/react/components/WalletProvider.d.ts +35 -0
  359. package/dist/types/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  360. package/dist/types/wallet/react/hooks/useWalletState.d.ts +31 -0
  361. package/dist/types/wallet/react/index.d.ts +5 -0
  362. package/dist/types/wallet/utils/createWalletConfig.d.ts +21 -0
  363. package/package.json +15 -6
  364. package/src/anyspend/constants/rpc.ts +2 -1
  365. package/src/anyspend/react/components/AnySpend.tsx +24 -12
  366. package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +6 -0
  367. package/src/anyspend/react/components/AnySpendCustom.tsx +12 -2
  368. package/src/anyspend/react/components/AnySpendDeposit.tsx +38 -31
  369. package/src/anyspend/react/components/AnySpendNFT.tsx +6 -2
  370. package/src/anyspend/react/components/AnySpendStakeB3.tsx +2 -2
  371. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +2 -2
  372. package/src/anyspend/react/components/AnySpendStakeUpside.tsx +4 -0
  373. package/src/anyspend/react/components/checkout/AnySpendCheckout.tsx +25 -5
  374. package/src/anyspend/react/components/checkout/CartItemRow.tsx +2 -1
  375. package/src/anyspend/react/components/checkout/CartSummary.tsx +24 -20
  376. package/src/anyspend/react/components/checkout/CheckoutCartPanel.tsx +12 -3
  377. package/src/anyspend/react/components/checkout/CheckoutFormPanel.tsx +5 -0
  378. package/src/anyspend/react/components/checkout/CheckoutPaymentPanel.tsx +2 -4
  379. package/src/anyspend/react/components/checkout/CheckoutSuccess.tsx +13 -3
  380. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +45 -27
  381. package/src/anyspend/react/components/checkout/DiscountCodeInput.tsx +15 -5
  382. package/src/anyspend/react/components/checkout/FiatCheckoutPanel.tsx +9 -3
  383. package/src/anyspend/react/components/checkout/KycGate.tsx +8 -3
  384. package/src/anyspend/react/components/checkout/PriceSkeleton.tsx +19 -0
  385. package/src/anyspend/react/components/checkout/ShippingSelector.tsx +5 -1
  386. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +10 -8
  387. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
  388. package/src/anyspend/react/components/common/OrderDetails.tsx +10 -2
  389. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +4 -4
  390. package/src/anyspend/react/components/common/OrderStatus.tsx +38 -3
  391. package/src/anyspend/react/components/common/StepProgress.tsx +15 -5
  392. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  393. package/src/anyspend/react/hooks/useAnyspendCreateOnrampOrder.ts +5 -7
  394. package/src/anyspend/react/hooks/useKycStatus.ts +8 -5
  395. package/src/anyspend/utils/chain.ts +9 -9
  396. package/src/app.shared.ts +9 -8
  397. package/src/global-account/better-auth-client.ts +17 -0
  398. package/src/global-account/bsmnt.ts +0 -6
  399. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +3 -1
  400. package/src/global-account/react/components/B3DynamicModal.tsx +5 -2
  401. package/src/global-account/react/components/B3Provider/AuthenticationProvider.tsx +4 -0
  402. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +12 -0
  403. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +16 -21
  404. package/src/global-account/react/components/B3Provider/B3Provider.tsx +78 -38
  405. package/src/global-account/react/components/B3Provider/BetterAuthClientProvider.tsx +40 -0
  406. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +128 -0
  407. package/src/global-account/react/components/B3Provider/LocalSDKProvider.tsx +5 -0
  408. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +17 -10
  409. package/src/global-account/react/components/LinkAccount/LinkedAccountItem.tsx +2 -1
  410. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +18 -14
  411. package/src/global-account/react/components/ManageAccount/Header.tsx +71 -4
  412. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +25 -19
  413. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +13 -0
  414. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +40 -15
  415. package/src/global-account/react/components/ManageAccount/SessionDurationContent.tsx +107 -0
  416. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +35 -54
  417. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +31 -22
  418. package/src/global-account/react/components/Send/Send.tsx +8 -5
  419. package/src/global-account/react/components/SignInWithB3/BetterAuthResetPassword.tsx +145 -0
  420. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +446 -0
  421. package/src/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.tsx +155 -0
  422. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +42 -13
  423. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +20 -4
  424. package/src/global-account/react/components/SignInWithB3/components/AuthButton.tsx +21 -2
  425. package/src/global-account/react/components/SignInWithB3/components/PasswordInput.tsx +62 -0
  426. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +315 -0
  427. package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +207 -54
  428. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +24 -4
  429. package/src/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.tsx +2 -1
  430. package/src/global-account/react/components/Toast/ToastContext.tsx +39 -7
  431. package/src/global-account/react/components/UserAvatar/UserAvatar.tsx +45 -0
  432. package/src/global-account/react/components/index.ts +12 -0
  433. package/src/global-account/react/hooks/index.ts +1 -0
  434. package/src/global-account/react/hooks/useAuth.ts +28 -17
  435. package/src/global-account/react/hooks/useAuthentication.ts +24 -13
  436. package/src/global-account/react/hooks/useAutoSelectWallet.ts +40 -6
  437. package/src/global-account/react/hooks/useBetterAuth.ts +193 -0
  438. package/src/global-account/react/hooks/useConnect.tsx +2 -2
  439. package/src/global-account/react/hooks/useTWAuth.tsx +0 -1
  440. package/src/global-account/react/stores/useModalStore.ts +15 -0
  441. package/src/global-account/react/utils/createWagmiConfig.tsx +6 -25
  442. package/src/global-account/react/utils/index.ts +0 -1
  443. package/src/global-account/react/utils/profileDisplay.ts +21 -19
  444. package/src/shared/constants/chains/b3Chain.ts +5 -5
  445. package/src/shared/constants/chains/b3Viem.ts +18 -0
  446. package/src/shared/constants/index.ts +2 -0
  447. package/src/shared/generated/chain-networks.json +2 -2
  448. package/src/shared/utils/chains.ts +3 -2
  449. package/src/shared/utils/session-duration.ts +64 -0
  450. package/src/types/torph.d.ts +4 -0
  451. package/src/wallet/__tests__/createWalletConfig.test.ts +39 -0
  452. package/src/wallet/react/components/ConnectWallet.tsx +665 -0
  453. package/src/wallet/react/components/WalletProvider.tsx +64 -0
  454. package/src/wallet/react/hooks/useWalletDisconnect.ts +22 -0
  455. package/src/wallet/react/hooks/useWalletState.ts +93 -0
  456. package/src/wallet/react/index.ts +10 -0
  457. package/src/wallet/utils/createWalletConfig.ts +39 -0
  458. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  459. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -54
  460. package/dist/cjs/global-account/react/components/ProfileAvatar.d.ts +0 -0
  461. package/dist/cjs/global-account/react/components/ProfileAvatar.js +0 -127
  462. package/dist/cjs/global-account/react/hooks/useRPMToken.d.ts +0 -7
  463. package/dist/cjs/global-account/react/hooks/useRPMToken.js +0 -11
  464. package/dist/cjs/global-account/react/utils/updateAvatar.d.ts +0 -4
  465. package/dist/cjs/global-account/react/utils/updateAvatar.js +0 -54
  466. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  467. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -51
  468. package/dist/esm/global-account/react/components/ProfileAvatar.d.ts +0 -0
  469. package/dist/esm/global-account/react/components/ProfileAvatar.js +0 -127
  470. package/dist/esm/global-account/react/hooks/useRPMToken.d.ts +0 -7
  471. package/dist/esm/global-account/react/hooks/useRPMToken.js +0 -8
  472. package/dist/esm/global-account/react/utils/updateAvatar.d.ts +0 -4
  473. package/dist/esm/global-account/react/utils/updateAvatar.js +0 -18
  474. package/dist/types/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  475. package/dist/types/global-account/react/components/ProfileAvatar.d.ts +0 -0
  476. package/dist/types/global-account/react/hooks/useRPMToken.d.ts +0 -7
  477. package/dist/types/global-account/react/utils/updateAvatar.d.ts +0 -4
  478. package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +0 -90
  479. package/src/global-account/react/components/ProfileAvatar.tsx +0 -138
  480. package/src/global-account/react/hooks/useRPMToken.ts +0 -17
  481. package/src/global-account/react/utils/updateAvatar.ts +0 -21
@@ -1,38 +1,52 @@
1
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { AuthButton, Button, getConnectOptionsFromStrategy, isWalletType, LoginStepContainer, useAuthentication, useAuthStore, useB3Config, useConnect, WalletRow, } from "../../../../../global-account/react/index.js";
1
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
2
+ import { AuthButton, Button, getConnectOptionsFromStrategy, Input, isWalletType, LoginStepContainer, useAuthentication, useAuthStore, useB3Config, useConnect, WalletRow, } from "../../../../../global-account/react/index.js";
3
+ import { ecosystemWalletId } from "../../../../../shared/constants/index.js";
3
4
  import { debugB3React } from "../../../../../shared/utils/debug.js";
4
5
  import { client } from "../../../../../shared/utils/thirdweb.js";
5
6
  import { useState } from "react";
6
- import { useConnect as useConnectTW } from "thirdweb/react";
7
- import { createWallet } from "thirdweb/wallets";
7
+ import { useConnectedWallets, useConnect as useConnectTW } from "thirdweb/react";
8
+ import { createWallet, preAuthenticate, } from "thirdweb/wallets";
8
9
  const debug = debugB3React("LoginStepCustom");
10
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
9
11
  export function LoginStepCustom({ onSuccess, onError, chain, strategies, maxInitialWallets = 2, automaticallySetFirstEoa, }) {
10
12
  const { partnerId } = useB3Config();
11
13
  const [isLoading, setIsLoading] = useState(false);
12
14
  const [showAllWallets, setShowAllWallets] = useState(false);
15
+ const [showEmailFlow, setShowEmailFlow] = useState(false);
16
+ const [email, setEmail] = useState("");
17
+ const [verificationCode, setVerificationCode] = useState("");
18
+ const [emailCodeSent, setEmailCodeSent] = useState(false);
19
+ const [emailError, setEmailError] = useState(null);
13
20
  const { connect } = useConnect(partnerId, chain);
14
21
  const setIsAuthenticating = useAuthStore(state => state.setIsAuthenticating);
15
- const setIsAuthenticated = useAuthStore(state => state.setIsAuthenticated);
16
- const { logout } = useAuthentication(partnerId, { skipAutoConnect: true });
22
+ const { connect: onAuthConnect, logout } = useAuthentication(partnerId, { skipAutoConnect: true });
17
23
  const { connect: connectTW } = useConnectTW();
24
+ const connectedWallets = useConnectedWallets();
18
25
  // Split strategies into auth and wallet types
19
26
  const authStrategies = strategies.filter(s => !isWalletType(s));
20
27
  const walletStrategies = strategies.filter(isWalletType);
21
28
  const initialWallets = walletStrategies.slice(0, maxInitialWallets);
22
29
  const additionalWallets = walletStrategies.slice(maxInitialWallets);
23
- const handleConnect = async (strategy) => {
30
+ const authGridColumns = Math.max(1, Math.min(authStrategies.length, 4));
31
+ const resetEmailFlow = () => {
32
+ setShowEmailFlow(false);
33
+ setEmailCodeSent(false);
34
+ setVerificationCode("");
35
+ setEmailError(null);
36
+ };
37
+ const connectWithOptions = async (strategy, options) => {
24
38
  try {
25
39
  setIsLoading(true);
26
40
  debug("setIsAuthenticating:true:3");
27
41
  setIsAuthenticating(true);
28
- const options = getConnectOptionsFromStrategy(strategy);
29
42
  let connectResult;
30
- if (automaticallySetFirstEoa) {
31
- if (!options.wallet?.id) {
43
+ if (automaticallySetFirstEoa && isWalletType(strategy) && options.strategy === "wallet") {
44
+ const walletId = options.wallet?.id;
45
+ if (!walletId) {
32
46
  throw new Error("Wallet ID is required");
33
47
  }
34
48
  connectResult = await connectTW(async () => {
35
- const wallet = createWallet(options.wallet?.id);
49
+ const wallet = createWallet(walletId);
36
50
  await wallet.connect({
37
51
  client,
38
52
  });
@@ -40,20 +54,27 @@ export function LoginStepCustom({ onSuccess, onError, chain, strategies, maxInit
40
54
  });
41
55
  }
42
56
  else {
43
- // @ts-expect-error we have custom strategies too and we also get things like "apple" isn't assignable to "wallet"
44
57
  connectResult = await connect(options);
45
58
  }
46
59
  const account = connectResult?.getAccount();
47
60
  debug("@@connectResult", { connectResult, account, options });
48
- if (!account)
61
+ if (!account || !connectResult)
49
62
  throw new Error("Failed to connect");
63
+ const allConnectedWallets = connectedWallets.length > 0 && connectedWallets.some(wallet => wallet.id === connectResult.id)
64
+ ? connectedWallets
65
+ : [connectResult, ...connectedWallets.filter(wallet => wallet.id !== connectResult.id)];
66
+ await onAuthConnect(connectResult, allConnectedWallets);
50
67
  await onSuccess(account);
51
- setIsAuthenticated(true);
68
+ if (strategy === "email") {
69
+ resetEmailFlow();
70
+ }
52
71
  }
53
72
  catch (error) {
73
+ if (strategy === "email") {
74
+ setEmailError(error instanceof Error ? error.message : "Failed to sign in with email");
75
+ }
54
76
  await onError?.(error);
55
77
  await logout();
56
- setIsAuthenticated(false);
57
78
  }
58
79
  finally {
59
80
  setIsLoading(false);
@@ -61,8 +82,68 @@ export function LoginStepCustom({ onSuccess, onError, chain, strategies, maxInit
61
82
  setIsAuthenticating(false);
62
83
  }
63
84
  };
64
- return (_jsxs(LoginStepContainer, { partnerId: partnerId, children: [authStrategies.length > 0 && (_jsx("div", { className: `mb-6 w-full ${authStrategies.length <= 3 ? "space-y-3 px-3" : "grid grid-cols-4 gap-4"}`, children: authStrategies.map(strategy => {
65
- console.log("strategy", strategy);
66
- return (_jsx(AuthButton, { strategy: strategy, onClick: () => handleConnect(strategy), isLoading: isLoading }, strategy));
67
- }) })), _jsx("div", { className: "mb-4 w-full space-y-2", children: initialWallets.map(walletId => (_jsx(WalletRow, { walletId: walletId, onClick: () => handleConnect(walletId), isLoading: isLoading }, walletId))) }), additionalWallets.length > 0 && (_jsxs("div", { className: "w-full", children: [_jsx(Button, { onClick: () => setShowAllWallets(!showAllWallets), className: "mb-2 w-full bg-transparent text-gray-600 hover:bg-gray-100", children: showAllWallets ? "Show less" : "More options" }), showAllWallets && (_jsx("div", { className: "max-h-60 space-y-2 overflow-y-auto", children: additionalWallets.map(walletId => (_jsx(WalletRow, { walletId: walletId, onClick: () => handleConnect(walletId), isLoading: isLoading }, walletId))) }))] }))] }));
85
+ const handleConnect = async (strategy) => {
86
+ if (strategy === "email") {
87
+ setShowEmailFlow(true);
88
+ setEmailCodeSent(false);
89
+ setVerificationCode("");
90
+ setEmailError(null);
91
+ return;
92
+ }
93
+ const options = getConnectOptionsFromStrategy(strategy);
94
+ await connectWithOptions(strategy, options);
95
+ };
96
+ const handleSendEmailCode = async () => {
97
+ const normalizedEmail = email.trim().toLowerCase();
98
+ if (!normalizedEmail) {
99
+ setEmailError("Please enter your email address");
100
+ return;
101
+ }
102
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
103
+ setEmailError("Please enter a valid email address");
104
+ return;
105
+ }
106
+ try {
107
+ setIsLoading(true);
108
+ setEmailError(null);
109
+ await preAuthenticate({
110
+ client,
111
+ strategy: "email",
112
+ email: normalizedEmail,
113
+ ecosystem: {
114
+ id: ecosystemWalletId,
115
+ partnerId,
116
+ },
117
+ });
118
+ setEmail(normalizedEmail);
119
+ setEmailCodeSent(true);
120
+ }
121
+ catch (error) {
122
+ setEmailError(error instanceof Error ? error.message : "Failed to send verification code");
123
+ await onError?.(error);
124
+ }
125
+ finally {
126
+ setIsLoading(false);
127
+ }
128
+ };
129
+ const handleEmailLogin = async () => {
130
+ const normalizedEmail = email.trim().toLowerCase();
131
+ const normalizedCode = verificationCode.trim();
132
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
133
+ setEmailError("Please enter a valid email address");
134
+ return;
135
+ }
136
+ if (!normalizedCode) {
137
+ setEmailError("Please enter your verification code");
138
+ return;
139
+ }
140
+ await connectWithOptions("email", {
141
+ strategy: "email",
142
+ email: normalizedEmail,
143
+ verificationCode: normalizedCode,
144
+ });
145
+ };
146
+ return (_jsx(LoginStepContainer, { partnerId: partnerId, children: showEmailFlow ? (_jsxs("div", { className: "mb-6 w-full space-y-3 px-3", children: [_jsx("p", { className: "text-center text-sm font-medium text-gray-900 dark:text-gray-100", children: "Sign in with email" }), _jsx(Input, { type: "email", placeholder: "you@example.com", value: email, onChange: event => setEmail(event.target.value), disabled: isLoading || emailCodeSent }), emailCodeSent && (_jsx(Input, { type: "text", placeholder: "Enter verification code", value: verificationCode, onChange: event => setVerificationCode(event.target.value), disabled: isLoading })), emailError && _jsx("p", { className: "text-sm text-red-500", children: emailError }), _jsx(Button, { onClick: emailCodeSent ? handleEmailLogin : handleSendEmailCode, disabled: isLoading, className: "w-full", children: isLoading ? "Loading..." : emailCodeSent ? "Verify code" : "Send code" }), emailCodeSent && (_jsx(Button, { variant: "outline", onClick: handleSendEmailCode, disabled: isLoading, className: "w-full", children: "Resend code" })), _jsx(Button, { variant: "outline", onClick: resetEmailFlow, disabled: isLoading, className: "w-full", children: "Back" })] })) : (_jsxs(_Fragment, { children: [authStrategies.length > 0 && (_jsx("div", { className: `mb-6 grid w-full gap-4 px-3 ${authStrategies.length > 4 ? "grid-cols-4" : ""}`, style: authStrategies.length <= 4
147
+ ? { gridTemplateColumns: `repeat(${authGridColumns}, minmax(0, 1fr))` }
148
+ : undefined, children: authStrategies.map(strategy => (_jsx(AuthButton, { strategy: strategy, onClick: () => handleConnect(strategy), isLoading: isLoading }, strategy))) })), _jsx("div", { className: "mb-4 w-full space-y-2", children: initialWallets.map(walletId => (_jsx(WalletRow, { walletId: walletId, onClick: () => handleConnect(walletId), isLoading: isLoading }, walletId))) }), additionalWallets.length > 0 && (_jsxs("div", { className: "w-full", children: [_jsx(Button, { onClick: () => setShowAllWallets(!showAllWallets), className: "mb-2 w-full bg-transparent text-gray-600 hover:bg-gray-100", children: showAllWallets ? "Show less" : "More options" }), showAllWallets && (_jsx("div", { className: "max-h-60 space-y-2 overflow-y-auto", children: additionalWallets.map(walletId => (_jsx(WalletRow, { walletId: walletId, onClick: () => handleConnect(walletId), isLoading: isLoading }, walletId))) }))] }))] })) }));
68
149
  }
@@ -3,15 +3,17 @@ import { SingleStepAuthArgsType, Wallet } from "thirdweb/wallets";
3
3
  type WalletType = Wallet["id"];
4
4
  type StrategyType = SingleStepAuthArgsType["strategy"];
5
5
  type CustomStrategyType = "basement" | "privy";
6
- type AllowedStrategies = StrategyType | WalletType | CustomStrategyType;
7
- export declare const allowedStrategies: readonly ["apple", "google", "x", "discord", "guest", "walletConnect", "io.metamask", "com.coinbase.wallet", "basement", "privy"];
6
+ type AllowedStrategies = StrategyType | WalletType | CustomStrategyType | "email";
7
+ type NonWalletStrategyType = Exclude<AllowedStrategies, WalletType>;
8
+ export declare const allowedStrategies: readonly ["apple", "google", "github", "x", "discord", "email", "guest", "walletConnect", "io.metamask", "com.coinbase.wallet", "basement", "privy"];
8
9
  export type AllowedStrategy = (typeof allowedStrategies)[number];
9
10
  export declare function isWalletType(strategy: AllowedStrategies): strategy is WalletType;
10
- export declare function isStrategyType(strategy: AllowedStrategies): strategy is StrategyType;
11
+ export declare function isStrategyType(strategy: AllowedStrategies): strategy is NonWalletStrategyType;
11
12
  export declare function getConnectOptionsFromStrategy(strategy: AllowedStrategy): {
12
13
  strategy: StrategyType;
13
14
  wallet?: Wallet;
14
15
  chain?: Chain;
15
16
  };
16
17
  export declare const strategyIcons: Record<string, string>;
18
+ export declare const strategyLabels: Record<string, string>;
17
19
  export {};
@@ -5,9 +5,10 @@ export const allowedStrategies = [
5
5
  // Auth strategies
6
6
  "apple",
7
7
  "google",
8
+ "github",
8
9
  "x",
9
10
  "discord",
10
- // "github",
11
+ "email",
11
12
  "guest",
12
13
  // Wallet IDs
13
14
  "walletConnect",
@@ -29,6 +30,9 @@ export function getConnectOptionsFromStrategy(strategy) {
29
30
  if (!allowedStrategies.includes(strategy)) {
30
31
  throw new Error(`Invalid strategy: ${strategy}`);
31
32
  }
33
+ if (strategy === "email") {
34
+ throw new Error("Email strategy requires OTP flow and cannot be connected in a single step");
35
+ }
32
36
  if (isWalletType(strategy)) {
33
37
  return { strategy: "wallet", wallet: createWallet(strategy) };
34
38
  }
@@ -39,11 +43,24 @@ export function getConnectOptionsFromStrategy(strategy) {
39
43
  }
40
44
  export const strategyIcons = {
41
45
  google: "https://cdn.b3.fun/google.svg",
46
+ github: "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/github/github-original.svg",
42
47
  x: "https://cdn.b3.fun/x.svg?1",
43
48
  discord: "https://cdn.b3.fun/discord.svg",
44
49
  apple: "https://cdn.b3.fun/apple.svg",
45
50
  guest: "https://cdn.b3.fun/incognito.svg",
46
- // Add more strategies as needed
51
+ microsoft: "https://upload.wikimedia.org/wikipedia/commons/4/44/Microsoft_logo.svg",
52
+ slack: "https://upload.wikimedia.org/wikipedia/commons/d/d5/Slack_icon_2019.svg",
53
+ };
54
+ export const strategyLabels = {
55
+ google: "Google",
56
+ x: "X",
57
+ discord: "Discord",
58
+ apple: "Apple",
59
+ guest: "Guest",
60
+ github: "GitHub",
61
+ email: "Email",
62
+ microsoft: "Microsoft",
63
+ slack: "Slack",
47
64
  };
48
65
  // Test it
49
66
  // console.log(getConnectOptionsFromStrategy("io.metamask"));
@@ -4,6 +4,7 @@ import { cn } from "../../../../shared/utils/index.js";
4
4
  import { Search, X } from "lucide-react";
5
5
  import { useCallback, useEffect, useRef, useState } from "react";
6
6
  import { fetchProfile as fetchProfileApi } from "../../utils/profileApi.js";
7
+ import { validateImageUrl } from "../../utils/profileDisplay.js";
7
8
  import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer.js";
8
9
  import { Input } from "../ui/input.js";
9
10
  /**
@@ -156,5 +157,5 @@ export function SingleUserSearchSelector({ onSelectUser, profileTypeFilter, plac
156
157
  const getProfileTypeBadges = (profiles) => {
157
158
  return profiles.map(p => p.type);
158
159
  };
159
- return (_jsxs("div", { className: cn("single-user-search-selector b3-root relative w-full", className), ref: dropdownRef, children: [_jsxs("div", { className: "single-user-search-input-wrapper relative flex items-center", children: [_jsx(Search, { className: "single-user-search-icon pointer-events-none absolute text-gray-400", style: { left: "12px", width: "16px", height: "16px" } }), _jsx(Input, { ref: inputRef, type: "text", value: searchQuery, onChange: e => setSearchQuery(e.target.value), placeholder: placeholder, className: cn("single-user-search-input w-full border-gray-300 focus:border-blue-500 focus:ring-blue-500"), style: { paddingLeft: "44px", paddingRight: "44px" } }), showClearButton && searchQuery && (_jsx("button", { onClick: handleClear, className: "single-user-search-clear-button absolute text-gray-400 transition-colors hover:text-gray-600", style: { right: "12px" }, type: "button", children: _jsx(X, { style: { width: "16px", height: "16px" } }) }))] }), isSearching && _jsx("div", { className: "single-user-search-loading mt-2 text-sm text-gray-500", children: "Searching..." }), error && !isSearching && _jsx("div", { className: "single-user-search-error mt-2 text-sm text-red-500", children: error }), showDropdown && searchResult && !isSearching && (_jsx("div", { className: "single-user-search-dropdown absolute z-50 mt-2 w-full rounded-lg border border-gray-200 bg-white shadow-lg", children: _jsx("button", { onClick: () => handleSelectUser(searchResult), className: "single-user-search-result-button w-full px-4 py-3 text-left transition-colors hover:bg-gray-50", type: "button", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "single-user-search-result-avatar h-11 w-11 shrink-0", children: _jsx(IPFSMediaRenderer, { src: searchResult.avatar, alt: getDisplayName(searchResult), className: "h-full w-full rounded-full object-cover" }) }), _jsxs("div", { className: "single-user-search-result-info min-w-0 flex-1 pt-0.5", children: [_jsx("div", { className: "single-user-search-result-name text-base font-semibold text-gray-900", children: getDisplayName(searchResult) }), searchResult.address && (_jsxs("div", { className: "single-user-search-result-address mt-1 font-mono text-xs text-gray-500", children: [searchResult.address.slice(0, 6), "...", searchResult.address.slice(-4)] })), searchResult.bio && (_jsx("div", { className: "single-user-search-result-bio mt-1.5 line-clamp-2 text-sm text-gray-600", children: searchResult.bio })), showBadges && (_jsx("div", { className: "single-user-search-result-badges mt-2 flex flex-wrap gap-1.5", children: getProfileTypeBadges(searchResult.profiles).map((type, index) => (_jsx("span", { className: "single-user-search-result-badge inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800", children: type }, `${type}-${index}`))) }))] })] }) }) }))] }));
160
+ return (_jsxs("div", { className: cn("single-user-search-selector b3-root relative w-full", className), ref: dropdownRef, children: [_jsxs("div", { className: "single-user-search-input-wrapper relative flex items-center", children: [_jsx(Search, { className: "single-user-search-icon pointer-events-none absolute text-gray-400", style: { left: "12px", width: "16px", height: "16px" } }), _jsx(Input, { ref: inputRef, type: "text", value: searchQuery, onChange: e => setSearchQuery(e.target.value), placeholder: placeholder, className: cn("single-user-search-input w-full border-gray-300 focus:border-blue-500 focus:ring-blue-500"), style: { paddingLeft: "44px", paddingRight: "44px" } }), showClearButton && searchQuery && (_jsx("button", { onClick: handleClear, className: "single-user-search-clear-button absolute text-gray-400 transition-colors hover:text-gray-600", style: { right: "12px" }, type: "button", children: _jsx(X, { style: { width: "16px", height: "16px" } }) }))] }), isSearching && _jsx("div", { className: "single-user-search-loading mt-2 text-sm text-gray-500", children: "Searching..." }), error && !isSearching && _jsx("div", { className: "single-user-search-error mt-2 text-sm text-red-500", children: error }), showDropdown && searchResult && !isSearching && (_jsx("div", { className: "single-user-search-dropdown absolute z-50 mt-2 w-full rounded-lg border border-gray-200 bg-white shadow-lg", children: _jsx("button", { onClick: () => handleSelectUser(searchResult), className: "single-user-search-result-button w-full px-4 py-3 text-left transition-colors hover:bg-gray-50", type: "button", children: _jsxs("div", { className: "flex items-start gap-3", children: [_jsx("div", { className: "single-user-search-result-avatar h-11 w-11 shrink-0", children: _jsx(IPFSMediaRenderer, { src: validateImageUrl(searchResult.avatar) ?? undefined, alt: getDisplayName(searchResult), className: "h-full w-full rounded-full object-cover" }) }), _jsxs("div", { className: "single-user-search-result-info min-w-0 flex-1 pt-0.5", children: [_jsx("div", { className: "single-user-search-result-name text-base font-semibold text-gray-900", children: getDisplayName(searchResult) }), searchResult.address && (_jsxs("div", { className: "single-user-search-result-address mt-1 font-mono text-xs text-gray-500", children: [searchResult.address.slice(0, 6), "...", searchResult.address.slice(-4)] })), searchResult.bio && (_jsx("div", { className: "single-user-search-result-bio mt-1.5 line-clamp-2 text-sm text-gray-600", children: searchResult.bio })), showBadges && (_jsx("div", { className: "single-user-search-result-badges mt-2 flex flex-wrap gap-1.5", children: getProfileTypeBadges(searchResult.profiles).map((type, index) => (_jsx("span", { className: "single-user-search-result-badge inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800", children: type }, `${type}-${index}`))) }))] })] }) }) }))] }));
160
161
  }
@@ -11,6 +11,9 @@ interface ToastContextType {
11
11
  addToast: (type: ToastType, message: string, duration?: number) => string;
12
12
  removeToast: (id: string) => void;
13
13
  clearAll: () => void;
14
+ headerMode: boolean;
15
+ setHeaderMode: (enabled: boolean) => void;
16
+ latestToast: ToastItem | null;
14
17
  }
15
18
  export declare function ToastProvider({ children }: {
16
19
  children: React.ReactNode;
@@ -4,6 +4,9 @@ const ToastContext = createContext(undefined);
4
4
  let globalToastCounter = 0;
5
5
  export function ToastProvider({ children }) {
6
6
  const [toasts, setToasts] = useState([]);
7
+ const [headerMode, setHeaderMode] = useState(false);
8
+ const headerModeRef = useRef(false);
9
+ const [latestToast, setLatestToast] = useState(null);
7
10
  const timeoutsRef = useRef(new Map());
8
11
  const removeToast = useCallback((id) => {
9
12
  setToasts(prev => prev.filter(toast => toast.id !== id));
@@ -22,12 +25,23 @@ export function ToastProvider({ children }) {
22
25
  duration,
23
26
  createdAt: Date.now(),
24
27
  };
25
- setToasts(prev => [...prev, newToast]);
26
- if (duration > 0) {
27
- const timeout = setTimeout(() => {
28
- removeToast(id);
29
- }, duration);
30
- timeoutsRef.current.set(id, timeout);
28
+ if (headerModeRef.current) {
29
+ setLatestToast(newToast);
30
+ if (duration > 0) {
31
+ const timeout = setTimeout(() => {
32
+ setLatestToast(null);
33
+ }, duration);
34
+ timeoutsRef.current.set(id, timeout);
35
+ }
36
+ }
37
+ else {
38
+ setToasts(prev => [...prev, newToast]);
39
+ if (duration > 0) {
40
+ const timeout = setTimeout(() => {
41
+ removeToast(id);
42
+ }, duration);
43
+ timeoutsRef.current.set(id, timeout);
44
+ }
31
45
  }
32
46
  return id;
33
47
  }, [removeToast]);
@@ -36,6 +50,15 @@ export function ToastProvider({ children }) {
36
50
  timeoutsRef.current.clear();
37
51
  setToasts([]);
38
52
  }, []);
53
+ const setHeaderModeCallback = useCallback((enabled) => {
54
+ setHeaderMode(enabled);
55
+ headerModeRef.current = enabled;
56
+ if (!enabled) {
57
+ setLatestToast(null);
58
+ timeoutsRef.current.forEach(timeout => clearTimeout(timeout));
59
+ timeoutsRef.current.clear();
60
+ }
61
+ }, []);
39
62
  // Cleanup on unmount
40
63
  useEffect(() => {
41
64
  const timeouts = timeoutsRef.current;
@@ -44,7 +67,7 @@ export function ToastProvider({ children }) {
44
67
  timeouts.clear();
45
68
  };
46
69
  }, []);
47
- return _jsx(ToastContext.Provider, { value: { toasts, addToast, removeToast, clearAll }, children: children });
70
+ return (_jsx(ToastContext.Provider, { value: { toasts, addToast, removeToast, clearAll, headerMode, setHeaderMode: setHeaderModeCallback, latestToast }, children: children }));
48
71
  }
49
72
  export function useToastContext() {
50
73
  const context = useContext(ToastContext);
@@ -0,0 +1,18 @@
1
+ interface UserAvatarProps {
2
+ /** Direct avatar URL (IPFS or HTTP). Resolved and validated internally. */
3
+ avatarUrl?: string | null;
4
+ /** Seed for the generated fallback avatar + alt text. Use email, username, or address. */
5
+ name?: string;
6
+ /** Avatar size in pixels (square). */
7
+ size?: number;
8
+ /** Additional className for the outer container. */
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Renders a user avatar with IPFS support and boring-avatars fallback.
13
+ *
14
+ * - If `avatarUrl` is provided and valid, renders via IPFSMediaRenderer.
15
+ * - On load failure or missing URL, falls back to a deterministic boring-avatars beam.
16
+ */
17
+ export declare function UserAvatar({ avatarUrl, name, size, className }: UserAvatarProps): import("react/jsx-runtime").JSX.Element;
18
+ export {};
@@ -0,0 +1,21 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import { validateImageUrl } from "../../../../global-account/react/utils/profileDisplay.js";
3
+ import { AVATAR_COLORS } from "../../../../shared/constants/index.js";
4
+ import Avatar from "boring-avatars";
5
+ import { useCallback, useEffect, useState } from "react";
6
+ import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer.js";
7
+ /**
8
+ * Renders a user avatar with IPFS support and boring-avatars fallback.
9
+ *
10
+ * - If `avatarUrl` is provided and valid, renders via IPFSMediaRenderer.
11
+ * - On load failure or missing URL, falls back to a deterministic boring-avatars beam.
12
+ */
13
+ export function UserAvatar({ avatarUrl, name = "user", size = 40, className }) {
14
+ const resolvedSrc = validateImageUrl(avatarUrl);
15
+ const [imgError, setImgError] = useState(false);
16
+ useEffect(() => {
17
+ setImgError(false);
18
+ }, [avatarUrl]);
19
+ const handleImgError = useCallback(() => setImgError(true), []);
20
+ return (_jsx("div", { className: className, style: { width: size, height: size, minWidth: size, minHeight: size }, children: resolvedSrc && !imgError ? (_jsx("div", { onErrorCapture: handleImgError, className: "h-full w-full overflow-hidden rounded-full", children: _jsx(IPFSMediaRenderer, { src: resolvedSrc, alt: name, className: "h-full w-full object-cover" }) })) : (_jsx(Avatar, { name: name, variant: "beam", size: size, colors: AVATAR_COLORS })) }));
21
+ }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  declare const buttonVariants: (props?: ({
3
- variant?: "link" | "default" | "b3" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
3
+ variant?: "default" | "link" | "b3" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
4
4
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
5
5
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
6
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
@@ -1,10 +1,15 @@
1
1
  export { B3DynamicModal } from "./B3DynamicModal";
2
2
  export { B3Provider } from "./B3Provider/B3Provider";
3
+ export type { AuthStrategy } from "./B3Provider/B3ConfigProvider";
3
4
  export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper";
4
5
  export { useB3 } from "./B3Provider/useB3";
5
6
  export { useB3Account } from "./B3Provider/useB3Account";
6
7
  export { useB3Config } from "./B3Provider/useB3Config";
8
+ export { useBetterAuthClient } from "./B3Provider/BetterAuthClientProvider";
7
9
  export { StyleRoot } from "./StyleRoot";
10
+ export { BetterAuthResetPassword, type BetterAuthResetPasswordProps } from "./SignInWithB3/BetterAuthResetPassword";
11
+ export { BetterAuthSignIn, type BetterAuthSignInProps } from "./SignInWithB3/BetterAuthSignIn";
12
+ export { BetterAuthVerifyEmail, type BetterAuthVerifyEmailProps, type BetterAuthVerifyEmailState, } from "./SignInWithB3/BetterAuthVerifyEmail";
8
13
  export { AuthButton } from "./SignInWithB3/components/AuthButton";
9
14
  export { PermissionItem } from "./SignInWithB3/components/PermissionItem";
10
15
  export { WalletRow } from "./SignInWithB3/components/WalletRow";
@@ -14,6 +19,7 @@ export { SignInWithB3Privy } from "./SignInWithB3/SignInWithB3Privy";
14
19
  export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep";
15
20
  export { getConnectOptionsFromStrategy, isWalletType, type AllowedStrategy } from "./SignInWithB3/utils/signInUtils";
16
21
  export { ManageAccount } from "./ManageAccount/ManageAccount";
22
+ export { UserAvatar } from "./UserAvatar/UserAvatar";
17
23
  export { Deposit } from "./Deposit/Deposit";
18
24
  export { Send } from "./Send/Send";
19
25
  export { IPFSMediaRenderer } from "./IPFSMediaRenderer/IPFSMediaRenderer";
@@ -6,8 +6,12 @@ export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper.js
6
6
  export { useB3 } from "./B3Provider/useB3.js";
7
7
  export { useB3Account } from "./B3Provider/useB3Account.js";
8
8
  export { useB3Config } from "./B3Provider/useB3Config.js";
9
+ export { useBetterAuthClient } from "./B3Provider/BetterAuthClientProvider.js";
9
10
  export { StyleRoot } from "./StyleRoot.js";
10
11
  // SignInWithB3 Components
12
+ export { BetterAuthResetPassword } from "./SignInWithB3/BetterAuthResetPassword.js";
13
+ export { BetterAuthSignIn } from "./SignInWithB3/BetterAuthSignIn.js";
14
+ export { BetterAuthVerifyEmail, } from "./SignInWithB3/BetterAuthVerifyEmail.js";
11
15
  export { AuthButton } from "./SignInWithB3/components/AuthButton.js";
12
16
  export { PermissionItem } from "./SignInWithB3/components/PermissionItem.js";
13
17
  export { WalletRow } from "./SignInWithB3/components/WalletRow.js";
@@ -18,6 +22,8 @@ export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep.js";
18
22
  export { getConnectOptionsFromStrategy, isWalletType } from "./SignInWithB3/utils/signInUtils.js";
19
23
  // ManageAccount Components
20
24
  export { ManageAccount } from "./ManageAccount/ManageAccount.js";
25
+ // UserAvatar
26
+ export { UserAvatar } from "./UserAvatar/UserAvatar.js";
21
27
  // Deposit Components
22
28
  export { Deposit } from "./Deposit/Deposit.js";
23
29
  // Send Components
@@ -1,7 +1,7 @@
1
1
  import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
4
+ variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
5
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -5,6 +5,7 @@ export { useAddTWSessionKey } from "./useAddTWSessionKey";
5
5
  export { useAnalytics } from "./useAnalytics";
6
6
  export { useAuth } from "./useAuth";
7
7
  export { useAuthentication } from "./useAuthentication";
8
+ export { useBetterAuth, EmailVerificationRequiredError } from "./useBetterAuth";
8
9
  export { useB3BalanceFromAddresses } from "./useB3BalanceFromAddresses";
9
10
  export { useB3EnsName } from "./useB3EnsName";
10
11
  export { useChainSwitchWithAction } from "./useChainSwitchWithAction";
@@ -5,6 +5,7 @@ export { useAddTWSessionKey } from "./useAddTWSessionKey.js";
5
5
  export { useAnalytics } from "./useAnalytics.js";
6
6
  export { useAuth } from "./useAuth.js";
7
7
  export { useAuthentication } from "./useAuthentication.js";
8
+ export { useBetterAuth, EmailVerificationRequiredError } from "./useBetterAuth.js";
8
9
  export { useB3BalanceFromAddresses } from "./useB3BalanceFromAddresses.js";
9
10
  export { useB3EnsName } from "./useB3EnsName.js";
10
11
  export { useChainSwitchWithAction } from "./useChainSwitchWithAction.js";
@@ -5,13 +5,13 @@ import { ecosystemWalletId } from "../../../shared/constants/index.js";
5
5
  import { debugB3React } from "../../../shared/utils/debug.js";
6
6
  import { client } from "../../../shared/utils/thirdweb.js";
7
7
  import { getConnectors } from "@wagmi/core";
8
- import { useCallback, useContext, useEffect, useRef } from "react";
8
+ import { useCallback, useContext, useEffect, useMemo, useRef } from "react";
9
9
  import { useActiveWallet, useAutoConnect, useConnectedWallets, useDisconnect, useSetActiveWallet, } from "thirdweb/react";
10
10
  import { ecosystemWallet } from "thirdweb/wallets";
11
11
  import { preAuthenticate } from "thirdweb/wallets/in-app";
12
12
  import { useAccount, useConnect, useSwitchAccount } from "wagmi";
13
13
  import { LocalSDKContext } from "../components/B3Provider/LocalSDKProvider.js";
14
- import { getCachedWagmiConfig } from "../utils/createWagmiConfig.js";
14
+ import { createWagmiConfig } from "../utils/createWagmiConfig.js";
15
15
  import { useSearchParam } from "./useSearchParamsSSR.js";
16
16
  import { useUserQuery } from "./useUserQuery.js";
17
17
  const debug = debugB3React("useAuth");
@@ -21,7 +21,7 @@ const debug = debugB3React("useAuth");
21
21
  * This hook provides 1:1 feature parity with useAuthentication.ts
22
22
  */
23
23
  export function useAuth() {
24
- const { onConnectCallback } = useContext(LocalSDKContext);
24
+ const { onConnectCallback, disableBSMNTAuthentication } = useContext(LocalSDKContext);
25
25
  const { disconnect } = useDisconnect();
26
26
  const wallets = useConnectedWallets();
27
27
  const activeWallet = useActiveWallet();
@@ -38,7 +38,7 @@ export function useAuth() {
38
38
  const useAutoConnectLoadingPrevious = useRef(false);
39
39
  const referralCode = useSearchParam("referralCode");
40
40
  const { partnerId } = useB3Config();
41
- const wagmiConfig = getCachedWagmiConfig({ partnerId });
41
+ const wagmiConfig = useMemo(() => createWagmiConfig({ partnerId }), [partnerId]);
42
42
  const { connect } = useConnect();
43
43
  const activeWagmiAccount = useAccount();
44
44
  const { switchAccount } = useSwitchAccount();
@@ -63,8 +63,10 @@ export function useAuth() {
63
63
  }
64
64
  // Authenticate with BSMNT
65
65
  try {
66
- const b3Jwt = await authenticateWithB3JWT(response.accessToken);
67
- debug("BSMNT re-authentication successful", b3Jwt);
66
+ if (!disableBSMNTAuthentication) {
67
+ const b3Jwt = await authenticateWithB3JWT(response.accessToken);
68
+ debug("BSMNT re-authentication successful", b3Jwt);
69
+ }
68
70
  }
69
71
  catch (bsmntError) {
70
72
  // BSMNT authentication failure shouldn't block the main auth flow
@@ -76,7 +78,7 @@ export function useAuth() {
76
78
  debug("Re-authentication failed", err);
77
79
  throw err;
78
80
  }
79
- }, [setUser]);
81
+ }, [setUser, disableBSMNTAuthentication]);
80
82
  const syncWagmi = useCallback(async () => {
81
83
  function syncWagmiFunc() {
82
84
  const connectors = getConnectors(wagmiConfig);
@@ -120,9 +122,7 @@ export function useAuth() {
120
122
  });
121
123
  }
122
124
  syncWagmiFunc();
123
- // wagmi config shouldn't change
124
- // eslint-disable-next-line react-hooks/exhaustive-deps
125
- }, [partnerId, wallets]);
125
+ }, [wagmiConfig, wallets, connect, switchAccount]);
126
126
  useEffect(() => {
127
127
  syncWagmi();
128
128
  }, [wallets, syncWagmi]);
@@ -139,9 +139,11 @@ export function useAuth() {
139
139
  setIsAuthenticated(true);
140
140
  setIsAuthenticating(false);
141
141
  debug("Re-authenticated successfully", { userAuth });
142
- // Authenticate on BSMNT with B3 JWT
143
- const b3Jwt = await authenticateWithB3JWT(userAuth.accessToken);
144
- debug("@@b3Jwt", b3Jwt);
142
+ if (!disableBSMNTAuthentication) {
143
+ // Authenticate on BSMNT with B3 JWT
144
+ const b3Jwt = await authenticateWithB3JWT(userAuth.accessToken);
145
+ debug("@@b3Jwt", b3Jwt);
146
+ }
145
147
  return userAuth;
146
148
  }
147
149
  catch (error) {
@@ -151,7 +153,14 @@ export function useAuth() {
151
153
  setIsAuthenticating(false);
152
154
  throw new Error("Authentication required. Please authenticate.");
153
155
  }
154
- }, [reAuthenticate, setIsAuthenticated, setIsAuthenticating, setUser, setHasStartedConnecting]);
156
+ }, [
157
+ reAuthenticate,
158
+ setIsAuthenticated,
159
+ setIsAuthenticating,
160
+ setUser,
161
+ setHasStartedConnecting,
162
+ disableBSMNTAuthentication,
163
+ ]);
155
164
  /**
156
165
  * Authenticate with B3
157
166
  *
@@ -181,8 +190,10 @@ export function useAuth() {
181
190
  }
182
191
  // Step 3: Authenticate with BSMNT for basement integration
183
192
  try {
184
- const b3Jwt = await authenticateWithB3JWT(response.accessToken);
185
- debug("BSMNT authentication successful", b3Jwt);
193
+ if (!disableBSMNTAuthentication) {
194
+ const b3Jwt = await authenticateWithB3JWT(response.accessToken);
195
+ debug("BSMNT authentication successful", b3Jwt);
196
+ }
186
197
  }
187
198
  catch (bsmntError) {
188
199
  // BSMNT authentication failure shouldn't block the main auth flow
@@ -194,7 +205,7 @@ export function useAuth() {
194
205
  debug("Authentication failed", err);
195
206
  throw err;
196
207
  }
197
- }, [referralCode, setUser]);
208
+ }, [referralCode, setUser, disableBSMNTAuthentication]);
198
209
  /**
199
210
  * Handle wallet connection
200
211
  */