@b3dotfun/sdk 0.0.64 → 0.0.65-test.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (256) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +73 -33
  2. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +1 -1
  3. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +1 -5
  4. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +1 -5
  5. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +1 -5
  6. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  7. package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  8. package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  9. package/dist/cjs/anyspend/react/components/common/OrderHistory.js +7 -3
  10. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  11. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  12. package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
  13. package/dist/cjs/anyspend/utils/index.d.ts +0 -1
  14. package/dist/cjs/anyspend/utils/index.js +0 -1
  15. package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
  16. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +139 -33
  17. package/dist/cjs/global-account/react/components/B3DynamicModal.js +29 -13
  18. package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  19. package/dist/cjs/global-account/react/components/Deposit/Deposit.js +65 -0
  20. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  21. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +113 -279
  22. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  23. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +331 -0
  24. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
  25. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +34 -0
  26. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  27. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  28. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +23 -0
  29. package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  30. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +120 -0
  31. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  32. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +43 -0
  33. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  34. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +16 -0
  35. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +24 -193
  36. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  37. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +15 -0
  38. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  39. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +44 -0
  40. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  41. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +50 -0
  42. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  43. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +8 -0
  44. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  45. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +38 -0
  46. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  47. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +22 -0
  48. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
  49. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +12 -0
  50. package/dist/cjs/global-account/react/components/Send/Send.d.ts +5 -0
  51. package/dist/cjs/global-account/react/components/Send/Send.js +187 -0
  52. package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +3 -0
  53. package/dist/cjs/global-account/react/components/icons/BellIcon.js +5 -0
  54. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  55. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +7 -0
  56. package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  57. package/dist/cjs/global-account/react/components/icons/CopyIcon.js +7 -0
  58. package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  59. package/dist/cjs/global-account/react/components/icons/LinkIcon.js +5 -0
  60. package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +3 -0
  61. package/dist/cjs/global-account/react/components/icons/LockIcon.js +5 -0
  62. package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  63. package/dist/cjs/global-account/react/components/icons/WalletIcon.js +7 -0
  64. package/dist/cjs/global-account/react/components/index.d.ts +4 -2
  65. package/dist/cjs/global-account/react/components/index.js +11 -4
  66. package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
  67. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  68. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
  69. package/dist/cjs/global-account/react/hooks/index.js +3 -1
  70. package/dist/cjs/global-account/react/hooks/useAuthentication.js +0 -11
  71. package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
  72. package/dist/cjs/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
  73. package/dist/cjs/global-account/react/hooks/useGlobalAccount.js +3 -0
  74. package/dist/cjs/global-account/react/stores/index.d.ts +1 -0
  75. package/dist/cjs/global-account/react/stores/index.js +3 -1
  76. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +34 -3
  77. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  78. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +36 -0
  79. package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +2 -0
  80. package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
  81. package/dist/cjs/shared/constants/chains/supported.d.ts +2 -2
  82. package/dist/cjs/shared/utils/ipfs.js +1 -1
  83. package/dist/esm/anyspend/react/components/AnySpend.js +74 -34
  84. package/dist/esm/anyspend/react/components/AnySpendCustom.js +1 -1
  85. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +2 -6
  86. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -6
  87. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +2 -6
  88. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  89. package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  90. package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  91. package/dist/esm/anyspend/react/components/common/OrderHistory.js +6 -5
  92. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  93. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  94. package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
  95. package/dist/esm/anyspend/utils/index.d.ts +0 -1
  96. package/dist/esm/anyspend/utils/index.js +0 -1
  97. package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
  98. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +140 -34
  99. package/dist/esm/global-account/react/components/B3DynamicModal.js +30 -14
  100. package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  101. package/dist/esm/global-account/react/components/Deposit/Deposit.js +59 -0
  102. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  103. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +113 -280
  104. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  105. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +325 -0
  106. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
  107. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +32 -0
  108. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  109. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  110. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +21 -0
  111. package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  112. package/dist/esm/global-account/react/components/ManageAccount/Header.js +81 -0
  113. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  114. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +41 -0
  115. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  116. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +10 -0
  117. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +26 -195
  118. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  119. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +13 -0
  120. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  121. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +42 -0
  122. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  123. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +45 -0
  124. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  125. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +6 -0
  126. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  127. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +36 -0
  128. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  129. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +20 -0
  130. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
  131. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +10 -0
  132. package/dist/esm/global-account/react/components/Send/Send.d.ts +5 -0
  133. package/dist/esm/global-account/react/components/Send/Send.js +181 -0
  134. package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +3 -0
  135. package/dist/esm/global-account/react/components/icons/BellIcon.js +3 -0
  136. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  137. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +4 -0
  138. package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  139. package/dist/esm/global-account/react/components/icons/CopyIcon.js +4 -0
  140. package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  141. package/dist/esm/global-account/react/components/icons/LinkIcon.js +3 -0
  142. package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +3 -0
  143. package/dist/esm/global-account/react/components/icons/LockIcon.js +3 -0
  144. package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  145. package/dist/esm/global-account/react/components/icons/WalletIcon.js +4 -0
  146. package/dist/esm/global-account/react/components/index.d.ts +4 -2
  147. package/dist/esm/global-account/react/components/index.js +7 -2
  148. package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
  149. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  150. package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
  151. package/dist/esm/global-account/react/hooks/index.js +1 -1
  152. package/dist/esm/global-account/react/hooks/useAuthentication.js +0 -11
  153. package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
  154. package/dist/esm/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
  155. package/dist/esm/global-account/react/hooks/useGlobalAccount.js +3 -0
  156. package/dist/esm/global-account/react/stores/index.d.ts +1 -0
  157. package/dist/esm/global-account/react/stores/index.js +1 -0
  158. package/dist/esm/global-account/react/stores/useModalStore.d.ts +34 -3
  159. package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  160. package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +33 -0
  161. package/dist/esm/global-account/react/utils/profileDisplay.d.ts +2 -0
  162. package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
  163. package/dist/esm/shared/constants/chains/supported.d.ts +2 -2
  164. package/dist/esm/shared/utils/ipfs.js +1 -1
  165. package/dist/styles/index.css +1 -1
  166. package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  167. package/dist/types/anyspend/utils/index.d.ts +0 -1
  168. package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  169. package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  170. package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  171. package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
  172. package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  173. package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  174. package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  175. package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  176. package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  177. package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  178. package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  179. package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  180. package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  181. package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  182. package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
  183. package/dist/types/global-account/react/components/Send/Send.d.ts +5 -0
  184. package/dist/types/global-account/react/components/icons/BellIcon.d.ts +3 -0
  185. package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  186. package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  187. package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  188. package/dist/types/global-account/react/components/icons/LockIcon.d.ts +3 -0
  189. package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  190. package/dist/types/global-account/react/components/index.d.ts +4 -2
  191. package/dist/types/global-account/react/hooks/index.d.ts +1 -1
  192. package/dist/types/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
  193. package/dist/types/global-account/react/stores/index.d.ts +1 -0
  194. package/dist/types/global-account/react/stores/useModalStore.d.ts +34 -3
  195. package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  196. package/dist/types/global-account/react/utils/profileDisplay.d.ts +2 -0
  197. package/dist/types/shared/constants/chains/supported.d.ts +2 -2
  198. package/package.json +1 -1
  199. package/src/anyspend/react/components/AnySpend.tsx +225 -167
  200. package/src/anyspend/react/components/AnySpendCustom.tsx +1 -1
  201. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +2 -6
  202. package/src/anyspend/react/components/AnyspendDepositHype.tsx +2 -6
  203. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +2 -7
  204. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
  205. package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
  206. package/src/anyspend/react/components/common/OrderHistory.tsx +8 -13
  207. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
  208. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
  209. package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
  210. package/src/anyspend/utils/index.ts +0 -1
  211. package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +115 -25
  212. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +303 -126
  213. package/src/global-account/react/components/B3DynamicModal.tsx +33 -15
  214. package/src/global-account/react/components/Deposit/Deposit.tsx +211 -0
  215. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +332 -433
  216. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +490 -0
  217. package/src/global-account/react/components/ManageAccount/AppsContent.tsx +79 -0
  218. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +2 -3
  219. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +83 -0
  220. package/src/global-account/react/components/ManageAccount/Header.tsx +230 -0
  221. package/src/global-account/react/components/ManageAccount/HomeActions.tsx +118 -0
  222. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +42 -0
  223. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +73 -589
  224. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +24 -0
  225. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +74 -0
  226. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +87 -0
  227. package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +31 -0
  228. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +74 -0
  229. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +41 -0
  230. package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +50 -0
  231. package/src/global-account/react/components/Send/Send.tsx +585 -0
  232. package/src/global-account/react/components/icons/BellIcon.tsx +15 -0
  233. package/src/global-account/react/components/icons/ChevronDownIcon.tsx +17 -0
  234. package/src/global-account/react/components/icons/CopyIcon.tsx +22 -0
  235. package/src/global-account/react/components/icons/LinkIcon.tsx +15 -0
  236. package/src/global-account/react/components/icons/LockIcon.tsx +15 -0
  237. package/src/global-account/react/components/icons/WalletIcon.tsx +21 -0
  238. package/src/global-account/react/components/index.ts +9 -2
  239. package/src/global-account/react/components/ui/Tabs.tsx +5 -13
  240. package/src/global-account/react/components/ui/dialog.tsx +32 -14
  241. package/src/global-account/react/hooks/index.ts +3 -0
  242. package/src/global-account/react/hooks/useAuthentication.ts +0 -12
  243. package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +1 -0
  244. package/src/global-account/react/hooks/useGlobalAccount.tsx +3 -1
  245. package/src/global-account/react/stores/index.ts +1 -0
  246. package/src/global-account/react/stores/useModalStore.ts +39 -2
  247. package/src/global-account/react/stores/useRecentAddressesStore.ts +55 -0
  248. package/src/global-account/react/utils/profileDisplay.ts +4 -2
  249. package/src/shared/utils/ipfs.ts +1 -1
  250. package/src/styles/index.css +6 -1
  251. package/dist/cjs/anyspend/utils/accountStore.d.ts +0 -7
  252. package/dist/cjs/anyspend/utils/accountStore.js +0 -8
  253. package/dist/esm/anyspend/utils/accountStore.d.ts +0 -7
  254. package/dist/esm/anyspend/utils/accountStore.js +0 -5
  255. package/dist/types/anyspend/utils/accountStore.d.ts +0 -7
  256. package/src/anyspend/utils/accountStore.ts +0 -12
@@ -0,0 +1,24 @@
1
+ import { useActiveWallet } from "thirdweb/react";
2
+ import { AccountAssets } from "..";
3
+ import { useAccountAssets } from "../../hooks";
4
+
5
+ const NFTContent = () => {
6
+ // Get active wallet state
7
+ const activeWallet = useActiveWallet();
8
+ const activeAccount = activeWallet?.getAccount();
9
+ const activeAddress = activeAccount?.address;
10
+
11
+ const { data: nfts, isLoading } = useAccountAssets(activeAddress);
12
+
13
+ return (
14
+ <div style={{ minHeight: "100px" }}>
15
+ {nfts?.nftResponse ? (
16
+ <AccountAssets nfts={nfts.nftResponse} isLoading={isLoading} />
17
+ ) : (
18
+ <div className="py-12 text-center text-gray-500">No NFTs found</div>
19
+ )}
20
+ </div>
21
+ );
22
+ };
23
+
24
+ export default NFTContent;
@@ -0,0 +1,74 @@
1
+ import { useAccountWallet, useB3, useModalStore, useProfile, useSimBalance } from "@b3dotfun/sdk/global-account/react";
2
+ import { formatUsername } from "@b3dotfun/sdk/shared/utils";
3
+ import { getIpfsUrl } from "@b3dotfun/sdk/shared/utils/ipfs";
4
+ import { formatDisplayNumber } from "@b3dotfun/sdk/shared/utils/number";
5
+ import { Pencil } from "lucide-react";
6
+ import { useMemo } from "react";
7
+ import { useActiveAccount } from "thirdweb/react";
8
+ import { useFirstEOA } from "../../hooks/useFirstEOA";
9
+
10
+ const ProfileSection = () => {
11
+ const account = useActiveAccount();
12
+ const { address: eoaAddress } = useFirstEOA();
13
+ const { address: smartWalletAddress } = useAccountWallet();
14
+ const { data: profile } = useProfile({
15
+ address: eoaAddress || account?.address,
16
+ fresh: true,
17
+ });
18
+ const { user } = useB3();
19
+ const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
20
+ const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
21
+ const navigateBack = useModalStore(state => state.navigateBack);
22
+
23
+ const { data: simBalance } = useSimBalance(smartWalletAddress);
24
+
25
+ // Calculate total balance in USD
26
+ const totalBalanceUsd = useMemo(() => {
27
+ if (!simBalance?.balances) return 0;
28
+ return simBalance.balances.reduce((sum, token) => sum + (token.value_usd || 0), 0);
29
+ }, [simBalance]);
30
+
31
+ const avatarUrl = user?.avatar ? getIpfsUrl(user?.avatar) : profile?.avatar;
32
+
33
+ const handleEditAvatar = () => {
34
+ setB3ModalOpen(true);
35
+ setB3ModalContentType({
36
+ type: "avatarEditor",
37
+ onSuccess: () => {
38
+ // navigate back on success
39
+ navigateBack();
40
+ },
41
+ });
42
+ };
43
+
44
+ return (
45
+ <div className="flex items-center justify-between px-5 py-6">
46
+ <div className="global-account-profile flex items-center gap-4">
47
+ <div className="global-account-profile-avatar relative">
48
+ {avatarUrl ? (
49
+ <img src={avatarUrl} alt="Profile" className="size-14 rounded-full" />
50
+ ) : (
51
+ <div className="bg-b3-primary-wash size-14 rounded-full" />
52
+ )}
53
+ <button
54
+ onClick={handleEditAvatar}
55
+ className="border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-6 items-center justify-center rounded-full border-4 bg-[#a0a0ab] transition-colors"
56
+ >
57
+ <Pencil size={10} className="text-b3-background" />
58
+ </button>
59
+ </div>
60
+ <div className="global-account-profile-info flex flex-col gap-1">
61
+ <h2 className="text-b3-grey font-neue-montreal-semibold flex h-[38px] items-center gap-1 text-xl">
62
+ <div className="text-b3-foreground-muted"> $</div>
63
+ <div className="text-[30px]">{formatDisplayNumber(totalBalanceUsd, { fractionDigits: 2 })}</div>
64
+ </h2>
65
+ <div className="font-neue-montreal-semibold text-base leading-none text-[#0B57C2]">
66
+ {profile?.displayName || formatUsername(profile?.name || "")}
67
+ </div>
68
+ </div>
69
+ </div>
70
+ </div>
71
+ );
72
+ };
73
+
74
+ export default ProfileSection;
@@ -0,0 +1,87 @@
1
+ import { useModalStore } from "@b3dotfun/sdk/global-account/react";
2
+ import { Chain } from "thirdweb";
3
+ import LinkIcon from "../icons/LinkIcon";
4
+ import ModalHeader from "../ModalHeader/ModalHeader";
5
+ import SettingsMenuItem from "./SettingsMenuItem";
6
+ import SettingsProfileCard from "./SettingsProfileCard";
7
+
8
+ const SettingsContent = ({
9
+ partnerId,
10
+ onLogout,
11
+ chain,
12
+ }: {
13
+ partnerId: string;
14
+ onLogout?: () => void;
15
+ chain: Chain;
16
+ }) => {
17
+ const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
18
+ const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
19
+
20
+ const handleNavigate = (type: "home" | "swap" | "linkAccount" | "avatarEditor") => {
21
+ if (type === "home") {
22
+ setB3ModalContentType({
23
+ type: "manageAccount",
24
+ chain,
25
+ partnerId,
26
+ onLogout,
27
+ activeTab: "home",
28
+ });
29
+ } else if (type === "swap") {
30
+ setB3ModalContentType({
31
+ type: "manageAccount",
32
+ chain,
33
+ partnerId,
34
+ onLogout,
35
+ activeTab: "tokens",
36
+ });
37
+ } else if (type === "linkAccount") {
38
+ setB3ModalContentType({
39
+ type: "linkAccount",
40
+ chain,
41
+ partnerId,
42
+ });
43
+ } else {
44
+ setB3ModalContentType({
45
+ type: "avatarEditor",
46
+ });
47
+ }
48
+ setB3ModalOpen(true);
49
+ };
50
+
51
+ return (
52
+ <div className="flex h-[470px] flex-col">
53
+ <ModalHeader title="Settings" />
54
+
55
+ {/* Profile Section */}
56
+ <div className="p-5">
57
+ <div className="flex items-center rounded-xl border border-[#e4e4e7] bg-[#f4f4f5] p-4">
58
+ <SettingsProfileCard />
59
+ </div>
60
+ </div>
61
+
62
+ {/* Menu Items */}
63
+ <div className="space-y-3 px-5">
64
+ <SettingsMenuItem
65
+ icon={<LinkIcon className="text-b3-grey-500" />}
66
+ title="Linked Accounts"
67
+ subtitle="3 connected accounts"
68
+ onClick={() => handleNavigate("linkAccount")}
69
+ />
70
+ {/* <SettingsMenuItem
71
+ icon={<BellIcon className="text-b3-grey-500" />}
72
+ title="Notifications"
73
+ subtitle="Manage your notifications"
74
+ onClick={() => handleNavigate("avatarEditor")}
75
+ />
76
+ <SettingsMenuItem
77
+ icon={<LockIcon className="text-b3-grey-500" />}
78
+ title="Permissions"
79
+ subtitle="Security & apps"
80
+ onClick={() => handleNavigate("avatarEditor")}
81
+ /> */}
82
+ </div>
83
+ </div>
84
+ );
85
+ };
86
+
87
+ export default SettingsContent;
@@ -0,0 +1,31 @@
1
+ import { ChevronRight } from "lucide-react";
2
+ import { ReactNode } from "react";
3
+
4
+ interface SettingsMenuItemProps {
5
+ icon: ReactNode;
6
+ title: string;
7
+ subtitle: string;
8
+ onClick?: () => void;
9
+ }
10
+
11
+ const SettingsMenuItem = ({ icon, title, subtitle, onClick }: SettingsMenuItemProps) => {
12
+ return (
13
+ <button
14
+ onClick={onClick}
15
+ className="flex w-full items-center gap-2 rounded-xl px-3 py-2 transition-colors hover:bg-[#f4f4f5]"
16
+ >
17
+ <div className="flex size-10 items-center justify-center rounded-full bg-[#f4f4f5]">{icon}</div>
18
+ <div className="flex flex-1 flex-col items-start gap-1 text-left">
19
+ <span className="font-neue-montreal-semibold text-[14px] leading-none tracking-[-0.28px] text-[#3f3f46]">
20
+ {title}
21
+ </span>
22
+ <span className="font-neue-montreal-medium text-[14px] leading-none tracking-[-0.28px] text-[#70707b]">
23
+ {subtitle}
24
+ </span>
25
+ </div>
26
+ <ChevronRight size={20} className="text-[#51525c]" />
27
+ </button>
28
+ );
29
+ };
30
+
31
+ export default SettingsMenuItem;
@@ -0,0 +1,74 @@
1
+ import { useB3, useModalStore, useProfile } from "@b3dotfun/sdk/global-account/react";
2
+ import { formatUsername } from "@b3dotfun/sdk/shared/utils";
3
+ import { getIpfsUrl } from "@b3dotfun/sdk/shared/utils/ipfs";
4
+ import { Pencil } from "lucide-react";
5
+ import { useActiveAccount } from "thirdweb/react";
6
+ import { useFirstEOA } from "../../hooks/useFirstEOA";
7
+
8
+ const SettingsProfileCard = () => {
9
+ const account = useActiveAccount();
10
+ const { address: eoaAddress } = useFirstEOA();
11
+ const { data: profile } = useProfile({
12
+ address: eoaAddress || account?.address,
13
+ fresh: true,
14
+ });
15
+ const { user } = useB3();
16
+ const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
17
+ const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
18
+ const navigateBack = useModalStore(state => state.navigateBack);
19
+
20
+ const avatarUrl = user?.avatar ? getIpfsUrl(user?.avatar) : profile?.avatar;
21
+
22
+ const handleEditAvatar = () => {
23
+ setB3ModalOpen(true);
24
+ setB3ModalContentType({
25
+ type: "avatarEditor",
26
+ onSuccess: () => {
27
+ // navigate back on success
28
+ navigateBack();
29
+ },
30
+ });
31
+ };
32
+
33
+ const handleEditUsername = () => {
34
+ // TODO: Implement edit username functionality
35
+ console.log("Edit username clicked");
36
+ };
37
+
38
+ return (
39
+ <div className="flex w-full items-center gap-3">
40
+ {/* Avatar with edit badge */}
41
+ <div className="relative shrink-0">
42
+ {avatarUrl ? (
43
+ <img src={avatarUrl} alt="Profile" className="border-black/8 size-14 rounded-full border object-cover" />
44
+ ) : (
45
+ <div className="bg-b3-primary-wash border-black/8 size-14 rounded-full border" />
46
+ )}
47
+ <button
48
+ onClick={handleEditAvatar}
49
+ className="absolute -bottom-0.5 -right-0.5 flex size-[18px] items-center justify-center rounded-full border-[1.5px] border-white bg-[#a0a0ab] transition-colors hover:bg-[#a0a0ab]/80"
50
+ aria-label="Edit avatar"
51
+ >
52
+ <Pencil size={10} className="text-white" strokeWidth={2.5} />
53
+ </button>
54
+ </div>
55
+
56
+ {/* Username and edit link */}
57
+ <div className="flex shrink-0 flex-col gap-1">
58
+ <div className="flex items-center gap-1">
59
+ <p className="font-neue-montreal-semibold text-lg leading-none text-[#0B57C2]">
60
+ {profile?.displayName || formatUsername(profile?.name || "")}
61
+ </p>
62
+ </div>
63
+ <button
64
+ onClick={handleEditUsername}
65
+ className="flex items-center justify-center gap-1 text-left transition-opacity hover:opacity-80"
66
+ >
67
+ <p className="font-inter text-sm font-semibold leading-5 text-[#51525C]">Edit Username</p>
68
+ </button>
69
+ </div>
70
+ </div>
71
+ );
72
+ };
73
+
74
+ export default SettingsProfileCard;
@@ -0,0 +1,41 @@
1
+ import { useB3BalanceFromAddresses, useNativeBalance } from "@b3dotfun/sdk/global-account/react";
2
+ import { useActiveWallet } from "thirdweb/react";
3
+ import { B3TokenIcon, EthereumTokenIcon } from "../TokenIcon";
4
+ import { TokenBalanceRow } from "./TokenBalanceRow";
5
+
6
+ const TokenContent = () => {
7
+ // Get active wallet state
8
+ const activeWallet = useActiveWallet();
9
+ //const globalAccountWallet = useGlobalWalletState(state => state.globalAccountWallet);
10
+ const activeAccount = activeWallet?.getAccount();
11
+ const activeAddress = activeAccount?.address;
12
+
13
+ // Balance data fetching - use active wallet address
14
+ const { data: activeNativeBalance } = useNativeBalance(activeAddress);
15
+ const { data: activeB3Balance } = useB3BalanceFromAddresses(activeAddress);
16
+
17
+ if (!activeAddress) {
18
+ return <div className="col-span-3 py-12 text-center text-gray-500">No tokens found</div>;
19
+ }
20
+
21
+ return (
22
+ <div className="flex flex-col gap-3">
23
+ <TokenBalanceRow
24
+ icon={<B3TokenIcon className="size-10" />}
25
+ name="B3"
26
+ balance={`${activeB3Balance?.formattedTotal || "0.00"} B3`}
27
+ usdValue={activeB3Balance?.balanceUsdFormatted || "0.00"}
28
+ priceChange={activeB3Balance?.priceChange24h}
29
+ />
30
+ <TokenBalanceRow
31
+ icon={<EthereumTokenIcon className="size-10" />}
32
+ name="Ethereum"
33
+ balance={`${activeNativeBalance?.formattedTotal || "0.00"} ETH`}
34
+ usdValue={activeNativeBalance?.formattedTotalUsd || "0.00"}
35
+ priceChange={activeNativeBalance?.priceChange24h}
36
+ />
37
+ </div>
38
+ );
39
+ };
40
+
41
+ export default TokenContent;
@@ -0,0 +1,50 @@
1
+ import { cn } from "@b3dotfun/sdk/shared/utils";
2
+ import { ChevronDown, X } from "lucide-react";
3
+ import { useModalStore } from "../../stores";
4
+
5
+ const ModalHeader = ({
6
+ handleBack,
7
+ handleClose,
8
+ title,
9
+ children,
10
+ showCloseButton = true,
11
+ className,
12
+ showBackWord = false,
13
+ }: {
14
+ handleBack?: () => void;
15
+ handleClose?: () => void;
16
+ title: string;
17
+ children?: React.ReactNode;
18
+ showCloseButton?: boolean;
19
+ className?: string;
20
+ showBackWord?: boolean;
21
+ }) => {
22
+ const navigateBack = useModalStore(state => state.navigateBack);
23
+ const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
24
+
25
+ return (
26
+ <div
27
+ className={cn("flex h-16 items-center justify-between border-b border-[#e4e4e7] bg-white px-5 py-3", className)}
28
+ >
29
+ <button
30
+ onClick={handleBack || navigateBack}
31
+ className="flex h-6 w-6 items-center justify-center transition-opacity hover:opacity-70"
32
+ >
33
+ <ChevronDown className="h-6 w-6 rotate-90 text-[#51525c]" />
34
+ {showBackWord && <span className="text-sm font-medium">Back</span>}
35
+ </button>
36
+ <p className="font-inter text-lg font-semibold leading-7 text-[#18181b]">{title}</p>
37
+ {showCloseButton && (
38
+ <button
39
+ onClick={handleClose || (() => setB3ModalOpen(false))}
40
+ className="flex h-6 w-6 items-center justify-center transition-opacity hover:opacity-70"
41
+ >
42
+ <X className="h-6 w-6 text-[#51525c]" />
43
+ </button>
44
+ )}
45
+ {children}
46
+ </div>
47
+ );
48
+ };
49
+
50
+ export default ModalHeader;