@b3dotfun/sdk 0.0.73-test.3 → 0.0.74-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 (461) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +75 -50
  2. package/dist/cjs/anyspend/react/components/AnySpendBuySpin.js +9 -10
  3. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +41 -41
  4. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -0
  5. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +17 -9
  6. package/dist/cjs/anyspend/react/components/AnySpendStakeB3.js +7 -8
  7. package/dist/cjs/anyspend/react/components/AnySpendStakeB3ExactIn.js +7 -8
  8. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  9. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +2 -2
  10. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
  11. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +18 -14
  12. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  13. package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  14. package/dist/cjs/anyspend/react/components/common/InsufficientDepositPayment.js +6 -6
  15. package/dist/cjs/anyspend/react/components/common/OrderDetails.js +35 -35
  16. package/dist/cjs/anyspend/react/components/common/OrderDetailsCollapsible.js +1 -2
  17. package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  18. package/dist/cjs/anyspend/react/components/common/OrderHistory.js +7 -3
  19. package/dist/cjs/anyspend/react/components/common/OrderHistoryItem.js +1 -1
  20. package/dist/cjs/anyspend/react/components/common/PanelOnramp.js +4 -4
  21. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +8 -9
  22. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  23. package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
  24. package/dist/cjs/anyspend/react/components/common/TransferCryptoDetails.js +2 -3
  25. package/dist/cjs/anyspend/react/components/webview/WebviewOnrampOrderStatus.js +1 -2
  26. package/dist/cjs/anyspend/react/components/webview/WebviewOnrampPayment.js +12 -12
  27. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +4 -5
  28. package/dist/cjs/anyspend/react/hooks/useConnectedWalletDisplay.js +3 -2
  29. package/dist/cjs/anyspend/react/hooks/usePhantomTransfer.js +17 -17
  30. package/dist/cjs/anyspend/react/utils/toast.d.ts +6 -0
  31. package/dist/cjs/anyspend/react/utils/toast.js +9 -0
  32. package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
  33. package/dist/cjs/global-account/react/components/AvatarCreator/AvatarCreator.js +2 -3
  34. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +1 -0
  35. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +275 -39
  36. package/dist/cjs/global-account/react/components/B3DynamicModal.js +40 -13
  37. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  38. package/dist/cjs/global-account/react/components/B3Provider/B3Provider.js +19 -3
  39. package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  40. package/dist/cjs/global-account/react/components/Deposit/Deposit.js +61 -0
  41. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
  42. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +34 -0
  43. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  44. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +104 -283
  45. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  46. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +320 -0
  47. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.d.ts +16 -0
  48. package/dist/cjs/global-account/react/components/LinkAccount/LinkedAccountItem.js +44 -0
  49. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  50. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +23 -0
  51. package/dist/cjs/global-account/react/components/ManageAccount/ContentTokens.js +1 -2
  52. package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  53. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +120 -0
  54. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  55. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +43 -0
  56. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  57. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +16 -0
  58. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +16 -194
  59. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  60. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +15 -0
  61. package/dist/cjs/global-account/react/components/ManageAccount/NotificationChannel.d.ts +16 -0
  62. package/dist/cjs/global-account/react/components/ManageAccount/NotificationChannel.js +13 -0
  63. package/dist/cjs/global-account/react/components/ManageAccount/NotificationsContent.d.ts +8 -0
  64. package/dist/cjs/global-account/react/components/ManageAccount/NotificationsContent.js +152 -0
  65. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  66. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +47 -0
  67. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  68. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +60 -0
  69. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  70. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +8 -0
  71. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  72. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +116 -0
  73. package/dist/cjs/global-account/react/components/ManageAccount/TokenBalanceRow.d.ts +3 -3
  74. package/dist/cjs/global-account/react/components/ManageAccount/TokenBalanceRow.js +2 -2
  75. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  76. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +44 -0
  77. package/dist/cjs/global-account/react/components/ManageAccount/channels/DiscordChannel.d.ts +11 -0
  78. package/dist/cjs/global-account/react/components/ManageAccount/channels/DiscordChannel.js +48 -0
  79. package/dist/cjs/global-account/react/components/ManageAccount/channels/EmailChannel.d.ts +11 -0
  80. package/dist/cjs/global-account/react/components/ManageAccount/channels/EmailChannel.js +68 -0
  81. package/dist/cjs/global-account/react/components/ManageAccount/channels/PhoneChannel.d.ts +14 -0
  82. package/dist/cjs/global-account/react/components/ManageAccount/channels/PhoneChannel.js +79 -0
  83. package/dist/cjs/global-account/react/components/ManageAccount/channels/TelegramChannel.d.ts +11 -0
  84. package/dist/cjs/global-account/react/components/ManageAccount/channels/TelegramChannel.js +79 -0
  85. package/dist/cjs/global-account/react/components/ManageAccount/channels/index.d.ts +4 -0
  86. package/dist/cjs/global-account/react/components/ManageAccount/channels/index.js +11 -0
  87. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +11 -0
  88. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +12 -0
  89. package/dist/cjs/global-account/react/components/Send/Send.d.ts +5 -0
  90. package/dist/cjs/global-account/react/components/Send/Send.js +195 -0
  91. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +5 -4
  92. package/dist/cjs/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -1
  93. package/dist/cjs/global-account/react/components/Toast/ToastComponents.d.ts +15 -0
  94. package/dist/cjs/global-account/react/components/Toast/ToastComponents.js +54 -0
  95. package/dist/cjs/global-account/react/components/Toast/ToastContext.d.ts +19 -0
  96. package/dist/cjs/global-account/react/components/Toast/ToastContext.js +59 -0
  97. package/dist/cjs/global-account/react/components/Toast/index.d.ts +4 -0
  98. package/dist/cjs/global-account/react/components/Toast/index.js +12 -0
  99. package/dist/cjs/global-account/react/components/Toast/toastApi.d.ts +21 -0
  100. package/dist/cjs/global-account/react/components/Toast/toastApi.js +93 -0
  101. package/dist/cjs/global-account/react/components/WalletImage/WalletImage.d.ts +4 -0
  102. package/dist/cjs/global-account/react/components/WalletImage/WalletImage.js +13 -0
  103. package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +3 -0
  104. package/dist/cjs/global-account/react/components/icons/BellIcon.js +5 -0
  105. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  106. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +7 -0
  107. package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  108. package/dist/cjs/global-account/react/components/icons/CopyIcon.js +7 -0
  109. package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  110. package/dist/cjs/global-account/react/components/icons/LinkIcon.js +5 -0
  111. package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +3 -0
  112. package/dist/cjs/global-account/react/components/icons/LockIcon.js +5 -0
  113. package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  114. package/dist/cjs/global-account/react/components/icons/WalletIcon.js +7 -0
  115. package/dist/cjs/global-account/react/components/index.d.ts +10 -4
  116. package/dist/cjs/global-account/react/components/index.js +29 -9
  117. package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
  118. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  119. package/dist/cjs/global-account/react/components/ui/drawer.js +1 -1
  120. package/dist/cjs/global-account/react/hooks/index.d.ts +3 -2
  121. package/dist/cjs/global-account/react/hooks/index.js +7 -3
  122. package/dist/cjs/global-account/react/hooks/useAccountWallet.d.ts +1 -0
  123. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +18 -0
  124. package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
  125. package/dist/cjs/global-account/react/hooks/useChainSwitchWithAction.js +11 -11
  126. package/dist/cjs/global-account/react/hooks/useNativeBalance.js +2 -2
  127. package/dist/cjs/global-account/react/hooks/useNotifications.d.ts +48 -0
  128. package/dist/cjs/global-account/react/hooks/useNotifications.js +189 -0
  129. package/dist/cjs/global-account/react/hooks/useSimBalance.js +3 -3
  130. package/dist/cjs/global-account/react/hooks/useTokenBalanceDirect.d.ts +1 -0
  131. package/dist/cjs/global-account/react/hooks/useTokenBalanceDirect.js +1 -0
  132. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +17 -17
  133. package/dist/cjs/global-account/react/stores/index.d.ts +1 -0
  134. package/dist/cjs/global-account/react/stores/index.js +3 -1
  135. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +47 -6
  136. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  137. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +36 -0
  138. package/dist/cjs/global-account/react/utils/index.d.ts +4 -0
  139. package/dist/cjs/global-account/react/utils/index.js +20 -0
  140. package/dist/cjs/global-account/react/utils/notificationsAPI.d.ts +80 -0
  141. package/dist/cjs/global-account/react/utils/notificationsAPI.js +257 -0
  142. package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +3 -0
  143. package/dist/cjs/global-account/react/utils/profileDisplay.js +8 -4
  144. package/dist/cjs/global-account/react/utils/toast.d.ts +6 -0
  145. package/dist/cjs/global-account/react/utils/toast.js +9 -0
  146. package/dist/cjs/shared/constants/chains/supported.d.ts +3 -2
  147. package/dist/cjs/shared/constants/chains/supported.js +4 -0
  148. package/dist/cjs/shared/utils/ipfs.js +10 -3
  149. package/dist/esm/anyspend/react/components/AnySpend.js +67 -42
  150. package/dist/esm/anyspend/react/components/AnySpendBuySpin.js +1 -2
  151. package/dist/esm/anyspend/react/components/AnySpendCustom.js +10 -10
  152. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -0
  153. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +12 -4
  154. package/dist/esm/anyspend/react/components/AnySpendStakeB3.js +1 -2
  155. package/dist/esm/anyspend/react/components/AnySpendStakeB3ExactIn.js +1 -2
  156. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  157. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -2
  158. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
  159. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +9 -5
  160. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  161. package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  162. package/dist/esm/anyspend/react/components/common/InsufficientDepositPayment.js +1 -1
  163. package/dist/esm/anyspend/react/components/common/OrderDetails.js +2 -2
  164. package/dist/esm/anyspend/react/components/common/OrderDetailsCollapsible.js +1 -2
  165. package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  166. package/dist/esm/anyspend/react/components/common/OrderHistory.js +6 -5
  167. package/dist/esm/anyspend/react/components/common/OrderHistoryItem.js +2 -2
  168. package/dist/esm/anyspend/react/components/common/PanelOnramp.js +4 -4
  169. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +2 -3
  170. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  171. package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
  172. package/dist/esm/anyspend/react/components/common/TransferCryptoDetails.js +1 -2
  173. package/dist/esm/anyspend/react/components/webview/WebviewOnrampOrderStatus.js +1 -2
  174. package/dist/esm/anyspend/react/components/webview/WebviewOnrampPayment.js +1 -1
  175. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +1 -2
  176. package/dist/esm/anyspend/react/hooks/useConnectedWalletDisplay.js +3 -2
  177. package/dist/esm/anyspend/react/hooks/usePhantomTransfer.js +1 -1
  178. package/dist/esm/anyspend/react/utils/toast.d.ts +6 -0
  179. package/dist/esm/anyspend/react/utils/toast.js +5 -0
  180. package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
  181. package/dist/esm/global-account/react/components/AvatarCreator/AvatarCreator.js +1 -2
  182. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +1 -0
  183. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +276 -40
  184. package/dist/esm/global-account/react/components/B3DynamicModal.js +37 -13
  185. package/dist/esm/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  186. package/dist/esm/global-account/react/components/B3Provider/B3Provider.js +19 -3
  187. package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  188. package/dist/esm/global-account/react/components/Deposit/Deposit.js +55 -0
  189. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
  190. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +31 -0
  191. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  192. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +103 -283
  193. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  194. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +314 -0
  195. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.d.ts +16 -0
  196. package/dist/esm/global-account/react/components/LinkAccount/LinkedAccountItem.js +42 -0
  197. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  198. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +21 -0
  199. package/dist/esm/global-account/react/components/ManageAccount/ContentTokens.js +1 -2
  200. package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  201. package/dist/esm/global-account/react/components/ManageAccount/Header.js +81 -0
  202. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  203. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +41 -0
  204. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  205. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +10 -0
  206. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +18 -196
  207. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  208. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +13 -0
  209. package/dist/esm/global-account/react/components/ManageAccount/NotificationChannel.d.ts +16 -0
  210. package/dist/esm/global-account/react/components/ManageAccount/NotificationChannel.js +9 -0
  211. package/dist/esm/global-account/react/components/ManageAccount/NotificationsContent.d.ts +8 -0
  212. package/dist/esm/global-account/react/components/ManageAccount/NotificationsContent.js +147 -0
  213. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  214. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +45 -0
  215. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  216. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +55 -0
  217. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  218. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +6 -0
  219. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  220. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +111 -0
  221. package/dist/esm/global-account/react/components/ManageAccount/TokenBalanceRow.d.ts +3 -3
  222. package/dist/esm/global-account/react/components/ManageAccount/TokenBalanceRow.js +3 -3
  223. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  224. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +42 -0
  225. package/dist/esm/global-account/react/components/ManageAccount/channels/DiscordChannel.d.ts +11 -0
  226. package/dist/esm/global-account/react/components/ManageAccount/channels/DiscordChannel.js +44 -0
  227. package/dist/esm/global-account/react/components/ManageAccount/channels/EmailChannel.d.ts +11 -0
  228. package/dist/esm/global-account/react/components/ManageAccount/channels/EmailChannel.js +64 -0
  229. package/dist/esm/global-account/react/components/ManageAccount/channels/PhoneChannel.d.ts +14 -0
  230. package/dist/esm/global-account/react/components/ManageAccount/channels/PhoneChannel.js +75 -0
  231. package/dist/esm/global-account/react/components/ManageAccount/channels/TelegramChannel.d.ts +11 -0
  232. package/dist/esm/global-account/react/components/ManageAccount/channels/TelegramChannel.js +75 -0
  233. package/dist/esm/global-account/react/components/ManageAccount/channels/index.d.ts +4 -0
  234. package/dist/esm/global-account/react/components/ManageAccount/channels/index.js +4 -0
  235. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +11 -0
  236. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +10 -0
  237. package/dist/esm/global-account/react/components/Send/Send.d.ts +5 -0
  238. package/dist/esm/global-account/react/components/Send/Send.js +189 -0
  239. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +7 -6
  240. package/dist/esm/global-account/react/components/SignInWithB3/SignInWithB3Flow.js +1 -1
  241. package/dist/esm/global-account/react/components/Toast/ToastComponents.d.ts +15 -0
  242. package/dist/esm/global-account/react/components/Toast/ToastComponents.js +50 -0
  243. package/dist/esm/global-account/react/components/Toast/ToastContext.d.ts +19 -0
  244. package/dist/esm/global-account/react/components/Toast/ToastContext.js +55 -0
  245. package/dist/esm/global-account/react/components/Toast/index.d.ts +4 -0
  246. package/dist/esm/global-account/react/components/Toast/index.js +3 -0
  247. package/dist/esm/global-account/react/components/Toast/toastApi.d.ts +21 -0
  248. package/dist/esm/global-account/react/components/Toast/toastApi.js +89 -0
  249. package/dist/esm/global-account/react/components/WalletImage/WalletImage.d.ts +4 -0
  250. package/dist/esm/global-account/react/components/WalletImage/WalletImage.js +11 -0
  251. package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +3 -0
  252. package/dist/esm/global-account/react/components/icons/BellIcon.js +3 -0
  253. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  254. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +4 -0
  255. package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  256. package/dist/esm/global-account/react/components/icons/CopyIcon.js +4 -0
  257. package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  258. package/dist/esm/global-account/react/components/icons/LinkIcon.js +3 -0
  259. package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +3 -0
  260. package/dist/esm/global-account/react/components/icons/LockIcon.js +3 -0
  261. package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  262. package/dist/esm/global-account/react/components/icons/WalletIcon.js +4 -0
  263. package/dist/esm/global-account/react/components/index.d.ts +10 -4
  264. package/dist/esm/global-account/react/components/index.js +14 -5
  265. package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
  266. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  267. package/dist/esm/global-account/react/components/ui/drawer.js +1 -1
  268. package/dist/esm/global-account/react/hooks/index.d.ts +3 -2
  269. package/dist/esm/global-account/react/hooks/index.js +3 -2
  270. package/dist/esm/global-account/react/hooks/useAccountWallet.d.ts +1 -0
  271. package/dist/esm/global-account/react/hooks/useAccountWallet.js +17 -0
  272. package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
  273. package/dist/esm/global-account/react/hooks/useChainSwitchWithAction.js +2 -2
  274. package/dist/esm/global-account/react/hooks/useNativeBalance.js +1 -1
  275. package/dist/esm/global-account/react/hooks/useNotifications.d.ts +48 -0
  276. package/dist/esm/global-account/react/hooks/useNotifications.js +186 -0
  277. package/dist/esm/global-account/react/hooks/useSimBalance.js +3 -3
  278. package/dist/esm/global-account/react/hooks/useTokenBalanceDirect.d.ts +1 -0
  279. package/dist/esm/global-account/react/hooks/useTokenBalanceDirect.js +1 -0
  280. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +2 -2
  281. package/dist/esm/global-account/react/stores/index.d.ts +1 -0
  282. package/dist/esm/global-account/react/stores/index.js +1 -0
  283. package/dist/esm/global-account/react/stores/useModalStore.d.ts +47 -6
  284. package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  285. package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +33 -0
  286. package/dist/esm/global-account/react/utils/index.d.ts +4 -0
  287. package/dist/esm/global-account/react/utils/index.js +4 -0
  288. package/dist/esm/global-account/react/utils/notificationsAPI.d.ts +80 -0
  289. package/dist/esm/global-account/react/utils/notificationsAPI.js +254 -0
  290. package/dist/esm/global-account/react/utils/profileDisplay.d.ts +3 -0
  291. package/dist/esm/global-account/react/utils/profileDisplay.js +8 -4
  292. package/dist/esm/global-account/react/utils/toast.d.ts +6 -0
  293. package/dist/esm/global-account/react/utils/toast.js +5 -0
  294. package/dist/esm/shared/constants/chains/supported.d.ts +3 -2
  295. package/dist/esm/shared/constants/chains/supported.js +3 -0
  296. package/dist/esm/shared/utils/ipfs.js +10 -3
  297. package/dist/styles/index.css +1 -1
  298. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +1 -0
  299. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +2 -1
  300. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +0 -6
  301. package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  302. package/dist/types/anyspend/react/utils/toast.d.ts +6 -0
  303. package/dist/types/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +1 -0
  304. package/dist/types/global-account/react/components/B3Provider/B3Provider.d.ts +1 -1
  305. package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +1 -0
  306. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +39 -0
  307. package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
  308. package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
  309. package/dist/types/global-account/react/components/LinkAccount/LinkedAccountItem.d.ts +16 -0
  310. package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
  311. package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +3 -0
  312. package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
  313. package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
  314. package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
  315. package/dist/types/global-account/react/components/ManageAccount/NotificationChannel.d.ts +16 -0
  316. package/dist/types/global-account/react/components/ManageAccount/NotificationsContent.d.ts +8 -0
  317. package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
  318. package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
  319. package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
  320. package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
  321. package/dist/types/global-account/react/components/ManageAccount/TokenBalanceRow.d.ts +3 -3
  322. package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
  323. package/dist/types/global-account/react/components/ManageAccount/channels/DiscordChannel.d.ts +11 -0
  324. package/dist/types/global-account/react/components/ManageAccount/channels/EmailChannel.d.ts +11 -0
  325. package/dist/types/global-account/react/components/ManageAccount/channels/PhoneChannel.d.ts +14 -0
  326. package/dist/types/global-account/react/components/ManageAccount/channels/TelegramChannel.d.ts +11 -0
  327. package/dist/types/global-account/react/components/ManageAccount/channels/index.d.ts +4 -0
  328. package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +11 -0
  329. package/dist/types/global-account/react/components/Send/Send.d.ts +5 -0
  330. package/dist/types/global-account/react/components/Toast/ToastComponents.d.ts +15 -0
  331. package/dist/types/global-account/react/components/Toast/ToastContext.d.ts +19 -0
  332. package/dist/types/global-account/react/components/Toast/index.d.ts +4 -0
  333. package/dist/types/global-account/react/components/Toast/toastApi.d.ts +21 -0
  334. package/dist/types/global-account/react/components/WalletImage/WalletImage.d.ts +4 -0
  335. package/dist/types/global-account/react/components/icons/BellIcon.d.ts +3 -0
  336. package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
  337. package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +2 -0
  338. package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +3 -0
  339. package/dist/types/global-account/react/components/icons/LockIcon.d.ts +3 -0
  340. package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +2 -0
  341. package/dist/types/global-account/react/components/index.d.ts +10 -4
  342. package/dist/types/global-account/react/hooks/index.d.ts +3 -2
  343. package/dist/types/global-account/react/hooks/useAccountWallet.d.ts +1 -0
  344. package/dist/types/global-account/react/hooks/useNotifications.d.ts +48 -0
  345. package/dist/types/global-account/react/hooks/useTokenBalanceDirect.d.ts +1 -0
  346. package/dist/types/global-account/react/stores/index.d.ts +1 -0
  347. package/dist/types/global-account/react/stores/useModalStore.d.ts +47 -6
  348. package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
  349. package/dist/types/global-account/react/utils/index.d.ts +4 -0
  350. package/dist/types/global-account/react/utils/notificationsAPI.d.ts +80 -0
  351. package/dist/types/global-account/react/utils/profileDisplay.d.ts +3 -0
  352. package/dist/types/global-account/react/utils/toast.d.ts +6 -0
  353. package/dist/types/shared/constants/chains/supported.d.ts +3 -2
  354. package/package.json +2 -1
  355. package/src/anyspend/react/components/AnySpend.tsx +213 -173
  356. package/src/anyspend/react/components/AnySpendBuySpin.tsx +2 -1
  357. package/src/anyspend/react/components/AnySpendCustom.tsx +80 -77
  358. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +20 -4
  359. package/src/anyspend/react/components/AnySpendStakeB3.tsx +2 -1
  360. package/src/anyspend/react/components/AnySpendStakeB3ExactIn.tsx +2 -1
  361. package/src/anyspend/react/components/AnyspendDepositHype.tsx +3 -0
  362. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +56 -22
  363. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
  364. package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
  365. package/src/anyspend/react/components/common/InsufficientDepositPayment.tsx +1 -1
  366. package/src/anyspend/react/components/common/OrderDetails.tsx +6 -2
  367. package/src/anyspend/react/components/common/OrderDetailsCollapsible.tsx +2 -2
  368. package/src/anyspend/react/components/common/OrderHistory.tsx +8 -13
  369. package/src/anyspend/react/components/common/OrderHistoryItem.tsx +69 -25
  370. package/src/anyspend/react/components/common/PanelOnramp.tsx +6 -4
  371. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +3 -3
  372. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
  373. package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
  374. package/src/anyspend/react/components/common/TransferCryptoDetails.tsx +2 -2
  375. package/src/anyspend/react/components/webview/WebviewOnrampOrderStatus.tsx +3 -3
  376. package/src/anyspend/react/components/webview/WebviewOnrampPayment.tsx +2 -1
  377. package/src/anyspend/react/hooks/useAnyspendFlow.ts +2 -1
  378. package/src/anyspend/react/hooks/useConnectedWalletDisplay.ts +3 -2
  379. package/src/anyspend/react/hooks/usePhantomTransfer.ts +1 -1
  380. package/src/anyspend/react/utils/toast.ts +6 -0
  381. package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +115 -25
  382. package/src/global-account/react/components/AvatarCreator/AvatarCreator.tsx +2 -2
  383. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +491 -130
  384. package/src/global-account/react/components/B3DynamicModal.tsx +76 -17
  385. package/src/global-account/react/components/B3Provider/B3Provider.tsx +40 -20
  386. package/src/global-account/react/components/Deposit/Deposit.tsx +208 -0
  387. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +84 -0
  388. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +269 -434
  389. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +480 -0
  390. package/src/global-account/react/components/LinkAccount/LinkedAccountItem.tsx +135 -0
  391. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +83 -0
  392. package/src/global-account/react/components/ManageAccount/ContentTokens.tsx +2 -1
  393. package/src/global-account/react/components/ManageAccount/Header.tsx +230 -0
  394. package/src/global-account/react/components/ManageAccount/HomeActions.tsx +118 -0
  395. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +42 -0
  396. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +74 -597
  397. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +24 -0
  398. package/src/global-account/react/components/ManageAccount/NotificationChannel.tsx +94 -0
  399. package/src/global-account/react/components/ManageAccount/NotificationsContent.tsx +268 -0
  400. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +79 -0
  401. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +106 -0
  402. package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +31 -0
  403. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +197 -0
  404. package/src/global-account/react/components/ManageAccount/TokenBalanceRow.tsx +20 -5
  405. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +66 -0
  406. package/src/global-account/react/components/ManageAccount/channels/DiscordChannel.tsx +119 -0
  407. package/src/global-account/react/components/ManageAccount/channels/EmailChannel.tsx +168 -0
  408. package/src/global-account/react/components/ManageAccount/channels/PhoneChannel.tsx +227 -0
  409. package/src/global-account/react/components/ManageAccount/channels/TelegramChannel.tsx +150 -0
  410. package/src/global-account/react/components/ManageAccount/channels/index.ts +4 -0
  411. package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +61 -0
  412. package/src/global-account/react/components/Send/Send.tsx +621 -0
  413. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +13 -12
  414. package/src/global-account/react/components/SignInWithB3/SignInWithB3Flow.tsx +1 -1
  415. package/src/global-account/react/components/Toast/README.md +350 -0
  416. package/src/global-account/react/components/Toast/ToastComponents.tsx +159 -0
  417. package/src/global-account/react/components/Toast/ToastContext.tsx +86 -0
  418. package/src/global-account/react/components/Toast/index.ts +4 -0
  419. package/src/global-account/react/components/Toast/toastApi.ts +98 -0
  420. package/src/global-account/react/components/WalletImage/WalletImage.tsx +12 -0
  421. package/src/global-account/react/components/icons/BellIcon.tsx +15 -0
  422. package/src/global-account/react/components/icons/ChevronDownIcon.tsx +17 -0
  423. package/src/global-account/react/components/icons/CopyIcon.tsx +22 -0
  424. package/src/global-account/react/components/icons/LinkIcon.tsx +15 -0
  425. package/src/global-account/react/components/icons/LockIcon.tsx +15 -0
  426. package/src/global-account/react/components/icons/WalletIcon.tsx +21 -0
  427. package/src/global-account/react/components/index.ts +19 -5
  428. package/src/global-account/react/components/ui/Tabs.tsx +5 -13
  429. package/src/global-account/react/components/ui/dialog.tsx +23 -14
  430. package/src/global-account/react/components/ui/drawer.tsx +1 -1
  431. package/src/global-account/react/hooks/index.ts +5 -1
  432. package/src/global-account/react/hooks/useAccountWallet.tsx +26 -0
  433. package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +1 -0
  434. package/src/global-account/react/hooks/useChainSwitchWithAction.ts +3 -2
  435. package/src/global-account/react/hooks/useNativeBalance.tsx +2 -1
  436. package/src/global-account/react/hooks/useNotifications.ts +229 -0
  437. package/src/global-account/react/hooks/useSimBalance.ts +3 -3
  438. package/src/global-account/react/hooks/useTokenBalanceDirect.tsx +2 -0
  439. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +3 -2
  440. package/src/global-account/react/stores/index.ts +1 -0
  441. package/src/global-account/react/stores/useModalStore.ts +53 -6
  442. package/src/global-account/react/stores/useRecentAddressesStore.ts +54 -0
  443. package/src/global-account/react/utils/index.ts +4 -0
  444. package/src/global-account/react/utils/notificationsAPI.ts +305 -0
  445. package/src/global-account/react/utils/profileDisplay.ts +12 -4
  446. package/src/global-account/react/utils/toast.ts +6 -0
  447. package/src/shared/constants/chains/supported.ts +4 -0
  448. package/src/shared/utils/ipfs.ts +10 -3
  449. package/src/styles/index.css +12 -1
  450. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.d.ts +0 -7
  451. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +0 -107
  452. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
  453. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.js +0 -151
  454. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.d.ts +0 -7
  455. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +0 -104
  456. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
  457. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.js +0 -145
  458. package/dist/types/global-account/react/components/ManageAccount/BalanceContent.d.ts +0 -7
  459. package/dist/types/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +0 -6
  460. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +0 -258
  461. package/src/global-account/react/components/ProfileEditor/ProfileEditor.tsx +0 -279
@@ -0,0 +1,4 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ export function WalletIcon({ className, ...props }) {
3
+ return (_jsxs("svg", { width: "40", height: "40", viewBox: "0 0 40 40", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: className, ...props, children: [_jsx("rect", { width: "40", height: "40", rx: "20", fill: "#F4F4F5" }), _jsx("path", { d: "M28 16H27V14C27 13.4696 26.7893 12.9609 26.4142 12.5858C26.0391 12.2107 25.5304 12 25 12H15C14.4696 12 13.9609 12.2107 13.5858 12.5858C13.2107 12.9609 13 13.4696 13 14V26C13 26.5304 13.2107 27.0391 13.5858 27.4142C13.9609 27.7893 14.4696 28 15 28H27C27.5304 28 28.0391 27.7893 28.4142 27.4142C28.7893 27.0391 29 26.5304 29 26V18C29 17.4696 28.7893 16.9609 28.4142 16.5858C28.0391 16.2107 27.5304 16 27 16ZM15 14H25V16H15V14ZM27 22H25C24.7348 22 24.4804 21.8946 24.2929 21.7071C24.1054 21.5196 24 21.2652 24 21C24 20.7348 24.1054 20.4804 24.2929 20.2929C24.4804 20.1054 24.7348 20 25 20H27V22Z", fill: "#71717A" })] }));
4
+ }
@@ -13,8 +13,9 @@ export { SignInWithB3Privy } from "./SignInWithB3/SignInWithB3Privy";
13
13
  export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep";
14
14
  export { getConnectOptionsFromStrategy, isWalletType, type AllowedStrategy } from "./SignInWithB3/utils/signInUtils";
15
15
  export { ManageAccount } from "./ManageAccount/ManageAccount";
16
- export { AvatarEditor } from "./AvatarEditor/AvatarEditor";
17
- export { ProfileEditor } from "./ProfileEditor/ProfileEditor";
16
+ export { Deposit } from "./Deposit/Deposit";
17
+ export { Send } from "./Send/Send";
18
+ export { IPFSMediaRenderer } from "./IPFSMediaRenderer/IPFSMediaRenderer";
18
19
  export { RequestPermissions } from "./RequestPermissions/RequestPermissions";
19
20
  export { RequestPermissionsButton } from "./RequestPermissions/RequestPermissionsButton";
20
21
  export { AccountAssets } from "./AccountAssets/AccountAssets";
@@ -40,10 +41,15 @@ export { Popover, PopoverContent, PopoverTrigger } from "./ui/popover";
40
41
  export { ScrollArea, ScrollBar } from "./ui/scroll-area";
41
42
  export { ShinyButton } from "./ui/ShinyButton";
42
43
  export { Skeleton } from "./ui/skeleton";
43
- export { TabTrigger as TabTriggerPrimitive, TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, } from "./ui/Tabs";
44
- export { TabTrigger, Tabs, TabsContent, TabsList, TabsTransitionWrapper } from "./ui/TabSystem";
44
+ export { TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, TabTrigger as TabTriggerPrimitive, } from "./ui/Tabs";
45
+ export { Tabs, TabsContent, TabsList, TabsTransitionWrapper, TabTrigger } from "./ui/TabSystem";
45
46
  export { TextLoop } from "./ui/text-loop";
46
47
  export { TextShimmer } from "./ui/text-shimmer";
47
48
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip";
48
49
  export { TransitionPanel } from "./ui/transition-panel";
49
50
  export { AnimatedLottie } from "./magicui/AnimatedLottie";
51
+ export { toast } from "./Toast/toastApi";
52
+ export { Toast, ToastContainer } from "./Toast/ToastComponents";
53
+ export { ToastProvider, useToastContext } from "./Toast/ToastContext";
54
+ export type { ToastItem, ToastType } from "./Toast/ToastContext";
55
+ export { default as WalletImage } from "./WalletImage/WalletImage";
@@ -1,3 +1,4 @@
1
+ // TODO woj: Barrel file for all components, this might be reason of bundle size issues
1
2
  // Core Components
2
3
  export { B3DynamicModal } from "./B3DynamicModal.js";
3
4
  export { B3Provider, InnerProvider } from "./B3Provider/B3Provider.js";
@@ -16,9 +17,12 @@ export { LoginStepContainer } from "./SignInWithB3/steps/LoginStep.js";
16
17
  export { getConnectOptionsFromStrategy, isWalletType } from "./SignInWithB3/utils/signInUtils.js";
17
18
  // ManageAccount Components
18
19
  export { ManageAccount } from "./ManageAccount/ManageAccount.js";
19
- // Profile Components
20
- export { AvatarEditor } from "./AvatarEditor/AvatarEditor.js";
21
- export { ProfileEditor } from "./ProfileEditor/ProfileEditor.js";
20
+ // Deposit Components
21
+ export { Deposit } from "./Deposit/Deposit.js";
22
+ // Send Components
23
+ export { Send } from "./Send/Send.js";
24
+ // Media Components
25
+ export { IPFSMediaRenderer } from "./IPFSMediaRenderer/IPFSMediaRenderer.js";
22
26
  // RequestPermissions Components
23
27
  export { RequestPermissions } from "./RequestPermissions/RequestPermissions.js";
24
28
  export { RequestPermissionsButton } from "./RequestPermissions/RequestPermissionsButton.js";
@@ -51,11 +55,16 @@ export { Popover, PopoverContent, PopoverTrigger } from "./ui/popover.js";
51
55
  export { ScrollArea, ScrollBar } from "./ui/scroll-area.js";
52
56
  export { ShinyButton } from "./ui/ShinyButton.js";
53
57
  export { Skeleton } from "./ui/skeleton.js";
54
- export { TabTrigger as TabTriggerPrimitive, TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, } from "./ui/Tabs.js";
55
- export { TabTrigger, Tabs, TabsContent, TabsList, TabsTransitionWrapper } from "./ui/TabSystem.js";
58
+ export { TabsContent as TabsContentPrimitive, TabsList as TabsListPrimitive, Tabs as TabsPrimitive, TabTrigger as TabTriggerPrimitive, } from "./ui/Tabs.js";
59
+ export { Tabs, TabsContent, TabsList, TabsTransitionWrapper, TabTrigger } from "./ui/TabSystem.js";
56
60
  export { TextLoop } from "./ui/text-loop.js";
57
61
  export { TextShimmer } from "./ui/text-shimmer.js";
58
62
  export { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "./ui/tooltip.js";
59
63
  export { TransitionPanel } from "./ui/transition-panel.js";
60
64
  // Magic UI Components
61
65
  export { AnimatedLottie } from "./magicui/AnimatedLottie.js";
66
+ // Toast Components
67
+ export { toast } from "./Toast/toastApi.js";
68
+ export { Toast, ToastContainer } from "./Toast/ToastComponents.js";
69
+ export { ToastProvider, useToastContext } from "./Toast/ToastContext.js";
70
+ export { default as WalletImage } from "./WalletImage/WalletImage.js";
@@ -3,10 +3,10 @@ import { cn } from "../../../../shared/utils/index.js";
3
3
  import * as TabsPrimitive from "@radix-ui/react-tabs";
4
4
  export const Tabs = ({ defaultValue, onValueChange, children, }) => (_jsx(TabsPrimitive.Root, { defaultValue: defaultValue, onValueChange: onValueChange, children: children }));
5
5
  export function TabsList({ className, ...props }) {
6
- return (_jsx(TabsPrimitive.List, { className: cn("border-b3-react-border bg-b3-react-background inline-flex h-12 w-full items-center justify-center rounded-lg border", className), ...props }));
6
+ return _jsx(TabsPrimitive.List, { className: cn("", className), ...props });
7
7
  }
8
8
  export function TabTrigger({ className, ...props }) {
9
- return (_jsx(TabsPrimitive.Trigger, { className: cn("inline-flex h-full items-center justify-center whitespace-nowrap px-3 text-sm font-medium transition-all", "focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50", "data-[state=active]:bg-b3-react-subtle data-[state=active]:text-b3-react-primary data-[state=active]:font-bold", "border-b3-react-border hover:text-b3-react-foreground data-[state=inactive]:border-b3-react-border data-[state=inactive]:text-b3-react-muted-foreground", "flex-1 border-r", className), ...props }));
9
+ return (_jsx(TabsPrimitive.Trigger, { className: cn("text-md inline-flex h-full items-center justify-center whitespace-nowrap px-3 font-semibold transition-all", "focus-visible:outline-none disabled:pointer-events-none disabled:opacity-50", "data-[state=active]:font-bold data-[state=active]:text-[#0B57C2]", "hover:text-b3-react-foreground data-[state=inactive]:text-b3-react-muted-foreground", "flex-1", className), ...props }));
10
10
  }
11
11
  export function TabsContent({ className, ...props }) {
12
12
  return (_jsx(TabsPrimitive.Content, { className: cn("ring-offset-b3-react-background focus-visible:ring-b3-react-ring mt-2 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2", className), ...props }));
@@ -10,9 +10,9 @@ const DialogPortal = DialogPrimitive.Portal;
10
10
  const DialogClose = DialogPrimitive.Close;
11
11
  const DialogOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(DialogPrimitive.Overlay, { ref: ref, className: cn("fixed inset-0 z-50 bg-black/80 backdrop-blur-[20px]", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:backdrop-blur-none data-[state=open]:backdrop-blur-[20px]", "transition-all duration-300", className), ...props })));
12
12
  DialogOverlay.displayName = DialogPrimitive.Overlay.displayName;
13
- const DialogContent = React.forwardRef(({ className, children, hideCloseButton = false, closeBtnClassName, ...props }, ref) => {
13
+ const DialogContent = React.forwardRef(({ className, children, hideCloseButton = true, closeBtnClassName, ...props }, ref) => {
14
14
  const container = typeof window !== "undefined" ? document.getElementById("b3-root") : null;
15
- return (_jsxs(DialogPortal, { container: container, children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn("bg-b3-react-background fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 gap-4 border p-6 shadow-lg !outline-none", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-500", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]", "[perspective:1200px] [transform-style:preserve-3d] sm:rounded-xl", "transition-all ease-out", className), ...props, children: [children, !hideCloseButton && (_jsxs(DialogPrimitive.Close, { className: cn("modal-close-button data-[state=open]:bg-b3-react-background data-[state=open]:text-b3-react-muted-foreground absolute right-2 top-2 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-400", closeBtnClassName), children: [_jsx(X, { className: "h-5 w-5" }), _jsx("span", { className: "sr-only", children: "Close" })] }))] })] }));
15
+ return (_jsxs(DialogPortal, { container: container, children: [_jsx(DialogOverlay, {}), _jsxs(DialogPrimitive.Content, { ref: ref, className: cn("fixed left-1/2 top-1/2 z-50 grid w-full max-w-lg -translate-x-1/2 -translate-y-1/2 border shadow-lg !outline-none", "data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 duration-500", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[state=closed]:slide-out-to-left-1/2 data-[state=closed]:slide-out-to-top-[48%] data-[state=open]:slide-in-from-left-1/2 data-[state=open]:slide-in-from-top-[48%]", "[perspective:1200px] [transform-style:preserve-3d] sm:rounded-xl", "transition-all ease-out", className), ...props, children: [_jsxs("div", { className: "modal-inner-content mb-[23px] flex flex-1 flex-col overflow-hidden rounded-xl border border-[#D1D1D6] bg-white shadow-[0_20px_24px_-4px_rgba(10,13,18,0.08),0_8px_8px_-4px_rgba(10,13,18,0.03),0_3px_3px_-1.5px_rgba(10,13,18,0.04)]", children: [children, !hideCloseButton && (_jsxs(DialogPrimitive.Close, { className: cn("modal-close-button data-[state=open]:bg-b3-react-background data-[state=open]:text-b3-react-muted-foreground absolute right-2 top-2 rounded-sm opacity-70 transition-opacity hover:opacity-100 focus:outline-none disabled:pointer-events-none dark:data-[state=open]:bg-gray-800 dark:data-[state=open]:text-gray-400", closeBtnClassName), children: [_jsx(X, { className: "h-5 w-5" }), _jsx("span", { className: "sr-only", children: "Close" })] }))] }), _jsxs("div", { className: "b3-modal-ga-branding absolute bottom-[10px] left-0 right-0 flex items-center justify-center gap-1.5 pt-[10px]", children: [_jsx("img", { src: "https://cdn.b3.fun/b3_logo.svg", alt: "B3", className: "h-4 w-4" }), _jsx("span", { className: "font-neue-montreal-semibold text-xs uppercase leading-none tracking-[0.72px] text-[#0B57C2]", children: "Global Account" })] })] })] }));
16
16
  });
17
17
  DialogContent.displayName = DialogPrimitive.Content.displayName;
18
18
  const DialogHeader = ({ className, ...props }) => (_jsx("div", { className: cn("flex flex-col space-y-1.5 text-center sm:text-left", className), ...props }));
@@ -12,7 +12,7 @@ const DrawerOverlay = React.forwardRef(({ className, ...props }, ref) => (_jsx(D
12
12
  DrawerOverlay.displayName = DrawerPrimitive.Overlay.displayName;
13
13
  const DrawerContent = React.forwardRef(({ className, children, ...props }, ref) => {
14
14
  const container = typeof window !== "undefined" ? document.getElementById("b3-root") : null;
15
- return (_jsxs(DrawerPortal, { container: container, children: [_jsx(DrawerOverlay, {}), _jsx(DrawerPrimitive.Content, { ref: ref, className: cn("bg-b3-react-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border py-6", className), ...props, children: children })] }));
15
+ return (_jsxs(DrawerPortal, { container: container, children: [_jsx(DrawerOverlay, {}), _jsx(DrawerPrimitive.Content, { ref: ref, className: cn("bg-b3-react-background fixed inset-x-0 bottom-0 z-50 mt-24 flex h-auto flex-col rounded-t-[10px] border py-6 pt-5", className), ...props, children: children })] }));
16
16
  });
17
17
  DrawerContent.displayName = "DrawerContent";
18
18
  const DrawerHeader = ({ className, ...props }) => (_jsx("div", { className: cn("grid gap-1.5 p-4 text-center sm:text-left", className), ...props }));
@@ -22,8 +22,9 @@ export { useIsMobile } from "./useIsMobile";
22
22
  export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect";
23
23
  export { useMediaQuery } from "./useMediaQuery";
24
24
  export { useNativeBalance, useNativeBalanceFromRPC } from "./useNativeBalance";
25
+ export { useNotifications, type UseNotificationsReturn } from "./useNotifications";
25
26
  export { useOneBalance } from "./useOneBalance";
26
- export { useProfile, useProfilePreference, type CombinedProfile, type PreferenceRequestBody, type Profile, } from "./useProfile";
27
+ export { useDisplayName, useProfile, useProfilePreference, useProfileSettings, type CombinedProfile, type DisplayNameRequestBody, type PreferenceRequestBody, type Profile, } from "./useProfile";
27
28
  export { useQueryB3 } from "./useQueryB3";
28
29
  export { useQueryBSMNT } from "./useQueryBSMNT";
29
30
  export { useRemoveSessionKey } from "./useRemoveSessionKey";
@@ -39,5 +40,5 @@ export { useTokenFromUrl } from "./useTokenFromUrl";
39
40
  export { useTokenPrice } from "./useTokenPrice";
40
41
  export { useTokenPriceWithFallback } from "./useTokenPriceWithFallback";
41
42
  export { useTokensFromAddress } from "./useTokensFromAddress";
42
- export { useURLParams } from "./useURLParams";
43
43
  export { useUnifiedChainSwitchAndExecute } from "./useUnifiedChainSwitchAndExecute";
44
+ export { useURLParams } from "./useURLParams";
@@ -22,8 +22,9 @@ export { useIsMobile } from "./useIsMobile.js";
22
22
  export { useIsomorphicLayoutEffect } from "./useIsomorphicLayoutEffect.js";
23
23
  export { useMediaQuery } from "./useMediaQuery.js";
24
24
  export { useNativeBalance, useNativeBalanceFromRPC } from "./useNativeBalance.js";
25
+ export { useNotifications } from "./useNotifications.js";
25
26
  export { useOneBalance } from "./useOneBalance.js";
26
- export { useProfile, useProfilePreference, } from "./useProfile.js";
27
+ export { useDisplayName, useProfile, useProfilePreference, useProfileSettings, } from "./useProfile.js";
27
28
  export { useQueryB3 } from "./useQueryB3.js";
28
29
  export { useQueryBSMNT } from "./useQueryBSMNT.js";
29
30
  export { useRemoveSessionKey } from "./useRemoveSessionKey.js";
@@ -39,5 +40,5 @@ export { useTokenFromUrl } from "./useTokenFromUrl.js";
39
40
  export { useTokenPrice } from "./useTokenPrice.js";
40
41
  export { useTokenPriceWithFallback } from "./useTokenPriceWithFallback.js";
41
42
  export { useTokensFromAddress } from "./useTokensFromAddress.js";
42
- export { useURLParams } from "./useURLParams.js";
43
43
  export { useUnifiedChainSwitchAndExecute } from "./useUnifiedChainSwitchAndExecute.js";
44
+ export { useURLParams } from "./useURLParams.js";
@@ -16,3 +16,4 @@ export declare function useAccountWallet(): {
16
16
  eoaWalletIcon?: string;
17
17
  smartWalletIcon?: string;
18
18
  };
19
+ export declare function useAccountWalletImage(): string;
@@ -69,3 +69,20 @@ export function useAccountWallet() {
69
69
  ]);
70
70
  return res;
71
71
  }
72
+ export function useAccountWalletImage() {
73
+ const { account, user } = useB3();
74
+ const activeWallet = useActiveWallet();
75
+ const connectedWallets = useConnectedWallets();
76
+ const connectedSmartWallet = connectedWallets.find(wallet => wallet.id === ecosystemWalletId);
77
+ const connectedEOAWallet = connectedWallets.find(wallet => wallet.id !== ecosystemWalletId);
78
+ const isActiveSmartWallet = activeWallet?.id === connectedSmartWallet?.id;
79
+ const { data: walletImage } = useWalletImage(connectedEOAWallet?.id);
80
+ // If not EOA sign in, then we need to show the smart wallet icon
81
+ const lastAuthProvider = useLastAuthProvider();
82
+ const smartWalletIcon = lastAuthProvider && !connectedEOAWallet
83
+ ? socialIcons[lastAuthProvider]
84
+ : "https://gradvatar.com/0x0000000000000000000000000000000000000000"; // show smart wallet of eoa wallet is gradvatar
85
+ const { data: profileData } = useProfile({ address: account?.address });
86
+ const avatarUrl = user?.avatar || profileData?.avatar;
87
+ return avatarUrl || (isActiveSmartWallet ? smartWalletIcon : walletImage) || "";
88
+ }
@@ -74,6 +74,7 @@ export function useB3BalanceFromAddresses(addresses, options) {
74
74
  enabled: (options?.enabled ?? true) && normalizedAddresses.length > 0,
75
75
  refetchInterval: options?.refetchInterval ?? 30000, // Default 30s refresh
76
76
  staleTime: 10000, // Consider data stale after 10s
77
+ structuralSharing: false, // Disable structural sharing because data contains BigInt values
77
78
  });
78
79
  }
79
80
  export default useB3BalanceFromAddresses;
@@ -1,8 +1,8 @@
1
1
  import { getChainName, getNativeToken } from "../../../anyspend/index.js";
2
+ import { toast } from "../../../global-account/react/index.js";
2
3
  import { supportedChains } from "../../../shared/constants/chains/supported.js";
3
4
  import invariant from "invariant";
4
5
  import { useCallback, useState } from "react";
5
- import { toast } from "sonner";
6
6
  import { useSwitchChain, useWalletClient } from "wagmi";
7
7
  export function useChainSwitchWithAction() {
8
8
  const { data: walletClient } = useWalletClient();
@@ -59,7 +59,7 @@ export function useChainSwitchWithAction() {
59
59
  catch (e) {
60
60
  if (e?.code === -32603 || e?.message?.includes("f is not a function")) {
61
61
  // This is a workaround for a bug in the wallet provider.
62
- toast(`Switched to ${getChainName(targetChainId)}. Executing…`);
62
+ toast.success(`Switched to ${getChainName(targetChainId)}. Executing…`);
63
63
  await switchChainAndExecute(targetChainId, action);
64
64
  }
65
65
  else {
@@ -1,8 +1,8 @@
1
+ import { toast } from "../../../global-account/react/index.js";
1
2
  import { PUBLIC_BASE_RPC_URL } from "../../../shared/constants/index.js";
2
3
  import { b3Mainnet, b3Testnet } from "../../../shared/constants/chains/supported.js";
3
4
  import { formatNumber } from "../../../shared/utils/formatNumber.js";
4
5
  import { useQuery } from "@tanstack/react-query";
5
- import { toast } from "sonner";
6
6
  import { createPublicClient, formatEther, formatUnits, http } from "viem";
7
7
  import { fetchNativeTokenPriceWithChange } from "./useTokenPrice.js";
8
8
  async function fetchNativeBalance(address, chainIds) {
@@ -0,0 +1,48 @@
1
+ import { UserData } from "../utils/notificationsAPI";
2
+ export interface UseNotificationsReturn {
3
+ /** User's notification data including channels and settings */
4
+ userData: UserData | null;
5
+ /** Whether the data is currently loading */
6
+ loading: boolean;
7
+ /** Any error that occurred */
8
+ error: string | null;
9
+ /** Whether email channel is connected */
10
+ isEmailConnected: boolean;
11
+ /** Whether Telegram channel is connected */
12
+ isTelegramConnected: boolean;
13
+ /** Whether user has any channel connected */
14
+ hasAnyChannelConnected: boolean;
15
+ /** Connect an email channel */
16
+ connectEmail: (email: string) => Promise<void>;
17
+ /** Connect Telegram channel (opens deep link) */
18
+ connectTelegram: () => Promise<void>;
19
+ /** Disconnect a channel */
20
+ disconnectChannel: (channelType: string) => Promise<void>;
21
+ /** Send a test notification */
22
+ sendTestNotification: () => Promise<void>;
23
+ /** Refresh user data */
24
+ refresh: () => Promise<void>;
25
+ /** Telegram connection status */
26
+ telegramStatus: "idle" | "pending" | "connected";
27
+ }
28
+ /**
29
+ * Hook for managing user notification settings and channels
30
+ *
31
+ * @example
32
+ * ```typescript
33
+ * const {
34
+ * userData,
35
+ * loading,
36
+ * isEmailConnected,
37
+ * connectEmail,
38
+ * sendTestNotification
39
+ * } = useNotifications();
40
+ *
41
+ * // Connect email
42
+ * await connectEmail('user@example.com');
43
+ *
44
+ * // Send test
45
+ * await sendTestNotification();
46
+ * ```
47
+ */
48
+ export declare function useNotifications(): UseNotificationsReturn;
@@ -0,0 +1,186 @@
1
+ import { getAuthToken } from "../../../shared/utils/auth-token.js";
2
+ import { debugB3React } from "../../../shared/utils/debug.js";
3
+ import { useCallback, useEffect, useState } from "react";
4
+ import { useB3 } from "../components/index.js";
5
+ import { notificationsAPI } from "../utils/notificationsAPI.js";
6
+ import { useUserQuery } from "./useUserQuery.js";
7
+ const debug = debugB3React("useNotifications");
8
+ /**
9
+ * Hook for managing user notification settings and channels
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * const {
14
+ * userData,
15
+ * loading,
16
+ * isEmailConnected,
17
+ * connectEmail,
18
+ * sendTestNotification
19
+ * } = useNotifications();
20
+ *
21
+ * // Connect email
22
+ * await connectEmail('user@example.com');
23
+ *
24
+ * // Send test
25
+ * await sendTestNotification();
26
+ * ```
27
+ */
28
+ export function useNotifications() {
29
+ const { user } = useUserQuery();
30
+ const { partnerId } = useB3();
31
+ const [userData, setUserData] = useState(null);
32
+ const [loading, setLoading] = useState(true);
33
+ const [error, setError] = useState(null);
34
+ const [telegramStatus, setTelegramStatus] = useState("idle");
35
+ const userId = user?.userId;
36
+ const jwtToken = getAuthToken();
37
+ const loadUserData = useCallback(async () => {
38
+ if (!userId || !jwtToken) {
39
+ setLoading(false);
40
+ return;
41
+ }
42
+ try {
43
+ setLoading(true);
44
+ const data = await notificationsAPI.getUser(userId, jwtToken);
45
+ setUserData(data);
46
+ setError(null);
47
+ }
48
+ catch (err) {
49
+ debug("Error loading user data:", err);
50
+ // Try to register the user if they don't exist
51
+ try {
52
+ await notificationsAPI.registerUser(jwtToken);
53
+ const data = await notificationsAPI.getUser(userId, jwtToken);
54
+ setUserData(data);
55
+ setError(null);
56
+ }
57
+ catch (registerErr) {
58
+ debug("Error registering user:", registerErr);
59
+ setError("Failed to load notification settings");
60
+ }
61
+ }
62
+ finally {
63
+ setLoading(false);
64
+ }
65
+ }, [userId, jwtToken]);
66
+ useEffect(() => {
67
+ loadUserData();
68
+ }, [loadUserData]);
69
+ const createDefaultNotificationSettings = useCallback(async () => {
70
+ if (!userId || !jwtToken)
71
+ return;
72
+ try {
73
+ // Create settings for test notifications only
74
+ await notificationsAPI.ensureNotificationSettings(userId, partnerId, "general", jwtToken);
75
+ }
76
+ catch (err) {
77
+ debug("Error creating default notification settings:", err);
78
+ }
79
+ }, [userId, jwtToken, partnerId]);
80
+ const connectEmail = useCallback(async (email) => {
81
+ if (!userId || !jwtToken) {
82
+ throw new Error("User not authenticated");
83
+ }
84
+ try {
85
+ await notificationsAPI.connectEmail(userId, email, jwtToken);
86
+ await createDefaultNotificationSettings();
87
+ await loadUserData();
88
+ }
89
+ catch (err) {
90
+ debug("Error connecting email:", err);
91
+ throw new Error("Failed to connect email");
92
+ }
93
+ }, [userId, jwtToken, loadUserData, createDefaultNotificationSettings]);
94
+ const connectTelegram = useCallback(async () => {
95
+ if (!userId || !jwtToken) {
96
+ throw new Error("User not authenticated");
97
+ }
98
+ try {
99
+ const { deepLink } = await notificationsAPI.getTelegramLink(jwtToken);
100
+ window.open(deepLink, "_blank");
101
+ setTelegramStatus("pending");
102
+ // Poll for connection using nested timeouts to avoid overlapping requests
103
+ const startTime = Date.now();
104
+ const maxDuration = 120000; // 2 minutes
105
+ let timeoutId = null;
106
+ const pollStatus = async () => {
107
+ try {
108
+ const { connected } = await notificationsAPI.checkTelegramStatus(userId, jwtToken);
109
+ if (connected) {
110
+ if (timeoutId)
111
+ clearTimeout(timeoutId);
112
+ setTelegramStatus("connected");
113
+ await createDefaultNotificationSettings();
114
+ await loadUserData();
115
+ return;
116
+ }
117
+ }
118
+ catch (err) {
119
+ debug("Error checking Telegram status:", err);
120
+ }
121
+ // Check if we've exceeded max duration
122
+ if (Date.now() - startTime < maxDuration) {
123
+ // Schedule next check after previous one completes
124
+ timeoutId = setTimeout(pollStatus, 2000);
125
+ }
126
+ else {
127
+ setTelegramStatus("idle");
128
+ }
129
+ };
130
+ // Start polling
131
+ timeoutId = setTimeout(pollStatus, 2000);
132
+ }
133
+ catch (err) {
134
+ debug("Error connecting Telegram:", err);
135
+ throw new Error("Failed to connect Telegram");
136
+ }
137
+ }, [userId, jwtToken, loadUserData, createDefaultNotificationSettings]);
138
+ const disconnectChannel = useCallback(async (channelType) => {
139
+ if (!userId || !jwtToken) {
140
+ throw new Error("User not authenticated");
141
+ }
142
+ try {
143
+ await notificationsAPI.disconnectChannel(userId, channelType, jwtToken);
144
+ await loadUserData();
145
+ if (channelType === "telegram") {
146
+ setTelegramStatus("idle");
147
+ }
148
+ }
149
+ catch (err) {
150
+ debug("Error disconnecting channel:", err);
151
+ throw new Error(`Failed to disconnect ${channelType}`);
152
+ }
153
+ }, [userId, jwtToken, loadUserData]);
154
+ const sendTestNotification = useCallback(async () => {
155
+ if (!userId || !jwtToken) {
156
+ throw new Error("User not authenticated");
157
+ }
158
+ try {
159
+ // The API method now handles ensuring settings exist
160
+ await notificationsAPI.sendTestNotification(userId, partnerId, jwtToken);
161
+ }
162
+ catch (err) {
163
+ debug("Error sending test notification:", err);
164
+ throw new Error("Failed to send test notification");
165
+ }
166
+ }, [userId, jwtToken, partnerId]);
167
+ const emailChannel = userData?.channels?.find(c => c.channel_type === "email");
168
+ const telegramChannel = userData?.channels?.find(c => c.channel_type === "telegram");
169
+ const isEmailConnected = emailChannel?.enabled === 1;
170
+ const isTelegramConnected = telegramChannel?.enabled === 1;
171
+ const hasAnyChannelConnected = isEmailConnected || isTelegramConnected;
172
+ return {
173
+ userData,
174
+ loading,
175
+ error,
176
+ isEmailConnected,
177
+ isTelegramConnected,
178
+ hasAnyChannelConnected,
179
+ connectEmail,
180
+ connectTelegram,
181
+ disconnectChannel,
182
+ sendTestNotification,
183
+ refresh: loadUserData,
184
+ telegramStatus,
185
+ };
186
+ }
@@ -3,9 +3,9 @@ async function fetchSimBalance(address, chainIdsParam) {
3
3
  if (!address)
4
4
  throw new Error("Address is required");
5
5
  const chainIds = chainIdsParam.length === 0 ? "mainnet" : chainIdsParam.join(",");
6
- let url = `https://simdune-api.sean-430.workers.dev/?url=https://api.sim.dune.com/v1/evm/balances/${address}?metadata=logo&chain_ids=${chainIds}`;
7
- if (process.env.NEXT_PUBLIC_LOCAL_KEY) {
8
- url += `&localkey=${process.env.NEXT_PUBLIC_LOCAL_KEY}`;
6
+ let url = `https://simdune-api.sean-430.workers.dev/?url=https://api.sim.dune.com/v1/evm/balances/${address}?metadata=logo&chain_ids=${chainIds}&exclude_spam_tokens=true`;
7
+ if (process.env.NEXT_PUBLIC_SIMDUNE_LOCAL_KEY) {
8
+ url += `&localkey=${process.env.NEXT_PUBLIC_SIMDUNE_LOCAL_KEY}`;
9
9
  }
10
10
  const response = await fetch(url);
11
11
  if (!response.ok) {
@@ -7,6 +7,7 @@ export interface TokenBalanceResult {
7
7
  rawBalance: bigint | null;
8
8
  formattedBalance: string;
9
9
  isLoading: boolean;
10
+ refetch: () => void;
10
11
  }
11
12
  export declare function useTokenBalanceDirect({ token, address }: UseTokenBalanceProps): TokenBalanceResult;
12
13
  export {};
@@ -55,5 +55,6 @@ export function useTokenBalanceDirect({ token, address }) {
55
55
  rawBalance: tokenBalance?.raw || BigInt(0),
56
56
  formattedBalance: tokenBalance?.formatted || "0",
57
57
  isLoading: isActuallyLoading,
58
+ refetch,
58
59
  };
59
60
  }
@@ -1,10 +1,10 @@
1
1
  import { getChainName, getNativeToken } from "../../../anyspend/index.js";
2
2
  import app from "../../../global-account/app.js";
3
+ import { toast } from "../../../global-account/react/index.js";
3
4
  import { getThirdwebChain, supportedChains } from "../../../shared/constants/chains/supported.js";
4
5
  import { client } from "../../../shared/utils/thirdweb.js";
5
6
  import invariant from "invariant";
6
7
  import { useCallback, useState } from "react";
7
- import { toast } from "sonner";
8
8
  import { prepareTransaction, sendTransaction as twSendTransaction } from "thirdweb";
9
9
  import { isAddress } from "viem";
10
10
  import { useSwitchChain } from "wagmi";
@@ -83,7 +83,7 @@ export function useUnifiedChainSwitchAndExecute() {
83
83
  catch (e) {
84
84
  if (e?.code === -32603 || e?.message?.includes("f is not a function")) {
85
85
  // This is a workaround for a bug in the wallet provider.
86
- toast(`Switched to ${getChainName(targetChainId)}. Executing…`);
86
+ toast.success(`Switched to ${getChainName(targetChainId)}. Executing…`);
87
87
  return await handleEOASwitchChainAndSendTransaction(targetChainId, params);
88
88
  }
89
89
  else {
@@ -1,3 +1,4 @@
1
1
  export { useAuthStore } from "./useAuthStore";
2
2
  export { useModalStore } from "./useModalStore";
3
+ export { useRecentAddressesStore } from "./useRecentAddressesStore";
3
4
  export type { AnySpendBuySpinProps, AnySpendFundTournamentProps, AnySpendJoinTournamentProps, AnySpendModalProps, AnySpendNftProps, AnySpendOrderHistoryProps, AnySpendStakeB3Props, AnyspendOrderDetailsProps, ManageAccountModalProps, ModalContentType, RequestPermissionsModalProps, SignInWithB3ModalProps, } from "./useModalStore";
@@ -1,2 +1,3 @@
1
1
  export { useAuthStore } from "./useAuthStore.js";
2
2
  export { useModalStore } from "./useModalStore.js";
3
+ export { useRecentAddressesStore } from "./useRecentAddressesStore.js";
@@ -77,9 +77,9 @@ export interface ManageAccountModalProps extends BaseModalProps {
77
77
  /** Partner ID */
78
78
  partnerId: string;
79
79
  /** Active Tab */
80
- activeTab?: "overview" | "tokens" | "nfts" | "apps" | "settings";
80
+ activeTab?: "home" | "tokens" | "nfts" | "apps" | "settings" | "swap";
81
81
  /** Function to set the active tab */
82
- setActiveTab?: (tab: "overview" | "tokens" | "nfts" | "apps" | "settings") => void;
82
+ setActiveTab?: (tab: "home" | "tokens" | "nfts" | "apps" | "settings" | "swap") => void;
83
83
  /** Whether to show the referral information */
84
84
  showReferralInfo?: boolean;
85
85
  /** Whether to show the swap button */
@@ -349,6 +349,15 @@ export interface LinkAccountModalProps extends BaseModalProps {
349
349
  partnerId: string;
350
350
  chain: Chain;
351
351
  }
352
+ export interface LinkNewAccountModalProps extends BaseModalProps {
353
+ type: "linkNewAccount";
354
+ showBackButton?: boolean;
355
+ onSuccess?: () => void;
356
+ onError?: (error: Error) => void;
357
+ onClose?: () => void;
358
+ partnerId: string;
359
+ chain: Chain;
360
+ }
352
361
  export interface AnySpendDepositHypeProps extends BaseModalProps {
353
362
  /** Modal type identifier */
354
363
  type: "anySpendDepositHype";
@@ -364,6 +373,8 @@ export interface AnySpendDepositHypeProps extends BaseModalProps {
364
373
  mainFooter?: React.ReactNode;
365
374
  /** Callback function called when the deposit is successful */
366
375
  onSuccess?: (amount?: string) => void;
376
+ /** Callback function trigger open custom modal */
377
+ onOpenCustomModal?: () => void;
367
378
  /** Custom USD input values for quick amount buttons in fiat onramp */
368
379
  customUsdInputValues?: string[];
369
380
  /** prefer eoa wallet */
@@ -375,10 +386,40 @@ export interface AvatarEditorModalProps extends BaseModalProps {
375
386
  /** Callback function called when avatar is successfully set */
376
387
  onSuccess?: () => void;
377
388
  }
378
- export interface ProfileEditorModalProps extends BaseModalProps {
389
+ /**
390
+ * Props for the Deposit modal
391
+ * Allows users to deposit tokens into their global account
392
+ */
393
+ export interface DepositModalProps extends BaseModalProps {
394
+ /** Modal type identifier */
395
+ type: "deposit";
396
+ /** Callback function called when deposit is successful */
397
+ onSuccess?: () => void;
398
+ }
399
+ /**
400
+ * Props for the Send modal
401
+ * Allows users to send tokens from their global account to another address
402
+ */
403
+ export interface SendModalProps extends BaseModalProps {
404
+ /** Modal type identifier */
405
+ type: "send";
406
+ /** Pre-filled recipient address (optional) */
407
+ recipientAddress?: string;
408
+ /** Callback function called when send is successful */
409
+ onSuccess?: (txHash?: string) => void;
410
+ }
411
+ /**
412
+ * Props for the Notifications modal
413
+ * Allows users to manage notification settings and channels
414
+ */
415
+ export interface NotificationsModalProps extends BaseModalProps {
379
416
  /** Modal type identifier */
380
- type: "profileEditor";
381
- /** Callback function called when profile is successfully updated */
417
+ type: "notifications";
418
+ /** Partner ID */
419
+ partnerId: string;
420
+ /** Blockchain chain information */
421
+ chain: Chain;
422
+ /** Callback function called when settings are successfully saved */
382
423
  onSuccess?: () => void;
383
424
  }
384
425
  /**
@@ -410,7 +451,7 @@ export interface AnySpendCollectorClubPurchaseProps extends BaseModalProps {
410
451
  /**
411
452
  * Union type of all possible modal content types
412
453
  */
413
- export type ModalContentType = SignInWithB3ModalProps | RequestPermissionsModalProps | ManageAccountModalProps | AnySpendModalProps | AnyspendOrderDetailsProps | AnySpendNftProps | AnySpendJoinTournamentProps | AnySpendFundTournamentProps | AnySpendOrderHistoryProps | AnySpendStakeB3Props | AnySpendStakeB3ExactInProps | AnySpendStakeUpsideProps | AnySpendStakeUpsideExactInProps | AnySpendDepositUpsideProps | AnySpendBuySpinProps | AnySpendSignatureMintProps | AnySpendBondKitProps | LinkAccountModalProps | AnySpendDepositHypeProps | AvatarEditorModalProps | ProfileEditorModalProps | AnySpendCollectorClubPurchaseProps;
454
+ export type ModalContentType = SignInWithB3ModalProps | RequestPermissionsModalProps | ManageAccountModalProps | AnySpendModalProps | AnyspendOrderDetailsProps | AnySpendNftProps | AnySpendJoinTournamentProps | AnySpendFundTournamentProps | AnySpendOrderHistoryProps | AnySpendStakeB3Props | AnySpendStakeB3ExactInProps | AnySpendStakeUpsideProps | AnySpendStakeUpsideExactInProps | AnySpendDepositUpsideProps | AnySpendBuySpinProps | AnySpendSignatureMintProps | AnySpendBondKitProps | LinkAccountModalProps | LinkNewAccountModalProps | AnySpendDepositHypeProps | AvatarEditorModalProps | DepositModalProps | SendModalProps | NotificationsModalProps | AnySpendCollectorClubPurchaseProps;
414
455
  /**
415
456
  * State interface for the modal store
416
457
  */