@b3dotfun/sdk 0.1.69 → 0.1.70-alpha.10

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 (650) hide show
  1. package/constants/chains/b3Chain.js +3 -1
  2. package/dist/cjs/anyspend/constants/rpc.d.ts +2 -1
  3. package/dist/cjs/anyspend/constants/rpc.js +4 -2
  4. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +2 -0
  5. package/dist/cjs/anyspend/react/components/AnySpend.js +12 -4
  6. package/dist/cjs/anyspend/react/components/AnySpendBondKit.d.ts +1 -1
  7. package/dist/cjs/anyspend/react/components/AnySpendBondKit.js +2 -2
  8. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  9. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +2 -2
  10. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  11. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  12. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  13. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +7 -3
  14. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  15. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +21 -14
  16. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  17. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +12 -6
  18. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  19. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  20. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  21. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +4 -4
  22. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  23. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +3 -3
  24. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  25. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +3 -3
  26. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  27. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  28. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  29. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  30. package/dist/cjs/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  31. package/dist/cjs/anyspend/react/components/AnySpendWorkflowTrigger.js +2 -2
  32. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  33. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +2 -2
  34. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  35. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  36. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  37. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  38. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  39. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +2 -2
  40. package/dist/cjs/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  41. package/dist/cjs/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  42. package/dist/cjs/anyspend/react/components/checkout/CartSummary.js +13 -11
  43. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  44. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  45. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  46. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  47. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  48. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.js +15 -7
  49. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  50. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  51. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +43 -23
  52. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  53. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  54. package/dist/cjs/anyspend/react/components/checkout/FiatCheckoutPanel.js +1 -2
  55. package/dist/cjs/anyspend/react/components/checkout/KycGate.js +1 -2
  56. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  57. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.js +9 -0
  58. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  59. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  60. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  61. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +10 -9
  62. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  63. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +7 -2
  64. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  65. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +37 -6
  66. package/dist/cjs/anyspend/react/components/common/StepProgress.d.ts +2 -0
  67. package/dist/cjs/anyspend/react/components/common/StepProgress.js +7 -2
  68. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  69. package/dist/cjs/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +4 -6
  70. package/dist/cjs/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  71. package/dist/cjs/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  72. package/dist/cjs/anyspend/react/hooks/useKycStatus.js +11 -7
  73. package/dist/cjs/anyspend/utils/chain.d.ts +39 -1
  74. package/dist/cjs/anyspend/utils/chain.js +31 -9
  75. package/dist/cjs/anyspend/utils/token.d.ts +2 -0
  76. package/dist/cjs/anyspend/utils/token.js +15 -1
  77. package/dist/cjs/app.shared.d.ts +9 -1
  78. package/dist/cjs/app.shared.js +28 -7
  79. package/dist/cjs/global-account/app.native.d.ts +1 -1
  80. package/dist/cjs/global-account/better-auth-client.d.ts +5161 -0
  81. package/dist/cjs/global-account/better-auth-client.js +42 -0
  82. package/dist/cjs/global-account/bsmnt.d.ts +2 -3
  83. package/dist/cjs/global-account/bsmnt.js +0 -6
  84. package/dist/cjs/global-account/bsmnt.native.d.ts +1 -1
  85. package/dist/cjs/global-account/client-manager.d.ts +7 -5
  86. package/dist/cjs/global-account/client-manager.js +19 -4
  87. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +9 -12
  88. package/dist/cjs/global-account/react/components/B3DynamicModal.js +5 -2
  89. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  90. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  91. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  92. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  93. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +22 -2
  94. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +32 -13
  95. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -8
  96. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  97. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +161 -0
  98. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  99. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  100. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  101. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  102. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  103. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +4 -2
  104. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +36 -4
  105. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  106. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +6 -0
  107. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +17 -6
  108. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  109. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.js +57 -0
  110. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +14 -29
  111. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  112. package/dist/cjs/global-account/react/components/Send/Send.js +5 -2
  113. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  114. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +68 -0
  115. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  116. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +173 -0
  117. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  118. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +85 -0
  119. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +14 -4
  120. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  121. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +15 -10
  122. package/dist/cjs/global-account/react/components/SignInWithB3/components/AuthButton.js +10 -1
  123. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  124. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.js +10 -0
  125. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  126. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +141 -0
  127. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +96 -15
  128. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +7 -4
  129. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +21 -6
  130. package/dist/cjs/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  131. package/dist/cjs/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  132. package/dist/cjs/global-account/react/components/Toast/ToastContext.js +30 -7
  133. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  134. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.js +27 -0
  135. package/dist/cjs/global-account/react/components/custom/Button.d.ts +1 -1
  136. package/dist/cjs/global-account/react/components/index.d.ts +5 -1
  137. package/dist/cjs/global-account/react/components/index.js +12 -5
  138. package/dist/cjs/global-account/react/components/ui/button.d.ts +1 -1
  139. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
  140. package/dist/cjs/global-account/react/hooks/index.js +5 -4
  141. package/dist/cjs/global-account/react/hooks/useAuth.d.ts +3 -3
  142. package/dist/cjs/global-account/react/hooks/useAuth.js +26 -15
  143. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +1 -1
  144. package/dist/cjs/global-account/react/hooks/useAuthentication.js +24 -13
  145. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  146. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.js +31 -3
  147. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +2608 -0
  148. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +158 -0
  149. package/dist/cjs/global-account/react/hooks/useClient.d.ts +3 -3
  150. package/dist/cjs/global-account/react/hooks/useConnect.d.ts +2 -2
  151. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  152. package/dist/cjs/global-account/react/hooks/useNativeBalance.js +2 -2
  153. package/dist/cjs/global-account/react/hooks/useSiwe.d.ts +1 -1
  154. package/dist/cjs/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  155. package/dist/cjs/global-account/react/hooks/useTWAuth.d.ts +1 -1
  156. package/dist/cjs/global-account/react/hooks/useTWAuth.js +0 -1
  157. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +20 -17
  158. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +42 -1
  159. package/dist/cjs/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  160. package/dist/cjs/global-account/react/utils/createWagmiConfig.js +5 -24
  161. package/dist/cjs/global-account/react/utils/index.d.ts +0 -1
  162. package/dist/cjs/global-account/react/utils/index.js +0 -1
  163. package/dist/cjs/global-account/react/utils/profileDisplay.js +17 -18
  164. package/dist/cjs/global-account/types/b3-api.types.d.ts +5 -0
  165. package/dist/cjs/global-account/types/feature-flags.d.ts +5 -5
  166. package/dist/cjs/notifications/services/api.js +1 -0
  167. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +0 -48
  168. package/dist/cjs/shared/constants/chains/b3Chain.js +2 -38
  169. package/dist/cjs/shared/constants/chains/b3Viem.d.ts +6 -0
  170. package/dist/cjs/shared/constants/chains/b3Viem.js +19 -0
  171. package/dist/cjs/shared/constants/chains/supported.d.ts +1 -49
  172. package/dist/cjs/shared/constants/chains/supported.js +8 -36
  173. package/dist/cjs/shared/constants/index.d.ts +1 -0
  174. package/dist/cjs/shared/constants/index.js +2 -1
  175. package/dist/cjs/shared/utils/chain-transformers.d.ts +4 -4
  176. package/dist/cjs/shared/utils/chain-transformers.js +38 -37
  177. package/dist/cjs/shared/utils/chains.d.ts +1 -1
  178. package/dist/cjs/shared/utils/chains.js +2 -2
  179. package/dist/cjs/shared/utils/session-duration.d.ts +15 -0
  180. package/dist/cjs/shared/utils/session-duration.js +69 -0
  181. package/dist/cjs/shared/utils/thirdweb-insights.js +2 -2
  182. package/dist/cjs/shared/utils/upload.d.ts +9 -0
  183. package/dist/cjs/shared/utils/upload.js +34 -0
  184. package/dist/cjs/wallet/react/components/ConnectWallet.d.ts +11 -0
  185. package/dist/cjs/wallet/react/components/ConnectWallet.js +467 -0
  186. package/dist/cjs/wallet/react/components/WalletProvider.d.ts +35 -0
  187. package/dist/cjs/wallet/react/components/WalletProvider.js +20 -0
  188. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  189. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.js +22 -0
  190. package/dist/cjs/wallet/react/hooks/useWalletState.d.ts +31 -0
  191. package/dist/cjs/wallet/react/hooks/useWalletState.js +63 -0
  192. package/dist/cjs/wallet/react/index.d.ts +5 -0
  193. package/dist/cjs/wallet/react/index.js +16 -0
  194. package/dist/cjs/wallet/utils/createWalletConfig.d.ts +21 -0
  195. package/dist/cjs/wallet/utils/createWalletConfig.js +24 -0
  196. package/dist/esm/anyspend/constants/rpc.d.ts +2 -1
  197. package/dist/esm/anyspend/constants/rpc.js +3 -1
  198. package/dist/esm/anyspend/react/components/AnySpend.d.ts +2 -0
  199. package/dist/esm/anyspend/react/components/AnySpend.js +12 -4
  200. package/dist/esm/anyspend/react/components/AnySpendBondKit.d.ts +1 -1
  201. package/dist/esm/anyspend/react/components/AnySpendBondKit.js +2 -2
  202. package/dist/esm/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  203. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +2 -2
  204. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  205. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  206. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  207. package/dist/esm/anyspend/react/components/AnySpendCustom.js +7 -3
  208. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  209. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +21 -14
  210. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  211. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +13 -7
  212. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  213. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  214. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  215. package/dist/esm/anyspend/react/components/AnySpendNFT.js +4 -4
  216. package/dist/esm/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  217. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +4 -4
  218. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  219. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +4 -4
  220. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  221. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  222. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  223. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  224. package/dist/esm/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  225. package/dist/esm/anyspend/react/components/AnySpendWorkflowTrigger.js +2 -2
  226. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  227. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -2
  228. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  229. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  230. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  231. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  232. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  233. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +2 -2
  234. package/dist/esm/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  235. package/dist/esm/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  236. package/dist/esm/anyspend/react/components/checkout/CartSummary.js +13 -11
  237. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  238. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  239. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  240. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  241. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  242. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.js +16 -8
  243. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  244. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  245. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +44 -24
  246. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  247. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  248. package/dist/esm/anyspend/react/components/checkout/FiatCheckoutPanel.js +2 -3
  249. package/dist/esm/anyspend/react/components/checkout/KycGate.js +2 -3
  250. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  251. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.js +6 -0
  252. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  253. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  254. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  255. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +9 -8
  256. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  257. package/dist/esm/anyspend/react/components/common/OrderDetails.js +8 -3
  258. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  259. package/dist/esm/anyspend/react/components/common/OrderStatus.js +34 -3
  260. package/dist/esm/anyspend/react/components/common/StepProgress.d.ts +2 -0
  261. package/dist/esm/anyspend/react/components/common/StepProgress.js +4 -2
  262. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  263. package/dist/esm/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +5 -7
  264. package/dist/esm/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  265. package/dist/esm/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  266. package/dist/esm/anyspend/react/hooks/useKycStatus.js +9 -5
  267. package/dist/esm/anyspend/utils/chain.d.ts +39 -1
  268. package/dist/esm/anyspend/utils/chain.js +33 -11
  269. package/dist/esm/anyspend/utils/token.d.ts +2 -0
  270. package/dist/esm/anyspend/utils/token.js +13 -0
  271. package/dist/esm/app.shared.d.ts +9 -1
  272. package/dist/esm/app.shared.js +26 -7
  273. package/dist/esm/global-account/app.native.d.ts +1 -1
  274. package/dist/esm/global-account/better-auth-client.d.ts +5161 -0
  275. package/dist/esm/global-account/better-auth-client.js +36 -0
  276. package/dist/esm/global-account/bsmnt.d.ts +2 -3
  277. package/dist/esm/global-account/bsmnt.js +0 -5
  278. package/dist/esm/global-account/bsmnt.native.d.ts +1 -1
  279. package/dist/esm/global-account/client-manager.d.ts +7 -5
  280. package/dist/esm/global-account/client-manager.js +19 -5
  281. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +9 -12
  282. package/dist/esm/global-account/react/components/B3DynamicModal.js +5 -2
  283. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  284. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  285. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  286. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  287. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +22 -2
  288. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +28 -9
  289. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +4 -6
  290. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  291. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +156 -0
  292. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  293. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  294. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  295. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  296. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  297. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +5 -3
  298. package/dist/esm/global-account/react/components/ManageAccount/Header.js +37 -5
  299. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  300. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +7 -1
  301. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +16 -8
  302. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  303. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.js +52 -0
  304. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +16 -31
  305. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  306. package/dist/esm/global-account/react/components/Send/Send.js +5 -2
  307. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  308. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +65 -0
  309. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  310. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +170 -0
  311. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  312. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +82 -0
  313. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +15 -5
  314. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  315. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +15 -10
  316. package/dist/esm/global-account/react/components/SignInWithB3/components/AuthButton.js +11 -2
  317. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  318. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.js +7 -0
  319. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  320. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +138 -0
  321. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +100 -19
  322. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +7 -4
  323. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +20 -5
  324. package/dist/esm/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  325. package/dist/esm/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  326. package/dist/esm/global-account/react/components/Toast/ToastContext.js +30 -7
  327. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  328. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.js +21 -0
  329. package/dist/esm/global-account/react/components/custom/Button.d.ts +1 -1
  330. package/dist/esm/global-account/react/components/index.d.ts +5 -1
  331. package/dist/esm/global-account/react/components/index.js +5 -1
  332. package/dist/esm/global-account/react/components/ui/button.d.ts +1 -1
  333. package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
  334. package/dist/esm/global-account/react/hooks/index.js +1 -1
  335. package/dist/esm/global-account/react/hooks/useAuth.d.ts +3 -3
  336. package/dist/esm/global-account/react/hooks/useAuth.js +28 -17
  337. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +1 -1
  338. package/dist/esm/global-account/react/hooks/useAuthentication.js +25 -14
  339. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  340. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.js +33 -5
  341. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +2608 -0
  342. package/dist/esm/global-account/react/hooks/useBetterAuth.js +150 -0
  343. package/dist/esm/global-account/react/hooks/useClient.d.ts +3 -3
  344. package/dist/esm/global-account/react/hooks/useConnect.d.ts +2 -2
  345. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  346. package/dist/esm/global-account/react/hooks/useNativeBalance.js +1 -1
  347. package/dist/esm/global-account/react/hooks/useSiwe.d.ts +1 -1
  348. package/dist/esm/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  349. package/dist/esm/global-account/react/hooks/useTWAuth.d.ts +1 -1
  350. package/dist/esm/global-account/react/hooks/useTWAuth.js +0 -1
  351. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +20 -17
  352. package/dist/esm/global-account/react/stores/useModalStore.d.ts +42 -1
  353. package/dist/esm/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  354. package/dist/esm/global-account/react/utils/createWagmiConfig.js +5 -23
  355. package/dist/esm/global-account/react/utils/index.d.ts +0 -1
  356. package/dist/esm/global-account/react/utils/index.js +0 -1
  357. package/dist/esm/global-account/react/utils/profileDisplay.js +17 -18
  358. package/dist/esm/global-account/types/b3-api.types.d.ts +5 -0
  359. package/dist/esm/global-account/types/feature-flags.d.ts +5 -5
  360. package/dist/esm/notifications/services/api.js +1 -0
  361. package/dist/esm/shared/constants/chains/b3Chain.d.ts +0 -48
  362. package/dist/esm/shared/constants/chains/b3Chain.js +1 -35
  363. package/dist/esm/shared/constants/chains/b3Viem.d.ts +6 -0
  364. package/dist/esm/shared/constants/chains/b3Viem.js +16 -0
  365. package/dist/esm/shared/constants/chains/supported.d.ts +1 -49
  366. package/dist/esm/shared/constants/chains/supported.js +7 -35
  367. package/dist/esm/shared/constants/index.d.ts +1 -0
  368. package/dist/esm/shared/constants/index.js +1 -0
  369. package/dist/esm/shared/utils/chain-transformers.d.ts +4 -4
  370. package/dist/esm/shared/utils/chain-transformers.js +38 -37
  371. package/dist/esm/shared/utils/chains.d.ts +1 -1
  372. package/dist/esm/shared/utils/chains.js +2 -2
  373. package/dist/esm/shared/utils/session-duration.d.ts +15 -0
  374. package/dist/esm/shared/utils/session-duration.js +64 -0
  375. package/dist/esm/shared/utils/thirdweb-insights.js +2 -2
  376. package/dist/esm/shared/utils/upload.d.ts +9 -0
  377. package/dist/esm/shared/utils/upload.js +31 -0
  378. package/dist/esm/wallet/react/components/ConnectWallet.d.ts +11 -0
  379. package/dist/esm/wallet/react/components/ConnectWallet.js +431 -0
  380. package/dist/esm/wallet/react/components/WalletProvider.d.ts +35 -0
  381. package/dist/esm/wallet/react/components/WalletProvider.js +17 -0
  382. package/dist/esm/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  383. package/dist/esm/wallet/react/hooks/useWalletDisconnect.js +19 -0
  384. package/dist/esm/wallet/react/hooks/useWalletState.d.ts +31 -0
  385. package/dist/esm/wallet/react/hooks/useWalletState.js +60 -0
  386. package/dist/esm/wallet/react/index.d.ts +5 -0
  387. package/dist/esm/wallet/react/index.js +8 -0
  388. package/dist/esm/wallet/utils/createWalletConfig.d.ts +21 -0
  389. package/dist/esm/wallet/utils/createWalletConfig.js +21 -0
  390. package/dist/styles/index.css +1 -1
  391. package/dist/types/anyspend/constants/rpc.d.ts +2 -1
  392. package/dist/types/anyspend/react/components/AnySpend.d.ts +2 -0
  393. package/dist/types/anyspend/react/components/AnySpendBondKit.d.ts +1 -1
  394. package/dist/types/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  395. package/dist/types/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  396. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  397. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  398. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  399. package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  400. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  401. package/dist/types/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  402. package/dist/types/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  403. package/dist/types/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  404. package/dist/types/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  405. package/dist/types/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  406. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  407. package/dist/types/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  408. package/dist/types/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  409. package/dist/types/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  410. package/dist/types/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  411. package/dist/types/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  412. package/dist/types/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  413. package/dist/types/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  414. package/dist/types/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  415. package/dist/types/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  416. package/dist/types/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  417. package/dist/types/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  418. package/dist/types/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  419. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  420. package/dist/types/anyspend/react/components/common/StepProgress.d.ts +2 -0
  421. package/dist/types/anyspend/react/hooks/useCreateDepositFirstOrder.d.ts +3 -3
  422. package/dist/types/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  423. package/dist/types/anyspend/utils/chain.d.ts +39 -1
  424. package/dist/types/anyspend/utils/token.d.ts +2 -0
  425. package/dist/types/app.shared.d.ts +9 -1
  426. package/dist/types/global-account/app.native.d.ts +1 -1
  427. package/dist/types/global-account/better-auth-client.d.ts +5161 -0
  428. package/dist/types/global-account/bsmnt.d.ts +2 -3
  429. package/dist/types/global-account/bsmnt.native.d.ts +1 -1
  430. package/dist/types/global-account/client-manager.d.ts +7 -5
  431. package/dist/types/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  432. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  433. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +22 -2
  434. package/dist/types/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  435. package/dist/types/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  436. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  437. package/dist/types/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  438. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  439. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  440. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  441. package/dist/types/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  442. package/dist/types/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  443. package/dist/types/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  444. package/dist/types/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +7 -4
  445. package/dist/types/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  446. package/dist/types/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  447. package/dist/types/global-account/react/components/custom/Button.d.ts +1 -1
  448. package/dist/types/global-account/react/components/index.d.ts +5 -1
  449. package/dist/types/global-account/react/components/ui/button.d.ts +1 -1
  450. package/dist/types/global-account/react/hooks/index.d.ts +1 -1
  451. package/dist/types/global-account/react/hooks/useAuth.d.ts +3 -3
  452. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +1 -1
  453. package/dist/types/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  454. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +2608 -0
  455. package/dist/types/global-account/react/hooks/useClient.d.ts +3 -3
  456. package/dist/types/global-account/react/hooks/useConnect.d.ts +2 -2
  457. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  458. package/dist/types/global-account/react/hooks/useSiwe.d.ts +1 -1
  459. package/dist/types/global-account/react/hooks/useSiwe.native.d.ts +1 -1
  460. package/dist/types/global-account/react/hooks/useTWAuth.d.ts +1 -1
  461. package/dist/types/global-account/react/stores/useModalStore.d.ts +42 -1
  462. package/dist/types/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  463. package/dist/types/global-account/react/utils/index.d.ts +0 -1
  464. package/dist/types/global-account/types/b3-api.types.d.ts +5 -0
  465. package/dist/types/global-account/types/feature-flags.d.ts +5 -5
  466. package/dist/types/shared/constants/chains/b3Chain.d.ts +0 -48
  467. package/dist/types/shared/constants/chains/b3Viem.d.ts +6 -0
  468. package/dist/types/shared/constants/chains/supported.d.ts +1 -49
  469. package/dist/types/shared/constants/index.d.ts +1 -0
  470. package/dist/types/shared/utils/chain-transformers.d.ts +4 -4
  471. package/dist/types/shared/utils/chains.d.ts +1 -1
  472. package/dist/types/shared/utils/session-duration.d.ts +15 -0
  473. package/dist/types/shared/utils/upload.d.ts +9 -0
  474. package/dist/types/wallet/react/components/ConnectWallet.d.ts +11 -0
  475. package/dist/types/wallet/react/components/WalletProvider.d.ts +35 -0
  476. package/dist/types/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  477. package/dist/types/wallet/react/hooks/useWalletState.d.ts +31 -0
  478. package/dist/types/wallet/react/index.d.ts +5 -0
  479. package/dist/types/wallet/utils/createWalletConfig.d.ts +21 -0
  480. package/node_modules/@b3/chain-registry/chains.json +1160 -0
  481. package/node_modules/@b3/chain-registry/package.json +14 -0
  482. package/node_modules/@b3/chain-registry/src/index.ts +169 -0
  483. package/node_modules/@b3/chain-registry/tsconfig.json +16 -0
  484. package/package.json +90 -33
  485. package/src/anyspend/constants/rpc.ts +3 -1
  486. package/src/anyspend/react/components/AnySpend.tsx +24 -12
  487. package/src/anyspend/react/components/AnySpendBondKit.tsx +2 -0
  488. package/src/anyspend/react/components/AnySpendBuySpin.tsx +3 -0
  489. package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +6 -0
  490. package/src/anyspend/react/components/AnySpendCustom.tsx +12 -2
  491. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +29 -14
  492. package/src/anyspend/react/components/AnySpendDeposit.tsx +51 -34
  493. package/src/anyspend/react/components/AnySpendDepositUpside.tsx +3 -0
  494. package/src/anyspend/react/components/AnySpendNFT.tsx +6 -2
  495. package/src/anyspend/react/components/AnySpendStakeB3.tsx +5 -2
  496. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +5 -2
  497. package/src/anyspend/react/components/AnySpendStakeUpside.tsx +4 -0
  498. package/src/anyspend/react/components/AnySpendStakeUpsideExactIn.tsx +3 -0
  499. package/src/anyspend/react/components/AnySpendWorkflowTrigger.tsx +4 -0
  500. package/src/anyspend/react/components/AnyspendDepositHype.tsx +3 -0
  501. package/src/anyspend/react/components/AnyspendSignatureMint.tsx +3 -0
  502. package/src/anyspend/react/components/checkout/AnySpendCheckout.tsx +29 -5
  503. package/src/anyspend/react/components/checkout/AnySpendCheckoutTrigger.tsx +4 -0
  504. package/src/anyspend/react/components/checkout/CartItemRow.tsx +2 -1
  505. package/src/anyspend/react/components/checkout/CartSummary.tsx +24 -20
  506. package/src/anyspend/react/components/checkout/CheckoutCartPanel.tsx +12 -3
  507. package/src/anyspend/react/components/checkout/CheckoutFormPanel.tsx +5 -0
  508. package/src/anyspend/react/components/checkout/CheckoutPaymentPanel.tsx +99 -83
  509. package/src/anyspend/react/components/checkout/CheckoutSuccess.tsx +13 -3
  510. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +45 -27
  511. package/src/anyspend/react/components/checkout/DiscountCodeInput.tsx +15 -5
  512. package/src/anyspend/react/components/checkout/FiatCheckoutPanel.tsx +9 -3
  513. package/src/anyspend/react/components/checkout/KycGate.tsx +8 -3
  514. package/src/anyspend/react/components/checkout/PriceSkeleton.tsx +19 -0
  515. package/src/anyspend/react/components/checkout/ShippingSelector.tsx +5 -1
  516. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +10 -8
  517. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
  518. package/src/anyspend/react/components/common/OrderDetails.tsx +10 -2
  519. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +4 -4
  520. package/src/anyspend/react/components/common/OrderStatus.tsx +38 -3
  521. package/src/anyspend/react/components/common/StepProgress.tsx +15 -5
  522. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  523. package/src/anyspend/react/hooks/useAnyspendCreateOnrampOrder.ts +5 -7
  524. package/src/anyspend/react/hooks/useAnyspendQuote.ts +13 -13
  525. package/src/anyspend/react/hooks/useCreateDepositFirstOrder.ts +4 -4
  526. package/src/anyspend/react/hooks/useKycStatus.ts +8 -5
  527. package/src/anyspend/types/api_req_res.ts +10 -5
  528. package/src/anyspend/utils/chain.ts +35 -10
  529. package/src/anyspend/utils/token.ts +14 -0
  530. package/src/app.shared.ts +29 -8
  531. package/src/global-account/app.native.ts +5 -1
  532. package/src/global-account/better-auth-client.ts +43 -0
  533. package/src/global-account/bsmnt.native.ts +5 -1
  534. package/src/global-account/bsmnt.ts +9 -8
  535. package/src/global-account/client-manager.ts +41 -9
  536. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +9 -12
  537. package/src/global-account/react/components/B3DynamicModal.tsx +5 -2
  538. package/src/global-account/react/components/B3Provider/AuthenticationProvider.tsx +4 -0
  539. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +6 -0
  540. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +16 -21
  541. package/src/global-account/react/components/B3Provider/B3Provider.tsx +94 -37
  542. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +173 -0
  543. package/src/global-account/react/components/B3Provider/LocalSDKProvider.tsx +5 -0
  544. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +17 -10
  545. package/src/global-account/react/components/LinkAccount/LinkedAccountItem.tsx +2 -1
  546. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +18 -14
  547. package/src/global-account/react/components/ManageAccount/Header.tsx +71 -4
  548. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +25 -19
  549. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +13 -0
  550. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +40 -15
  551. package/src/global-account/react/components/ManageAccount/SessionDurationContent.tsx +107 -0
  552. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +35 -54
  553. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +31 -22
  554. package/src/global-account/react/components/Send/Send.tsx +8 -5
  555. package/src/global-account/react/components/SignInWithB3/BetterAuthResetPassword.tsx +145 -0
  556. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +446 -0
  557. package/src/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.tsx +155 -0
  558. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +42 -13
  559. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +21 -8
  560. package/src/global-account/react/components/SignInWithB3/components/AuthButton.tsx +21 -2
  561. package/src/global-account/react/components/SignInWithB3/components/PasswordInput.tsx +62 -0
  562. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +315 -0
  563. package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +207 -54
  564. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +26 -8
  565. package/src/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.tsx +2 -1
  566. package/src/global-account/react/components/Toast/ToastContext.tsx +39 -7
  567. package/src/global-account/react/components/UserAvatar/UserAvatar.tsx +45 -0
  568. package/src/global-account/react/components/index.ts +11 -1
  569. package/src/global-account/react/components/ui/button.tsx +1 -2
  570. package/src/global-account/react/hooks/index.ts +1 -1
  571. package/src/global-account/react/hooks/useAuth.ts +30 -19
  572. package/src/global-account/react/hooks/useAuthentication.ts +26 -15
  573. package/src/global-account/react/hooks/useAutoSelectWallet.ts +40 -6
  574. package/src/global-account/react/hooks/useBetterAuth.ts +192 -0
  575. package/src/global-account/react/hooks/useClient.ts +11 -2
  576. package/src/global-account/react/hooks/useConnect.tsx +2 -2
  577. package/src/global-account/react/hooks/useNativeBalance.tsx +1 -1
  578. package/src/global-account/react/hooks/useSiwe.native.tsx +1 -1
  579. package/src/global-account/react/hooks/useSiwe.tsx +1 -1
  580. package/src/global-account/react/hooks/useTWAuth.tsx +1 -2
  581. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +22 -20
  582. package/src/global-account/react/stores/useModalStore.ts +43 -0
  583. package/src/global-account/react/utils/createWagmiConfig.tsx +6 -25
  584. package/src/global-account/react/utils/index.ts +0 -1
  585. package/src/global-account/react/utils/profileDisplay.ts +21 -19
  586. package/src/global-account/types/b3-api.types.ts +5 -1
  587. package/src/notifications/services/api.ts +1 -0
  588. package/src/shared/constants/chains/b3Chain.ts +1 -40
  589. package/src/shared/constants/chains/b3Viem.ts +18 -0
  590. package/src/shared/constants/chains/supported.ts +9 -48
  591. package/src/shared/constants/index.ts +2 -0
  592. package/src/shared/utils/chain-transformers.ts +41 -39
  593. package/src/shared/utils/chains.ts +3 -2
  594. package/src/shared/utils/session-duration.ts +64 -0
  595. package/src/shared/utils/thirdweb-insights.ts +2 -2
  596. package/src/shared/utils/upload.ts +48 -0
  597. package/src/styles/index.css +27 -0
  598. package/src/types/torph.d.ts +4 -0
  599. package/src/wallet/__tests__/createWalletConfig.test.ts +39 -0
  600. package/src/wallet/react/components/ConnectWallet.tsx +665 -0
  601. package/src/wallet/react/components/WalletProvider.tsx +64 -0
  602. package/src/wallet/react/hooks/useWalletDisconnect.ts +22 -0
  603. package/src/wallet/react/hooks/useWalletState.ts +93 -0
  604. package/src/wallet/react/index.ts +10 -0
  605. package/src/wallet/utils/createWalletConfig.ts +39 -0
  606. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  607. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -54
  608. package/dist/cjs/global-account/react/components/ProfileAvatar.d.ts +0 -0
  609. package/dist/cjs/global-account/react/components/ProfileAvatar.js +0 -127
  610. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  611. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +0 -46
  612. package/dist/cjs/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  613. package/dist/cjs/global-account/react/hooks/useHandleConnectWithPrivy.js +0 -70
  614. package/dist/cjs/global-account/react/hooks/useRPMToken.d.ts +0 -7
  615. package/dist/cjs/global-account/react/hooks/useRPMToken.js +0 -11
  616. package/dist/cjs/global-account/react/utils/updateAvatar.d.ts +0 -4
  617. package/dist/cjs/global-account/react/utils/updateAvatar.js +0 -54
  618. package/dist/cjs/global-account/types/chain-networks.d.ts +0 -44
  619. package/dist/cjs/global-account/types/chain-networks.js +0 -48
  620. package/dist/cjs/shared/generated/chain-networks.json +0 -684
  621. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  622. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -51
  623. package/dist/esm/global-account/react/components/ProfileAvatar.d.ts +0 -0
  624. package/dist/esm/global-account/react/components/ProfileAvatar.js +0 -127
  625. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  626. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Privy.js +0 -43
  627. package/dist/esm/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  628. package/dist/esm/global-account/react/hooks/useHandleConnectWithPrivy.js +0 -67
  629. package/dist/esm/global-account/react/hooks/useRPMToken.d.ts +0 -7
  630. package/dist/esm/global-account/react/hooks/useRPMToken.js +0 -8
  631. package/dist/esm/global-account/react/utils/updateAvatar.d.ts +0 -4
  632. package/dist/esm/global-account/react/utils/updateAvatar.js +0 -18
  633. package/dist/esm/global-account/types/chain-networks.d.ts +0 -44
  634. package/dist/esm/global-account/types/chain-networks.js +0 -45
  635. package/dist/esm/shared/generated/chain-networks.json +0 -684
  636. package/dist/types/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  637. package/dist/types/global-account/react/components/ProfileAvatar.d.ts +0 -0
  638. package/dist/types/global-account/react/components/SignInWithB3/SignInWithB3Privy.d.ts +0 -10
  639. package/dist/types/global-account/react/hooks/useHandleConnectWithPrivy.d.ts +0 -11
  640. package/dist/types/global-account/react/hooks/useRPMToken.d.ts +0 -7
  641. package/dist/types/global-account/react/utils/updateAvatar.d.ts +0 -4
  642. package/dist/types/global-account/types/chain-networks.d.ts +0 -44
  643. package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +0 -90
  644. package/src/global-account/react/components/ProfileAvatar.tsx +0 -138
  645. package/src/global-account/react/components/SignInWithB3/SignInWithB3Privy.tsx +0 -63
  646. package/src/global-account/react/hooks/useHandleConnectWithPrivy.tsx +0 -79
  647. package/src/global-account/react/hooks/useRPMToken.ts +0 -17
  648. package/src/global-account/react/utils/updateAvatar.ts +0 -21
  649. package/src/global-account/types/chain-networks.ts +0 -54
  650. package/src/shared/generated/chain-networks.json +0 -684
@@ -4,6 +4,7 @@ import {
4
4
  SignInWithB3ModalProps,
5
5
  StyleRoot,
6
6
  useAccountWallet,
7
+ useAuthStore,
7
8
  useAuthentication,
8
9
  useB3Config,
9
10
  useIsMobile,
@@ -14,6 +15,8 @@ import { cn, truncateAddress } from "@b3dotfun/sdk/shared/utils";
14
15
  import { Menu, MenuButton, MenuItems, Transition } from "@headlessui/react";
15
16
  import { ReactNode, useEffect } from "react";
16
17
  import { useConnectedWallets, useSetActiveWallet, useWalletImage } from "thirdweb/react";
18
+ import { useUser } from "../../hooks/useUser";
19
+ import { UserAvatar } from "../UserAvatar/UserAvatar";
17
20
  import { ManageAccountButton } from "../custom/ManageAccountButton";
18
21
 
19
22
  type SignInProps = {
@@ -30,7 +33,9 @@ type SignInWithB3Props = Omit<SignInWithB3ModalProps, "type" | "showBackButton">
30
33
 
31
34
  export function SignIn(props: SignInWithB3Props) {
32
35
  const { className } = props;
33
- const { automaticallySetFirstEoa, partnerId } = useB3Config();
36
+ const { automaticallySetFirstEoa, partnerId, authStrategy } = useB3Config();
37
+ const isBetterAuth = authStrategy === "better-auth";
38
+
34
39
  const {
35
40
  address: globalAddress,
36
41
  ensName,
@@ -53,6 +58,11 @@ export function SignIn(props: SignInWithB3Props) {
53
58
 
54
59
  const setActiveWallet = useSetActiveWallet();
55
60
 
61
+ // Better Auth state
62
+ const isAuthenticated = useAuthStore(state => state.isAuthenticated);
63
+ const { user } = useUser();
64
+ const userDisplayName = user?.username || user?.email || "Account";
65
+
56
66
  const handleSetActiveAccount = (selectedWalletId: string | undefined) => {
57
67
  if (
58
68
  !selectedWalletId ||
@@ -72,21 +82,29 @@ export function SignIn(props: SignInWithB3Props) {
72
82
  }
73
83
  }, [connectedEOAWallet, isActiveEOAWallet, setActiveWallet, automaticallySetFirstEoa]);
74
84
 
85
+ const isLoggedIn = isBetterAuth ? isAuthenticated : !!globalAddress;
86
+
75
87
  // Desktop version - original dropdown menu
76
88
  return (
77
89
  <StyleRoot>
78
90
  <Menu className={`relative flex items-center ${className || ""}`} as="div">
79
- {globalAddress ? (
91
+ {isLoggedIn ? (
80
92
  <>
81
93
  <MenuButton className="bg-b3-react-background group flex h-10 items-center gap-1 rounded-xl px-3 focus:outline-none">
82
- {!!walletImage && (
83
- <IPFSMediaRenderer
84
- src={walletImage}
85
- alt="Wallet Image"
86
- className="bg-b3-react-primary h-6 w-6 rounded-full object-cover opacity-100"
87
- />
94
+ {isBetterAuth ? (
95
+ <UserAvatar avatarUrl={user?.avatar} name={userDisplayName} size={24} />
96
+ ) : (
97
+ !!walletImage && (
98
+ <IPFSMediaRenderer
99
+ src={walletImage}
100
+ alt="Wallet Image"
101
+ className="bg-b3-react-primary h-6 w-6 rounded-full object-cover opacity-100"
102
+ />
103
+ )
88
104
  )}
89
- <div className="text-as-primary">{ensName ? ensName : truncateAddress(globalAddress)}</div>
105
+ <div className="text-as-primary">
106
+ {isBetterAuth ? userDisplayName : ensName ? ensName : truncateAddress(globalAddress ?? "")}
107
+ </div>
90
108
  </MenuButton>
91
109
  <Transition
92
110
  enter="duration-200 ease-out"
@@ -103,7 +121,16 @@ export function SignIn(props: SignInWithB3Props) {
103
121
  anchor={isMobile ? "top end" : undefined}
104
122
  >
105
123
  <div className="bg-b3-react-background">
106
- {connectedEOAWallet ? (
124
+ {isBetterAuth ? (
125
+ /* Better Auth: show user info instead of wallet switching */
126
+ <div className="flex items-center gap-3 rounded-xl p-3">
127
+ <UserAvatar avatarUrl={user?.avatar} name={userDisplayName} size={48} />
128
+ <div className="flex flex-col gap-0.5">
129
+ {user?.username && <div className="text-b3-react-primary font-semibold">{user.username}</div>}
130
+ {user?.email && <div className="text-b3-react-secondary text-sm">{user.email}</div>}
131
+ </div>
132
+ </div>
133
+ ) : connectedEOAWallet ? (
107
134
  <div
108
135
  className={cn(
109
136
  "border-b3-react-subtle bg-b3-react-background flex cursor-pointer items-center justify-between rounded-xl p-3",
@@ -118,7 +145,7 @@ export function SignIn(props: SignInWithB3Props) {
118
145
  />
119
146
  <div className="ml-4 grow">
120
147
  {ensName && <div>{ensName}</div>}
121
- <div>{truncateAddress(globalAddress)}</div>
148
+ <div>{truncateAddress(globalAddress ?? "")}</div>
122
149
  {/* <div>{walletInfo?.name}</div> */}
123
150
  </div>
124
151
  </div>
@@ -143,7 +170,7 @@ export function SignIn(props: SignInWithB3Props) {
143
170
  />
144
171
  <div className="grow pl-4">
145
172
  {ensName && <div>{ensName}</div>}
146
- <div>{truncateAddress(globalAddress)}</div>
173
+ <div>{truncateAddress(globalAddress ?? "")}</div>
147
174
  <div>Smart wallet</div>
148
175
  </div>
149
176
  </div>
@@ -159,7 +186,9 @@ export function SignIn(props: SignInWithB3Props) {
159
186
  <button className="mb-2 w-full space-y-1" onClick={onDisconnect}>
160
187
  <div className="hover:bg-b3-react-background group flex h-12 items-center rounded-xl px-4 transition-colors">
161
188
  <Icon className="fill-b3-react-primary mr-4 shrink-0 transition-colors" name="logout" />
162
- <div className="text-b3-react-primary mr-auto transition-colors">Disconnect</div>
189
+ <div className="text-b3-react-primary mr-auto transition-colors">
190
+ {isBetterAuth ? "Sign out" : "Disconnect"}
191
+ </div>
163
192
  </div>
164
193
  </button>
165
194
  </div>
@@ -7,11 +7,11 @@ import {
7
7
  useGetAllTWSigners,
8
8
  useModalStore,
9
9
  } from "@b3dotfun/sdk/global-account/react";
10
+ import { LoginStepBetterAuth } from "./steps/LoginStepBetterAuth";
10
11
  import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
11
12
  import { useCallback, useEffect, useRef, useState } from "react";
12
13
  import { useActiveAccount } from "thirdweb/react";
13
14
  import { Account } from "thirdweb/wallets";
14
- import { SignInWithB3Privy } from "./SignInWithB3Privy";
15
15
  import { LoginStep, LoginStepContainer } from "./steps/LoginStep";
16
16
  import { LoginStepCustom } from "./steps/LoginStepCustom";
17
17
 
@@ -33,8 +33,9 @@ export function SignInWithB3Flow({
33
33
  closeAfterLogin = false,
34
34
  source = "signInWithB3Button",
35
35
  signersEnabled = false,
36
+ verifyEmailRedirectTo,
36
37
  }: SignInWithB3ModalProps) {
37
- const { automaticallySetFirstEoa } = useB3Config();
38
+ const { automaticallySetFirstEoa, authStrategy } = useB3Config();
38
39
  // skipAutoConnect: this component intentionally logs out on mount to show a fresh login screen.
39
40
  // AuthenticationProvider is the sole owner of useAutoConnect to avoid competing auth cycles.
40
41
  const { user, logout } = useAuthentication(partnerId, { skipAutoConnect: true });
@@ -42,10 +43,13 @@ export function SignInWithB3Flow({
42
43
  // Tracks whether the pre-login logout has finished.
43
44
  // We must not render ConnectEmbed until logout (wallet disconnect) completes,
44
45
  // otherwise the wallet state disrupts ConnectEmbed causing a blank modal.
45
- const [readyToShowLogin, setReadyToShowLogin] = useState(source === "requestPermissions");
46
+ const [readyToShowLogin, setReadyToShowLogin] = useState(
47
+ source === "requestPermissions" || authStrategy === "better-auth",
48
+ );
46
49
  const hasLoggedOutRef = useRef(false);
47
50
  useEffect(() => {
48
51
  if (hasLoggedOutRef.current) return;
52
+ if (authStrategy === "better-auth") return;
49
53
  if (source !== "requestPermissions") {
50
54
  debug("Logging out before login");
51
55
  hasLoggedOutRef.current = true;
@@ -53,7 +57,7 @@ export function SignInWithB3Flow({
53
57
  setReadyToShowLogin(true);
54
58
  });
55
59
  }
56
- }, [source, logout]);
60
+ }, [source, logout, authStrategy]);
57
61
 
58
62
  const [step, setStep] = useState<"login" | "permissions" | null>(source === "requestPermissions" ? null : "login");
59
63
  const [sessionKeyAdded, setSessionKeyAdded] = useState(source === "requestPermissions" ? true : false);
@@ -284,7 +288,18 @@ export function SignInWithB3Flow({
284
288
  } else if (step === "login") {
285
289
  // Show loading spinner while: authenticating, waiting for pre-login logout to finish,
286
290
  // or fetching signers.
287
- if (!readyToShowLogin || isAuthenticating || isFetchingSigners) {
291
+ if (authStrategy === "better-auth") {
292
+ // Better Auth manages its own loading/verification states internally.
293
+ // Don't gate on isAuthenticating — it would unmount the component
294
+ // and lose verification state when setIsAuthenticating(false) fires.
295
+ content = (
296
+ <LoginStepBetterAuth
297
+ onSuccess={() => handleLoginSuccess({} as Account)}
298
+ onError={onError}
299
+ verifyEmailRedirectTo={verifyEmailRedirectTo}
300
+ />
301
+ );
302
+ } else if (!readyToShowLogin || isAuthenticating || isFetchingSigners) {
288
303
  content = (
289
304
  <LoginStepContainer partnerId={partnerId}>
290
305
  <div className="my-8 flex min-h-[350px] items-center justify-center">
@@ -294,9 +309,7 @@ export function SignInWithB3Flow({
294
309
  );
295
310
  } else {
296
311
  // Custom strategy
297
- if (strategies?.[0] === "privy") {
298
- content = <SignInWithB3Privy onSuccess={handleLoginSuccess} chain={chain} />;
299
- } else if (strategies) {
312
+ if (strategies) {
300
313
  // Strategies are explicitly provided
301
314
  content = (
302
315
  <LoginStepCustom
@@ -1,5 +1,11 @@
1
1
  import { Button } from "../../custom/Button";
2
- import { strategyIcons } from "../utils/signInUtils";
2
+ import { Github, Mail } from "lucide-react";
3
+ import { strategyIcons, strategyLabels } from "../utils/signInUtils";
4
+
5
+ const fallbackIcons = {
6
+ github: Github,
7
+ email: Mail,
8
+ } as const;
3
9
 
4
10
  export function AuthButton({
5
11
  strategy,
@@ -10,14 +16,27 @@ export function AuthButton({
10
16
  onClick: () => void;
11
17
  isLoading: boolean;
12
18
  }) {
19
+ const strategyIcon = strategyIcons[strategy];
20
+ const strategyLabel = strategyLabels[strategy] || strategy;
21
+ const FallbackIcon = fallbackIcons[strategy as keyof typeof fallbackIcons];
22
+ const buttonLabel = `Sign in with ${strategyLabel}`;
23
+
13
24
  return (
14
25
  <Button
15
26
  key={strategy}
16
27
  onClick={onClick}
17
28
  disabled={isLoading}
29
+ aria-label={buttonLabel}
30
+ title={buttonLabel}
18
31
  className="flex w-full items-center justify-center bg-gray-100 px-2 py-3 hover:bg-gray-200 dark:bg-gray-800 dark:hover:bg-gray-700"
19
32
  >
20
- <img src={strategyIcons[strategy]} className="h-9 w-9" />
33
+ {strategyIcon ? (
34
+ <img src={strategyIcon} alt={`${strategyLabel} icon`} className="h-9 w-9" />
35
+ ) : FallbackIcon ? (
36
+ <FallbackIcon className="h-9 w-9 text-gray-900 dark:text-gray-100" />
37
+ ) : (
38
+ <span className="text-sm font-semibold text-gray-900 dark:text-gray-100">{strategyLabel.charAt(0)}</span>
39
+ )}
21
40
  </Button>
22
41
  );
23
42
  }
@@ -0,0 +1,62 @@
1
+ import { Input } from "@b3dotfun/sdk/global-account/react";
2
+ import { useState } from "react";
3
+
4
+ interface PasswordInputProps {
5
+ value: string;
6
+ onChange: (e: React.ChangeEvent<HTMLInputElement>) => void;
7
+ disabled?: boolean;
8
+ placeholder?: string;
9
+ onKeyDown?: (e: React.KeyboardEvent<HTMLInputElement>) => void;
10
+ className?: string;
11
+ }
12
+
13
+ export function PasswordInput({
14
+ value,
15
+ onChange,
16
+ disabled,
17
+ placeholder = "Password",
18
+ onKeyDown,
19
+ className,
20
+ }: PasswordInputProps) {
21
+ const [showPassword, setShowPassword] = useState(false);
22
+
23
+ return (
24
+ <div className="relative">
25
+ <Input
26
+ type={showPassword ? "text" : "password"}
27
+ placeholder={placeholder}
28
+ value={value}
29
+ onChange={onChange}
30
+ disabled={disabled}
31
+ onKeyDown={onKeyDown}
32
+ className={className}
33
+ />
34
+ <button
35
+ type="button"
36
+ onClick={() => setShowPassword(!showPassword)}
37
+ aria-label={showPassword ? "Hide password" : "Show password"}
38
+ className="absolute right-3 top-1/2 -translate-y-1/2 text-gray-400 hover:text-gray-600 dark:text-gray-500 dark:hover:text-gray-300"
39
+ tabIndex={-1}
40
+ >
41
+ {showPassword ? (
42
+ <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={1.5}>
43
+ <path
44
+ strokeLinecap="round"
45
+ strokeLinejoin="round"
46
+ d="M3.98 8.223A10.477 10.477 0 001.934 12C3.226 16.338 7.244 19.5 12 19.5c.993 0 1.953-.138 2.863-.395M6.228 6.228A10.45 10.45 0 0112 4.5c4.756 0 8.773 3.162 10.065 7.498a10.523 10.523 0 01-4.293 5.774M6.228 6.228L3 3m3.228 3.228l3.65 3.65m7.894 7.894L21 21m-3.228-3.228l-3.65-3.65m0 0a3 3 0 10-4.243-4.243m4.242 4.242L9.88 9.88"
47
+ />
48
+ </svg>
49
+ ) : (
50
+ <svg className="h-5 w-5" fill="none" viewBox="0 0 24 24" stroke="currentColor" strokeWidth={1.5}>
51
+ <path
52
+ strokeLinecap="round"
53
+ strokeLinejoin="round"
54
+ d="M2.036 12.322a1.012 1.012 0 010-.639C3.423 7.51 7.36 4.5 12 4.5c4.638 0 8.573 3.007 9.963 7.178.07.207.07.431 0 .639C20.577 16.49 16.64 19.5 12 19.5c-4.638 0-8.573-3.007-9.963-7.178z"
55
+ />
56
+ <path strokeLinecap="round" strokeLinejoin="round" d="M15 12a3 3 0 11-6 0 3 3 0 016 0z" />
57
+ </svg>
58
+ )}
59
+ </button>
60
+ </div>
61
+ );
62
+ }
@@ -0,0 +1,315 @@
1
+ import { Button, Input, LoginStepContainer, useB3Config } from "@b3dotfun/sdk/global-account/react";
2
+ import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
3
+ import { useState } from "react";
4
+ import {
5
+ EmailVerificationRequiredError,
6
+ type BetterAuthSocialProvider,
7
+ useBetterAuth,
8
+ } from "../../../hooks/useBetterAuth";
9
+ import { AuthButton } from "../components/AuthButton";
10
+ import { PasswordInput } from "../components/PasswordInput";
11
+
12
+ const debug = debugB3React("LoginStepBetterAuth");
13
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
14
+
15
+ const SOCIAL_PROVIDERS: { id: BetterAuthSocialProvider; label: string }[] = [
16
+ { id: "google", label: "Google" },
17
+ { id: "github", label: "GitHub" },
18
+ { id: "discord", label: "Discord" },
19
+ { id: "microsoft", label: "Microsoft" },
20
+ { id: "slack", label: "Slack" },
21
+ ];
22
+
23
+ interface LoginStepBetterAuthProps {
24
+ onSuccess?: () => void;
25
+ onError?: (error: Error) => Promise<void>;
26
+ /** URL Better Auth redirects to after server-side email verification. */
27
+ verifyEmailRedirectTo?: string;
28
+ }
29
+
30
+ export function LoginStepBetterAuth({ onSuccess, onError, verifyEmailRedirectTo }: LoginStepBetterAuthProps) {
31
+ const { partnerId } = useB3Config();
32
+ const { signInWithEmail, signUpWithEmail, signInWithSocial, requestPasswordReset } = useBetterAuth();
33
+
34
+ const [mode, setMode] = useState<"sign-in" | "sign-up" | "forgot-password">("sign-in");
35
+ const [showEmailForm, setShowEmailForm] = useState(false);
36
+ const [email, setEmail] = useState("");
37
+ const [password, setPassword] = useState("");
38
+ const [name, setName] = useState("");
39
+ const [isLoading, setIsLoading] = useState(false);
40
+ const [error, setError] = useState<string | null>(null);
41
+ const [resetEmailSent, setResetEmailSent] = useState(false);
42
+ const [verificationSent, setVerificationSent] = useState(false);
43
+
44
+ const handleEmailSubmit = async () => {
45
+ const normalizedEmail = email.trim().toLowerCase();
46
+
47
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
48
+ setError("Please enter a valid email address");
49
+ return;
50
+ }
51
+
52
+ if (!password) {
53
+ setError("Please enter a password");
54
+ return;
55
+ }
56
+
57
+ if (mode === "sign-up" && !name.trim()) {
58
+ setError("Please enter your name");
59
+ return;
60
+ }
61
+
62
+ try {
63
+ setIsLoading(true);
64
+ setError(null);
65
+
66
+ if (mode === "sign-up") {
67
+ debug("Signing up", { email: normalizedEmail, name: name.trim() });
68
+ await signUpWithEmail(normalizedEmail, password, name.trim(), verifyEmailRedirectTo);
69
+ } else {
70
+ debug("Signing in", { email: normalizedEmail });
71
+ await signInWithEmail(normalizedEmail, password);
72
+ }
73
+
74
+ debug("Auth successful");
75
+ onSuccess?.();
76
+ } catch (err) {
77
+ if (err instanceof EmailVerificationRequiredError) {
78
+ setVerificationSent(true);
79
+ setError(null);
80
+ } else {
81
+ const message = err instanceof Error ? err.message : "Authentication failed";
82
+ setError(message);
83
+ await onError?.(err as Error);
84
+ }
85
+ debug("Auth failed", err);
86
+ } finally {
87
+ setPassword("");
88
+ setIsLoading(false);
89
+ }
90
+ };
91
+
92
+ const handleForgotPassword = async () => {
93
+ const normalizedEmail = email.trim().toLowerCase();
94
+
95
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
96
+ setError("Please enter a valid email address");
97
+ return;
98
+ }
99
+
100
+ try {
101
+ setIsLoading(true);
102
+ setError(null);
103
+ await requestPasswordReset(normalizedEmail);
104
+ setResetEmailSent(true);
105
+ } catch (err) {
106
+ const message = err instanceof Error ? err.message : "Failed to send reset email";
107
+ setError(message);
108
+ } finally {
109
+ setIsLoading(false);
110
+ }
111
+ };
112
+
113
+ const handleSocialSignIn = async (provider: BetterAuthSocialProvider) => {
114
+ try {
115
+ setIsLoading(true);
116
+ setError(null);
117
+ await signInWithSocial(provider);
118
+ } catch (err) {
119
+ const message = err instanceof Error ? err.message : `${provider} sign in failed`;
120
+ setError(message);
121
+ await onError?.(err as Error);
122
+ setIsLoading(false);
123
+ }
124
+ };
125
+
126
+ if (verificationSent) {
127
+ return (
128
+ <LoginStepContainer partnerId={partnerId}>
129
+ <div className="mb-6 w-full space-y-4 px-3 text-center">
130
+ <div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100">
131
+ <svg className="h-6 w-6 text-green-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
132
+ <path
133
+ strokeLinecap="round"
134
+ strokeLinejoin="round"
135
+ strokeWidth={2}
136
+ d="M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z"
137
+ />
138
+ </svg>
139
+ </div>
140
+ <p className="text-sm font-medium text-gray-900 dark:text-gray-100">Check your email</p>
141
+ <p className="text-xs text-gray-500 dark:text-gray-400">
142
+ We sent a verification link to <span className="font-medium text-gray-700 dark:text-gray-200">{email}</span>
143
+ . Verify your account, then come back and sign in.
144
+ </p>
145
+ <button
146
+ onClick={() => {
147
+ setVerificationSent(false);
148
+ setMode("sign-in");
149
+ setShowEmailForm(true);
150
+ setPassword("");
151
+ }}
152
+ className="text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300"
153
+ >
154
+ Back to sign in
155
+ </button>
156
+ </div>
157
+ </LoginStepContainer>
158
+ );
159
+ }
160
+
161
+ return (
162
+ <LoginStepContainer partnerId={partnerId}>
163
+ {mode === "forgot-password" ? (
164
+ <div className="mb-6 w-full space-y-3 px-3">
165
+ <p className="text-center text-sm font-medium text-gray-900 dark:text-gray-100">Reset password</p>
166
+ <p className="text-center text-xs text-gray-500">
167
+ {resetEmailSent
168
+ ? "We've sent a password reset link to your email"
169
+ : "Enter your email and we'll send you a reset link"}
170
+ </p>
171
+
172
+ {resetEmailSent ? (
173
+ <div className="space-y-3 py-4 text-center">
174
+ <p className="text-sm text-green-600">Check your email for a reset link.</p>
175
+ </div>
176
+ ) : (
177
+ <>
178
+ <Input
179
+ type="email"
180
+ placeholder="you@example.com"
181
+ value={email}
182
+ onChange={event => setEmail(event.target.value)}
183
+ disabled={isLoading}
184
+ onKeyDown={event => {
185
+ if (event.key === "Enter") handleForgotPassword();
186
+ }}
187
+ />
188
+
189
+ {error && <p className="text-sm text-red-500">{error}</p>}
190
+
191
+ <Button onClick={handleForgotPassword} disabled={isLoading} className="w-full">
192
+ {isLoading ? "Sending..." : "Send reset link"}
193
+ </Button>
194
+ </>
195
+ )}
196
+
197
+ <button
198
+ onClick={() => {
199
+ setMode("sign-in");
200
+ setShowEmailForm(true);
201
+ setError(null);
202
+ setResetEmailSent(false);
203
+ }}
204
+ className="w-full text-center text-sm text-gray-500 hover:text-gray-700"
205
+ >
206
+ Back to sign in
207
+ </button>
208
+ </div>
209
+ ) : showEmailForm ? (
210
+ <div className="mb-6 w-full space-y-3 px-3">
211
+ <p className="text-center text-sm font-medium text-gray-900 dark:text-gray-100">
212
+ {mode === "sign-in" ? "Sign in with email" : "Create an account"}
213
+ </p>
214
+
215
+ {mode === "sign-up" && (
216
+ <Input
217
+ type="text"
218
+ placeholder="Your name"
219
+ value={name}
220
+ onChange={event => setName(event.target.value)}
221
+ disabled={isLoading}
222
+ />
223
+ )}
224
+
225
+ <Input
226
+ type="email"
227
+ placeholder="you@example.com"
228
+ value={email}
229
+ onChange={event => setEmail(event.target.value)}
230
+ disabled={isLoading}
231
+ />
232
+
233
+ <PasswordInput
234
+ key={mode}
235
+ value={password}
236
+ onChange={event => setPassword(event.target.value)}
237
+ disabled={isLoading}
238
+ onKeyDown={event => {
239
+ if (event.key === "Enter") handleEmailSubmit();
240
+ }}
241
+ className="pr-11"
242
+ />
243
+
244
+ {error && <p className="text-sm text-red-500">{error}</p>}
245
+
246
+ <Button onClick={handleEmailSubmit} disabled={isLoading} className="w-full">
247
+ {isLoading ? "Loading..." : mode === "sign-in" ? "Sign in" : "Sign up"}
248
+ </Button>
249
+
250
+ {mode === "sign-in" && (
251
+ <button
252
+ onClick={() => {
253
+ setMode("forgot-password");
254
+ setError(null);
255
+ }}
256
+ disabled={isLoading}
257
+ className="w-full text-center text-xs text-gray-500 hover:text-gray-700"
258
+ >
259
+ Forgot password?
260
+ </button>
261
+ )}
262
+
263
+ <button
264
+ onClick={() => {
265
+ setMode(mode === "sign-in" ? "sign-up" : "sign-in");
266
+ setError(null);
267
+ }}
268
+ disabled={isLoading}
269
+ className="w-full text-center text-sm text-gray-500 hover:text-gray-700"
270
+ >
271
+ {mode === "sign-in" ? "Don't have an account? Sign up" : "Already have an account? Sign in"}
272
+ </button>
273
+
274
+ <Button
275
+ variant="outline"
276
+ onClick={() => {
277
+ setShowEmailForm(false);
278
+ setError(null);
279
+ }}
280
+ disabled={isLoading}
281
+ className="w-full"
282
+ >
283
+ Back
284
+ </Button>
285
+ </div>
286
+ ) : (
287
+ <div className="mb-6 w-full space-y-4 px-3">
288
+ {/* Social providers */}
289
+ <div className="grid w-full grid-cols-3 gap-4">
290
+ {SOCIAL_PROVIDERS.map(provider => (
291
+ <AuthButton
292
+ key={provider.id}
293
+ strategy={provider.id}
294
+ onClick={() => handleSocialSignIn(provider.id)}
295
+ isLoading={isLoading}
296
+ />
297
+ ))}
298
+ </div>
299
+
300
+ {/* Divider */}
301
+ <div className="flex items-center gap-3">
302
+ <div className="h-px flex-1 bg-gray-200" />
303
+ <span className="text-xs text-gray-400">or</span>
304
+ <div className="h-px flex-1 bg-gray-200" />
305
+ </div>
306
+
307
+ {/* Email option */}
308
+ <AuthButton strategy="email" onClick={() => setShowEmailForm(true)} isLoading={isLoading} />
309
+
310
+ {error && <p className="text-center text-sm text-red-500">{error}</p>}
311
+ </div>
312
+ )}
313
+ </LoginStepContainer>
314
+ );
315
+ }