@b3dotfun/sdk 0.0.65-test.1 → 0.0.65

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 (229) hide show
  1. package/dist/cjs/anyspend/react/components/AnySpend.js +33 -73
  2. package/dist/cjs/anyspend/react/components/AnySpendCustom.js +1 -1
  3. package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +1 -1
  4. package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  5. package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  6. package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  7. package/dist/cjs/anyspend/react/components/common/OrderHistory.js +3 -7
  8. package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  9. package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  10. package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
  11. package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  12. package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +33 -139
  13. package/dist/cjs/global-account/react/components/B3DynamicModal.js +6 -25
  14. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  15. package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +279 -113
  16. package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  17. package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +193 -24
  18. package/dist/cjs/global-account/react/components/index.d.ts +2 -4
  19. package/dist/cjs/global-account/react/components/index.js +4 -11
  20. package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
  21. package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
  22. package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
  23. package/dist/cjs/global-account/react/hooks/index.js +1 -3
  24. package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  25. package/dist/cjs/global-account/react/stores/index.d.ts +0 -1
  26. package/dist/cjs/global-account/react/stores/index.js +1 -3
  27. package/dist/cjs/global-account/react/stores/useModalStore.d.ts +3 -34
  28. package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +0 -2
  29. package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
  30. package/dist/cjs/shared/constants/chains/supported.d.ts +2 -2
  31. package/dist/cjs/shared/utils/ipfs.js +1 -1
  32. package/dist/esm/anyspend/react/components/AnySpend.js +34 -74
  33. package/dist/esm/anyspend/react/components/AnySpendCustom.js +1 -1
  34. package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +1 -1
  35. package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
  36. package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
  37. package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  38. package/dist/esm/anyspend/react/components/common/OrderHistory.js +5 -6
  39. package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
  40. package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
  41. package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
  42. package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +2 -38
  43. package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +34 -140
  44. package/dist/esm/global-account/react/components/B3DynamicModal.js +6 -25
  45. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  46. package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +280 -113
  47. package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
  48. package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +195 -26
  49. package/dist/esm/global-account/react/components/index.d.ts +2 -4
  50. package/dist/esm/global-account/react/components/index.js +2 -7
  51. package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
  52. package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
  53. package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
  54. package/dist/esm/global-account/react/hooks/index.js +1 -1
  55. package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +0 -1
  56. package/dist/esm/global-account/react/stores/index.d.ts +0 -1
  57. package/dist/esm/global-account/react/stores/index.js +0 -1
  58. package/dist/esm/global-account/react/stores/useModalStore.d.ts +3 -34
  59. package/dist/esm/global-account/react/utils/profileDisplay.d.ts +0 -2
  60. package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
  61. package/dist/esm/shared/constants/chains/supported.d.ts +2 -2
  62. package/dist/esm/shared/utils/ipfs.js +1 -1
  63. package/dist/styles/index.css +1 -1
  64. package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
  65. package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +4 -6
  66. package/dist/types/global-account/react/components/index.d.ts +2 -4
  67. package/dist/types/global-account/react/hooks/index.d.ts +1 -1
  68. package/dist/types/global-account/react/stores/index.d.ts +0 -1
  69. package/dist/types/global-account/react/stores/useModalStore.d.ts +3 -34
  70. package/dist/types/global-account/react/utils/profileDisplay.d.ts +0 -2
  71. package/dist/types/shared/constants/chains/supported.d.ts +2 -2
  72. package/package.json +1 -1
  73. package/src/anyspend/react/components/AnySpend.tsx +167 -225
  74. package/src/anyspend/react/components/AnySpendCustom.tsx +1 -1
  75. package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +1 -1
  76. package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
  77. package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
  78. package/src/anyspend/react/components/common/OrderHistory.tsx +13 -8
  79. package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
  80. package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
  81. package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
  82. package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +25 -115
  83. package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +126 -303
  84. package/src/global-account/react/components/B3DynamicModal.tsx +6 -28
  85. package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +433 -332
  86. package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +3 -2
  87. package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +589 -73
  88. package/src/global-account/react/components/index.ts +2 -9
  89. package/src/global-account/react/components/ui/Tabs.tsx +13 -5
  90. package/src/global-account/react/components/ui/dialog.tsx +14 -32
  91. package/src/global-account/react/hooks/index.ts +0 -3
  92. package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +0 -1
  93. package/src/global-account/react/stores/index.ts +0 -1
  94. package/src/global-account/react/stores/useModalStore.ts +2 -39
  95. package/src/global-account/react/utils/profileDisplay.ts +2 -4
  96. package/src/shared/utils/ipfs.ts +1 -1
  97. package/src/styles/index.css +1 -6
  98. package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  99. package/dist/cjs/global-account/react/components/Deposit/Deposit.js +0 -65
  100. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  101. package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -331
  102. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  103. package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +0 -34
  104. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  105. package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +0 -23
  106. package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  107. package/dist/cjs/global-account/react/components/ManageAccount/Header.js +0 -120
  108. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  109. package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +0 -43
  110. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  111. package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +0 -16
  112. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  113. package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +0 -15
  114. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  115. package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +0 -44
  116. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  117. package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +0 -50
  118. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  119. package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -8
  120. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  121. package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -38
  122. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  123. package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +0 -22
  124. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -10
  125. package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +0 -12
  126. package/dist/cjs/global-account/react/components/Send/Send.d.ts +0 -5
  127. package/dist/cjs/global-account/react/components/Send/Send.js +0 -187
  128. package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +0 -3
  129. package/dist/cjs/global-account/react/components/icons/BellIcon.js +0 -5
  130. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  131. package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +0 -7
  132. package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  133. package/dist/cjs/global-account/react/components/icons/CopyIcon.js +0 -7
  134. package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  135. package/dist/cjs/global-account/react/components/icons/LinkIcon.js +0 -5
  136. package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +0 -3
  137. package/dist/cjs/global-account/react/components/icons/LockIcon.js +0 -5
  138. package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  139. package/dist/cjs/global-account/react/components/icons/WalletIcon.js +0 -7
  140. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  141. package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +0 -36
  142. package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  143. package/dist/esm/global-account/react/components/Deposit/Deposit.js +0 -59
  144. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  145. package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +0 -325
  146. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  147. package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +0 -32
  148. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  149. package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +0 -21
  150. package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  151. package/dist/esm/global-account/react/components/ManageAccount/Header.js +0 -81
  152. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  153. package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +0 -41
  154. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  155. package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +0 -10
  156. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  157. package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +0 -13
  158. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  159. package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +0 -42
  160. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  161. package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +0 -45
  162. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  163. package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +0 -6
  164. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  165. package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +0 -36
  166. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  167. package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +0 -20
  168. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -10
  169. package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +0 -10
  170. package/dist/esm/global-account/react/components/Send/Send.d.ts +0 -5
  171. package/dist/esm/global-account/react/components/Send/Send.js +0 -181
  172. package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +0 -3
  173. package/dist/esm/global-account/react/components/icons/BellIcon.js +0 -3
  174. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  175. package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +0 -4
  176. package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  177. package/dist/esm/global-account/react/components/icons/CopyIcon.js +0 -4
  178. package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  179. package/dist/esm/global-account/react/components/icons/LinkIcon.js +0 -3
  180. package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +0 -3
  181. package/dist/esm/global-account/react/components/icons/LockIcon.js +0 -3
  182. package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  183. package/dist/esm/global-account/react/components/icons/WalletIcon.js +0 -4
  184. package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  185. package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +0 -33
  186. package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +0 -1
  187. package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +0 -4
  188. package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +0 -6
  189. package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +0 -2
  190. package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +0 -3
  191. package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +0 -5
  192. package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +0 -6
  193. package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +0 -2
  194. package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +0 -2
  195. package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +0 -7
  196. package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +0 -9
  197. package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +0 -2
  198. package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +0 -2
  199. package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +0 -10
  200. package/dist/types/global-account/react/components/Send/Send.d.ts +0 -5
  201. package/dist/types/global-account/react/components/icons/BellIcon.d.ts +0 -3
  202. package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +0 -2
  203. package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +0 -2
  204. package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +0 -3
  205. package/dist/types/global-account/react/components/icons/LockIcon.d.ts +0 -3
  206. package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +0 -2
  207. package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +0 -25
  208. package/src/global-account/react/components/Deposit/Deposit.tsx +0 -211
  209. package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +0 -490
  210. package/src/global-account/react/components/ManageAccount/AppsContent.tsx +0 -79
  211. package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +0 -83
  212. package/src/global-account/react/components/ManageAccount/Header.tsx +0 -230
  213. package/src/global-account/react/components/ManageAccount/HomeActions.tsx +0 -118
  214. package/src/global-account/react/components/ManageAccount/HomeContent.tsx +0 -42
  215. package/src/global-account/react/components/ManageAccount/NFTContent.tsx +0 -24
  216. package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +0 -74
  217. package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +0 -87
  218. package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +0 -31
  219. package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +0 -74
  220. package/src/global-account/react/components/ManageAccount/TokenContent.tsx +0 -41
  221. package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +0 -50
  222. package/src/global-account/react/components/Send/Send.tsx +0 -585
  223. package/src/global-account/react/components/icons/BellIcon.tsx +0 -15
  224. package/src/global-account/react/components/icons/ChevronDownIcon.tsx +0 -17
  225. package/src/global-account/react/components/icons/CopyIcon.tsx +0 -22
  226. package/src/global-account/react/components/icons/LinkIcon.tsx +0 -15
  227. package/src/global-account/react/components/icons/LockIcon.tsx +0 -15
  228. package/src/global-account/react/components/icons/WalletIcon.tsx +0 -21
  229. 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: "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
+ }
@@ -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)();
@@ -39,7 +38,8 @@ function BalanceContent({ onLogout, showDeposit = true, showSwap = true }) {
39
38
  const handleEditProfile = () => {
40
39
  setB3ModalOpen(true);
41
40
  setB3ModalContentType({
42
- type: "avatarEditor",
41
+ type: "profileEditor",
42
+ showBackButton: true,
43
43
  onSuccess: () => {
44
44
  // navigate back on success
45
45
  navigateBack();