@b3dotfun/sdk 0.0.65-test.5 → 0.0.66

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (316) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +69 -97
  2. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +23 -10
  3. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  4. package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
  5. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  6. package/dist/cjs/anyspend/react/components/AnySpendDepositUpside.js +41 -0
  7. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  8. package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +14 -251
  9. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  10. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
  11. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  12. package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  13. package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  14. package/dist/cjs/anyspend/react/components/common/OrderHistory.js +3 -7
  15. package/dist/cjs/anyspend/react/components/common/OrderTokenAmount.js +2 -10
  16. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  17. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  18. package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
  19. package/dist/cjs/anyspend/react/components/index.d.ts +1 -0
  20. package/dist/cjs/anyspend/react/components/index.js +4 -1
  21. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  22. package/dist/cjs/anyspend/react/hooks/useAnyspendFlow.js +16 -10
  23. package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  24. package/dist/cjs/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
  25. package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  26. package/dist/cjs/anyspend/react/hooks/useCryptoPaymentMethodState.js +51 -0
  27. package/dist/cjs/anyspend/react/hooks/useSigMint.d.ts +1 -1
  28. package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  29. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  30. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +35 -251
  31. package/dist/cjs/global-account/react/components/B3DynamicModal.js +15 -23
  32. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  33. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +279 -113
  34. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
  35. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +193 -24
  36. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  37. package/dist/cjs/global-account/react/components/ProfileEditor/ProfileEditor.js +141 -0
  38. package/dist/cjs/global-account/react/components/SignInWithB3/SignIn.js +1 -3
  39. package/dist/cjs/global-account/react/components/index.d.ts +4 -5
  40. package/dist/cjs/global-account/react/components/index.js +9 -14
  41. package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
  42. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  43. package/dist/cjs/global-account/react/components/ui/drawer.js +1 -1
  44. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
  45. package/dist/cjs/global-account/react/hooks/index.js +1 -3
  46. package/dist/cjs/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  47. package/dist/cjs/global-account/react/hooks/useAccountWallet.js +0 -18
  48. package/dist/cjs/global-account/react/hooks/useAuthentication.d.ts +2 -2
  49. package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  50. package/dist/cjs/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
  51. package/dist/cjs/global-account/react/hooks/useUserQuery.d.ts +2 -2
  52. package/dist/cjs/global-account/react/stores/index.d.ts +0 -1
  53. package/dist/cjs/global-account/react/stores/index.js +1 -3
  54. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +26 -31
  55. package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +0 -2
  56. package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
  57. package/dist/cjs/shared/constants/chains/supported.d.ts +3 -3
  58. package/dist/cjs/shared/utils/ipfs.js +3 -10
  59. package/dist/esm/anyspend/react/components/AnySpend.js +70 -98
  60. package/dist/esm/anyspend/react/components/AnySpendCustom.js +23 -10
  61. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  62. package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +45 -14
  63. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  64. package/dist/esm/anyspend/react/components/AnySpendDepositUpside.js +38 -0
  65. package/dist/esm/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  66. package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +15 -249
  67. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  68. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +3 -5
  69. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  70. package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  71. package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  72. package/dist/esm/anyspend/react/components/common/OrderHistory.js +5 -6
  73. package/dist/esm/anyspend/react/components/common/OrderTokenAmount.js +2 -10
  74. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  75. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  76. package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
  77. package/dist/esm/anyspend/react/components/index.d.ts +1 -0
  78. package/dist/esm/anyspend/react/components/index.js +1 -0
  79. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  80. package/dist/esm/anyspend/react/hooks/useAnyspendFlow.js +16 -10
  81. package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  82. package/dist/esm/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.js +13 -9
  83. package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  84. package/dist/esm/anyspend/react/hooks/useCryptoPaymentMethodState.js +48 -0
  85. package/dist/esm/anyspend/react/hooks/useSigMint.d.ts +1 -1
  86. package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  87. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  88. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +38 -254
  89. package/dist/esm/global-account/react/components/B3DynamicModal.js +15 -23
  90. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  91. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +280 -113
  92. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +5 -6
  93. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +195 -26
  94. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  95. package/dist/esm/global-account/react/components/ProfileEditor/ProfileEditor.js +135 -0
  96. package/dist/esm/global-account/react/components/SignInWithB3/SignIn.js +2 -4
  97. package/dist/esm/global-account/react/components/index.d.ts +4 -5
  98. package/dist/esm/global-account/react/components/index.js +5 -9
  99. package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
  100. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  101. package/dist/esm/global-account/react/components/ui/drawer.js +1 -1
  102. package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
  103. package/dist/esm/global-account/react/hooks/index.js +1 -1
  104. package/dist/esm/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  105. package/dist/esm/global-account/react/hooks/useAccountWallet.js +0 -17
  106. package/dist/esm/global-account/react/hooks/useAuthentication.d.ts +2 -2
  107. package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  108. package/dist/esm/global-account/react/hooks/useUnifiedChainSwitchAndExecute.js +6 -14
  109. package/dist/esm/global-account/react/hooks/useUserQuery.d.ts +2 -2
  110. package/dist/esm/global-account/react/stores/index.d.ts +0 -1
  111. package/dist/esm/global-account/react/stores/index.js +0 -1
  112. package/dist/esm/global-account/react/stores/useModalStore.d.ts +26 -31
  113. package/dist/esm/global-account/react/utils/profileDisplay.d.ts +0 -2
  114. package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
  115. package/dist/esm/shared/constants/chains/supported.d.ts +3 -3
  116. package/dist/esm/shared/utils/ipfs.js +3 -10
  117. package/dist/styles/index.css +1 -1
  118. package/dist/types/anyspend/react/components/AnySpendCustomExactIn.d.ts +3 -1
  119. package/dist/types/anyspend/react/components/AnySpendDepositUpside.d.ts +11 -0
  120. package/dist/types/anyspend/react/components/AnyspendDepositHype.d.ts +1 -1
  121. package/dist/types/anyspend/react/components/common/CryptoPaymentMethod.d.ts +6 -0
  122. package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  123. package/dist/types/anyspend/react/components/index.d.ts +1 -0
  124. package/dist/types/anyspend/react/hooks/useAnyspendFlow.d.ts +5 -1
  125. package/dist/types/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.d.ts +7 -5
  126. package/dist/types/anyspend/react/hooks/useCryptoPaymentMethodState.d.ts +42 -0
  127. package/dist/types/anyspend/react/hooks/useSigMint.d.ts +1 -1
  128. package/dist/types/global-account/react/components/AvatarEditor/AvatarEditor.d.ts +0 -1
  129. package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  130. package/dist/types/global-account/react/components/ProfileEditor/ProfileEditor.d.ts +6 -0
  131. package/dist/types/global-account/react/components/index.d.ts +4 -5
  132. package/dist/types/global-account/react/hooks/index.d.ts +1 -1
  133. package/dist/types/global-account/react/hooks/useAccountWallet.d.ts +0 -1
  134. package/dist/types/global-account/react/hooks/useAuthentication.d.ts +2 -2
  135. package/dist/types/global-account/react/hooks/useUserQuery.d.ts +2 -2
  136. package/dist/types/global-account/react/stores/index.d.ts +0 -1
  137. package/dist/types/global-account/react/stores/useModalStore.d.ts +26 -31
  138. package/dist/types/global-account/react/utils/profileDisplay.d.ts +0 -2
  139. package/dist/types/shared/constants/chains/supported.d.ts +3 -3
  140. package/package.json +1 -2
  141. package/src/anyspend/react/components/AnySpend.tsx +218 -256
  142. package/src/anyspend/react/components/AnySpendCustom.tsx +31 -16
  143. package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +56 -13
  144. package/src/anyspend/react/components/AnySpendDepositUpside.tsx +81 -0
  145. package/src/anyspend/react/components/AnyspendDepositHype.tsx +36 -524
  146. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +14 -7
  147. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
  148. package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
  149. package/src/anyspend/react/components/common/OrderHistory.tsx +13 -8
  150. package/src/anyspend/react/components/common/OrderTokenAmount.tsx +2 -13
  151. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
  152. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
  153. package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
  154. package/src/anyspend/react/components/index.ts +1 -0
  155. package/src/anyspend/react/hooks/useAnyspendFlow.ts +24 -12
  156. package/src/anyspend/react/hooks/useAutoSelectCryptoPaymentMethod.ts +20 -12
  157. package/src/anyspend/react/hooks/useCryptoPaymentMethodState.ts +71 -0
  158. package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +25 -115
  159. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +128 -477
  160. package/src/global-account/react/components/B3DynamicModal.tsx +17 -28
  161. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +433 -332
  162. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +10 -6
  163. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +589 -73
  164. package/src/global-account/react/components/ProfileEditor/ProfileEditor.tsx +265 -0
  165. package/src/global-account/react/components/SignInWithB3/SignIn.tsx +7 -11
  166. package/src/global-account/react/components/index.ts +5 -11
  167. package/src/global-account/react/components/ui/Tabs.tsx +13 -5
  168. package/src/global-account/react/components/ui/dialog.tsx +14 -32
  169. package/src/global-account/react/components/ui/drawer.tsx +1 -1
  170. package/src/global-account/react/hooks/index.ts +0 -3
  171. package/src/global-account/react/hooks/useAccountWallet.tsx +0 -26
  172. package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +0 -1
  173. package/src/global-account/react/hooks/useUnifiedChainSwitchAndExecute.ts +6 -12
  174. package/src/global-account/react/stores/index.ts +0 -1
  175. package/src/global-account/react/stores/useModalStore.ts +28 -35
  176. package/src/global-account/react/utils/profileDisplay.ts +2 -4
  177. package/src/shared/utils/ipfs.ts +3 -10
  178. package/src/styles/index.css +9 -6
  179. package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  180. package/dist/cjs/global-account/react/components/Deposit/Deposit.js +0 -65
  181. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  182. package/dist/cjs/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -37
  183. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  184. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -331
  185. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  186. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +0 -34
  187. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  188. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +0 -23
  189. package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  190. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +0 -120
  191. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  192. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +0 -43
  193. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  194. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +0 -16
  195. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  196. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +0 -15
  197. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  198. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +0 -47
  199. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  200. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +0 -50
  201. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  202. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -8
  203. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  204. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -106
  205. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  206. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +0 -22
  207. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  208. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +0 -12
  209. package/dist/cjs/global-account/react/components/Send/Send.d.ts +0 -5
  210. package/dist/cjs/global-account/react/components/Send/Send.js +0 -187
  211. package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +0 -3
  212. package/dist/cjs/global-account/react/components/icons/BellIcon.js +0 -5
  213. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  214. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +0 -7
  215. package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  216. package/dist/cjs/global-account/react/components/icons/CopyIcon.js +0 -7
  217. package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  218. package/dist/cjs/global-account/react/components/icons/LinkIcon.js +0 -5
  219. package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +0 -3
  220. package/dist/cjs/global-account/react/components/icons/LockIcon.js +0 -5
  221. package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  222. package/dist/cjs/global-account/react/components/icons/WalletIcon.js +0 -7
  223. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  224. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +0 -36
  225. package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  226. package/dist/esm/global-account/react/components/Deposit/Deposit.js +0 -59
  227. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  228. package/dist/esm/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.js +0 -34
  229. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  230. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -325
  231. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  232. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +0 -32
  233. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  234. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +0 -21
  235. package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  236. package/dist/esm/global-account/react/components/ManageAccount/Header.js +0 -81
  237. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  238. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +0 -41
  239. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  240. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +0 -10
  241. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  242. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +0 -13
  243. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  244. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +0 -45
  245. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  246. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +0 -45
  247. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  248. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -6
  249. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  250. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -101
  251. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  252. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +0 -20
  253. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  254. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +0 -10
  255. package/dist/esm/global-account/react/components/Send/Send.d.ts +0 -5
  256. package/dist/esm/global-account/react/components/Send/Send.js +0 -181
  257. package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +0 -3
  258. package/dist/esm/global-account/react/components/icons/BellIcon.js +0 -3
  259. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  260. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +0 -4
  261. package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  262. package/dist/esm/global-account/react/components/icons/CopyIcon.js +0 -4
  263. package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  264. package/dist/esm/global-account/react/components/icons/LinkIcon.js +0 -3
  265. package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +0 -3
  266. package/dist/esm/global-account/react/components/icons/LockIcon.js +0 -3
  267. package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  268. package/dist/esm/global-account/react/components/icons/WalletIcon.js +0 -4
  269. package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  270. package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +0 -33
  271. package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  272. package/dist/types/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.d.ts +0 -39
  273. package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  274. package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  275. package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  276. package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  277. package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  278. package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  279. package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  280. package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  281. package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  282. package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  283. package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  284. package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  285. package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -11
  286. package/dist/types/global-account/react/components/Send/Send.d.ts +0 -5
  287. package/dist/types/global-account/react/components/icons/BellIcon.d.ts +0 -3
  288. package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  289. package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  290. package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  291. package/dist/types/global-account/react/components/icons/LockIcon.d.ts +0 -3
  292. package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  293. package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  294. package/src/global-account/react/components/Deposit/Deposit.tsx +0 -211
  295. package/src/global-account/react/components/IPFSMediaRenderer/IPFSMediaRenderer.tsx +0 -84
  296. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +0 -490
  297. package/src/global-account/react/components/ManageAccount/AppsContent.tsx +0 -79
  298. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +0 -83
  299. package/src/global-account/react/components/ManageAccount/Header.tsx +0 -230
  300. package/src/global-account/react/components/ManageAccount/HomeActions.tsx +0 -118
  301. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +0 -42
  302. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +0 -24
  303. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +0 -79
  304. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +0 -87
  305. package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +0 -31
  306. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +0 -182
  307. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +0 -41
  308. package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +0 -61
  309. package/src/global-account/react/components/Send/Send.tsx +0 -585
  310. package/src/global-account/react/components/icons/BellIcon.tsx +0 -15
  311. package/src/global-account/react/components/icons/ChevronDownIcon.tsx +0 -17
  312. package/src/global-account/react/components/icons/CopyIcon.tsx +0 -22
  313. package/src/global-account/react/components/icons/LinkIcon.tsx +0 -15
  314. package/src/global-account/react/components/icons/LockIcon.tsx +0 -15
  315. package/src/global-account/react/components/icons/WalletIcon.tsx +0 -21
  316. package/src/global-account/react/stores/useRecentAddressesStore.ts +0 -55
@@ -3,52 +3,113 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.LinkAccount = void 0;
6
+ exports.LinkAccount = LinkAccount;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
8
  const app_1 = __importDefault(require("../../../../global-account/app"));
9
- const react_1 = require("../../../../global-account/react");
9
+ const constants_1 = require("../../../../shared/constants");
10
+ const b3Chain_1 = require("../../../../shared/constants/chains/b3Chain");
10
11
  const thirdweb_1 = require("../../../../shared/utils/thirdweb");
11
- const truncateAddress_1 = require("../../../../shared/utils/truncateAddress");
12
12
  const lucide_react_1 = require("lucide-react");
13
- const react_2 = require("react");
13
+ const react_1 = require("react");
14
14
  const sonner_1 = require("sonner");
15
- const react_3 = require("thirdweb/react");
15
+ const react_2 = require("thirdweb/react");
16
+ const wallets_1 = require("thirdweb/wallets");
17
+ const __1 = require("../..");
18
+ const useModalStore_1 = require("../../stores/useModalStore");
16
19
  const profileDisplay_1 = require("../../utils/profileDisplay");
17
- // Helper function to check if a string is a wallet address and format it
18
- const formatProfileTitle = (title) => {
19
- // Check if title looks like an Ethereum address (0x followed by 40 hex characters)
20
- const isEthereumAddress = /^0x[a-fA-F0-9]{40}$/.test(title);
21
- if (isEthereumAddress) {
22
- return {
23
- displayTitle: (0, truncateAddress_1.truncateAddress)(title),
24
- isAddress: true,
20
+ const useB3_1 = require("../B3Provider/useB3");
21
+ const AppleIcon_1 = require("../icons/AppleIcon");
22
+ const DiscordIcon_1 = require("../icons/DiscordIcon");
23
+ const FarcasterIcon_1 = require("../icons/FarcasterIcon");
24
+ const GoogleIcon_1 = require("../icons/GoogleIcon");
25
+ const XIcon_1 = require("../icons/XIcon");
26
+ const button_1 = require("../ui/button");
27
+ const AUTH_METHODS = [
28
+ { id: "email", label: "Email", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Mail, { className: "text-b3-primary-blue size-6" }) },
29
+ { id: "phone", label: "Phone", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.Phone, { className: "text-b3-primary-blue size-6" }) },
30
+ { id: "google", label: "Google", enabled: true, icon: (0, jsx_runtime_1.jsx)(GoogleIcon_1.GoogleIcon, { className: "size-6" }) },
31
+ { id: "x", label: "X (Twitter)", enabled: true, icon: (0, jsx_runtime_1.jsx)(XIcon_1.XIcon, { className: "size-6" }) },
32
+ { id: "discord", label: "Discord", enabled: true, icon: (0, jsx_runtime_1.jsx)(DiscordIcon_1.DiscordIcon, { className: "size-6" }) },
33
+ { id: "apple", label: "Apple", enabled: true, icon: (0, jsx_runtime_1.jsx)(AppleIcon_1.AppleIcon, { className: "size-6" }) },
34
+ {
35
+ id: "farcaster",
36
+ label: "Farcaster",
37
+ enabled: true,
38
+ icon: (0, jsx_runtime_1.jsx)(FarcasterIcon_1.FarcasterIcon, { className: "size-6" }),
39
+ },
40
+ ];
41
+ const WALLET_METHODS = [
42
+ {
43
+ id: "wallet",
44
+ label: "Wallet",
45
+ enabled: true,
46
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
47
+ walletType: "com.coinbase.wallet",
48
+ },
49
+ { id: "wallet", label: "Wallet", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }), walletType: "io.metamask" },
50
+ {
51
+ id: "wallet",
52
+ label: "Wallet",
53
+ enabled: true,
54
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
55
+ walletType: "me.rainbow",
56
+ },
57
+ {
58
+ id: "wallet",
59
+ label: "Wallet",
60
+ enabled: true,
61
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
62
+ walletType: "app.phantom",
63
+ },
64
+ { id: "wallet", label: "Wallet", enabled: true, icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }), walletType: "io.rabby" },
65
+ {
66
+ id: "wallet",
67
+ label: "Wallet",
68
+ enabled: true,
69
+ icon: (0, jsx_runtime_1.jsx)(lucide_react_1.WalletIcon, { className: "size-6" }),
70
+ walletType: "walletConnect",
71
+ },
72
+ ];
73
+ function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, partnerId, className, }) {
74
+ const { isLinking, linkingMethod, setLinkingState, navigateBack, setB3ModalContentType } = (0, useModalStore_1.useModalStore)();
75
+ const [selectedMethod, setSelectedMethod] = (0, react_1.useState)(null);
76
+ const [email, setEmail] = (0, react_1.useState)("");
77
+ const [phone, setPhone] = (0, react_1.useState)("");
78
+ const [otp, setOtp] = (0, react_1.useState)("");
79
+ const [otpSent, setOtpSent] = (0, react_1.useState)(false);
80
+ const [error, setError] = (0, react_1.useState)(null);
81
+ const { data: profilesRaw = [] } = (0, react_2.useProfiles)({ client: thirdweb_1.client });
82
+ // Get connected auth methods
83
+ const connectedAuthMethods = profilesRaw
84
+ .filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
85
+ .map((profile) => profile.type);
86
+ // Filter available auth methods
87
+ const availableAuthMethods = AUTH_METHODS.filter(method => !connectedAuthMethods.includes(method.id) && method.enabled);
88
+ const profiles = profilesRaw
89
+ .filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
90
+ .map((profile) => ({
91
+ ...(0, profileDisplay_1.getProfileDisplayInfo)(profile),
92
+ originalProfile: profile,
93
+ }));
94
+ const { account } = (0, useB3_1.useB3)();
95
+ const { mutate: linkProfile } = (0, react_2.useLinkProfile)();
96
+ const onSuccess = (0, react_1.useCallback)(async () => {
97
+ await onSuccessCallback?.();
98
+ }, [onSuccessCallback]);
99
+ // Reset linking state when component unmounts
100
+ (0, react_1.useEffect)(() => {
101
+ return () => {
102
+ if (isLinking) {
103
+ setLinkingState(false);
104
+ }
25
105
  };
26
- }
27
- return {
28
- displayTitle: title,
29
- isAddress: false,
30
- };
31
- };
32
- const ModalHeader_1 = __importDefault(require("../ModalHeader/ModalHeader"));
33
- const LinkAccount = ({ partnerId, onLogout, chain, }) => {
34
- const [unlinkingAccountId, setUnlinkingAccountId] = (0, react_2.useState)(null);
35
- const { data: profilesRaw = [], isLoading: isLoadingProfiles } = (0, react_3.useProfiles)({ client: thirdweb_1.client });
36
- const { mutate: unlinkProfile, isPending: isUnlinking } = (0, react_3.useUnlinkProfile)();
37
- const setB3ModalContentType = (0, react_1.useModalStore)(state => state.setB3ModalContentType);
38
- const isLinking = (0, react_1.useModalStore)(state => state.isLinking);
39
- const setB3ModalOpen = (0, react_1.useModalStore)(state => state.setB3ModalOpen);
40
- const contentType = (0, react_1.useModalStore)(state => state.contentType);
41
- const { user, setUser } = (0, react_1.useB3)();
42
- const [isUpdatingCode, setIsUpdatingCode] = (0, react_2.useState)(false);
43
- const [newReferralCode, setNewReferralCode] = (0, react_2.useState)("");
44
- const [isEditingCode, setIsEditingCode] = (0, react_2.useState)(false);
45
- const referallCodeRef = (0, react_2.useRef)(null);
46
- const { data: referrals, isLoading: isLoadingReferrals } = (0, react_1.useQueryB3)("referrals", "find", { query: { referrerId: user?.userId } }, !!user?.userId);
47
- const showReferralInfo = contentType?.showReferralInfo ?? false;
106
+ }, [isLinking, setLinkingState]);
48
107
  const mutationOptions = {
49
108
  onError: (error) => {
50
- console.error("Error Unlinking account:", error);
109
+ console.error("Error linking account:", error);
51
110
  sonner_1.toast.error(error.message);
111
+ setLinkingState(false);
112
+ onError?.(error);
52
113
  },
53
114
  onSuccess: async (data) => {
54
115
  console.log("Raw Link Account Data:", data);
@@ -61,100 +122,205 @@ const LinkAccount = ({ partnerId, onLogout, chain, }) => {
61
122
  }
62
123
  },
63
124
  };
64
- // Fetch referred users
65
- const currentReferralCode = user?.referralCode || user?.userId || "";
66
- const handleCopyCode = async () => {
125
+ const validateInput = () => {
126
+ if (selectedMethod === "email") {
127
+ if (!email) {
128
+ setError("Please enter your email address");
129
+ return false;
130
+ }
131
+ if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
132
+ setError("Please enter a valid email address");
133
+ return false;
134
+ }
135
+ }
136
+ else if (selectedMethod === "phone") {
137
+ if (!phone) {
138
+ setError("Please enter your phone number");
139
+ return false;
140
+ }
141
+ if (!/^\+?[\d\s-]{10,}$/.test(phone)) {
142
+ setError("Please enter a valid phone number");
143
+ return false;
144
+ }
145
+ }
146
+ setError(null);
147
+ return true;
148
+ };
149
+ const handleSendOTP = async () => {
150
+ if (!validateInput())
151
+ return;
67
152
  try {
68
- await navigator.clipboard.writeText(currentReferralCode);
69
- sonner_1.toast.success("Referral code copied to clipboard!");
153
+ setLinkingState(true, selectedMethod);
154
+ setError(null);
155
+ if (selectedMethod === "email") {
156
+ await (0, wallets_1.preAuthenticate)({
157
+ client: thirdweb_1.client,
158
+ strategy: "email",
159
+ email,
160
+ ecosystem: {
161
+ id: constants_1.ecosystemWalletId,
162
+ partnerId: partnerId,
163
+ },
164
+ });
165
+ }
166
+ else if (selectedMethod === "phone") {
167
+ await (0, wallets_1.preAuthenticate)({
168
+ client: thirdweb_1.client,
169
+ strategy: "phone",
170
+ phoneNumber: phone,
171
+ ecosystem: {
172
+ id: constants_1.ecosystemWalletId,
173
+ partnerId: partnerId,
174
+ },
175
+ });
176
+ }
177
+ setOtpSent(true);
70
178
  }
71
179
  catch (error) {
72
- sonner_1.toast.error("Failed to copy referral code");
180
+ console.error("Error sending OTP:", error);
181
+ setError(error instanceof Error ? error.message : "Failed to send OTP");
182
+ onError?.(error);
183
+ setLinkingState(false);
73
184
  }
74
185
  };
75
- const handleUpdateReferralCode = async () => {
76
- if (!newReferralCode)
186
+ const handleLinkAccount = async () => {
187
+ if (!otp) {
188
+ console.error("No OTP entered");
189
+ setError("Please enter the verification code");
77
190
  return;
78
- setIsUpdatingCode(true);
191
+ }
79
192
  try {
80
- // @ts-expect-error - setReferralCode is not typed for some reason
81
- const newUser = await app_1.default.service("users").setReferralCode({
82
- userId: user?.userId,
83
- referralCode: newReferralCode,
84
- });
85
- setUser(newUser);
86
- sonner_1.toast.success("Referral code updated successfully!");
87
- setIsEditingCode(false);
88
- setNewReferralCode("");
193
+ setOtpSent(false);
194
+ setLinkingState(true, selectedMethod);
195
+ setError(null);
196
+ if (selectedMethod === "email") {
197
+ await linkProfile({
198
+ client: thirdweb_1.client,
199
+ strategy: "email",
200
+ email,
201
+ verificationCode: otp,
202
+ }, mutationOptions);
203
+ }
204
+ else if (selectedMethod === "phone") {
205
+ await linkProfile({
206
+ client: thirdweb_1.client,
207
+ strategy: "phone",
208
+ phoneNumber: phone,
209
+ verificationCode: otp,
210
+ }, mutationOptions);
211
+ }
89
212
  }
90
213
  catch (error) {
91
- sonner_1.toast.error("Failed to update referral code");
92
- }
93
- finally {
94
- setIsUpdatingCode(false);
214
+ console.error("Error linking account:", error);
215
+ setError(error instanceof Error ? error.message : "Failed to link account");
216
+ onError?.(error);
95
217
  }
96
218
  };
97
- const profiles = profilesRaw
98
- .filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
99
- .map((profile) => ({
100
- ...(0, profileDisplay_1.getProfileDisplayInfo)(profile),
101
- originalProfile: profile,
102
- }));
103
- const handleUnlink = async (profile) => {
104
- setUnlinkingAccountId(profile.title);
219
+ const handleLinkWallet = async (walletType) => {
220
+ setLinkingState(true, "wallet");
221
+ console.log("selectedMethod", walletType);
105
222
  try {
106
- unlinkProfile({ client: thirdweb_1.client, profileToUnlink: profile.originalProfile }, mutationOptions);
223
+ if (!walletType) {
224
+ throw new Error("Wallet type not found");
225
+ }
226
+ await linkProfile({
227
+ client: thirdweb_1.client,
228
+ strategy: "wallet",
229
+ wallet: (0, wallets_1.createWallet)(walletType),
230
+ chain: b3Chain_1.thirdwebB3Mainnet,
231
+ }, mutationOptions);
107
232
  }
108
233
  catch (error) {
109
- console.error("Error unlinking account:", error);
234
+ console.error("Error linking account:", error);
235
+ setError(error instanceof Error ? error.message : "Failed to link account");
236
+ onError?.(error);
110
237
  }
111
- finally {
112
- setUnlinkingAccountId(null);
238
+ };
239
+ const handleSocialLink = async (strategy) => {
240
+ try {
241
+ console.log("handleSocialLink", strategy);
242
+ setLinkingState(true, strategy);
243
+ setError(null);
244
+ const result = await linkProfile({
245
+ client: thirdweb_1.client,
246
+ strategy,
247
+ }, mutationOptions);
248
+ console.log("result", result);
249
+ // Don't close the modal yet, wait for auth to complete
250
+ onSuccess?.();
251
+ }
252
+ catch (error) {
253
+ console.error("Error linking with social:", error);
254
+ setError(error instanceof Error ? error.message : "Failed to link social account");
255
+ onError?.(error);
256
+ setLinkingState(false);
113
257
  }
114
258
  };
115
- const handleOpenLinkModal = () => {
116
- setB3ModalOpen(true);
259
+ // Add effect to handle social auth completion
260
+ (0, react_1.useEffect)(() => {
261
+ if (isLinking && linkingMethod && !selectedMethod) {
262
+ // This means we're in a social auth flow
263
+ const checkAuthStatus = async () => {
264
+ try {
265
+ // Wait a bit to ensure auth is complete
266
+ await new Promise(resolve => setTimeout(resolve, 1000));
267
+ onClose?.();
268
+ }
269
+ catch (error) {
270
+ console.error("Error checking auth status:", error);
271
+ setLinkingState(false);
272
+ }
273
+ };
274
+ checkAuthStatus();
275
+ }
276
+ }, [isLinking, linkingMethod, selectedMethod, onClose, setLinkingState]);
277
+ const handleBack = (0, react_1.useCallback)(() => {
278
+ if (isLinking)
279
+ return;
280
+ setSelectedMethod(null);
281
+ setEmail("");
282
+ setPhone("");
283
+ setOtp("");
284
+ setOtpSent(false);
285
+ setError(null);
286
+ setLinkingState(false);
287
+ }, [isLinking, setSelectedMethod, setEmail, setPhone, setOtp, setOtpSent, setError, setLinkingState]);
288
+ const handleFinishedLinking = (0, react_1.useCallback)((success) => {
289
+ if (success) {
290
+ onSuccess?.();
291
+ onClose?.();
292
+ }
293
+ setLinkingState(false);
294
+ navigateBack();
117
295
  setB3ModalContentType({
118
- type: "linkNewAccount",
119
- partnerId,
296
+ type: "manageAccount",
297
+ activeTab: "settings",
298
+ setActiveTab: () => { },
120
299
  chain,
121
- onSuccess: async () => {
122
- // Let the LinkAccount component handle modal closing
123
- },
124
- onError: () => {
125
- // Let the LinkAccount component handle errors
126
- },
127
- onClose: () => {
128
- // Let the LinkAccount component handle closing
129
- },
300
+ partnerId,
130
301
  });
131
- };
132
- return ((0, jsx_runtime_1.jsxs)("div", { className: "linked-accounts-settings", children: [(0, jsx_runtime_1.jsx)(ModalHeader_1.default, { title: "Linked Accounts" }), (0, jsx_runtime_1.jsxs)("div", { className: "linked-accounts-section space-y-4 p-5", children: [isLoadingProfiles ? ((0, jsx_runtime_1.jsx)("div", { className: "linked-accounts-loading flex justify-center py-8", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "text-b3-grey animate-spin" }) })) : profiles.length > 0 ? ((0, jsx_runtime_1.jsx)("div", { className: "linked-accounts-list space-y-4", children: profiles.map(profile => ((0, jsx_runtime_1.jsxs)("div", { className: "linked-account-item hover:bg-b3-line group flex cursor-pointer items-center justify-between rounded-xl p-4 transition-colors", children: [(0, jsx_runtime_1.jsxs)("div", { className: "linked-account-info flex items-center gap-3", children: [profile.imageUrl ? ((0, jsx_runtime_1.jsx)("img", { src: profile.imageUrl, alt: profile.title, className: "linked-account-avatar linked-account-avatar-image size-10 rounded-full" })) : ((0, jsx_runtime_1.jsx)("div", { className: "linked-account-avatar linked-account-avatar-placeholder bg-b3-primary-wash flex h-10 w-10 items-center justify-center rounded-full", children: (0, jsx_runtime_1.jsx)("span", { className: "linked-account-initial text-b3-grey font-neue-montreal-semibold text-sm uppercase", children: profile.initial }) })), (0, jsx_runtime_1.jsxs)("div", { className: "linked-account-details", children: [(0, jsx_runtime_1.jsxs)("div", { className: "linked-account-title-row flex items-center gap-2", children: [(() => {
133
- const { displayTitle, isAddress } = formatProfileTitle(profile.title);
134
- const handleCopyAddress = async (e) => {
135
- e.stopPropagation();
136
- try {
137
- await navigator.clipboard.writeText(profile.title);
138
- sonner_1.toast.success("Address copied to clipboard!");
139
- }
140
- catch (error) {
141
- sonner_1.toast.error("Failed to copy address");
142
- }
143
- };
144
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex items-center gap-1", children: [(0, jsx_runtime_1.jsx)("span", { className: `linked-account-title text-b3-grey font-neue-montreal-semibold ${isAddress
145
- ? "font-mono text-sm" // Use monospace font for addresses
146
- : "break-words" // Use break-words for emails/names (better than break-all)
147
- }`, title: isAddress ? profile.title : undefined, children: displayTitle }), isAddress && ((0, jsx_runtime_1.jsx)("button", { onClick: handleCopyAddress, className: "linked-account-copy-button ml-1 rounded p-1 opacity-0 transition-opacity hover:bg-gray-100 group-hover:opacity-100", title: "Copy full address", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { size: 12, className: "text-gray-500 hover:text-gray-700" }) }))] }));
148
- })(), (0, jsx_runtime_1.jsx)("span", { className: "linked-account-type text-b3-foreground-muted font-neue-montreal-medium bg-b3-primary-wash rounded px-2 py-0.5 text-xs", children: profile.type.toUpperCase() })] }), (0, jsx_runtime_1.jsx)("div", { className: "linked-account-subtitle text-b3-foreground-muted font-neue-montreal-medium text-sm", children: profile.subtitle })] })] }), (0, jsx_runtime_1.jsx)(react_1.Button, { variant: "ghost", size: "icon", className: "linked-account-unlink-button text-b3-grey hover:text-b3-negative", onClick: () => handleUnlink(profile), disabled: unlinkingAccountId === profile.title || isUnlinking, children: unlinkingAccountId === profile.title || isUnlinking ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "linked-account-unlink-loading animate-spin" })) : ((0, jsx_runtime_1.jsx)(lucide_react_1.UnlinkIcon, { size: 16, className: "linked-account-unlink-icon" })) })] }, profile.title))) })) : ((0, jsx_runtime_1.jsx)("div", { className: "linked-accounts-empty text-b3-foreground-muted py-8 text-center", children: "No linked accounts found" })), (0, jsx_runtime_1.jsx)(react_1.Button, { onClick: handleOpenLinkModal, disabled: isLinking, className: "b3-modal-link-new-account-button bg-b3-primary-blue hover:bg-b3-primary-blue/90 border-white/12 group relative h-12 w-full rounded-xl border-2 px-[18px] text-base font-semibold text-white shadow-[inset_0px_0px_0px_1px_rgba(10,13,18,0.18),inset_0px_-2px_0px_0px_rgba(10,13,18,0.05)] transition-all", children: (0, jsx_runtime_1.jsxs)("div", { className: "flex items-center justify-center gap-1.5", children: [(0, jsx_runtime_1.jsx)("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "shrink-0", children: (0, jsx_runtime_1.jsx)("path", { d: "M10.0001 13.3333V6.66667M6.66675 10H13.3334M18.3334 10C18.3334 14.6024 14.6025 18.3333 10.0001 18.3333C5.39771 18.3333 1.66675 14.6024 1.66675 10C1.66675 5.39763 5.39771 1.66667 10.0001 1.66667C14.6025 1.66667 18.3334 5.39763 18.3334 10Z", stroke: "currentColor", strokeWidth: "1.67", strokeLinecap: "round", strokeLinejoin: "round" }) }), (0, jsx_runtime_1.jsx)("span", { children: "Link new account" })] }) })] }), showReferralInfo && (
149
- /* Referral Section */
150
- (0, jsx_runtime_1.jsxs)("div", { className: "referrals-section space-y-4", children: [(0, jsx_runtime_1.jsx)("h3", { className: "referrals-title text-b3-grey font-neue-montreal-semibold text-xl", children: "Referrals" }), (0, jsx_runtime_1.jsxs)("div", { className: "referral-code-container bg-b3-line rounded-xl p-4", children: [isEditingCode && ((0, jsx_runtime_1.jsxs)("div", { className: "referral-code-header-editing", children: [(0, jsx_runtime_1.jsx)("div", { className: "referral-code-title text-b3-grey font-neue-montreal-semibold", children: "Your Referral Code" }), (0, jsx_runtime_1.jsx)("div", { className: "referral-code-description text-b3-foreground-muted font-neue-montreal-medium text-sm", children: "Share this code with friends to earn rewards" })] })), (0, jsx_runtime_1.jsxs)("div", { className: "referral-code-content flex items-center justify-between", children: [!isEditingCode && ((0, jsx_runtime_1.jsxs)("div", { className: "referral-code-header", children: [(0, jsx_runtime_1.jsx)("div", { className: "referral-code-title text-b3-grey font-neue-montreal-semibold", children: "Your Referral Code" }), (0, jsx_runtime_1.jsx)("div", { className: "referral-code-description text-b3-foreground-muted font-neue-montreal-medium text-sm", children: "Share this code with friends to earn rewards" })] })), (0, jsx_runtime_1.jsx)("div", { className: "referral-code-actions flex items-center gap-2", children: isEditingCode ? ((0, jsx_runtime_1.jsxs)("div", { className: "referral-code-edit-form flex items-center gap-2", children: [(0, jsx_runtime_1.jsx)("input", { type: "text", value: newReferralCode, onChange: e => setNewReferralCode(e.target.value), className: "referral-code-input rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm", placeholder: "Enter new code", ref: referallCodeRef }), (0, jsx_runtime_1.jsx)(react_1.Button, { size: "sm", className: "referral-code-save-button", onClick: handleUpdateReferralCode, disabled: isUpdatingCode || !newReferralCode, children: isUpdatingCode ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "referral-code-save-loading h-4 w-4 animate-spin" })) : ("Save") }), (0, jsx_runtime_1.jsx)(react_1.Button, { size: "sm", variant: "ghost", className: "referral-code-cancel-button", onClick: () => {
151
- setIsEditingCode(false);
152
- setNewReferralCode("");
153
- }, children: "Cancel" })] })) : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: "referral-code-display rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm", children: currentReferralCode }), (0, jsx_runtime_1.jsx)(react_1.Button, { size: "icon", variant: "ghost", className: "referral-code-copy-button", onClick: handleCopyCode, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Copy, { className: "referral-code-copy-icon h-4 w-4" }) }), (0, jsx_runtime_1.jsx)(react_1.Button, { size: "icon", variant: "ghost", className: "referral-code-edit-button", onClick: () => {
154
- setIsEditingCode(true);
155
- setTimeout(() => {
156
- referallCodeRef.current?.focus();
157
- }, 100);
158
- }, children: (0, jsx_runtime_1.jsx)(lucide_react_1.Pencil, { className: "referral-code-edit-icon h-4 w-4" }) })] })) })] })] }), (0, jsx_runtime_1.jsxs)("div", { className: "referred-users-container bg-b3-line rounded-xl p-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "referred-users-title text-b3-grey font-neue-montreal-semibold mb-4", children: "Referred Users" }), isLoadingReferrals ? ((0, jsx_runtime_1.jsx)("div", { className: "referred-users-loading flex justify-center py-4", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-6 w-6 animate-spin text-gray-400" }) })) : referrals?.data?.length ? ((0, jsx_runtime_1.jsx)("div", { className: "referred-users-list space-y-3", children: referrals.data.map((referral) => ((0, jsx_runtime_1.jsxs)("div", { className: "referred-user-item flex items-center justify-between rounded-lg bg-white p-3", children: [(0, jsx_runtime_1.jsx)("div", { className: "referred-user-id text-sm font-medium", children: referral.referreeId }), (0, jsx_runtime_1.jsx)("div", { className: "referred-user-date text-sm text-gray-500", children: new Date(referral.createdAt).toLocaleDateString() })] }, String(referral._id)))) })) : ((0, jsx_runtime_1.jsx)("div", { className: "referred-users-empty py-4 text-center text-gray-500", children: "No referred users yet" }))] })] }))] }));
159
- };
160
- exports.LinkAccount = LinkAccount;
302
+ }, [chain, navigateBack, partnerId, setB3ModalContentType, setLinkingState, onSuccess, onClose]);
303
+ (0, react_1.useEffect)(() => {
304
+ if (isLinking) {
305
+ handleFinishedLinking(true);
306
+ }
307
+ // eslint-disable-next-line react-hooks/exhaustive-deps
308
+ }, [profiles.length]);
309
+ if (!account) {
310
+ return (0, jsx_runtime_1.jsx)("div", { className: "text-b3-foreground-muted py-8 text-center", children: "Please connect your account first" });
311
+ }
312
+ return ((0, jsx_runtime_1.jsxs)("div", { className: `b3-link-account space-y-6 p-6 ${className || ""}`, "data-testid": "link-account", children: [(0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-header flex items-center justify-between", children: [(0, jsx_runtime_1.jsx)("h2", { className: "b3-link-account-title text-b3-grey font-neue-montreal-semibold text-2xl", children: "Link New Account" }), selectedMethod && ((0, jsx_runtime_1.jsx)(button_1.Button, { variant: "ghost", className: "text-b3-grey hover:text-b3-grey/80", onClick: handleBack, children: "Backs" }))] }), !selectedMethod ? ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-methods grid gap-3", children: [availableAuthMethods.map(method => ((0, jsx_runtime_1.jsx)(button_1.Button, { variant: "outline", className: "b3-link-account-method-button border-b3-line hover:border-b3-primary-blue/30 hover:bg-b3-primary-blue/5 text-b3-grey font-neue-montreal-medium h-14 justify-start bg-transparent px-6 text-base transition-all duration-200", "data-method": method.id, onClick: () => {
313
+ if (method.id === "email" || method.id === "phone") {
314
+ setSelectedMethod(method.id);
315
+ }
316
+ else {
317
+ handleSocialLink(method.id);
318
+ }
319
+ }, disabled: linkingMethod === method.id, children: isLinking && linkingMethod === method.id ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "h-5 w-5 animate-spin" })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-method-content flex items-center gap-4", children: [(0, jsx_runtime_1.jsx)("div", { className: "b3-link-account-method-icon flex items-center justify-center rounded-full", children: method.icon }), (0, jsx_runtime_1.jsx)("span", { className: "b3-link-account-method-label font-medium", children: method.label })] })) }, method.id))), WALLET_METHODS.map(method => {
320
+ if (!method.walletType) {
321
+ return null;
322
+ }
323
+ return ((0, jsx_runtime_1.jsx)(__1.WalletRow, { walletId: method.walletType, onClick: () => handleLinkWallet(method.walletType), isLoading: isLinking }, method.walletType));
324
+ }), availableAuthMethods.length === 0 && ((0, jsx_runtime_1.jsx)("div", { className: "text-b3-foreground-muted py-8 text-center", children: "All available authentication methods have been connected" }))] })) : ((0, jsx_runtime_1.jsxs)("div", { className: "b3-link-account-form space-y-4", children: [selectedMethod === "email" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Email Address" }), (0, jsx_runtime_1.jsx)("input", { type: "email", placeholder: "Enter your email", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: email, onChange: e => setEmail(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "email") })] })), selectedMethod === "phone" && ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Phone Number" }), (0, jsx_runtime_1.jsx)("input", { type: "tel", placeholder: "Enter your phone number", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: phone, onChange: e => setPhone(e.target.value), disabled: otpSent || (isLinking && linkingMethod === "phone") }), (0, jsx_runtime_1.jsx)("p", { className: "text-b3-foreground-muted font-neue-montreal-medium text-sm", children: "Include country code (e.g., +1 for US)" })] })), error && (0, jsx_runtime_1.jsx)("div", { className: "text-b3-negative font-neue-montreal-medium py-2 text-sm", children: error }), (selectedMethod === "email" || selectedMethod === "phone") &&
325
+ (otpSent ? ((0, jsx_runtime_1.jsxs)("div", { className: "space-y-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "space-y-2", children: [(0, jsx_runtime_1.jsx)("label", { className: "text-b3-grey font-neue-montreal-medium text-sm", children: "Verification Code" }), (0, jsx_runtime_1.jsx)("input", { type: "text", placeholder: "Enter verification code", className: "bg-b3-line text-b3-grey font-neue-montreal-medium focus:ring-b3-primary-blue/20 w-full rounded-xl p-4 focus:outline-none focus:ring-2", value: otp, onChange: e => setOtp(e.target.value) })] }), (0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleLinkAccount, children: "Link Account" })] })) : ((0, jsx_runtime_1.jsx)(button_1.Button, { className: "bg-b3-primary-blue hover:bg-b3-primary-blue/90 font-neue-montreal-semibold h-12 w-full text-white", onClick: handleSendOTP, disabled: (!email && !phone) || (isLinking && linkingMethod === selectedMethod), children: isLinking && linkingMethod === selectedMethod ? ((0, jsx_runtime_1.jsx)(lucide_react_1.Loader2, { className: "animate-spin" })) : ("Send Verification Code") })))] }))] }));
326
+ }
@@ -7,11 +7,11 @@ const BankIcon_1 = require("../../../../global-account/react/components/icons/Ba
7
7
  const SignOutIcon_1 = require("../../../../global-account/react/components/icons/SignOutIcon");
8
8
  const SwapIcon_1 = require("../../../../global-account/react/components/icons/SwapIcon");
9
9
  const utils_1 = require("../../../../shared/utils");
10
+ const ipfs_1 = require("../../../../shared/utils/ipfs");
10
11
  const lucide_react_1 = require("lucide-react");
11
12
  const react_2 = require("react");
12
13
  const react_3 = require("thirdweb/react");
13
14
  const useFirstEOA_1 = require("../../hooks/useFirstEOA");
14
- const IPFSMediaRenderer_1 = require("../IPFSMediaRenderer/IPFSMediaRenderer");
15
15
  const TokenIcon_1 = require("../TokenIcon");
16
16
  const accordion_1 = require("../ui/accordion");
17
17
  const TokenBalanceRow_1 = require("./TokenBalanceRow");
@@ -20,7 +20,6 @@ function centerTruncate(str, length = 4) {
20
20
  return str;
21
21
  return `${str.slice(0, length)}...${str.slice(-length)}`;
22
22
  }
23
- // Deprecated
24
23
  function BalanceContent({ onLogout, showDeposit = true, showSwap = true }) {
25
24
  const account = (0, react_3.useActiveAccount)();
26
25
  const globalAccount = (0, react_1.useGlobalAccount)();
@@ -35,12 +34,12 @@ function BalanceContent({ onLogout, showDeposit = true, showSwap = true }) {
35
34
  const [logoutLoading, setLogoutLoading] = (0, react_2.useState)(false);
36
35
  const [openAccordions, setOpenAccordions] = (0, react_2.useState)([]);
37
36
  const hasExpandedRef = (0, react_2.useRef)(false);
38
- // IPFSMediaRenderer will handle IPFS URL conversion and validation
39
- const avatarSrc = user?.avatar || profile?.avatar;
37
+ const avatarUrl = user?.avatar ? (0, ipfs_1.getIpfsUrl)(user?.avatar) : profile?.avatar;
40
38
  const handleEditProfile = () => {
41
39
  setB3ModalOpen(true);
42
40
  setB3ModalContentType({
43
- type: "avatarEditor",
41
+ type: "profileEditor",
42
+ showBackButton: true,
44
43
  onSuccess: () => {
45
44
  // navigate back on success
46
45
  navigateBack();
@@ -91,7 +90,7 @@ function BalanceContent({ onLogout, showDeposit = true, showSwap = true }) {
91
90
  setB3ModalOpen(false);
92
91
  setLogoutLoading(false);
93
92
  };
94
- return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between", children: (0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile flex items-center gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile-avatar relative", children: [(0, jsx_runtime_1.jsx)(IPFSMediaRenderer_1.IPFSMediaRenderer, { src: avatarSrc, alt: "Profile", className: "size-24 rounded-full" }), (0, jsx_runtime_1.jsx)("button", { onClick: handleEditProfile, className: "bg-b3-grey border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-8 items-center justify-center rounded-full border-4 transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Pencil, { size: 16, className: "text-b3-background" }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile-info", children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-b3-grey text-xl font-semibold", children: user?.username || profile?.displayName || (0, utils_1.formatUsername)(profile?.name || "") }), (0, jsx_runtime_1.jsxs)("div", { className: "address-button border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(account?.address || "", 6) }), (0, jsx_runtime_1.jsx)(react_1.CopyToClipboard, { text: account?.address || "" })] })] })] }) }), (showDeposit || showSwap) && ((0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-3", children: [showDeposit && ((0, jsx_runtime_1.jsxs)(react_1.Button, { className: "manage-account-deposit bg-b3-primary-wash hover:bg-b3-primary-wash/70 h-[84px] w-full flex-col items-start gap-2 rounded-2xl", onClick: () => {
93
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "flex flex-col gap-6", children: [(0, jsx_runtime_1.jsx)("div", { className: "flex items-center justify-between", children: (0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile flex items-center gap-4", children: [(0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile-avatar relative", children: [avatarUrl ? ((0, jsx_runtime_1.jsx)("img", { src: avatarUrl, alt: "Profile", className: "size-24 rounded-full" })) : ((0, jsx_runtime_1.jsx)("div", { className: "bg-b3-primary-wash size-24 rounded-full" })), (0, jsx_runtime_1.jsx)("button", { onClick: handleEditProfile, className: "bg-b3-grey border-b3-background hover:bg-b3-grey/80 absolute -bottom-1 -right-1 flex size-8 items-center justify-center rounded-full border-4 transition-colors", children: (0, jsx_runtime_1.jsx)(lucide_react_1.Pencil, { size: 16, className: "text-b3-background" }) })] }), (0, jsx_runtime_1.jsxs)("div", { className: "global-account-profile-info", children: [(0, jsx_runtime_1.jsx)("h2", { className: "text-b3-grey text-xl font-semibold", children: user?.username || profile?.displayName || (0, utils_1.formatUsername)(profile?.name || "") }), (0, jsx_runtime_1.jsxs)("div", { className: "address-button border-b3-line bg-b3-line/20 hover:bg-b3-line/40 flex w-fit items-center gap-2 rounded-full border px-3 py-1 transition-colors", children: [(0, jsx_runtime_1.jsx)("span", { className: "text-b3-foreground-muted font-mono text-xs", children: centerTruncate(account?.address || "", 6) }), (0, jsx_runtime_1.jsx)(react_1.CopyToClipboard, { text: account?.address || "" })] })] })] }) }), (showDeposit || showSwap) && ((0, jsx_runtime_1.jsxs)("div", { className: "grid grid-cols-2 gap-3", children: [showDeposit && ((0, jsx_runtime_1.jsxs)(react_1.Button, { className: "manage-account-deposit bg-b3-primary-wash hover:bg-b3-primary-wash/70 h-[84px] w-full flex-col items-start gap-2 rounded-2xl", onClick: () => {
95
94
  setB3ModalOpen(true);
96
95
  setB3ModalContentType({
97
96
  type: "anySpend",