@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,107 @@
1
+ import app from "@b3dotfun/sdk/global-account/app";
2
+ import { useAuthentication, useModalStore } from "@b3dotfun/sdk/global-account/react";
3
+ import {
4
+ getSessionDurationDays,
5
+ SESSION_DURATION_LABELS,
6
+ SESSION_DURATION_OPTIONS,
7
+ SessionDurationDays,
8
+ setSessionDurationDays,
9
+ } from "@b3dotfun/sdk/shared/utils/session-duration";
10
+ import { useState } from "react";
11
+ import ModalHeader from "../ModalHeader/ModalHeader";
12
+
13
+ interface SessionDurationContentProps {
14
+ partnerId: string;
15
+ }
16
+
17
+ const DESCRIPTIONS: Record<SessionDurationDays, string> = {
18
+ 0: "Sign out when browser closes",
19
+ 1: "Stay signed in for 1 day",
20
+ 7: "Stay signed in for 7 days",
21
+ 14: "Stay signed in for 2 weeks",
22
+ 30: "Stay signed in for 30 days",
23
+ };
24
+
25
+ const SessionDurationContent = ({ partnerId }: SessionDurationContentProps) => {
26
+ const { user, setUser } = useAuthentication(partnerId);
27
+ const navigateBack = useModalStore(state => state.navigateBack);
28
+ const [sessionDays, setSessionDays] = useState<SessionDurationDays>(() =>
29
+ getSessionDurationDays(user?.preferences, partnerId),
30
+ );
31
+ const [saving, setSaving] = useState(false);
32
+
33
+ const handleSelect = async (days: SessionDurationDays) => {
34
+ const previous = sessionDays;
35
+ setSessionDurationDays(days, partnerId);
36
+ setSessionDays(days);
37
+ if (user?.userId) {
38
+ setSaving(true);
39
+ try {
40
+ const updated = await app.service("users").patch(user.userId, {
41
+ preferences: {
42
+ ...user.preferences,
43
+ [partnerId]: {
44
+ ...((((user.preferences as Record<string, unknown>) ?? {})[partnerId] as Record<string, unknown>) ?? {}),
45
+ sessionDuration: days,
46
+ },
47
+ },
48
+ });
49
+ setUser(updated);
50
+ } catch (error) {
51
+ console.error("Failed to save session duration preference:", error);
52
+ // Revert optimistic update so UI stays consistent with server state
53
+ setSessionDays(previous);
54
+ setSessionDurationDays(previous, partnerId);
55
+ } finally {
56
+ setSaving(false);
57
+ }
58
+ }
59
+ };
60
+
61
+ return (
62
+ <div className="flex h-[470px] flex-col">
63
+ <ModalHeader showBackButton={true} showCloseButton={false} title="Stay signed in" handleBack={navigateBack} />
64
+
65
+ <div className="flex flex-col gap-2 p-5">
66
+ {SESSION_DURATION_OPTIONS.map(days => (
67
+ <button
68
+ type="button"
69
+ key={days}
70
+ onClick={() => handleSelect(days)}
71
+ disabled={saving}
72
+ className={`flex items-center justify-between rounded-xl border px-4 py-3 transition-colors ${
73
+ sessionDays === days
74
+ ? "border-[#3f3f46] bg-[#f4f4f5] dark:border-white dark:bg-white/10"
75
+ : "border-[#e4e4e7] bg-transparent hover:bg-[#f4f4f5] dark:border-white/10 dark:hover:bg-white/5"
76
+ }`}
77
+ >
78
+ <div className="flex flex-col items-start gap-0.5">
79
+ <span className="font-neue-montreal-semibold text-[14px] leading-none tracking-[-0.28px] text-[#3f3f46] dark:text-white">
80
+ {SESSION_DURATION_LABELS[days]}
81
+ </span>
82
+ <span className="font-neue-montreal-medium text-[13px] leading-none tracking-[-0.26px] text-[#70707b] dark:text-white/50">
83
+ {DESCRIPTIONS[days]}
84
+ </span>
85
+ </div>
86
+ {sessionDays === days && (
87
+ <div className="flex size-5 items-center justify-center rounded-full bg-[#3f3f46] dark:bg-white">
88
+ <svg width="10" height="8" viewBox="0 0 10 8" fill="none">
89
+ <path
90
+ d="M1 4L3.5 6.5L9 1"
91
+ stroke="white"
92
+ strokeWidth="1.5"
93
+ strokeLinecap="round"
94
+ strokeLinejoin="round"
95
+ className="dark:stroke-[#3f3f46]"
96
+ />
97
+ </svg>
98
+ </div>
99
+ )}
100
+ </button>
101
+ ))}
102
+ </div>
103
+ </div>
104
+ );
105
+ };
106
+
107
+ export default SessionDurationContent;
@@ -1,6 +1,7 @@
1
- import { useAuthentication, useModalStore } from "@b3dotfun/sdk/global-account/react";
1
+ import { useAuthentication, useB3Config, useModalStore } from "@b3dotfun/sdk/global-account/react";
2
2
  import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
3
- import { Loader2 } from "lucide-react";
3
+ import { getSessionDurationDays, SESSION_DURATION_LABELS } from "@b3dotfun/sdk/shared/utils/session-duration";
4
+ import { Bell, Clock, Link, Loader2 } from "lucide-react";
4
5
  import { useState } from "react";
5
6
  import { Chain } from "thirdweb";
6
7
  import { useProfiles } from "thirdweb/react";
@@ -18,48 +19,33 @@ const SettingsContent = ({
18
19
  onLogout?: () => void;
19
20
  chain: Chain;
20
21
  }) => {
22
+ const { authStrategy } = useB3Config();
23
+ const isBetterAuth = authStrategy === "better-auth";
21
24
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
22
25
  const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
23
- const { logout } = useAuthentication(partnerId);
26
+ const { logout, user } = useAuthentication(partnerId);
24
27
  const [logoutLoading, setLogoutLoading] = useState(false);
25
28
 
26
- const { data: profilesRaw = [] } = useProfiles({ client });
29
+ const sessionDays = getSessionDurationDays(user?.preferences, partnerId);
27
30
 
31
+ const { data: profilesRaw = [] } = useProfiles({ client });
28
32
  const profiles = profilesRaw.filter((profile: any) => !["custom_auth_endpoint"].includes(profile.type));
29
33
 
30
- const handleNavigate = (type: "home" | "swap" | "linkAccount" | "avatarEditor" | "notifications") => {
34
+ const handleNavigate = (
35
+ type: "home" | "swap" | "linkAccount" | "avatarEditor" | "notifications" | "sessionDuration",
36
+ ) => {
31
37
  if (type === "home") {
32
- setB3ModalContentType({
33
- type: "manageAccount",
34
- chain,
35
- partnerId,
36
- onLogout,
37
- activeTab: "home",
38
- });
38
+ setB3ModalContentType({ type: "manageAccount", chain, partnerId, onLogout, activeTab: "home" });
39
39
  } else if (type === "swap") {
40
- setB3ModalContentType({
41
- type: "manageAccount",
42
- chain,
43
- partnerId,
44
- onLogout,
45
- activeTab: "tokens",
46
- });
40
+ setB3ModalContentType({ type: "manageAccount", chain, partnerId, onLogout, activeTab: "tokens" });
47
41
  } else if (type === "linkAccount") {
48
- setB3ModalContentType({
49
- type: "linkAccount",
50
- chain,
51
- partnerId,
52
- });
42
+ setB3ModalContentType({ type: "linkAccount", chain, partnerId });
53
43
  } else if (type === "notifications") {
54
- setB3ModalContentType({
55
- type: "notifications",
56
- chain,
57
- partnerId,
58
- });
44
+ setB3ModalContentType({ type: "notifications", chain, partnerId });
45
+ } else if (type === "sessionDuration") {
46
+ setB3ModalContentType({ type: "sessionDuration", chain, partnerId });
59
47
  } else {
60
- setB3ModalContentType({
61
- type: "avatarEditor",
62
- });
48
+ setB3ModalContentType({ type: "avatarEditor" });
63
49
  }
64
50
  setB3ModalOpen(true);
65
51
  };
@@ -74,7 +60,7 @@ const SettingsContent = ({
74
60
 
75
61
  return (
76
62
  <div className="flex h-[470px] flex-col">
77
- <ModalHeader showBackButton={false} showCloseButton={false} title="Settings" />
63
+ {!isBetterAuth && <ModalHeader showBackButton={false} showCloseButton={false} title="Settings" />}
78
64
 
79
65
  {/* Profile Section */}
80
66
  <div className="p-5">
@@ -85,37 +71,32 @@ const SettingsContent = ({
85
71
 
86
72
  {/* Menu Items */}
87
73
  <div className="space-y-3 px-5">
74
+ {!isBetterAuth && (
75
+ <SettingsMenuItem
76
+ icon={<Link size={18} className="text-[#51525c]" />}
77
+ title="Linked Accounts"
78
+ subtitle={`${profiles.length} connected account${profiles.length > 1 ? "s" : ""}`}
79
+ onClick={() => handleNavigate("linkAccount")}
80
+ />
81
+ )}
88
82
  <SettingsMenuItem
89
- icon={
90
- <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
91
- <path
92
- d="M0 12C0 5.37258 5.37258 0 12 0H28C34.6274 0 40 5.37258 40 12V28C40 34.6274 34.6274 40 28 40H12C5.37258 40 0 34.6274 0 28V12Z"
93
- fill="#F4F4F5"
94
- />
95
- </svg>
96
- }
97
- title="Linked Accounts"
98
- subtitle={`${profiles.length} connected account${profiles.length > 1 ? "s" : ""}`}
99
- onClick={() => handleNavigate("linkAccount")}
100
- />
101
- <SettingsMenuItem
102
- icon={
103
- <svg width="40" height="40" viewBox="0 0 40 40" fill="none" xmlns="http://www.w3.org/2000/svg">
104
- <path
105
- d="M0 12C0 5.37258 5.37258 0 12 0H28C34.6274 0 40 5.37258 40 12V28C40 34.6274 34.6274 40 28 40H12C5.37258 40 0 34.6274 0 28V12Z"
106
- fill="#F4F4F5"
107
- />
108
- </svg>
109
- }
83
+ icon={<Bell size={18} className="text-[#51525c]" />}
110
84
  title="Notifications"
111
85
  subtitle="Manage your notifications"
112
86
  onClick={() => handleNavigate("notifications")}
113
87
  />
88
+ <SettingsMenuItem
89
+ icon={<Clock size={18} className="text-[#51525c]" />}
90
+ title="Stay signed in"
91
+ subtitle={SESSION_DURATION_LABELS[sessionDays] ?? `${sessionDays} days`}
92
+ onClick={() => handleNavigate("sessionDuration")}
93
+ />
114
94
  </div>
115
95
 
116
96
  {/* Logout Section */}
117
97
  <div className="mt-auto px-5 pb-5">
118
98
  <button
99
+ type="button"
119
100
  className="b3-modal-sign-out-button border-b3-line hover:bg-b3-line bg-b3-background dark:bg-b3-background dark:border-b3-line dark:hover:bg-b3-line/80 flex w-full items-center justify-center gap-1.5 rounded-xl border border-solid p-3 transition-colors"
120
101
  onClick={onLogoutEnhanced}
121
102
  disabled={logoutLoading}
@@ -1,6 +1,7 @@
1
1
  import { ens_normalize } from "@adraffy/ens-normalize";
2
2
  import app from "@b3dotfun/sdk/global-account/app";
3
3
  import { toast, useAuthentication, useB3Config, useModalStore, useProfile } from "@b3dotfun/sdk/global-account/react";
4
+ import { validateImageUrl } from "@b3dotfun/sdk/global-account/react/utils/profileDisplay";
4
5
  import { formatUsername } from "@b3dotfun/sdk/shared/utils";
5
6
  import { Check, Loader2, Pencil, X } from "lucide-react";
6
7
  import { useEffect, useRef, useState } from "react";
@@ -17,7 +18,8 @@ const SettingsProfileCard = () => {
17
18
  address: eoaAddress || account?.address,
18
19
  fresh: true,
19
20
  });
20
- const { partnerId } = useB3Config();
21
+ const { partnerId, authStrategy } = useB3Config();
22
+ const isBetterAuth = authStrategy === "better-auth";
21
23
  const { user, setUser } = useAuthentication(partnerId);
22
24
  const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
23
25
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
@@ -29,8 +31,7 @@ const SettingsProfileCard = () => {
29
31
  const [isSaving, setIsSaving] = useState(false);
30
32
  const inputRef = useRef<HTMLInputElement>(null);
31
33
 
32
- // IPFSMediaRenderer will handle IPFS URL conversion and validation
33
- const avatarSrc = user?.avatar || profile?.avatar;
34
+ const avatarSrc = validateImageUrl(user?.avatar) || validateImageUrl(profile?.avatar);
34
35
 
35
36
  // Get current username - prioritize user.username, fallback to profile data
36
37
  const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
@@ -78,25 +79,33 @@ const SettingsProfileCard = () => {
78
79
 
79
80
  setIsSaving(true);
80
81
  try {
81
- const sanitizedUsername = ens_normalize(editedUsername.trim());
82
- const b3Username = `${sanitizedUsername}.b3.fun`;
83
- const usernameSignMessage = `Register "${b3Username}"`;
84
- const usernameSignature = await account?.signMessage({ message: usernameSignMessage });
85
-
86
- if (!usernameSignature) {
87
- throw new Error("Failed to sign username registration message");
82
+ let updatedUser: Users;
83
+ if (isBetterAuth) {
84
+ // Better Auth: register username without wallet signing (DB-only, no ENS)
85
+ // Skip ens_normalize it rejects underscores/mixed-case that are valid non-ENS usernames
86
+ const sanitizedUsername = editedUsername.trim().toLowerCase();
87
+ // Type assertion needed: b3-mono now accepts message/hash as optional for Better Auth users
88
+ updatedUser = (await app
89
+ .service("users")
90
+ .registerUsername({ username: sanitizedUsername } as any, {} as any)) as unknown as Users;
91
+ } else {
92
+ // Thirdweb: register username with wallet signature + on-chain ENS
93
+ const sanitizedUsername = ens_normalize(editedUsername.trim());
94
+ const b3Username = `${sanitizedUsername}.b3.fun`;
95
+ const usernameSignMessage = `Register "${b3Username}"`;
96
+ const usernameSignature = await account?.signMessage({ message: usernameSignMessage });
97
+
98
+ if (!usernameSignature) {
99
+ throw new Error("Failed to sign username registration message");
100
+ }
101
+
102
+ updatedUser = (await app
103
+ .service("users")
104
+ .registerUsername(
105
+ { username: sanitizedUsername, message: usernameSignMessage, hash: usernameSignature },
106
+ {} as any,
107
+ )) as unknown as Users;
88
108
  }
89
-
90
- console.log("@@usernameSignature", usernameSignature);
91
-
92
- // Register username with ENS
93
- // Note: Type assertion needed until @b3dotfun/b3-api package is updated with RegisterUsername type
94
- const updatedUser = (await app
95
- .service("users")
96
- .registerUsername(
97
- { username: sanitizedUsername, message: usernameSignMessage, hash: usernameSignature },
98
- {} as any,
99
- )) as unknown as Users;
100
109
  // Update user state - registerUsername returns an array with single user
101
110
  setUser(Array.isArray(updatedUser) ? updatedUser[0] : updatedUser);
102
111
 
@@ -179,7 +188,7 @@ const SettingsProfileCard = () => {
179
188
  <>
180
189
  <div className="flex items-center gap-1">
181
190
  <p className="b3-modal-username font-neue-montreal-semibold text-lg leading-none text-[#0B57C2]">
182
- {currentUsername}
191
+ {currentUsername || user?.email}
183
192
  </p>
184
193
  </div>
185
194
  <button
@@ -9,6 +9,7 @@ import {
9
9
  useSimBalance,
10
10
  useUnifiedChainSwitchAndExecute,
11
11
  } from "@b3dotfun/sdk/global-account/react";
12
+ import { validateImageUrl } from "@b3dotfun/sdk/global-account/react/utils/profileDisplay";
12
13
  import { formatDisplayNumber, formatTokenAmount } from "@b3dotfun/sdk/shared/utils/number";
13
14
  import invariant from "invariant";
14
15
  import { CircleHelp, Clock, Loader2, Send as SendIcon, Wallet } from "lucide-react";
@@ -32,6 +33,7 @@ type SendStep = "recipient" | "token" | "amount" | "confirm" | "success";
32
33
  // Component for displaying a recent address with profile data
33
34
  function RecentAddressItem({ address, onClick }: { address: string; onClick: () => void }) {
34
35
  const { data: profileData } = useProfile({ address });
36
+ const validatedAvatar = validateImageUrl(profileData?.avatar);
35
37
 
36
38
  return (
37
39
  <button
@@ -39,8 +41,8 @@ function RecentAddressItem({ address, onClick }: { address: string; onClick: ()
39
41
  className="flex items-center gap-2 rounded-xl px-3 py-2 transition-colors hover:bg-[#fafafa]"
40
42
  >
41
43
  {/* Avatar */}
42
- {profileData?.avatar ? (
43
- <img src={profileData.avatar} alt={profileData.name || address} className="h-10 w-10 rounded-full" />
44
+ {validatedAvatar ? (
45
+ <img src={validatedAvatar} alt={profileData?.name || address} className="h-10 w-10 rounded-full" />
44
46
  ) : (
45
47
  <div className="flex h-10 w-10 items-center justify-center rounded-full border border-[#e4e4e7] bg-[#f4f4f5]">
46
48
  <Wallet className="h-5 w-5 text-[#a0a0ab]" />
@@ -84,6 +86,7 @@ export function Send({ recipientAddress: initialRecipient, onSuccess }: SendModa
84
86
  const { data: validatedProfileData } = useProfile({
85
87
  address: showValidatedResult && recipientAddress && isAddress(recipientAddress) ? recipientAddress : undefined,
86
88
  });
89
+ const validatedRecipientAvatar = validateImageUrl(validatedProfileData?.avatar);
87
90
 
88
91
  // Address validation
89
92
  const handleRecipientAddressChange = (value: string) => {
@@ -290,10 +293,10 @@ export function Send({ recipientAddress: initialRecipient, onSuccess }: SendModa
290
293
  className="dark:bg-b3-background dark:border-b3-line flex items-center gap-2 rounded-xl bg-[#f4f4f5] px-3 py-2 transition-colors hover:bg-[#e4e4e7]"
291
294
  >
292
295
  {/* Avatar */}
293
- {validatedProfileData?.avatar ? (
296
+ {validatedRecipientAvatar ? (
294
297
  <img
295
- src={validatedProfileData.avatar}
296
- alt={validatedProfileData.name || recipientAddress}
298
+ src={validatedRecipientAvatar}
299
+ alt={validatedProfileData?.name || recipientAddress}
297
300
  className="h-10 w-10 rounded-full"
298
301
  />
299
302
  ) : (
@@ -0,0 +1,145 @@
1
+ import { Button } from "@b3dotfun/sdk/global-account/react";
2
+ import { debugB3React } from "@b3dotfun/sdk/shared/utils/debug";
3
+ import { useState } from "react";
4
+ import { useBetterAuth } from "../../hooks/useBetterAuth";
5
+ import { PasswordInput } from "./components/PasswordInput";
6
+
7
+ const debug = debugB3React("BetterAuthResetPassword");
8
+
9
+ export interface BetterAuthResetPasswordProps {
10
+ /** The reset token from the URL query param */
11
+ token: string;
12
+ /** Called after password is successfully reset */
13
+ onSuccess?: () => void;
14
+ /** Called on error */
15
+ onError?: (error: Error) => void;
16
+ /** Optional class name */
17
+ className?: string;
18
+ }
19
+
20
+ /**
21
+ * Standalone reset password form. Render this on your reset password page.
22
+ * Reads the token from props (extract it from the URL query string).
23
+ *
24
+ * Usage:
25
+ * ```tsx
26
+ * const token = new URLSearchParams(window.location.search).get("token");
27
+ * <BetterAuthResetPassword token={token} onSuccess={() => navigate("/login")} />
28
+ * ```
29
+ */
30
+ export function BetterAuthResetPassword({ token, onSuccess, onError, className }: BetterAuthResetPasswordProps) {
31
+ const { resetPassword } = useBetterAuth();
32
+
33
+ const [password, setPassword] = useState("");
34
+ const [confirmPassword, setConfirmPassword] = useState("");
35
+ const [isLoading, setIsLoading] = useState(false);
36
+ const [error, setError] = useState<string | null>(null);
37
+ const [success, setSuccess] = useState(false);
38
+
39
+ const handleSubmit = async () => {
40
+ if (!password) {
41
+ setError("Please enter a new password");
42
+ return;
43
+ }
44
+
45
+ if (password.length < 8) {
46
+ setError("Password must be at least 8 characters");
47
+ return;
48
+ }
49
+
50
+ if (password !== confirmPassword) {
51
+ setError("Passwords do not match");
52
+ return;
53
+ }
54
+
55
+ try {
56
+ setIsLoading(true);
57
+ setError(null);
58
+ await resetPassword(password, token);
59
+ setSuccess(true);
60
+ debug("Password reset successful");
61
+ onSuccess?.();
62
+ } catch (err) {
63
+ const message = err instanceof Error ? err.message : "Password reset failed";
64
+ setError(message);
65
+ debug("Password reset failed", err);
66
+ onError?.(err as Error);
67
+ } finally {
68
+ setPassword("");
69
+ setConfirmPassword("");
70
+ setIsLoading(false);
71
+ }
72
+ };
73
+
74
+ if (!token) {
75
+ return (
76
+ <div className={`w-full max-w-[400px] px-6 text-center ${className || ""}`}>
77
+ <p className="text-sm text-red-500">Invalid or missing reset token.</p>
78
+ </div>
79
+ );
80
+ }
81
+
82
+ return (
83
+ <div className={`w-full max-w-[400px] px-6 ${className || ""}`}>
84
+ <div className="mb-10 text-center">
85
+ <h1 className="text-[28px] font-semibold tracking-tight text-gray-900 dark:text-gray-100">
86
+ {success ? "Password reset" : "Set new password"}
87
+ </h1>
88
+ <p className="mt-3 text-[15px] text-gray-500 dark:text-gray-400">
89
+ {success ? "Your password has been updated." : "Enter your new password below."}
90
+ </p>
91
+ </div>
92
+
93
+ {success ? (
94
+ <div className="space-y-4 text-center">
95
+ <div className="mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100">
96
+ <svg className="h-6 w-6 text-green-600" fill="none" viewBox="0 0 24 24" stroke="currentColor">
97
+ <path strokeLinecap="round" strokeLinejoin="round" strokeWidth={2} d="M5 13l4 4L19 7" />
98
+ </svg>
99
+ </div>
100
+ </div>
101
+ ) : (
102
+ <div className="space-y-5">
103
+ <div>
104
+ <label className="mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300">
105
+ New password
106
+ </label>
107
+ <PasswordInput
108
+ placeholder="At least 8 characters"
109
+ value={password}
110
+ onChange={e => setPassword(e.target.value)}
111
+ disabled={isLoading}
112
+ className="h-11 px-4 pr-11 text-[15px]"
113
+ />
114
+ </div>
115
+
116
+ <div>
117
+ <label className="mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300">
118
+ Confirm password
119
+ </label>
120
+ <PasswordInput
121
+ placeholder="Repeat your password"
122
+ value={confirmPassword}
123
+ onChange={e => setConfirmPassword(e.target.value)}
124
+ disabled={isLoading}
125
+ onKeyDown={e => {
126
+ if (e.key === "Enter") handleSubmit();
127
+ }}
128
+ className="h-11 px-4 pr-11 text-[15px]"
129
+ />
130
+ </div>
131
+
132
+ {error && <p className="text-sm text-red-500">{error}</p>}
133
+
134
+ <Button
135
+ onClick={handleSubmit}
136
+ disabled={isLoading}
137
+ className="h-11 w-full bg-gray-900 text-[15px] font-medium text-white hover:bg-gray-800 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-100"
138
+ >
139
+ {isLoading ? "Resetting..." : "Reset password"}
140
+ </Button>
141
+ </div>
142
+ )}
143
+ </div>
144
+ );
145
+ }