@b3dotfun/sdk 0.1.69-alpha.9 → 0.1.69-test.0

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 (258) 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/AnySpendNFT.js +2 -2
  4. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  5. package/dist/cjs/anyspend/react/components/checkout/AnySpendCheckout.js +10 -2
  6. package/dist/cjs/anyspend/react/components/checkout/CheckoutSuccess.js +3 -3
  7. package/dist/cjs/anyspend/react/components/checkout/CryptoPayPanel.js +43 -23
  8. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  9. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +10 -9
  10. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  11. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +2 -2
  12. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  13. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  14. package/dist/cjs/anyspend/utils/chain.js +8 -7
  15. package/dist/cjs/global-account/better-auth-client.d.ts +1883 -0
  16. package/dist/cjs/global-account/better-auth-client.js +17 -0
  17. package/dist/cjs/global-account/bsmnt.d.ts +0 -1
  18. package/dist/cjs/global-account/bsmnt.js +0 -6
  19. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  20. package/dist/cjs/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  21. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +8 -1
  22. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +9 -12
  23. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.native.js +6 -9
  24. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  25. package/dist/cjs/global-account/react/components/B3Provider/BetterAuthProvider.js +120 -0
  26. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  27. package/dist/cjs/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  28. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  29. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  30. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  31. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +15 -6
  32. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +2 -2
  33. package/dist/cjs/global-account/react/components/Send/Send.js +5 -2
  34. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  35. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +67 -0
  36. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  37. package/dist/cjs/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +163 -0
  38. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +13 -4
  39. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  40. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +138 -0
  41. package/dist/cjs/global-account/react/components/SignInWithB3/utils/signInUtils.js +5 -1
  42. package/dist/cjs/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  43. package/dist/cjs/global-account/react/components/custom/Button.d.ts +1 -1
  44. package/dist/cjs/global-account/react/components/index.d.ts +3 -0
  45. package/dist/cjs/global-account/react/components/index.js +7 -3
  46. package/dist/cjs/global-account/react/components/ui/button.d.ts +1 -1
  47. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  48. package/dist/cjs/global-account/react/hooks/index.js +5 -2
  49. package/dist/cjs/global-account/react/hooks/useAuth.js +24 -11
  50. package/dist/cjs/global-account/react/hooks/useAuthentication.js +21 -8
  51. package/dist/cjs/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  52. package/dist/cjs/global-account/react/hooks/useBetterAuth.js +157 -0
  53. package/dist/cjs/global-account/react/utils/createWagmiConfig.d.ts +4 -13
  54. package/dist/cjs/global-account/react/utils/createWagmiConfig.js +5 -7
  55. package/dist/cjs/global-account/react/utils/index.d.ts +0 -1
  56. package/dist/cjs/global-account/react/utils/index.js +0 -1
  57. package/dist/cjs/global-account/react/utils/profileDisplay.js +17 -18
  58. package/dist/cjs/shared/constants/chains/b3Chain.d.ts +7 -7
  59. package/dist/cjs/shared/constants/chains/b3Chain.js +4 -4
  60. package/dist/cjs/shared/constants/chains/b3Viem.d.ts +6 -0
  61. package/dist/cjs/shared/constants/chains/b3Viem.js +19 -0
  62. package/dist/cjs/shared/constants/chains/supported.d.ts +1 -1
  63. package/dist/cjs/shared/generated/chain-networks.json +2 -2
  64. package/dist/cjs/shared/utils/chains.d.ts +1 -1
  65. package/dist/cjs/shared/utils/chains.js +2 -2
  66. package/dist/cjs/wallet/react/components/ConnectWallet.d.ts +11 -0
  67. package/dist/cjs/wallet/react/components/ConnectWallet.js +467 -0
  68. package/dist/cjs/wallet/react/components/WalletProvider.d.ts +35 -0
  69. package/dist/cjs/wallet/react/components/WalletProvider.js +20 -0
  70. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  71. package/dist/cjs/wallet/react/hooks/useWalletDisconnect.js +22 -0
  72. package/dist/cjs/wallet/react/hooks/useWalletState.d.ts +31 -0
  73. package/dist/cjs/wallet/react/hooks/useWalletState.js +63 -0
  74. package/dist/cjs/wallet/react/index.d.ts +5 -0
  75. package/dist/cjs/wallet/react/index.js +16 -0
  76. package/dist/cjs/wallet/utils/createWalletConfig.d.ts +21 -0
  77. package/dist/cjs/wallet/utils/createWalletConfig.js +24 -0
  78. package/dist/esm/anyspend/constants/rpc.d.ts +1 -1
  79. package/dist/esm/anyspend/constants/rpc.js +1 -1
  80. package/dist/esm/anyspend/react/components/AnySpendNFT.js +2 -2
  81. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  82. package/dist/esm/anyspend/react/components/checkout/AnySpendCheckout.js +10 -2
  83. package/dist/esm/anyspend/react/components/checkout/CheckoutSuccess.js +3 -3
  84. package/dist/esm/anyspend/react/components/checkout/CryptoPayPanel.js +44 -24
  85. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  86. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +9 -8
  87. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +2 -2
  88. package/dist/esm/anyspend/react/components/common/OrderDetails.js +2 -2
  89. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +2 -2
  90. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +2 -2
  91. package/dist/esm/anyspend/utils/chain.js +10 -9
  92. package/dist/esm/global-account/better-auth-client.d.ts +1883 -0
  93. package/dist/esm/global-account/better-auth-client.js +13 -0
  94. package/dist/esm/global-account/bsmnt.d.ts +0 -1
  95. package/dist/esm/global-account/bsmnt.js +0 -5
  96. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  97. package/dist/esm/global-account/react/components/B3Provider/B3ConfigProvider.js +2 -1
  98. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +8 -1
  99. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +4 -7
  100. package/dist/esm/global-account/react/components/B3Provider/B3Provider.native.js +2 -5
  101. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  102. package/dist/esm/global-account/react/components/B3Provider/BetterAuthProvider.js +115 -0
  103. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  104. package/dist/esm/global-account/react/components/B3Provider/LocalSDKProvider.js +3 -1
  105. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  106. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +4 -2
  107. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.js +2 -1
  108. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +13 -7
  109. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +2 -2
  110. package/dist/esm/global-account/react/components/Send/Send.js +5 -2
  111. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  112. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthResetPassword.js +64 -0
  113. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  114. package/dist/esm/global-account/react/components/SignInWithB3/BetterAuthSignIn.js +160 -0
  115. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +13 -4
  116. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  117. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.js +135 -0
  118. package/dist/esm/global-account/react/components/SignInWithB3/utils/signInUtils.js +5 -1
  119. package/dist/esm/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.js +2 -1
  120. package/dist/esm/global-account/react/components/custom/Button.d.ts +1 -1
  121. package/dist/esm/global-account/react/components/index.d.ts +3 -0
  122. package/dist/esm/global-account/react/components/index.js +2 -0
  123. package/dist/esm/global-account/react/components/ui/button.d.ts +1 -1
  124. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  125. package/dist/esm/global-account/react/hooks/index.js +1 -0
  126. package/dist/esm/global-account/react/hooks/useAuth.js +24 -11
  127. package/dist/esm/global-account/react/hooks/useAuthentication.js +21 -8
  128. package/dist/esm/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  129. package/dist/esm/global-account/react/hooks/useBetterAuth.js +149 -0
  130. package/dist/esm/global-account/react/utils/createWagmiConfig.d.ts +4 -13
  131. package/dist/esm/global-account/react/utils/createWagmiConfig.js +5 -7
  132. package/dist/esm/global-account/react/utils/index.d.ts +0 -1
  133. package/dist/esm/global-account/react/utils/index.js +0 -1
  134. package/dist/esm/global-account/react/utils/profileDisplay.js +17 -18
  135. package/dist/esm/shared/constants/chains/b3Chain.d.ts +7 -7
  136. package/dist/esm/shared/constants/chains/b3Chain.js +4 -4
  137. package/dist/esm/shared/constants/chains/b3Viem.d.ts +6 -0
  138. package/dist/esm/shared/constants/chains/b3Viem.js +16 -0
  139. package/dist/esm/shared/constants/chains/supported.d.ts +1 -1
  140. package/dist/esm/shared/generated/chain-networks.json +2 -2
  141. package/dist/esm/shared/utils/chains.d.ts +1 -1
  142. package/dist/esm/shared/utils/chains.js +2 -2
  143. package/dist/esm/wallet/react/components/ConnectWallet.d.ts +11 -0
  144. package/dist/esm/wallet/react/components/ConnectWallet.js +431 -0
  145. package/dist/esm/wallet/react/components/WalletProvider.d.ts +35 -0
  146. package/dist/esm/wallet/react/components/WalletProvider.js +17 -0
  147. package/dist/esm/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  148. package/dist/esm/wallet/react/hooks/useWalletDisconnect.js +19 -0
  149. package/dist/esm/wallet/react/hooks/useWalletState.d.ts +31 -0
  150. package/dist/esm/wallet/react/hooks/useWalletState.js +60 -0
  151. package/dist/esm/wallet/react/index.d.ts +5 -0
  152. package/dist/esm/wallet/react/index.js +8 -0
  153. package/dist/esm/wallet/utils/createWalletConfig.d.ts +21 -0
  154. package/dist/esm/wallet/utils/createWalletConfig.js +21 -0
  155. package/dist/styles/index.css +1 -1
  156. package/dist/types/anyspend/constants/rpc.d.ts +1 -1
  157. package/dist/types/anyspend/react/components/checkout/AnySpendCheckout.d.ts +3 -1
  158. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +8 -0
  159. package/dist/types/global-account/better-auth-client.d.ts +1883 -0
  160. package/dist/types/global-account/bsmnt.d.ts +0 -1
  161. package/dist/types/global-account/react/components/B3Provider/B3ConfigProvider.d.ts +4 -1
  162. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +8 -1
  163. package/dist/types/global-account/react/components/B3Provider/BetterAuthProvider.d.ts +16 -0
  164. package/dist/types/global-account/react/components/B3Provider/LocalSDKProvider.d.ts +3 -1
  165. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +3 -1
  166. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthResetPassword.d.ts +21 -0
  167. package/dist/types/global-account/react/components/SignInWithB3/BetterAuthSignIn.d.ts +34 -0
  168. package/dist/types/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.d.ts +6 -0
  169. package/dist/types/global-account/react/components/custom/Button.d.ts +1 -1
  170. package/dist/types/global-account/react/components/index.d.ts +3 -0
  171. package/dist/types/global-account/react/components/ui/button.d.ts +1 -1
  172. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  173. package/dist/types/global-account/react/hooks/useBetterAuth.d.ts +973 -0
  174. package/dist/types/global-account/react/utils/createWagmiConfig.d.ts +4 -13
  175. package/dist/types/global-account/react/utils/index.d.ts +0 -1
  176. package/dist/types/shared/constants/chains/b3Chain.d.ts +7 -7
  177. package/dist/types/shared/constants/chains/b3Viem.d.ts +6 -0
  178. package/dist/types/shared/constants/chains/supported.d.ts +1 -1
  179. package/dist/types/shared/utils/chains.d.ts +1 -1
  180. package/dist/types/wallet/react/components/ConnectWallet.d.ts +11 -0
  181. package/dist/types/wallet/react/components/WalletProvider.d.ts +35 -0
  182. package/dist/types/wallet/react/hooks/useWalletDisconnect.d.ts +13 -0
  183. package/dist/types/wallet/react/hooks/useWalletState.d.ts +31 -0
  184. package/dist/types/wallet/react/index.d.ts +5 -0
  185. package/dist/types/wallet/utils/createWalletConfig.d.ts +21 -0
  186. package/package.json +14 -6
  187. package/src/anyspend/constants/rpc.ts +2 -1
  188. package/src/anyspend/react/components/AnySpendNFT.tsx +2 -2
  189. package/src/anyspend/react/components/checkout/AnySpendCheckout.tsx +15 -1
  190. package/src/anyspend/react/components/checkout/CheckoutSuccess.tsx +3 -3
  191. package/src/anyspend/react/components/checkout/CryptoPayPanel.tsx +45 -27
  192. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +10 -8
  193. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +2 -2
  194. package/src/anyspend/react/components/common/OrderDetails.tsx +2 -2
  195. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +4 -4
  196. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  197. package/src/anyspend/utils/chain.ts +9 -9
  198. package/src/global-account/better-auth-client.ts +17 -0
  199. package/src/global-account/bsmnt.ts +0 -6
  200. package/src/global-account/react/components/B3Provider/B3ConfigProvider.tsx +6 -0
  201. package/src/global-account/react/components/B3Provider/B3Provider.native.tsx +14 -20
  202. package/src/global-account/react/components/B3Provider/B3Provider.tsx +52 -40
  203. package/src/global-account/react/components/B3Provider/BetterAuthProvider.tsx +127 -0
  204. package/src/global-account/react/components/B3Provider/LocalSDKProvider.tsx +5 -0
  205. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +17 -10
  206. package/src/global-account/react/components/LinkAccount/LinkedAccountItem.tsx +2 -1
  207. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +29 -11
  208. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +2 -2
  209. package/src/global-account/react/components/Send/Send.tsx +8 -5
  210. package/src/global-account/react/components/SignInWithB3/BetterAuthResetPassword.tsx +146 -0
  211. package/src/global-account/react/components/SignInWithB3/BetterAuthSignIn.tsx +426 -0
  212. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +13 -4
  213. package/src/global-account/react/components/SignInWithB3/steps/LoginStepBetterAuth.tsx +308 -0
  214. package/src/global-account/react/components/SignInWithB3/utils/signInUtils.ts +5 -1
  215. package/src/global-account/react/components/SingleUserSearchSelector/SingleUserSearchSelector.tsx +2 -1
  216. package/src/global-account/react/components/index.ts +3 -0
  217. package/src/global-account/react/hooks/index.ts +1 -0
  218. package/src/global-account/react/hooks/useAuth.ts +24 -11
  219. package/src/global-account/react/hooks/useAuthentication.ts +21 -8
  220. package/src/global-account/react/hooks/useBetterAuth.ts +191 -0
  221. package/src/global-account/react/utils/createWagmiConfig.tsx +6 -7
  222. package/src/global-account/react/utils/index.ts +0 -1
  223. package/src/global-account/react/utils/profileDisplay.ts +21 -19
  224. package/src/shared/constants/chains/b3Chain.ts +5 -5
  225. package/src/shared/constants/chains/b3Viem.ts +18 -0
  226. package/src/shared/generated/chain-networks.json +2 -2
  227. package/src/shared/utils/chains.ts +3 -2
  228. package/src/wallet/__tests__/createWalletConfig.test.ts +39 -0
  229. package/src/wallet/react/components/ConnectWallet.tsx +665 -0
  230. package/src/wallet/react/components/WalletProvider.tsx +64 -0
  231. package/src/wallet/react/hooks/useWalletDisconnect.ts +22 -0
  232. package/src/wallet/react/hooks/useWalletState.ts +93 -0
  233. package/src/wallet/react/index.ts +10 -0
  234. package/src/wallet/utils/createWalletConfig.ts +39 -0
  235. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  236. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -54
  237. package/dist/cjs/global-account/react/components/ProfileAvatar.d.ts +0 -0
  238. package/dist/cjs/global-account/react/components/ProfileAvatar.js +0 -127
  239. package/dist/cjs/global-account/react/hooks/useRPMToken.d.ts +0 -7
  240. package/dist/cjs/global-account/react/hooks/useRPMToken.js +0 -11
  241. package/dist/cjs/global-account/react/utils/updateAvatar.d.ts +0 -4
  242. package/dist/cjs/global-account/react/utils/updateAvatar.js +0 -54
  243. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  244. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +0 -51
  245. package/dist/esm/global-account/react/components/ProfileAvatar.d.ts +0 -0
  246. package/dist/esm/global-account/react/components/ProfileAvatar.js +0 -127
  247. package/dist/esm/global-account/react/hooks/useRPMToken.d.ts +0 -7
  248. package/dist/esm/global-account/react/hooks/useRPMToken.js +0 -8
  249. package/dist/esm/global-account/react/utils/updateAvatar.d.ts +0 -4
  250. package/dist/esm/global-account/react/utils/updateAvatar.js +0 -18
  251. package/dist/types/global-account/react/components/AvatarCreator/AvatarCreator.d.ts +0 -6
  252. package/dist/types/global-account/react/components/ProfileAvatar.d.ts +0 -0
  253. package/dist/types/global-account/react/hooks/useRPMToken.d.ts +0 -7
  254. package/dist/types/global-account/react/utils/updateAvatar.d.ts +0 -4
  255. package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +0 -90
  256. package/src/global-account/react/components/ProfileAvatar.tsx +0 -138
  257. package/src/global-account/react/hooks/useRPMToken.ts +0 -17
  258. package/src/global-account/react/utils/updateAvatar.ts +0 -21
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BetterAuthResetPassword = BetterAuthResetPassword;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("../../../../global-account/react");
6
+ const debug_1 = require("../../../../shared/utils/debug");
7
+ const react_2 = require("react");
8
+ const useBetterAuth_1 = require("../../hooks/useBetterAuth");
9
+ const debug = (0, debug_1.debugB3React)("BetterAuthResetPassword");
10
+ /**
11
+ * Standalone reset password form. Render this on your reset password page.
12
+ * Reads the token from props (extract it from the URL query string).
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * const token = new URLSearchParams(window.location.search).get("token");
17
+ * <BetterAuthResetPassword token={token} onSuccess={() => navigate("/login")} />
18
+ * ```
19
+ */
20
+ function BetterAuthResetPassword({ token, onSuccess, onError, className }) {
21
+ const { resetPassword } = (0, useBetterAuth_1.useBetterAuth)();
22
+ const [password, setPassword] = (0, react_2.useState)("");
23
+ const [confirmPassword, setConfirmPassword] = (0, react_2.useState)("");
24
+ const [isLoading, setIsLoading] = (0, react_2.useState)(false);
25
+ const [error, setError] = (0, react_2.useState)(null);
26
+ const [success, setSuccess] = (0, react_2.useState)(false);
27
+ const handleSubmit = async () => {
28
+ if (!password) {
29
+ setError("Please enter a new password");
30
+ return;
31
+ }
32
+ if (password.length < 8) {
33
+ setError("Password must be at least 8 characters");
34
+ return;
35
+ }
36
+ if (password !== confirmPassword) {
37
+ setError("Passwords do not match");
38
+ return;
39
+ }
40
+ try {
41
+ setIsLoading(true);
42
+ setError(null);
43
+ await resetPassword(password, token);
44
+ setSuccess(true);
45
+ debug("Password reset successful");
46
+ onSuccess?.();
47
+ }
48
+ catch (err) {
49
+ const message = err instanceof Error ? err.message : "Password reset failed";
50
+ setError(message);
51
+ debug("Password reset failed", err);
52
+ onError?.(err);
53
+ }
54
+ finally {
55
+ setPassword("");
56
+ setConfirmPassword("");
57
+ setIsLoading(false);
58
+ }
59
+ };
60
+ if (!token) {
61
+ return ((0, jsx_runtime_1.jsx)("div", { className: `w-full max-w-[400px] px-6 text-center ${className || ""}`, children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: "Invalid or missing reset token." }) }));
62
+ }
63
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `w-full max-w-[400px] px-6 ${className || ""}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-10 text-center", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-[28px] font-semibold tracking-tight text-gray-900 dark:text-gray-100", children: success ? "Password reset" : "Set new password" }), (0, jsx_runtime_1.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 ? ((0, jsx_runtime_1.jsx)("div", { className: "space-y-4 text-center", children: (0, jsx_runtime_1.jsx)("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-6 w-6 text-green-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) }) })) : ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-5", children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "New password" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "password", placeholder: "At least 8 characters", value: password, onChange: e => setPassword(e.target.value), disabled: isLoading, className: "h-11 px-4 text-[15px]" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Confirm password" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "password", placeholder: "Repeat your password", value: confirmPassword, onChange: e => setConfirmPassword(e.target.value), disabled: isLoading, onKeyDown: e => {
64
+ if (e.key === "Enter")
65
+ handleSubmit();
66
+ }, className: "h-11 px-4 text-[15px]" })] }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: error }), (0, jsx_runtime_1.jsx)(react_1.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" })] }))] }));
67
+ }
@@ -0,0 +1,34 @@
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
+ /** Called after successful authentication */
14
+ onSuccess?: () => void;
15
+ /** Called on authentication error */
16
+ onError?: (error: Error) => void;
17
+ /** Optional class name for the root container */
18
+ className?: string;
19
+ }
20
+ /**
21
+ * Standalone inline sign-in component for Better Auth.
22
+ *
23
+ * Renders directly — no modal, no button wrapper. Designed for full-page
24
+ * sign-in layouts (e.g., B3OS web with branding on the left, form on the right).
25
+ *
26
+ * Usage:
27
+ * ```tsx
28
+ * <BetterAuthSignIn
29
+ * socialProviders={["google", "github"]}
30
+ * onSuccess={() => router.push("/dashboard")}
31
+ * />
32
+ * ```
33
+ */
34
+ export declare function BetterAuthSignIn({ title, subtitle, socialProviders, showEmail, passwordResetRedirectTo, onSuccess, onError, className, }: BetterAuthSignInProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,163 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BetterAuthSignIn = BetterAuthSignIn;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("../../../../global-account/react");
6
+ const debug_1 = require("../../../../shared/utils/debug");
7
+ const react_2 = require("react");
8
+ const useBetterAuth_1 = require("../../hooks/useBetterAuth");
9
+ const signInUtils_1 = require("./utils/signInUtils");
10
+ const debug = (0, debug_1.debugB3React)("BetterAuthSignIn");
11
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
12
+ const DEFAULT_SOCIAL_PROVIDERS = [
13
+ { id: "google", label: "Google" },
14
+ { id: "github", label: "GitHub" },
15
+ { id: "discord", label: "Discord" },
16
+ { id: "microsoft", label: "Microsoft" },
17
+ { id: "slack", label: "Slack" },
18
+ ];
19
+ /**
20
+ * Standalone inline sign-in component for Better Auth.
21
+ *
22
+ * Renders directly — no modal, no button wrapper. Designed for full-page
23
+ * sign-in layouts (e.g., B3OS web with branding on the left, form on the right).
24
+ *
25
+ * Usage:
26
+ * ```tsx
27
+ * <BetterAuthSignIn
28
+ * socialProviders={["google", "github"]}
29
+ * onSuccess={() => router.push("/dashboard")}
30
+ * />
31
+ * ```
32
+ */
33
+ function BetterAuthSignIn({ title, subtitle = "Enter your credentials to access your account", socialProviders = DEFAULT_SOCIAL_PROVIDERS.map(p => p.id), showEmail = true, passwordResetRedirectTo, onSuccess, onError, className, }) {
34
+ const { signInWithEmail, signUpWithEmail, signInWithSocial, requestPasswordReset } = (0, useBetterAuth_1.useBetterAuth)();
35
+ const isAuthenticated = (0, react_1.useAuthStore)(state => state.isAuthenticated);
36
+ const [mode, setMode] = (0, react_2.useState)("sign-in");
37
+ const [email, setEmail] = (0, react_2.useState)("");
38
+ const [password, setPassword] = (0, react_2.useState)("");
39
+ const [name, setName] = (0, react_2.useState)("");
40
+ const [isLoading, setIsLoading] = (0, react_2.useState)(false);
41
+ const [loadingProvider, setLoadingProvider] = (0, react_2.useState)(null);
42
+ const [error, setError] = (0, react_2.useState)(null);
43
+ const [resetEmailSent, setResetEmailSent] = (0, react_2.useState)(false);
44
+ const [verificationSent, setVerificationSent] = (0, react_2.useState)(false);
45
+ const resolvedTitle = title ||
46
+ (mode === "forgot-password" ? "Reset password" : mode === "sign-in" ? "Welcome back" : "Create an account");
47
+ const resolvedSubtitle = mode === "forgot-password"
48
+ ? "Enter your email and we'll send you a reset link"
49
+ : subtitle || "Enter your credentials to access your account";
50
+ const handleForgotPassword = async () => {
51
+ const normalizedEmail = email.trim().toLowerCase();
52
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
53
+ setError("Please enter a valid email address");
54
+ return;
55
+ }
56
+ try {
57
+ setIsLoading(true);
58
+ setError(null);
59
+ await requestPasswordReset(normalizedEmail, passwordResetRedirectTo);
60
+ setResetEmailSent(true);
61
+ }
62
+ catch (err) {
63
+ const message = err instanceof Error ? err.message : "Failed to send reset email";
64
+ setError(message);
65
+ }
66
+ finally {
67
+ setIsLoading(false);
68
+ }
69
+ };
70
+ const providers = socialProviders
71
+ .map(id => DEFAULT_SOCIAL_PROVIDERS.find(p => p.id === id))
72
+ .filter((p) => !!p);
73
+ if (isAuthenticated) {
74
+ return null;
75
+ }
76
+ const handleEmailSubmit = async () => {
77
+ const normalizedEmail = email.trim().toLowerCase();
78
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
79
+ setError("Please enter a valid email address");
80
+ return;
81
+ }
82
+ if (!password) {
83
+ setError("Please enter a password");
84
+ return;
85
+ }
86
+ if (mode === "sign-up" && !name.trim()) {
87
+ setError("Please enter your name");
88
+ return;
89
+ }
90
+ try {
91
+ setIsLoading(true);
92
+ setError(null);
93
+ if (mode === "sign-up") {
94
+ await signUpWithEmail(normalizedEmail, password, name.trim());
95
+ }
96
+ else {
97
+ await signInWithEmail(normalizedEmail, password);
98
+ }
99
+ debug("Auth successful");
100
+ onSuccess?.();
101
+ }
102
+ catch (err) {
103
+ if (err instanceof useBetterAuth_1.EmailVerificationRequiredError) {
104
+ setVerificationSent(true);
105
+ setError(null);
106
+ }
107
+ else {
108
+ const message = err instanceof Error ? err.message : "Authentication failed";
109
+ setError(message);
110
+ onError?.(err);
111
+ }
112
+ debug("Auth failed", err);
113
+ }
114
+ finally {
115
+ setPassword("");
116
+ setIsLoading(false);
117
+ }
118
+ };
119
+ const handleSocialSignIn = async (provider) => {
120
+ try {
121
+ setIsLoading(true);
122
+ setLoadingProvider(provider);
123
+ setError(null);
124
+ await signInWithSocial(provider);
125
+ }
126
+ catch (err) {
127
+ const message = err instanceof Error ? err.message : `Sign in failed`;
128
+ setError(message);
129
+ onError?.(err);
130
+ setIsLoading(false);
131
+ setLoadingProvider(null);
132
+ }
133
+ };
134
+ if (verificationSent) {
135
+ return ((0, jsx_runtime_1.jsx)("div", { className: `w-full max-w-[400px] px-6 ${className || ""}`, children: (0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col items-center gap-6 text-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex h-14 w-14 shrink-0 items-center justify-center rounded-full bg-green-100", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-7 w-7 shrink-0 text-green-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", width: 28, height: 28, children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }) }) }), (0, jsx_runtime_1.jsx)("h2", { className: "text-[22px] font-semibold text-gray-900 dark:text-gray-100", children: "Check your email" }), (0, jsx_runtime_1.jsxs)("p", { className: "text-[15px] text-gray-500 dark:text-gray-400", children: ["We sent a verification link to ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-gray-700 dark:text-gray-200", children: email }), ". Click the link to verify your account, then come back and sign in."] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
136
+ setVerificationSent(false);
137
+ setMode("sign-in");
138
+ setPassword("");
139
+ }, className: "text-[14px] font-medium text-blue-600 hover:text-blue-500 dark:text-blue-400", children: "Back to sign in" })] }) }));
140
+ }
141
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `w-full max-w-[400px] px-6 ${className || ""}`, children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-10 text-center", children: [(0, jsx_runtime_1.jsx)("h1", { className: "text-[28px] font-semibold tracking-tight text-gray-900 dark:text-gray-100", children: resolvedTitle }), (0, jsx_runtime_1.jsx)("p", { className: "mt-3 text-[15px] text-gray-500 dark:text-gray-400", children: resolvedSubtitle })] }), mode === "forgot-password" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-5", children: [resetEmailSent ? ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-4 text-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-6 w-6 text-green-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M5 13l4 4L19 7" }) }) }), (0, jsx_runtime_1.jsx)("p", { className: "text-[15px] text-gray-600 dark:text-gray-300", children: "Check your email for a reset link." })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Email" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "email", placeholder: "name@company.com", value: email, onChange: e => setEmail(e.target.value), disabled: isLoading, onKeyDown: e => {
142
+ if (e.key === "Enter")
143
+ handleForgotPassword();
144
+ }, className: "h-11 px-4 text-[15px]" })] }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: error }), (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleForgotPassword, 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 ? "Sending..." : "Send reset link" })] })), (0, jsx_runtime_1.jsx)("p", { className: "mt-8 text-center text-[14px] text-gray-500 dark:text-gray-400", children: (0, jsx_runtime_1.jsx)("button", { onClick: () => {
145
+ setMode("sign-in");
146
+ setError(null);
147
+ setResetEmailSent(false);
148
+ }, className: "font-medium text-blue-600 hover:text-blue-500 dark:text-blue-400", children: "Back to sign in" }) })] })), showEmail && mode !== "forgot-password" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-5", children: [mode === "sign-up" && ((0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Name" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "text", placeholder: "Your name", value: name, onChange: e => setName(e.target.value), disabled: isLoading, className: "h-11 px-4 text-[15px]" })] })), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsx)("label", { className: "mb-2 block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Email" }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "email", placeholder: "name@company.com", value: email, onChange: e => setEmail(e.target.value), disabled: isLoading, className: "h-11 px-4 text-[15px]" })] }), (0, jsx_runtime_1.jsxs)("div", { children: [(0, jsx_runtime_1.jsxs)("div", { className: "mb-2 flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("label", { className: "block text-xs font-medium uppercase tracking-wide text-gray-700 dark:text-gray-300", children: "Password" }), mode === "sign-in" && ((0, jsx_runtime_1.jsx)("button", { type: "button", onClick: () => {
149
+ setMode("forgot-password");
150
+ setError(null);
151
+ }, className: "text-xs font-medium text-blue-600 hover:text-blue-500 dark:text-blue-400", children: "Forgot password?" }))] }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "password", placeholder: "Password", value: password, onChange: e => setPassword(e.target.value), disabled: isLoading, onKeyDown: e => {
152
+ if (e.key === "Enter")
153
+ handleEmailSubmit();
154
+ }, className: "h-11 px-4 text-[15px]" })] }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: error }), (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleEmailSubmit, 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 ? "Loading..." : mode === "sign-in" ? "Sign in" : "Sign up" })] })), providers.length > 0 && mode !== "forgot-password" && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [showEmail && ((0, jsx_runtime_1.jsxs)("div", { className: "my-8 flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "h-px flex-1 bg-gray-200 dark:bg-gray-700" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-gray-400", children: "Or continue with" }), (0, jsx_runtime_1.jsx)("div", { className: "h-px flex-1 bg-gray-200 dark:bg-gray-700" })] })), (0, jsx_runtime_1.jsx)("div", { className: "space-y-4", children: providers.map(provider => {
155
+ const icon = signInUtils_1.strategyIcons[provider.id];
156
+ const label = signInUtils_1.strategyLabels[provider.id] || provider.label;
157
+ const isProviderLoading = loadingProvider === provider.id;
158
+ return ((0, jsx_runtime_1.jsxs)("button", { onClick: () => handleSocialSignIn(provider.id), disabled: isLoading, style: { paddingTop: "12px", paddingBottom: "12px" }, className: "flex w-full items-center justify-center gap-3 rounded-lg border border-gray-200 bg-white px-4 text-[14px] font-medium text-gray-700 transition-colors hover:bg-gray-50 disabled:opacity-50 dark:border-gray-700 dark:bg-gray-800 dark:text-gray-200 dark:hover:bg-gray-700", children: [isProviderLoading ? ((0, jsx_runtime_1.jsxs)("svg", { className: "h-5 w-5 animate-spin text-gray-400", viewBox: "0 0 24 24", fill: "none", children: [(0, jsx_runtime_1.jsx)("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }), (0, jsx_runtime_1.jsx)("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4z" })] })) : (icon && (0, jsx_runtime_1.jsx)("img", { src: icon, alt: "", className: "h-5 w-5" })), (0, jsx_runtime_1.jsx)("span", { children: isProviderLoading ? "Redirecting..." : label })] }, provider.id));
159
+ }) })] })), showEmail && mode !== "forgot-password" && ((0, jsx_runtime_1.jsxs)("p", { className: "mt-8 text-center text-[14px] text-gray-500 dark:text-gray-400", children: [mode === "sign-in" ? "Don't have an account? " : "Already have an account? ", (0, jsx_runtime_1.jsx)("button", { onClick: () => {
160
+ setMode(mode === "sign-in" ? "sign-up" : "sign-in");
161
+ setError(null);
162
+ }, disabled: isLoading, className: "font-medium text-blue-600 hover:text-blue-500 dark:text-blue-400", children: mode === "sign-in" ? "Sign up" : "Sign in" })] }))] }));
163
+ }
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.SignInWithB3Flow = SignInWithB3Flow;
4
4
  const jsx_runtime_1 = require("react/jsx-runtime");
5
5
  const react_1 = require("../../../../global-account/react");
6
+ const LoginStepBetterAuth_1 = require("./steps/LoginStepBetterAuth");
6
7
  const debug_1 = require("../../../../shared/utils/debug");
7
8
  const react_2 = require("react");
8
9
  const react_3 = require("thirdweb/react");
@@ -16,18 +17,20 @@ const MAX_REFETCH_ATTEMPTS = 20;
16
17
  * Handles different login providers, authentication steps, and session key management
17
18
  */
18
19
  function SignInWithB3Flow({ strategies, onLoginSuccess, onSessionKeySuccess, onError, chain, sessionKeyAddress, partnerId, closeAfterLogin = false, source = "signInWithB3Button", signersEnabled = false, }) {
19
- const { automaticallySetFirstEoa } = (0, react_1.useB3Config)();
20
+ const { automaticallySetFirstEoa, authStrategy } = (0, react_1.useB3Config)();
20
21
  // skipAutoConnect: this component intentionally logs out on mount to show a fresh login screen.
21
22
  // AuthenticationProvider is the sole owner of useAutoConnect to avoid competing auth cycles.
22
23
  const { user, logout } = (0, react_1.useAuthentication)(partnerId, { skipAutoConnect: true });
23
24
  // Tracks whether the pre-login logout has finished.
24
25
  // We must not render ConnectEmbed until logout (wallet disconnect) completes,
25
26
  // otherwise the wallet state disrupts ConnectEmbed causing a blank modal.
26
- const [readyToShowLogin, setReadyToShowLogin] = (0, react_2.useState)(source === "requestPermissions");
27
+ const [readyToShowLogin, setReadyToShowLogin] = (0, react_2.useState)(source === "requestPermissions" || authStrategy === "better-auth");
27
28
  const hasLoggedOutRef = (0, react_2.useRef)(false);
28
29
  (0, react_2.useEffect)(() => {
29
30
  if (hasLoggedOutRef.current)
30
31
  return;
32
+ if (authStrategy === "better-auth")
33
+ return;
31
34
  if (source !== "requestPermissions") {
32
35
  debug("Logging out before login");
33
36
  hasLoggedOutRef.current = true;
@@ -35,7 +38,7 @@ function SignInWithB3Flow({ strategies, onLoginSuccess, onSessionKeySuccess, onE
35
38
  setReadyToShowLogin(true);
36
39
  });
37
40
  }
38
- }, [source, logout]);
41
+ }, [source, logout, authStrategy]);
39
42
  const [step, setStep] = (0, react_2.useState)(source === "requestPermissions" ? null : "login");
40
43
  const [sessionKeyAdded, setSessionKeyAdded] = (0, react_2.useState)(source === "requestPermissions" ? true : false);
41
44
  const { setB3ModalContentType, setB3ModalOpen, isOpen, contentType } = (0, react_1.useModalStore)();
@@ -240,7 +243,13 @@ function SignInWithB3Flow({ strategies, onLoginSuccess, onSessionKeySuccess, onE
240
243
  else if (step === "login") {
241
244
  // Show loading spinner while: authenticating, waiting for pre-login logout to finish,
242
245
  // or fetching signers.
243
- if (!readyToShowLogin || isAuthenticating || isFetchingSigners) {
246
+ if (authStrategy === "better-auth") {
247
+ // Better Auth manages its own loading/verification states internally.
248
+ // Don't gate on isAuthenticating — it would unmount the component
249
+ // and lose verification state when setIsAuthenticating(false) fires.
250
+ content = (0, jsx_runtime_1.jsx)(LoginStepBetterAuth_1.LoginStepBetterAuth, { onSuccess: () => handleLoginSuccess({}), onError: onError });
251
+ }
252
+ else if (!readyToShowLogin || isAuthenticating || isFetchingSigners) {
244
253
  content = ((0, jsx_runtime_1.jsx)(LoginStep_1.LoginStepContainer, { partnerId: partnerId, children: (0, jsx_runtime_1.jsx)("div", { className: "my-8 flex min-h-[350px] items-center justify-center", children: (0, jsx_runtime_1.jsx)(react_1.Loading, { variant: "white", size: "lg" }) }) }));
245
254
  }
246
255
  else {
@@ -0,0 +1,6 @@
1
+ interface LoginStepBetterAuthProps {
2
+ onSuccess?: () => void;
3
+ onError?: (error: Error) => Promise<void>;
4
+ }
5
+ export declare function LoginStepBetterAuth({ onSuccess, onError }: LoginStepBetterAuthProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LoginStepBetterAuth = LoginStepBetterAuth;
4
+ const jsx_runtime_1 = require("react/jsx-runtime");
5
+ const react_1 = require("../../../../../global-account/react");
6
+ const debug_1 = require("../../../../../shared/utils/debug");
7
+ const react_2 = require("react");
8
+ const useBetterAuth_1 = require("../../../hooks/useBetterAuth");
9
+ const AuthButton_1 = require("../components/AuthButton");
10
+ const debug = (0, debug_1.debugB3React)("LoginStepBetterAuth");
11
+ const EMAIL_REGEX = /^[^\s@]+@[^\s@]+\.[^\s@]+$/;
12
+ const SOCIAL_PROVIDERS = [
13
+ { id: "google", label: "Google" },
14
+ { id: "github", label: "GitHub" },
15
+ { id: "discord", label: "Discord" },
16
+ { id: "microsoft", label: "Microsoft" },
17
+ { id: "slack", label: "Slack" },
18
+ ];
19
+ function LoginStepBetterAuth({ onSuccess, onError }) {
20
+ const { partnerId } = (0, react_1.useB3Config)();
21
+ const { signInWithEmail, signUpWithEmail, signInWithSocial, requestPasswordReset } = (0, useBetterAuth_1.useBetterAuth)();
22
+ const [mode, setMode] = (0, react_2.useState)("sign-in");
23
+ const [showEmailForm, setShowEmailForm] = (0, react_2.useState)(false);
24
+ const [email, setEmail] = (0, react_2.useState)("");
25
+ const [password, setPassword] = (0, react_2.useState)("");
26
+ const [name, setName] = (0, react_2.useState)("");
27
+ const [isLoading, setIsLoading] = (0, react_2.useState)(false);
28
+ const [error, setError] = (0, react_2.useState)(null);
29
+ const [resetEmailSent, setResetEmailSent] = (0, react_2.useState)(false);
30
+ const [verificationSent, setVerificationSent] = (0, react_2.useState)(false);
31
+ const handleEmailSubmit = async () => {
32
+ const normalizedEmail = email.trim().toLowerCase();
33
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
34
+ setError("Please enter a valid email address");
35
+ return;
36
+ }
37
+ if (!password) {
38
+ setError("Please enter a password");
39
+ return;
40
+ }
41
+ if (mode === "sign-up" && !name.trim()) {
42
+ setError("Please enter your name");
43
+ return;
44
+ }
45
+ try {
46
+ setIsLoading(true);
47
+ setError(null);
48
+ if (mode === "sign-up") {
49
+ debug("Signing up", { email: normalizedEmail, name: name.trim() });
50
+ await signUpWithEmail(normalizedEmail, password, name.trim());
51
+ }
52
+ else {
53
+ debug("Signing in", { email: normalizedEmail });
54
+ await signInWithEmail(normalizedEmail, password);
55
+ }
56
+ debug("Auth successful");
57
+ onSuccess?.();
58
+ }
59
+ catch (err) {
60
+ if (err instanceof useBetterAuth_1.EmailVerificationRequiredError) {
61
+ setVerificationSent(true);
62
+ setError(null);
63
+ }
64
+ else {
65
+ const message = err instanceof Error ? err.message : "Authentication failed";
66
+ setError(message);
67
+ await onError?.(err);
68
+ }
69
+ debug("Auth failed", err);
70
+ }
71
+ finally {
72
+ setPassword("");
73
+ setIsLoading(false);
74
+ }
75
+ };
76
+ const handleForgotPassword = async () => {
77
+ const normalizedEmail = email.trim().toLowerCase();
78
+ if (!EMAIL_REGEX.test(normalizedEmail)) {
79
+ setError("Please enter a valid email address");
80
+ return;
81
+ }
82
+ try {
83
+ setIsLoading(true);
84
+ setError(null);
85
+ await requestPasswordReset(normalizedEmail);
86
+ setResetEmailSent(true);
87
+ }
88
+ catch (err) {
89
+ const message = err instanceof Error ? err.message : "Failed to send reset email";
90
+ setError(message);
91
+ }
92
+ finally {
93
+ setIsLoading(false);
94
+ }
95
+ };
96
+ const handleSocialSignIn = async (provider) => {
97
+ try {
98
+ setIsLoading(true);
99
+ setError(null);
100
+ await signInWithSocial(provider);
101
+ }
102
+ catch (err) {
103
+ const message = err instanceof Error ? err.message : `${provider} sign in failed`;
104
+ setError(message);
105
+ await onError?.(err);
106
+ setIsLoading(false);
107
+ }
108
+ };
109
+ if (verificationSent) {
110
+ return ((0, jsx_runtime_1.jsx)(react_1.LoginStepContainer, { partnerId: partnerId, children: (0, jsx_runtime_1.jsxs)("div", { className: "mb-6 w-full space-y-4 px-3 text-center", children: [(0, jsx_runtime_1.jsx)("div", { className: "mx-auto flex h-12 w-12 items-center justify-center rounded-full bg-green-100", children: (0, jsx_runtime_1.jsx)("svg", { className: "h-6 w-6 text-green-600", fill: "none", viewBox: "0 0 24 24", stroke: "currentColor", children: (0, jsx_runtime_1.jsx)("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M3 8l7.89 5.26a2 2 0 002.22 0L21 8M5 19h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v10a2 2 0 002 2z" }) }) }), (0, jsx_runtime_1.jsx)("p", { className: "text-sm font-medium text-gray-900 dark:text-gray-100", children: "Check your email" }), (0, jsx_runtime_1.jsxs)("p", { className: "text-xs text-gray-500 dark:text-gray-400", children: ["We sent a verification link to ", (0, jsx_runtime_1.jsx)("span", { className: "font-medium text-gray-700 dark:text-gray-200", children: email }), ". Verify your account, then come back and sign in."] }), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
111
+ setVerificationSent(false);
112
+ setMode("sign-in");
113
+ setShowEmailForm(true);
114
+ setPassword("");
115
+ }, className: "text-sm text-gray-500 hover:text-gray-700 dark:text-gray-400 dark:hover:text-gray-300", children: "Back to sign in" })] }) }));
116
+ }
117
+ return ((0, jsx_runtime_1.jsx)(react_1.LoginStepContainer, { partnerId: partnerId, children: mode === "forgot-password" ? ((0, jsx_runtime_1.jsxs)("div", { className: "mb-6 w-full space-y-3 px-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-center text-sm font-medium text-gray-900 dark:text-gray-100", children: "Reset password" }), (0, jsx_runtime_1.jsx)("p", { className: "text-center text-xs text-gray-500", children: "Enter your email and we'll send you a reset link" }), resetEmailSent ? ((0, jsx_runtime_1.jsx)("div", { className: "space-y-3 py-4 text-center", children: (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-green-600", children: "Check your email for a reset link." }) })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(react_1.Input, { type: "email", placeholder: "you@example.com", value: email, onChange: event => setEmail(event.target.value), disabled: isLoading, onKeyDown: event => {
118
+ if (event.key === "Enter")
119
+ handleForgotPassword();
120
+ } }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: error }), (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleForgotPassword, disabled: isLoading, className: "w-full", children: isLoading ? "Sending..." : "Send reset link" })] })), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
121
+ setMode("sign-in");
122
+ setShowEmailForm(true);
123
+ setError(null);
124
+ setResetEmailSent(false);
125
+ }, className: "w-full text-center text-sm text-gray-500 hover:text-gray-700", children: "Back to sign in" })] })) : showEmailForm ? ((0, jsx_runtime_1.jsxs)("div", { className: "mb-6 w-full space-y-3 px-3", children: [(0, jsx_runtime_1.jsx)("p", { className: "text-center text-sm font-medium text-gray-900 dark:text-gray-100", children: mode === "sign-in" ? "Sign in with email" : "Create an account" }), mode === "sign-up" && ((0, jsx_runtime_1.jsx)(react_1.Input, { type: "text", placeholder: "Your name", value: name, onChange: event => setName(event.target.value), disabled: isLoading })), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "email", placeholder: "you@example.com", value: email, onChange: event => setEmail(event.target.value), disabled: isLoading }), (0, jsx_runtime_1.jsx)(react_1.Input, { type: "password", placeholder: "Password", value: password, onChange: event => setPassword(event.target.value), disabled: isLoading, onKeyDown: event => {
126
+ if (event.key === "Enter")
127
+ handleEmailSubmit();
128
+ } }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-sm text-red-500", children: error }), (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleEmailSubmit, disabled: isLoading, className: "w-full", children: isLoading ? "Loading..." : mode === "sign-in" ? "Sign in" : "Sign up" }), mode === "sign-in" && ((0, jsx_runtime_1.jsx)("button", { onClick: () => {
129
+ setMode("forgot-password");
130
+ setError(null);
131
+ }, disabled: isLoading, className: "w-full text-center text-xs text-gray-500 hover:text-gray-700", children: "Forgot password?" })), (0, jsx_runtime_1.jsx)("button", { onClick: () => {
132
+ setMode(mode === "sign-in" ? "sign-up" : "sign-in");
133
+ setError(null);
134
+ }, disabled: isLoading, className: "w-full text-center text-sm text-gray-500 hover:text-gray-700", children: mode === "sign-in" ? "Don't have an account? Sign up" : "Already have an account? Sign in" }), (0, jsx_runtime_1.jsx)(react_1.Button, { variant: "outline", onClick: () => {
135
+ setShowEmailForm(false);
136
+ setError(null);
137
+ }, disabled: isLoading, className: "w-full", children: "Back" })] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "mb-6 w-full space-y-4 px-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "grid w-full grid-cols-3 gap-4", children: SOCIAL_PROVIDERS.map(provider => ((0, jsx_runtime_1.jsx)(AuthButton_1.AuthButton, { strategy: provider.id, onClick: () => handleSocialSignIn(provider.id), isLoading: isLoading }, provider.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "h-px flex-1 bg-gray-200" }), (0, jsx_runtime_1.jsx)("span", { className: "text-xs text-gray-400", children: "or" }), (0, jsx_runtime_1.jsx)("div", { className: "h-px flex-1 bg-gray-200" })] }), (0, jsx_runtime_1.jsx)(AuthButton_1.AuthButton, { strategy: "email", onClick: () => setShowEmailForm(true), isLoading: isLoading }), error && (0, jsx_runtime_1.jsx)("p", { className: "text-center text-sm text-red-500", children: error })] })) }));
138
+ }
@@ -49,11 +49,13 @@ function getConnectOptionsFromStrategy(strategy) {
49
49
  }
50
50
  exports.strategyIcons = {
51
51
  google: "https://cdn.b3.fun/google.svg",
52
+ github: "https://cdn.jsdelivr.net/gh/devicons/devicon/icons/github/github-original.svg",
52
53
  x: "https://cdn.b3.fun/x.svg?1",
53
54
  discord: "https://cdn.b3.fun/discord.svg",
54
55
  apple: "https://cdn.b3.fun/apple.svg",
55
56
  guest: "https://cdn.b3.fun/incognito.svg",
56
- // Add more strategies as needed
57
+ microsoft: "https://upload.wikimedia.org/wikipedia/commons/4/44/Microsoft_logo.svg",
58
+ slack: "https://upload.wikimedia.org/wikipedia/commons/d/d5/Slack_icon_2019.svg",
57
59
  };
58
60
  exports.strategyLabels = {
59
61
  google: "Google",
@@ -63,6 +65,8 @@ exports.strategyLabels = {
63
65
  guest: "Guest",
64
66
  github: "GitHub",
65
67
  email: "Email",
68
+ microsoft: "Microsoft",
69
+ slack: "Slack",
66
70
  };
67
71
  // Test it
68
72
  // console.log(getConnectOptionsFromStrategy("io.metamask"));
@@ -7,6 +7,7 @@ const utils_1 = require("../../../../shared/utils");
7
7
  const lucide_react_1 = require("lucide-react");
8
8
  const react_1 = require("react");
9
9
  const profileApi_1 = require("../../utils/profileApi");
10
+ const profileDisplay_1 = require("../../utils/profileDisplay");
10
11
  const IPFSMediaRenderer_1 = require("../IPFSMediaRenderer/IPFSMediaRenderer");
11
12
  const input_1 = require("../ui/input");
12
13
  /**
@@ -159,5 +160,5 @@ function SingleUserSearchSelector({ onSelectUser, profileTypeFilter, placeholder
159
160
  const getProfileTypeBadges = (profiles) => {
160
161
  return profiles.map(p => p.type);
161
162
  };
162
- return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("single-user-search-selector b3-root relative w-full", className), ref: dropdownRef, children: [(0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-input-wrapper relative flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Search, { className: "single-user-search-icon pointer-events-none absolute text-gray-400", style: { left: "12px", width: "16px", height: "16px" } }), (0, jsx_runtime_1.jsx)(input_1.Input, { ref: inputRef, type: "text", value: searchQuery, onChange: e => setSearchQuery(e.target.value), placeholder: placeholder, className: (0, utils_1.cn)("single-user-search-input w-full border-gray-300 focus:border-blue-500 focus:ring-blue-500"), style: { paddingLeft: "44px", paddingRight: "44px" } }), showClearButton && searchQuery && ((0, jsx_runtime_1.jsx)("button", { onClick: handleClear, className: "single-user-search-clear-button absolute text-gray-400 transition-colors hover:text-gray-600", style: { right: "12px" }, type: "button", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { style: { width: "16px", height: "16px" } }) }))] }), isSearching && (0, jsx_runtime_1.jsx)("div", { className: "single-user-search-loading mt-2 text-sm text-gray-500", children: "Searching..." }), error && !isSearching && (0, jsx_runtime_1.jsx)("div", { className: "single-user-search-error mt-2 text-sm text-red-500", children: error }), showDropdown && searchResult && !isSearching && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-dropdown absolute z-50 mt-2 w-full rounded-lg border border-gray-200 bg-white shadow-lg", children: (0, jsx_runtime_1.jsx)("button", { onClick: () => handleSelectUser(searchResult), className: "single-user-search-result-button w-full px-4 py-3 text-left transition-colors hover:bg-gray-50", type: "button", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-avatar h-11 w-11 shrink-0", children: (0, jsx_runtime_1.jsx)(IPFSMediaRenderer_1.IPFSMediaRenderer, { src: searchResult.avatar, alt: getDisplayName(searchResult), className: "h-full w-full rounded-full object-cover" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-result-info min-w-0 flex-1 pt-0.5", children: [(0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-name text-base font-semibold text-gray-900", children: getDisplayName(searchResult) }), searchResult.address && ((0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-result-address mt-1 font-mono text-xs text-gray-500", children: [searchResult.address.slice(0, 6), "...", searchResult.address.slice(-4)] })), searchResult.bio && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-bio mt-1.5 line-clamp-2 text-sm text-gray-600", children: searchResult.bio })), showBadges && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-badges mt-2 flex flex-wrap gap-1.5", children: getProfileTypeBadges(searchResult.profiles).map((type, index) => ((0, jsx_runtime_1.jsx)("span", { className: "single-user-search-result-badge inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800", children: type }, `${type}-${index}`))) }))] })] }) }) }))] }));
163
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, utils_1.cn)("single-user-search-selector b3-root relative w-full", className), ref: dropdownRef, children: [(0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-input-wrapper relative flex items-center", children: [(0, jsx_runtime_1.jsx)(lucide_react_1.Search, { className: "single-user-search-icon pointer-events-none absolute text-gray-400", style: { left: "12px", width: "16px", height: "16px" } }), (0, jsx_runtime_1.jsx)(input_1.Input, { ref: inputRef, type: "text", value: searchQuery, onChange: e => setSearchQuery(e.target.value), placeholder: placeholder, className: (0, utils_1.cn)("single-user-search-input w-full border-gray-300 focus:border-blue-500 focus:ring-blue-500"), style: { paddingLeft: "44px", paddingRight: "44px" } }), showClearButton && searchQuery && ((0, jsx_runtime_1.jsx)("button", { onClick: handleClear, className: "single-user-search-clear-button absolute text-gray-400 transition-colors hover:text-gray-600", style: { right: "12px" }, type: "button", children: (0, jsx_runtime_1.jsx)(lucide_react_1.X, { style: { width: "16px", height: "16px" } }) }))] }), isSearching && (0, jsx_runtime_1.jsx)("div", { className: "single-user-search-loading mt-2 text-sm text-gray-500", children: "Searching..." }), error && !isSearching && (0, jsx_runtime_1.jsx)("div", { className: "single-user-search-error mt-2 text-sm text-red-500", children: error }), showDropdown && searchResult && !isSearching && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-dropdown absolute z-50 mt-2 w-full rounded-lg border border-gray-200 bg-white shadow-lg", children: (0, jsx_runtime_1.jsx)("button", { onClick: () => handleSelectUser(searchResult), className: "single-user-search-result-button w-full px-4 py-3 text-left transition-colors hover:bg-gray-50", type: "button", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-start gap-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-avatar h-11 w-11 shrink-0", children: (0, jsx_runtime_1.jsx)(IPFSMediaRenderer_1.IPFSMediaRenderer, { src: (0, profileDisplay_1.validateImageUrl)(searchResult.avatar) ?? undefined, alt: getDisplayName(searchResult), className: "h-full w-full rounded-full object-cover" }) }), (0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-result-info min-w-0 flex-1 pt-0.5", children: [(0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-name text-base font-semibold text-gray-900", children: getDisplayName(searchResult) }), searchResult.address && ((0, jsx_runtime_1.jsxs)("div", { className: "single-user-search-result-address mt-1 font-mono text-xs text-gray-500", children: [searchResult.address.slice(0, 6), "...", searchResult.address.slice(-4)] })), searchResult.bio && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-bio mt-1.5 line-clamp-2 text-sm text-gray-600", children: searchResult.bio })), showBadges && ((0, jsx_runtime_1.jsx)("div", { className: "single-user-search-result-badges mt-2 flex flex-wrap gap-1.5", children: getProfileTypeBadges(searchResult.profiles).map((type, index) => ((0, jsx_runtime_1.jsx)("span", { className: "single-user-search-result-badge inline-flex items-center rounded-full bg-blue-100 px-2.5 py-0.5 text-xs font-medium text-blue-800", children: type }, `${type}-${index}`))) }))] })] }) }) }))] }));
163
164
  }
@@ -1,6 +1,6 @@
1
1
  import * as React from "react";
2
2
  declare const buttonVariants: (props?: ({
3
- variant?: "link" | "default" | "b3" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
3
+ variant?: "default" | "link" | "b3" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
4
4
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
5
5
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
6
6
  interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
@@ -1,10 +1,13 @@
1
1
  export { B3DynamicModal } from "./B3DynamicModal";
2
2
  export { B3Provider } from "./B3Provider/B3Provider";
3
+ export type { AuthStrategy } from "./B3Provider/B3ConfigProvider";
3
4
  export { RelayKitProviderWrapper } from "./B3Provider/RelayKitProviderWrapper";
4
5
  export { useB3 } from "./B3Provider/useB3";
5
6
  export { useB3Account } from "./B3Provider/useB3Account";
6
7
  export { useB3Config } from "./B3Provider/useB3Config";
7
8
  export { StyleRoot } from "./StyleRoot";
9
+ export { BetterAuthResetPassword, type BetterAuthResetPasswordProps } from "./SignInWithB3/BetterAuthResetPassword";
10
+ export { BetterAuthSignIn, type BetterAuthSignInProps } from "./SignInWithB3/BetterAuthSignIn";
8
11
  export { AuthButton } from "./SignInWithB3/components/AuthButton";
9
12
  export { PermissionItem } from "./SignInWithB3/components/PermissionItem";
10
13
  export { WalletRow } from "./SignInWithB3/components/WalletRow";
@@ -3,9 +3,9 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.DialogDescription = exports.DialogContent = exports.DialogClose = exports.Dialog = exports.CommandShortcut = exports.CommandSeparator = exports.CommandList = exports.CommandItem = exports.CommandInput = exports.CommandGroup = exports.CommandEmpty = exports.CommandDialog = exports.Command = exports.buttonVariants = exports.Button = exports.badgeVariants = exports.Badge = exports.WalletConnectorIcon = exports.StaggeredFadeLoader = exports.CopyToClipboard = exports.ClientOnly = exports.customButtonVariants = exports.CustomButton = exports.SingleUserSearchSelector = exports.SendERC20Button = exports.SendETHButton = exports.MintButton = exports.AccountAssets = exports.RequestPermissionsButton = exports.RequestPermissions = exports.IPFSMediaRenderer = exports.Send = exports.Deposit = exports.ManageAccount = exports.isWalletType = exports.getConnectOptionsFromStrategy = exports.LoginStepContainer = exports.SignInWithB3Privy = exports.SignInWithB3Flow = exports.SignInWithB3 = exports.WalletRow = exports.PermissionItem = exports.AuthButton = exports.StyleRoot = exports.useB3Config = exports.useB3Account = exports.useB3 = exports.RelayKitProviderWrapper = exports.B3Provider = exports.B3DynamicModal = void 0;
7
- exports.toast = exports.AnimatedLottie = exports.TransitionPanel = exports.TooltipTrigger = exports.TooltipProvider = exports.TooltipContent = exports.Tooltip = exports.TextShimmer = exports.TextLoop = exports.TabTrigger = exports.TabsTransitionWrapper = exports.TabsList = exports.TabsContent = exports.Tabs = exports.TabTriggerPrimitive = exports.TabsPrimitive = exports.TabsListPrimitive = exports.TabsContentPrimitive = exports.Skeleton = exports.ShinyButton = exports.ScrollBar = exports.ScrollArea = exports.PopoverTrigger = exports.PopoverContent = exports.Popover = exports.Loading = exports.Input = exports.GlareCardRounded = exports.GlareCard = exports.DropdownMenuTrigger = exports.DropdownMenuSeparator = exports.DropdownMenuItem = exports.DropdownMenuContent = exports.DropdownMenu = exports.DrawerTrigger = exports.DrawerTitle = exports.DrawerPortal = exports.DrawerOverlay = exports.DrawerHeader = exports.DrawerFooter = exports.DrawerDescription = exports.DrawerContent = exports.DrawerClose = exports.Drawer = exports.DialogTrigger = exports.DialogTitle = exports.DialogPortal = exports.DialogOverlay = exports.DialogHeader = exports.DialogFooter = void 0;
8
- exports.WalletImage = exports.useToastContext = exports.ToastProvider = exports.ToastContainer = exports.Toast = void 0;
6
+ exports.DialogClose = exports.Dialog = exports.CommandShortcut = exports.CommandSeparator = exports.CommandList = exports.CommandItem = exports.CommandInput = exports.CommandGroup = exports.CommandEmpty = exports.CommandDialog = exports.Command = exports.buttonVariants = exports.Button = exports.badgeVariants = exports.Badge = exports.WalletConnectorIcon = exports.StaggeredFadeLoader = exports.CopyToClipboard = exports.ClientOnly = exports.customButtonVariants = exports.CustomButton = exports.SingleUserSearchSelector = exports.SendERC20Button = exports.SendETHButton = exports.MintButton = exports.AccountAssets = exports.RequestPermissionsButton = exports.RequestPermissions = exports.IPFSMediaRenderer = exports.Send = exports.Deposit = exports.ManageAccount = exports.isWalletType = exports.getConnectOptionsFromStrategy = exports.LoginStepContainer = exports.SignInWithB3Privy = exports.SignInWithB3Flow = exports.SignInWithB3 = exports.WalletRow = exports.PermissionItem = exports.AuthButton = exports.BetterAuthSignIn = exports.BetterAuthResetPassword = exports.StyleRoot = exports.useB3Config = exports.useB3Account = exports.useB3 = exports.RelayKitProviderWrapper = exports.B3Provider = exports.B3DynamicModal = void 0;
7
+ exports.TransitionPanel = exports.TooltipTrigger = exports.TooltipProvider = exports.TooltipContent = exports.Tooltip = exports.TextShimmer = exports.TextLoop = exports.TabTrigger = exports.TabsTransitionWrapper = exports.TabsList = exports.TabsContent = exports.Tabs = exports.TabTriggerPrimitive = exports.TabsPrimitive = exports.TabsListPrimitive = exports.TabsContentPrimitive = exports.Skeleton = exports.ShinyButton = exports.ScrollBar = exports.ScrollArea = exports.PopoverTrigger = exports.PopoverContent = exports.Popover = exports.Loading = exports.Input = exports.GlareCardRounded = exports.GlareCard = exports.DropdownMenuTrigger = exports.DropdownMenuSeparator = exports.DropdownMenuItem = exports.DropdownMenuContent = exports.DropdownMenu = exports.DrawerTrigger = exports.DrawerTitle = exports.DrawerPortal = exports.DrawerOverlay = exports.DrawerHeader = exports.DrawerFooter = exports.DrawerDescription = exports.DrawerContent = exports.DrawerClose = exports.Drawer = exports.DialogTrigger = exports.DialogTitle = exports.DialogPortal = exports.DialogOverlay = exports.DialogHeader = exports.DialogFooter = exports.DialogDescription = exports.DialogContent = void 0;
8
+ exports.WalletImage = exports.useToastContext = exports.ToastProvider = exports.ToastContainer = exports.Toast = exports.toast = exports.AnimatedLottie = void 0;
9
9
  // TODO woj: Barrel file for all components, this might be reason of bundle size issues
10
10
  // Core Components
11
11
  var B3DynamicModal_1 = require("./B3DynamicModal");
@@ -23,6 +23,10 @@ Object.defineProperty(exports, "useB3Config", { enumerable: true, get: function
23
23
  var StyleRoot_1 = require("./StyleRoot");
24
24
  Object.defineProperty(exports, "StyleRoot", { enumerable: true, get: function () { return StyleRoot_1.StyleRoot; } });
25
25
  // SignInWithB3 Components
26
+ var BetterAuthResetPassword_1 = require("./SignInWithB3/BetterAuthResetPassword");
27
+ Object.defineProperty(exports, "BetterAuthResetPassword", { enumerable: true, get: function () { return BetterAuthResetPassword_1.BetterAuthResetPassword; } });
28
+ var BetterAuthSignIn_1 = require("./SignInWithB3/BetterAuthSignIn");
29
+ Object.defineProperty(exports, "BetterAuthSignIn", { enumerable: true, get: function () { return BetterAuthSignIn_1.BetterAuthSignIn; } });
26
30
  var AuthButton_1 = require("./SignInWithB3/components/AuthButton");
27
31
  Object.defineProperty(exports, "AuthButton", { enumerable: true, get: function () { return AuthButton_1.AuthButton; } });
28
32
  var PermissionItem_1 = require("./SignInWithB3/components/PermissionItem");
@@ -1,7 +1,7 @@
1
1
  import { type VariantProps } from "class-variance-authority";
2
2
  import * as React from "react";
3
3
  declare const buttonVariants: (props?: ({
4
- variant?: "link" | "default" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
4
+ variant?: "default" | "link" | "destructive" | "outline" | "secondary" | "ghost" | null | undefined;
5
5
  size?: "default" | "icon" | "sm" | "lg" | null | undefined;
6
6
  } & import("class-variance-authority/dist/types").ClassProp) | undefined) => string;
7
7
  export interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
@@ -5,6 +5,7 @@ export { useAddTWSessionKey } from "./useAddTWSessionKey";
5
5
  export { useAnalytics } from "./useAnalytics";
6
6
  export { useAuth } from "./useAuth";
7
7
  export { useAuthentication } from "./useAuthentication";
8
+ export { useBetterAuth, EmailVerificationRequiredError } from "./useBetterAuth";
8
9
  export { useB3BalanceFromAddresses } from "./useB3BalanceFromAddresses";
9
10
  export { useB3EnsName } from "./useB3EnsName";
10
11
  export { useChainSwitchWithAction } from "./useChainSwitchWithAction";