@b3dotfun/sdk 0.0.64 → 0.0.65-test.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/anyspend/react/components/AnySpend.js +73 -33
- package/dist/cjs/anyspend/react/components/AnySpendCustom.js +1 -1
- package/dist/cjs/anyspend/react/components/AnySpendCustomExactIn.js +1 -5
- package/dist/cjs/anyspend/react/components/AnyspendDepositHype.js +1 -5
- package/dist/cjs/anyspend/react/components/common/CryptoPaymentMethod.js +1 -5
- package/dist/cjs/anyspend/react/components/common/FeeDetailPanel.js +1 -1
- package/dist/cjs/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/cjs/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/cjs/anyspend/react/components/common/OrderHistory.js +7 -3
- package/dist/cjs/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
- package/dist/cjs/anyspend/react/components/common/PointsDetailPanel.js +1 -1
- package/dist/cjs/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/cjs/anyspend/utils/index.d.ts +0 -1
- package/dist/cjs/anyspend/utils/index.js +0 -1
- package/dist/cjs/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
- package/dist/cjs/global-account/react/components/AvatarEditor/AvatarEditor.js +139 -33
- package/dist/cjs/global-account/react/components/B3DynamicModal.js +29 -13
- package/dist/cjs/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/cjs/global-account/react/components/Deposit/Deposit.js +65 -0
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/cjs/global-account/react/components/LinkAccount/LinkAccount.js +113 -279
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/cjs/global-account/react/components/LinkAccount/LinkNewAccount.js +331 -0
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/cjs/global-account/react/components/ManageAccount/AppsContent.js +34 -0
- package/dist/cjs/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/BottomNavigation.js +23 -0
- package/dist/cjs/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/cjs/global-account/react/components/ManageAccount/Header.js +120 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeActions.js +43 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/cjs/global-account/react/components/ManageAccount/HomeContent.js +16 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ManageAccount.js +24 -193
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/NFTContent.js +15 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/ProfileSection.js +44 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsContent.js +50 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsMenuItem.js +8 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/SettingsProfileCard.js +38 -0
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/cjs/global-account/react/components/ManageAccount/TokenContent.js +22 -0
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/cjs/global-account/react/components/ModalHeader/ModalHeader.js +12 -0
- package/dist/cjs/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/cjs/global-account/react/components/Send/Send.js +187 -0
- package/dist/cjs/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/BellIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/ChevronDownIcon.js +7 -0
- package/dist/cjs/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/CopyIcon.js +7 -0
- package/dist/cjs/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/LinkIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/cjs/global-account/react/components/icons/LockIcon.js +5 -0
- package/dist/cjs/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/cjs/global-account/react/components/icons/WalletIcon.js +7 -0
- package/dist/cjs/global-account/react/components/index.d.ts +4 -2
- package/dist/cjs/global-account/react/components/index.js +11 -4
- package/dist/cjs/global-account/react/components/ui/Tabs.js +2 -2
- package/dist/cjs/global-account/react/components/ui/dialog.js +2 -2
- package/dist/cjs/global-account/react/hooks/index.d.ts +1 -1
- package/dist/cjs/global-account/react/hooks/index.js +3 -1
- package/dist/cjs/global-account/react/hooks/useAuthentication.js +0 -11
- package/dist/cjs/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
- package/dist/cjs/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
- package/dist/cjs/global-account/react/hooks/useGlobalAccount.js +3 -0
- package/dist/cjs/global-account/react/stores/index.d.ts +1 -0
- package/dist/cjs/global-account/react/stores/index.js +3 -1
- package/dist/cjs/global-account/react/stores/useModalStore.d.ts +34 -3
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/cjs/global-account/react/stores/useRecentAddressesStore.js +36 -0
- package/dist/cjs/global-account/react/utils/profileDisplay.d.ts +2 -0
- package/dist/cjs/global-account/react/utils/profileDisplay.js +2 -2
- package/dist/cjs/shared/constants/chains/supported.d.ts +2 -2
- package/dist/cjs/shared/utils/ipfs.js +1 -1
- package/dist/esm/anyspend/react/components/AnySpend.js +74 -34
- package/dist/esm/anyspend/react/components/AnySpendCustom.js +1 -1
- package/dist/esm/anyspend/react/components/AnySpendCustomExactIn.js +2 -6
- package/dist/esm/anyspend/react/components/AnyspendDepositHype.js +2 -6
- package/dist/esm/anyspend/react/components/common/CryptoPaymentMethod.js +2 -6
- package/dist/esm/anyspend/react/components/common/FeeDetailPanel.js +1 -1
- package/dist/esm/anyspend/react/components/common/FiatPaymentMethod.js +2 -2
- package/dist/esm/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/esm/anyspend/react/components/common/OrderHistory.js +6 -5
- package/dist/esm/anyspend/react/components/common/PanelOnrampPayment.js +1 -1
- package/dist/esm/anyspend/react/components/common/PointsDetailPanel.js +1 -1
- package/dist/esm/anyspend/react/components/common/RecipientSelection.js +1 -1
- package/dist/esm/anyspend/utils/index.d.ts +0 -1
- package/dist/esm/anyspend/utils/index.js +0 -1
- package/dist/esm/global-account/react/components/AccountAssets/AccountAssets.js +38 -2
- package/dist/esm/global-account/react/components/AvatarEditor/AvatarEditor.js +140 -34
- package/dist/esm/global-account/react/components/B3DynamicModal.js +30 -14
- package/dist/esm/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/esm/global-account/react/components/Deposit/Deposit.js +59 -0
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/esm/global-account/react/components/LinkAccount/LinkAccount.js +113 -280
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/esm/global-account/react/components/LinkAccount/LinkNewAccount.js +325 -0
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/AppsContent.js +32 -0
- package/dist/esm/global-account/react/components/ManageAccount/BalanceContent.js +2 -2
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/BottomNavigation.js +21 -0
- package/dist/esm/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/esm/global-account/react/components/ManageAccount/Header.js +81 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeActions.js +41 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/HomeContent.js +10 -0
- package/dist/esm/global-account/react/components/ManageAccount/ManageAccount.js +26 -195
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/NFTContent.js +13 -0
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/ProfileSection.js +42 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsContent.js +45 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsMenuItem.js +6 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/SettingsProfileCard.js +36 -0
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/esm/global-account/react/components/ManageAccount/TokenContent.js +20 -0
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/esm/global-account/react/components/ModalHeader/ModalHeader.js +10 -0
- package/dist/esm/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/esm/global-account/react/components/Send/Send.js +181 -0
- package/dist/esm/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/BellIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/ChevronDownIcon.js +4 -0
- package/dist/esm/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/CopyIcon.js +4 -0
- package/dist/esm/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/LinkIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/esm/global-account/react/components/icons/LockIcon.js +3 -0
- package/dist/esm/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/esm/global-account/react/components/icons/WalletIcon.js +4 -0
- package/dist/esm/global-account/react/components/index.d.ts +4 -2
- package/dist/esm/global-account/react/components/index.js +7 -2
- package/dist/esm/global-account/react/components/ui/Tabs.js +2 -2
- package/dist/esm/global-account/react/components/ui/dialog.js +2 -2
- package/dist/esm/global-account/react/hooks/index.d.ts +1 -1
- package/dist/esm/global-account/react/hooks/index.js +1 -1
- package/dist/esm/global-account/react/hooks/useAuthentication.js +0 -11
- package/dist/esm/global-account/react/hooks/useB3BalanceFromAddresses.js +1 -0
- package/dist/esm/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
- package/dist/esm/global-account/react/hooks/useGlobalAccount.js +3 -0
- package/dist/esm/global-account/react/stores/index.d.ts +1 -0
- package/dist/esm/global-account/react/stores/index.js +1 -0
- package/dist/esm/global-account/react/stores/useModalStore.d.ts +34 -3
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/esm/global-account/react/stores/useRecentAddressesStore.js +33 -0
- package/dist/esm/global-account/react/utils/profileDisplay.d.ts +2 -0
- package/dist/esm/global-account/react/utils/profileDisplay.js +2 -2
- package/dist/esm/shared/constants/chains/supported.d.ts +2 -2
- package/dist/esm/shared/utils/ipfs.js +1 -1
- package/dist/styles/index.css +1 -1
- package/dist/types/anyspend/react/components/common/OrderHistory.d.ts +1 -1
- package/dist/types/anyspend/utils/index.d.ts +0 -1
- package/dist/types/global-account/react/components/Deposit/Deposit.d.ts +1 -0
- package/dist/types/global-account/react/components/LinkAccount/LinkAccount.d.ts +6 -4
- package/dist/types/global-account/react/components/LinkAccount/LinkNewAccount.d.ts +4 -0
- package/dist/types/global-account/react/components/ManageAccount/AppsContent.d.ts +6 -0
- package/dist/types/global-account/react/components/ManageAccount/BottomNavigation.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/Header.d.ts +3 -0
- package/dist/types/global-account/react/components/ManageAccount/HomeActions.d.ts +5 -0
- package/dist/types/global-account/react/components/ManageAccount/HomeContent.d.ts +6 -0
- package/dist/types/global-account/react/components/ManageAccount/NFTContent.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/ProfileSection.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsContent.d.ts +7 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsMenuItem.d.ts +9 -0
- package/dist/types/global-account/react/components/ManageAccount/SettingsProfileCard.d.ts +2 -0
- package/dist/types/global-account/react/components/ManageAccount/TokenContent.d.ts +2 -0
- package/dist/types/global-account/react/components/ModalHeader/ModalHeader.d.ts +10 -0
- package/dist/types/global-account/react/components/Send/Send.d.ts +5 -0
- package/dist/types/global-account/react/components/icons/BellIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/ChevronDownIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/icons/CopyIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/icons/LinkIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/LockIcon.d.ts +3 -0
- package/dist/types/global-account/react/components/icons/WalletIcon.d.ts +2 -0
- package/dist/types/global-account/react/components/index.d.ts +4 -2
- package/dist/types/global-account/react/hooks/index.d.ts +1 -1
- package/dist/types/global-account/react/hooks/useGlobalAccount.d.ts +1 -0
- package/dist/types/global-account/react/stores/index.d.ts +1 -0
- package/dist/types/global-account/react/stores/useModalStore.d.ts +34 -3
- package/dist/types/global-account/react/stores/useRecentAddressesStore.d.ts +25 -0
- package/dist/types/global-account/react/utils/profileDisplay.d.ts +2 -0
- package/dist/types/shared/constants/chains/supported.d.ts +2 -2
- package/package.json +1 -1
- package/src/anyspend/react/components/AnySpend.tsx +225 -167
- package/src/anyspend/react/components/AnySpendCustom.tsx +1 -1
- package/src/anyspend/react/components/AnySpendCustomExactIn.tsx +2 -6
- package/src/anyspend/react/components/AnyspendDepositHype.tsx +2 -6
- package/src/anyspend/react/components/common/CryptoPaymentMethod.tsx +2 -7
- package/src/anyspend/react/components/common/FeeDetailPanel.tsx +1 -1
- package/src/anyspend/react/components/common/FiatPaymentMethod.tsx +2 -2
- package/src/anyspend/react/components/common/OrderHistory.tsx +8 -13
- package/src/anyspend/react/components/common/PanelOnrampPayment.tsx +1 -1
- package/src/anyspend/react/components/common/PointsDetailPanel.tsx +1 -1
- package/src/anyspend/react/components/common/RecipientSelection.tsx +1 -1
- package/src/anyspend/utils/index.ts +0 -1
- package/src/global-account/react/components/AccountAssets/AccountAssets.tsx +115 -25
- package/src/global-account/react/components/AvatarEditor/AvatarEditor.tsx +303 -126
- package/src/global-account/react/components/B3DynamicModal.tsx +33 -15
- package/src/global-account/react/components/Deposit/Deposit.tsx +211 -0
- package/src/global-account/react/components/LinkAccount/LinkAccount.tsx +332 -433
- package/src/global-account/react/components/LinkAccount/LinkNewAccount.tsx +490 -0
- package/src/global-account/react/components/ManageAccount/AppsContent.tsx +79 -0
- package/src/global-account/react/components/ManageAccount/BalanceContent.tsx +2 -3
- package/src/global-account/react/components/ManageAccount/BottomNavigation.tsx +83 -0
- package/src/global-account/react/components/ManageAccount/Header.tsx +230 -0
- package/src/global-account/react/components/ManageAccount/HomeActions.tsx +118 -0
- package/src/global-account/react/components/ManageAccount/HomeContent.tsx +42 -0
- package/src/global-account/react/components/ManageAccount/ManageAccount.tsx +73 -589
- package/src/global-account/react/components/ManageAccount/NFTContent.tsx +24 -0
- package/src/global-account/react/components/ManageAccount/ProfileSection.tsx +74 -0
- package/src/global-account/react/components/ManageAccount/SettingsContent.tsx +87 -0
- package/src/global-account/react/components/ManageAccount/SettingsMenuItem.tsx +31 -0
- package/src/global-account/react/components/ManageAccount/SettingsProfileCard.tsx +74 -0
- package/src/global-account/react/components/ManageAccount/TokenContent.tsx +41 -0
- package/src/global-account/react/components/ModalHeader/ModalHeader.tsx +50 -0
- package/src/global-account/react/components/Send/Send.tsx +585 -0
- package/src/global-account/react/components/icons/BellIcon.tsx +15 -0
- package/src/global-account/react/components/icons/ChevronDownIcon.tsx +17 -0
- package/src/global-account/react/components/icons/CopyIcon.tsx +22 -0
- package/src/global-account/react/components/icons/LinkIcon.tsx +15 -0
- package/src/global-account/react/components/icons/LockIcon.tsx +15 -0
- package/src/global-account/react/components/icons/WalletIcon.tsx +21 -0
- package/src/global-account/react/components/index.ts +9 -2
- package/src/global-account/react/components/ui/Tabs.tsx +5 -13
- package/src/global-account/react/components/ui/dialog.tsx +32 -14
- package/src/global-account/react/hooks/index.ts +3 -0
- package/src/global-account/react/hooks/useAuthentication.ts +0 -12
- package/src/global-account/react/hooks/useB3BalanceFromAddresses.ts +1 -0
- package/src/global-account/react/hooks/useGlobalAccount.tsx +3 -1
- package/src/global-account/react/stores/index.ts +1 -0
- package/src/global-account/react/stores/useModalStore.ts +39 -2
- package/src/global-account/react/stores/useRecentAddressesStore.ts +55 -0
- package/src/global-account/react/utils/profileDisplay.ts +4 -2
- package/src/shared/utils/ipfs.ts +1 -1
- package/src/styles/index.css +6 -1
- package/dist/cjs/anyspend/utils/accountStore.d.ts +0 -7
- package/dist/cjs/anyspend/utils/accountStore.js +0 -8
- package/dist/esm/anyspend/utils/accountStore.d.ts +0 -7
- package/dist/esm/anyspend/utils/accountStore.js +0 -5
- package/dist/types/anyspend/utils/accountStore.d.ts +0 -7
- package/src/anyspend/utils/accountStore.ts +0 -12
|
@@ -1,109 +1,48 @@
|
|
|
1
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
2
2
|
import app from "../../../../global-account/app.js";
|
|
3
|
-
import {
|
|
4
|
-
import { thirdwebB3Mainnet } from "../../../../shared/constants/chains/b3Chain.js";
|
|
3
|
+
import { Button, useB3, useModalStore, useQueryB3 } from "../../../../global-account/react/index.js";
|
|
5
4
|
import { client } from "../../../../shared/utils/thirdweb.js";
|
|
6
|
-
import {
|
|
7
|
-
import {
|
|
5
|
+
import { truncateAddress } from "../../../../shared/utils/truncateAddress.js";
|
|
6
|
+
import { Copy, Loader2, Pencil, UnlinkIcon } from "lucide-react";
|
|
7
|
+
import { useRef, useState } from "react";
|
|
8
8
|
import { toast } from "sonner";
|
|
9
|
-
import {
|
|
10
|
-
import { createWallet, preAuthenticate } from "thirdweb/wallets";
|
|
11
|
-
import { WalletRow } from "../../index.js";
|
|
12
|
-
import { useModalStore } from "../../stores/useModalStore.js";
|
|
9
|
+
import { useProfiles, useUnlinkProfile } from "thirdweb/react";
|
|
13
10
|
import { getProfileDisplayInfo } from "../../utils/profileDisplay.js";
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
{ id: "email", label: "Email", enabled: true, icon: _jsx(Mail, { className: "text-b3-primary-blue size-6" }) },
|
|
23
|
-
{ id: "phone", label: "Phone", enabled: true, icon: _jsx(Phone, { className: "text-b3-primary-blue size-6" }) },
|
|
24
|
-
{ id: "google", label: "Google", enabled: true, icon: _jsx(GoogleIcon, { className: "size-6" }) },
|
|
25
|
-
{ id: "x", label: "X (Twitter)", enabled: true, icon: _jsx(XIcon, { className: "size-6" }) },
|
|
26
|
-
{ id: "discord", label: "Discord", enabled: true, icon: _jsx(DiscordIcon, { className: "size-6" }) },
|
|
27
|
-
{ id: "apple", label: "Apple", enabled: true, icon: _jsx(AppleIcon, { className: "size-6" }) },
|
|
28
|
-
{
|
|
29
|
-
id: "farcaster",
|
|
30
|
-
label: "Farcaster",
|
|
31
|
-
enabled: true,
|
|
32
|
-
icon: _jsx(FarcasterIcon, { className: "size-6" }),
|
|
33
|
-
},
|
|
34
|
-
];
|
|
35
|
-
const WALLET_METHODS = [
|
|
36
|
-
{
|
|
37
|
-
id: "wallet",
|
|
38
|
-
label: "Wallet",
|
|
39
|
-
enabled: true,
|
|
40
|
-
icon: _jsx(WalletIcon, { className: "size-6" }),
|
|
41
|
-
walletType: "com.coinbase.wallet",
|
|
42
|
-
},
|
|
43
|
-
{ id: "wallet", label: "Wallet", enabled: true, icon: _jsx(WalletIcon, { className: "size-6" }), walletType: "io.metamask" },
|
|
44
|
-
{
|
|
45
|
-
id: "wallet",
|
|
46
|
-
label: "Wallet",
|
|
47
|
-
enabled: true,
|
|
48
|
-
icon: _jsx(WalletIcon, { className: "size-6" }),
|
|
49
|
-
walletType: "me.rainbow",
|
|
50
|
-
},
|
|
51
|
-
{
|
|
52
|
-
id: "wallet",
|
|
53
|
-
label: "Wallet",
|
|
54
|
-
enabled: true,
|
|
55
|
-
icon: _jsx(WalletIcon, { className: "size-6" }),
|
|
56
|
-
walletType: "app.phantom",
|
|
57
|
-
},
|
|
58
|
-
{ id: "wallet", label: "Wallet", enabled: true, icon: _jsx(WalletIcon, { className: "size-6" }), walletType: "io.rabby" },
|
|
59
|
-
{
|
|
60
|
-
id: "wallet",
|
|
61
|
-
label: "Wallet",
|
|
62
|
-
enabled: true,
|
|
63
|
-
icon: _jsx(WalletIcon, { className: "size-6" }),
|
|
64
|
-
walletType: "walletConnect",
|
|
65
|
-
},
|
|
66
|
-
];
|
|
67
|
-
export function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, partnerId, className, }) {
|
|
68
|
-
const { isLinking, linkingMethod, setLinkingState, navigateBack, setB3ModalContentType } = useModalStore();
|
|
69
|
-
const [selectedMethod, setSelectedMethod] = useState(null);
|
|
70
|
-
const [email, setEmail] = useState("");
|
|
71
|
-
const [phone, setPhone] = useState("");
|
|
72
|
-
const [otp, setOtp] = useState("");
|
|
73
|
-
const [otpSent, setOtpSent] = useState(false);
|
|
74
|
-
const [error, setError] = useState(null);
|
|
75
|
-
const { data: profilesRaw = [] } = useProfiles({ client });
|
|
76
|
-
// Get connected auth methods
|
|
77
|
-
const connectedAuthMethods = profilesRaw
|
|
78
|
-
.filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
|
|
79
|
-
.map((profile) => profile.type);
|
|
80
|
-
// Filter available auth methods
|
|
81
|
-
const availableAuthMethods = AUTH_METHODS.filter(method => !connectedAuthMethods.includes(method.id) && method.enabled);
|
|
82
|
-
const profiles = profilesRaw
|
|
83
|
-
.filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
|
|
84
|
-
.map((profile) => ({
|
|
85
|
-
...getProfileDisplayInfo(profile),
|
|
86
|
-
originalProfile: profile,
|
|
87
|
-
}));
|
|
88
|
-
const { account } = useB3();
|
|
89
|
-
const { mutate: linkProfile } = useLinkProfile();
|
|
90
|
-
const onSuccess = useCallback(async () => {
|
|
91
|
-
await onSuccessCallback?.();
|
|
92
|
-
}, [onSuccessCallback]);
|
|
93
|
-
// Reset linking state when component unmounts
|
|
94
|
-
useEffect(() => {
|
|
95
|
-
return () => {
|
|
96
|
-
if (isLinking) {
|
|
97
|
-
setLinkingState(false);
|
|
98
|
-
}
|
|
11
|
+
// Helper function to check if a string is a wallet address and format it
|
|
12
|
+
const formatProfileTitle = (title) => {
|
|
13
|
+
// Check if title looks like an Ethereum address (0x followed by 40 hex characters)
|
|
14
|
+
const isEthereumAddress = /^0x[a-fA-F0-9]{40}$/.test(title);
|
|
15
|
+
if (isEthereumAddress) {
|
|
16
|
+
return {
|
|
17
|
+
displayTitle: truncateAddress(title),
|
|
18
|
+
isAddress: true,
|
|
99
19
|
};
|
|
100
|
-
}
|
|
20
|
+
}
|
|
21
|
+
return {
|
|
22
|
+
displayTitle: title,
|
|
23
|
+
isAddress: false,
|
|
24
|
+
};
|
|
25
|
+
};
|
|
26
|
+
import ModalHeader from "../ModalHeader/ModalHeader.js";
|
|
27
|
+
export const LinkAccount = ({ partnerId, onLogout, chain, }) => {
|
|
28
|
+
const [unlinkingAccountId, setUnlinkingAccountId] = useState(null);
|
|
29
|
+
const { data: profilesRaw = [], isLoading: isLoadingProfiles } = useProfiles({ client });
|
|
30
|
+
const { mutate: unlinkProfile, isPending: isUnlinking } = useUnlinkProfile();
|
|
31
|
+
const setB3ModalContentType = useModalStore(state => state.setB3ModalContentType);
|
|
32
|
+
const isLinking = useModalStore(state => state.isLinking);
|
|
33
|
+
const setB3ModalOpen = useModalStore(state => state.setB3ModalOpen);
|
|
34
|
+
const contentType = useModalStore(state => state.contentType);
|
|
35
|
+
const { user, setUser } = useB3();
|
|
36
|
+
const [isUpdatingCode, setIsUpdatingCode] = useState(false);
|
|
37
|
+
const [newReferralCode, setNewReferralCode] = useState("");
|
|
38
|
+
const [isEditingCode, setIsEditingCode] = useState(false);
|
|
39
|
+
const referallCodeRef = useRef(null);
|
|
40
|
+
const { data: referrals, isLoading: isLoadingReferrals } = useQueryB3("referrals", "find", { query: { referrerId: user?.userId } }, !!user?.userId);
|
|
41
|
+
const showReferralInfo = contentType?.showReferralInfo ?? false;
|
|
101
42
|
const mutationOptions = {
|
|
102
43
|
onError: (error) => {
|
|
103
|
-
console.error("Error
|
|
44
|
+
console.error("Error Unlinking account:", error);
|
|
104
45
|
toast.error(error.message);
|
|
105
|
-
setLinkingState(false);
|
|
106
|
-
onError?.(error);
|
|
107
46
|
},
|
|
108
47
|
onSuccess: async (data) => {
|
|
109
48
|
console.log("Raw Link Account Data:", data);
|
|
@@ -116,205 +55,99 @@ export function LinkAccount({ onSuccess: onSuccessCallback, onError, onClose, ch
|
|
|
116
55
|
}
|
|
117
56
|
},
|
|
118
57
|
};
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
setError("Please enter your email address");
|
|
123
|
-
return false;
|
|
124
|
-
}
|
|
125
|
-
if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(email)) {
|
|
126
|
-
setError("Please enter a valid email address");
|
|
127
|
-
return false;
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
else if (selectedMethod === "phone") {
|
|
131
|
-
if (!phone) {
|
|
132
|
-
setError("Please enter your phone number");
|
|
133
|
-
return false;
|
|
134
|
-
}
|
|
135
|
-
if (!/^\+?[\d\s-]{10,}$/.test(phone)) {
|
|
136
|
-
setError("Please enter a valid phone number");
|
|
137
|
-
return false;
|
|
138
|
-
}
|
|
139
|
-
}
|
|
140
|
-
setError(null);
|
|
141
|
-
return true;
|
|
142
|
-
};
|
|
143
|
-
const handleSendOTP = async () => {
|
|
144
|
-
if (!validateInput())
|
|
145
|
-
return;
|
|
58
|
+
// Fetch referred users
|
|
59
|
+
const currentReferralCode = user?.referralCode || user?.userId || "";
|
|
60
|
+
const handleCopyCode = async () => {
|
|
146
61
|
try {
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
if (selectedMethod === "email") {
|
|
150
|
-
await preAuthenticate({
|
|
151
|
-
client,
|
|
152
|
-
strategy: "email",
|
|
153
|
-
email,
|
|
154
|
-
ecosystem: {
|
|
155
|
-
id: ecosystemWalletId,
|
|
156
|
-
partnerId: partnerId,
|
|
157
|
-
},
|
|
158
|
-
});
|
|
159
|
-
}
|
|
160
|
-
else if (selectedMethod === "phone") {
|
|
161
|
-
await preAuthenticate({
|
|
162
|
-
client,
|
|
163
|
-
strategy: "phone",
|
|
164
|
-
phoneNumber: phone,
|
|
165
|
-
ecosystem: {
|
|
166
|
-
id: ecosystemWalletId,
|
|
167
|
-
partnerId: partnerId,
|
|
168
|
-
},
|
|
169
|
-
});
|
|
170
|
-
}
|
|
171
|
-
setOtpSent(true);
|
|
62
|
+
await navigator.clipboard.writeText(currentReferralCode);
|
|
63
|
+
toast.success("Referral code copied to clipboard!");
|
|
172
64
|
}
|
|
173
65
|
catch (error) {
|
|
174
|
-
|
|
175
|
-
setError(error instanceof Error ? error.message : "Failed to send OTP");
|
|
176
|
-
onError?.(error);
|
|
177
|
-
setLinkingState(false);
|
|
66
|
+
toast.error("Failed to copy referral code");
|
|
178
67
|
}
|
|
179
68
|
};
|
|
180
|
-
const
|
|
181
|
-
if (!
|
|
182
|
-
console.error("No OTP entered");
|
|
183
|
-
setError("Please enter the verification code");
|
|
69
|
+
const handleUpdateReferralCode = async () => {
|
|
70
|
+
if (!newReferralCode)
|
|
184
71
|
return;
|
|
185
|
-
|
|
72
|
+
setIsUpdatingCode(true);
|
|
186
73
|
try {
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
}, mutationOptions);
|
|
197
|
-
}
|
|
198
|
-
else if (selectedMethod === "phone") {
|
|
199
|
-
await linkProfile({
|
|
200
|
-
client,
|
|
201
|
-
strategy: "phone",
|
|
202
|
-
phoneNumber: phone,
|
|
203
|
-
verificationCode: otp,
|
|
204
|
-
}, mutationOptions);
|
|
205
|
-
}
|
|
74
|
+
// @ts-expect-error - setReferralCode is not typed for some reason
|
|
75
|
+
const newUser = await app.service("users").setReferralCode({
|
|
76
|
+
userId: user?.userId,
|
|
77
|
+
referralCode: newReferralCode,
|
|
78
|
+
});
|
|
79
|
+
setUser(newUser);
|
|
80
|
+
toast.success("Referral code updated successfully!");
|
|
81
|
+
setIsEditingCode(false);
|
|
82
|
+
setNewReferralCode("");
|
|
206
83
|
}
|
|
207
84
|
catch (error) {
|
|
208
|
-
|
|
209
|
-
setError(error instanceof Error ? error.message : "Failed to link account");
|
|
210
|
-
onError?.(error);
|
|
211
|
-
}
|
|
212
|
-
};
|
|
213
|
-
const handleLinkWallet = async (walletType) => {
|
|
214
|
-
setLinkingState(true, "wallet");
|
|
215
|
-
console.log("selectedMethod", walletType);
|
|
216
|
-
try {
|
|
217
|
-
if (!walletType) {
|
|
218
|
-
throw new Error("Wallet type not found");
|
|
219
|
-
}
|
|
220
|
-
await linkProfile({
|
|
221
|
-
client,
|
|
222
|
-
strategy: "wallet",
|
|
223
|
-
wallet: createWallet(walletType),
|
|
224
|
-
chain: thirdwebB3Mainnet,
|
|
225
|
-
}, mutationOptions);
|
|
85
|
+
toast.error("Failed to update referral code");
|
|
226
86
|
}
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
setError(error instanceof Error ? error.message : "Failed to link account");
|
|
230
|
-
onError?.(error);
|
|
87
|
+
finally {
|
|
88
|
+
setIsUpdatingCode(false);
|
|
231
89
|
}
|
|
232
90
|
};
|
|
233
|
-
const
|
|
91
|
+
const profiles = profilesRaw
|
|
92
|
+
.filter((profile) => !["custom_auth_endpoint"].includes(profile.type))
|
|
93
|
+
.map((profile) => ({
|
|
94
|
+
...getProfileDisplayInfo(profile),
|
|
95
|
+
originalProfile: profile,
|
|
96
|
+
}));
|
|
97
|
+
const handleUnlink = async (profile) => {
|
|
98
|
+
setUnlinkingAccountId(profile.title);
|
|
234
99
|
try {
|
|
235
|
-
|
|
236
|
-
setLinkingState(true, strategy);
|
|
237
|
-
setError(null);
|
|
238
|
-
const result = await linkProfile({
|
|
239
|
-
client,
|
|
240
|
-
strategy,
|
|
241
|
-
}, mutationOptions);
|
|
242
|
-
console.log("result", result);
|
|
243
|
-
// Don't close the modal yet, wait for auth to complete
|
|
244
|
-
onSuccess?.();
|
|
100
|
+
unlinkProfile({ client, profileToUnlink: profile.originalProfile }, mutationOptions);
|
|
245
101
|
}
|
|
246
102
|
catch (error) {
|
|
247
|
-
console.error("Error
|
|
248
|
-
setError(error instanceof Error ? error.message : "Failed to link social account");
|
|
249
|
-
onError?.(error);
|
|
250
|
-
setLinkingState(false);
|
|
103
|
+
console.error("Error unlinking account:", error);
|
|
251
104
|
}
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
useEffect(() => {
|
|
255
|
-
if (isLinking && linkingMethod && !selectedMethod) {
|
|
256
|
-
// This means we're in a social auth flow
|
|
257
|
-
const checkAuthStatus = async () => {
|
|
258
|
-
try {
|
|
259
|
-
// Wait a bit to ensure auth is complete
|
|
260
|
-
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
261
|
-
onClose?.();
|
|
262
|
-
}
|
|
263
|
-
catch (error) {
|
|
264
|
-
console.error("Error checking auth status:", error);
|
|
265
|
-
setLinkingState(false);
|
|
266
|
-
}
|
|
267
|
-
};
|
|
268
|
-
checkAuthStatus();
|
|
105
|
+
finally {
|
|
106
|
+
setUnlinkingAccountId(null);
|
|
269
107
|
}
|
|
270
|
-
}
|
|
271
|
-
const
|
|
272
|
-
|
|
273
|
-
return;
|
|
274
|
-
setSelectedMethod(null);
|
|
275
|
-
setEmail("");
|
|
276
|
-
setPhone("");
|
|
277
|
-
setOtp("");
|
|
278
|
-
setOtpSent(false);
|
|
279
|
-
setError(null);
|
|
280
|
-
setLinkingState(false);
|
|
281
|
-
}, [isLinking, setSelectedMethod, setEmail, setPhone, setOtp, setOtpSent, setError, setLinkingState]);
|
|
282
|
-
const handleFinishedLinking = useCallback((success) => {
|
|
283
|
-
if (success) {
|
|
284
|
-
onSuccess?.();
|
|
285
|
-
onClose?.();
|
|
286
|
-
}
|
|
287
|
-
setLinkingState(false);
|
|
288
|
-
navigateBack();
|
|
108
|
+
};
|
|
109
|
+
const handleOpenLinkModal = () => {
|
|
110
|
+
setB3ModalOpen(true);
|
|
289
111
|
setB3ModalContentType({
|
|
290
|
-
type: "
|
|
291
|
-
activeTab: "settings",
|
|
292
|
-
setActiveTab: () => { },
|
|
293
|
-
chain,
|
|
112
|
+
type: "linkNewAccount",
|
|
294
113
|
partnerId,
|
|
114
|
+
chain,
|
|
115
|
+
onSuccess: async () => {
|
|
116
|
+
// Let the LinkAccount component handle modal closing
|
|
117
|
+
},
|
|
118
|
+
onError: () => {
|
|
119
|
+
// Let the LinkAccount component handle errors
|
|
120
|
+
},
|
|
121
|
+
onClose: () => {
|
|
122
|
+
// Let the LinkAccount component handle closing
|
|
123
|
+
},
|
|
295
124
|
});
|
|
296
|
-
}
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
314
|
-
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
125
|
+
};
|
|
126
|
+
return (_jsxs("div", { className: "linked-accounts-settings", children: [_jsx(ModalHeader, { title: "Linked Accounts" }), _jsxs("div", { className: "linked-accounts-section space-y-4 p-5", children: [isLoadingProfiles ? (_jsx("div", { className: "linked-accounts-loading flex justify-center py-8", children: _jsx(Loader2, { className: "text-b3-grey animate-spin" }) })) : profiles.length > 0 ? (_jsx("div", { className: "linked-accounts-list space-y-4", children: profiles.map(profile => (_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: [_jsxs("div", { className: "linked-account-info flex items-center gap-3", children: [profile.imageUrl ? (_jsx("img", { src: profile.imageUrl, alt: profile.title, className: "linked-account-avatar linked-account-avatar-image size-10 rounded-full" })) : (_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: _jsx("span", { className: "linked-account-initial text-b3-grey font-neue-montreal-semibold text-sm uppercase", children: profile.initial }) })), _jsxs("div", { className: "linked-account-details", children: [_jsxs("div", { className: "linked-account-title-row flex items-center gap-2", children: [(() => {
|
|
127
|
+
const { displayTitle, isAddress } = formatProfileTitle(profile.title);
|
|
128
|
+
const handleCopyAddress = async (e) => {
|
|
129
|
+
e.stopPropagation();
|
|
130
|
+
try {
|
|
131
|
+
await navigator.clipboard.writeText(profile.title);
|
|
132
|
+
toast.success("Address copied to clipboard!");
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
toast.error("Failed to copy address");
|
|
136
|
+
}
|
|
137
|
+
};
|
|
138
|
+
return (_jsxs("div", { className: "flex items-center gap-1", children: [_jsx("span", { className: `linked-account-title text-b3-grey font-neue-montreal-semibold ${isAddress
|
|
139
|
+
? "font-mono text-sm" // Use monospace font for addresses
|
|
140
|
+
: "break-words" // Use break-words for emails/names (better than break-all)
|
|
141
|
+
}`, title: isAddress ? profile.title : undefined, children: displayTitle }), isAddress && (_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: _jsx(Copy, { size: 12, className: "text-gray-500 hover:text-gray-700" }) }))] }));
|
|
142
|
+
})(), _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() })] }), _jsx("div", { className: "linked-account-subtitle text-b3-foreground-muted font-neue-montreal-medium text-sm", children: profile.subtitle })] })] }), _jsx(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 ? (_jsx(Loader2, { className: "linked-account-unlink-loading animate-spin" })) : (_jsx(UnlinkIcon, { size: 16, className: "linked-account-unlink-icon" })) })] }, profile.title))) })) : (_jsx("div", { className: "linked-accounts-empty text-b3-foreground-muted py-8 text-center", children: "No linked accounts found" })), _jsx(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: _jsxs("div", { className: "flex items-center justify-center gap-1.5", children: [_jsx("svg", { width: "20", height: "20", viewBox: "0 0 20 20", fill: "none", xmlns: "http://www.w3.org/2000/svg", className: "shrink-0", children: _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" }) }), _jsx("span", { children: "Link new account" })] }) })] }), showReferralInfo && (
|
|
143
|
+
/* Referral Section */
|
|
144
|
+
_jsxs("div", { className: "referrals-section space-y-4", children: [_jsx("h3", { className: "referrals-title text-b3-grey font-neue-montreal-semibold text-xl", children: "Referrals" }), _jsxs("div", { className: "referral-code-container bg-b3-line rounded-xl p-4", children: [isEditingCode && (_jsxs("div", { className: "referral-code-header-editing", children: [_jsx("div", { className: "referral-code-title text-b3-grey font-neue-montreal-semibold", children: "Your Referral Code" }), _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" })] })), _jsxs("div", { className: "referral-code-content flex items-center justify-between", children: [!isEditingCode && (_jsxs("div", { className: "referral-code-header", children: [_jsx("div", { className: "referral-code-title text-b3-grey font-neue-montreal-semibold", children: "Your Referral Code" }), _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" })] })), _jsx("div", { className: "referral-code-actions flex items-center gap-2", children: isEditingCode ? (_jsxs("div", { className: "referral-code-edit-form flex items-center gap-2", children: [_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 }), _jsx(Button, { size: "sm", className: "referral-code-save-button", onClick: handleUpdateReferralCode, disabled: isUpdatingCode || !newReferralCode, children: isUpdatingCode ? (_jsx(Loader2, { className: "referral-code-save-loading h-4 w-4 animate-spin" })) : ("Save") }), _jsx(Button, { size: "sm", variant: "ghost", className: "referral-code-cancel-button", onClick: () => {
|
|
145
|
+
setIsEditingCode(false);
|
|
146
|
+
setNewReferralCode("");
|
|
147
|
+
}, children: "Cancel" })] })) : (_jsxs(_Fragment, { children: [_jsx("div", { className: "referral-code-display rounded-lg border border-gray-200 bg-white px-3 py-1.5 text-sm", children: currentReferralCode }), _jsx(Button, { size: "icon", variant: "ghost", className: "referral-code-copy-button", onClick: handleCopyCode, children: _jsx(Copy, { className: "referral-code-copy-icon h-4 w-4" }) }), _jsx(Button, { size: "icon", variant: "ghost", className: "referral-code-edit-button", onClick: () => {
|
|
148
|
+
setIsEditingCode(true);
|
|
149
|
+
setTimeout(() => {
|
|
150
|
+
referallCodeRef.current?.focus();
|
|
151
|
+
}, 100);
|
|
152
|
+
}, children: _jsx(Pencil, { className: "referral-code-edit-icon h-4 w-4" }) })] })) })] })] }), _jsxs("div", { className: "referred-users-container bg-b3-line rounded-xl p-4", children: [_jsx("div", { className: "referred-users-title text-b3-grey font-neue-montreal-semibold mb-4", children: "Referred Users" }), isLoadingReferrals ? (_jsx("div", { className: "referred-users-loading flex justify-center py-4", children: _jsx(Loader2, { className: "h-6 w-6 animate-spin text-gray-400" }) })) : referrals?.data?.length ? (_jsx("div", { className: "referred-users-list space-y-3", children: referrals.data.map((referral) => (_jsxs("div", { className: "referred-user-item flex items-center justify-between rounded-lg bg-white p-3", children: [_jsx("div", { className: "referred-user-id text-sm font-medium", children: referral.referreeId }), _jsx("div", { className: "referred-user-date text-sm text-gray-500", children: new Date(referral.createdAt).toLocaleDateString() })] }, String(referral._id)))) })) : (_jsx("div", { className: "referred-users-empty py-4 text-center text-gray-500", children: "No referred users yet" }))] })] }))] }));
|
|
153
|
+
};
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { LinkNewAccountModalProps } from "../../stores/useModalStore";
|
|
2
|
+
export declare function LinkNewAccount({ onSuccess: onSuccessCallback, onError, onClose, chain, partnerId, className, }: LinkNewAccountModalProps & {
|
|
3
|
+
className?: string;
|
|
4
|
+
}): import("react/jsx-runtime").JSX.Element;
|