@b3dotfun/sdk 0.1.69 → 0.1.70-alpha.2

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 (538) 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/AnySpendBondKit.d.ts +1 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendBondKit.js +2 -2
  7. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  8. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +2 -2
  9. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  10. package/dist/cjs/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  11. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  12. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +7 -3
  13. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  14. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +21 -14
  15. package/dist/cjs/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  16. package/dist/cjs/anyspend/react/components/AnySpendDeposit.js +12 -6
  17. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  18. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  19. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  20. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +4 -4
  21. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  22. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +3 -3
  23. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  24. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +3 -3
  25. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  26. package/dist/cjs/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  27. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  28. package/dist/cjs/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  29. package/dist/cjs/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  30. package/dist/cjs/anyspend/react/components/AnySpendWorkflowTrigger.js +2 -2
  31. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  32. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +2 -2
  33. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  34. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  35. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  36. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  37. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  38. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +2 -2
  39. package/dist/cjs/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  40. package/dist/cjs/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  41. package/dist/cjs/anyspend/react/components/checkout/CartSummary.js +13 -11
  42. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  43. package/dist/cjs/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  44. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  45. package/dist/cjs/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  46. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  47. package/dist/cjs/anyspend/react/components/checkout/CheckoutPaymentPanel.js +15 -7
  48. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  49. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  50. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +43 -23
  51. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  52. package/dist/cjs/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  53. package/dist/cjs/anyspend/react/components/checkout/FiatCheckoutPanel.js +1 -2
  54. package/dist/cjs/anyspend/react/components/checkout/KycGate.js +1 -2
  55. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  56. package/dist/cjs/anyspend/react/components/checkout/PriceSkeleton.js +9 -0
  57. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  58. package/dist/cjs/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  59. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  60. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +10 -9
  61. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  62. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +7 -2
  63. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  64. package/dist/cjs/anyspend/react/components/common/OrderStatus.js +37 -6
  65. package/dist/cjs/anyspend/react/components/common/StepProgress.d.ts +2 -0
  66. package/dist/cjs/anyspend/react/components/common/StepProgress.js +7 -2
  67. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  68. package/dist/cjs/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +4 -6
  69. package/dist/cjs/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  70. package/dist/cjs/anyspend/react/hooks/useKycStatus.js +11 -7
  71. package/dist/cjs/anyspend/utils/chain.js +8 -7
  72. package/dist/cjs/app.shared.js +9 -7
  73. package/dist/cjs/global-account/better-auth-client.d.ts +1883 -0
  74. package/dist/cjs/global-account/better-auth-client.js +17 -0
  75. package/dist/cjs/global-account/bsmnt.d.ts +0 -1
  76. package/dist/cjs/global-account/bsmnt.js +0 -6
  77. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -1
  78. package/dist/cjs/global-account/react/components/B3DynamicModal.js +5 -2
  79. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  80. package/dist/cjs/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  81. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  82. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  83. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +11 -2
  84. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +10 -13
  85. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -8
  86. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  87. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +120 -0
  88. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  89. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  90. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  91. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  92. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  93. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +4 -2
  94. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +36 -4
  95. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  96. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +6 -0
  97. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +17 -6
  98. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  99. package/dist/cjs/global-account/react/components/ManageAccount/SessionDurationContent.js +57 -0
  100. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +14 -29
  101. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  102. package/dist/cjs/global-account/react/components/Send/Send.js +5 -2
  103. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  104. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +68 -0
  105. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  106. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +173 -0
  107. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  108. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +85 -0
  109. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +14 -4
  110. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  111. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +14 -5
  112. package/dist/cjs/global-account/react/components/SignInWithB3/components/AuthButton.js +10 -1
  113. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  114. package/dist/cjs/global-account/react/components/SignInWithB3/components/PasswordInput.js +10 -0
  115. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  116. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +141 -0
  117. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +96 -15
  118. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  119. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +20 -3
  120. package/dist/cjs/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  121. package/dist/cjs/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  122. package/dist/cjs/global-account/react/components/Toast/ToastContext.js +30 -7
  123. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  124. package/dist/cjs/global-account/react/components/UserAvatar/UserAvatar.js +27 -0
  125. package/dist/cjs/global-account/react/components/custom/Button.d.ts +1 -1
  126. package/dist/cjs/global-account/react/components/index.d.ts +5 -0
  127. package/dist/cjs/global-account/react/components/index.js +12 -3
  128. package/dist/cjs/global-account/react/components/ui/button.d.ts +1 -1
  129. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  130. package/dist/cjs/global-account/react/hooks/index.js +5 -2
  131. package/dist/cjs/global-account/react/hooks/useAuth.js +26 -15
  132. package/dist/cjs/global-account/react/hooks/useAuthentication.js +23 -12
  133. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  134. package/dist/cjs/global-account/react/hooks/useAutoSelectWallet.js +31 -3
  135. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  136. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +158 -0
  137. package/dist/cjs/global-account/react/hooks/useConnect.d.ts +2 -2
  138. package/dist/cjs/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  139. package/dist/cjs/global-account/react/hooks/useTWAuth.js +0 -1
  140. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +42 -1
  141. package/dist/cjs/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  142. package/dist/cjs/global-account/react/utils/createWagmiConfig.js +5 -24
  143. package/dist/cjs/global-account/react/utils/index.d.ts +0 -1
  144. package/dist/cjs/global-account/react/utils/index.js +0 -1
  145. package/dist/cjs/global-account/react/utils/profileDisplay.js +17 -18
  146. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +7 -7
  147. package/dist/cjs/shared/constants/chains/b3Chain.js +4 -4
  148. package/dist/cjs/shared/constants/chains/b3Viem.d.ts +6 -0
  149. package/dist/cjs/shared/constants/chains/b3Viem.js +19 -0
  150. package/dist/cjs/shared/constants/chains/supported.d.ts +1 -1
  151. package/dist/cjs/shared/constants/index.d.ts +1 -0
  152. package/dist/cjs/shared/constants/index.js +2 -1
  153. package/dist/cjs/shared/generated/chain-networks.json +2 -2
  154. package/dist/cjs/shared/utils/chains.d.ts +1 -1
  155. package/dist/cjs/shared/utils/chains.js +2 -2
  156. package/dist/cjs/shared/utils/session-duration.d.ts +15 -0
  157. package/dist/cjs/shared/utils/session-duration.js +69 -0
  158. package/dist/cjs/wallet/react/components/ConnectWallet.d.ts +11 -0
  159. package/dist/cjs/wallet/react/components/ConnectWallet.js +467 -0
  160. package/dist/cjs/wallet/react/components/WalletProvider.d.ts +35 -0
  161. package/dist/cjs/wallet/react/components/WalletProvider.js +20 -0
  162. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  163. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.js +22 -0
  164. package/dist/cjs/wallet/react/hooks/useWalletState.d.ts +31 -0
  165. package/dist/cjs/wallet/react/hooks/useWalletState.js +63 -0
  166. package/dist/cjs/wallet/react/index.d.ts +5 -0
  167. package/dist/cjs/wallet/react/index.js +16 -0
  168. package/dist/cjs/wallet/utils/createWalletConfig.d.ts +21 -0
  169. package/dist/cjs/wallet/utils/createWalletConfig.js +24 -0
  170. package/dist/esm/anyspend/constants/rpc.d.ts +1 -1
  171. package/dist/esm/anyspend/constants/rpc.js +1 -1
  172. package/dist/esm/anyspend/react/components/AnySpend.d.ts +2 -0
  173. package/dist/esm/anyspend/react/components/AnySpend.js +12 -4
  174. package/dist/esm/anyspend/react/components/AnySpendBondKit.d.ts +1 -1
  175. package/dist/esm/anyspend/react/components/AnySpendBondKit.js +2 -2
  176. package/dist/esm/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  177. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +2 -2
  178. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  179. package/dist/esm/anyspend/react/components/AnySpendCollectorClubPurchase.js +2 -2
  180. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  181. package/dist/esm/anyspend/react/components/AnySpendCustom.js +7 -3
  182. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  183. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +21 -14
  184. package/dist/esm/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  185. package/dist/esm/anyspend/react/components/AnySpendDeposit.js +13 -7
  186. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  187. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +2 -2
  188. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  189. package/dist/esm/anyspend/react/components/AnySpendNFT.js +4 -4
  190. package/dist/esm/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  191. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +4 -4
  192. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  193. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +4 -4
  194. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  195. package/dist/esm/anyspend/react/components/AnySpendStakeUpside.js +2 -2
  196. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  197. package/dist/esm/anyspend/react/components/AnySpendStakeUpsideExactIn.js +2 -2
  198. package/dist/esm/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  199. package/dist/esm/anyspend/react/components/AnySpendWorkflowTrigger.js +2 -2
  200. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  201. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -2
  202. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  203. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.js +2 -2
  204. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  205. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.js +15 -6
  206. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  207. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckoutTrigger.js +2 -2
  208. package/dist/esm/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  209. package/dist/esm/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  210. package/dist/esm/anyspend/react/components/checkout/CartSummary.js +13 -11
  211. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  212. package/dist/esm/anyspend/react/components/checkout/CheckoutCartPanel.js +5 -4
  213. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  214. package/dist/esm/anyspend/react/components/checkout/CheckoutFormPanel.js +2 -2
  215. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  216. package/dist/esm/anyspend/react/components/checkout/CheckoutPaymentPanel.js +16 -8
  217. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  218. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.js +5 -3
  219. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +44 -24
  220. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  221. package/dist/esm/anyspend/react/components/checkout/DiscountCodeInput.js +3 -6
  222. package/dist/esm/anyspend/react/components/checkout/FiatCheckoutPanel.js +2 -3
  223. package/dist/esm/anyspend/react/components/checkout/KycGate.js +2 -3
  224. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  225. package/dist/esm/anyspend/react/components/checkout/PriceSkeleton.js +6 -0
  226. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  227. package/dist/esm/anyspend/react/components/checkout/ShippingSelector.js +3 -2
  228. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  229. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +9 -8
  230. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  231. package/dist/esm/anyspend/react/components/common/OrderDetails.js +8 -3
  232. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  233. package/dist/esm/anyspend/react/components/common/OrderStatus.js +34 -3
  234. package/dist/esm/anyspend/react/components/common/StepProgress.d.ts +2 -0
  235. package/dist/esm/anyspend/react/components/common/StepProgress.js +4 -2
  236. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  237. package/dist/esm/anyspend/react/hooks/useAnyspendCreateOnrampOrder.js +5 -7
  238. package/dist/esm/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  239. package/dist/esm/anyspend/react/hooks/useKycStatus.js +9 -5
  240. package/dist/esm/anyspend/utils/chain.js +10 -9
  241. package/dist/esm/app.shared.js +9 -7
  242. package/dist/esm/global-account/better-auth-client.d.ts +1883 -0
  243. package/dist/esm/global-account/better-auth-client.js +13 -0
  244. package/dist/esm/global-account/bsmnt.d.ts +0 -1
  245. package/dist/esm/global-account/bsmnt.js +0 -5
  246. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +3 -1
  247. package/dist/esm/global-account/react/components/B3DynamicModal.js +5 -2
  248. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  249. package/dist/esm/global-account/react/components/B3Provider/AuthenticationProvider.js +2 -1
  250. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  251. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  252. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +11 -2
  253. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +5 -8
  254. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +4 -6
  255. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  256. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +115 -0
  257. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  258. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  259. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  260. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  261. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  262. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +5 -3
  263. package/dist/esm/global-account/react/components/ManageAccount/Header.js +37 -5
  264. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +4 -1
  265. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +7 -1
  266. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +16 -8
  267. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  268. package/dist/esm/global-account/react/components/ManageAccount/SessionDurationContent.js +52 -0
  269. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +16 -31
  270. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +27 -16
  271. package/dist/esm/global-account/react/components/Send/Send.js +5 -2
  272. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  273. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +65 -0
  274. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  275. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +170 -0
  276. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  277. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.js +82 -0
  278. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +15 -5
  279. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  280. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +14 -5
  281. package/dist/esm/global-account/react/components/SignInWithB3/components/AuthButton.js +11 -2
  282. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  283. package/dist/esm/global-account/react/components/SignInWithB3/components/PasswordInput.js +7 -0
  284. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  285. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +138 -0
  286. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +100 -19
  287. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  288. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +19 -2
  289. package/dist/esm/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  290. package/dist/esm/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  291. package/dist/esm/global-account/react/components/Toast/ToastContext.js +30 -7
  292. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  293. package/dist/esm/global-account/react/components/UserAvatar/UserAvatar.js +21 -0
  294. package/dist/esm/global-account/react/components/custom/Button.d.ts +1 -1
  295. package/dist/esm/global-account/react/components/index.d.ts +5 -0
  296. package/dist/esm/global-account/react/components/index.js +5 -0
  297. package/dist/esm/global-account/react/components/ui/button.d.ts +1 -1
  298. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  299. package/dist/esm/global-account/react/hooks/index.js +1 -0
  300. package/dist/esm/global-account/react/hooks/useAuth.js +28 -17
  301. package/dist/esm/global-account/react/hooks/useAuthentication.js +24 -13
  302. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  303. package/dist/esm/global-account/react/hooks/useAutoSelectWallet.js +33 -5
  304. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  305. package/dist/esm/global-account/react/hooks/useBetterAuth.js +150 -0
  306. package/dist/esm/global-account/react/hooks/useConnect.d.ts +2 -2
  307. package/dist/esm/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  308. package/dist/esm/global-account/react/hooks/useTWAuth.js +0 -1
  309. package/dist/esm/global-account/react/stores/useModalStore.d.ts +42 -1
  310. package/dist/esm/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  311. package/dist/esm/global-account/react/utils/createWagmiConfig.js +5 -23
  312. package/dist/esm/global-account/react/utils/index.d.ts +0 -1
  313. package/dist/esm/global-account/react/utils/index.js +0 -1
  314. package/dist/esm/global-account/react/utils/profileDisplay.js +17 -18
  315. package/dist/esm/shared/constants/chains/b3Chain.d.ts +7 -7
  316. package/dist/esm/shared/constants/chains/b3Chain.js +4 -4
  317. package/dist/esm/shared/constants/chains/b3Viem.d.ts +6 -0
  318. package/dist/esm/shared/constants/chains/b3Viem.js +16 -0
  319. package/dist/esm/shared/constants/chains/supported.d.ts +1 -1
  320. package/dist/esm/shared/constants/index.d.ts +1 -0
  321. package/dist/esm/shared/constants/index.js +1 -0
  322. package/dist/esm/shared/generated/chain-networks.json +2 -2
  323. package/dist/esm/shared/utils/chains.d.ts +1 -1
  324. package/dist/esm/shared/utils/chains.js +2 -2
  325. package/dist/esm/shared/utils/session-duration.d.ts +15 -0
  326. package/dist/esm/shared/utils/session-duration.js +64 -0
  327. package/dist/esm/wallet/react/components/ConnectWallet.d.ts +11 -0
  328. package/dist/esm/wallet/react/components/ConnectWallet.js +431 -0
  329. package/dist/esm/wallet/react/components/WalletProvider.d.ts +35 -0
  330. package/dist/esm/wallet/react/components/WalletProvider.js +17 -0
  331. package/dist/esm/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  332. package/dist/esm/wallet/react/hooks/useWalletDisconnect.js +19 -0
  333. package/dist/esm/wallet/react/hooks/useWalletState.d.ts +31 -0
  334. package/dist/esm/wallet/react/hooks/useWalletState.js +60 -0
  335. package/dist/esm/wallet/react/index.d.ts +5 -0
  336. package/dist/esm/wallet/react/index.js +8 -0
  337. package/dist/esm/wallet/utils/createWalletConfig.d.ts +21 -0
  338. package/dist/esm/wallet/utils/createWalletConfig.js +21 -0
  339. package/dist/styles/index.css +1 -1
  340. package/dist/types/anyspend/constants/rpc.d.ts +1 -1
  341. package/dist/types/anyspend/react/components/AnySpend.d.ts +2 -0
  342. package/dist/types/anyspend/react/components/AnySpendBondKit.d.ts +1 -1
  343. package/dist/types/anyspend/react/components/AnySpendBuySpin.d.ts +2 -1
  344. package/dist/types/anyspend/react/components/AnySpendCollectorClubPurchase.d.ts +5 -1
  345. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +2 -0
  346. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +2 -0
  347. package/dist/types/anyspend/react/components/AnySpendDeposit.d.ts +3 -1
  348. package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +2 -1
  349. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +3 -1
  350. package/dist/types/anyspend/react/components/AnySpendStakeB3.d.ts +2 -1
  351. package/dist/types/anyspend/react/components/AnySpendStakeB3ExactIn.d.ts +2 -1
  352. package/dist/types/anyspend/react/components/AnySpendStakeUpside.d.ts +3 -1
  353. package/dist/types/anyspend/react/components/AnySpendStakeUpsideExactIn.d.ts +2 -1
  354. package/dist/types/anyspend/react/components/AnySpendWorkflowTrigger.d.ts +3 -1
  355. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  356. package/dist/types/anyspend/react/components/AnyspendSignatureMint.d.ts +2 -1
  357. package/dist/types/anyspend/react/components/checkout/AnySpendCheckout.d.ts +5 -1
  358. package/dist/types/anyspend/react/components/checkout/AnySpendCheckoutTrigger.d.ts +3 -1
  359. package/dist/types/anyspend/react/components/checkout/CartItemRow.d.ts +2 -1
  360. package/dist/types/anyspend/react/components/checkout/CartSummary.d.ts +6 -4
  361. package/dist/types/anyspend/react/components/checkout/CheckoutCartPanel.d.ts +3 -1
  362. package/dist/types/anyspend/react/components/checkout/CheckoutFormPanel.d.ts +3 -1
  363. package/dist/types/anyspend/react/components/checkout/CheckoutPaymentPanel.d.ts +3 -1
  364. package/dist/types/anyspend/react/components/checkout/CheckoutSuccess.d.ts +2 -1
  365. package/dist/types/anyspend/react/components/checkout/DiscountCodeInput.d.ts +3 -1
  366. package/dist/types/anyspend/react/components/checkout/PriceSkeleton.d.ts +5 -0
  367. package/dist/types/anyspend/react/components/checkout/ShippingSelector.d.ts +3 -1
  368. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  369. package/dist/types/anyspend/react/components/common/StepProgress.d.ts +2 -0
  370. package/dist/types/anyspend/react/hooks/useKycStatus.d.ts +3 -1
  371. package/dist/types/global-account/better-auth-client.d.ts +1883 -0
  372. package/dist/types/global-account/bsmnt.d.ts +0 -1
  373. package/dist/types/global-account/react/components/B3Provider/AuthenticationProvider.d.ts +3 -1
  374. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  375. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +11 -2
  376. package/dist/types/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  377. package/dist/types/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  378. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  379. package/dist/types/global-account/react/components/ManageAccount/SessionDurationContent.d.ts +5 -0
  380. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  381. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +39 -0
  382. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.d.ts +37 -0
  383. package/dist/types/global-account/react/components/SignInWithB3/SignInWithB3Flow.d.ts +1 -1
  384. package/dist/types/global-account/react/components/SignInWithB3/components/PasswordInput.d.ts +10 -0
  385. package/dist/types/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +8 -0
  386. package/dist/types/global-account/react/components/SignInWithB3/utils/signInUtils.d.ts +5 -3
  387. package/dist/types/global-account/react/components/Toast/ToastContext.d.ts +3 -0
  388. package/dist/types/global-account/react/components/UserAvatar/UserAvatar.d.ts +18 -0
  389. package/dist/types/global-account/react/components/custom/Button.d.ts +1 -1
  390. package/dist/types/global-account/react/components/index.d.ts +5 -0
  391. package/dist/types/global-account/react/components/ui/button.d.ts +1 -1
  392. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  393. package/dist/types/global-account/react/hooks/useAutoSelectWallet.d.ts +6 -3
  394. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  395. package/dist/types/global-account/react/hooks/useConnect.d.ts +2 -2
  396. package/dist/types/global-account/react/hooks/useFirstEOA.d.ts +8 -8
  397. package/dist/types/global-account/react/stores/useModalStore.d.ts +42 -1
  398. package/dist/types/global-account/react/utils/createWagmiConfig.d.ts +4 -31
  399. package/dist/types/global-account/react/utils/index.d.ts +0 -1
  400. package/dist/types/shared/constants/chains/b3Chain.d.ts +7 -7
  401. package/dist/types/shared/constants/chains/b3Viem.d.ts +6 -0
  402. package/dist/types/shared/constants/chains/supported.d.ts +1 -1
  403. package/dist/types/shared/constants/index.d.ts +1 -0
  404. package/dist/types/shared/utils/chains.d.ts +1 -1
  405. package/dist/types/shared/utils/session-duration.d.ts +15 -0
  406. package/dist/types/wallet/react/components/ConnectWallet.d.ts +11 -0
  407. package/dist/types/wallet/react/components/WalletProvider.d.ts +35 -0
  408. package/dist/types/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  409. package/dist/types/wallet/react/hooks/useWalletState.d.ts +31 -0
  410. package/dist/types/wallet/react/index.d.ts +5 -0
  411. package/dist/types/wallet/utils/createWalletConfig.d.ts +21 -0
  412. package/package.json +15 -6
  413. package/src/anyspend/constants/rpc.ts +2 -1
  414. package/src/anyspend/react/components/AnySpend.tsx +24 -12
  415. package/src/anyspend/react/components/AnySpendBondKit.tsx +2 -0
  416. package/src/anyspend/react/components/AnySpendBuySpin.tsx +3 -0
  417. package/src/anyspend/react/components/AnySpendCollectorClubPurchase.tsx +6 -0
  418. package/src/anyspend/react/components/AnySpendCustom.tsx +12 -2
  419. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +29 -14
  420. package/src/anyspend/react/components/AnySpendDeposit.tsx +51 -34
  421. package/src/anyspend/react/components/AnySpendDepositUpside.tsx +3 -0
  422. package/src/anyspend/react/components/AnySpendNFT.tsx +6 -2
  423. package/src/anyspend/react/components/AnySpendStakeB3.tsx +5 -2
  424. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +5 -2
  425. package/src/anyspend/react/components/AnySpendStakeUpside.tsx +4 -0
  426. package/src/anyspend/react/components/AnySpendStakeUpsideExactIn.tsx +3 -0
  427. package/src/anyspend/react/components/AnySpendWorkflowTrigger.tsx +4 -0
  428. package/src/anyspend/react/components/AnyspendDepositHype.tsx +3 -0
  429. package/src/anyspend/react/components/AnyspendSignatureMint.tsx +3 -0
  430. package/src/anyspend/react/components/checkout/AnySpendCheckout.tsx +29 -5
  431. package/src/anyspend/react/components/checkout/AnySpendCheckoutTrigger.tsx +4 -0
  432. package/src/anyspend/react/components/checkout/CartItemRow.tsx +2 -1
  433. package/src/anyspend/react/components/checkout/CartSummary.tsx +24 -20
  434. package/src/anyspend/react/components/checkout/CheckoutCartPanel.tsx +12 -3
  435. package/src/anyspend/react/components/checkout/CheckoutFormPanel.tsx +5 -0
  436. package/src/anyspend/react/components/checkout/CheckoutPaymentPanel.tsx +99 -83
  437. package/src/anyspend/react/components/checkout/CheckoutSuccess.tsx +13 -3
  438. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +45 -27
  439. package/src/anyspend/react/components/checkout/DiscountCodeInput.tsx +15 -5
  440. package/src/anyspend/react/components/checkout/FiatCheckoutPanel.tsx +9 -3
  441. package/src/anyspend/react/components/checkout/KycGate.tsx +8 -3
  442. package/src/anyspend/react/components/checkout/PriceSkeleton.tsx +19 -0
  443. package/src/anyspend/react/components/checkout/ShippingSelector.tsx +5 -1
  444. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +10 -8
  445. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
  446. package/src/anyspend/react/components/common/OrderDetails.tsx +10 -2
  447. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +4 -4
  448. package/src/anyspend/react/components/common/OrderStatus.tsx +38 -3
  449. package/src/anyspend/react/components/common/StepProgress.tsx +15 -5
  450. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  451. package/src/anyspend/react/hooks/useAnyspendCreateOnrampOrder.ts +5 -7
  452. package/src/anyspend/react/hooks/useKycStatus.ts +8 -5
  453. package/src/anyspend/utils/chain.ts +9 -9
  454. package/src/app.shared.ts +9 -8
  455. package/src/global-account/better-auth-client.ts +17 -0
  456. package/src/global-account/bsmnt.ts +0 -6
  457. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +3 -1
  458. package/src/global-account/react/components/B3DynamicModal.tsx +5 -2
  459. package/src/global-account/react/components/B3Provider/AuthenticationProvider.tsx +4 -0
  460. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +6 -0
  461. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +16 -21
  462. package/src/global-account/react/components/B3Provider/B3Provider.tsx +56 -37
  463. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +127 -0
  464. package/src/global-account/react/components/B3Provider/LocalSDKProvider.tsx +5 -0
  465. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +17 -10
  466. package/src/global-account/react/components/LinkAccount/LinkedAccountItem.tsx +2 -1
  467. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +18 -14
  468. package/src/global-account/react/components/ManageAccount/Header.tsx +71 -4
  469. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +25 -19
  470. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +13 -0
  471. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +40 -15
  472. package/src/global-account/react/components/ManageAccount/SessionDurationContent.tsx +107 -0
  473. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +35 -54
  474. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +31 -22
  475. package/src/global-account/react/components/Send/Send.tsx +8 -5
  476. package/src/global-account/react/components/SignInWithB3/BetterAuthResetPassword.tsx +145 -0
  477. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +446 -0
  478. package/src/global-account/react/components/SignInWithB3/BetterAuthVerifyEmail.tsx +155 -0
  479. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +42 -13
  480. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +20 -4
  481. package/src/global-account/react/components/SignInWithB3/components/AuthButton.tsx +21 -2
  482. package/src/global-account/react/components/SignInWithB3/components/PasswordInput.tsx +62 -0
  483. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +315 -0
  484. package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +207 -54
  485. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +24 -4
  486. package/src/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.tsx +2 -1
  487. package/src/global-account/react/components/Toast/ToastContext.tsx +39 -7
  488. package/src/global-account/react/components/UserAvatar/UserAvatar.tsx +45 -0
  489. package/src/global-account/react/components/index.ts +11 -0
  490. package/src/global-account/react/hooks/index.ts +1 -0
  491. package/src/global-account/react/hooks/useAuth.ts +28 -17
  492. package/src/global-account/react/hooks/useAuthentication.ts +24 -13
  493. package/src/global-account/react/hooks/useAutoSelectWallet.ts +40 -6
  494. package/src/global-account/react/hooks/useBetterAuth.ts +192 -0
  495. package/src/global-account/react/hooks/useConnect.tsx +2 -2
  496. package/src/global-account/react/hooks/useTWAuth.tsx +0 -1
  497. package/src/global-account/react/stores/useModalStore.ts +43 -0
  498. package/src/global-account/react/utils/createWagmiConfig.tsx +6 -25
  499. package/src/global-account/react/utils/index.ts +0 -1
  500. package/src/global-account/react/utils/profileDisplay.ts +21 -19
  501. package/src/shared/constants/chains/b3Chain.ts +5 -5
  502. package/src/shared/constants/chains/b3Viem.ts +18 -0
  503. package/src/shared/constants/index.ts +2 -0
  504. package/src/shared/generated/chain-networks.json +2 -2
  505. package/src/shared/utils/chains.ts +3 -2
  506. package/src/shared/utils/session-duration.ts +64 -0
  507. package/src/types/torph.d.ts +4 -0
  508. package/src/wallet/__tests__/createWalletConfig.test.ts +39 -0
  509. package/src/wallet/react/components/ConnectWallet.tsx +665 -0
  510. package/src/wallet/react/components/WalletProvider.tsx +64 -0
  511. package/src/wallet/react/hooks/useWalletDisconnect.ts +22 -0
  512. package/src/wallet/react/hooks/useWalletState.ts +93 -0
  513. package/src/wallet/react/index.ts +10 -0
  514. package/src/wallet/utils/createWalletConfig.ts +39 -0
  515. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  516. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -54
  517. package/dist/cjs/global-account/react/components/ProfileAvatar.d.ts +0 -0
  518. package/dist/cjs/global-account/react/components/ProfileAvatar.js +0 -127
  519. package/dist/cjs/global-account/react/hooks/useRPMToken.d.ts +0 -7
  520. package/dist/cjs/global-account/react/hooks/useRPMToken.js +0 -11
  521. package/dist/cjs/global-account/react/utils/updateAvatar.d.ts +0 -4
  522. package/dist/cjs/global-account/react/utils/updateAvatar.js +0 -54
  523. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  524. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -51
  525. package/dist/esm/global-account/react/components/ProfileAvatar.d.ts +0 -0
  526. package/dist/esm/global-account/react/components/ProfileAvatar.js +0 -127
  527. package/dist/esm/global-account/react/hooks/useRPMToken.d.ts +0 -7
  528. package/dist/esm/global-account/react/hooks/useRPMToken.js +0 -8
  529. package/dist/esm/global-account/react/utils/updateAvatar.d.ts +0 -4
  530. package/dist/esm/global-account/react/utils/updateAvatar.js +0 -18
  531. package/dist/types/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  532. package/dist/types/global-account/react/components/ProfileAvatar.d.ts +0 -0
  533. package/dist/types/global-account/react/hooks/useRPMToken.d.ts +0 -7
  534. package/dist/types/global-account/react/utils/updateAvatar.d.ts +0 -4
  535. package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +0 -90
  536. package/src/global-account/react/components/ProfileAvatar.tsx +0 -138
  537. package/src/global-account/react/hooks/useRPMToken.ts +0 -17
  538. package/src/global-account/react/utils/updateAvatar.ts +0 -21
@@ -1,12 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { TabsContentPrimitive, TabsPrimitive, useModalStore, } from "../../../../global-account/react/index.js";
2
+ import { TabsContentPrimitive, TabsPrimitive, useB3Config, useModalStore, } from "../../../../global-account/react/index.js";
3
3
  import BottomNavigation from "./BottomNavigation.js";
4
4
  import { HomeContent } from "./HomeContent.js";
5
5
  import SettingsContent from "./SettingsContent.js";
6
6
  export function ManageAccount({ onLogout, onSwap: _onSwap, onDeposit: _onDeposit, chain, partnerId, showSwap, showDeposit, }) {
7
+ const { authStrategy } = useB3Config();
8
+ const isBetterAuth = authStrategy === "better-auth";
7
9
  const contentType = useModalStore(state => state.contentType);
8
10
  const { activeTab = "home", setActiveTab } = contentType;
9
11
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
12
+ // Better Auth: single-view layout — no Home/Swap tabs, just settings content
13
+ if (isBetterAuth) {
14
+ return (_jsx("div", { className: "b3-manage-account flex-1", children: _jsx(SettingsContent, { partnerId: partnerId, onLogout: onLogout, chain: chain }) }));
15
+ }
10
16
  return (_jsx("div", { className: "b3-manage-account flex-1", children: _jsxs(TabsPrimitive, { defaultValue: activeTab, onValueChange: value => {
11
17
  const tab = value;
12
18
  if (tab === "swap") {
@@ -1,13 +1,18 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useAccountWallet, useModalStore, useProfile, useSimBalance, useUser, } from "../../../../global-account/react/index.js";
2
+ import { useAccountWallet, useB3Config, useModalStore, useProfile, useSimBalance, useUser, } from "../../../../global-account/react/index.js";
3
+ import { validateImageUrl } from "../../../../global-account/react/utils/profileDisplay.js";
4
+ import { AVATAR_COLORS } from "../../../../shared/constants/index.js";
3
5
  import { formatUsername } from "../../../../shared/utils/index.js";
4
6
  import { formatDisplayNumber } from "../../../../shared/utils/number.js";
7
+ import Avatar from "boring-avatars";
5
8
  import { Pencil } from "lucide-react";
6
- import { useMemo } from "react";
9
+ import { useCallback, useEffect, useMemo, useState } from "react";
7
10
  import { useActiveAccount } from "thirdweb/react";
8
11
  import { useFirstEOA } from "../../hooks/useFirstEOA.js";
9
12
  import { IPFSMediaRenderer } from "../IPFSMediaRenderer/IPFSMediaRenderer.js";
10
13
  const ProfileSection = () => {
14
+ const { authStrategy } = useB3Config();
15
+ const isBetterAuth = authStrategy === "better-auth";
11
16
  const account = useActiveAccount();
12
17
  const { address: eoaAddress } = useFirstEOA();
13
18
  const { address: smartWalletAddress } = useAccountWallet();
@@ -20,7 +25,8 @@ const ProfileSection = () => {
20
25
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
21
26
  const navigateBack = useModalStore(state => state.navigateBack);
22
27
  const { data: simBalance } = useSimBalance(smartWalletAddress);
23
- // Calculate total balance in USD
28
+ const [imgError, setImgError] = useState(false);
29
+ const handleImgError = useCallback(() => setImgError(true), []);
24
30
  const totalBalanceUsd = useMemo(() => {
25
31
  if (!simBalance?.balances)
26
32
  return 0;
@@ -31,15 +37,17 @@ const ProfileSection = () => {
31
37
  setB3ModalContentType({
32
38
  type: "avatarEditor",
33
39
  onSuccess: () => {
34
- // navigate back on success
35
40
  navigateBack();
36
41
  },
37
42
  });
38
43
  };
39
- // IPFSMediaRenderer will handle IPFS URL conversion and validation
40
- const avatarSrc = user?.avatar || profile?.avatar;
41
- // Get current username - prioritize user.username, fallback to profile data
44
+ const avatarSrc = useMemo(() => validateImageUrl(user?.avatar) || validateImageUrl(profile?.avatar), [user?.avatar, profile?.avatar]);
45
+ // Reset error state when avatar source changes (e.g. user uploads a new avatar)
46
+ useEffect(() => {
47
+ setImgError(false);
48
+ }, [avatarSrc]);
42
49
  const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
43
- return (_jsx("div", { className: "flex items-center justify-between px-5 py-6", children: _jsxs("div", { className: "global-account-profile flex items-center gap-4", children: [_jsxs("div", { className: "global-account-profile-avatar relative", children: [_jsx(IPFSMediaRenderer, { src: avatarSrc, alt: "Profile Avatar", className: "border-b3-line border-1 bg-b3-primary-wash size-14 rounded-full border" }), _jsx("button", { onClick: handleEditAvatar, className: "border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-6 items-center justify-center rounded-full border-4 bg-[#a0a0ab] transition-colors", children: _jsx(Pencil, { size: 10, className: "text-b3-background" }) })] }), _jsxs("div", { className: "global-account-profile-info flex flex-col gap-1", children: [_jsxs("h2", { className: "text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl", children: [_jsx("div", { className: "text-b3-foreground-muted", children: " $" }), _jsx("div", { className: "text-[30px]", children: formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 }) })] }), _jsx("div", { className: "b3-modal-username font-neue-montreal-semibold text-base leading-none text-[#0B57C2]", children: currentUsername })] })] }) }));
50
+ const avatarSeed = eoaAddress || account?.address || smartWalletAddress || currentUsername || user?.email || "user";
51
+ return (_jsx("div", { className: "flex items-center justify-between px-5 py-6", children: _jsxs("div", { className: "global-account-profile flex items-center gap-4", children: [_jsxs("div", { className: "global-account-profile-avatar relative", children: [_jsx("div", { className: "border-b3-line border-1 bg-b3-primary-wash size-14 overflow-hidden rounded-full border", children: avatarSrc && !imgError ? (_jsx(IPFSMediaRenderer, { src: avatarSrc, alt: "Profile Avatar", className: "h-full w-full object-cover", onError: handleImgError })) : (_jsx(Avatar, { name: avatarSeed, variant: "beam", size: 56, colors: AVATAR_COLORS })) }), _jsx("button", { onClick: handleEditAvatar, className: "border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-6 items-center justify-center rounded-full border-4 bg-[#a0a0ab] transition-colors", children: _jsx(Pencil, { size: 10, className: "text-b3-background" }) })] }), _jsxs("div", { className: "global-account-profile-info flex flex-col gap-1", children: [!isBetterAuth && (_jsxs("h2", { className: "text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl", children: [_jsx("div", { className: "text-b3-foreground-muted", children: " $" }), _jsx("div", { className: "text-[30px]", children: formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 }) })] })), _jsx("div", { className: "b3-modal-username font-neue-montreal-semibold text-base leading-none text-[#0B57C2]", children: currentUsername }), isBetterAuth && user?.email && (_jsx("div", { className: "text-b3-foreground-muted font-neue-montreal-medium text-sm", children: user.email }))] })] }) }));
44
52
  };
45
53
  export default ProfileSection;
@@ -0,0 +1,5 @@
1
+ interface SessionDurationContentProps {
2
+ partnerId: string;
3
+ }
4
+ declare const SessionDurationContent: ({ partnerId }: SessionDurationContentProps) => import("react/jsx-runtime").JSX.Element;
5
+ export default SessionDurationContent;
@@ -0,0 +1,52 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import app from "../../../../global-account/app.js";
3
+ import { useAuthentication, useModalStore } from "../../../../global-account/react/index.js";
4
+ import { getSessionDurationDays, SESSION_DURATION_LABELS, SESSION_DURATION_OPTIONS, setSessionDurationDays, } from "../../../../shared/utils/session-duration.js";
5
+ import { useState } from "react";
6
+ import ModalHeader from "../ModalHeader/ModalHeader.js";
7
+ const DESCRIPTIONS = {
8
+ 0: "Sign out when browser closes",
9
+ 1: "Stay signed in for 1 day",
10
+ 7: "Stay signed in for 7 days",
11
+ 14: "Stay signed in for 2 weeks",
12
+ 30: "Stay signed in for 30 days",
13
+ };
14
+ const SessionDurationContent = ({ partnerId }) => {
15
+ const { user, setUser } = useAuthentication(partnerId);
16
+ const navigateBack = useModalStore(state => state.navigateBack);
17
+ const [sessionDays, setSessionDays] = useState(() => getSessionDurationDays(user?.preferences, partnerId));
18
+ const [saving, setSaving] = useState(false);
19
+ const handleSelect = async (days) => {
20
+ const previous = sessionDays;
21
+ setSessionDurationDays(days, partnerId);
22
+ setSessionDays(days);
23
+ if (user?.userId) {
24
+ setSaving(true);
25
+ try {
26
+ const updated = await app.service("users").patch(user.userId, {
27
+ preferences: {
28
+ ...user.preferences,
29
+ [partnerId]: {
30
+ ...((user.preferences ?? {})[partnerId] ?? {}),
31
+ sessionDuration: days,
32
+ },
33
+ },
34
+ });
35
+ setUser(updated);
36
+ }
37
+ catch (error) {
38
+ console.error("Failed to save session duration preference:", error);
39
+ // Revert optimistic update so UI stays consistent with server state
40
+ setSessionDays(previous);
41
+ setSessionDurationDays(previous, partnerId);
42
+ }
43
+ finally {
44
+ setSaving(false);
45
+ }
46
+ }
47
+ };
48
+ return (_jsxs("div", { className: "flex h-[470px] flex-col", children: [_jsx(ModalHeader, { showBackButton: true, showCloseButton: false, title: "Stay signed in", handleBack: navigateBack }), _jsx("div", { className: "flex flex-col gap-2 p-5", children: SESSION_DURATION_OPTIONS.map(days => (_jsxs("button", { type: "button", onClick: () => handleSelect(days), disabled: saving, className: `flex items-center justify-between rounded-xl border px-4 py-3 transition-colors ${sessionDays === days
49
+ ? "border-[#3f3f46] bg-[#f4f4f5] dark:border-white dark:bg-white/10"
50
+ : "border-[#e4e4e7] bg-transparent hover:bg-[#f4f4f5] dark:border-white/10 dark:hover:bg-white/5"}`, children: [_jsxs("div", { className: "flex flex-col items-start gap-0.5", children: [_jsx("span", { className: "font-neue-montreal-semibold text-[14px] leading-none tracking-[-0.28px] text-[#3f3f46] dark:text-white", children: SESSION_DURATION_LABELS[days] }), _jsx("span", { className: "font-neue-montreal-medium text-[13px] leading-none tracking-[-0.26px] text-[#70707b] dark:text-white/50", children: DESCRIPTIONS[days] })] }), sessionDays === days && (_jsx("div", { className: "flex size-5 items-center justify-center rounded-full bg-[#3f3f46] dark:bg-white", children: _jsx("svg", { width: "10", height: "8", viewBox: "0 0 10 8", fill: "none", children: _jsx("path", { d: "M1 4L3.5 6.5L9 1", stroke: "white", strokeWidth: "1.5", strokeLinecap: "round", strokeLinejoin: "round", className: "dark:stroke-[#3f3f46]" }) }) }))] }, days))) })] }));
51
+ };
52
+ export default SessionDurationContent;
@@ -1,7 +1,8 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- import { useAuthentication, useModalStore } from "../../../../global-account/react/index.js";
2
+ import { useAuthentication, useB3Config, useModalStore } from "../../../../global-account/react/index.js";
3
3
  import { client } from "../../../../shared/utils/thirdweb.js";
4
- import { Loader2 } from "lucide-react";
4
+ import { getSessionDurationDays, SESSION_DURATION_LABELS } from "../../../../shared/utils/session-duration.js";
5
+ import { Bell, Clock, Link, Loader2 } from "lucide-react";
5
6
  import { useState } from "react";
6
7
  import { useProfiles } from "thirdweb/react";
7
8
  import SignOutIcon from "../icons/SignOutIcon.js";
@@ -9,49 +10,33 @@ import ModalHeader from "../ModalHeader/ModalHeader.js";
9
10
  import SettingsMenuItem from "./SettingsMenuItem.js";
10
11
  import SettingsProfileCard from "./SettingsProfileCard.js";
11
12
  const SettingsContent = ({ partnerId, onLogout, chain, }) => {
13
+ const { authStrategy } = useB3Config();
14
+ const isBetterAuth = authStrategy === "better-auth";
12
15
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
13
16
  const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
14
- const { logout } = useAuthentication(partnerId);
17
+ const { logout, user } = useAuthentication(partnerId);
15
18
  const [logoutLoading, setLogoutLoading] = useState(false);
19
+ const sessionDays = getSessionDurationDays(user?.preferences, partnerId);
16
20
  const { data: profilesRaw = [] } = useProfiles({ client });
17
21
  const profiles = profilesRaw.filter((profile) => !["custom_auth_endpoint"].includes(profile.type));
18
22
  const handleNavigate = (type) => {
19
23
  if (type === "home") {
20
- setB3ModalContentType({
21
- type: "manageAccount",
22
- chain,
23
- partnerId,
24
- onLogout,
25
- activeTab: "home",
26
- });
24
+ setB3ModalContentType({ type: "manageAccount", chain, partnerId, onLogout, activeTab: "home" });
27
25
  }
28
26
  else if (type === "swap") {
29
- setB3ModalContentType({
30
- type: "manageAccount",
31
- chain,
32
- partnerId,
33
- onLogout,
34
- activeTab: "tokens",
35
- });
27
+ setB3ModalContentType({ type: "manageAccount", chain, partnerId, onLogout, activeTab: "tokens" });
36
28
  }
37
29
  else if (type === "linkAccount") {
38
- setB3ModalContentType({
39
- type: "linkAccount",
40
- chain,
41
- partnerId,
42
- });
30
+ setB3ModalContentType({ type: "linkAccount", chain, partnerId });
43
31
  }
44
32
  else if (type === "notifications") {
45
- setB3ModalContentType({
46
- type: "notifications",
47
- chain,
48
- partnerId,
49
- });
33
+ setB3ModalContentType({ type: "notifications", chain, partnerId });
34
+ }
35
+ else if (type === "sessionDuration") {
36
+ setB3ModalContentType({ type: "sessionDuration", chain, partnerId });
50
37
  }
51
38
  else {
52
- setB3ModalContentType({
53
- type: "avatarEditor",
54
- });
39
+ setB3ModalContentType({ type: "avatarEditor" });
55
40
  }
56
41
  setB3ModalOpen(true);
57
42
  };
@@ -62,7 +47,7 @@ const SettingsContent = ({ partnerId, onLogout, chain, }) => {
62
47
  setB3ModalOpen(false);
63
48
  setLogoutLoading(false);
64
49
  };
65
- return (_jsxs("div", { className: "flex h-[470px] flex-col", children: [_jsx(ModalHeader, { showBackButton: false, showCloseButton: false, title: "Settings" }), _jsx("div", { className: "p-5", children: _jsx("div", { className: "b3-modal-settings-profile-card dark:border-b3-line dark:bg-b3-background flex items-center rounded-xl border border-[#e4e4e7] bg-[#f4f4f5] p-4", children: _jsx(SettingsProfileCard, {}) }) }), _jsxs("div", { className: "space-y-3 px-5", children: [_jsx(SettingsMenuItem, { icon: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { 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", fill: "#F4F4F5" }) }), title: "Linked Accounts", subtitle: `${profiles.length} connected account${profiles.length > 1 ? "s" : ""}`, onClick: () => handleNavigate("linkAccount") }), _jsx(SettingsMenuItem, { icon: _jsx("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", children: _jsx("path", { 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", fill: "#F4F4F5" }) }), title: "Notifications", subtitle: "Manage your notifications", onClick: () => handleNavigate("notifications") })] }), _jsx("div", { className: "mt-auto px-5 pb-5", children: _jsxs("button", { 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", onClick: onLogoutEnhanced, disabled: logoutLoading, style: {
50
+ return (_jsxs("div", { className: "flex h-[470px] flex-col", children: [!isBetterAuth && _jsx(ModalHeader, { showBackButton: false, showCloseButton: false, title: "Settings" }), _jsx("div", { className: "p-5", children: _jsx("div", { className: "b3-modal-settings-profile-card dark:border-b3-line dark:bg-b3-background flex items-center rounded-xl border border-[#e4e4e7] bg-[#f4f4f5] p-4", children: _jsx(SettingsProfileCard, {}) }) }), _jsxs("div", { className: "space-y-3 px-5", children: [!isBetterAuth && (_jsx(SettingsMenuItem, { icon: _jsx(Link, { size: 18, className: "text-[#51525c]" }), title: "Linked Accounts", subtitle: `${profiles.length} connected account${profiles.length > 1 ? "s" : ""}`, onClick: () => handleNavigate("linkAccount") })), _jsx(SettingsMenuItem, { icon: _jsx(Bell, { size: 18, className: "text-[#51525c]" }), title: "Notifications", subtitle: "Manage your notifications", onClick: () => handleNavigate("notifications") }), _jsx(SettingsMenuItem, { icon: _jsx(Clock, { size: 18, className: "text-[#51525c]" }), title: "Stay signed in", subtitle: SESSION_DURATION_LABELS[sessionDays] ?? `${sessionDays} days`, onClick: () => handleNavigate("sessionDuration") })] }), _jsx("div", { className: "mt-auto px-5 pb-5", children: _jsxs("button", { type: "button", 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", onClick: onLogoutEnhanced, disabled: logoutLoading, style: {
66
51
  boxShadow: "inset 0px 0px 0px 1px rgba(10,13,18,0.18), inset 0px -2px 0px 0px rgba(10,13,18,0.05)",
67
52
  }, children: [logoutLoading ? (_jsx(Loader2, { className: "text-b3-grey animate-spin", size: 20 })) : (_jsx(SignOutIcon, { size: 20, className: "text-b3-grey", color: "currentColor" })), _jsx("p", { className: "text-b3-grey dark:text-b3-foreground-muted font-neue-montreal-semibold text-base", children: "Sign out" })] }) })] }));
68
53
  };
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { ens_normalize } from "@adraffy/ens-normalize";
3
3
  import app from "../../../../global-account/app.js";
4
4
  import { toast, useAuthentication, useB3Config, useModalStore, useProfile } from "../../../../global-account/react/index.js";
5
+ import { validateImageUrl } from "../../../../global-account/react/utils/profileDisplay.js";
5
6
  import { formatUsername } from "../../../../shared/utils/index.js";
6
7
  import { Check, Loader2, Pencil, X } from "lucide-react";
7
8
  import { useEffect, useRef, useState } from "react";
@@ -15,7 +16,8 @@ const SettingsProfileCard = () => {
15
16
  address: eoaAddress || account?.address,
16
17
  fresh: true,
17
18
  });
18
- const { partnerId } = useB3Config();
19
+ const { partnerId, authStrategy } = useB3Config();
20
+ const isBetterAuth = authStrategy === "better-auth";
19
21
  const { user, setUser } = useAuthentication(partnerId);
20
22
  const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
21
23
  const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
@@ -25,8 +27,7 @@ const SettingsProfileCard = () => {
25
27
  const [editedUsername, setEditedUsername] = useState("");
26
28
  const [isSaving, setIsSaving] = useState(false);
27
29
  const inputRef = useRef(null);
28
- // IPFSMediaRenderer will handle IPFS URL conversion and validation
29
- const avatarSrc = user?.avatar || profile?.avatar;
30
+ const avatarSrc = validateImageUrl(user?.avatar) || validateImageUrl(profile?.avatar);
30
31
  // Get current username - prioritize user.username, fallback to profile data
31
32
  const currentUsername = user?.username || profile?.displayName || formatUsername(profile?.name || "");
32
33
  // Focus input when entering edit mode
@@ -66,19 +67,29 @@ const SettingsProfileCard = () => {
66
67
  }
67
68
  setIsSaving(true);
68
69
  try {
69
- const sanitizedUsername = ens_normalize(editedUsername.trim());
70
- const b3Username = `${sanitizedUsername}.b3.fun`;
71
- const usernameSignMessage = `Register "${b3Username}"`;
72
- const usernameSignature = await account?.signMessage({ message: usernameSignMessage });
73
- if (!usernameSignature) {
74
- throw new Error("Failed to sign username registration message");
70
+ let updatedUser;
71
+ if (isBetterAuth) {
72
+ // Better Auth: register username without wallet signing (DB-only, no ENS)
73
+ // Skip ens_normalize it rejects underscores/mixed-case that are valid non-ENS usernames
74
+ const sanitizedUsername = editedUsername.trim().toLowerCase();
75
+ // Type assertion needed: b3-mono now accepts message/hash as optional for Better Auth users
76
+ updatedUser = (await app
77
+ .service("users")
78
+ .registerUsername({ username: sanitizedUsername }, {}));
79
+ }
80
+ else {
81
+ // Thirdweb: register username with wallet signature + on-chain ENS
82
+ const sanitizedUsername = ens_normalize(editedUsername.trim());
83
+ const b3Username = `${sanitizedUsername}.b3.fun`;
84
+ const usernameSignMessage = `Register "${b3Username}"`;
85
+ const usernameSignature = await account?.signMessage({ message: usernameSignMessage });
86
+ if (!usernameSignature) {
87
+ throw new Error("Failed to sign username registration message");
88
+ }
89
+ updatedUser = (await app
90
+ .service("users")
91
+ .registerUsername({ username: sanitizedUsername, message: usernameSignMessage, hash: usernameSignature }, {}));
75
92
  }
76
- console.log("@@usernameSignature", usernameSignature);
77
- // Register username with ENS
78
- // Note: Type assertion needed until @b3dotfun/b3-api package is updated with RegisterUsername type
79
- const updatedUser = (await app
80
- .service("users")
81
- .registerUsername({ username: sanitizedUsername, message: usernameSignMessage, hash: usernameSignature }, {}));
82
93
  // Update user state - registerUsername returns an array with single user
83
94
  setUser(Array.isArray(updatedUser) ? updatedUser[0] : updatedUser);
84
95
  // Refresh profile to get updated data
@@ -107,6 +118,6 @@ const SettingsProfileCard = () => {
107
118
  /* Edit mode - inline input */
108
119
  _jsxs("div", { className: "flex items-center gap-2", children: [_jsx("input", { ref: inputRef, type: "text", value: editedUsername, onChange: e => setEditedUsername(e.target.value), onKeyDown: handleKeyDown, disabled: isSaving, className: "border-b3-line bg-b3-background text-b3-grey placeholder:text-b3-foreground-muted font-neue-montreal-medium focus:border-b3-primary-blue text-md w-full rounded-md border px-2 py-1 leading-none transition-colors focus:outline-none disabled:opacity-50", placeholder: "Enter username" }), _jsxs("div", { className: "flex items-center gap-1", children: [_jsx("button", { onClick: handleSaveUsername, disabled: isSaving, className: "text-b3-primary-blue hover:text-b3-primary-blue/80 flex items-center justify-center rounded-md p-1 transition-colors disabled:opacity-50", "aria-label": "Save username", children: isSaving ? _jsx(Loader2, { size: 18, className: "animate-spin" }) : _jsx(Check, { size: 18, strokeWidth: 2.5 }) }), _jsx("button", { onClick: handleCancelEdit, disabled: isSaving, className: "text-b3-foreground-muted hover:text-b3-grey flex items-center justify-center rounded-md p-1 transition-colors disabled:opacity-50", "aria-label": "Cancel editing", children: _jsx(X, { size: 18, strokeWidth: 2.5 }) })] })] })) : (
109
120
  /* Display mode */
110
- _jsxs(_Fragment, { children: [_jsx("div", { className: "flex items-center gap-1", children: _jsx("p", { className: "b3-modal-username font-neue-montreal-semibold text-lg leading-none text-[#0B57C2]", children: currentUsername }) }), _jsx("button", { onClick: handleEditUsername, className: "flex items-center justify-center gap-1 text-left transition-opacity hover:opacity-80", children: _jsx("p", { className: "font-inter text-sm font-semibold leading-5 text-[#51525C] dark:text-white", children: "Edit Username" }) })] })) })] }));
121
+ _jsxs(_Fragment, { children: [_jsx("div", { className: "flex items-center gap-1", children: _jsx("p", { className: "b3-modal-username font-neue-montreal-semibold text-lg leading-none text-[#0B57C2]", children: currentUsername || user?.email }) }), _jsx("button", { onClick: handleEditUsername, className: "flex items-center justify-center gap-1 text-left transition-opacity hover:opacity-80", children: _jsx("p", { className: "font-inter text-sm font-semibold leading-5 text-[#51525C] dark:text-white", children: "Edit Username" }) })] })) })] }));
111
122
  };
112
123
  export default SettingsProfileCard;
@@ -2,6 +2,7 @@ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-run
2
2
  import { ALL_CHAINS, getExplorerTxUrl } from "../../../../anyspend/index.js";
3
3
  import { ChainTokenIcon } from "../../../../anyspend/react/components/common/ChainTokenIcon.js";
4
4
  import { toast, useAccountWallet, useAnalytics, useModalStore, useProfile, useSimBalance, useUnifiedChainSwitchAndExecute, } from "../../../../global-account/react/index.js";
5
+ import { validateImageUrl } from "../../../../global-account/react/utils/profileDisplay.js";
5
6
  import { formatDisplayNumber, formatTokenAmount } from "../../../../shared/utils/number.js";
6
7
  import invariant from "invariant";
7
8
  import { CircleHelp, Clock, Loader2, Send as SendIcon, Wallet } from "lucide-react";
@@ -14,7 +15,8 @@ import { Button } from "../ui/button.js";
14
15
  // Component for displaying a recent address with profile data
15
16
  function RecentAddressItem({ address, onClick }) {
16
17
  const { data: profileData } = useProfile({ address });
17
- return (_jsxs("button", { onClick: onClick, className: "flex items-center gap-2 rounded-xl px-3 py-2 transition-colors hover:bg-[#fafafa]", children: [profileData?.avatar ? (_jsx("img", { src: profileData.avatar, alt: profileData.name || address, className: "h-10 w-10 rounded-full" })) : (_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full border border-[#e4e4e7] bg-[#f4f4f5]", children: _jsx(Wallet, { className: "h-5 w-5 text-[#a0a0ab]" }) })), _jsx("div", { className: "flex flex-col items-start", children: _jsxs("span", { className: "font-neue-montreal-medium text-base tracking-[-0.32px] text-[#70707b]", children: [address.slice(0, 6), "...", address.slice(-4), profileData?.name && ` (${profileData.name})`] }) })] }));
18
+ const validatedAvatar = validateImageUrl(profileData?.avatar);
19
+ return (_jsxs("button", { onClick: onClick, className: "flex items-center gap-2 rounded-xl px-3 py-2 transition-colors hover:bg-[#fafafa]", children: [validatedAvatar ? (_jsx("img", { src: validatedAvatar, alt: profileData?.name || address, className: "h-10 w-10 rounded-full" })) : (_jsx("div", { className: "flex h-10 w-10 items-center justify-center rounded-full border border-[#e4e4e7] bg-[#f4f4f5]", children: _jsx(Wallet, { className: "h-5 w-5 text-[#a0a0ab]" }) })), _jsx("div", { className: "flex flex-col items-start", children: _jsxs("span", { className: "font-neue-montreal-medium text-base tracking-[-0.32px] text-[#70707b]", children: [address.slice(0, 6), "...", address.slice(-4), profileData?.name && ` (${profileData.name})`] }) })] }));
18
20
  }
19
21
  export function Send({ recipientAddress: initialRecipient, onSuccess }) {
20
22
  const { address } = useAccountWallet();
@@ -39,6 +41,7 @@ export function Send({ recipientAddress: initialRecipient, onSuccess }) {
39
41
  const { data: validatedProfileData } = useProfile({
40
42
  address: showValidatedResult && recipientAddress && isAddress(recipientAddress) ? recipientAddress : undefined,
41
43
  });
44
+ const validatedRecipientAvatar = validateImageUrl(validatedProfileData?.avatar);
42
45
  // Address validation
43
46
  const handleRecipientAddressChange = (value) => {
44
47
  setRecipientAddress(value);
@@ -179,7 +182,7 @@ export function Send({ recipientAddress: initialRecipient, onSuccess }) {
179
182
  return "Send";
180
183
  }
181
184
  };
182
- return (_jsxs("div", { className: "dark:bg-b3-background flex h-[600px] w-full flex-col bg-white", children: [_jsx(ModalHeader, { handleBack: handleBack, title: getStepTitle() }), _jsxs("div", { className: "flex-1 overflow-y-auto", children: [step === "recipient" && (_jsxs("div", { className: "flex flex-col gap-6 p-5", children: [_jsxs("div", { className: "dark:border-b3-line dark:bg-b3-background flex h-12 w-full items-stretch overflow-hidden rounded-lg border border-[#d1d1d6] bg-white", children: [_jsx("div", { className: "flex w-12 items-center justify-center bg-transparent px-3 py-2", children: _jsx("span", { className: "font-neue-montreal-medium text-base text-[#3f3f46] dark:text-white", children: "To" }) }), _jsxs("div", { className: "flex flex-1 items-center border-l border-[#d1d1d6] px-3 py-2", children: [_jsx("input", { type: "text", value: recipientAddress, onChange: e => handleRecipientAddressChange(e.target.value), placeholder: "ENS or Address", className: "font-neue-montreal-medium dark:bg-b3-background flex-1 text-base text-[#70707b] outline-none placeholder:text-[#70707b] dark:text-white dark:placeholder:text-white" }), _jsx("button", { onClick: handlePaste, className: "font-inter ml-2 rounded-md border border-[#e4e4e7] bg-[#fafafa] px-2.5 py-0.5 text-sm font-medium text-[#3f3f46] transition-colors hover:bg-[#f4f4f5]", children: "Paste" })] })] }), addressError && _jsx("p", { className: "font-neue-montreal-medium -mt-4 text-xs text-red-500", children: addressError }), showValidatedResult && recipientAddress && isAddress(recipientAddress) && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("div", { className: "flex items-center gap-1", children: _jsx("span", { className: "font-sf-pro-text text-sm font-semibold leading-[1.3] tracking-[-0.41px] text-[#0b57c2]", children: "Result" }) }), _jsxs("button", { onClick: handleSelectValidatedAddress, 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]", children: [validatedProfileData?.avatar ? (_jsx("img", { src: validatedProfileData.avatar, alt: validatedProfileData.name || recipientAddress, className: "h-10 w-10 rounded-full" })) : (_jsx("div", { className: "dark:border-b3-line dark:bg-b3-background flex h-10 w-10 items-center justify-center rounded-full border border-[#e4e4e7] bg-[#f4f4f5]", children: _jsx(Wallet, { className: "h-5 w-5 text-[#a0a0ab] dark:text-white" }) })), _jsxs("span", { className: "font-neue-montreal-medium text-base tracking-[-0.32px] text-[#70707b] dark:text-white", children: [recipientAddress.slice(0, 6), "...", recipientAddress.slice(-4), validatedProfileData?.name && ` (${validatedProfileData.name})`] })] })] })), recentAddresses.length > 0 && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Clock, { className: "h-3.5 w-3.5 text-[#3f3f46]" }), _jsx("span", { className: "font-sf-pro-text text-sm font-semibold leading-[1.3] tracking-[-0.41px] text-[#3f3f46]", children: "Recents" })] }), _jsx("div", { className: "flex flex-col", children: recentAddresses.map((recent, index) => (_jsx(RecentAddressItem, { address: recent.address, onClick: () => {
185
+ return (_jsxs("div", { className: "dark:bg-b3-background flex h-[600px] w-full flex-col bg-white", children: [_jsx(ModalHeader, { handleBack: handleBack, title: getStepTitle() }), _jsxs("div", { className: "flex-1 overflow-y-auto", children: [step === "recipient" && (_jsxs("div", { className: "flex flex-col gap-6 p-5", children: [_jsxs("div", { className: "dark:border-b3-line dark:bg-b3-background flex h-12 w-full items-stretch overflow-hidden rounded-lg border border-[#d1d1d6] bg-white", children: [_jsx("div", { className: "flex w-12 items-center justify-center bg-transparent px-3 py-2", children: _jsx("span", { className: "font-neue-montreal-medium text-base text-[#3f3f46] dark:text-white", children: "To" }) }), _jsxs("div", { className: "flex flex-1 items-center border-l border-[#d1d1d6] px-3 py-2", children: [_jsx("input", { type: "text", value: recipientAddress, onChange: e => handleRecipientAddressChange(e.target.value), placeholder: "ENS or Address", className: "font-neue-montreal-medium dark:bg-b3-background flex-1 text-base text-[#70707b] outline-none placeholder:text-[#70707b] dark:text-white dark:placeholder:text-white" }), _jsx("button", { onClick: handlePaste, className: "font-inter ml-2 rounded-md border border-[#e4e4e7] bg-[#fafafa] px-2.5 py-0.5 text-sm font-medium text-[#3f3f46] transition-colors hover:bg-[#f4f4f5]", children: "Paste" })] })] }), addressError && _jsx("p", { className: "font-neue-montreal-medium -mt-4 text-xs text-red-500", children: addressError }), showValidatedResult && recipientAddress && isAddress(recipientAddress) && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsx("div", { className: "flex items-center gap-1", children: _jsx("span", { className: "font-sf-pro-text text-sm font-semibold leading-[1.3] tracking-[-0.41px] text-[#0b57c2]", children: "Result" }) }), _jsxs("button", { onClick: handleSelectValidatedAddress, 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]", children: [validatedRecipientAvatar ? (_jsx("img", { src: validatedRecipientAvatar, alt: validatedProfileData?.name || recipientAddress, className: "h-10 w-10 rounded-full" })) : (_jsx("div", { className: "dark:border-b3-line dark:bg-b3-background flex h-10 w-10 items-center justify-center rounded-full border border-[#e4e4e7] bg-[#f4f4f5]", children: _jsx(Wallet, { className: "h-5 w-5 text-[#a0a0ab] dark:text-white" }) })), _jsxs("span", { className: "font-neue-montreal-medium text-base tracking-[-0.32px] text-[#70707b] dark:text-white", children: [recipientAddress.slice(0, 6), "...", recipientAddress.slice(-4), validatedProfileData?.name && ` (${validatedProfileData.name})`] })] })] })), recentAddresses.length > 0 && (_jsxs("div", { className: "flex flex-col gap-2", children: [_jsxs("div", { className: "flex items-center gap-1", children: [_jsx(Clock, { className: "h-3.5 w-3.5 text-[#3f3f46]" }), _jsx("span", { className: "font-sf-pro-text text-sm font-semibold leading-[1.3] tracking-[-0.41px] text-[#3f3f46]", children: "Recents" })] }), _jsx("div", { className: "flex flex-col", children: recentAddresses.map((recent, index) => (_jsx(RecentAddressItem, { address: recent.address, onClick: () => {
183
186
  // Just fill the input and show validation - don't auto-proceed
184
187
  handleRecipientAddressChange(recent.address);
185
188
  } }, index))) })] }))] })), step === "token" && (_jsx("div", { className: "flex flex-col p-5", children: isLoadingBalance ? (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "space-y-1", children: [...Array(3)].map((_, index) => (_jsxs("div", { className: "flex items-center justify-between rounded-xl p-3", children: [_jsxs("div", { className: "flex items-center gap-3", children: [_jsx("div", { className: "bg-b3-line h-10 w-10 animate-pulse rounded-full" }), _jsxs("div", { children: [_jsx("div", { className: "bg-b3-line mb-1 h-4 w-16 animate-pulse rounded" }), _jsx("div", { className: "bg-b3-line h-3 w-24 animate-pulse rounded" })] })] }), _jsxs("div", { className: "text-right", children: [_jsx("div", { className: "bg-b3-line mb-1 h-4 w-20 animate-pulse rounded" }), _jsx("div", { className: "bg-b3-line h-3 w-16 animate-pulse rounded" })] })] }, index))) }) })) : simBalance?.balances && simBalance.balances.length > 0 ? (_jsx("div", { className: "space-y-4", children: _jsx("div", { className: "space-y-1", children: simBalance.balances.map(token => (_jsxs("div", { className: "hover:bg-b3-line/60 dark:hover:bg-b3-primary-wash/40 group flex cursor-pointer items-center justify-between rounded-xl p-3 transition-all duration-200", onClick: () => {
@@ -0,0 +1,21 @@
1
+ export interface BetterAuthResetPasswordProps {
2
+ /** The reset token from the URL query param */
3
+ token: string;
4
+ /** Called after password is successfully reset */
5
+ onSuccess?: () => void;
6
+ /** Called on error */
7
+ onError?: (error: Error) => void;
8
+ /** Optional class name */
9
+ className?: string;
10
+ }
11
+ /**
12
+ * Standalone reset password form. Render this on your reset password page.
13
+ * Reads the token from props (extract it from the URL query string).
14
+ *
15
+ * Usage:
16
+ * ```tsx
17
+ * const token = new URLSearchParams(window.location.search).get("token");
18
+ * <BetterAuthResetPassword token={token} onSuccess={() => navigate("/login")} />
19
+ * ```
20
+ */
21
+ export declare function BetterAuthResetPassword({ token, onSuccess, onError, className }: BetterAuthResetPasswordProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,65 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { Button } from "../../../../global-account/react/index.js";
3
+ import { debugB3React } from "../../../../shared/utils/debug.js";
4
+ import { useState } from "react";
5
+ import { useBetterAuth } from "../../hooks/useBetterAuth.js";
6
+ import { PasswordInput } from "./components/PasswordInput.js";
7
+ const debug = debugB3React("BetterAuthResetPassword");
8
+ /**
9
+ * Standalone reset password form. Render this on your reset password page.
10
+ * Reads the token from props (extract it from the URL query string).
11
+ *
12
+ * Usage:
13
+ * ```tsx
14
+ * const token = new URLSearchParams(window.location.search).get("token");
15
+ * <BetterAuthResetPassword token={token} onSuccess={() => navigate("/login")} />
16
+ * ```
17
+ */
18
+ export function BetterAuthResetPassword({ token, onSuccess, onError, className }) {
19
+ const { resetPassword } = useBetterAuth();
20
+ const [password, setPassword] = useState("");
21
+ const [confirmPassword, setConfirmPassword] = useState("");
22
+ const [isLoading, setIsLoading] = useState(false);
23
+ const [error, setError] = useState(null);
24
+ const [success, setSuccess] = useState(false);
25
+ const handleSubmit = async () => {
26
+ if (!password) {
27
+ setError("Please enter a new password");
28
+ return;
29
+ }
30
+ if (password.length < 8) {
31
+ setError("Password must be at least 8 characters");
32
+ return;
33
+ }
34
+ if (password !== confirmPassword) {
35
+ setError("Passwords do not match");
36
+ return;
37
+ }
38
+ try {
39
+ setIsLoading(true);
40
+ setError(null);
41
+ await resetPassword(password, token);
42
+ setSuccess(true);
43
+ debug("Password reset successful");
44
+ onSuccess?.();
45
+ }
46
+ catch (err) {
47
+ const message = err instanceof Error ? err.message : "Password reset failed";
48
+ setError(message);
49
+ debug("Password reset failed", err);
50
+ onError?.(err);
51
+ }
52
+ finally {
53
+ setPassword("");
54
+ setConfirmPassword("");
55
+ setIsLoading(false);
56
+ }
57
+ };
58
+ if (!token) {
59
+ return (_jsx("div", { className: `w-full max-w-[400px] px-6 text-center ${className || ""}`, children: _jsx("p", { className: "text-sm text-red-500", children: "Invalid or missing reset token." }) }));
60
+ }
61
+ return (_jsxs("div", { className: `w-full max-w-[400px] px-6 ${className || ""}`, children: [_jsxs("div", { className: "mb-10 text-center", children: [_jsx("h1", { className: "text-[28px] font-semibold tracking-tight text-gray-900 dark:text-gray-100", children: success ? "Password reset" : "Set new password" }), _jsx("p", { className: "mt-3 text-[15px] text-gray-500 dark:text-gray-400", children: success ? "Your password has been updated." : "Enter your new password below." })] }), success ? (_jsx("div", { className: "space-y-4 text-center", children: _jsx("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100", children: _jsx("svg", { className: "h-6 w-6 text-green-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: _jsx("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) }) })) : (_jsxs("div", { className: "space-y-5", children: [_jsxs("div", { children: [_jsx("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "New password" }), _jsx(PasswordInput, { placeholder: "At least 8 characters", value: password, onChange: e => setPassword(e.target.value), disabled: isLoading, className: "h-11 px-4 pr-11 text-[15px]" })] }), _jsxs("div", { children: [_jsx("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Confirm password" }), _jsx(PasswordInput, { placeholder: "Repeat your password", value: confirmPassword, onChange: e => setConfirmPassword(e.target.value), disabled: isLoading, onKeyDown: e => {
62
+ if (e.key === "Enter")
63
+ handleSubmit();
64
+ }, className: "h-11 px-4 pr-11 text-[15px]" })] }), error && _jsx("p", { className: "text-sm text-red-500", children: error }), _jsx(Button, { onClick: handleSubmit, disabled: isLoading, 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", children: isLoading ? "Resetting..." : "Reset password" })] }))] }));
65
+ }
@@ -0,0 +1,39 @@
1
+ import { type BetterAuthSocialProvider } from "../../hooks/useBetterAuth";
2
+ export interface BetterAuthSignInProps {
3
+ /** Title displayed above the form. Default: "Welcome back" for sign-in, "Create an account" for sign-up */
4
+ title?: string;
5
+ /** Subtitle displayed below the title */
6
+ subtitle?: string;
7
+ /** Which social providers to show. Defaults to all. Pass empty array to hide. */
8
+ socialProviders?: BetterAuthSocialProvider[];
9
+ /** Show email/password form. Default: true */
10
+ showEmail?: boolean;
11
+ /** URL to redirect to after password reset link is clicked. Token is appended as ?token=... */
12
+ passwordResetRedirectTo?: string;
13
+ /**
14
+ * URL Better Auth redirects to after server-side email verification. Render
15
+ * `BetterAuthVerifyEmail` at this route so the user gets a confirmation page.
16
+ */
17
+ verifyEmailRedirectTo?: string;
18
+ /** Called after successful authentication */
19
+ onSuccess?: () => void;
20
+ /** Called on authentication error */
21
+ onError?: (error: Error) => void;
22
+ /** Optional class name for the root container */
23
+ className?: string;
24
+ }
25
+ /**
26
+ * Standalone inline sign-in component for Better Auth.
27
+ *
28
+ * Renders directly — no modal, no button wrapper. Designed for full-page
29
+ * sign-in layouts (e.g., B3OS web with branding on the left, form on the right).
30
+ *
31
+ * Usage:
32
+ * ```tsx
33
+ * <BetterAuthSignIn
34
+ * socialProviders={["google", "github"]}
35
+ * onSuccess={() => router.push("/dashboard")}
36
+ * />
37
+ * ```
38
+ */
39
+ export declare function BetterAuthSignIn({ title, subtitle, socialProviders, showEmail, passwordResetRedirectTo, verifyEmailRedirectTo, onSuccess, onError, className, }: BetterAuthSignInProps): import("react/jsx-runtime").JSX.Element | null;