@agg-build/ui 1.2.11 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +34 -1
- package/dist/{chunk-NWJHFGBZ.mjs → chunk-55ODXLOS.mjs} +1 -1
- package/dist/{chunk-3ZSNHGAB.mjs → chunk-5ALBEKAT.mjs} +842 -300
- package/dist/{chunk-YP75TIY6.mjs → chunk-6PQ6O6M5.mjs} +583 -186
- package/dist/{chunk-ENAGASVU.mjs → chunk-ONVP7YWS.mjs} +439 -339
- package/dist/{chunk-SJLHOAKK.mjs → chunk-QUZWA34R.mjs} +1256 -844
- package/dist/{chunk-54PCEK6G.mjs → chunk-UFC7L74C.mjs} +26 -27
- package/dist/{chunk-J7K2U44E.mjs → chunk-YWJIYEJV.mjs} +236 -121
- package/dist/events.js +2460 -1355
- package/dist/events.mjs +5 -3
- package/dist/index.js +5741 -3841
- package/dist/index.mjs +485 -106
- package/dist/modals.js +1399 -1093
- package/dist/modals.mjs +3 -3
- package/dist/pages.js +4039 -2687
- package/dist/pages.mjs +6 -6
- package/dist/primitives.js +1267 -895
- package/dist/primitives.mjs +3 -1
- package/dist/styles.css +1 -1
- package/dist/tailwind.css +1 -1
- package/dist/trading.js +1032 -695
- package/dist/trading.mjs +4 -4
- package/dist/types/agg-provider.d.mts +27 -0
- package/dist/types/agg-provider.d.ts +27 -0
- package/dist/types/events/item/event-list-item-v2.utils.d.mts +28 -0
- package/dist/types/events/item/event-list-item-v2.utils.d.ts +28 -0
- package/dist/types/events/item/event-list-item.constants.d.mts +1 -1
- package/dist/types/events/item/event-list-item.constants.d.ts +1 -1
- package/dist/types/events/item/index.d.mts +4 -0
- package/dist/types/events/item/index.d.ts +4 -0
- package/dist/types/events/list/event-list-tabs.d.mts +6 -1
- package/dist/types/events/list/event-list-tabs.d.ts +6 -1
- package/dist/types/events/list/event-list.types.d.mts +2 -0
- package/dist/types/events/list/event-list.types.d.ts +2 -0
- package/dist/types/events/list/event-list.utils.d.mts +19 -0
- package/dist/types/events/list/event-list.utils.d.ts +19 -0
- package/dist/types/events/list/index.d.mts +1 -1
- package/dist/types/events/list/index.d.ts +1 -1
- package/dist/types/index.d.mts +2 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/notifications/agg-notification-events-provider.d.mts +35 -0
- package/dist/types/notifications/agg-notification-events-provider.d.ts +35 -0
- package/dist/types/notifications/agg-toast-provider.d.mts +27 -0
- package/dist/types/notifications/agg-toast-provider.d.ts +27 -0
- package/dist/types/notifications/deposit-notification-events.d.mts +10 -0
- package/dist/types/notifications/deposit-notification-events.d.ts +10 -0
- package/dist/types/notifications/index.d.mts +2 -0
- package/dist/types/notifications/index.d.ts +2 -0
- package/dist/types/pages/home/home.types.d.mts +1 -0
- package/dist/types/pages/home/home.types.d.ts +1 -0
- package/dist/types/pages/user-profile/user-profile.types.d.mts +30 -4
- package/dist/types/pages/user-profile/user-profile.types.d.ts +30 -4
- package/dist/types/primitives/button/button.types.d.mts +4 -0
- package/dist/types/primitives/button/button.types.d.ts +4 -0
- package/dist/types/primitives/button/index.d.mts +1 -1
- package/dist/types/primitives/button/index.d.ts +1 -1
- package/dist/types/primitives/icon/index.d.mts +2 -1
- package/dist/types/primitives/icon/index.d.ts +2 -1
- package/dist/types/primitives/icon/registry.d.mts +20 -0
- package/dist/types/primitives/icon/registry.d.ts +20 -0
- package/dist/types/primitives/icon/svg/gift-bonus.d.mts +5 -0
- package/dist/types/primitives/icon/svg/gift-bonus.d.ts +5 -0
- package/dist/types/primitives/icon/svg/sort-end-date.d.mts +5 -0
- package/dist/types/primitives/icon/svg/sort-end-date.d.ts +5 -0
- package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.mts +5 -0
- package/dist/types/primitives/icon/svg/sort-top-arbitrage.d.ts +5 -0
- package/dist/types/primitives/icon/svg/sort-volume-24hr.d.mts +5 -0
- package/dist/types/primitives/icon/svg/sort-volume-24hr.d.ts +5 -0
- package/dist/types/primitives/icon/svg/sort-volume.d.mts +5 -0
- package/dist/types/primitives/icon/svg/sort-volume.d.ts +5 -0
- package/dist/types/primitives/search/search.types.d.mts +2 -1
- package/dist/types/primitives/search/search.types.d.ts +2 -1
- package/dist/types/primitives/select/index.d.mts +1 -1
- package/dist/types/primitives/select/index.d.ts +1 -1
- package/dist/types/primitives/select/select.types.d.mts +9 -0
- package/dist/types/primitives/select/select.types.d.ts +9 -0
- package/dist/types/primitives/skeleton/index.d.mts +1 -1
- package/dist/types/primitives/skeleton/index.d.ts +1 -1
- package/dist/types/primitives/skeleton/skeleton.types.d.mts +4 -0
- package/dist/types/primitives/skeleton/skeleton.types.d.ts +4 -0
- package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.mts +1 -1
- package/dist/types/primitives/skeleton/views/event-list-skeleton-view.d.ts +1 -1
- package/dist/types/primitives/toast/toast.types.d.mts +3 -0
- package/dist/types/primitives/toast/toast.types.d.ts +3 -0
- package/dist/types/profile/index.d.mts +1 -1
- package/dist/types/profile/index.d.ts +1 -1
- package/dist/types/profile/profile-modal.constants.d.mts +2 -2
- package/dist/types/profile/profile-modal.constants.d.ts +2 -2
- package/dist/types/profile/tabs/accounts-wallets-tab.d.mts +2 -17
- package/dist/types/profile/tabs/accounts-wallets-tab.d.ts +2 -17
- package/dist/types/profile/tabs/trading-access-tab.d.mts +15 -0
- package/dist/types/profile/tabs/trading-access-tab.d.ts +15 -0
- package/dist/types/trading/place-order/index.d.mts +1 -1
- package/dist/types/trading/place-order/index.d.ts +1 -1
- package/dist/types/trading/place-order/index.place-order.types.d.mts +4 -1
- package/dist/types/trading/place-order/index.place-order.types.d.ts +4 -1
- package/dist/types/trading/place-order/index.place-order.utils.d.mts +3 -1
- package/dist/types/trading/place-order/index.place-order.utils.d.ts +3 -1
- package/package.json +3 -3
|
@@ -38,12 +38,31 @@ import {
|
|
|
38
38
|
shortenAddress,
|
|
39
39
|
useOptionalToast,
|
|
40
40
|
venueLogoLabels
|
|
41
|
-
} from "./chunk-
|
|
41
|
+
} from "./chunk-QUZWA34R.mjs";
|
|
42
42
|
|
|
43
43
|
// src/deposit/index.tsx
|
|
44
44
|
import { useAggAuthState, useAggUiConfig, useDepositAddresses, useLabels as useLabels11 } from "@agg-build/hooks";
|
|
45
45
|
import { SVM_CHAIN_IDS, useDepositFlow } from "@agg-build/hooks/deposit";
|
|
46
|
-
import { useEffect as useEffect3, useMemo, useRef, useState as useState2 } from "react";
|
|
46
|
+
import { useCallback, useEffect as useEffect3, useMemo, useRef, useState as useState2 } from "react";
|
|
47
|
+
|
|
48
|
+
// src/notifications/deposit-notification-events.ts
|
|
49
|
+
var AGG_DEPOSIT_NOTIFICATION_EVENT = "agg:deposit-notification";
|
|
50
|
+
var dispatchAggDepositNotification = (detail) => {
|
|
51
|
+
if (typeof window === "undefined") return;
|
|
52
|
+
window.dispatchEvent(new CustomEvent(AGG_DEPOSIT_NOTIFICATION_EVENT, { detail }));
|
|
53
|
+
};
|
|
54
|
+
var subscribeAggDepositNotification = (handler) => {
|
|
55
|
+
if (typeof window === "undefined") return () => {
|
|
56
|
+
};
|
|
57
|
+
const handleDepositNotification = (event) => {
|
|
58
|
+
if (!(event instanceof CustomEvent)) return;
|
|
59
|
+
handler(event.detail);
|
|
60
|
+
};
|
|
61
|
+
window.addEventListener(AGG_DEPOSIT_NOTIFICATION_EVENT, handleDepositNotification);
|
|
62
|
+
return () => {
|
|
63
|
+
window.removeEventListener(AGG_DEPOSIT_NOTIFICATION_EVENT, handleDepositNotification);
|
|
64
|
+
};
|
|
65
|
+
};
|
|
47
66
|
|
|
48
67
|
// src/shared/constants.ts
|
|
49
68
|
var USDC = {
|
|
@@ -1337,6 +1356,8 @@ function DepositModalControlled({
|
|
|
1337
1356
|
);
|
|
1338
1357
|
const [highlightedMethod, setHighlightedMethod] = useState2(defaultMethod);
|
|
1339
1358
|
const walletSubmitInFlightRef = useRef(false);
|
|
1359
|
+
const walletDepositAttemptIdRef = useRef(0);
|
|
1360
|
+
const notifiedWalletDepositStatusesRef = useRef(/* @__PURE__ */ new Set());
|
|
1340
1361
|
const [isWalletSubmitting, setIsWalletSubmitting] = useState2(false);
|
|
1341
1362
|
const [cardProviders, setCardProviders] = useState2([]);
|
|
1342
1363
|
const [quotesLoading, setQuotesLoading] = useState2(false);
|
|
@@ -1439,19 +1460,42 @@ function DepositModalControlled({
|
|
|
1439
1460
|
fromWallet: walletFlow.walletLabel,
|
|
1440
1461
|
gasFee: ""
|
|
1441
1462
|
}, walletFlow.successSummary);
|
|
1463
|
+
const handleWalletDepositNotification = useCallback(
|
|
1464
|
+
(status, errorMessage) => {
|
|
1465
|
+
if (notifiedWalletDepositStatusesRef.current.has(status)) return;
|
|
1466
|
+
notifiedWalletDepositStatusesRef.current.add(status);
|
|
1467
|
+
dispatchAggDepositNotification({
|
|
1468
|
+
id: `wallet-${walletDepositAttemptIdRef.current}`,
|
|
1469
|
+
status,
|
|
1470
|
+
amount: walletFlow.amount,
|
|
1471
|
+
tokenSymbol: walletToken || DEFAULT_WALLET_TOKEN,
|
|
1472
|
+
errorMessage
|
|
1473
|
+
});
|
|
1474
|
+
},
|
|
1475
|
+
[walletFlow.amount, walletToken]
|
|
1476
|
+
);
|
|
1442
1477
|
useEffect3(() => {
|
|
1443
1478
|
if (step === "wallet-processing" && !isWalletSubmitting && walletFlow.transactionStatus === "settled") {
|
|
1479
|
+
handleWalletDepositNotification("completed");
|
|
1444
1480
|
setStep("wallet-success");
|
|
1445
1481
|
}
|
|
1446
|
-
}, [isWalletSubmitting, step, walletFlow.transactionStatus]);
|
|
1482
|
+
}, [handleWalletDepositNotification, isWalletSubmitting, step, walletFlow.transactionStatus]);
|
|
1447
1483
|
useEffect3(() => {
|
|
1448
1484
|
if (!onCancelWalletDeposit) return;
|
|
1449
1485
|
if (step === "wallet-processing" && !isWalletSubmitting && walletFlow.transactionStatus === "error") {
|
|
1450
1486
|
walletSubmitInFlightRef.current = false;
|
|
1487
|
+
handleWalletDepositNotification("failed", walletFlow.transactionErrorMessage);
|
|
1451
1488
|
onCancelWalletDeposit();
|
|
1452
1489
|
setStep("wallet-form");
|
|
1453
1490
|
}
|
|
1454
|
-
}, [
|
|
1491
|
+
}, [
|
|
1492
|
+
handleWalletDepositNotification,
|
|
1493
|
+
isWalletSubmitting,
|
|
1494
|
+
onCancelWalletDeposit,
|
|
1495
|
+
step,
|
|
1496
|
+
walletFlow.transactionErrorMessage,
|
|
1497
|
+
walletFlow.transactionStatus
|
|
1498
|
+
]);
|
|
1455
1499
|
const cardTokenOptions = withTokenIcons(
|
|
1456
1500
|
mergeSelectOptionsUnique(cardFlow == null ? void 0 : cardFlow.tokenOptions, DEFAULT_CURRENCY_OPTIONS)
|
|
1457
1501
|
);
|
|
@@ -1575,6 +1619,8 @@ function DepositModalControlled({
|
|
|
1575
1619
|
setSendChainId("");
|
|
1576
1620
|
setSendToken("");
|
|
1577
1621
|
walletSubmitInFlightRef.current = false;
|
|
1622
|
+
walletDepositAttemptIdRef.current = 0;
|
|
1623
|
+
notifiedWalletDepositStatusesRef.current = /* @__PURE__ */ new Set();
|
|
1578
1624
|
setIsWalletSubmitting(false);
|
|
1579
1625
|
setCardProviders([]);
|
|
1580
1626
|
setQuotesLoading(false);
|
|
@@ -1631,6 +1677,8 @@ function DepositModalControlled({
|
|
|
1631
1677
|
var _a2, _b2;
|
|
1632
1678
|
if (walletSubmitInFlightRef.current) return;
|
|
1633
1679
|
walletSubmitInFlightRef.current = true;
|
|
1680
|
+
walletDepositAttemptIdRef.current += 1;
|
|
1681
|
+
notifiedWalletDepositStatusesRef.current = /* @__PURE__ */ new Set();
|
|
1634
1682
|
setIsWalletSubmitting(true);
|
|
1635
1683
|
setStep("wallet-processing");
|
|
1636
1684
|
const walletChainIdNum = walletChainId ? Number(walletChainId) : void 0;
|
|
@@ -2409,7 +2457,7 @@ var WithdrawModal = (props) => {
|
|
|
2409
2457
|
WithdrawModal.displayName = "WithdrawModal";
|
|
2410
2458
|
|
|
2411
2459
|
// src/onboarding/index.tsx
|
|
2412
|
-
import { useCallback as
|
|
2460
|
+
import { useCallback as useCallback6, useEffect as useEffect5, useState as useState8 } from "react";
|
|
2413
2461
|
import { useLabels as useLabels20 } from "@agg-build/hooks";
|
|
2414
2462
|
import * as Dialog3 from "@radix-ui/react-dialog";
|
|
2415
2463
|
|
|
@@ -2429,7 +2477,7 @@ var ONBOARDING_STEPS = {
|
|
|
2429
2477
|
var ONCHAIN_VENUES = [Venue.polymarket, Venue.opinion, Venue.predict];
|
|
2430
2478
|
|
|
2431
2479
|
// src/onboarding/steps/how-it-works.tsx
|
|
2432
|
-
import { useCallback, useRef as useRef2, useState as useState4 } from "react";
|
|
2480
|
+
import { useCallback as useCallback2, useRef as useRef2, useState as useState4 } from "react";
|
|
2433
2481
|
import { useLabels as useLabels15 } from "@agg-build/hooks";
|
|
2434
2482
|
import { jsx as jsx17, jsxs as jsxs17 } from "react/jsx-runtime";
|
|
2435
2483
|
var defaultIcons = {
|
|
@@ -2443,7 +2491,7 @@ var HowItWorksStep = ({ onContinue, icons }) => {
|
|
|
2443
2491
|
const scrollRef = useRef2(null);
|
|
2444
2492
|
const [showTopGradient, setShowTopGradient] = useState4(false);
|
|
2445
2493
|
const [showBottomGradient, setShowBottomGradient] = useState4(true);
|
|
2446
|
-
const handleScroll =
|
|
2494
|
+
const handleScroll = useCallback2(() => {
|
|
2447
2495
|
const el = scrollRef.current;
|
|
2448
2496
|
if (!el) return;
|
|
2449
2497
|
setShowTopGradient(el.scrollTop > 0);
|
|
@@ -2512,7 +2560,7 @@ var HowItWorksStep = ({ onContinue, icons }) => {
|
|
|
2512
2560
|
HowItWorksStep.displayName = "HowItWorksStep";
|
|
2513
2561
|
|
|
2514
2562
|
// src/onboarding/steps/profile-setup.tsx
|
|
2515
|
-
import { useCallback as
|
|
2563
|
+
import { useCallback as useCallback3, useRef as useRef3, useState as useState5 } from "react";
|
|
2516
2564
|
import { useLabels as useLabels16 } from "@agg-build/hooks";
|
|
2517
2565
|
import { jsx as jsx18, jsxs as jsxs18 } from "react/jsx-runtime";
|
|
2518
2566
|
var ProfileSetupStep = ({ onContinue }) => {
|
|
@@ -2521,11 +2569,11 @@ var ProfileSetupStep = ({ onContinue }) => {
|
|
|
2521
2569
|
const [avatarFile, setAvatarFile] = useState5();
|
|
2522
2570
|
const [avatarPreview, setAvatarPreview] = useState5();
|
|
2523
2571
|
const fileInputRef = useRef3(null);
|
|
2524
|
-
const handleAvatarClick =
|
|
2572
|
+
const handleAvatarClick = useCallback3(() => {
|
|
2525
2573
|
var _a;
|
|
2526
2574
|
(_a = fileInputRef.current) == null ? void 0 : _a.click();
|
|
2527
2575
|
}, []);
|
|
2528
|
-
const handleFileChange =
|
|
2576
|
+
const handleFileChange = useCallback3((e) => {
|
|
2529
2577
|
var _a;
|
|
2530
2578
|
const file = (_a = e.target.files) == null ? void 0 : _a[0];
|
|
2531
2579
|
if (!file) return;
|
|
@@ -2537,7 +2585,7 @@ var ProfileSetupStep = ({ onContinue }) => {
|
|
|
2537
2585
|
};
|
|
2538
2586
|
reader.readAsDataURL(file);
|
|
2539
2587
|
}, []);
|
|
2540
|
-
const handleContinue =
|
|
2588
|
+
const handleContinue = useCallback3(() => {
|
|
2541
2589
|
onContinue({
|
|
2542
2590
|
username,
|
|
2543
2591
|
avatarFile,
|
|
@@ -2779,7 +2827,7 @@ ConnectAccountsStep.displayName = "ConnectAccountsStep";
|
|
|
2779
2827
|
|
|
2780
2828
|
// src/onboarding/steps/connect-kalshi-modal.tsx
|
|
2781
2829
|
import { Venue as Venue3 } from "@agg-build/sdk";
|
|
2782
|
-
import { useCallback as
|
|
2830
|
+
import { useCallback as useCallback4, useState as useState6 } from "react";
|
|
2783
2831
|
import { useLabels as useLabels18 } from "@agg-build/hooks";
|
|
2784
2832
|
import * as Dialog from "@radix-ui/react-dialog";
|
|
2785
2833
|
import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
|
|
@@ -2794,10 +2842,10 @@ var ConnectKalshiModal = ({
|
|
|
2794
2842
|
const [verifying, setVerifying] = useState6(false);
|
|
2795
2843
|
const [error, setError] = useState6();
|
|
2796
2844
|
const canVerify = apiKeyId.trim().length > 0 && privateKey.trim().length > 0;
|
|
2797
|
-
const handleCancel =
|
|
2845
|
+
const handleCancel = useCallback4(() => {
|
|
2798
2846
|
onOpenChange(false);
|
|
2799
2847
|
}, [onOpenChange]);
|
|
2800
|
-
const handleVerify =
|
|
2848
|
+
const handleVerify = useCallback4(() => __async(null, null, function* () {
|
|
2801
2849
|
if (!canVerify || verifying) return;
|
|
2802
2850
|
setVerifying(true);
|
|
2803
2851
|
setError(void 0);
|
|
@@ -2826,7 +2874,7 @@ var ConnectKalshiModal = ({
|
|
|
2826
2874
|
privateKey,
|
|
2827
2875
|
verifying
|
|
2828
2876
|
]);
|
|
2829
|
-
const handleOpenChange =
|
|
2877
|
+
const handleOpenChange = useCallback4(
|
|
2830
2878
|
(value) => {
|
|
2831
2879
|
if (value) {
|
|
2832
2880
|
setApiKeyId("");
|
|
@@ -3029,7 +3077,7 @@ var ConnectKalshiModal = ({
|
|
|
3029
3077
|
ConnectKalshiModal.displayName = "ConnectKalshiModal";
|
|
3030
3078
|
|
|
3031
3079
|
// src/onboarding/steps/connect-onchain-modal.tsx
|
|
3032
|
-
import { useCallback as
|
|
3080
|
+
import { useCallback as useCallback5, useState as useState7 } from "react";
|
|
3033
3081
|
import { useLabels as useLabels19 } from "@agg-build/hooks";
|
|
3034
3082
|
import * as Dialog2 from "@radix-ui/react-dialog";
|
|
3035
3083
|
import { jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
|
|
@@ -3041,10 +3089,10 @@ var ConnectOnchainModal = ({
|
|
|
3041
3089
|
const labels = useLabels19();
|
|
3042
3090
|
const [connecting, setConnecting] = useState7(false);
|
|
3043
3091
|
const [error, setError] = useState7();
|
|
3044
|
-
const handleCancel =
|
|
3092
|
+
const handleCancel = useCallback5(() => {
|
|
3045
3093
|
onOpenChange(false);
|
|
3046
3094
|
}, [onOpenChange]);
|
|
3047
|
-
const handleConnect =
|
|
3095
|
+
const handleConnect = useCallback5(() => __async(null, null, function* () {
|
|
3048
3096
|
if (connecting) return;
|
|
3049
3097
|
setConnecting(true);
|
|
3050
3098
|
setError(void 0);
|
|
@@ -3059,7 +3107,7 @@ var ConnectOnchainModal = ({
|
|
|
3059
3107
|
setConnecting(false);
|
|
3060
3108
|
}
|
|
3061
3109
|
}), [connecting, labels.onboarding.connectOnchainModal.fallbackError, onConnect, onOpenChange]);
|
|
3062
|
-
const handleOpenChange =
|
|
3110
|
+
const handleOpenChange = useCallback5(
|
|
3063
3111
|
(value) => {
|
|
3064
3112
|
if (value) {
|
|
3065
3113
|
setError(void 0);
|
|
@@ -3169,30 +3217,30 @@ var OnboardingModal = ({
|
|
|
3169
3217
|
setOnchainConnected(false);
|
|
3170
3218
|
}
|
|
3171
3219
|
}, [open]);
|
|
3172
|
-
const handleHowItWorksContinue =
|
|
3220
|
+
const handleHowItWorksContinue = useCallback6(() => {
|
|
3173
3221
|
setStep(ONBOARDING_STEPS.PROFILE_SETUP);
|
|
3174
3222
|
}, []);
|
|
3175
|
-
const handleProfileContinue =
|
|
3223
|
+
const handleProfileContinue = useCallback6(
|
|
3176
3224
|
(data) => {
|
|
3177
3225
|
onProfileSubmit == null ? void 0 : onProfileSubmit(data);
|
|
3178
3226
|
setStep(ONBOARDING_STEPS.CONNECT_ACCOUNTS);
|
|
3179
3227
|
},
|
|
3180
3228
|
[onProfileSubmit]
|
|
3181
3229
|
);
|
|
3182
|
-
const handleConnectContinue =
|
|
3230
|
+
const handleConnectContinue = useCallback6(() => {
|
|
3183
3231
|
onComplete == null ? void 0 : onComplete();
|
|
3184
3232
|
}, [onComplete]);
|
|
3185
|
-
const handleOpenOnchainModal =
|
|
3233
|
+
const handleOpenOnchainModal = useCallback6(() => {
|
|
3186
3234
|
setOnchainModalOpen(true);
|
|
3187
3235
|
}, []);
|
|
3188
|
-
const handleOnchainConnect =
|
|
3236
|
+
const handleOnchainConnect = useCallback6(() => __async(null, null, function* () {
|
|
3189
3237
|
yield onConnectOnchain == null ? void 0 : onConnectOnchain();
|
|
3190
3238
|
setOnchainConnected(true);
|
|
3191
3239
|
}), [onConnectOnchain]);
|
|
3192
|
-
const handleOpenKalshiModal =
|
|
3240
|
+
const handleOpenKalshiModal = useCallback6(() => {
|
|
3193
3241
|
setKalshiModalOpen(true);
|
|
3194
3242
|
}, []);
|
|
3195
|
-
const handleKalshiVerify =
|
|
3243
|
+
const handleKalshiVerify = useCallback6(
|
|
3196
3244
|
(credentials) => __async(null, null, function* () {
|
|
3197
3245
|
yield onConnectKalshi == null ? void 0 : onConnectKalshi(credentials);
|
|
3198
3246
|
setKalshiConnected(true);
|
|
@@ -3246,26 +3294,25 @@ var OnboardingModal = ({
|
|
|
3246
3294
|
OnboardingModal.displayName = "OnboardingModal";
|
|
3247
3295
|
|
|
3248
3296
|
// src/profile/index.tsx
|
|
3249
|
-
import {
|
|
3250
|
-
import { useState as useState10, useEffect as useEffect7, useCallback as useCallback8, useMemo as useMemo2 } from "react";
|
|
3297
|
+
import { useState as useState10, useEffect as useEffect7, useCallback as useCallback9, useMemo as useMemo3 } from "react";
|
|
3251
3298
|
import { useAggClient as useAggClient2, useAggAuthState as useAggAuthState2 } from "@agg-build/hooks";
|
|
3252
3299
|
|
|
3253
3300
|
// src/profile/profile-modal.constants.ts
|
|
3254
3301
|
var PROFILE_TAB_KEYS = {
|
|
3255
|
-
|
|
3256
|
-
|
|
3302
|
+
PROFILE_ACCOUNTS: "profile-accounts",
|
|
3303
|
+
TRADING_ACCESS: "trading-access"
|
|
3257
3304
|
};
|
|
3258
3305
|
var PROFILE_TAB_ITEMS = [
|
|
3259
|
-
{ value: PROFILE_TAB_KEYS.ABOUT, label: "About", icon: "profile-about-tab" },
|
|
3260
3306
|
{
|
|
3261
|
-
value: PROFILE_TAB_KEYS.
|
|
3262
|
-
label: "
|
|
3263
|
-
icon: "profile-
|
|
3264
|
-
}
|
|
3307
|
+
value: PROFILE_TAB_KEYS.PROFILE_ACCOUNTS,
|
|
3308
|
+
label: "Profile & accounts",
|
|
3309
|
+
icon: "profile-about-tab"
|
|
3310
|
+
},
|
|
3311
|
+
{ value: PROFILE_TAB_KEYS.TRADING_ACCESS, label: "Trading access", icon: "shield-trust" }
|
|
3265
3312
|
];
|
|
3266
3313
|
|
|
3267
3314
|
// src/profile/tabs/about-tab.tsx
|
|
3268
|
-
import { useCallback as
|
|
3315
|
+
import { useCallback as useCallback7, useRef as useRef4 } from "react";
|
|
3269
3316
|
import { useLabels as useLabels21 } from "@agg-build/hooks";
|
|
3270
3317
|
import { jsx as jsx23, jsxs as jsxs23 } from "react/jsx-runtime";
|
|
3271
3318
|
var AboutTab = ({
|
|
@@ -3279,11 +3326,11 @@ var AboutTab = ({
|
|
|
3279
3326
|
}) => {
|
|
3280
3327
|
const labels = useLabels21();
|
|
3281
3328
|
const fileInputRef = useRef4(null);
|
|
3282
|
-
const handleAvatarClick =
|
|
3329
|
+
const handleAvatarClick = useCallback7(() => {
|
|
3283
3330
|
var _a;
|
|
3284
3331
|
(_a = fileInputRef.current) == null ? void 0 : _a.click();
|
|
3285
3332
|
}, []);
|
|
3286
|
-
const handleFileChange =
|
|
3333
|
+
const handleFileChange = useCallback7(
|
|
3287
3334
|
(e) => {
|
|
3288
3335
|
var _a;
|
|
3289
3336
|
const file = (_a = e.target.files) == null ? void 0 : _a[0];
|
|
@@ -3299,69 +3346,67 @@ var AboutTab = ({
|
|
|
3299
3346
|
);
|
|
3300
3347
|
const resolvedPreview = draftAvatarPreview != null ? draftAvatarPreview : avatarPreview;
|
|
3301
3348
|
const hasAvatarPreview = Boolean(resolvedPreview);
|
|
3302
|
-
return /* @__PURE__ */
|
|
3303
|
-
/* @__PURE__ */ jsxs23(
|
|
3304
|
-
|
|
3305
|
-
|
|
3306
|
-
|
|
3307
|
-
|
|
3308
|
-
|
|
3309
|
-
|
|
3310
|
-
|
|
3311
|
-
|
|
3312
|
-
|
|
3313
|
-
|
|
3314
|
-
|
|
3315
|
-
|
|
3316
|
-
|
|
3317
|
-
|
|
3318
|
-
|
|
3319
|
-
|
|
3320
|
-
|
|
3321
|
-
|
|
3322
|
-
|
|
3323
|
-
|
|
3324
|
-
|
|
3325
|
-
|
|
3326
|
-
|
|
3327
|
-
|
|
3328
|
-
|
|
3329
|
-
|
|
3330
|
-
|
|
3331
|
-
|
|
3332
|
-
|
|
3333
|
-
|
|
3334
|
-
|
|
3335
|
-
|
|
3336
|
-
|
|
3337
|
-
|
|
3338
|
-
|
|
3339
|
-
|
|
3340
|
-
|
|
3341
|
-
|
|
3342
|
-
|
|
3343
|
-
|
|
3344
|
-
|
|
3345
|
-
|
|
3346
|
-
|
|
3347
|
-
|
|
3348
|
-
|
|
3349
|
-
|
|
3350
|
-
|
|
3351
|
-
|
|
3352
|
-
|
|
3353
|
-
|
|
3354
|
-
|
|
3355
|
-
|
|
3356
|
-
|
|
3357
|
-
|
|
3358
|
-
|
|
3359
|
-
|
|
3360
|
-
|
|
3361
|
-
|
|
3362
|
-
|
|
3363
|
-
] }),
|
|
3364
|
-
/* @__PURE__ */ jsxs23("div", { className: "agg-form-section flex flex-col gap-2", children: [
|
|
3349
|
+
return /* @__PURE__ */ jsx23("div", { className: "agg-profile-about flex flex-col gap-8", children: /* @__PURE__ */ jsxs23("div", { className: "agg-profile-avatar-section flex w-full items-center gap-6", children: [
|
|
3350
|
+
/* @__PURE__ */ jsxs23(
|
|
3351
|
+
"button",
|
|
3352
|
+
{
|
|
3353
|
+
type: "button",
|
|
3354
|
+
onClick: handleAvatarClick,
|
|
3355
|
+
className: cn(
|
|
3356
|
+
"agg-profile-avatar-trigger",
|
|
3357
|
+
"group relative flex items-center justify-center self-start",
|
|
3358
|
+
"h-[80px] w-[80px]",
|
|
3359
|
+
"rounded-agg-full",
|
|
3360
|
+
"bg-agg-secondary-hover",
|
|
3361
|
+
!hasAvatarPreview && "hover:bg-agg-tertiary",
|
|
3362
|
+
"transition-colors cursor-pointer",
|
|
3363
|
+
"overflow-hidden"
|
|
3364
|
+
),
|
|
3365
|
+
"aria-label": labels.onboarding.profileSetup.uploadProfilePictureAria,
|
|
3366
|
+
children: [
|
|
3367
|
+
!hasAvatarPreview ? /* @__PURE__ */ jsx23(
|
|
3368
|
+
"svg",
|
|
3369
|
+
{
|
|
3370
|
+
"aria-hidden": true,
|
|
3371
|
+
viewBox: "0 0 80 80",
|
|
3372
|
+
className: "pointer-events-none absolute inset-0 h-full w-full text-agg-separator group-hover:text-agg-muted-foreground",
|
|
3373
|
+
children: /* @__PURE__ */ jsx23(
|
|
3374
|
+
"circle",
|
|
3375
|
+
{
|
|
3376
|
+
cx: "40",
|
|
3377
|
+
cy: "40",
|
|
3378
|
+
r: "39.5",
|
|
3379
|
+
fill: "none",
|
|
3380
|
+
stroke: "currentColor",
|
|
3381
|
+
strokeWidth: "1",
|
|
3382
|
+
strokeDasharray: "8 8"
|
|
3383
|
+
}
|
|
3384
|
+
)
|
|
3385
|
+
}
|
|
3386
|
+
) : null,
|
|
3387
|
+
resolvedPreview ? /* @__PURE__ */ jsx23(
|
|
3388
|
+
RemoteImage,
|
|
3389
|
+
{
|
|
3390
|
+
src: resolvedPreview,
|
|
3391
|
+
alt: labels.onboarding.profileSetup.profilePreviewAlt,
|
|
3392
|
+
className: "h-full w-full object-cover"
|
|
3393
|
+
}
|
|
3394
|
+
) : /* @__PURE__ */ jsx23(Icon, { name: "profile", className: "h-7 w-7 text-agg-muted-foreground" })
|
|
3395
|
+
]
|
|
3396
|
+
}
|
|
3397
|
+
),
|
|
3398
|
+
/* @__PURE__ */ jsx23(
|
|
3399
|
+
"input",
|
|
3400
|
+
{
|
|
3401
|
+
ref: fileInputRef,
|
|
3402
|
+
type: "file",
|
|
3403
|
+
accept: "image/*",
|
|
3404
|
+
onChange: handleFileChange,
|
|
3405
|
+
className: "hidden",
|
|
3406
|
+
"aria-hidden": "true"
|
|
3407
|
+
}
|
|
3408
|
+
),
|
|
3409
|
+
/* @__PURE__ */ jsxs23("div", { className: "agg-form-section flex min-w-0 flex-1 flex-col gap-2", children: [
|
|
3365
3410
|
/* @__PURE__ */ jsx23(
|
|
3366
3411
|
"label",
|
|
3367
3412
|
{
|
|
@@ -3379,7 +3424,7 @@ var AboutTab = ({
|
|
|
3379
3424
|
value: draftUsername,
|
|
3380
3425
|
onChange: (e) => onDraftUsernameChange(e.target.value),
|
|
3381
3426
|
className: cn(
|
|
3382
|
-
"w-full px-
|
|
3427
|
+
"h-10 w-full px-3 py-2.5",
|
|
3383
3428
|
"rounded-agg-sm",
|
|
3384
3429
|
"border border-agg-separator",
|
|
3385
3430
|
"bg-agg-secondary text-agg-foreground",
|
|
@@ -3392,27 +3437,33 @@ var AboutTab = ({
|
|
|
3392
3437
|
}
|
|
3393
3438
|
)
|
|
3394
3439
|
] })
|
|
3395
|
-
] });
|
|
3440
|
+
] }) });
|
|
3396
3441
|
};
|
|
3397
3442
|
AboutTab.displayName = "AboutTab";
|
|
3398
3443
|
|
|
3399
3444
|
// src/profile/tabs/accounts-wallets-tab.tsx
|
|
3400
|
-
import { useCallback as useCallback7, useEffect as useEffect6, useState as useState9 } from "react";
|
|
3401
|
-
import { useAggClient, useDepositAddresses as useDepositAddresses2 } from "@agg-build/hooks";
|
|
3402
3445
|
import { jsx as jsx24, jsxs as jsxs24 } from "react/jsx-runtime";
|
|
3403
3446
|
var SectionTitle = ({ children }) => /* @__PURE__ */ jsx24("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
|
|
3404
3447
|
var AccountRow = ({ children, className }) => /* @__PURE__ */ jsx24(
|
|
3405
3448
|
"div",
|
|
3406
3449
|
{
|
|
3407
3450
|
className: cn(
|
|
3408
|
-
"flex items-center justify-between",
|
|
3451
|
+
"flex h-12 items-center justify-between",
|
|
3409
3452
|
"rounded-agg-lg border border-agg-separator bg-agg-secondary",
|
|
3410
|
-
"px-5
|
|
3453
|
+
"px-5",
|
|
3411
3454
|
className
|
|
3412
3455
|
),
|
|
3413
3456
|
children
|
|
3414
3457
|
}
|
|
3415
3458
|
);
|
|
3459
|
+
var AccountIdentity = ({
|
|
3460
|
+
icon,
|
|
3461
|
+
label,
|
|
3462
|
+
iconClassName
|
|
3463
|
+
}) => /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
3464
|
+
/* @__PURE__ */ jsx24("span", { className: cn("flex h-5 w-5 shrink-0 items-center justify-center", iconClassName), children: /* @__PURE__ */ jsx24(Icon, { name: icon, size: "small", color: "currentColor" }) }),
|
|
3465
|
+
/* @__PURE__ */ jsx24("span", { className: "truncate text-agg-base font-agg-normal leading-6 text-agg-foreground", children: label })
|
|
3466
|
+
] });
|
|
3416
3467
|
var ConnectTextButton = ({ onClick }) => /* @__PURE__ */ jsx24(
|
|
3417
3468
|
"button",
|
|
3418
3469
|
{
|
|
@@ -3431,8 +3482,159 @@ var DisconnectTextButton = ({ onClick }) => /* @__PURE__ */ jsx24(
|
|
|
3431
3482
|
children: "Disconnect"
|
|
3432
3483
|
}
|
|
3433
3484
|
);
|
|
3434
|
-
var
|
|
3485
|
+
var VerifiedBadge = () => /* @__PURE__ */ jsx24(Icon, { name: "check-badge", size: "small", color: "var(--agg-color-primary, #536dfe)" });
|
|
3486
|
+
var getWalletIconName = (wallet) => {
|
|
3487
|
+
const chain = wallet.chain.toLowerCase();
|
|
3488
|
+
if (chain === "solana" || chain === "svm") {
|
|
3489
|
+
return "solana";
|
|
3490
|
+
}
|
|
3491
|
+
return "ethereum";
|
|
3492
|
+
};
|
|
3493
|
+
var ConnectedAccountRow = ({
|
|
3494
|
+
icon,
|
|
3495
|
+
label,
|
|
3496
|
+
connectedLabel,
|
|
3497
|
+
connected,
|
|
3498
|
+
iconClassName,
|
|
3499
|
+
onConnect,
|
|
3500
|
+
onDisconnect
|
|
3501
|
+
}) => {
|
|
3502
|
+
const displayLabel = connected ? connectedLabel != null ? connectedLabel : label : label;
|
|
3503
|
+
return /* @__PURE__ */ jsxs24(AccountRow, { className: "agg-social-account-row gap-4", children: [
|
|
3504
|
+
/* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
3505
|
+
/* @__PURE__ */ jsx24(AccountIdentity, { icon, label: displayLabel, iconClassName }),
|
|
3506
|
+
connected ? /* @__PURE__ */ jsx24(VerifiedBadge, {}) : null
|
|
3507
|
+
] }),
|
|
3508
|
+
connected ? /* @__PURE__ */ jsx24(DisconnectTextButton, { onClick: onDisconnect }) : /* @__PURE__ */ jsx24(ConnectTextButton, { onClick: onConnect })
|
|
3509
|
+
] });
|
|
3510
|
+
};
|
|
3511
|
+
var AccountsWalletsTab = ({
|
|
3512
|
+
socialAccounts,
|
|
3513
|
+
email,
|
|
3514
|
+
wallets = [],
|
|
3515
|
+
onConnectTwitter,
|
|
3516
|
+
onDisconnectTwitter,
|
|
3517
|
+
onConnectGoogle,
|
|
3518
|
+
onDisconnectGoogle,
|
|
3519
|
+
onConnectApple,
|
|
3520
|
+
onDisconnectApple,
|
|
3521
|
+
onConnectEmail
|
|
3522
|
+
}) => {
|
|
3523
|
+
const twitter = socialAccounts == null ? void 0 : socialAccounts.twitter;
|
|
3524
|
+
const google = socialAccounts == null ? void 0 : socialAccounts.google;
|
|
3525
|
+
const apple = socialAccounts == null ? void 0 : socialAccounts.apple;
|
|
3526
|
+
const hasEmail = Boolean(email);
|
|
3527
|
+
return /* @__PURE__ */ jsxs24("div", { className: "agg-accounts-wallets-tab flex flex-col gap-6", children: [
|
|
3528
|
+
/* @__PURE__ */ jsxs24("div", { className: "agg-social-accounts-section flex flex-col gap-3", children: [
|
|
3529
|
+
/* @__PURE__ */ jsx24(SectionTitle, { children: "Connected accounts" }),
|
|
3530
|
+
/* @__PURE__ */ jsxs24("div", { className: "agg-social-accounts-list flex flex-col gap-4", children: [
|
|
3531
|
+
/* @__PURE__ */ jsx24(
|
|
3532
|
+
ConnectedAccountRow,
|
|
3533
|
+
{
|
|
3534
|
+
icon: "google",
|
|
3535
|
+
iconClassName: "text-agg-foreground",
|
|
3536
|
+
label: "Google",
|
|
3537
|
+
connected: google == null ? void 0 : google.connected,
|
|
3538
|
+
connectedLabel: google == null ? void 0 : google.handle,
|
|
3539
|
+
onConnect: onConnectGoogle,
|
|
3540
|
+
onDisconnect: onDisconnectGoogle
|
|
3541
|
+
}
|
|
3542
|
+
),
|
|
3543
|
+
/* @__PURE__ */ jsx24(
|
|
3544
|
+
ConnectedAccountRow,
|
|
3545
|
+
{
|
|
3546
|
+
icon: "apple",
|
|
3547
|
+
iconClassName: "text-agg-foreground",
|
|
3548
|
+
label: "Apple",
|
|
3549
|
+
connected: apple == null ? void 0 : apple.connected,
|
|
3550
|
+
connectedLabel: apple == null ? void 0 : apple.handle,
|
|
3551
|
+
onConnect: onConnectApple,
|
|
3552
|
+
onDisconnect: onDisconnectApple
|
|
3553
|
+
}
|
|
3554
|
+
),
|
|
3555
|
+
/* @__PURE__ */ jsx24(
|
|
3556
|
+
ConnectedAccountRow,
|
|
3557
|
+
{
|
|
3558
|
+
icon: "twitter",
|
|
3559
|
+
iconClassName: "text-agg-foreground",
|
|
3560
|
+
label: "X (Twitter)",
|
|
3561
|
+
connected: twitter == null ? void 0 : twitter.connected,
|
|
3562
|
+
connectedLabel: twitter == null ? void 0 : twitter.handle,
|
|
3563
|
+
onConnect: onConnectTwitter,
|
|
3564
|
+
onDisconnect: onDisconnectTwitter
|
|
3565
|
+
}
|
|
3566
|
+
),
|
|
3567
|
+
/* @__PURE__ */ jsx24(
|
|
3568
|
+
ConnectedAccountRow,
|
|
3569
|
+
{
|
|
3570
|
+
icon: "email",
|
|
3571
|
+
iconClassName: "text-agg-foreground",
|
|
3572
|
+
label: "Email address",
|
|
3573
|
+
connected: hasEmail,
|
|
3574
|
+
connectedLabel: email != null ? email : void 0,
|
|
3575
|
+
onConnect: onConnectEmail
|
|
3576
|
+
}
|
|
3577
|
+
)
|
|
3578
|
+
] })
|
|
3579
|
+
] }),
|
|
3580
|
+
/* @__PURE__ */ jsxs24("div", { className: "agg-wallets-section flex flex-col gap-3", children: [
|
|
3581
|
+
/* @__PURE__ */ jsx24(SectionTitle, { children: "Wallets" }),
|
|
3582
|
+
/* @__PURE__ */ jsx24("div", { className: "flex flex-col gap-2", children: wallets.length > 0 ? wallets.map((wallet) => {
|
|
3583
|
+
var _a;
|
|
3584
|
+
return /* @__PURE__ */ jsx24(AccountRow, { className: "gap-4", children: /* @__PURE__ */ jsxs24("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
3585
|
+
/* @__PURE__ */ jsx24(
|
|
3586
|
+
AccountIdentity,
|
|
3587
|
+
{
|
|
3588
|
+
icon: getWalletIconName(wallet),
|
|
3589
|
+
iconClassName: "text-agg-foreground",
|
|
3590
|
+
label: (_a = wallet.displayAddress) != null ? _a : wallet.address
|
|
3591
|
+
}
|
|
3592
|
+
),
|
|
3593
|
+
/* @__PURE__ */ jsx24(VerifiedBadge, {})
|
|
3594
|
+
] }) }, `${wallet.chain}:${wallet.address}`);
|
|
3595
|
+
}) : null })
|
|
3596
|
+
] })
|
|
3597
|
+
] });
|
|
3598
|
+
};
|
|
3599
|
+
AccountsWalletsTab.displayName = "AccountsWalletsTab";
|
|
3600
|
+
|
|
3601
|
+
// src/profile/tabs/trading-access-tab.tsx
|
|
3602
|
+
import {
|
|
3603
|
+
getVenueAvailabilityState,
|
|
3604
|
+
getVisibleVenuesByConfig,
|
|
3605
|
+
useAggClient,
|
|
3606
|
+
useAppConfig,
|
|
3607
|
+
useDepositAddresses as useDepositAddresses2,
|
|
3608
|
+
useGeoBlock,
|
|
3609
|
+
useLabels as useLabels22
|
|
3610
|
+
} from "@agg-build/hooks";
|
|
3611
|
+
import { useCallback as useCallback8, useEffect as useEffect6, useMemo as useMemo2, useState as useState9 } from "react";
|
|
3612
|
+
import { jsx as jsx25, jsxs as jsxs25 } from "react/jsx-runtime";
|
|
3613
|
+
var TRADING_ACCESS_VENUES = [
|
|
3614
|
+
"kalshi",
|
|
3615
|
+
"polymarket",
|
|
3616
|
+
"opinion",
|
|
3617
|
+
"probable",
|
|
3618
|
+
"limitless",
|
|
3619
|
+
"predict",
|
|
3620
|
+
"myriad",
|
|
3621
|
+
"hyperliquid"
|
|
3622
|
+
];
|
|
3623
|
+
var TRADING_ACCESS_VENUE_ITEMS = TRADING_ACCESS_VENUES.map((id) => ({ id }));
|
|
3624
|
+
var SectionTitle2 = ({ children }) => /* @__PURE__ */ jsx25("h3", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children });
|
|
3625
|
+
var AccessRow = ({ children }) => /* @__PURE__ */ jsx25(
|
|
3626
|
+
"div",
|
|
3627
|
+
{
|
|
3628
|
+
className: cn(
|
|
3629
|
+
"flex h-12 items-center justify-between gap-4",
|
|
3630
|
+
"rounded-agg-lg border border-agg-separator bg-agg-secondary",
|
|
3631
|
+
"px-5"
|
|
3632
|
+
),
|
|
3633
|
+
children
|
|
3634
|
+
}
|
|
3635
|
+
);
|
|
3435
3636
|
var VerifyIdentityButton = ({ onError }) => {
|
|
3637
|
+
const labels = useLabels22();
|
|
3436
3638
|
const client = useAggClient();
|
|
3437
3639
|
const [isInitiating, setIsInitiating] = useState9(false);
|
|
3438
3640
|
const [needsDepositAddress, setNeedsDepositAddress] = useState9(false);
|
|
@@ -3455,148 +3657,81 @@ var VerifyIdentityButton = ({ onError }) => {
|
|
|
3455
3657
|
});
|
|
3456
3658
|
}, [isReady, isInitiating, client, onError]);
|
|
3457
3659
|
useEffect6(() => {
|
|
3458
|
-
if (isTimedOut
|
|
3459
|
-
|
|
3460
|
-
|
|
3461
|
-
|
|
3462
|
-
}
|
|
3660
|
+
if (!isTimedOut || !isInitiating) return;
|
|
3661
|
+
setIsInitiating(false);
|
|
3662
|
+
setNeedsDepositAddress(false);
|
|
3663
|
+
onError == null ? void 0 : onError(new Error("Deposit address provisioning timed out"));
|
|
3463
3664
|
}, [isTimedOut, isInitiating, onError]);
|
|
3464
|
-
const handleClick =
|
|
3665
|
+
const handleClick = useCallback8(() => {
|
|
3465
3666
|
setIsInitiating(true);
|
|
3466
3667
|
setNeedsDepositAddress(true);
|
|
3467
3668
|
}, []);
|
|
3468
|
-
return /* @__PURE__ */
|
|
3669
|
+
return /* @__PURE__ */ jsx25(
|
|
3469
3670
|
"button",
|
|
3470
3671
|
{
|
|
3471
3672
|
type: "button",
|
|
3472
3673
|
disabled: isInitiating,
|
|
3473
3674
|
onClick: handleClick,
|
|
3474
3675
|
className: "shrink-0 cursor-pointer text-agg-sm font-agg-bold leading-agg-5 text-agg-primary whitespace-nowrap disabled:cursor-not-allowed disabled:opacity-60",
|
|
3475
|
-
children: isInitiating ? /* @__PURE__ */
|
|
3676
|
+
children: isInitiating ? /* @__PURE__ */ jsx25("span", { className: "inline-block h-4 w-4 animate-spin rounded-full border-2 border-current border-t-transparent" }) : labels.trading.kycVerify
|
|
3476
3677
|
}
|
|
3477
3678
|
);
|
|
3478
3679
|
};
|
|
3479
|
-
var
|
|
3680
|
+
var AvailableStatus = () => /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2", children: [
|
|
3681
|
+
/* @__PURE__ */ jsx25(Icon, { name: "check-badge", size: "small", color: "var(--agg-color-primary, #536dfe)" }),
|
|
3682
|
+
/* @__PURE__ */ jsx25("span", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground whitespace-nowrap", children: "Available" })
|
|
3683
|
+
] });
|
|
3684
|
+
var GeoblockedStatus = () => {
|
|
3685
|
+
const labels = useLabels22();
|
|
3686
|
+
return /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-2 text-agg-muted-foreground", children: [
|
|
3687
|
+
/* @__PURE__ */ jsx25(Icon, { name: "warning-filled", size: "small", color: "currentColor" }),
|
|
3688
|
+
/* @__PURE__ */ jsx25("span", { className: "text-agg-sm font-agg-normal leading-agg-5 whitespace-nowrap", children: labels.trading.venueUnavailableInRegion })
|
|
3689
|
+
] });
|
|
3690
|
+
};
|
|
3691
|
+
var TradingAccessTab = ({
|
|
3480
3692
|
venueAccounts,
|
|
3481
3693
|
onKycError
|
|
3482
3694
|
}) => {
|
|
3483
|
-
|
|
3484
|
-
|
|
3485
|
-
|
|
3695
|
+
const labels = useLabels22();
|
|
3696
|
+
const { disabledVenues } = useAppConfig();
|
|
3697
|
+
const { isLocationBlocked } = useGeoBlock();
|
|
3698
|
+
const visibleVenues = useMemo2(
|
|
3699
|
+
() => getVisibleVenuesByConfig(TRADING_ACCESS_VENUE_ITEMS, disabledVenues),
|
|
3700
|
+
[disabledVenues]
|
|
3701
|
+
);
|
|
3702
|
+
return /* @__PURE__ */ jsxs25("div", { className: "agg-trading-access-section flex flex-col gap-4", children: [
|
|
3703
|
+
/* @__PURE__ */ jsx25(SectionTitle2, { children: "Venues" }),
|
|
3704
|
+
/* @__PURE__ */ jsx25("div", { className: "flex flex-col gap-3", children: visibleVenues.map(({ id: venue }) => {
|
|
3486
3705
|
var _a;
|
|
3487
|
-
const venueAccount = venueAccounts == null ? void 0 : venueAccounts.find((
|
|
3706
|
+
const venueAccount = venueAccounts == null ? void 0 : venueAccounts.find((account) => account.venue === venue);
|
|
3488
3707
|
const isKalshi = venue === "kalshi";
|
|
3489
3708
|
const isVerified = (venueAccount == null ? void 0 : venueAccount.kycStatus) === "verified";
|
|
3709
|
+
const availabilityState = getVenueAvailabilityState({
|
|
3710
|
+
venueId: venue,
|
|
3711
|
+
disabledVenues,
|
|
3712
|
+
isLocationBlocked
|
|
3713
|
+
});
|
|
3490
3714
|
const displayName = (_a = venueLogoLabels[venue]) != null ? _a : venue;
|
|
3491
|
-
return /* @__PURE__ */
|
|
3492
|
-
/* @__PURE__ */
|
|
3493
|
-
/* @__PURE__ */
|
|
3494
|
-
/* @__PURE__ */
|
|
3715
|
+
return /* @__PURE__ */ jsxs25(AccessRow, { children: [
|
|
3716
|
+
/* @__PURE__ */ jsxs25("div", { className: "flex min-w-0 items-center gap-3", children: [
|
|
3717
|
+
/* @__PURE__ */ jsx25(VenueLogo, { venue, size: "small" }),
|
|
3718
|
+
/* @__PURE__ */ jsx25("span", { className: "truncate text-agg-base font-agg-normal leading-6 text-agg-foreground", children: displayName })
|
|
3495
3719
|
] }),
|
|
3496
|
-
isKalshi && !isVerified ? /* @__PURE__ */
|
|
3497
|
-
/* @__PURE__ */
|
|
3498
|
-
/* @__PURE__ */
|
|
3499
|
-
] }) : isKalshi && isVerified ? /* @__PURE__ */
|
|
3500
|
-
/* @__PURE__ */
|
|
3501
|
-
/* @__PURE__ */
|
|
3502
|
-
|
|
3503
|
-
Icon,
|
|
3504
|
-
{
|
|
3505
|
-
name: "check-badge",
|
|
3506
|
-
size: "small",
|
|
3507
|
-
color: "var(--agg-color-primary, #536dfe)"
|
|
3508
|
-
}
|
|
3509
|
-
),
|
|
3510
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground whitespace-nowrap", children: "Available" })
|
|
3511
|
-
] })
|
|
3512
|
-
] }) : /* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-2", children: [
|
|
3513
|
-
/* @__PURE__ */ jsx24(Icon, { name: "check-badge", size: "small", color: "var(--agg-color-primary, #536dfe)" }),
|
|
3514
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-foreground whitespace-nowrap", children: "Available" })
|
|
3515
|
-
] })
|
|
3720
|
+
availabilityState === "geoblocked" ? /* @__PURE__ */ jsx25(GeoblockedStatus, {}) : isKalshi && !isVerified ? /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-4", children: [
|
|
3721
|
+
/* @__PURE__ */ jsx25("span", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground whitespace-nowrap", children: labels.trading.kycRequired }),
|
|
3722
|
+
/* @__PURE__ */ jsx25(VerifyIdentityButton, { onError: onKycError })
|
|
3723
|
+
] }) : isKalshi && isVerified ? /* @__PURE__ */ jsxs25("div", { className: "flex items-center gap-4", children: [
|
|
3724
|
+
/* @__PURE__ */ jsx25("span", { className: "text-agg-sm font-agg-normal leading-agg-5 text-agg-muted-foreground whitespace-nowrap", children: labels.trading.verified }),
|
|
3725
|
+
/* @__PURE__ */ jsx25(AvailableStatus, {})
|
|
3726
|
+
] }) : /* @__PURE__ */ jsx25(AvailableStatus, {})
|
|
3516
3727
|
] }, venue);
|
|
3517
3728
|
}) })
|
|
3518
3729
|
] });
|
|
3519
3730
|
};
|
|
3520
|
-
|
|
3521
|
-
exchanges: _exchanges,
|
|
3522
|
-
socialAccounts,
|
|
3523
|
-
email,
|
|
3524
|
-
venueAccounts,
|
|
3525
|
-
onKycError,
|
|
3526
|
-
onDisconnectExchange: _onDisconnectExchange,
|
|
3527
|
-
onConnectTwitter,
|
|
3528
|
-
onDisconnectTwitter,
|
|
3529
|
-
onConnectGoogle,
|
|
3530
|
-
onDisconnectGoogle,
|
|
3531
|
-
onConnectApple,
|
|
3532
|
-
onDisconnectApple,
|
|
3533
|
-
onConnectDiscord: _onConnectDiscord,
|
|
3534
|
-
onDisconnectDiscord: _onDisconnectDiscord,
|
|
3535
|
-
onConnectTelegram: _onConnectTelegram,
|
|
3536
|
-
onDisconnectTelegram: _onDisconnectTelegram,
|
|
3537
|
-
onConnectEmail
|
|
3538
|
-
}) => {
|
|
3539
|
-
const twitter = socialAccounts == null ? void 0 : socialAccounts.twitter;
|
|
3540
|
-
const google = socialAccounts == null ? void 0 : socialAccounts.google;
|
|
3541
|
-
const apple = socialAccounts == null ? void 0 : socialAccounts.apple;
|
|
3542
|
-
return /* @__PURE__ */ jsxs24("div", { className: "agg-accounts-wallets-tab flex flex-col gap-8", children: [
|
|
3543
|
-
/* @__PURE__ */ jsx24(TradingAccessSection, { venueAccounts, onKycError }),
|
|
3544
|
-
/* @__PURE__ */ jsxs24("div", { className: "agg-social-accounts-section flex flex-col gap-3", children: [
|
|
3545
|
-
/* @__PURE__ */ jsx24(SectionTitle, { children: "Social Accounts" }),
|
|
3546
|
-
/* @__PURE__ */ jsxs24("div", { className: "agg-social-accounts-list flex flex-col gap-2", children: [
|
|
3547
|
-
/* @__PURE__ */ jsxs24(AccountRow, { className: "agg-social-account-row", children: [
|
|
3548
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-3", children: [
|
|
3549
|
-
/* @__PURE__ */ jsx24("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx24(Icon, { name: "google", size: "small", color: "currentColor" }) }),
|
|
3550
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "Google" })
|
|
3551
|
-
] }),
|
|
3552
|
-
(google == null ? void 0 : google.connected) ? /* @__PURE__ */ jsx24(DisconnectTextButton, { onClick: onDisconnectGoogle }) : /* @__PURE__ */ jsx24(ConnectTextButton, { onClick: onConnectGoogle })
|
|
3553
|
-
] }),
|
|
3554
|
-
/* @__PURE__ */ jsxs24(AccountRow, { className: "agg-social-account-row", children: [
|
|
3555
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-3", children: [
|
|
3556
|
-
/* @__PURE__ */ jsx24("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx24(Icon, { name: "apple", size: "small", color: "currentColor" }) }),
|
|
3557
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "Apple" })
|
|
3558
|
-
] }),
|
|
3559
|
-
(apple == null ? void 0 : apple.connected) ? /* @__PURE__ */ jsx24(DisconnectTextButton, { onClick: onDisconnectApple }) : /* @__PURE__ */ jsx24(ConnectTextButton, { onClick: onConnectApple })
|
|
3560
|
-
] }),
|
|
3561
|
-
/* @__PURE__ */ jsxs24(AccountRow, { className: "agg-social-account-row", children: [
|
|
3562
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-3", children: [
|
|
3563
|
-
/* @__PURE__ */ jsx24("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx24(Icon, { name: "twitter", size: "small", color: "currentColor" }) }),
|
|
3564
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: "X (Twitter)" })
|
|
3565
|
-
] }),
|
|
3566
|
-
(twitter == null ? void 0 : twitter.connected) ? /* @__PURE__ */ jsx24(DisconnectTextButton, { onClick: onDisconnectTwitter }) : /* @__PURE__ */ jsx24(ConnectTextButton, { onClick: onConnectTwitter })
|
|
3567
|
-
] })
|
|
3568
|
-
] })
|
|
3569
|
-
] }),
|
|
3570
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex flex-col gap-3", children: [
|
|
3571
|
-
/* @__PURE__ */ jsx24(SectionTitle, { children: "Email Address" }),
|
|
3572
|
-
/* @__PURE__ */ jsxs24(
|
|
3573
|
-
"button",
|
|
3574
|
-
{
|
|
3575
|
-
type: "button",
|
|
3576
|
-
onClick: onConnectEmail,
|
|
3577
|
-
className: cn(
|
|
3578
|
-
"flex items-center justify-between",
|
|
3579
|
-
"rounded-agg-lg border border-agg-separator bg-agg-secondary",
|
|
3580
|
-
"px-5 py-3",
|
|
3581
|
-
"cursor-pointer hover:bg-agg-secondary-hover"
|
|
3582
|
-
),
|
|
3583
|
-
children: [
|
|
3584
|
-
/* @__PURE__ */ jsxs24("div", { className: "flex items-center gap-3", children: [
|
|
3585
|
-
/* @__PURE__ */ jsx24("span", { className: "flex h-5 w-5 shrink-0 items-center justify-center text-agg-foreground", children: /* @__PURE__ */ jsx24(Icon, { name: "email", size: "small", color: "currentColor" }) }),
|
|
3586
|
-
/* @__PURE__ */ jsx24("span", { className: "text-agg-base font-agg-normal leading-6 text-agg-foreground whitespace-nowrap", children: email != null ? email : "Connect email" })
|
|
3587
|
-
] }),
|
|
3588
|
-
/* @__PURE__ */ jsx24(Icon, { name: "chevron-right", size: "small", color: "currentColor" })
|
|
3589
|
-
]
|
|
3590
|
-
}
|
|
3591
|
-
)
|
|
3592
|
-
] })
|
|
3593
|
-
] });
|
|
3594
|
-
};
|
|
3595
|
-
AccountsWalletsTab.displayName = "AccountsWalletsTab";
|
|
3731
|
+
TradingAccessTab.displayName = "TradingAccessTab";
|
|
3596
3732
|
|
|
3597
3733
|
// src/profile/index.tsx
|
|
3598
|
-
import { jsx as
|
|
3599
|
-
var EVM_WALLET_VENUES = [Venue4.polymarket, Venue4.predict, Venue4.opinion];
|
|
3734
|
+
import { jsx as jsx26, jsxs as jsxs26 } from "react/jsx-runtime";
|
|
3600
3735
|
var ProfileModal = ({
|
|
3601
3736
|
open,
|
|
3602
3737
|
onOpenChange,
|
|
@@ -3604,21 +3739,15 @@ var ProfileModal = ({
|
|
|
3604
3739
|
avatarPreview,
|
|
3605
3740
|
onSave,
|
|
3606
3741
|
onDeleteProfile,
|
|
3607
|
-
exchanges,
|
|
3608
3742
|
socialAccounts,
|
|
3609
3743
|
wallets,
|
|
3610
3744
|
email,
|
|
3611
|
-
onDisconnectExchange: onDisconnectExchangeProp,
|
|
3612
3745
|
onConnectTwitter,
|
|
3613
3746
|
onDisconnectTwitter,
|
|
3614
3747
|
onConnectGoogle,
|
|
3615
3748
|
onDisconnectGoogle,
|
|
3616
3749
|
onConnectApple,
|
|
3617
3750
|
onDisconnectApple,
|
|
3618
|
-
onConnectDiscord,
|
|
3619
|
-
onDisconnectDiscord,
|
|
3620
|
-
onConnectTelegram,
|
|
3621
|
-
onDisconnectTelegram,
|
|
3622
3751
|
onDisconnectWallet,
|
|
3623
3752
|
onConnectEmail,
|
|
3624
3753
|
onKycError
|
|
@@ -3627,7 +3756,7 @@ var ProfileModal = ({
|
|
|
3627
3756
|
const client = useAggClient2();
|
|
3628
3757
|
const { user, startAuth } = useAggAuthState2();
|
|
3629
3758
|
const toastCtx = useOptionalToast();
|
|
3630
|
-
const [activeTab, setActiveTab] = useState10(PROFILE_TAB_KEYS.
|
|
3759
|
+
const [activeTab, setActiveTab] = useState10(PROFILE_TAB_KEYS.PROFILE_ACCOUNTS);
|
|
3631
3760
|
const resolvedInitialUsername = (_a = username != null ? username : user == null ? void 0 : user.username) != null ? _a : "";
|
|
3632
3761
|
const [draftUsername, setDraftUsername] = useState10(resolvedInitialUsername);
|
|
3633
3762
|
const [draftAvatarFile, setDraftAvatarFile] = useState10();
|
|
@@ -3638,11 +3767,11 @@ var ProfileModal = ({
|
|
|
3638
3767
|
var _a2;
|
|
3639
3768
|
setDraftUsername((_a2 = username != null ? username : user == null ? void 0 : user.username) != null ? _a2 : "");
|
|
3640
3769
|
}, [username, user == null ? void 0 : user.username]);
|
|
3641
|
-
const handleOpenChange =
|
|
3770
|
+
const handleOpenChange = useCallback9(
|
|
3642
3771
|
(isOpen) => {
|
|
3643
3772
|
var _a2;
|
|
3644
3773
|
if (!isOpen) {
|
|
3645
|
-
setActiveTab(PROFILE_TAB_KEYS.
|
|
3774
|
+
setActiveTab(PROFILE_TAB_KEYS.PROFILE_ACCOUNTS);
|
|
3646
3775
|
setIsSaving(false);
|
|
3647
3776
|
setDraftUsername((_a2 = username != null ? username : user == null ? void 0 : user.username) != null ? _a2 : "");
|
|
3648
3777
|
setDraftAvatarFile(void 0);
|
|
@@ -3662,7 +3791,7 @@ var ProfileModal = ({
|
|
|
3662
3791
|
setDraftAvatarPreview
|
|
3663
3792
|
]
|
|
3664
3793
|
);
|
|
3665
|
-
const handleDraftAvatarChange =
|
|
3794
|
+
const handleDraftAvatarChange = useCallback9(
|
|
3666
3795
|
(file, preview) => {
|
|
3667
3796
|
const ACCEPTED_AVATAR_TYPES = ["image/jpeg", "image/png", "image/gif", "image/webp"];
|
|
3668
3797
|
if (file && !ACCEPTED_AVATAR_TYPES.includes(file.type)) {
|
|
@@ -3677,7 +3806,7 @@ var ProfileModal = ({
|
|
|
3677
3806
|
);
|
|
3678
3807
|
const originalUsername = (_b = username != null ? username : user == null ? void 0 : user.username) != null ? _b : "";
|
|
3679
3808
|
const hasChanges = draftUsername !== originalUsername || draftAvatarFile !== void 0;
|
|
3680
|
-
const handleSave =
|
|
3809
|
+
const handleSave = useCallback9(() => __async(null, null, function* () {
|
|
3681
3810
|
var _a2, _b2, _c2;
|
|
3682
3811
|
setIsSaving(true);
|
|
3683
3812
|
try {
|
|
@@ -3732,7 +3861,7 @@ var ProfileModal = ({
|
|
|
3732
3861
|
originalUsername,
|
|
3733
3862
|
toastCtx
|
|
3734
3863
|
]);
|
|
3735
|
-
const handleCancel =
|
|
3864
|
+
const handleCancel = useCallback9(() => {
|
|
3736
3865
|
handleOpenChange(false);
|
|
3737
3866
|
}, [handleOpenChange]);
|
|
3738
3867
|
const isAccountConnected = (providers) => {
|
|
@@ -3776,7 +3905,7 @@ var ProfileModal = ({
|
|
|
3776
3905
|
if (typeof window === "undefined") return;
|
|
3777
3906
|
((_a2 = window.top) != null ? _a2 : window).location.assign(url);
|
|
3778
3907
|
};
|
|
3779
|
-
const handleConnectTwitter =
|
|
3908
|
+
const handleConnectTwitter = useCallback9(() => __async(null, null, function* () {
|
|
3780
3909
|
const result = yield startAuth({
|
|
3781
3910
|
provider: "twitter",
|
|
3782
3911
|
redirectUrl: resolveRedirectUrl()
|
|
@@ -3786,7 +3915,7 @@ var ProfileModal = ({
|
|
|
3786
3915
|
navigateTopWindow(result.url);
|
|
3787
3916
|
}
|
|
3788
3917
|
}), [onConnectTwitter, startAuth]);
|
|
3789
|
-
const handleConnectGoogle =
|
|
3918
|
+
const handleConnectGoogle = useCallback9(() => __async(null, null, function* () {
|
|
3790
3919
|
const result = yield startAuth({
|
|
3791
3920
|
provider: "google",
|
|
3792
3921
|
redirectUrl: resolveRedirectUrl()
|
|
@@ -3796,7 +3925,7 @@ var ProfileModal = ({
|
|
|
3796
3925
|
navigateTopWindow(result.url);
|
|
3797
3926
|
}
|
|
3798
3927
|
}), [onConnectGoogle, startAuth]);
|
|
3799
|
-
const handleConnectApple =
|
|
3928
|
+
const handleConnectApple = useCallback9(() => __async(null, null, function* () {
|
|
3800
3929
|
const result = yield startAuth({
|
|
3801
3930
|
provider: "apple",
|
|
3802
3931
|
redirectUrl: resolveRedirectUrl()
|
|
@@ -3806,22 +3935,22 @@ var ProfileModal = ({
|
|
|
3806
3935
|
navigateTopWindow(result.url);
|
|
3807
3936
|
}
|
|
3808
3937
|
}), [onConnectApple, startAuth]);
|
|
3809
|
-
const handleDisconnectTwitter =
|
|
3938
|
+
const handleDisconnectTwitter = useCallback9(() => __async(null, null, function* () {
|
|
3810
3939
|
yield client.disconnectAccount("twitter");
|
|
3811
3940
|
yield client.getCurrentUser();
|
|
3812
3941
|
onDisconnectTwitter == null ? void 0 : onDisconnectTwitter();
|
|
3813
3942
|
}), [client, onDisconnectTwitter]);
|
|
3814
|
-
const handleDisconnectGoogle =
|
|
3943
|
+
const handleDisconnectGoogle = useCallback9(() => __async(null, null, function* () {
|
|
3815
3944
|
yield client.disconnectAccount("google");
|
|
3816
3945
|
yield client.getCurrentUser();
|
|
3817
3946
|
onDisconnectGoogle == null ? void 0 : onDisconnectGoogle();
|
|
3818
3947
|
}), [client, onDisconnectGoogle]);
|
|
3819
|
-
const handleDisconnectApple =
|
|
3948
|
+
const handleDisconnectApple = useCallback9(() => __async(null, null, function* () {
|
|
3820
3949
|
yield client.disconnectAccount("apple");
|
|
3821
3950
|
yield client.getCurrentUser();
|
|
3822
3951
|
onDisconnectApple == null ? void 0 : onDisconnectApple();
|
|
3823
3952
|
}), [client, onDisconnectApple]);
|
|
3824
|
-
const handleConnectEmail =
|
|
3953
|
+
const handleConnectEmail = useCallback9(() => __async(null, null, function* () {
|
|
3825
3954
|
var _a2;
|
|
3826
3955
|
const typedEmail = typeof window !== "undefined" ? (_a2 = window.prompt("Enter your email to receive a magic link")) == null ? void 0 : _a2.trim() : void 0;
|
|
3827
3956
|
if (!typedEmail) return;
|
|
@@ -3832,7 +3961,7 @@ var ProfileModal = ({
|
|
|
3832
3961
|
});
|
|
3833
3962
|
onConnectEmail == null ? void 0 : onConnectEmail();
|
|
3834
3963
|
}), [onConnectEmail, startAuth]);
|
|
3835
|
-
const handleDisconnectWallet =
|
|
3964
|
+
const handleDisconnectWallet = useCallback9(
|
|
3836
3965
|
(wallet) => __async(null, null, function* () {
|
|
3837
3966
|
const normalizedChain = wallet.chain.toLowerCase();
|
|
3838
3967
|
const provider = normalizedChain === "solana" || normalizedChain === "svm" ? "solana_wallet" : "wallet";
|
|
@@ -3842,7 +3971,7 @@ var ProfileModal = ({
|
|
|
3842
3971
|
}),
|
|
3843
3972
|
[client, onDisconnectWallet]
|
|
3844
3973
|
);
|
|
3845
|
-
const providerActionMap =
|
|
3974
|
+
const providerActionMap = useMemo3(
|
|
3846
3975
|
() => ({
|
|
3847
3976
|
twitter: {
|
|
3848
3977
|
connect: () => {
|
|
@@ -3884,7 +4013,7 @@ var ProfileModal = ({
|
|
|
3884
4013
|
handleDisconnectTwitter
|
|
3885
4014
|
]
|
|
3886
4015
|
);
|
|
3887
|
-
const resolvedWallets =
|
|
4016
|
+
const resolvedWallets = useMemo3(() => {
|
|
3888
4017
|
var _a2, _b2;
|
|
3889
4018
|
if (wallets) return wallets;
|
|
3890
4019
|
return (_b2 = (_a2 = user == null ? void 0 : user.wallets) == null ? void 0 : _a2.map((wallet) => {
|
|
@@ -3896,30 +4025,7 @@ var ProfileModal = ({
|
|
|
3896
4025
|
};
|
|
3897
4026
|
})) != null ? _b2 : [];
|
|
3898
4027
|
}, [user == null ? void 0 : user.wallets, wallets]);
|
|
3899
|
-
|
|
3900
|
-
var _a2, _b2;
|
|
3901
|
-
if (exchanges !== void 0) return exchanges;
|
|
3902
|
-
const walletAccount = (_a2 = user == null ? void 0 : user.accounts) == null ? void 0 : _a2.find(
|
|
3903
|
-
(a) => a.provider.toLowerCase() === "wallet"
|
|
3904
|
-
);
|
|
3905
|
-
if (!walletAccount) return [];
|
|
3906
|
-
const addr = walletAccount.providerAccountId;
|
|
3907
|
-
const displayAddress = (_b2 = shortenAddress(addr)) != null ? _b2 : addr;
|
|
3908
|
-
return EVM_WALLET_VENUES.map((venue) => ({ venue, displayAddress, verified: false }));
|
|
3909
|
-
}, [exchanges, user == null ? void 0 : user.accounts]);
|
|
3910
|
-
const handleDisconnectExchange = useCallback8(
|
|
3911
|
-
(venue) => __async(null, null, function* () {
|
|
3912
|
-
if (exchanges !== void 0) {
|
|
3913
|
-
onDisconnectExchangeProp == null ? void 0 : onDisconnectExchangeProp(venue);
|
|
3914
|
-
return;
|
|
3915
|
-
}
|
|
3916
|
-
yield client.disconnectAccount("wallet");
|
|
3917
|
-
yield client.getCurrentUser();
|
|
3918
|
-
onDisconnectExchangeProp == null ? void 0 : onDisconnectExchangeProp(venue);
|
|
3919
|
-
}),
|
|
3920
|
-
[client, exchanges, onDisconnectExchangeProp]
|
|
3921
|
-
);
|
|
3922
|
-
return /* @__PURE__ */ jsx25(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs25(
|
|
4028
|
+
return /* @__PURE__ */ jsx26(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs26(
|
|
3923
4029
|
Modal.Container,
|
|
3924
4030
|
{
|
|
3925
4031
|
maxWidth: "800px",
|
|
@@ -3928,8 +4034,8 @@ var ProfileModal = ({
|
|
|
3928
4034
|
container: cn("agg-profile-modal", "min-h-[37.5rem]")
|
|
3929
4035
|
},
|
|
3930
4036
|
children: [
|
|
3931
|
-
/* @__PURE__ */
|
|
3932
|
-
/* @__PURE__ */
|
|
4037
|
+
/* @__PURE__ */ jsx26(Modal.Header, { title: "Edit Profile", classNames: { root: "agg-profile-modal-header" } }),
|
|
4038
|
+
/* @__PURE__ */ jsx26("div", { className: "agg-profile-tabs sm:hidden w-full", children: /* @__PURE__ */ jsx26(
|
|
3933
4039
|
Tabs,
|
|
3934
4040
|
{
|
|
3935
4041
|
className: "w-full [&>div]:w-full",
|
|
@@ -3938,14 +4044,14 @@ var ProfileModal = ({
|
|
|
3938
4044
|
items: PROFILE_TAB_ITEMS.map((tab) => ({
|
|
3939
4045
|
value: tab.value,
|
|
3940
4046
|
label: tab.label,
|
|
3941
|
-
icon: /* @__PURE__ */
|
|
4047
|
+
icon: /* @__PURE__ */ jsx26(Icon, { name: tab.icon, size: "small" })
|
|
3942
4048
|
})),
|
|
3943
4049
|
value: activeTab,
|
|
3944
4050
|
onChange: (val) => setActiveTab(val)
|
|
3945
4051
|
}
|
|
3946
4052
|
) }),
|
|
3947
|
-
/* @__PURE__ */
|
|
3948
|
-
/* @__PURE__ */
|
|
4053
|
+
/* @__PURE__ */ jsx26(Modal.Body, { classNames: { root: cn("agg-profile-modal-body", "overflow-x-visible") }, children: /* @__PURE__ */ jsxs26("div", { className: "agg-profile-layout flex flex-col sm:flex-row sm:gap-10", children: [
|
|
4054
|
+
/* @__PURE__ */ jsx26("div", { className: "shrink-0", children: /* @__PURE__ */ jsx26(
|
|
3949
4055
|
"nav",
|
|
3950
4056
|
{
|
|
3951
4057
|
className: cn(
|
|
@@ -3961,7 +4067,7 @@ var ProfileModal = ({
|
|
|
3961
4067
|
"aria-label": "Profile sections",
|
|
3962
4068
|
children: PROFILE_TAB_ITEMS.map((tab) => {
|
|
3963
4069
|
const isActive = activeTab === tab.value;
|
|
3964
|
-
return /* @__PURE__ */
|
|
4070
|
+
return /* @__PURE__ */ jsxs26(
|
|
3965
4071
|
"button",
|
|
3966
4072
|
{
|
|
3967
4073
|
type: "button",
|
|
@@ -3977,9 +4083,9 @@ var ProfileModal = ({
|
|
|
3977
4083
|
isActive ? "font-agg-normal text-agg-foreground bg-agg-secondary-hover" : "font-agg-normal text-agg-foreground"
|
|
3978
4084
|
),
|
|
3979
4085
|
children: [
|
|
3980
|
-
isActive ? /* @__PURE__ */
|
|
3981
|
-
/* @__PURE__ */
|
|
3982
|
-
/* @__PURE__ */
|
|
4086
|
+
isActive ? /* @__PURE__ */ jsx26("div", { className: "absolute left-0 top-0 bottom-0 w-1 bg-agg-primary" }) : null,
|
|
4087
|
+
/* @__PURE__ */ jsx26(Icon, { name: tab.icon, size: "small", color: "currentColor" }),
|
|
4088
|
+
/* @__PURE__ */ jsx26("span", { className: "shrink-0 whitespace-nowrap", children: tab.label })
|
|
3983
4089
|
]
|
|
3984
4090
|
},
|
|
3985
4091
|
tab.value
|
|
@@ -3987,54 +4093,47 @@ var ProfileModal = ({
|
|
|
3987
4093
|
})
|
|
3988
4094
|
}
|
|
3989
4095
|
) }),
|
|
3990
|
-
/* @__PURE__ */
|
|
3991
|
-
activeTab === PROFILE_TAB_KEYS.
|
|
3992
|
-
|
|
3993
|
-
|
|
3994
|
-
|
|
3995
|
-
|
|
3996
|
-
|
|
3997
|
-
|
|
3998
|
-
|
|
3999
|
-
|
|
4000
|
-
|
|
4001
|
-
|
|
4002
|
-
|
|
4003
|
-
|
|
4004
|
-
|
|
4005
|
-
|
|
4006
|
-
|
|
4007
|
-
|
|
4008
|
-
|
|
4009
|
-
|
|
4010
|
-
|
|
4011
|
-
|
|
4012
|
-
|
|
4013
|
-
|
|
4014
|
-
|
|
4015
|
-
|
|
4016
|
-
|
|
4017
|
-
|
|
4018
|
-
|
|
4019
|
-
|
|
4020
|
-
|
|
4021
|
-
|
|
4022
|
-
|
|
4023
|
-
|
|
4024
|
-
|
|
4025
|
-
|
|
4026
|
-
onDisconnectTelegram,
|
|
4027
|
-
onDisconnectWallet: (wallet) => {
|
|
4028
|
-
void handleDisconnectWallet(wallet);
|
|
4029
|
-
},
|
|
4030
|
-
onConnectEmail: providerActionMap.email.connect
|
|
4031
|
-
}
|
|
4032
|
-
) : null
|
|
4096
|
+
/* @__PURE__ */ jsxs26("div", { className: "agg-profile-content min-w-0 flex-1", children: [
|
|
4097
|
+
activeTab === PROFILE_TAB_KEYS.PROFILE_ACCOUNTS ? /* @__PURE__ */ jsxs26("div", { className: "agg-profile-accounts-tab flex flex-col gap-8", children: [
|
|
4098
|
+
/* @__PURE__ */ jsx26(
|
|
4099
|
+
AboutTab,
|
|
4100
|
+
{
|
|
4101
|
+
username: username != null ? username : user == null ? void 0 : user.username,
|
|
4102
|
+
avatarPreview: (_i = user == null ? void 0 : user.avatarUrl) != null ? _i : avatarPreview,
|
|
4103
|
+
onDeleteProfile,
|
|
4104
|
+
draftUsername,
|
|
4105
|
+
onDraftUsernameChange: setDraftUsername,
|
|
4106
|
+
draftAvatarFile,
|
|
4107
|
+
onDraftAvatarChange: handleDraftAvatarChange,
|
|
4108
|
+
draftAvatarPreview,
|
|
4109
|
+
avatarError: avatarTypeError
|
|
4110
|
+
}
|
|
4111
|
+
),
|
|
4112
|
+
/* @__PURE__ */ jsx26(
|
|
4113
|
+
AccountsWalletsTab,
|
|
4114
|
+
{
|
|
4115
|
+
socialAccounts: resolvedSocialAccounts,
|
|
4116
|
+
wallets: resolvedWallets,
|
|
4117
|
+
email: resolvedEmail,
|
|
4118
|
+
onConnectTwitter: providerActionMap.twitter.connect,
|
|
4119
|
+
onDisconnectTwitter: providerActionMap.twitter.disconnect,
|
|
4120
|
+
onConnectGoogle: providerActionMap.google.connect,
|
|
4121
|
+
onDisconnectGoogle: providerActionMap.google.disconnect,
|
|
4122
|
+
onConnectApple: providerActionMap.apple.connect,
|
|
4123
|
+
onDisconnectApple: providerActionMap.apple.disconnect,
|
|
4124
|
+
onDisconnectWallet: (wallet) => {
|
|
4125
|
+
void handleDisconnectWallet(wallet);
|
|
4126
|
+
},
|
|
4127
|
+
onConnectEmail: providerActionMap.email.connect
|
|
4128
|
+
}
|
|
4129
|
+
)
|
|
4130
|
+
] }) : null,
|
|
4131
|
+
activeTab === PROFILE_TAB_KEYS.TRADING_ACCESS ? /* @__PURE__ */ jsx26(TradingAccessTab, { venueAccounts: user == null ? void 0 : user.venueAccounts, onKycError }) : null
|
|
4033
4132
|
] })
|
|
4034
4133
|
] }) }),
|
|
4035
|
-
/* @__PURE__ */
|
|
4036
|
-
/* @__PURE__ */
|
|
4037
|
-
/* @__PURE__ */
|
|
4134
|
+
/* @__PURE__ */ jsxs26(Modal.Footer, { classNames: { root: "agg-profile-modal-footer" }, children: [
|
|
4135
|
+
/* @__PURE__ */ jsx26(Button, { variant: "secondary", size: "large", onClick: handleCancel, className: "min-w-[120px]", children: "Cancel" }),
|
|
4136
|
+
/* @__PURE__ */ jsx26(
|
|
4038
4137
|
Button,
|
|
4039
4138
|
{
|
|
4040
4139
|
variant: "primary",
|
|
@@ -4042,7 +4141,7 @@ var ProfileModal = ({
|
|
|
4042
4141
|
disabled: !hasChanges,
|
|
4043
4142
|
isLoading: isSaving,
|
|
4044
4143
|
onClick: handleSave,
|
|
4045
|
-
children: "Save
|
|
4144
|
+
children: "Save changes"
|
|
4046
4145
|
}
|
|
4047
4146
|
)
|
|
4048
4147
|
] })
|
|
@@ -4053,33 +4152,33 @@ var ProfileModal = ({
|
|
|
4053
4152
|
ProfileModal.displayName = "ProfileModal";
|
|
4054
4153
|
|
|
4055
4154
|
// src/geo-block-modal/index.tsx
|
|
4056
|
-
import { useLabels as
|
|
4057
|
-
import { useCallback as
|
|
4058
|
-
import { jsx as
|
|
4155
|
+
import { useLabels as useLabels23 } from "@agg-build/hooks";
|
|
4156
|
+
import { useCallback as useCallback10 } from "react";
|
|
4157
|
+
import { jsx as jsx27, jsxs as jsxs27 } from "react/jsx-runtime";
|
|
4059
4158
|
var GeoBlockModal = ({
|
|
4060
4159
|
open,
|
|
4061
4160
|
onOpenChange,
|
|
4062
4161
|
onConfirm,
|
|
4063
4162
|
classNames
|
|
4064
4163
|
}) => {
|
|
4065
|
-
const labels =
|
|
4066
|
-
const handleConfirm =
|
|
4164
|
+
const labels = useLabels23();
|
|
4165
|
+
const handleConfirm = useCallback10(() => {
|
|
4067
4166
|
onConfirm == null ? void 0 : onConfirm();
|
|
4068
4167
|
onOpenChange(false);
|
|
4069
4168
|
}, [onConfirm, onOpenChange]);
|
|
4070
|
-
return /* @__PURE__ */
|
|
4169
|
+
return /* @__PURE__ */ jsx27(
|
|
4071
4170
|
Modal,
|
|
4072
4171
|
{
|
|
4073
4172
|
open,
|
|
4074
4173
|
onOpenChange,
|
|
4075
4174
|
"aria-label": labels.trading.geoBlockModalAriaLabel,
|
|
4076
|
-
children: /* @__PURE__ */
|
|
4175
|
+
children: /* @__PURE__ */ jsxs27(
|
|
4077
4176
|
Modal.Container,
|
|
4078
4177
|
{
|
|
4079
4178
|
maxWidth: "480px",
|
|
4080
4179
|
classNames: { container: cn("!rounded-agg-2xl", classNames == null ? void 0 : classNames.container) },
|
|
4081
4180
|
children: [
|
|
4082
|
-
/* @__PURE__ */
|
|
4181
|
+
/* @__PURE__ */ jsx27(
|
|
4083
4182
|
Modal.Header,
|
|
4084
4183
|
{
|
|
4085
4184
|
title: "",
|
|
@@ -4091,19 +4190,19 @@ var GeoBlockModal = ({
|
|
|
4091
4190
|
}
|
|
4092
4191
|
}
|
|
4093
4192
|
),
|
|
4094
|
-
/* @__PURE__ */
|
|
4095
|
-
/* @__PURE__ */
|
|
4193
|
+
/* @__PURE__ */ jsx27(Modal.Body, { classNames: { root: cn("!px-10 !pt-0 !pb-12", classNames == null ? void 0 : classNames.body) }, children: /* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center gap-8", children: [
|
|
4194
|
+
/* @__PURE__ */ jsx27(
|
|
4096
4195
|
Icon,
|
|
4097
4196
|
{
|
|
4098
4197
|
name: "internet-security",
|
|
4099
4198
|
className: "h-[60px] w-[60px] text-agg-muted-foreground"
|
|
4100
4199
|
}
|
|
4101
4200
|
),
|
|
4102
|
-
/* @__PURE__ */
|
|
4103
|
-
/* @__PURE__ */
|
|
4104
|
-
/* @__PURE__ */
|
|
4201
|
+
/* @__PURE__ */ jsxs27("div", { className: "flex flex-col items-center gap-3 text-center", children: [
|
|
4202
|
+
/* @__PURE__ */ jsx27("h2", { className: "text-agg-2xl font-agg-bold leading-agg-8 text-agg-foreground", children: labels.trading.geoBlockModalTitle }),
|
|
4203
|
+
/* @__PURE__ */ jsx27("p", { className: "text-agg-base font-agg-normal leading-agg-6 text-agg-foreground", children: labels.trading.geoBlockModalDescription })
|
|
4105
4204
|
] }),
|
|
4106
|
-
/* @__PURE__ */
|
|
4205
|
+
/* @__PURE__ */ jsx27(
|
|
4107
4206
|
Button,
|
|
4108
4207
|
{
|
|
4109
4208
|
variant: "secondary",
|
|
@@ -4123,6 +4222,7 @@ var GeoBlockModal = ({
|
|
|
4123
4222
|
GeoBlockModal.displayName = "GeoBlockModal";
|
|
4124
4223
|
|
|
4125
4224
|
export {
|
|
4225
|
+
subscribeAggDepositNotification,
|
|
4126
4226
|
CARD_NETWORK_OPTIONS,
|
|
4127
4227
|
clearPendingCardSession,
|
|
4128
4228
|
getPendingCardSession,
|