@b3dotfun/sdk 0.0.65-test.5 → 0.0.66

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 (316) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +69 -97
  2. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +23 -10
  3. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  4. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
  5. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  6. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +41 -0
  7. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  8. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +14 -251
  9. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  10. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
  11. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  12. package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  13. package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  14. package/dist/cjs/anyspend/react/components/common/OrderHistory.js +3 -7
  15. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +2 -10
  16. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  17. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  18. package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
  19. package/dist/cjs/anyspend/react/components/index.d.ts +1 -0
  20. package/dist/cjs/anyspend/react/components/index.js +4 -1
  21. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  22. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +16 -10
  23. package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  24. package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
  25. package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  26. package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.js +51 -0
  27. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  28. package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  29. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  30. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +35 -251
  31. package/dist/cjs/global-account/react/components/B3DynamicModal.js +15 -23
  32. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  33. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +279 -113
  34. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
  35. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +193 -24
  36. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  37. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.js +141 -0
  38. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +1 -3
  39. package/dist/cjs/global-account/react/components/index.d.ts +4 -5
  40. package/dist/cjs/global-account/react/components/index.js +9 -14
  41. package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
  42. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  43. package/dist/cjs/global-account/react/components/ui/drawer.js +1 -1
  44. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
  45. package/dist/cjs/global-account/react/hooks/index.js +1 -3
  46. package/dist/cjs/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  47. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +0 -18
  48. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
  49. package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  50. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
  51. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +2 -2
  52. package/dist/cjs/global-account/react/stores/index.d.ts +0 -1
  53. package/dist/cjs/global-account/react/stores/index.js +1 -3
  54. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +26 -31
  55. package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +0 -2
  56. package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
  57. package/dist/cjs/shared/constants/chains/supported.d.ts +3 -3
  58. package/dist/cjs/shared/utils/ipfs.js +3 -10
  59. package/dist/esm/anyspend/react/components/AnySpend.js +70 -98
  60. package/dist/esm/anyspend/react/components/AnySpendCustom.js +23 -10
  61. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  62. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
  63. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  64. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +38 -0
  65. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  66. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +15 -249
  67. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  68. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
  69. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  70. package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  71. package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  72. package/dist/esm/anyspend/react/components/common/OrderHistory.js +5 -6
  73. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +2 -10
  74. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  75. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  76. package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
  77. package/dist/esm/anyspend/react/components/index.d.ts +1 -0
  78. package/dist/esm/anyspend/react/components/index.js +1 -0
  79. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  80. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +16 -10
  81. package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  82. package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
  83. package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  84. package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.js +48 -0
  85. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  86. package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  87. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  88. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +38 -254
  89. package/dist/esm/global-account/react/components/B3DynamicModal.js +15 -23
  90. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  91. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +280 -113
  92. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
  93. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +195 -26
  94. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  95. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.js +135 -0
  96. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +2 -4
  97. package/dist/esm/global-account/react/components/index.d.ts +4 -5
  98. package/dist/esm/global-account/react/components/index.js +5 -9
  99. package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
  100. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  101. package/dist/esm/global-account/react/components/ui/drawer.js +1 -1
  102. package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
  103. package/dist/esm/global-account/react/hooks/index.js +1 -1
  104. package/dist/esm/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  105. package/dist/esm/global-account/react/hooks/useAccountWallet.js +0 -17
  106. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
  107. package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  108. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
  109. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +2 -2
  110. package/dist/esm/global-account/react/stores/index.d.ts +0 -1
  111. package/dist/esm/global-account/react/stores/index.js +0 -1
  112. package/dist/esm/global-account/react/stores/useModalStore.d.ts +26 -31
  113. package/dist/esm/global-account/react/utils/profileDisplay.d.ts +0 -2
  114. package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
  115. package/dist/esm/shared/constants/chains/supported.d.ts +3 -3
  116. package/dist/esm/shared/utils/ipfs.js +3 -10
  117. package/dist/styles/index.css +1 -1
  118. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  119. package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  120. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  121. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  122. package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  123. package/dist/types/anyspend/react/components/index.d.ts +1 -0
  124. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  125. package/dist/types/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  126. package/dist/types/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  127. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  128. package/dist/types/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  129. package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  130. package/dist/types/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  131. package/dist/types/global-account/react/components/index.d.ts +4 -5
  132. package/dist/types/global-account/react/hooks/index.d.ts +1 -1
  133. package/dist/types/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  134. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +2 -2
  135. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +2 -2
  136. package/dist/types/global-account/react/stores/index.d.ts +0 -1
  137. package/dist/types/global-account/react/stores/useModalStore.d.ts +26 -31
  138. package/dist/types/global-account/react/utils/profileDisplay.d.ts +0 -2
  139. package/dist/types/shared/constants/chains/supported.d.ts +3 -3
  140. package/package.json +1 -2
  141. package/src/anyspend/react/components/AnySpend.tsx +218 -256
  142. package/src/anyspend/react/components/AnySpendCustom.tsx +31 -16
  143. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +56 -13
  144. package/src/anyspend/react/components/AnySpendDepositUpside.tsx +81 -0
  145. package/src/anyspend/react/components/AnyspendDepositHype.tsx +36 -524
  146. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +14 -7
  147. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
  148. package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
  149. package/src/anyspend/react/components/common/OrderHistory.tsx +13 -8
  150. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +2 -13
  151. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
  152. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
  153. package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
  154. package/src/anyspend/react/components/index.ts +1 -0
  155. package/src/anyspend/react/hooks/useAnyspendFlow.ts +24 -12
  156. package/src/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.ts +20 -12
  157. package/src/anyspend/react/hooks/useCryptoPaymentMethodState.ts +71 -0
  158. package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +25 -115
  159. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +128 -477
  160. package/src/global-account/react/components/B3DynamicModal.tsx +17 -28
  161. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +433 -332
  162. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +10 -6
  163. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +589 -73
  164. package/src/global-account/react/components/ProfileEditor/ProfileEditor.tsx +265 -0
  165. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +7 -11
  166. package/src/global-account/react/components/index.ts +5 -11
  167. package/src/global-account/react/components/ui/Tabs.tsx +13 -5
  168. package/src/global-account/react/components/ui/dialog.tsx +14 -32
  169. package/src/global-account/react/components/ui/drawer.tsx +1 -1
  170. package/src/global-account/react/hooks/index.ts +0 -3
  171. package/src/global-account/react/hooks/useAccountWallet.tsx +0 -26
  172. package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +0 -1
  173. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +6 -12
  174. package/src/global-account/react/stores/index.ts +0 -1
  175. package/src/global-account/react/stores/useModalStore.ts +28 -35
  176. package/src/global-account/react/utils/profileDisplay.ts +2 -4
  177. package/src/shared/utils/ipfs.ts +3 -10
  178. package/src/styles/index.css +9 -6
  179. package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  180. package/dist/cjs/global-account/react/components/Deposit/Deposit.js +0 -65
  181. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  182. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -37
  183. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  184. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -331
  185. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  186. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +0 -34
  187. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  188. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +0 -23
  189. package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  190. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +0 -120
  191. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  192. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +0 -43
  193. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  194. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +0 -16
  195. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  196. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +0 -15
  197. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  198. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +0 -47
  199. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  200. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +0 -50
  201. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  202. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -8
  203. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  204. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -106
  205. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  206. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +0 -22
  207. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  208. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +0 -12
  209. package/dist/cjs/global-account/react/components/Send/Send.d.ts +0 -5
  210. package/dist/cjs/global-account/react/components/Send/Send.js +0 -187
  211. package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +0 -3
  212. package/dist/cjs/global-account/react/components/icons/BellIcon.js +0 -5
  213. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  214. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +0 -7
  215. package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  216. package/dist/cjs/global-account/react/components/icons/CopyIcon.js +0 -7
  217. package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  218. package/dist/cjs/global-account/react/components/icons/LinkIcon.js +0 -5
  219. package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +0 -3
  220. package/dist/cjs/global-account/react/components/icons/LockIcon.js +0 -5
  221. package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  222. package/dist/cjs/global-account/react/components/icons/WalletIcon.js +0 -7
  223. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  224. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +0 -36
  225. package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  226. package/dist/esm/global-account/react/components/Deposit/Deposit.js +0 -59
  227. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  228. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -34
  229. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  230. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -325
  231. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  232. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +0 -32
  233. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  234. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +0 -21
  235. package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  236. package/dist/esm/global-account/react/components/ManageAccount/Header.js +0 -81
  237. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  238. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +0 -41
  239. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  240. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +0 -10
  241. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  242. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +0 -13
  243. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  244. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +0 -45
  245. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  246. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +0 -45
  247. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  248. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -6
  249. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  250. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -101
  251. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  252. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +0 -20
  253. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  254. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +0 -10
  255. package/dist/esm/global-account/react/components/Send/Send.d.ts +0 -5
  256. package/dist/esm/global-account/react/components/Send/Send.js +0 -181
  257. package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +0 -3
  258. package/dist/esm/global-account/react/components/icons/BellIcon.js +0 -3
  259. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  260. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +0 -4
  261. package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  262. package/dist/esm/global-account/react/components/icons/CopyIcon.js +0 -4
  263. package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  264. package/dist/esm/global-account/react/components/icons/LinkIcon.js +0 -3
  265. package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +0 -3
  266. package/dist/esm/global-account/react/components/icons/LockIcon.js +0 -3
  267. package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  268. package/dist/esm/global-account/react/components/icons/WalletIcon.js +0 -4
  269. package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  270. package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +0 -33
  271. package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  272. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  273. package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  274. package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  275. package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  276. package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  277. package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  278. package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  279. package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  280. package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  281. package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  282. package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  283. package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  284. package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  285. package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  286. package/dist/types/global-account/react/components/Send/Send.d.ts +0 -5
  287. package/dist/types/global-account/react/components/icons/BellIcon.d.ts +0 -3
  288. package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  289. package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  290. package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  291. package/dist/types/global-account/react/components/icons/LockIcon.d.ts +0 -3
  292. package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  293. package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  294. package/src/global-account/react/components/Deposit/Deposit.tsx +0 -211
  295. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +0 -84
  296. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +0 -490
  297. package/src/global-account/react/components/ManageAccount/AppsContent.tsx +0 -79
  298. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +0 -83
  299. package/src/global-account/react/components/ManageAccount/Header.tsx +0 -230
  300. package/src/global-account/react/components/ManageAccount/HomeActions.tsx +0 -118
  301. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +0 -42
  302. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +0 -24
  303. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +0 -79
  304. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +0 -87
  305. package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +0 -31
  306. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +0 -182
  307. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +0 -41
  308. package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +0 -61
  309. package/src/global-account/react/components/Send/Send.tsx +0 -585
  310. package/src/global-account/react/components/icons/BellIcon.tsx +0 -15
  311. package/src/global-account/react/components/icons/ChevronDownIcon.tsx +0 -17
  312. package/src/global-account/react/components/icons/CopyIcon.tsx +0 -22
  313. package/src/global-account/react/components/icons/LinkIcon.tsx +0 -15
  314. package/src/global-account/react/components/icons/LockIcon.tsx +0 -15
  315. package/src/global-account/react/components/icons/WalletIcon.tsx +0 -21
  316. package/src/global-account/react/stores/useRecentAddressesStore.ts +0 -55
@@ -2,13 +2,12 @@
2
2
 
3
3
  import { useAnyspendOrderHistory } from "@b3dotfun/sdk/anyspend/react";
4
4
  import { Button, Skeleton, useAccountWallet } from "@b3dotfun/sdk/global-account/react";
5
- import ModalHeader from "@b3dotfun/sdk/global-account/react/components/ModalHeader/ModalHeader";
6
- import { RefreshCcw } from "lucide-react";
5
+ import { ArrowLeft, RefreshCcw } from "lucide-react";
7
6
  import { OrderHistoryItem } from "./OrderHistoryItem";
8
7
 
9
8
  interface OrderHistoryProps {
10
9
  mode: "modal" | "page";
11
- onBack?: () => void;
10
+ onBack: () => void;
12
11
  onSelectOrder?: (orderId: string) => void;
13
12
  }
14
13
 
@@ -18,7 +17,13 @@ export function OrderHistory({ mode, onBack, onSelectOrder }: OrderHistoryProps)
18
17
 
19
18
  return (
20
19
  <>
21
- <ModalHeader title="Order History" showCloseButton={false} handleBack={onBack} className="w-full">
20
+ <div className="mb-8 flex w-full items-center gap-3">
21
+ <Button onClick={onBack} variant="ghost" size="icon" className="hover:bg-as-surface-secondary">
22
+ <ArrowLeft className="h-5 w-5" />
23
+ </Button>
24
+ <div className="flex-1">
25
+ <h3 className="text-as-primary text-2xl font-bold">Order History</h3>
26
+ </div>
22
27
  <Button
23
28
  variant="ghost"
24
29
  size="icon"
@@ -29,20 +34,20 @@ export function OrderHistory({ mode, onBack, onSelectOrder }: OrderHistoryProps)
29
34
  >
30
35
  <RefreshCcw className="text-as-secondary hover:text-as-primary h-5 w-5 cursor-pointer transition-all hover:rotate-180" />
31
36
  </Button>
32
- </ModalHeader>
37
+ </div>
33
38
 
34
39
  {isLoadingOrderHistory ? (
35
- <div className="w-full space-y-3 px-5">
40
+ <div className="w-full space-y-3">
36
41
  {[1, 2, 3].map(i => (
37
42
  <Skeleton key={i} className="h-[180px] w-full rounded-2xl" />
38
43
  ))}
39
44
  </div>
40
45
  ) : !orderHistory?.length ? (
41
- <div className="bg-as-surface-secondary w-full rounded-2xl p-12 px-5 text-center">
46
+ <div className="bg-as-surface-secondary w-full rounded-2xl p-12 text-center">
42
47
  <p className="text-as-secondary text-sm">No order history found</p>
43
48
  </div>
44
49
  ) : (
45
- <div className="mb-12 w-full space-y-3 px-5 pt-5">
50
+ <div className="mb-12 w-full space-y-3">
46
51
  {[...orderHistory]
47
52
  .sort((a, b) => b.createdAt - a.createdAt)
48
53
  .map(order => (
@@ -53,8 +53,6 @@ export function OrderTokenAmount({
53
53
  }) {
54
54
  // Track previous token to detect changes
55
55
  const prevTokenRef = useRef<string>(token.address);
56
- // Track if initial balance has been set
57
- const initialBalanceSetRef = useRef(false);
58
56
 
59
57
  // Only get token balance when context is "from" (for setting max amount)
60
58
  const { rawBalance } = useTokenBalance({
@@ -62,23 +60,15 @@ export function OrderTokenAmount({
62
60
  address: context === "from" && walletAddress ? walletAddress : undefined,
63
61
  });
64
62
 
65
- // Reset balance ref when token address or chain changes
66
- useEffect(() => {
67
- initialBalanceSetRef.current = false;
68
- }, [token.address, token.chainId]);
69
-
70
63
  useEffect(() => {
71
64
  // Only handle "from" context
72
65
  if (context !== "from") return;
73
66
 
74
67
  // Check if token changed or if this is the initial load with balance
75
68
  const isTokenChanged = prevTokenRef.current !== token.address;
76
- const isInitialLoad = !initialBalanceSetRef.current && rawBalance;
77
69
 
78
- if ((isTokenChanged || isInitialLoad) && rawBalance) {
79
- console.log(
80
- `Setting max balance - Token: ${token.address}, Changed: ${isTokenChanged}, Initial: ${isInitialLoad}`,
81
- );
70
+ if (isTokenChanged && rawBalance) {
71
+ console.log(`Setting max balance - Token: ${token.address}, Changed: ${isTokenChanged}`);
82
72
 
83
73
  // Calculate max amount with gas reserve for native tokens
84
74
  let maxAmount: bigint;
@@ -97,7 +87,6 @@ export function OrderTokenAmount({
97
87
 
98
88
  // Update refs
99
89
  prevTokenRef.current = token.address;
100
- initialBalanceSetRef.current = true;
101
90
  }
102
91
  }, [token.address, token.chainId, token.decimals, chainId, context, onChangeInput, rawBalance]);
103
92
 
@@ -150,7 +150,7 @@ function PanelOnrampPaymentInner(props: PanelOnrampPaymentProps) {
150
150
  };
151
151
 
152
152
  return (
153
- <div className="mx-auto flex w-full max-w-[460px] flex-col gap-6 px-5 pt-5">
153
+ <div className="mx-auto flex w-full max-w-[460px] flex-col gap-6">
154
154
  {/* Order Summary Section */}
155
155
  <>
156
156
  <h2 className="-mb-3 text-lg font-semibold">Order summary</h2>
@@ -9,7 +9,7 @@ interface PointsDetailPanelProps {
9
9
 
10
10
  export function PointsDetailPanel({ pointsAmount = 0, onBack }: PointsDetailPanelProps) {
11
11
  return (
12
- <div className="mx-auto flex w-[460px] max-w-full flex-col items-center gap-4 px-5">
12
+ <div className="mx-auto flex w-[460px] max-w-full flex-col items-center gap-4">
13
13
  <div className="flex flex-col items-center gap-4 text-center">
14
14
  <h3 className="text-as-primary text-xl font-bold">Earn Points with Every Swap</h3>
15
15
  <p className="text-as-primary/70 text-balance text-sm leading-relaxed">
@@ -88,7 +88,7 @@ export function RecipientSelection({
88
88
  const canConfirm = recipientAddress && isAddressValid;
89
89
 
90
90
  return (
91
- <div className="recipient-selection mx-auto w-[460px] max-w-full px-5">
91
+ <div className="recipient-selection mx-auto w-[460px] max-w-full">
92
92
  <div className="flex flex-col gap-6">
93
93
  {/* Header */}
94
94
  <div className="flex justify-around">
@@ -4,6 +4,7 @@ export { AnySpendBondKit } from "./AnySpendBondKit";
4
4
  export { AnySpendBuySpin } from "./AnySpendBuySpin";
5
5
  export { AnySpendCustom } from "./AnySpendCustom";
6
6
  export { AnySpendCustomExactIn } from "./AnySpendCustomExactIn";
7
+ export { AnySpendDepositHype, HYPE_TOKEN_DETAILS } from "./AnyspendDepositHype";
7
8
  export * from "./AnySpendFingerprintWrapper";
8
9
  export { AnySpendNFT } from "./AnySpendNFT";
9
10
  export { AnyspendSignatureMint } from "./AnyspendSignatureMint";
@@ -19,12 +19,13 @@ import { useEffect, useMemo, useState } from "react";
19
19
  import { toast } from "sonner";
20
20
  import { parseUnits } from "viem";
21
21
  import { base, mainnet } from "viem/chains";
22
- import { useAccount } from "wagmi";
23
22
  import { components } from "../../types/api";
24
23
  import { CryptoPaymentMethodType } from "../components/common/CryptoPaymentMethod";
25
24
  import { FiatPaymentMethod } from "../components/common/FiatPaymentMethod";
26
25
  import { useAutoSelectCryptoPaymentMethod } from "./useAutoSelectCryptoPaymentMethod";
27
26
  import { useAutoSetActiveWalletFromWagmi } from "./useAutoSetActiveWalletFromWagmi";
27
+ import { useConnectedWalletDisplay } from "./useConnectedWalletDisplay";
28
+ import { useCryptoPaymentMethodState } from "./useCryptoPaymentMethodState";
28
29
 
29
30
  export enum PanelView {
30
31
  MAIN,
@@ -85,22 +86,28 @@ export function useAnyspendFlow({
85
86
  const defaultDstToken = B3_TOKEN; // Default destination token
86
87
  const [selectedSrcToken, setSelectedSrcToken] = useState<components["schemas"]["Token"]>(defaultSrcToken);
87
88
  const [selectedDstToken, setSelectedDstToken] = useState<components["schemas"]["Token"]>(defaultDstToken);
88
- const [srcAmount, setSrcAmount] = useState<string>(paymentType === "fiat" ? "5" : "0.1");
89
+ const [srcAmount, setSrcAmount] = useState<string>(paymentType === "fiat" ? "5" : "0");
89
90
  const [dstAmount, setDstAmount] = useState<string>("");
90
91
  const [isSrcInputDirty, setIsSrcInputDirty] = useState(true);
91
92
 
92
93
  // Derive destination chain ID from token or prop (cannot change)
93
94
  const selectedDstChainId = destinationTokenChainId || selectedDstToken.chainId;
94
95
 
95
- // Payment method state
96
- const [selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod] = useState<CryptoPaymentMethodType>(
97
- CryptoPaymentMethodType.NONE,
98
- );
96
+ // Payment method state with dual-state system (auto + explicit user selection)
97
+ const {
98
+ cryptoPaymentMethod,
99
+ setCryptoPaymentMethod,
100
+ selectedCryptoPaymentMethod,
101
+ setSelectedCryptoPaymentMethod,
102
+ effectiveCryptoPaymentMethod,
103
+ resetPaymentMethods,
104
+ } = useCryptoPaymentMethodState();
105
+
99
106
  const [selectedFiatPaymentMethod, setSelectedFiatPaymentMethod] = useState<FiatPaymentMethod>(FiatPaymentMethod.NONE);
100
107
 
101
108
  // Recipient state
102
109
  const { address: globalAddress } = useAccountWallet();
103
- const { address: wagmiAddress } = useAccount();
110
+ const { walletAddress } = useConnectedWalletDisplay(effectiveCryptoPaymentMethod);
104
111
  const [selectedRecipientAddress, setSelectedRecipientAddress] = useState<string | undefined>(recipientAddress);
105
112
  const recipientProfile = useProfile({ address: selectedRecipientAddress, fresh: true });
106
113
  const recipientName = recipientProfile.data?.name;
@@ -118,7 +125,7 @@ export function useAnyspendFlow({
118
125
  // Check token balance for crypto payments
119
126
  const { rawBalance, isLoading: isBalanceLoading } = useTokenBalance({
120
127
  token: selectedSrcToken,
121
- address: wagmiAddress,
128
+ address: walletAddress,
122
129
  });
123
130
 
124
131
  // Check if user has enough balance
@@ -135,8 +142,9 @@ export function useAnyspendFlow({
135
142
  // Auto-select crypto payment method based on available wallets and balance
136
143
  useAutoSelectCryptoPaymentMethod({
137
144
  paymentType,
145
+ cryptoPaymentMethod,
146
+ setCryptoPaymentMethod,
138
147
  selectedCryptoPaymentMethod,
139
- setSelectedCryptoPaymentMethod,
140
148
  hasEnoughBalance,
141
149
  isBalanceLoading,
142
150
  });
@@ -248,9 +256,9 @@ export function useAnyspendFlow({
248
256
  if (!disableUrlParamManagement) {
249
257
  const params = new URLSearchParams(searchParams.toString()); // Preserve existing params
250
258
  params.set("orderId", newOrderId);
251
- if (selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
252
- console.log("Setting cryptoPaymentMethod in URL:", selectedCryptoPaymentMethod);
253
- params.set("cryptoPaymentMethod", selectedCryptoPaymentMethod);
259
+ if (effectiveCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
260
+ console.log("Setting cryptoPaymentMethod in URL:", effectiveCryptoPaymentMethod);
261
+ params.set("cryptoPaymentMethod", effectiveCryptoPaymentMethod);
254
262
  } else {
255
263
  console.log("Payment method is NONE, not setting in URL");
256
264
  }
@@ -316,8 +324,12 @@ export function useAnyspendFlow({
316
324
  isSrcInputDirty,
317
325
  setIsSrcInputDirty,
318
326
  // Payment methods
327
+ cryptoPaymentMethod,
328
+ setCryptoPaymentMethod,
319
329
  selectedCryptoPaymentMethod,
320
330
  setSelectedCryptoPaymentMethod,
331
+ effectiveCryptoPaymentMethod,
332
+ resetPaymentMethods,
321
333
  selectedFiatPaymentMethod,
322
334
  setSelectedFiatPaymentMethod,
323
335
  // Recipient
@@ -5,10 +5,12 @@ import { useConnectedWalletDisplay } from "./useConnectedWalletDisplay";
5
5
  interface UseAutoSelectCryptoPaymentMethodParams {
6
6
  /** Current payment type (crypto or fiat) */
7
7
  paymentType?: "crypto" | "fiat";
8
- /** Currently selected payment method */
8
+ /** Auto-selected payment method based on balance (not used in hook logic, but part of state management) */
9
+ cryptoPaymentMethod: CryptoPaymentMethodType;
10
+ /** Function to update the auto-selected payment method */
11
+ setCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
12
+ /** User explicitly selected payment method (NONE means no explicit selection) */
9
13
  selectedCryptoPaymentMethod: CryptoPaymentMethodType;
10
- /** Function to update the selected payment method */
11
- setSelectedCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
12
14
  /** Whether user has enough balance to pay */
13
15
  hasEnoughBalance: boolean;
14
16
  /** Whether balance is still loading */
@@ -20,7 +22,7 @@ interface UseAutoSelectCryptoPaymentMethodParams {
20
22
  * based on available wallets and balance.
21
23
  *
22
24
  * Auto-selection logic:
23
- * - Only auto-selects when payment method is NONE (doesn't override user choices)
25
+ * - Only auto-selects when selectedCryptoPaymentMethod is NONE (user hasn't explicitly chosen)
24
26
  * - If EOA/Wagmi wallet connected + has balance → CONNECT_WALLET
25
27
  * - If EOA/Wagmi wallet connected + insufficient balance → TRANSFER_CRYPTO
26
28
  * - If only Global wallet available → GLOBAL_WALLET
@@ -28,8 +30,9 @@ interface UseAutoSelectCryptoPaymentMethodParams {
28
30
  */
29
31
  export function useAutoSelectCryptoPaymentMethod({
30
32
  paymentType = "crypto",
33
+ cryptoPaymentMethod: _cryptoPaymentMethod,
34
+ setCryptoPaymentMethod,
31
35
  selectedCryptoPaymentMethod,
32
- setSelectedCryptoPaymentMethod,
33
36
  hasEnoughBalance,
34
37
  isBalanceLoading,
35
38
  }: UseAutoSelectCryptoPaymentMethodParams) {
@@ -37,8 +40,13 @@ export function useAutoSelectCryptoPaymentMethod({
37
40
  const { suggestedPaymentMethod } = useConnectedWalletDisplay(selectedCryptoPaymentMethod);
38
41
 
39
42
  useEffect(() => {
40
- // Only auto-select when on crypto payment type and payment method is NONE
41
- if (paymentType !== "crypto" || selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
43
+ // Only auto-select when on crypto payment type
44
+ if (paymentType !== "crypto") {
45
+ return;
46
+ }
47
+
48
+ // Only auto-switch if user hasn't explicitly selected a payment method
49
+ if (selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE) {
42
50
  return;
43
51
  }
44
52
 
@@ -48,25 +56,25 @@ export function useAutoSelectCryptoPaymentMethod({
48
56
  // Otherwise, default to TRANSFER_CRYPTO if balance is insufficient
49
57
  if (!isBalanceLoading) {
50
58
  if (hasEnoughBalance && suggestedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
51
- setSelectedCryptoPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
59
+ setCryptoPaymentMethod(CryptoPaymentMethodType.CONNECT_WALLET);
52
60
  } else if (!hasEnoughBalance && suggestedPaymentMethod === CryptoPaymentMethodType.CONNECT_WALLET) {
53
61
  // Wallet connected but insufficient balance - suggest transfer
54
- setSelectedCryptoPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
62
+ setCryptoPaymentMethod(CryptoPaymentMethodType.TRANSFER_CRYPTO);
55
63
  } else {
56
64
  // Use suggested method (e.g., GLOBAL_WALLET)
57
- setSelectedCryptoPaymentMethod(suggestedPaymentMethod);
65
+ setCryptoPaymentMethod(suggestedPaymentMethod);
58
66
  }
59
67
  } else {
60
68
  // Balance still loading, use suggested method
61
- setSelectedCryptoPaymentMethod(suggestedPaymentMethod);
69
+ setCryptoPaymentMethod(suggestedPaymentMethod);
62
70
  }
63
71
  }
64
72
  }, [
65
73
  paymentType,
74
+ setCryptoPaymentMethod,
66
75
  selectedCryptoPaymentMethod,
67
76
  suggestedPaymentMethod,
68
77
  hasEnoughBalance,
69
78
  isBalanceLoading,
70
- setSelectedCryptoPaymentMethod,
71
79
  ]);
72
80
  }
@@ -0,0 +1,71 @@
1
+ import { useState } from "react";
2
+ import { CryptoPaymentMethodType } from "../components/common/CryptoPaymentMethod";
3
+
4
+ interface UseCryptoPaymentMethodStateResult {
5
+ /** Auto-selected payment method based on balance */
6
+ cryptoPaymentMethod: CryptoPaymentMethodType;
7
+ /** Function to update the auto-selected payment method */
8
+ setCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
9
+ /** User explicitly selected payment method (NONE means no explicit selection) */
10
+ selectedCryptoPaymentMethod: CryptoPaymentMethodType;
11
+ /** Function to update the user-selected payment method */
12
+ setSelectedCryptoPaymentMethod: (method: CryptoPaymentMethodType) => void;
13
+ /** Effective payment method (user selection takes priority over auto-selection) */
14
+ effectiveCryptoPaymentMethod: CryptoPaymentMethodType;
15
+ /** Reset both payment method states to NONE */
16
+ resetPaymentMethods: () => void;
17
+ }
18
+
19
+ /**
20
+ * Custom hook to manage crypto payment method state with dual-state system:
21
+ *
22
+ * - `cryptoPaymentMethod`: Auto-selected based on wallet availability and balance
23
+ * - `selectedCryptoPaymentMethod`: Explicitly selected by user
24
+ * - `effectiveCryptoPaymentMethod`: User selection takes priority over auto-selection
25
+ *
26
+ * This allows automatic payment method suggestions while respecting explicit user choices.
27
+ *
28
+ * @example
29
+ * ```tsx
30
+ * const {
31
+ * cryptoPaymentMethod,
32
+ * setCryptoPaymentMethod,
33
+ * selectedCryptoPaymentMethod,
34
+ * setSelectedCryptoPaymentMethod,
35
+ * effectiveCryptoPaymentMethod,
36
+ * resetPaymentMethods
37
+ * } = useCryptoPaymentMethodState();
38
+ *
39
+ * // Use effectiveCryptoPaymentMethod for display
40
+ * // Use setSelectedCryptoPaymentMethod when user explicitly selects
41
+ * // Call resetPaymentMethods when switching tabs or going back
42
+ * ```
43
+ */
44
+ export function useCryptoPaymentMethodState(): UseCryptoPaymentMethodStateResult {
45
+ // cryptoPaymentMethod: auto-selected based on balance
46
+ const [cryptoPaymentMethod, setCryptoPaymentMethod] = useState<CryptoPaymentMethodType>(CryptoPaymentMethodType.NONE);
47
+
48
+ // selectedCryptoPaymentMethod: explicitly selected by user (NONE means no explicit selection)
49
+ const [selectedCryptoPaymentMethod, setSelectedCryptoPaymentMethod] = useState<CryptoPaymentMethodType>(
50
+ CryptoPaymentMethodType.NONE,
51
+ );
52
+
53
+ // The effective payment method (user selection takes priority over auto-selection)
54
+ const effectiveCryptoPaymentMethod =
55
+ selectedCryptoPaymentMethod !== CryptoPaymentMethodType.NONE ? selectedCryptoPaymentMethod : cryptoPaymentMethod;
56
+
57
+ // Helper function to reset both states
58
+ const resetPaymentMethods = () => {
59
+ setCryptoPaymentMethod(CryptoPaymentMethodType.NONE);
60
+ setSelectedCryptoPaymentMethod(CryptoPaymentMethodType.NONE);
61
+ };
62
+
63
+ return {
64
+ cryptoPaymentMethod,
65
+ setCryptoPaymentMethod,
66
+ selectedCryptoPaymentMethod,
67
+ setSelectedCryptoPaymentMethod,
68
+ effectiveCryptoPaymentMethod,
69
+ resetPaymentMethods,
70
+ };
71
+ }
@@ -1,35 +1,16 @@
1
- import { NFT, SimpleHashNFTResponse } from "@b3dotfun/sdk/global-account/types/simplehash.types";
2
- import { useState } from "react";
1
+ import { SimpleHashNFTResponse } from "@b3dotfun/sdk/global-account/types/simplehash.types";
3
2
 
4
3
  interface AccountAssetsProps {
5
4
  nfts: SimpleHashNFTResponse;
6
5
  isLoading?: boolean;
7
6
  }
8
7
 
9
- interface GroupedNFTs {
10
- collection_id: string;
11
- collection_name: string;
12
- collection_image: string;
13
- nfts: NFT[];
14
- }
15
-
16
8
  export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
17
- // Initialize with all collections expanded
18
- const [expandedCollections, setExpandedCollections] = useState<Set<string>>(
19
- () => new Set(collections.map(c => c.collection_id)),
20
- );
21
-
22
9
  if (isLoading) {
23
10
  return (
24
- <div className="flex flex-col gap-3">
25
- {[...Array(2)].map((_, i) => (
26
- <div key={i} className="animate-pulse">
27
- <div className="bg-b3-react-muted mb-3 h-6 w-48 rounded" />
28
- <div className="flex gap-3">
29
- <div className="bg-b3-react-muted h-[98px] w-[98px] shrink-0 rounded-lg" />
30
- <div className="bg-b3-react-muted h-[98px] w-[98px] shrink-0 rounded-lg" />
31
- </div>
32
- </div>
11
+ <div className="grid animate-pulse grid-cols-2 gap-4">
12
+ {[...Array(4)].map((_, i) => (
13
+ <div key={i} className="bg-b3-react-muted aspect-square rounded-lg" />
33
14
  ))}
34
15
  </div>
35
16
  );
@@ -39,100 +20,29 @@ export function AccountAssets({ nfts, isLoading }: AccountAssetsProps) {
39
20
  return <div className="text-b3-react-muted-foreground py-8 text-center">No NFTs found</div>;
40
21
  }
41
22
 
42
- // Group NFTs by collection
43
- const groupedNFTs = nfts.nfts.reduce(
44
- (acc, nft) => {
45
- const collectionId = nft.collection?.collection_id || "unknown";
46
- if (!acc[collectionId]) {
47
- acc[collectionId] = {
48
- collection_id: collectionId,
49
- collection_name: nft.collection?.name || "Unknown Collection",
50
- collection_image: nft.collection?.image_url || nft.previews?.image_small_url || "",
51
- nfts: [],
52
- };
53
- }
54
- acc[collectionId].nfts.push(nft);
55
- return acc;
56
- },
57
- {} as Record<string, GroupedNFTs>,
58
- );
59
-
60
- const collections = Object.values(groupedNFTs);
61
-
62
- const toggleCollection = (collectionId: string) => {
63
- setExpandedCollections(prev => {
64
- const next = new Set(prev);
65
- if (next.has(collectionId)) {
66
- next.delete(collectionId);
67
- } else {
68
- next.add(collectionId);
69
- }
70
- return next;
71
- });
72
- };
73
-
74
23
  return (
75
- <div className="flex flex-col gap-3 px-4">
76
- {collections.map(collection => {
77
- const isExpanded = expandedCollections.has(collection.collection_id);
78
-
79
- return (
80
- <div key={collection.collection_id} className="flex flex-col gap-3">
81
- {/* Collection Header */}
82
- <button
83
- onClick={() => toggleCollection(collection.collection_id)}
84
- className="flex w-full items-center justify-between"
85
- >
86
- <div className="flex items-center gap-1">
87
- {collection.collection_image && (
88
- <img
89
- src={collection.collection_image}
90
- alt={collection.collection_name}
91
- className="h-5 w-5 shrink-0 rounded object-cover"
92
- />
93
- )}
94
- <p className="font-neue-montreal-medium text-[14px] text-[#3f3f46]">
95
- {collection.collection_name} ({collection.nfts.length})
96
- </p>
97
- </div>
98
- <svg
99
- className={`h-[18px] w-[18px] shrink-0 transition-transform ${isExpanded ? "rotate-180" : ""}`}
100
- viewBox="0 0 18 18"
101
- fill="none"
102
- xmlns="http://www.w3.org/2000/svg"
103
- >
104
- <path
105
- d="M4.5 6.75L9 11.25L13.5 6.75"
106
- stroke="#51525C"
107
- strokeWidth="1.5"
108
- strokeLinecap="round"
109
- strokeLinejoin="round"
110
- />
111
- </svg>
112
- </button>
113
-
114
- {/* NFT Grid */}
115
- {isExpanded && (
116
- <div className="flex gap-3 overflow-x-auto">
117
- {collection.nfts.map(nft => (
118
- <div key={nft.nft_id} className="relative h-[98px] w-[98px] shrink-0 overflow-hidden rounded-lg">
119
- <img
120
- src={
121
- nft.previews?.image_medium_url ||
122
- nft.extra_metadata?.image_original_url ||
123
- nft.collection?.image_url ||
124
- ""
125
- }
126
- alt={nft.name || "NFT"}
127
- className="h-full w-full object-cover"
128
- />
129
- </div>
130
- ))}
131
- </div>
132
- )}
24
+ <div className="grid grid-cols-2 gap-4">
25
+ {nfts.nfts.map(nft => (
26
+ <div key={nft.nft_id} className="group relative aspect-square overflow-hidden">
27
+ <div className="relative h-full w-full overflow-hidden rounded-xl">
28
+ <img
29
+ src={
30
+ nft.previews?.image_medium_url || nft.extra_metadata?.image_original_url || nft.collection?.image_url
31
+ }
32
+ alt={nft.name || "NFT"}
33
+ className="h-full w-full rounded-xl object-cover"
34
+ />
35
+ <div className="absolute inset-0 flex flex-col justify-end bg-gradient-to-t from-black from-35% via-black/70 to-transparent p-3 opacity-0 transition-all duration-200 ease-in-out group-hover:opacity-100">
36
+ <p className="font-neue-montreal-bold text-[16px] text-white drop-shadow-[0_1px_2px_rgba(0,0,0,1)]">
37
+ {nft.name || `#${nft.token_id}`}
38
+ </p>
39
+ <p className="font-neue-montreal-bold text-sm text-white/95 drop-shadow-[0_1px_2px_rgba(0,0,0,1)]">
40
+ {nft.collection?.name}
41
+ </p>
42
+ </div>
133
43
  </div>
134
- );
135
- })}
44
+ </div>
45
+ ))}
136
46
  </div>
137
47
  );
138
48
  }