@b3dotfun/sdk 0.0.40-test.6 → 0.0.41-alpha.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 (264) hide show
  1. package/dist/cjs/anyspend/constants/index.d.ts +0 -1
  2. package/dist/cjs/anyspend/constants/index.js +1 -2
  3. package/dist/cjs/anyspend/react/components/AnySpend.d.ts +11 -1
  4. package/dist/cjs/anyspend/react/components/AnySpend.js +22 -10
  5. package/dist/cjs/anyspend/react/components/AnySpendBondKit.js +0 -1
  6. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +0 -1
  7. package/dist/cjs/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  8. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +41 -20
  9. package/dist/cjs/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  10. package/dist/cjs/anyspend/react/components/AnySpendNFT.js +2 -2
  11. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +0 -1
  12. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  13. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +10 -8
  14. package/dist/cjs/anyspend/react/components/AnyspendSignatureMint.js +1 -2
  15. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  16. package/dist/cjs/anyspend/react/components/common/ConnectWalletPayment.js +7 -4
  17. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  18. package/dist/cjs/anyspend/react/components/common/CryptoPaySection.js +9 -9
  19. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +80 -10
  20. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  21. package/dist/cjs/anyspend/react/components/common/CryptoReceiveSection.js +40 -37
  22. package/dist/cjs/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  23. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +24 -23
  24. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +9 -8
  25. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  26. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +23 -9
  27. package/dist/cjs/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  28. package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +10 -6
  29. package/dist/cjs/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  30. package/dist/cjs/anyspend/react/components/common/PaymentMethodSwitch.js +24 -0
  31. package/dist/cjs/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  32. package/dist/cjs/anyspend/react/components/common/PointsBadge.js +7 -0
  33. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  34. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +14 -0
  35. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  36. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +6 -4
  37. package/dist/cjs/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  38. package/dist/cjs/anyspend/react/contexts/FeatureFlagsContext.js +21 -0
  39. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  40. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +18 -8
  41. package/dist/cjs/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  42. package/dist/cjs/anyspend/react/providers/AnyspendProvider.js +5 -3
  43. package/dist/cjs/anyspend/react/providers/index.d.ts +1 -0
  44. package/dist/cjs/anyspend/react/providers/index.js +3 -0
  45. package/dist/cjs/anyspend/services/anyspend.d.ts +1 -1
  46. package/dist/cjs/anyspend/services/anyspend.js +2 -0
  47. package/dist/cjs/anyspend/types/api.d.ts +51 -1
  48. package/dist/cjs/anyspend/utils/chain.js +1 -1
  49. package/dist/cjs/anyspend/utils/orderPayload.js +3 -0
  50. package/dist/cjs/bondkit/bondkitToken.d.ts +37 -2
  51. package/dist/cjs/bondkit/bondkitToken.js +268 -2
  52. package/dist/cjs/bondkit/bondkitTokenFactory.d.ts +1 -1
  53. package/dist/cjs/bondkit/bondkitTokenFactory.js +2 -2
  54. package/dist/cjs/bondkit/components/TradingView.js +3 -4
  55. package/dist/cjs/bondkit/config.d.ts +1 -1
  56. package/dist/cjs/bondkit/config.js +5 -2
  57. package/dist/cjs/bondkit/constants.d.ts +4 -0
  58. package/dist/cjs/bondkit/constants.js +6 -1
  59. package/dist/cjs/bondkit/index.d.ts +1 -0
  60. package/dist/cjs/bondkit/index.js +4 -1
  61. package/dist/cjs/bondkit/swapService.d.ts +43 -0
  62. package/dist/cjs/bondkit/swapService.js +376 -0
  63. package/dist/cjs/bondkit/types.d.ts +10 -4
  64. package/dist/cjs/bondkit/types.js +4 -5
  65. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  66. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +27 -28
  67. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +63 -3
  68. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +35 -2
  69. package/dist/cjs/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +4 -3
  70. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -0
  71. package/dist/cjs/global-account/react/hooks/index.js +3 -1
  72. package/dist/cjs/global-account/react/hooks/useAccountAssets.js +5 -2
  73. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +0 -12
  74. package/dist/cjs/global-account/react/hooks/useAuthentication.js +2 -3
  75. package/dist/cjs/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  76. package/dist/cjs/global-account/react/hooks/useGlobalAccount.js +32 -0
  77. package/dist/cjs/global-account/react/hooks/useQueryB3.js +5 -2
  78. package/dist/cjs/global-account/react/hooks/useQueryBSMNT.js +5 -2
  79. package/dist/cjs/global-account/react/hooks/useSimBalance.js +2 -2
  80. package/dist/cjs/global-account/react/hooks/useTokenBalancesByChain.js +7 -1
  81. package/dist/cjs/global-account/react/hooks/useTokenFromUrl.js +2 -2
  82. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +28 -24
  83. package/dist/cjs/shared/utils/fetchBalances.d.ts +1 -1
  84. package/dist/esm/anyspend/constants/index.d.ts +0 -1
  85. package/dist/esm/anyspend/constants/index.js +0 -1
  86. package/dist/esm/anyspend/react/components/AnySpend.d.ts +11 -1
  87. package/dist/esm/anyspend/react/components/AnySpend.js +23 -11
  88. package/dist/esm/anyspend/react/components/AnySpendBondKit.js +0 -1
  89. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +0 -1
  90. package/dist/esm/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  91. package/dist/esm/anyspend/react/components/AnySpendCustom.js +41 -20
  92. package/dist/esm/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  93. package/dist/esm/anyspend/react/components/AnySpendNFT.js +2 -2
  94. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +0 -1
  95. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  96. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +11 -9
  97. package/dist/esm/anyspend/react/components/AnyspendSignatureMint.js +1 -2
  98. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  99. package/dist/esm/anyspend/react/components/common/ConnectWalletPayment.js +8 -5
  100. package/dist/esm/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  101. package/dist/esm/anyspend/react/components/common/CryptoPaySection.js +9 -9
  102. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +80 -10
  103. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  104. package/dist/esm/anyspend/react/components/common/CryptoReceiveSection.js +40 -37
  105. package/dist/esm/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  106. package/dist/esm/anyspend/react/components/common/OrderDetails.js +25 -24
  107. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +10 -9
  108. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  109. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +23 -9
  110. package/dist/esm/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  111. package/dist/esm/anyspend/react/components/common/PanelOnramp.js +10 -6
  112. package/dist/esm/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  113. package/dist/esm/anyspend/react/components/common/PaymentMethodSwitch.js +21 -0
  114. package/dist/esm/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  115. package/dist/esm/anyspend/react/components/common/PointsBadge.js +4 -0
  116. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  117. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +8 -0
  118. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  119. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +6 -4
  120. package/dist/esm/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  121. package/dist/esm/anyspend/react/contexts/FeatureFlagsContext.js +17 -0
  122. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  123. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +18 -8
  124. package/dist/esm/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  125. package/dist/esm/anyspend/react/providers/AnyspendProvider.js +5 -3
  126. package/dist/esm/anyspend/react/providers/index.d.ts +1 -0
  127. package/dist/esm/anyspend/react/providers/index.js +1 -0
  128. package/dist/esm/anyspend/services/anyspend.d.ts +1 -1
  129. package/dist/esm/anyspend/services/anyspend.js +2 -0
  130. package/dist/esm/anyspend/types/api.d.ts +51 -1
  131. package/dist/esm/anyspend/utils/chain.js +1 -1
  132. package/dist/esm/anyspend/utils/orderPayload.js +3 -0
  133. package/dist/esm/bondkit/bondkitToken.d.ts +37 -2
  134. package/dist/esm/bondkit/bondkitToken.js +268 -2
  135. package/dist/esm/bondkit/bondkitTokenFactory.d.ts +1 -1
  136. package/dist/esm/bondkit/bondkitTokenFactory.js +2 -2
  137. package/dist/esm/bondkit/components/TradingView.js +3 -4
  138. package/dist/esm/bondkit/config.d.ts +1 -1
  139. package/dist/esm/bondkit/config.js +5 -2
  140. package/dist/esm/bondkit/constants.d.ts +4 -0
  141. package/dist/esm/bondkit/constants.js +5 -0
  142. package/dist/esm/bondkit/index.d.ts +1 -0
  143. package/dist/esm/bondkit/index.js +2 -0
  144. package/dist/esm/bondkit/swapService.d.ts +43 -0
  145. package/dist/esm/bondkit/swapService.js +372 -0
  146. package/dist/esm/bondkit/types.d.ts +10 -4
  147. package/dist/esm/bondkit/types.js +4 -5
  148. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  149. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +27 -28
  150. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +65 -5
  151. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +35 -2
  152. package/dist/esm/global-account/react/components/SignInWithB3/steps/LoginStepCustom.js +3 -2
  153. package/dist/esm/global-account/react/hooks/index.d.ts +1 -0
  154. package/dist/esm/global-account/react/hooks/index.js +1 -0
  155. package/dist/esm/global-account/react/hooks/useAccountAssets.js +2 -2
  156. package/dist/esm/global-account/react/hooks/useAccountWallet.js +0 -12
  157. package/dist/esm/global-account/react/hooks/useAuthentication.js +2 -3
  158. package/dist/esm/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  159. package/dist/esm/global-account/react/hooks/useGlobalAccount.js +29 -0
  160. package/dist/esm/global-account/react/hooks/useQueryB3.js +5 -2
  161. package/dist/esm/global-account/react/hooks/useQueryBSMNT.js +5 -2
  162. package/dist/esm/global-account/react/hooks/useSimBalance.js +2 -2
  163. package/dist/esm/global-account/react/hooks/useTokenBalancesByChain.js +4 -1
  164. package/dist/esm/global-account/react/hooks/useTokenFromUrl.js +2 -2
  165. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +29 -25
  166. package/dist/esm/shared/utils/fetchBalances.d.ts +1 -1
  167. package/dist/styles/index.css +1 -1
  168. package/dist/types/anyspend/constants/index.d.ts +0 -1
  169. package/dist/types/anyspend/react/components/AnySpend.d.ts +11 -1
  170. package/dist/types/anyspend/react/components/AnySpendCustom.d.ts +1 -0
  171. package/dist/types/anyspend/react/components/AnySpendNFT.d.ts +2 -1
  172. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +8 -0
  173. package/dist/types/anyspend/react/components/common/ConnectWalletPayment.d.ts +2 -1
  174. package/dist/types/anyspend/react/components/common/CryptoPaySection.d.ts +4 -1
  175. package/dist/types/anyspend/react/components/common/CryptoReceiveSection.d.ts +2 -1
  176. package/dist/types/anyspend/react/components/common/OrderDetails.d.ts +2 -0
  177. package/dist/types/anyspend/react/components/common/OrderTokenAmount.d.ts +4 -1
  178. package/dist/types/anyspend/react/components/common/PanelOnramp.d.ts +4 -1
  179. package/dist/types/anyspend/react/components/common/PaymentMethodSwitch.d.ts +7 -0
  180. package/dist/types/anyspend/react/components/common/PointsBadge.d.ts +7 -0
  181. package/dist/types/anyspend/react/components/common/PointsDetailPanel.d.ts +6 -0
  182. package/dist/types/anyspend/react/components/common/TransferCryptoDetails.d.ts +2 -0
  183. package/dist/types/anyspend/react/contexts/FeatureFlagsContext.d.ts +11 -0
  184. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +4 -1
  185. package/dist/types/anyspend/react/providers/AnyspendProvider.d.ts +5 -2
  186. package/dist/types/anyspend/react/providers/index.d.ts +1 -0
  187. package/dist/types/anyspend/services/anyspend.d.ts +1 -1
  188. package/dist/types/anyspend/types/api.d.ts +51 -1
  189. package/dist/types/bondkit/bondkitToken.d.ts +37 -2
  190. package/dist/types/bondkit/bondkitTokenFactory.d.ts +1 -1
  191. package/dist/types/bondkit/config.d.ts +1 -1
  192. package/dist/types/bondkit/constants.d.ts +4 -0
  193. package/dist/types/bondkit/index.d.ts +1 -0
  194. package/dist/types/bondkit/swapService.d.ts +43 -0
  195. package/dist/types/bondkit/types.d.ts +10 -4
  196. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +2 -1
  197. package/dist/types/global-account/react/hooks/index.d.ts +1 -0
  198. package/dist/types/global-account/react/hooks/useGlobalAccount.d.ts +6 -0
  199. package/dist/types/shared/utils/fetchBalances.d.ts +1 -1
  200. package/package.json +1 -1
  201. package/src/anyspend/constants/index.ts +0 -2
  202. package/src/anyspend/react/components/AnySpend.tsx +52 -18
  203. package/src/anyspend/react/components/AnySpendBondKit.tsx +0 -1
  204. package/src/anyspend/react/components/AnySpendBuySpin.tsx +0 -1
  205. package/src/anyspend/react/components/AnySpendCustom.tsx +82 -34
  206. package/src/anyspend/react/components/AnySpendNFT.tsx +3 -0
  207. package/src/anyspend/react/components/AnySpendStakeB3.tsx +0 -1
  208. package/src/anyspend/react/components/AnyspendDepositHype.tsx +38 -18
  209. package/src/anyspend/react/components/AnyspendSignatureMint.tsx +1 -2
  210. package/src/anyspend/react/components/common/ConnectWalletPayment.tsx +12 -4
  211. package/src/anyspend/react/components/common/CryptoPaySection.tsx +13 -8
  212. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +170 -44
  213. package/src/anyspend/react/components/common/CryptoReceiveSection.tsx +61 -45
  214. package/src/anyspend/react/components/common/OrderDetails.tsx +60 -47
  215. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +62 -41
  216. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +28 -8
  217. package/src/anyspend/react/components/common/PanelOnramp.tsx +28 -15
  218. package/src/anyspend/react/components/common/PaymentMethodSwitch.tsx +38 -0
  219. package/src/anyspend/react/components/common/PointsBadge.tsx +20 -0
  220. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +55 -0
  221. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +65 -43
  222. package/src/anyspend/react/contexts/FeatureFlagsContext.tsx +34 -0
  223. package/src/anyspend/react/hooks/useAnyspendFlow.ts +18 -8
  224. package/src/anyspend/react/hooks/useAnyspendOrderAndTransactions.ts +1 -1
  225. package/src/anyspend/react/hooks/useCoinbaseOnrampOptions.ts +1 -1
  226. package/src/anyspend/react/providers/AnyspendProvider.tsx +11 -6
  227. package/src/anyspend/react/providers/index.ts +1 -0
  228. package/src/anyspend/services/anyspend.ts +3 -1
  229. package/src/anyspend/types/api.ts +51 -1
  230. package/src/anyspend/types/api_req_res.ts +6 -10
  231. package/src/anyspend/utils/chain.ts +1 -1
  232. package/src/anyspend/utils/orderPayload.ts +3 -0
  233. package/src/bondkit/bondkitToken.ts +323 -3
  234. package/src/bondkit/bondkitTokenFactory.ts +2 -2
  235. package/src/bondkit/components/TradingView.tsx +3 -5
  236. package/src/bondkit/config.ts +5 -2
  237. package/src/bondkit/constants.ts +7 -0
  238. package/src/bondkit/index.ts +3 -0
  239. package/src/bondkit/swapService.ts +464 -0
  240. package/src/bondkit/types.ts +12 -5
  241. package/src/global-account/react/components/B3Provider/B3Provider.tsx +31 -32
  242. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +106 -32
  243. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +60 -5
  244. package/src/global-account/react/components/SignInWithB3/steps/LoginStepCustom.tsx +4 -2
  245. package/src/global-account/react/hooks/index.ts +1 -0
  246. package/src/global-account/react/hooks/useAccountAssets.ts +4 -3
  247. package/src/global-account/react/hooks/useAccountWallet.tsx +0 -13
  248. package/src/global-account/react/hooks/useAuthentication.ts +2 -3
  249. package/src/global-account/react/hooks/useGlobalAccount.tsx +36 -0
  250. package/src/global-account/react/hooks/useOneBalance.tsx +1 -1
  251. package/src/global-account/react/hooks/useQueryB3.ts +22 -15
  252. package/src/global-account/react/hooks/useQueryBSMNT.ts +22 -15
  253. package/src/global-account/react/hooks/useSimBalance.ts +2 -2
  254. package/src/global-account/react/hooks/useTokenBalancesByChain.tsx +4 -1
  255. package/src/global-account/react/hooks/useTokenFromUrl.tsx +2 -2
  256. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +30 -26
  257. package/src/shared/utils/fetchBalances.ts +1 -1
  258. package/dist/cjs/global-account/examples/client-selection-example.d.ts +0 -5
  259. package/dist/cjs/global-account/examples/client-selection-example.js +0 -96
  260. package/dist/esm/global-account/examples/client-selection-example.d.ts +0 -5
  261. package/dist/esm/global-account/examples/client-selection-example.js +0 -93
  262. package/dist/types/global-account/examples/client-selection-example.d.ts +0 -5
  263. package/src/global-account/docs/client-selection.md +0 -292
  264. package/src/global-account/examples/client-selection-example.tsx +0 -197
@@ -3,11 +3,14 @@
3
3
  import { useAccountWallet } from "@b3dotfun/sdk/global-account/react";
4
4
  import { cn } from "@b3dotfun/sdk/shared/utils/cn";
5
5
  import { shortenAddress } from "@b3dotfun/sdk/shared/utils/formatAddress";
6
+ import { client } from "@b3dotfun/sdk/shared/utils/thirdweb";
6
7
  import { WalletCoinbase, WalletMetamask, WalletPhantom, WalletRainbow, WalletWalletConnect } from "@web3icons/react";
7
8
  import { ChevronLeft, ChevronRightCircle, Wallet, X, ZapIcon } from "lucide-react";
8
9
  import { useState } from "react";
9
10
  import { createPortal } from "react-dom";
10
11
  import { toast } from "sonner";
12
+ import { useSetActiveWallet, useWalletInfo } from "thirdweb/react";
13
+ import { WalletId, createWallet } from "thirdweb/wallets";
11
14
  import { useAccount, useConnect, useDisconnect, useWalletClient } from "wagmi";
12
15
 
13
16
  export enum CryptoPaymentMethodType {
@@ -38,13 +41,69 @@ export function CryptoPaymentMethod({
38
41
  onBack,
39
42
  onSelectPaymentMethod,
40
43
  }: CryptoPaymentMethodProps) {
41
- const { wallet: globalWallet, address: globalAddress } = useAccountWallet();
42
- const { address, isConnected, connector } = useAccount();
44
+ const {
45
+ wallet: globalWallet,
46
+ connectedEOAWallet: connectedEOAWallet,
47
+ connectedSmartWallet: connectedSmartWallet,
48
+ } = useAccountWallet();
49
+ const { connector, address, isConnected: wagmiWalletIsConnected } = useAccount();
43
50
  const { connect, connectors, isPending } = useConnect();
44
51
  const { disconnect } = useDisconnect();
45
52
  const { data: walletClient } = useWalletClient();
46
53
  const [showWalletModal, setShowWalletModal] = useState(false);
47
54
 
55
+ const setActiveWallet = useSetActiveWallet();
56
+ const { data: eoaWalletInfo } = useWalletInfo(connectedEOAWallet?.id);
57
+
58
+ const isConnected = !!connectedEOAWallet;
59
+ const globalAddress = connectedSmartWallet?.getAccount()?.address;
60
+
61
+ // Helper function to check if two addresses are the same
62
+ const isSameAddress = (addr1?: string, addr2?: string): boolean => {
63
+ if (!addr1 || !addr2) return false;
64
+ return addr1.toLowerCase() === addr2.toLowerCase();
65
+ };
66
+
67
+ // Check if connectedEOAWallet and wagmi wallet represent the same wallet
68
+ const connectedEOAAddress = connectedEOAWallet?.getAccount()?.address;
69
+ const wagmiAddress = address;
70
+ const isWalletDuplicated = isSameAddress(connectedEOAAddress, wagmiAddress);
71
+
72
+ // Determine which wallet to show (prefer connectedEOAWallet if both exist and are the same)
73
+ const shouldShowConnectedEOA = !!connectedEOAWallet;
74
+ const shouldShowWagmiWallet = wagmiWalletIsConnected && (!isWalletDuplicated || !connectedEOAWallet);
75
+
76
+ // Map wagmi connector names to thirdweb wallet IDs
77
+ const getThirdwebWalletId = (connectorName: string): WalletId | null => {
78
+ const walletMap: Record<string, WalletId> = {
79
+ MetaMask: "io.metamask",
80
+ "Coinbase Wallet": "com.coinbase.wallet",
81
+ Rainbow: "me.rainbow",
82
+ WalletConnect: "walletConnect",
83
+ Phantom: "app.phantom",
84
+ };
85
+ return walletMap[connectorName] || null;
86
+ };
87
+
88
+ // Create thirdweb wallet from wagmi connector
89
+ const createThirdwebWalletFromConnector = async (connectorName: string) => {
90
+ const walletId = getThirdwebWalletId(connectorName);
91
+ if (!walletId) {
92
+ console.warn(`No thirdweb wallet ID found for connector: ${connectorName}`);
93
+ return null;
94
+ }
95
+
96
+ try {
97
+ const thirdwebWallet = createWallet(walletId);
98
+ // Connect the wallet to sync with the existing wagmi connection
99
+ await thirdwebWallet.connect({ client });
100
+ return thirdwebWallet;
101
+ } catch (error) {
102
+ console.error(`Failed to create thirdweb wallet for ${connectorName}:`, error);
103
+ return null;
104
+ }
105
+ };
106
+
48
107
  // Define available wallet connectors
49
108
  const availableConnectors = connectors.filter(connector =>
50
109
  ["MetaMask", "WalletConnect", "Coinbase Wallet", "Rainbow", "Phantom"].includes(connector.name),
@@ -161,57 +220,79 @@ export function CryptoPaymentMethod({
161
220
  </div>
162
221
 
163
222
  {/* Payment Methods */}
164
- <div className="crypto-payment-methods flex flex-col gap-6">
165
- {/* Connect Wallet Section */}
166
- <button
167
- onClick={() => {
168
- // Always show wallet selection modal first
169
- setShowWalletModal(true);
170
- }}
171
- className="crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
172
- >
173
- <div className="flex items-center gap-3">
174
- <div className="wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-blue-100">
175
- <Wallet className="h-4 w-4 text-blue-600" />
176
- </div>
177
- <div className="flex flex-col items-start text-left">
178
- <h4 className="text-as-primary font-semibold">Connect wallet</h4>
179
- </div>
180
- </div>
181
- <ChevronRightCircle className="text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" />
182
- </button>
183
-
184
- {/* Transfer Crypto Section */}
185
- <button
186
- onClick={() => {
187
- setSelectedPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
188
- onSelectPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
189
- }}
190
- disabled={isCreatingOrder}
191
- className="crypto-payment-method-transfer bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
192
- >
193
- <div className="flex items-center gap-3">
194
- <div className="wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-orange-100">
195
- <ZapIcon className="h-4 w-4" />
196
- </div>
197
- <div className="flex flex-col items-start text-left">
198
- <h4 className="text-as-primary font-semibold">Transfer crypto</h4>
199
- </div>
200
- </div>
201
- <ChevronRightCircle className="text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" />
202
- </button>
203
-
223
+ <div className="crypto-payment-methods flex flex-col gap-4">
204
224
  {/* Installed Wallets Section */}
205
- {(isConnected || globalAddress) && (
225
+ {(shouldShowConnectedEOA || shouldShowWagmiWallet || globalAddress) && (
206
226
  <div className="installed-wallets">
207
227
  <h3 className="text-as-primary/80 mb-3 text-sm font-medium">Connected wallets</h3>
208
228
  <div className="space-y-2">
209
229
  {/* Current Connected Wallet */}
210
- {isConnected && (
230
+
231
+ {shouldShowConnectedEOA && (
211
232
  <button
212
233
  onClick={() => {
213
234
  setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
214
235
  onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
236
+ setActiveWallet(connectedEOAWallet);
237
+ toast.success(`Selected ${eoaWalletInfo?.name || connector?.name || "wallet"}`);
238
+ }}
239
+ className={cn(
240
+ "crypto-payment-method-connect-wallet w-full rounded-xl border p-4 text-left transition-all hover:shadow-md",
241
+ selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET
242
+ ? "connected-wallet border-as-brand bg-as-brand/5"
243
+ : "border-as-border-secondary bg-as-surface-primary hover:border-as-secondary/80",
244
+ )}
245
+ >
246
+ <div className="flex items-center justify-between">
247
+ <div className="flex items-center gap-3">
248
+ <div className="wallet-icon flex h-10 w-10 items-center justify-center rounded-full bg-blue-100">
249
+ <Wallet className="h-5 w-5 text-blue-600" />
250
+ </div>
251
+ <div className="flex flex-col">
252
+ <span className="text-as-primary font-semibold">
253
+ {eoaWalletInfo?.name || connector?.name || "Connected Wallet"}
254
+ </span>
255
+ <span className="text-as-primary/60 text-sm">
256
+ {shortenAddress(connectedEOAWallet?.getAccount()?.address || "")}
257
+ </span>
258
+ </div>
259
+ </div>
260
+ <div className="flex items-center gap-2">
261
+ {selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET && (
262
+ <div className="h-2 w-2 rounded-full bg-green-500"></div>
263
+ )}
264
+ <button
265
+ onClick={e => {
266
+ e.stopPropagation();
267
+ disconnect();
268
+ toast.success("Wallet disconnected");
269
+ if (selectedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
270
+ setSelectedPaymentMethod(CryptoPaymentMethodType.NONE);
271
+ }
272
+ }}
273
+ className="text-as-primary/60 hover:text-as-primary/80 rounded-lg p-1.5 transition-colors"
274
+ >
275
+ <X className="h-4 w-4" />
276
+ </button>
277
+ </div>
278
+ </div>
279
+ </button>
280
+ )}
281
+
282
+ {shouldShowWagmiWallet && (
283
+ <button
284
+ onClick={async () => {
285
+ setSelectedPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
286
+ onSelectPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
287
+
288
+ // Create thirdweb wallet from wagmi connector
289
+ if (connector?.name) {
290
+ const thirdwebWallet = await createThirdwebWalletFromConnector(connector.name);
291
+ if (thirdwebWallet) {
292
+ setActiveWallet(thirdwebWallet);
293
+ }
294
+ }
295
+
215
296
  toast.success(`Selected ${connector?.name || "wallet"}`);
216
297
  }}
217
298
  className={cn(
@@ -293,6 +374,51 @@ export function CryptoPaymentMethod({
293
374
  </div>
294
375
  </div>
295
376
  )}
377
+
378
+ {/* Other Payment Methods Section */}
379
+ <div className="other-payment-methods">
380
+ <h3 className="text-as-primary/80 mb-3 text-sm font-medium">Payment methods</h3>
381
+ <div className="space-y-3">
382
+ {/* Connect Wallet Section */}
383
+ <button
384
+ onClick={() => {
385
+ // Always show wallet selection modal first
386
+ setShowWalletModal(true);
387
+ }}
388
+ className="crypto-payment-method-connect-wallet bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
389
+ >
390
+ <div className="flex items-center gap-3">
391
+ <div className="wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-blue-100">
392
+ <Wallet className="h-4 w-4 text-blue-600" />
393
+ </div>
394
+ <div className="flex flex-col items-start text-left">
395
+ <h4 className="text-as-primary font-semibold">Connect wallet</h4>
396
+ </div>
397
+ </div>
398
+ <ChevronRightCircle className="text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" />
399
+ </button>
400
+
401
+ {/* Transfer Crypto Section */}
402
+ <button
403
+ onClick={() => {
404
+ setSelectedPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
405
+ onSelectPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
406
+ }}
407
+ disabled={isCreatingOrder}
408
+ className="crypto-payment-method-transfer bg-as-surface-primary border-as-border-secondary hover:border-as-secondary/80 group flex w-full items-center justify-between gap-4 rounded-xl border px-4 py-3.5 transition-all duration-200 hover:shadow-md"
409
+ >
410
+ <div className="flex items-center gap-3">
411
+ <div className="wallet-icon flex h-8 w-8 items-center justify-center rounded-full bg-orange-100">
412
+ <ZapIcon className="h-4 w-4" />
413
+ </div>
414
+ <div className="flex flex-col items-start text-left">
415
+ <h4 className="text-as-primary font-semibold">Transfer crypto</h4>
416
+ </div>
417
+ </div>
418
+ <ChevronRightCircle className="text-as-primary/40 group-hover:text-as-primary/60 h-5 w-5 transition-colors" />
419
+ </button>
420
+ </div>
421
+ </div>
296
422
  </div>
297
423
  </div>
298
424
 
@@ -5,7 +5,9 @@ import { formatDisplayNumber } from "@b3dotfun/sdk/shared/utils/number";
5
5
  import { ChevronRight } from "lucide-react";
6
6
  import { motion } from "motion/react";
7
7
  import { components } from "../../../types/api";
8
+ import { useFeatureFlags } from "../../contexts/FeatureFlagsContext";
8
9
  import { OrderTokenAmount } from "./OrderTokenAmount";
10
+ import { PointsBadge } from "./PointsBadge";
9
11
 
10
12
  interface CryptoReceiveSectionProps {
11
13
  isDepositMode?: boolean;
@@ -27,6 +29,8 @@ interface CryptoReceiveSectionProps {
27
29
  // custom dst token data
28
30
  dstTokenSymbol?: string;
29
31
  dstTokenLogoURI?: string;
32
+ // Points navigation
33
+ onShowPointsDetail?: () => void;
30
34
  }
31
35
 
32
36
  export function CryptoReceiveSection({
@@ -44,7 +48,10 @@ export function CryptoReceiveSection({
44
48
  anyspendQuote,
45
49
  dstTokenSymbol,
46
50
  dstTokenLogoURI,
51
+ onShowPointsDetail,
47
52
  }: CryptoReceiveSectionProps) {
53
+ const featureFlags = useFeatureFlags();
54
+
48
55
  return (
49
56
  <motion.div
50
57
  initial={{ opacity: 0, y: 20, filter: "blur(10px)" }}
@@ -100,61 +107,70 @@ export function CryptoReceiveSection({
100
107
  setToken={setSelectedDstToken || (() => {})}
101
108
  />
102
109
  )}
103
- <div className="text-as-primary/50 flex h-5 items-center text-sm">
104
- {formatDisplayNumber(anyspendQuote?.data?.currencyOut?.amountUsd, {
105
- style: "currency",
106
- fallback: "",
107
- })}
108
- {anyspendQuote?.data?.currencyIn?.amountUsd &&
109
- anyspendQuote?.data?.currencyOut?.amountUsd &&
110
- (() => {
111
- const calculatePriceImpact = (inputUsd?: string | number, outputUsd?: string | number) => {
112
- if (!inputUsd || !outputUsd) {
113
- return { percentage: "0.00", isNegative: false };
114
- }
110
+ <div className="text-as-primary/50 flex h-5 items-center justify-start gap-2 text-sm">
111
+ <div className="flex items-center gap-2">
112
+ {formatDisplayNumber(anyspendQuote?.data?.currencyOut?.amountUsd, {
113
+ style: "currency",
114
+ fallback: "",
115
+ })}
116
+ {anyspendQuote?.data?.currencyIn?.amountUsd &&
117
+ anyspendQuote?.data?.currencyOut?.amountUsd &&
118
+ (() => {
119
+ const calculatePriceImpact = (inputUsd?: string | number, outputUsd?: string | number) => {
120
+ if (!inputUsd || !outputUsd) {
121
+ return { percentage: "0.00", isNegative: false };
122
+ }
115
123
 
116
- const input = Number(inputUsd);
117
- const output = Number(outputUsd);
124
+ const input = Number(inputUsd);
125
+ const output = Number(outputUsd);
118
126
 
119
- // Handle edge cases
120
- if (input === 0 || isNaN(input) || isNaN(output) || input <= output) {
121
- return { percentage: "0.00", isNegative: false };
122
- }
127
+ // Handle edge cases
128
+ if (input === 0 || isNaN(input) || isNaN(output) || input <= output) {
129
+ return { percentage: "0.00", isNegative: false };
130
+ }
123
131
 
124
- const percentageValue = ((output - input) / input) * 100;
132
+ const percentageValue = ((output - input) / input) * 100;
125
133
 
126
- // Handle the -0.00% case
127
- if (percentageValue > -0.005 && percentageValue < 0) {
128
- return { percentage: "0.00", isNegative: false };
129
- }
134
+ // Handle the -0.00% case
135
+ if (percentageValue > -0.005 && percentageValue < 0) {
136
+ return { percentage: "0.00", isNegative: false };
137
+ }
130
138
 
131
- return {
132
- percentage: Math.abs(percentageValue).toFixed(2),
133
- isNegative: percentageValue < 0,
139
+ return {
140
+ percentage: Math.abs(percentageValue).toFixed(2),
141
+ isNegative: percentageValue < 0,
142
+ };
134
143
  };
135
- };
136
144
 
137
- const { percentage, isNegative } = calculatePriceImpact(
138
- anyspendQuote.data.currencyIn.amountUsd,
139
- anyspendQuote.data.currencyOut.amountUsd,
140
- );
145
+ const { percentage, isNegative } = calculatePriceImpact(
146
+ anyspendQuote.data.currencyIn.amountUsd,
147
+ anyspendQuote.data.currencyOut.amountUsd,
148
+ );
141
149
 
142
- // Parse the percentage as a number for comparison
143
- const percentageNum = parseFloat(percentage);
150
+ // Parse the percentage as a number for comparison
151
+ const percentageNum = parseFloat(percentage);
144
152
 
145
- // Don't show if less than 1%
146
- if (percentageNum < 1) {
147
- return null;
148
- }
153
+ // Don't show if less than 1%
154
+ if (percentageNum < 1) {
155
+ return null;
156
+ }
149
157
 
150
- // Using inline style to ensure color displays
151
- return (
152
- <span className="ml-2" style={{ color: percentageNum >= 10 ? "red" : "#FFD700" }}>
153
- ({isNegative ? "-" : ""}
154
- {percentage}%)
155
- </span>
156
- );
157
- })()}
158
+ // Using inline style to ensure color displays
159
+ return (
160
+ <span className="ml-2" style={{ color: percentageNum >= 10 ? "red" : "#FFD700" }}>
161
+ ({isNegative ? "-" : ""}
162
+ {percentage}%)
163
+ </span>
164
+ );
165
+ })()}
166
+ </div>
167
+ {featureFlags.showPoints && anyspendQuote?.data?.pointsAmount > 0 && (
168
+ <PointsBadge
169
+ pointsAmount={anyspendQuote.data.pointsAmount}
170
+ pointsMultiplier={anyspendQuote.data.pointsMultiplier}
171
+ onClick={() => onShowPointsDetail?.()}
172
+ />
173
+ )}
158
174
  </div>
159
175
  </motion.div>
160
176
  );