@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
@@ -0,0 +1,128 @@
1
+ import app from "@b3dotfun/sdk/global-account/app";
2
+ import { useAuthStore } from "@b3dotfun/sdk/global-account/react";
3
+ import { B3_AUTH_COOKIE_NAME } from "@b3dotfun/sdk/shared/constants";
4
+ import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
5
+ import Cookies from "js-cookie";
6
+ import { useEffect, useRef } from "react";
7
+ import { useUserQuery } from "../../hooks/useUserQuery";
8
+ import { useBetterAuthClient } from "./BetterAuthClientProvider";
9
+
10
+ const debug = debugB3React("BetterAuthProvider");
11
+
12
+ /**
13
+ * Parallel to AuthenticationProvider for Better Auth strategy.
14
+ *
15
+ * Manages the isAuthenticating lifecycle for Better Auth:
16
+ * 1. On mount, try to restore an existing Feathers JWT (from a previous login)
17
+ * 2. If no Feathers JWT, check for a Better Auth session (e.g. after OAuth redirect)
18
+ * and exchange it for a Feathers JWT
19
+ * 3. If neither exists, set isAuthenticating: false so the login UI renders
20
+ *
21
+ * Also patches app.logout() so any code path that calls it (useAuthentication,
22
+ * useAuth, SignIn component, etc.) automatically clears the Better Auth session.
23
+ */
24
+ const BetterAuthProvider = ({ partnerId }: { partnerId: string }) => {
25
+ const betterAuthClient = useBetterAuthClient();
26
+ const setIsAuthenticated = useAuthStore(state => state.setIsAuthenticated);
27
+ const setIsAuthenticating = useAuthStore(state => state.setIsAuthenticating);
28
+ const setIsConnected = useAuthStore(state => state.setIsConnected);
29
+ const { setUser } = useUserQuery();
30
+ const hasAttemptedRestore = useRef(false);
31
+ const hasPatched = useRef(false);
32
+
33
+ // Patch app.logout() to also clear the Better Auth session.
34
+ // This ensures any existing logout path (useAuthentication, useAuth, SignIn
35
+ // dropdown, etc.) clears both the Feathers JWT and the Better Auth session.
36
+ // Patch app.logout() to also clear the Better Auth session.
37
+ // Only handles Better Auth signOut — state cleanup (isAuthenticated, isConnected,
38
+ // setUser, localStorage) is handled by useAuthentication/useAuth's own logout.
39
+ useEffect(() => {
40
+ if (hasPatched.current) return;
41
+ hasPatched.current = true;
42
+
43
+ const originalLogout = app.logout.bind(app);
44
+ (app as any).logout = async () => {
45
+ debug("Patched logout: clearing Better Auth session");
46
+ try {
47
+ await betterAuthClient.signOut();
48
+ } catch {
49
+ debug("Better Auth signOut failed (non-critical)");
50
+ }
51
+ return originalLogout();
52
+ };
53
+
54
+ return () => {
55
+ (app as any).logout = originalLogout;
56
+ hasPatched.current = false;
57
+ };
58
+ }, [betterAuthClient]);
59
+
60
+ // Session restore on mount
61
+ useEffect(() => {
62
+ if (hasAttemptedRestore.current) return;
63
+ hasAttemptedRestore.current = true;
64
+
65
+ const restoreSession = async () => {
66
+ debug("Attempting session restore");
67
+
68
+ // 1. Try existing Feathers JWT first (fastest — no network call to Better Auth)
69
+ try {
70
+ const response = await app.reAuthenticate();
71
+ if (response?.user) {
72
+ debug("Feathers JWT restored", { userId: response.user.userId });
73
+ setUser(response.user);
74
+ setIsAuthenticated(true);
75
+ setIsConnected(true);
76
+ setIsAuthenticating(false);
77
+ return;
78
+ }
79
+ } catch {
80
+ debug("No existing Feathers JWT");
81
+ }
82
+
83
+ // 2. Check for a Better Auth session (e.g. after OAuth redirect sets a cookie)
84
+ try {
85
+ const session = await betterAuthClient.getSession();
86
+ if (session.data?.session?.token) {
87
+ debug("Better Auth session found, exchanging for Feathers JWT", {
88
+ betterAuthUserId: session.data.user?.id,
89
+ });
90
+
91
+ const response = await app.authenticate({
92
+ strategy: "better-auth",
93
+ accessToken: session.data.session.token,
94
+ partnerId,
95
+ } as any);
96
+
97
+ if (response.accessToken) {
98
+ Cookies.set(B3_AUTH_COOKIE_NAME, response.accessToken, {
99
+ secure: true,
100
+ sameSite: "Lax",
101
+ });
102
+ }
103
+
104
+ if (response.user) {
105
+ setUser(response.user);
106
+ setIsAuthenticated(true);
107
+ setIsConnected(true);
108
+ }
109
+
110
+ debug("OAuth session exchanged for Feathers JWT", { userId: response.user?.userId });
111
+ setIsAuthenticating(false);
112
+ return;
113
+ }
114
+ } catch {
115
+ debug("No Better Auth session to restore");
116
+ }
117
+
118
+ // 3. Nothing found — show login UI
119
+ setIsAuthenticating(false);
120
+ };
121
+
122
+ restoreSession();
123
+ }, [setIsAuthenticated, setIsAuthenticating, setIsConnected, setUser, partnerId, betterAuthClient]);
124
+
125
+ return null;
126
+ };
127
+
128
+ export default BetterAuthProvider;
@@ -8,11 +8,13 @@ import { Wallet } from "thirdweb/wallets";
8
8
  export interface LocalSDKContextType {
9
9
  onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
10
10
  onLogoutCallback?: () => void | Promise<void>;
11
+ disableBSMNTAuthentication?: boolean;
11
12
  }
12
13
 
13
14
  export const LocalSDKContext = createContext<LocalSDKContextType>({
14
15
  onConnectCallback: undefined,
15
16
  onLogoutCallback: undefined,
17
+ disableBSMNTAuthentication: false,
16
18
  });
17
19
 
18
20
  /**
@@ -22,16 +24,19 @@ export function LocalSDKProvider({
22
24
  children,
23
25
  onConnectCallback,
24
26
  onLogoutCallback,
27
+ disableBSMNTAuthentication,
25
28
  }: {
26
29
  children: React.ReactNode;
27
30
  onConnectCallback?: (wallet: Wallet, b3Jwt: string) => void | Promise<void>;
28
31
  onLogoutCallback?: () => void | Promise<void>;
32
+ disableBSMNTAuthentication?: boolean;
29
33
  }) {
30
34
  return (
31
35
  <LocalSDKContext.Provider
32
36
  value={{
33
37
  onConnectCallback,
34
38
  onLogoutCallback,
39
+ disableBSMNTAuthentication,
35
40
  }}
36
41
  >
37
42
  {children}
@@ -22,6 +22,8 @@ interface IPFSMediaRendererProps {
22
22
  controls?: boolean;
23
23
  /** Style object */
24
24
  style?: React.CSSProperties;
25
+ /** Callback when media fails to load */
26
+ onError?: () => void;
25
27
  }
26
28
 
27
29
  /**
@@ -51,6 +53,7 @@ export function IPFSMediaRenderer({
51
53
  height,
52
54
  controls,
53
55
  style,
56
+ onError,
54
57
  }: IPFSMediaRendererProps) {
55
58
  // If no source, render fallback
56
59
  if (!src) {
@@ -67,16 +70,20 @@ export function IPFSMediaRenderer({
67
70
  // This avoids Thirdweb's default cloudflare-ipfs.com which can be unreliable
68
71
  const resolvedSrc = src.startsWith("ipfs://") ? getIpfsUrl(src) : src;
69
72
 
73
+ // Wrap in a span with onErrorCapture to catch img/video load errors from
74
+ // MediaRenderer, which doesn't expose an onError prop itself.
70
75
  return (
71
- <MediaRenderer
72
- src={resolvedSrc}
73
- client={client}
74
- alt={alt}
75
- className={className}
76
- width={width ? width.toString() : undefined}
77
- height={height ? height.toString() : undefined}
78
- controls={controls}
79
- style={style}
80
- />
76
+ <span onErrorCapture={onError} className="contents">
77
+ <MediaRenderer
78
+ src={resolvedSrc}
79
+ client={client}
80
+ alt={alt}
81
+ className={className}
82
+ width={width ? width.toString() : undefined}
83
+ height={height ? height.toString() : undefined}
84
+ controls={controls}
85
+ style={style}
86
+ />
87
+ </span>
81
88
  );
82
89
  }
@@ -1,4 +1,5 @@
1
1
  import { Button, toast, useProfile } from "@b3dotfun/sdk/global-account/react";
2
+ import { validateImageUrl } from "@b3dotfun/sdk/global-account/react/utils/profileDisplay";
2
3
  import { truncateAddress } from "@b3dotfun/sdk/shared/utils/truncateAddress";
3
4
  import { Copy, Loader2, UnlinkIcon } from "lucide-react";
4
5
 
@@ -55,7 +56,7 @@ const LinkedAccountItem = ({
55
56
  }
56
57
  };
57
58
 
58
- const displayImageUrl = profileData?.avatar || profile.imageUrl;
59
+ const displayImageUrl = validateImageUrl(profileData?.avatar) || validateImageUrl(profile.imageUrl);
59
60
  const displayName = profileData?.name || displayTitle;
60
61
 
61
62
  return (
@@ -1,4 +1,4 @@
1
- import { TabsListPrimitive, TabTriggerPrimitive, useModalStore } from "@b3dotfun/sdk/global-account/react";
1
+ import { TabsListPrimitive, TabTriggerPrimitive, useB3Config, useModalStore } from "@b3dotfun/sdk/global-account/react";
2
2
 
3
3
  const HomeIcon = () => {
4
4
  return (
@@ -42,6 +42,8 @@ const SettingsIcon = () => {
42
42
 
43
43
  const BottomNavigation = () => {
44
44
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
45
+ const { authStrategy } = useB3Config();
46
+ const isBetterAuth = authStrategy === "better-auth";
45
47
 
46
48
  return (
47
49
  <div className="b3-modal-bottom-navigation sticky bottom-0 left-0 w-full rounded-b-xl border-t border-gray-200 bg-[#FAFAFA]">
@@ -54,19 +56,21 @@ const BottomNavigation = () => {
54
56
  <span className="text-b3-grey font-neue-montreal-semibold text-xs">Home</span>
55
57
  </TabTriggerPrimitive>
56
58
 
57
- <TabTriggerPrimitive
58
- value="swap"
59
- className="data-[state=active]:border-b3-primary-blue group flex flex-initial flex-col items-center gap-1 border-r-0 border-t-0 px-6 pb-2 pt-2.5 text-[#a0a0ab] data-[state=active]:border-t-4 data-[state=active]:text-[#18181B] dark:data-[state=active]:text-white"
60
- onClick={() => {
61
- setB3ModalContentType({
62
- type: "anySpend",
63
- showBackButton: true,
64
- });
65
- }}
66
- >
67
- <SwapIcon />
68
- <span className="text-b3-grey font-neue-montreal-semibold text-xs">Swap</span>
69
- </TabTriggerPrimitive>
59
+ {!isBetterAuth && (
60
+ <TabTriggerPrimitive
61
+ value="swap"
62
+ className="data-[state=active]:border-b3-primary-blue group flex flex-initial flex-col items-center gap-1 border-r-0 border-t-0 px-6 pb-2 pt-2.5 text-[#a0a0ab] data-[state=active]:border-t-4 data-[state=active]:text-[#18181B] dark:data-[state=active]:text-white"
63
+ onClick={() => {
64
+ setB3ModalContentType({
65
+ type: "anySpend",
66
+ showBackButton: true,
67
+ });
68
+ }}
69
+ >
70
+ <SwapIcon />
71
+ <span className="text-b3-grey font-neue-montreal-semibold text-xs">Swap</span>
72
+ </TabTriggerPrimitive>
73
+ )}
70
74
 
71
75
  <TabTriggerPrimitive
72
76
  value="settings"
@@ -2,6 +2,7 @@ import {
2
2
  CopyToClipboard,
3
3
  ManageAccountModalProps,
4
4
  useAuthentication,
5
+ useB3Config,
5
6
  useModalStore,
6
7
  } from "@b3dotfun/sdk/global-account/react";
7
8
  import * as AccordionPrimitive from "@radix-ui/react-accordion";
@@ -10,6 +11,7 @@ import { Loader2 } from "lucide-react";
10
11
  import { useState } from "react";
11
12
  import { useActiveWallet, useConnectedWallets, useSetActiveWallet, useWalletImage } from "thirdweb/react";
12
13
  import { Wallet } from "thirdweb/wallets";
14
+ import { UserAvatar } from "../UserAvatar/UserAvatar";
13
15
  import { ChevronDownIcon } from "../icons/ChevronDownIcon";
14
16
  import LinkIcon from "../icons/LinkIcon";
15
17
  import SignOutIcon from "../icons/SignOutIcon";
@@ -89,7 +91,69 @@ function WalletItem({ wallet, isActive, onClick }: { wallet: Wallet; isActive: b
89
91
  );
90
92
  }
91
93
 
94
+ function BetterAuthHeader({ onLogout }: { onLogout?: () => void }) {
95
+ const contentType = useModalStore(state => state.contentType) as ManageAccountModalProps;
96
+ const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
97
+ const partnerId = contentType?.partnerId;
98
+ const { logout, user } = useAuthentication(partnerId);
99
+ const [logoutLoading, setLogoutLoading] = useState(false);
100
+
101
+ const displayName = user?.username || user?.email || "Account";
102
+
103
+ const onLogoutEnhanced = async () => {
104
+ setLogoutLoading(true);
105
+ try {
106
+ await logout();
107
+ onLogout?.();
108
+ } finally {
109
+ setB3ModalOpen(false);
110
+ setLogoutLoading(false);
111
+ }
112
+ };
113
+
114
+ return (
115
+ <div className="bg-b3-background border-b3-line flex items-center justify-between border-b px-5 py-3">
116
+ <div className="flex items-center gap-2">
117
+ <UserAvatar avatarUrl={user?.avatar} name={displayName} size={40} className="shrink-0" />
118
+ <div className="flex flex-col gap-0.5">
119
+ {user?.username && (
120
+ <p className="text-b3-grey font-neue-montreal-semibold text-left text-sm">{user.username}</p>
121
+ )}
122
+ {user?.email && (
123
+ <div className="flex items-center gap-1">
124
+ <p className="text-b3-foreground-muted font-neue-montreal-medium text-sm">{user.email}</p>
125
+ <CopyToClipboard text={user.email} />
126
+ </div>
127
+ )}
128
+ </div>
129
+ </div>
130
+ <button
131
+ className="border-b3-line hover:bg-b3-line flex items-center justify-center gap-1.5 rounded-xl border border-solid px-3 py-2 transition-colors"
132
+ onClick={onLogoutEnhanced}
133
+ disabled={logoutLoading}
134
+ >
135
+ {logoutLoading ? (
136
+ <Loader2 className="animate-spin" size={16} />
137
+ ) : (
138
+ <SignOutIcon size={16} className="text-b3-grey" />
139
+ )}
140
+ <p className="text-b3-grey font-neue-montreal-semibold text-sm">Sign out</p>
141
+ </button>
142
+ </div>
143
+ );
144
+ }
145
+
92
146
  export function Header({ onLogout }: { onLogout?: () => void }) {
147
+ const { authStrategy } = useB3Config();
148
+
149
+ if (authStrategy === "better-auth") {
150
+ return <BetterAuthHeader onLogout={onLogout} />;
151
+ }
152
+
153
+ return <WalletHeader onLogout={onLogout} />;
154
+ }
155
+
156
+ function WalletHeader({ onLogout }: { onLogout?: () => void }) {
93
157
  const activeWallet = useActiveWallet();
94
158
 
95
159
  const connectedWallets = useConnectedWallets();
@@ -110,10 +174,13 @@ export function Header({ onLogout }: { onLogout?: () => void }) {
110
174
 
111
175
  const onLogoutEnhanced = async () => {
112
176
  setLogoutLoading(true);
113
- await logout();
114
- onLogout?.();
115
- setB3ModalOpen(false);
116
- setLogoutLoading(false);
177
+ try {
178
+ await logout();
179
+ onLogout?.();
180
+ } finally {
181
+ setB3ModalOpen(false);
182
+ setLogoutLoading(false);
183
+ }
117
184
  };
118
185
 
119
186
  const handleWalletSwitch = (wallet: Wallet) => {
@@ -1,3 +1,4 @@
1
+ import { useB3Config } from "@b3dotfun/sdk/global-account/react";
1
2
  import { Tabs, TabsContent, TabsList, TabTrigger } from "../ui/Tabs";
2
3
  import { Header } from "./Header";
3
4
  import HomeActions from "./HomeActions";
@@ -11,31 +12,36 @@ interface HomeContentProps {
11
12
  }
12
13
 
13
14
  export function HomeContent({ showDeposit = false, showSwap = true }: HomeContentProps) {
15
+ const { authStrategy } = useB3Config();
16
+ const isBetterAuth = authStrategy === "better-auth";
17
+
14
18
  return (
15
19
  <div className="flex flex-col">
16
20
  <Header />
17
21
  <div className="flex flex-col">
18
22
  <ProfileSection />
19
23
 
20
- <HomeActions showDeposit={showDeposit} showSwap={showSwap} />
21
- <div className="b3-modal-balance-content space-y-2 p-5">
22
- <Tabs defaultValue={"balance"}>
23
- <TabsList className="b3-modal-balance-tabs-list">
24
- <TabTrigger value="balance" className="font-neue-montreal-semibold p-0 pr-3">
25
- Balance
26
- </TabTrigger>
27
- <TabTrigger value="nfts" className="font-neue-montreal-semibold p-0 pr-3">
28
- NFTs
29
- </TabTrigger>
30
- </TabsList>
31
- <TabsContent value="balance" className="px-0 pb-4 pt-2">
32
- <TokenContent />
33
- </TabsContent>
34
- <TabsContent value="nfts" className="px-0 pb-4 pt-2">
35
- <NFTContent />
36
- </TabsContent>
37
- </Tabs>
38
- </div>
24
+ {!isBetterAuth && <HomeActions showDeposit={showDeposit} showSwap={showSwap} />}
25
+ {!isBetterAuth && (
26
+ <div className="b3-modal-balance-content space-y-2 p-5">
27
+ <Tabs defaultValue={"balance"}>
28
+ <TabsList className="b3-modal-balance-tabs-list">
29
+ <TabTrigger value="balance" className="font-neue-montreal-semibold p-0 pr-3">
30
+ Balance
31
+ </TabTrigger>
32
+ <TabTrigger value="nfts" className="font-neue-montreal-semibold p-0 pr-3">
33
+ NFTs
34
+ </TabTrigger>
35
+ </TabsList>
36
+ <TabsContent value="balance" className="px-0 pb-4 pt-2">
37
+ <TokenContent />
38
+ </TabsContent>
39
+ <TabsContent value="nfts" className="px-0 pb-4 pt-2">
40
+ <NFTContent />
41
+ </TabsContent>
42
+ </Tabs>
43
+ </div>
44
+ )}
39
45
  </div>
40
46
  </div>
41
47
  );
@@ -2,6 +2,7 @@ import {
2
2
  ManageAccountModalProps,
3
3
  TabsContentPrimitive,
4
4
  TabsPrimitive,
5
+ useB3Config,
5
6
  useModalStore,
6
7
  } from "@b3dotfun/sdk/global-account/react";
7
8
  import { Chain } from "thirdweb";
@@ -74,9 +75,21 @@ export function ManageAccount({
74
75
  showSwap,
75
76
  showDeposit,
76
77
  }: ManageAccountProps) {
78
+ const { authStrategy } = useB3Config();
79
+ const isBetterAuth = authStrategy === "better-auth";
77
80
  const contentType = useModalStore(state => state.contentType);
78
81
  const { activeTab = "home", setActiveTab } = contentType as ManageAccountModalProps;
79
82
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
83
+
84
+ // Better Auth: single-view layout — no Home/Swap tabs, just settings content
85
+ if (isBetterAuth) {
86
+ return (
87
+ <div className="b3-manage-account flex-1">
88
+ <SettingsContent partnerId={partnerId} onLogout={onLogout} chain={chain} />
89
+ </div>
90
+ );
91
+ }
92
+
80
93
  return (
81
94
  <div className="b3-manage-account flex-1">
82
95
  <TabsPrimitive
@@ -1,19 +1,25 @@
1
1
  import {
2
2
  useAccountWallet,
3
+ useB3Config,
3
4
  useModalStore,
4
5
  useProfile,
5
6
  useSimBalance,
6
7
  useUser,
7
8
  } from "@b3dotfun/sdk/global-account/react";
9
+ import { validateImageUrl } from "@b3dotfun/sdk/global-account/react/utils/profileDisplay";
10
+ import { AVATAR_COLORS } from "@b3dotfun/sdk/shared/constants";
8
11
  import { formatUsername } from "@b3dotfun/sdk/shared/utils";
9
12
  import { formatDisplayNumber } from "@b3dotfun/sdk/shared/utils/number";
13
+ import Avatar from "boring-avatars";
10
14
  import { Pencil } from "lucide-react";
11
- import { useMemo } from "react";
15
+ import { useCallback, useEffect, useMemo, useState } from "react";
12
16
  import { useActiveAccount } from "thirdweb/react";
13
17
  import { useFirstEOA } from "../../hooks/useFirstEOA";
14
18
  import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer";
15
19
 
16
20
  const ProfileSection = () => {
21
+ const { authStrategy } = useB3Config();
22
+ const isBetterAuth = authStrategy === "better-auth";
17
23
  const account = useActiveAccount();
18
24
  const { address: eoaAddress } = useFirstEOA();
19
25
  const { address: smartWalletAddress } = useAccountWallet();
@@ -27,8 +33,9 @@ const ProfileSection = () => {
27
33
  const navigateBack = useModalStore(state => state.navigateBack);
28
34
 
29
35
  const { data: simBalance } = useSimBalance(smartWalletAddress);
36
+ const [imgError, setImgError] = useState(false);
37
+ const handleImgError = useCallback(() => setImgError(true), []);
30
38
 
31
- // Calculate total balance in USD
32
39
  const totalBalanceUsd = useMemo(() => {
33
40
  if (!simBalance?.balances) return 0;
34
41
  return simBalance.balances.reduce((sum, token) => sum + (token.value_usd || 0), 0);
@@ -39,27 +46,40 @@ const ProfileSection = () => {
39
46
  setB3ModalContentType({
40
47
  type: "avatarEditor",
41
48
  onSuccess: () => {
42
- // navigate back on success
43
49
  navigateBack();
44
50
  },
45
51
  });
46
52
  };
47
53
 
48
- // IPFSMediaRenderer will handle IPFS URL conversion and validation
49
- const avatarSrc = user?.avatar || profile?.avatar;
54
+ const avatarSrc = useMemo(
55
+ () => validateImageUrl(user?.avatar) || validateImageUrl(profile?.avatar),
56
+ [user?.avatar, profile?.avatar],
57
+ );
58
+
59
+ // Reset error state when avatar source changes (e.g. user uploads a new avatar)
60
+ useEffect(() => {
61
+ setImgError(false);
62
+ }, [avatarSrc]);
50
63
 
51
- // Get current username - prioritize user.username, fallback to profile data
52
64
  const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
65
+ const avatarSeed = eoaAddress || account?.address || smartWalletAddress || currentUsername || user?.email || "user";
53
66
 
54
67
  return (
55
68
  <div className="flex items-center justify-between px-5 py-6">
56
69
  <div className="global-account-profile flex items-center gap-4">
57
70
  <div className="global-account-profile-avatar relative">
58
- <IPFSMediaRenderer
59
- src={avatarSrc}
60
- alt="Profile Avatar"
61
- className="border-b3-line border-1 bg-b3-primary-wash size-14 rounded-full border"
62
- />
71
+ <div className="border-b3-line border-1 bg-b3-primary-wash size-14 overflow-hidden rounded-full border">
72
+ {avatarSrc && !imgError ? (
73
+ <IPFSMediaRenderer
74
+ src={avatarSrc}
75
+ alt="Profile Avatar"
76
+ className="h-full w-full object-cover"
77
+ onError={handleImgError}
78
+ />
79
+ ) : (
80
+ <Avatar name={avatarSeed} variant="beam" size={56} colors={AVATAR_COLORS} />
81
+ )}
82
+ </div>
63
83
 
64
84
  <button
65
85
  onClick={handleEditAvatar}
@@ -69,13 +89,18 @@ const ProfileSection = () => {
69
89
  </button>
70
90
  </div>
71
91
  <div className="global-account-profile-info flex flex-col gap-1">
72
- <h2 className="text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl">
73
- <div className="text-b3-foreground-muted"> $</div>
74
- <div className="text-[30px]">{formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 })}</div>
75
- </h2>
92
+ {!isBetterAuth && (
93
+ <h2 className="text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl">
94
+ <div className="text-b3-foreground-muted"> $</div>
95
+ <div className="text-[30px]">{formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 })}</div>
96
+ </h2>
97
+ )}
76
98
  <div className="b3-modal-username font-neue-montreal-semibold text-base leading-none text-[#0B57C2]">
77
99
  {currentUsername}
78
100
  </div>
101
+ {isBetterAuth && user?.email && (
102
+ <div className="text-b3-foreground-muted font-neue-montreal-medium text-sm">{user.email}</div>
103
+ )}
79
104
  </div>
80
105
  </div>
81
106
  </div>