@b3dotfun/sdk 0.0.73 → 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
@@ -1,4 +1,5 @@
1
1
  import {
2
+ IPFSMediaRenderer,
2
3
  SignInWithB3,
3
4
  SignInWithB3ModalProps,
4
5
  StyleRoot,
@@ -12,7 +13,8 @@ import { ecosystemWalletId } from "@b3dotfun/sdk/shared/constants";
12
13
  import { cn, truncateAddress } from "@b3dotfun/sdk/shared/utils";
13
14
  import { Menu, MenuButton, MenuItems, Transition } from "@headlessui/react";
14
15
  import { ReactNode, useEffect } from "react";
15
- import { useConnectedWallets, useSetActiveWallet, useWalletInfo } from "thirdweb/react";
16
+ import { useConnectedWallets, useSetActiveWallet } from "thirdweb/react";
17
+ import { useAccountWalletImage } from "../../hooks/useAccountWallet";
16
18
  import { ManageAccountButton } from "../custom/ManageAccountButton";
17
19
 
18
20
  type SignInProps = {
@@ -31,7 +33,6 @@ export function SignIn(props: SignInWithB3Props) {
31
33
  const { className } = props;
32
34
  const { automaticallySetFirstEoa, partnerId } = useB3();
33
35
  const {
34
- wallet,
35
36
  address: globalAddress,
36
37
  ensName,
37
38
  connectedSmartWallet,
@@ -44,14 +45,12 @@ export function SignIn(props: SignInWithB3Props) {
44
45
 
45
46
  const isMobile = useIsMobile();
46
47
  const { logout } = useAuthentication(partnerId);
47
- const onDisconnect = async () => {
48
+ const onDisconnect = async (): Promise<void> => {
48
49
  await logout();
49
50
  };
50
51
 
51
52
  const connectedWallets = useConnectedWallets();
52
53
 
53
- const { data: walletInfo } = useWalletInfo(isActiveSmartWallet ? connectedSmartWallet?.id : connectedEOAWallet?.id);
54
-
55
54
  const setActiveWallet = useSetActiveWallet();
56
55
 
57
56
  const handleSetActiveAccount = (selectedWalletId: string | undefined) => {
@@ -73,17 +72,19 @@ export function SignIn(props: SignInWithB3Props) {
73
72
  }
74
73
  }, [connectedEOAWallet, isActiveEOAWallet, setActiveWallet, automaticallySetFirstEoa]);
75
74
 
75
+ const walletImage = useAccountWalletImage();
76
+
76
77
  // Desktop version - original dropdown menu
77
78
  return (
78
79
  <StyleRoot>
79
80
  <Menu className={`relative flex items-center ${className || ""}`} as="div">
80
81
  {globalAddress ? (
81
82
  <>
82
- <MenuButton className="bg-b3-react-background group flex h-10 items-center gap-1 rounded-xl px-3">
83
- {!!wallet.meta?.icon && (
84
- <img
85
- src={wallet.meta.icon}
86
- alt={wallet.meta.icon}
83
+ <MenuButton className="bg-b3-react-background group flex h-10 items-center gap-1 rounded-xl px-3 focus:outline-none">
84
+ {!!walletImage && (
85
+ <IPFSMediaRenderer
86
+ src={walletImage}
87
+ alt="Wallet Image"
87
88
  className="bg-b3-react-primary h-6 w-6 rounded-full object-cover opacity-100"
88
89
  />
89
90
  )}
@@ -98,7 +99,7 @@ export function SignIn(props: SignInWithB3Props) {
98
99
  leaveTo="scale-95 opacity-0"
99
100
  >
100
101
  <MenuItems
101
- className="b3-root absolute -right-4 top-full min-w-64 rounded-2xl border lg:right-0"
102
+ className="b3-root absolute -right-4 top-full min-w-64 rounded-2xl border focus:outline-none lg:right-0"
102
103
  modal={false}
103
104
  // TODO: Figure out why setting anchor on mobile causes z-index issues where it appears under elements
104
105
  anchor={isMobile ? "top end" : undefined}
@@ -120,7 +121,7 @@ export function SignIn(props: SignInWithB3Props) {
120
121
  <div className="ml-4 grow">
121
122
  {ensName && <div>{ensName}</div>}
122
123
  <div>{truncateAddress(globalAddress)}</div>
123
- <div>{walletInfo?.name}</div>
124
+ {/* <div>{walletInfo?.name}</div> */}
124
125
  </div>
125
126
  </div>
126
127
  {isActiveEOAWallet && <Icon className="fill-b3-react-primary" name="check" />}
@@ -217,7 +217,7 @@ export function SignInWithB3Flow({
217
217
  if (isAuthenticating || (isFetchingSigners && step === "login") || source === "requestPermissions") {
218
218
  return (
219
219
  <LoginStepContainer partnerId={partnerId}>
220
- <div className="mt-8 flex items-center justify-center">
220
+ <div className="my-8 flex min-h-[350px] items-center justify-center">
221
221
  <Loading variant="white" size="lg" />
222
222
  </div>
223
223
  </LoginStepContainer>
@@ -0,0 +1,350 @@
1
+ # B3 Toast System
2
+
3
+ A custom toast notification system that renders inside the B3DynamicModal with full Sonner API compatibility.
4
+
5
+ ## Features
6
+
7
+ - ✅ **Modal-Integrated**: Toasts appear inside the modal at the bottom
8
+ - ✅ **Sonner API Compatible**: Drop-in replacement for `sonner` package
9
+ - ✅ **Theme Support**: Respects light/dark theme from B3Provider
10
+ - ✅ **Auto-Dismiss**: Configurable duration with manual dismiss
11
+ - ✅ **Animated**: Smooth entry/exit with Framer Motion
12
+ - ✅ **TypeScript**: Full type safety
13
+
14
+ ## Usage
15
+
16
+ ### Basic Usage
17
+
18
+ ```typescript
19
+ import { toast } from "@b3dotfun/sdk/global-account/react";
20
+
21
+ // Success toast
22
+ toast.success("Transaction completed!");
23
+
24
+ // Error toast
25
+ toast.error("Transaction failed");
26
+
27
+ // Info toast
28
+ toast.info("Processing transaction...");
29
+
30
+ // Warning toast
31
+ toast.warning("Low balance");
32
+ ```
33
+
34
+ ### With Options
35
+
36
+ ```typescript
37
+ // Custom duration (in milliseconds)
38
+ toast.success("Message", { duration: 5000 });
39
+
40
+ // Infinite duration (won't auto-dismiss)
41
+ toast.error("Critical error", { duration: Infinity });
42
+ ```
43
+
44
+ ### Manual Dismiss
45
+
46
+ ```typescript
47
+ // Dismiss specific toast
48
+ const toastId = toast.success("Loading...");
49
+ toast.dismiss(toastId);
50
+
51
+ // Dismiss all toasts
52
+ toast.dismiss();
53
+ ```
54
+
55
+ ## Architecture
56
+
57
+ ### Components
58
+
59
+ #### `ToastProvider`
60
+
61
+ Wraps the application to provide toast context. Already integrated into `B3Provider`.
62
+
63
+ ```typescript
64
+ import { ToastProvider } from "@b3dotfun/sdk/global-account/react";
65
+
66
+ <ToastProvider>
67
+ <App />
68
+ </ToastProvider>
69
+ ```
70
+
71
+ #### `Toast`
72
+
73
+ Renders a single toast notification with type-specific styling and icons.
74
+
75
+ #### `ToastContainer`
76
+
77
+ Renders a list of toasts with animations. Used internally by `B3DynamicModal`.
78
+
79
+ ### Context
80
+
81
+ #### `useToastContext()`
82
+
83
+ Access toast context directly in components.
84
+
85
+ ```typescript
86
+ import { useToastContext } from "@b3dotfun/sdk/global-account/react";
87
+
88
+ function MyComponent() {
89
+ const { toasts, addToast, removeToast, clearAll } = useToastContext();
90
+
91
+ return <div>Active toasts: {toasts.length}</div>;
92
+ }
93
+ ```
94
+
95
+ ### Global API
96
+
97
+ #### `toast`
98
+
99
+ Global singleton API matching Sonner's interface.
100
+
101
+ **Methods:**
102
+
103
+ - `toast.success(message, options?)` - Show success toast
104
+ - `toast.error(message, options?)` - Show error toast
105
+ - `toast.info(message, options?)` - Show info toast
106
+ - `toast.warning(message, options?)` - Show warning toast
107
+ - `toast.dismiss(toastId?)` - Dismiss toast(s)
108
+
109
+ **Options:**
110
+
111
+ - `duration?: number` - Auto-dismiss duration in ms (default: 4000)
112
+
113
+ ## Toast Types
114
+
115
+ | Type | Color | Icon | Usage |
116
+ | --------- | ------ | --------- | ---------------------- |
117
+ | `success` | Green | Checkmark | Successful operations |
118
+ | `error` | Red | X | Failed operations |
119
+ | `info` | Blue | Info | Informational messages |
120
+ | `warning` | Yellow | Warning | Warnings |
121
+
122
+ ## Theming
123
+
124
+ Toasts automatically adapt to the theme set in `B3Provider`:
125
+
126
+ ```typescript
127
+ <B3Provider theme="dark">
128
+ {/* Toasts will use dark theme */}
129
+ </B3Provider>
130
+ ```
131
+
132
+ **Light Theme:**
133
+
134
+ - Lighter backgrounds
135
+ - Darker text
136
+ - Softer borders
137
+
138
+ **Dark Theme:**
139
+
140
+ - Darker backgrounds
141
+ - Lighter text
142
+ - Glowing borders
143
+
144
+ ## Integration
145
+
146
+ ### In B3DynamicModal
147
+
148
+ Toasts are automatically rendered at the bottom of the modal:
149
+
150
+ ```
151
+ ┌─────────────────────────┐
152
+ │ Modal Content │
153
+ │ │
154
+ │ [Content Area] │
155
+ │ │
156
+ ├─────────────────────────┤ ← Border separator
157
+ │ [Toast 1] │
158
+ │ [Toast 2] │
159
+ └─────────────────────────┘
160
+ ```
161
+
162
+ The modal automatically expands to accommodate toasts.
163
+
164
+ ### Position
165
+
166
+ Toasts are positioned:
167
+
168
+ - At the bottom of the modal
169
+ - Above the modal border
170
+ - Below main content
171
+ - Full width with padding
172
+
173
+ ## Examples
174
+
175
+ ### Success After Transaction
176
+
177
+ ```typescript
178
+ const handleTransaction = async () => {
179
+ try {
180
+ const tx = await sendTransaction();
181
+ toast.success(`Transaction successful! Hash: ${tx.hash}`);
182
+ } catch (error) {
183
+ toast.error(`Transaction failed: ${error.message}`);
184
+ }
185
+ };
186
+ ```
187
+
188
+ ### Loading State
189
+
190
+ ```typescript
191
+ const handleLongOperation = async () => {
192
+ const toastId = toast.info("Processing...", { duration: Infinity });
193
+
194
+ try {
195
+ await longOperation();
196
+ toast.dismiss(toastId);
197
+ toast.success("Operation completed!");
198
+ } catch (error) {
199
+ toast.dismiss(toastId);
200
+ toast.error("Operation failed");
201
+ }
202
+ };
203
+ ```
204
+
205
+ ### Multiple Toasts
206
+
207
+ ```typescript
208
+ // Show multiple toasts at once
209
+ toast.success("Account created");
210
+ toast.info("Sending welcome email...");
211
+ toast.warning("Complete your profile");
212
+ ```
213
+
214
+ ## Migration from Sonner
215
+
216
+ ### Before
217
+
218
+ ```typescript
219
+ import { toast } from "@b3dotfun/sdk/global-account/react";
220
+
221
+ toast.success("Success!");
222
+ ```
223
+
224
+ ### After
225
+
226
+ ```typescript
227
+ import { toast } from "@b3dotfun/sdk/global-account/react";
228
+
229
+ toast.success("Success!"); // Same API!
230
+ ```
231
+
232
+ See `MIGRATION_GUIDE_TOAST.md` for detailed migration instructions.
233
+
234
+ ## Fallback Behavior
235
+
236
+ If `ToastProvider` is not in the component tree, the toast API automatically falls back to Sonner (if available) or logs to console. This ensures graceful degradation.
237
+
238
+ ## Testing
239
+
240
+ ```typescript
241
+ import { render, screen } from "@testing-library/react";
242
+ import { ToastProvider } from "@b3dotfun/sdk/global-account/react";
243
+ import { toast } from "@b3dotfun/sdk/global-account/react";
244
+
245
+ test("shows toast notification", async () => {
246
+ render(
247
+ <ToastProvider>
248
+ <MyComponent />
249
+ </ToastProvider>
250
+ );
251
+
252
+ toast.success("Test message");
253
+
254
+ // Toast will be visible in the component tree
255
+ });
256
+ ```
257
+
258
+ See `__tests__/toast.test.tsx` for more examples.
259
+
260
+ ## Troubleshooting
261
+
262
+ ### Toasts not appearing
263
+
264
+ 1. Ensure `ToastProvider` is in component tree (already done in `B3Provider`)
265
+ 2. Check that modal is open (toasts only show in modal)
266
+ 3. Verify theme is set correctly
267
+
268
+ ### Toasts appearing outside modal
269
+
270
+ If toasts appear outside the modal, you may be:
271
+
272
+ 1. Using Sonner directly instead of our toast API
273
+ 2. Missing the `ToastProvider` wrapper
274
+
275
+ ### Styling issues
276
+
277
+ 1. Check that theme prop is passed to `B3Provider`
278
+ 2. Verify Tailwind CSS is configured correctly
279
+ 3. Ensure all required CSS classes are available
280
+
281
+ ## API Reference
282
+
283
+ ### Types
284
+
285
+ ```typescript
286
+ type ToastType = "success" | "error" | "info" | "warning";
287
+
288
+ interface ToastItem {
289
+ id: string;
290
+ type: ToastType;
291
+ message: string;
292
+ duration?: number;
293
+ createdAt: number;
294
+ }
295
+
296
+ interface ToastOptions {
297
+ duration?: number;
298
+ }
299
+ ```
300
+
301
+ ### Functions
302
+
303
+ ```typescript
304
+ // Add toast
305
+ function toast.success(message: string, options?: ToastOptions): string;
306
+ function toast.error(message: string, options?: ToastOptions): string;
307
+ function toast.info(message: string, options?: ToastOptions): string;
308
+ function toast.warning(message: string, options?: ToastOptions): string;
309
+
310
+ // Remove toast
311
+ function toast.dismiss(toastId?: string): void;
312
+ ```
313
+
314
+ ### Hooks
315
+
316
+ ```typescript
317
+ function useToastContext(): {
318
+ toasts: ToastItem[];
319
+ addToast: (type: ToastType, message: string, duration?: number) => string;
320
+ removeToast: (id: string) => void;
321
+ clearAll: () => void;
322
+ };
323
+ ```
324
+
325
+ ## Performance
326
+
327
+ - Lightweight context-based state management
328
+ - Automatic cleanup of dismissed toasts
329
+ - No memory leaks with timeout management
330
+ - Smooth animations using Framer Motion
331
+ - Minimal re-renders with selective context usage
332
+
333
+ ## Accessibility
334
+
335
+ - Toast messages use semantic colors
336
+ - Icons provide visual indicators
337
+ - Text is readable in both themes
338
+ - Close buttons are keyboard accessible
339
+ - ARIA attributes for screen readers (coming soon)
340
+
341
+ ## Future Enhancements
342
+
343
+ - [ ] Queue management (limit simultaneous toasts)
344
+ - [ ] Custom actions in toasts (undo, retry, etc.)
345
+ - [ ] Progress indicators
346
+ - [ ] Sound/haptic feedback
347
+ - [ ] Persistence across navigation
348
+ - [ ] ARIA live regions for accessibility
349
+ - [ ] Custom toast components
350
+ - [ ] Position variants (top, bottom, etc.)
@@ -0,0 +1,159 @@
1
+ import { cn } from "@b3dotfun/sdk/shared/utils/cn";
2
+ import { AnimatePresence, motion } from "framer-motion";
3
+ import type { ToastItem, ToastType } from "./ToastContext";
4
+
5
+ interface ToastProps {
6
+ toast: ToastItem;
7
+ onDismiss: (id: string) => void;
8
+ theme?: "light" | "dark";
9
+ }
10
+
11
+ const getToastIcon = (type: ToastType) => {
12
+ switch (type) {
13
+ case "success":
14
+ return (
15
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
16
+ <path
17
+ d="M16.6666 5L7.49998 14.1667L3.33331 10"
18
+ stroke="currentColor"
19
+ strokeWidth="2"
20
+ strokeLinecap="round"
21
+ strokeLinejoin="round"
22
+ />
23
+ </svg>
24
+ );
25
+ case "error":
26
+ return (
27
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
28
+ <path
29
+ d="M15 5L5 15M5 5L15 15"
30
+ stroke="currentColor"
31
+ strokeWidth="2"
32
+ strokeLinecap="round"
33
+ strokeLinejoin="round"
34
+ />
35
+ </svg>
36
+ );
37
+ case "info":
38
+ return (
39
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
40
+ <path
41
+ d="M10 13.3333V10M10 6.66667H10.0083M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667C14.6024 1.66667 18.3333 5.39763 18.3333 10Z"
42
+ stroke="currentColor"
43
+ strokeWidth="2"
44
+ strokeLinecap="round"
45
+ strokeLinejoin="round"
46
+ />
47
+ </svg>
48
+ );
49
+ case "warning":
50
+ return (
51
+ <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg">
52
+ <path
53
+ d="M10 6.66667V10M10 13.3333H10.0083M18.3333 10C18.3333 14.6024 14.6024 18.3333 10 18.3333C5.39763 18.3333 1.66667 14.6024 1.66667 10C1.66667 5.39763 5.39763 1.66667 10 1.66667C14.6024 1.66667 18.3333 5.39763 18.3333 10Z"
54
+ stroke="currentColor"
55
+ strokeWidth="2"
56
+ strokeLinecap="round"
57
+ strokeLinejoin="round"
58
+ />
59
+ </svg>
60
+ );
61
+ }
62
+ };
63
+
64
+ const getToastStyles = (type: ToastType, theme: "light" | "dark" = "light") => {
65
+ const isDark = theme === "dark";
66
+
67
+ const baseStyles = "flex items-start gap-3 p-4 rounded-xl border shadow-sm";
68
+
69
+ switch (type) {
70
+ case "success":
71
+ return cn(
72
+ baseStyles,
73
+ isDark ? "bg-green-950/50 border-green-800/50 text-green-100" : "bg-green-50 border-green-200 text-green-900",
74
+ );
75
+ case "error":
76
+ return cn(
77
+ baseStyles,
78
+ isDark ? "bg-red-950/50 border-red-800/50 text-red-100" : "bg-red-50 border-red-200 text-red-900",
79
+ );
80
+ case "info":
81
+ return cn(
82
+ baseStyles,
83
+ isDark ? "bg-blue-950/50 border-blue-800/50 text-blue-100" : "bg-blue-50 border-blue-200 text-blue-900",
84
+ );
85
+ case "warning":
86
+ return cn(
87
+ baseStyles,
88
+ isDark
89
+ ? "bg-yellow-950/50 border-yellow-800/50 text-yellow-100"
90
+ : "bg-yellow-50 border-yellow-200 text-yellow-900",
91
+ );
92
+ }
93
+ };
94
+
95
+ const getIconColorClass = (type: ToastType, theme: "light" | "dark" = "light") => {
96
+ const isDark = theme === "dark";
97
+
98
+ switch (type) {
99
+ case "success":
100
+ return isDark ? "text-green-400" : "text-green-600";
101
+ case "error":
102
+ return isDark ? "text-red-400" : "text-red-600";
103
+ case "info":
104
+ return isDark ? "text-blue-400" : "text-blue-600";
105
+ case "warning":
106
+ return isDark ? "text-yellow-400" : "text-yellow-600";
107
+ }
108
+ };
109
+
110
+ export function Toast({ toast, onDismiss, theme = "light" }: ToastProps) {
111
+ return (
112
+ <motion.div
113
+ initial={{ opacity: 0, y: -20, scale: 0.95 }}
114
+ animate={{ opacity: 1, y: 0, scale: 1 }}
115
+ exit={{ opacity: 0, y: -10, scale: 0.95 }}
116
+ transition={{ duration: 0.2 }}
117
+ className={getToastStyles(toast.type, theme)}
118
+ >
119
+ <div className={cn("mt-0.5 shrink-0", getIconColorClass(toast.type, theme))}>{getToastIcon(toast.type)}</div>
120
+ <p className="font-inter flex-1 text-sm font-medium">{toast.message}</p>
121
+ <button
122
+ onClick={() => onDismiss(toast.id)}
123
+ className={cn(
124
+ "shrink-0 transition-opacity hover:opacity-70",
125
+ theme === "dark" ? "text-gray-400" : "text-gray-500",
126
+ )}
127
+ >
128
+ <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
129
+ <path
130
+ d="M12 4L4 12M4 4L12 12"
131
+ stroke="currentColor"
132
+ strokeWidth="1.5"
133
+ strokeLinecap="round"
134
+ strokeLinejoin="round"
135
+ />
136
+ </svg>
137
+ </button>
138
+ </motion.div>
139
+ );
140
+ }
141
+
142
+ interface ToastContainerProps {
143
+ toasts: ToastItem[];
144
+ onDismiss: (id: string) => void;
145
+ theme?: "light" | "dark";
146
+ className?: string;
147
+ }
148
+
149
+ export function ToastContainer({ toasts, onDismiss, theme = "light", className }: ToastContainerProps) {
150
+ return (
151
+ <div className={cn("w-full space-y-2", className)}>
152
+ <AnimatePresence mode="popLayout">
153
+ {toasts.map(toast => (
154
+ <Toast key={toast.id} toast={toast} onDismiss={onDismiss} theme={theme} />
155
+ ))}
156
+ </AnimatePresence>
157
+ </div>
158
+ );
159
+ }
@@ -0,0 +1,86 @@
1
+ import { createContext, useCallback, useContext, useEffect, useRef, useState } from "react";
2
+
3
+ export type ToastType = "success" | "error" | "info" | "warning";
4
+
5
+ export interface ToastItem {
6
+ id: string;
7
+ type: ToastType;
8
+ message: string;
9
+ duration?: number;
10
+ createdAt: number;
11
+ }
12
+
13
+ interface ToastContextType {
14
+ toasts: ToastItem[];
15
+ addToast: (type: ToastType, message: string, duration?: number) => string;
16
+ removeToast: (id: string) => void;
17
+ clearAll: () => void;
18
+ }
19
+
20
+ const ToastContext = createContext<ToastContextType | undefined>(undefined);
21
+
22
+ let globalToastCounter = 0;
23
+
24
+ export function ToastProvider({ children }: { children: React.ReactNode }) {
25
+ const [toasts, setToasts] = useState<ToastItem[]>([]);
26
+ const timeoutsRef = useRef<Map<string, NodeJS.Timeout>>(new Map());
27
+
28
+ const removeToast = useCallback((id: string) => {
29
+ setToasts(prev => prev.filter(toast => toast.id !== id));
30
+ const timeout = timeoutsRef.current.get(id);
31
+ if (timeout) {
32
+ clearTimeout(timeout);
33
+ timeoutsRef.current.delete(id);
34
+ }
35
+ }, []);
36
+
37
+ const addToast = useCallback(
38
+ (type: ToastType, message: string, duration = 4000) => {
39
+ const id = `toast-${Date.now()}-${globalToastCounter++}`;
40
+ const newToast: ToastItem = {
41
+ id,
42
+ type,
43
+ message,
44
+ duration,
45
+ createdAt: Date.now(),
46
+ };
47
+
48
+ setToasts(prev => [...prev, newToast]);
49
+
50
+ if (duration > 0) {
51
+ const timeout = setTimeout(() => {
52
+ removeToast(id);
53
+ }, duration);
54
+ timeoutsRef.current.set(id, timeout);
55
+ }
56
+
57
+ return id;
58
+ },
59
+ [removeToast],
60
+ );
61
+
62
+ const clearAll = useCallback(() => {
63
+ timeoutsRef.current.forEach(timeout => clearTimeout(timeout));
64
+ timeoutsRef.current.clear();
65
+ setToasts([]);
66
+ }, []);
67
+
68
+ // Cleanup on unmount
69
+ useEffect(() => {
70
+ const timeouts = timeoutsRef.current;
71
+ return () => {
72
+ timeouts.forEach(timeout => clearTimeout(timeout));
73
+ timeouts.clear();
74
+ };
75
+ }, []);
76
+
77
+ return <ToastContext.Provider value={{ toasts, addToast, removeToast, clearAll }}>{children}</ToastContext.Provider>;
78
+ }
79
+
80
+ export function useToastContext() {
81
+ const context = useContext(ToastContext);
82
+ if (!context) {
83
+ throw new Error("useToastContext must be used within ToastProvider");
84
+ }
85
+ return context;
86
+ }
@@ -0,0 +1,4 @@
1
+ export { setToastContext, toast } from "./toastApi";
2
+ export { Toast, ToastContainer } from "./ToastComponents";
3
+ export { ToastProvider, useToastContext } from "./ToastContext";
4
+ export type { ToastItem, ToastType } from "./ToastContext";