@agg-build/ui 2.4.3 → 2.4.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/dist/{chunk-GLVLCXIM.mjs → chunk-CXSIXL7M.mjs} +29 -35
  2. package/dist/{chunk-PHAEFHBM.mjs → chunk-GWRFSQQK.mjs} +70 -17
  3. package/dist/{chunk-PHRYWSNV.mjs → chunk-I4X5UNCT.mjs} +307 -240
  4. package/dist/{chunk-3PSIO77N.mjs → chunk-JVRTJQPZ.mjs} +1 -1
  5. package/dist/{chunk-WZ55ERDO.mjs → chunk-PTNFXXOV.mjs} +50 -11
  6. package/dist/{chunk-QDNG5UKJ.mjs → chunk-TEBAR55W.mjs} +292 -291
  7. package/dist/{chunk-STL4ZHLP.mjs → chunk-UH3DUTMG.mjs} +140 -115
  8. package/dist/events.js +440 -305
  9. package/dist/events.mjs +3 -3
  10. package/dist/index.js +844 -666
  11. package/dist/index.mjs +7 -7
  12. package/dist/modals.js +337 -297
  13. package/dist/modals.mjs +3 -3
  14. package/dist/pages.js +558 -381
  15. package/dist/pages.mjs +6 -6
  16. package/dist/primitives.js +50 -11
  17. package/dist/primitives.mjs +1 -1
  18. package/dist/styles.css +1 -1
  19. package/dist/tailwind.css +1 -1
  20. package/dist/trading.js +2597 -2384
  21. package/dist/trading.mjs +4 -4
  22. package/dist/types/events/item-details/event-list-item-details.constants.d.mts +1 -1
  23. package/dist/types/events/item-details/event-list-item-details.constants.d.ts +1 -1
  24. package/dist/types/events/item-details/settlement-summary.d.mts +1 -1
  25. package/dist/types/events/item-details/settlement-summary.d.ts +1 -1
  26. package/dist/types/onboarding/index.d.mts +1 -1
  27. package/dist/types/onboarding/index.d.ts +1 -1
  28. package/dist/types/onboarding/steps/connect-accounts.d.mts +1 -1
  29. package/dist/types/onboarding/steps/connect-accounts.d.ts +1 -1
  30. package/dist/types/primitives/icon/icon.constants.d.mts +1 -0
  31. package/dist/types/primitives/icon/icon.constants.d.ts +1 -0
  32. package/dist/types/shared/use-horizontal-scroll-state.d.mts +3 -0
  33. package/dist/types/shared/use-horizontal-scroll-state.d.ts +3 -0
  34. package/dist/types/trading/place-order/index.place-order.utils.d.mts +1 -0
  35. package/dist/types/trading/place-order/index.place-order.utils.d.ts +1 -0
  36. package/dist/types/trading/settlement/index.d.mts +1 -1
  37. package/dist/types/trading/settlement/index.d.ts +1 -1
  38. package/package.json +3 -3
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  dispatchAggDepositNotification
4
- } from "./chunk-3PSIO77N.mjs";
4
+ } from "./chunk-JVRTJQPZ.mjs";
5
5
  import {
6
6
  BestPricesIcon,
7
7
  BoltIcon,
@@ -41,7 +41,7 @@ import {
41
41
  shortenAddress,
42
42
  useOptionalToast,
43
43
  venueLogoLabels
44
- } from "./chunk-WZ55ERDO.mjs";
44
+ } from "./chunk-PTNFXXOV.mjs";
45
45
 
46
46
  // src/deposit/index.tsx
47
47
  import { useAggAuthState, useAggUiConfig, useDepositAddresses, useLabels as useLabels11 } from "@agg-build/hooks";
@@ -2493,7 +2493,7 @@ import { useLabels as useLabels20 } from "@agg-build/hooks";
2493
2493
  import * as Dialog3 from "@radix-ui/react-dialog";
2494
2494
 
2495
2495
  // src/onboarding/onboarding-modal.constants.ts
2496
- import { Venue } from "@agg-build/sdk";
2496
+ import { isVenueActive, Venue } from "@agg-build/sdk";
2497
2497
  var HOW_IT_WORKS_FEATURE_KEYS = [
2498
2498
  "createAccount",
2499
2499
  "linkAccounts",
@@ -2505,7 +2505,11 @@ var ONBOARDING_STEPS = {
2505
2505
  PROFILE_SETUP: 1,
2506
2506
  CONNECT_ACCOUNTS: 2
2507
2507
  };
2508
- var ONCHAIN_VENUES = [Venue.polymarket, Venue.opinion, Venue.predict];
2508
+ var ONCHAIN_VENUES = [
2509
+ Venue.polymarket,
2510
+ Venue.opinion,
2511
+ Venue.predict
2512
+ ].filter(isVenueActive);
2509
2513
 
2510
2514
  // src/onboarding/steps/how-it-works.tsx
2511
2515
  import { useCallback as useCallback2, useRef as useRef2, useState as useState4 } from "react";
@@ -2725,7 +2729,6 @@ var ProfileSetupStep = ({ onContinue }) => {
2725
2729
  ProfileSetupStep.displayName = "ProfileSetupStep";
2726
2730
 
2727
2731
  // src/onboarding/steps/connect-accounts.tsx
2728
- import { Venue as Venue2 } from "@agg-build/sdk";
2729
2732
  import { useLabels as useLabels17 } from "@agg-build/hooks";
2730
2733
  import { jsx as jsx19, jsxs as jsxs19 } from "react/jsx-runtime";
2731
2734
  var OnchainVenueLogos = () => {
@@ -2796,51 +2799,27 @@ var VenueCard = ({
2796
2799
  };
2797
2800
  var ConnectAccountsStep = ({
2798
2801
  onConnectOnchain,
2799
- onConnectKalshi,
2800
2802
  onContinue,
2801
- connectedOnchain = false,
2802
- connectedKalshi = false
2803
+ connectedOnchain = false
2803
2804
  }) => {
2804
2805
  const labels = useLabels17();
2805
- const canContinue = connectedOnchain || connectedKalshi;
2806
+ const canContinue = connectedOnchain;
2806
2807
  return /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-6", children: [
2807
2808
  /* @__PURE__ */ jsx19("h2", { className: "text-center text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectAccounts.title }),
2808
- /* @__PURE__ */ jsxs19("div", { className: "flex flex-col gap-4", children: [
2809
- /* @__PURE__ */ jsx19(
2810
- VenueCard,
2811
- {
2812
- logos: /* @__PURE__ */ jsx19(OnchainVenueLogos, {}),
2813
- title: labels.onboarding.connectAccounts.onchainTitle,
2814
- mobileTitle: labels.onboarding.connectAccounts.onchainMobileTitle(
2815
- ONCHAIN_VENUES.length - 1
2816
- ),
2817
- description: labels.onboarding.connectAccounts.onchainDescription,
2818
- mobileDescription: labels.onboarding.connectAccounts.onchainMobileDescription,
2819
- onConnect: onConnectOnchain,
2820
- connected: connectedOnchain
2821
- }
2822
- ),
2823
- /* @__PURE__ */ jsx19(
2824
- VenueCard,
2825
- {
2826
- logos: /* @__PURE__ */ jsx19("div", { className: "sm:flex sm:w-14 sm:items-center sm:justify-center", children: /* @__PURE__ */ jsx19(
2827
- VenueLogo,
2828
- {
2829
- venue: Venue2.kalshi,
2830
- variant: "logo",
2831
- size: "large",
2832
- className: "h-6 w-6 sm:h-9 sm:w-9"
2833
- }
2834
- ) }),
2835
- title: labels.onboarding.connectAccounts.kalshiTitle,
2836
- mobileTitle: labels.onboarding.connectAccounts.kalshiMobileTitle,
2837
- description: labels.onboarding.connectAccounts.kalshiDescription,
2838
- mobileDescription: labels.onboarding.connectAccounts.kalshiMobileDescription,
2839
- onConnect: onConnectKalshi,
2840
- connected: connectedKalshi
2841
- }
2842
- )
2843
- ] }),
2809
+ /* @__PURE__ */ jsx19("div", { className: "flex flex-col gap-4", children: /* @__PURE__ */ jsx19(
2810
+ VenueCard,
2811
+ {
2812
+ logos: /* @__PURE__ */ jsx19(OnchainVenueLogos, {}),
2813
+ title: labels.onboarding.connectAccounts.onchainTitle,
2814
+ mobileTitle: labels.onboarding.connectAccounts.onchainMobileTitle(
2815
+ ONCHAIN_VENUES.length - 1
2816
+ ),
2817
+ description: labels.onboarding.connectAccounts.onchainDescription,
2818
+ mobileDescription: labels.onboarding.connectAccounts.onchainMobileDescription,
2819
+ onConnect: onConnectOnchain,
2820
+ connected: connectedOnchain
2821
+ }
2822
+ ) }),
2844
2823
  /* @__PURE__ */ jsx19(
2845
2824
  Button,
2846
2825
  {
@@ -2856,27 +2835,135 @@ var ConnectAccountsStep = ({
2856
2835
  };
2857
2836
  ConnectAccountsStep.displayName = "ConnectAccountsStep";
2858
2837
 
2859
- // src/onboarding/steps/connect-kalshi-modal.tsx
2860
- import { Venue as Venue3 } from "@agg-build/sdk";
2838
+ // src/onboarding/steps/connect-onchain-modal.tsx
2861
2839
  import { useCallback as useCallback4, useState as useState6 } from "react";
2862
2840
  import { useLabels as useLabels18 } from "@agg-build/hooks";
2863
2841
  import * as Dialog from "@radix-ui/react-dialog";
2864
2842
  import { jsx as jsx20, jsxs as jsxs20 } from "react/jsx-runtime";
2865
- var ConnectKalshiModal = ({
2843
+ var ConnectOnchainModal = ({
2866
2844
  open,
2867
2845
  onOpenChange,
2868
- onVerify
2846
+ onConnect
2869
2847
  }) => {
2870
2848
  const labels = useLabels18();
2871
- const [apiKeyId, setApiKeyId] = useState6("");
2872
- const [privateKey, setPrivateKey] = useState6("");
2873
- const [verifying, setVerifying] = useState6(false);
2849
+ const [connecting, setConnecting] = useState6(false);
2874
2850
  const [error, setError] = useState6();
2875
- const canVerify = apiKeyId.trim().length > 0 && privateKey.trim().length > 0;
2876
2851
  const handleCancel = useCallback4(() => {
2877
2852
  onOpenChange(false);
2878
2853
  }, [onOpenChange]);
2879
- const handleVerify = useCallback4(() => __async(null, null, function* () {
2854
+ const handleConnect = useCallback4(() => __async(null, null, function* () {
2855
+ if (connecting) return;
2856
+ setConnecting(true);
2857
+ setError(void 0);
2858
+ try {
2859
+ yield onConnect();
2860
+ onOpenChange(false);
2861
+ } catch (err) {
2862
+ setError(
2863
+ err instanceof Error ? err.message : labels.onboarding.connectOnchainModal.fallbackError
2864
+ );
2865
+ } finally {
2866
+ setConnecting(false);
2867
+ }
2868
+ }), [connecting, labels.onboarding.connectOnchainModal.fallbackError, onConnect, onOpenChange]);
2869
+ const handleOpenChange = useCallback4(
2870
+ (value) => {
2871
+ if (value) {
2872
+ setError(void 0);
2873
+ setConnecting(false);
2874
+ }
2875
+ onOpenChange(value);
2876
+ },
2877
+ [onOpenChange]
2878
+ );
2879
+ return /* @__PURE__ */ jsx20(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs20(
2880
+ Modal.Container,
2881
+ {
2882
+ maxWidth: "600px",
2883
+ "aria-label": labels.onboarding.connectOnchainModal.ariaLabel,
2884
+ classNames: { container: "!rounded-agg-lg" },
2885
+ children: [
2886
+ /* @__PURE__ */ jsx20(Dialog.Title, { className: "sr-only", children: labels.onboarding.connectOnchainModal.title }),
2887
+ /* @__PURE__ */ jsx20(
2888
+ Modal.Header,
2889
+ {
2890
+ hideClose: false,
2891
+ hideBorder: true,
2892
+ classNames: {
2893
+ root: "!min-h-0",
2894
+ container: "!py-[18px] !px-8"
2895
+ }
2896
+ }
2897
+ ),
2898
+ /* @__PURE__ */ jsx20(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-8 items-center", children: [
2899
+ /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-4 items-center text-center", children: [
2900
+ /* @__PURE__ */ jsx20("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectOnchainModal.title }),
2901
+ /* @__PURE__ */ jsx20("p", { className: "text-agg-base text-center leading-agg-6 text-agg-foreground whitespace-pre-line", children: labels.onboarding.connectOnchainModal.description })
2902
+ ] }),
2903
+ /* @__PURE__ */ jsxs20("div", { className: "flex w-full flex-col items-center gap-4 rounded-agg-xl bg-agg-secondary-hover p-6", children: [
2904
+ /* @__PURE__ */ jsx20("p", { className: "text-agg-sm font-agg-bold uppercase leading-agg-5 text-agg-muted-foreground", children: labels.onboarding.connectOnchainModal.supportedVenuesLabel }),
2905
+ /* @__PURE__ */ jsx20("div", { className: "flex flex-wrap items-center justify-center gap-x-4 gap-y-3", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-[6px]", children: [
2906
+ index > 0 && /* @__PURE__ */ jsx20("span", { className: "mr-2.5 h-3 w-px bg-agg-separator" }),
2907
+ /* @__PURE__ */ jsx20(VenueLogo, { venue, size: "medium" }),
2908
+ /* @__PURE__ */ jsx20("span", { className: "text-agg-base text-agg-foreground", children: labels.venues[venue] })
2909
+ ] }, venue)) })
2910
+ ] }),
2911
+ /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-6 items-center", children: [
2912
+ /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-3 items-center", children: [
2913
+ error ? /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
2914
+ /* @__PURE__ */ jsx20(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
2915
+ /* @__PURE__ */ jsx20("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
2916
+ ] }) : null,
2917
+ /* @__PURE__ */ jsx20(
2918
+ Button,
2919
+ {
2920
+ variant: "primary",
2921
+ size: "large",
2922
+ onClick: handleConnect,
2923
+ isLoading: connecting,
2924
+ children: labels.onboarding.connectOnchainModal.connect
2925
+ }
2926
+ )
2927
+ ] }),
2928
+ /* @__PURE__ */ jsx20(
2929
+ Button,
2930
+ {
2931
+ variant: "tertiary",
2932
+ size: "medium",
2933
+ className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
2934
+ onClick: handleCancel,
2935
+ children: labels.onboarding.connectOnchainModal.cancel
2936
+ }
2937
+ )
2938
+ ] })
2939
+ ] }) })
2940
+ ]
2941
+ }
2942
+ ) });
2943
+ };
2944
+ ConnectOnchainModal.displayName = "ConnectOnchainModal";
2945
+
2946
+ // src/onboarding/steps/connect-kalshi-modal.tsx
2947
+ import { Venue as Venue2 } from "@agg-build/sdk";
2948
+ import { useCallback as useCallback5, useState as useState7 } from "react";
2949
+ import { useLabels as useLabels19 } from "@agg-build/hooks";
2950
+ import * as Dialog2 from "@radix-ui/react-dialog";
2951
+ import { jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
2952
+ var ConnectKalshiModal = ({
2953
+ open,
2954
+ onOpenChange,
2955
+ onVerify
2956
+ }) => {
2957
+ const labels = useLabels19();
2958
+ const [apiKeyId, setApiKeyId] = useState7("");
2959
+ const [privateKey, setPrivateKey] = useState7("");
2960
+ const [verifying, setVerifying] = useState7(false);
2961
+ const [error, setError] = useState7();
2962
+ const canVerify = apiKeyId.trim().length > 0 && privateKey.trim().length > 0;
2963
+ const handleCancel = useCallback5(() => {
2964
+ onOpenChange(false);
2965
+ }, [onOpenChange]);
2966
+ const handleVerify = useCallback5(() => __async(null, null, function* () {
2880
2967
  if (!canVerify || verifying) return;
2881
2968
  setVerifying(true);
2882
2969
  setError(void 0);
@@ -2905,7 +2992,7 @@ var ConnectKalshiModal = ({
2905
2992
  privateKey,
2906
2993
  verifying
2907
2994
  ]);
2908
- const handleOpenChange = useCallback4(
2995
+ const handleOpenChange = useCallback5(
2909
2996
  (value) => {
2910
2997
  if (value) {
2911
2998
  setApiKeyId("");
@@ -2917,15 +3004,15 @@ var ConnectKalshiModal = ({
2917
3004
  },
2918
3005
  [onOpenChange]
2919
3006
  );
2920
- return /* @__PURE__ */ jsx20(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs20(
3007
+ return /* @__PURE__ */ jsx21(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs21(
2921
3008
  Modal.Container,
2922
3009
  {
2923
3010
  maxWidth: "600px",
2924
3011
  "aria-label": labels.onboarding.connectKalshiModal.ariaLabel,
2925
3012
  classNames: { container: "!rounded-agg-lg" },
2926
3013
  children: [
2927
- /* @__PURE__ */ jsx20(Dialog.Title, { className: "sr-only", children: labels.onboarding.connectKalshiModal.title }),
2928
- /* @__PURE__ */ jsx20(
3014
+ /* @__PURE__ */ jsx21(Dialog2.Title, { className: "sr-only", children: labels.onboarding.connectKalshiModal.title }),
3015
+ /* @__PURE__ */ jsx21(
2929
3016
  Modal.Header,
2930
3017
  {
2931
3018
  hideClose: false,
@@ -2936,64 +3023,64 @@ var ConnectKalshiModal = ({
2936
3023
  }
2937
3024
  }
2938
3025
  ),
2939
- /* @__PURE__ */ jsx20(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-8 items-center", children: [
2940
- /* @__PURE__ */ jsx20(
3026
+ /* @__PURE__ */ jsx21(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-8 items-center", children: [
3027
+ /* @__PURE__ */ jsx21(
2941
3028
  VenueLogo,
2942
3029
  {
2943
- venue: Venue3.kalshi,
3030
+ venue: Venue2.kalshi,
2944
3031
  variant: "logo",
2945
3032
  size: "large",
2946
3033
  className: "h-[60px] w-[60px]"
2947
3034
  }
2948
3035
  ),
2949
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-4 items-center text-center", children: [
2950
- /* @__PURE__ */ jsx20("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectKalshiModal.title }),
2951
- /* @__PURE__ */ jsx20("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: labels.onboarding.connectKalshiModal.description })
3036
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-4 items-center text-center", children: [
3037
+ /* @__PURE__ */ jsx21("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectKalshiModal.title }),
3038
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-base leading-agg-6 text-agg-foreground", children: labels.onboarding.connectKalshiModal.description })
2952
3039
  ] }),
2953
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-4 w-full", children: [
2954
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
2955
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-1", children: [
2956
- /* @__PURE__ */ jsx20("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepOne.label }),
2957
- /* @__PURE__ */ jsx20("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepOne.title })
3040
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-4 w-full", children: [
3041
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
3042
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-1", children: [
3043
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepOne.label }),
3044
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepOne.title })
2958
3045
  ] }),
2959
- /* @__PURE__ */ jsxs20("div", { className: "space-y-0 text-agg-sm leading-agg-5 text-agg-foreground", children: [
2960
- /* @__PURE__ */ jsx20("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.signIn }),
2961
- /* @__PURE__ */ jsxs20("p", { children: [
3046
+ /* @__PURE__ */ jsxs21("div", { className: "space-y-0 text-agg-sm leading-agg-5 text-agg-foreground", children: [
3047
+ /* @__PURE__ */ jsx21("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.signIn }),
3048
+ /* @__PURE__ */ jsxs21("p", { children: [
2962
3049
  labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfilePrefix,
2963
3050
  " ",
2964
- /* @__PURE__ */ jsx20("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileText }),
3051
+ /* @__PURE__ */ jsx21("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileText }),
2965
3052
  labels.onboarding.connectKalshiModal.stepOne.instructions.goToProfileSeparator,
2966
3053
  " ",
2967
- /* @__PURE__ */ jsx20("span", { className: "text-agg-foreground underline", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileUrl })
3054
+ /* @__PURE__ */ jsx21("span", { className: "text-agg-foreground underline", children: labels.onboarding.connectKalshiModal.stepOne.instructions.profileUrl })
2968
3055
  ] }),
2969
- /* @__PURE__ */ jsxs20("p", { children: [
3056
+ /* @__PURE__ */ jsxs21("p", { children: [
2970
3057
  labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeyPrefix,
2971
3058
  " ",
2972
- /* @__PURE__ */ jsx20("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKeyText }),
3059
+ /* @__PURE__ */ jsx21("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKeyText }),
2973
3060
  labels.onboarding.connectKalshiModal.stepOne.instructions.clickCreateKeySuffix
2974
3061
  ] }),
2975
- /* @__PURE__ */ jsxs20("p", { children: [
3062
+ /* @__PURE__ */ jsxs21("p", { children: [
2976
3063
  labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsPrefix,
2977
3064
  " ",
2978
- /* @__PURE__ */ jsx20("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.readWriteText }),
3065
+ /* @__PURE__ */ jsx21("span", { className: "font-agg-bold", children: labels.onboarding.connectKalshiModal.stepOne.instructions.readWriteText }),
2979
3066
  labels.onboarding.connectKalshiModal.stepOne.instructions.selectPermissionsSuffix
2980
3067
  ] }),
2981
- /* @__PURE__ */ jsx20("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKey })
3068
+ /* @__PURE__ */ jsx21("p", { children: labels.onboarding.connectKalshiModal.stepOne.instructions.createKey })
2982
3069
  ] }),
2983
- /* @__PURE__ */ jsxs20("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: [
3070
+ /* @__PURE__ */ jsxs21("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: [
2984
3071
  labels.onboarding.connectKalshiModal.stepOne.footerLineOne,
2985
- /* @__PURE__ */ jsx20("br", {}),
3072
+ /* @__PURE__ */ jsx21("br", {}),
2986
3073
  labels.onboarding.connectKalshiModal.stepOne.footerLineTwo
2987
3074
  ] })
2988
3075
  ] }),
2989
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
2990
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-1", children: [
2991
- /* @__PURE__ */ jsx20("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.label }),
2992
- /* @__PURE__ */ jsx20("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.title })
3076
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-3 rounded-agg-lg bg-agg-secondary-hover p-4", children: [
3077
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-1", children: [
3078
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-xs font-agg-bold uppercase leading-agg-4 text-agg-muted-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.label }),
3079
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-sm font-agg-bold leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.title })
2993
3080
  ] }),
2994
- /* @__PURE__ */ jsx20("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.description }),
2995
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-2", children: [
2996
- /* @__PURE__ */ jsx20(
3081
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-sm leading-agg-5 text-agg-foreground", children: labels.onboarding.connectKalshiModal.stepTwo.description }),
3082
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-2", children: [
3083
+ /* @__PURE__ */ jsx21(
2997
3084
  "label",
2998
3085
  {
2999
3086
  htmlFor: "kalshi-api-key-id",
@@ -3001,7 +3088,7 @@ var ConnectKalshiModal = ({
3001
3088
  children: labels.onboarding.connectKalshiModal.stepTwo.apiKeyIdLabel
3002
3089
  }
3003
3090
  ),
3004
- /* @__PURE__ */ jsx20(
3091
+ /* @__PURE__ */ jsx21(
3005
3092
  "input",
3006
3093
  {
3007
3094
  id: "kalshi-api-key-id",
@@ -3021,8 +3108,8 @@ var ConnectKalshiModal = ({
3021
3108
  }
3022
3109
  )
3023
3110
  ] }),
3024
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-2", children: [
3025
- /* @__PURE__ */ jsx20(
3111
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-2", children: [
3112
+ /* @__PURE__ */ jsx21(
3026
3113
  "label",
3027
3114
  {
3028
3115
  htmlFor: "kalshi-private-key",
@@ -3030,7 +3117,7 @@ var ConnectKalshiModal = ({
3030
3117
  children: labels.onboarding.connectKalshiModal.stepTwo.privateKeyLabel
3031
3118
  }
3032
3119
  ),
3033
- /* @__PURE__ */ jsx20(
3120
+ /* @__PURE__ */ jsx21(
3034
3121
  "textarea",
3035
3122
  {
3036
3123
  id: "kalshi-private-key",
@@ -3052,42 +3139,42 @@ var ConnectKalshiModal = ({
3052
3139
  ] })
3053
3140
  ] })
3054
3141
  ] }),
3055
- /* @__PURE__ */ jsxs20("div", { className: "flex items-center justify-between w-full", children: [
3056
- /* @__PURE__ */ jsx20("p", { className: "text-agg-base text-agg-foreground", children: labels.onboarding.connectKalshiModal.help.label }),
3057
- /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-3", children: [
3058
- /* @__PURE__ */ jsxs20(
3142
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-center justify-between w-full", children: [
3143
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-base text-agg-foreground", children: labels.onboarding.connectKalshiModal.help.label }),
3144
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-3", children: [
3145
+ /* @__PURE__ */ jsxs21(
3059
3146
  "a",
3060
3147
  {
3061
3148
  href: "#",
3062
3149
  className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
3063
3150
  children: [
3064
- /* @__PURE__ */ jsx20(DocumentIcon, { className: "h-4 w-4" }),
3151
+ /* @__PURE__ */ jsx21(DocumentIcon, { className: "h-4 w-4" }),
3065
3152
  labels.onboarding.connectKalshiModal.help.docsLinkLabel
3066
3153
  ]
3067
3154
  }
3068
3155
  ),
3069
- /* @__PURE__ */ jsx20("span", { className: "h-3 w-px bg-agg-separator" }),
3070
- /* @__PURE__ */ jsxs20(
3156
+ /* @__PURE__ */ jsx21("span", { className: "h-3 w-px bg-agg-separator" }),
3157
+ /* @__PURE__ */ jsxs21(
3071
3158
  "a",
3072
3159
  {
3073
3160
  href: "#",
3074
3161
  className: "flex items-center gap-2 text-agg-base font-agg-bold text-agg-primary hover:text-agg-primary-hover",
3075
3162
  children: [
3076
- /* @__PURE__ */ jsx20(PlaySquareIcon, { className: "h-4 w-4" }),
3163
+ /* @__PURE__ */ jsx21(PlaySquareIcon, { className: "h-4 w-4" }),
3077
3164
  labels.onboarding.connectKalshiModal.help.tutorialLinkLabel
3078
3165
  ]
3079
3166
  }
3080
3167
  )
3081
3168
  ] })
3082
3169
  ] }),
3083
- /* @__PURE__ */ jsxs20("div", { className: "flex flex-col gap-5 items-center", children: [
3084
- error ? /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-2", children: [
3085
- /* @__PURE__ */ jsx20(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
3086
- /* @__PURE__ */ jsx20("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
3170
+ /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-5 items-center", children: [
3171
+ error ? /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
3172
+ /* @__PURE__ */ jsx21(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
3173
+ /* @__PURE__ */ jsx21("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
3087
3174
  ] }) : null,
3088
- /* @__PURE__ */ jsxs20("div", { className: "flex items-center gap-3 justify-center", children: [
3089
- /* @__PURE__ */ jsx20(Button, { variant: "secondary", size: "large", onClick: handleCancel, children: labels.onboarding.connectKalshiModal.actions.cancel }),
3090
- /* @__PURE__ */ jsx20(
3175
+ /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-3 justify-center", children: [
3176
+ /* @__PURE__ */ jsx21(Button, { variant: "secondary", size: "large", onClick: handleCancel, children: labels.onboarding.connectKalshiModal.actions.cancel }),
3177
+ /* @__PURE__ */ jsx21(
3091
3178
  Button,
3092
3179
  {
3093
3180
  variant: "primary",
@@ -3107,114 +3194,6 @@ var ConnectKalshiModal = ({
3107
3194
  };
3108
3195
  ConnectKalshiModal.displayName = "ConnectKalshiModal";
3109
3196
 
3110
- // src/onboarding/steps/connect-onchain-modal.tsx
3111
- import { useCallback as useCallback5, useState as useState7 } from "react";
3112
- import { useLabels as useLabels19 } from "@agg-build/hooks";
3113
- import * as Dialog2 from "@radix-ui/react-dialog";
3114
- import { jsx as jsx21, jsxs as jsxs21 } from "react/jsx-runtime";
3115
- var ConnectOnchainModal = ({
3116
- open,
3117
- onOpenChange,
3118
- onConnect
3119
- }) => {
3120
- const labels = useLabels19();
3121
- const [connecting, setConnecting] = useState7(false);
3122
- const [error, setError] = useState7();
3123
- const handleCancel = useCallback5(() => {
3124
- onOpenChange(false);
3125
- }, [onOpenChange]);
3126
- const handleConnect = useCallback5(() => __async(null, null, function* () {
3127
- if (connecting) return;
3128
- setConnecting(true);
3129
- setError(void 0);
3130
- try {
3131
- yield onConnect();
3132
- onOpenChange(false);
3133
- } catch (err) {
3134
- setError(
3135
- err instanceof Error ? err.message : labels.onboarding.connectOnchainModal.fallbackError
3136
- );
3137
- } finally {
3138
- setConnecting(false);
3139
- }
3140
- }), [connecting, labels.onboarding.connectOnchainModal.fallbackError, onConnect, onOpenChange]);
3141
- const handleOpenChange = useCallback5(
3142
- (value) => {
3143
- if (value) {
3144
- setError(void 0);
3145
- setConnecting(false);
3146
- }
3147
- onOpenChange(value);
3148
- },
3149
- [onOpenChange]
3150
- );
3151
- return /* @__PURE__ */ jsx21(Modal, { open, onOpenChange: handleOpenChange, children: /* @__PURE__ */ jsxs21(
3152
- Modal.Container,
3153
- {
3154
- maxWidth: "600px",
3155
- "aria-label": labels.onboarding.connectOnchainModal.ariaLabel,
3156
- classNames: { container: "!rounded-agg-lg" },
3157
- children: [
3158
- /* @__PURE__ */ jsx21(Dialog2.Title, { className: "sr-only", children: labels.onboarding.connectOnchainModal.title }),
3159
- /* @__PURE__ */ jsx21(
3160
- Modal.Header,
3161
- {
3162
- hideClose: false,
3163
- hideBorder: true,
3164
- classNames: {
3165
- root: "!min-h-0",
3166
- container: "!py-[18px] !px-8"
3167
- }
3168
- }
3169
- ),
3170
- /* @__PURE__ */ jsx21(Modal.Body, { classNames: { root: "!px-5 !pt-0 !pb-[60px] sm:!px-8" }, children: /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-8 items-center", children: [
3171
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-4 items-center text-center", children: [
3172
- /* @__PURE__ */ jsx21("h2", { className: "text-agg-2xl font-agg-bold text-agg-foreground", children: labels.onboarding.connectOnchainModal.title }),
3173
- /* @__PURE__ */ jsx21("p", { className: "text-agg-base text-center leading-agg-6 text-agg-foreground whitespace-pre-line", children: labels.onboarding.connectOnchainModal.description })
3174
- ] }),
3175
- /* @__PURE__ */ jsxs21("div", { className: "flex w-full flex-col items-center gap-4 rounded-agg-xl bg-agg-secondary-hover p-6", children: [
3176
- /* @__PURE__ */ jsx21("p", { className: "text-agg-sm font-agg-bold uppercase leading-agg-5 text-agg-muted-foreground", children: labels.onboarding.connectOnchainModal.supportedVenuesLabel }),
3177
- /* @__PURE__ */ jsx21("div", { className: "flex flex-wrap items-center justify-center gap-x-4 gap-y-3", children: ONCHAIN_VENUES.map((venue, index) => /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-[6px]", children: [
3178
- index > 0 && /* @__PURE__ */ jsx21("span", { className: "mr-2.5 h-3 w-px bg-agg-separator" }),
3179
- /* @__PURE__ */ jsx21(VenueLogo, { venue, size: "medium" }),
3180
- /* @__PURE__ */ jsx21("span", { className: "text-agg-base text-agg-foreground", children: labels.venues[venue] })
3181
- ] }, venue)) })
3182
- ] }),
3183
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-6 items-center", children: [
3184
- /* @__PURE__ */ jsxs21("div", { className: "flex flex-col gap-3 items-center", children: [
3185
- error ? /* @__PURE__ */ jsxs21("div", { className: "flex items-center gap-2", children: [
3186
- /* @__PURE__ */ jsx21(WarningIcon, { className: "h-3.5 w-3.5 shrink-0 text-agg-error" }),
3187
- /* @__PURE__ */ jsx21("p", { className: "text-agg-sm leading-agg-5 text-agg-error", children: error })
3188
- ] }) : null,
3189
- /* @__PURE__ */ jsx21(
3190
- Button,
3191
- {
3192
- variant: "primary",
3193
- size: "large",
3194
- onClick: handleConnect,
3195
- isLoading: connecting,
3196
- children: labels.onboarding.connectOnchainModal.connect
3197
- }
3198
- )
3199
- ] }),
3200
- /* @__PURE__ */ jsx21(
3201
- Button,
3202
- {
3203
- variant: "tertiary",
3204
- size: "medium",
3205
- className: "!h-auto !px-0 !py-0 text-agg-primary hover:bg-transparent hover:text-agg-primary-hover",
3206
- onClick: handleCancel,
3207
- children: labels.onboarding.connectOnchainModal.cancel
3208
- }
3209
- )
3210
- ] })
3211
- ] }) })
3212
- ]
3213
- }
3214
- ) });
3215
- };
3216
- ConnectOnchainModal.displayName = "ConnectOnchainModal";
3217
-
3218
3197
  // src/onboarding/index.tsx
3219
3198
  import { Fragment as Fragment9, jsx as jsx22, jsxs as jsxs22 } from "react/jsx-runtime";
3220
3199
  var OnboardingModal = ({
@@ -3222,11 +3201,9 @@ var OnboardingModal = ({
3222
3201
  onOpenChange,
3223
3202
  onProfileSubmit,
3224
3203
  onConnectOnchain,
3225
- onConnectKalshi,
3226
3204
  onComplete,
3227
3205
  howItWorksIcons,
3228
- connectedOnchain = false,
3229
- connectedKalshi = false
3206
+ connectedOnchain = false
3230
3207
  }) => {
3231
3208
  var _a;
3232
3209
  const labels = useLabels20();
@@ -3237,14 +3214,11 @@ var OnboardingModal = ({
3237
3214
  [ONBOARDING_STEPS.CONNECT_ACCOUNTS]: labels.onboarding.modal.stepConnectAccounts
3238
3215
  };
3239
3216
  const resolvedTitle = (_a = stepLabels[step]) != null ? _a : labels.onboarding.modal.title;
3240
- const [kalshiModalOpen, setKalshiModalOpen] = useState8(false);
3241
- const [kalshiConnected, setKalshiConnected] = useState8(false);
3242
3217
  const [onchainModalOpen, setOnchainModalOpen] = useState8(false);
3243
3218
  const [onchainConnected, setOnchainConnected] = useState8(false);
3244
3219
  useEffect5(() => {
3245
3220
  if (open) {
3246
3221
  setStep(ONBOARDING_STEPS.HOW_IT_WORKS);
3247
- setKalshiConnected(false);
3248
3222
  setOnchainConnected(false);
3249
3223
  }
3250
3224
  }, [open]);
@@ -3268,16 +3242,6 @@ var OnboardingModal = ({
3268
3242
  yield onConnectOnchain == null ? void 0 : onConnectOnchain();
3269
3243
  setOnchainConnected(true);
3270
3244
  }), [onConnectOnchain]);
3271
- const handleOpenKalshiModal = useCallback6(() => {
3272
- setKalshiModalOpen(true);
3273
- }, []);
3274
- const handleKalshiVerify = useCallback6(
3275
- (credentials) => __async(null, null, function* () {
3276
- yield onConnectKalshi == null ? void 0 : onConnectKalshi(credentials);
3277
- setKalshiConnected(true);
3278
- }),
3279
- [onConnectKalshi]
3280
- );
3281
3245
  return /* @__PURE__ */ jsxs22(Fragment9, { children: [
3282
3246
  /* @__PURE__ */ jsx22(Modal, { open, onOpenChange, children: /* @__PURE__ */ jsxs22(
3283
3247
  Modal.Container,
@@ -3294,10 +3258,8 @@ var OnboardingModal = ({
3294
3258
  ConnectAccountsStep,
3295
3259
  {
3296
3260
  onConnectOnchain: handleOpenOnchainModal,
3297
- onConnectKalshi: handleOpenKalshiModal,
3298
3261
  onContinue: handleConnectContinue,
3299
- connectedOnchain: connectedOnchain || onchainConnected,
3300
- connectedKalshi: connectedKalshi || kalshiConnected
3262
+ connectedOnchain: connectedOnchain || onchainConnected
3301
3263
  }
3302
3264
  )
3303
3265
  ] })
@@ -3311,14 +3273,6 @@ var OnboardingModal = ({
3311
3273
  onOpenChange: setOnchainModalOpen,
3312
3274
  onConnect: handleOnchainConnect
3313
3275
  }
3314
- ),
3315
- /* @__PURE__ */ jsx22(
3316
- ConnectKalshiModal,
3317
- {
3318
- open: kalshiModalOpen,
3319
- onOpenChange: setKalshiModalOpen,
3320
- onVerify: handleKalshiVerify
3321
- }
3322
3276
  )
3323
3277
  ] });
3324
3278
  };
@@ -3785,7 +3739,7 @@ var ProfileModal = ({
3785
3739
  }) => {
3786
3740
  var _a, _b, _c, _d, _e, _f, _g, _h, _i;
3787
3741
  const client = useAggClient2();
3788
- const { user, startAuth } = useAggAuthState2();
3742
+ const { user } = useAggAuthState2();
3789
3743
  const toastCtx = useOptionalToast();
3790
3744
  const [activeTab, setActiveTab] = useState10(PROFILE_TAB_KEYS.PROFILE_ACCOUNTS);
3791
3745
  const resolvedInitialUsername = (_a = username != null ? username : user == null ? void 0 : user.username) != null ? _a : "";
@@ -3936,71 +3890,118 @@ var ProfileModal = ({
3936
3890
  if (typeof window === "undefined") return;
3937
3891
  ((_a2 = window.top) != null ? _a2 : window).location.assign(url);
3938
3892
  };
3893
+ const surfaceError = useCallback9(
3894
+ (err, title) => {
3895
+ const message = (err == null ? void 0 : err.message) || "Something went wrong. Please try again.";
3896
+ if (toastCtx) {
3897
+ toastCtx.toast(message, { tone: "error", title });
3898
+ } else {
3899
+ console.error(`[ProfileModal] ${title}:`, message);
3900
+ }
3901
+ },
3902
+ [toastCtx]
3903
+ );
3939
3904
  const handleConnectTwitter = useCallback9(() => __async(null, null, function* () {
3940
- const result = yield startAuth({
3941
- provider: "twitter",
3942
- redirectUrl: resolveRedirectUrl()
3943
- });
3944
- onConnectTwitter == null ? void 0 : onConnectTwitter();
3945
- if (result.type === "redirect") {
3946
- navigateTopWindow(result.url);
3905
+ try {
3906
+ const result = yield client.linkAccount({
3907
+ provider: "twitter",
3908
+ redirectUrl: resolveRedirectUrl()
3909
+ });
3910
+ onConnectTwitter == null ? void 0 : onConnectTwitter();
3911
+ if (result.type === "redirect") {
3912
+ navigateTopWindow(result.url);
3913
+ }
3914
+ } catch (err) {
3915
+ surfaceError(err, "Could not connect X (Twitter)");
3947
3916
  }
3948
- }), [onConnectTwitter, startAuth]);
3917
+ }), [client, onConnectTwitter, surfaceError]);
3949
3918
  const handleConnectGoogle = useCallback9(() => __async(null, null, function* () {
3950
- const result = yield startAuth({
3951
- provider: "google",
3952
- redirectUrl: resolveRedirectUrl()
3953
- });
3954
- onConnectGoogle == null ? void 0 : onConnectGoogle();
3955
- if (result.type === "redirect") {
3956
- navigateTopWindow(result.url);
3919
+ try {
3920
+ const result = yield client.linkAccount({
3921
+ provider: "google",
3922
+ redirectUrl: resolveRedirectUrl()
3923
+ });
3924
+ onConnectGoogle == null ? void 0 : onConnectGoogle();
3925
+ if (result.type === "redirect") {
3926
+ navigateTopWindow(result.url);
3927
+ }
3928
+ } catch (err) {
3929
+ surfaceError(err, "Could not connect Google");
3957
3930
  }
3958
- }), [onConnectGoogle, startAuth]);
3931
+ }), [client, onConnectGoogle, surfaceError]);
3959
3932
  const handleConnectApple = useCallback9(() => __async(null, null, function* () {
3960
- const result = yield startAuth({
3961
- provider: "apple",
3962
- redirectUrl: resolveRedirectUrl()
3963
- });
3964
- onConnectApple == null ? void 0 : onConnectApple();
3965
- if (result.type === "redirect") {
3966
- navigateTopWindow(result.url);
3933
+ try {
3934
+ const result = yield client.linkAccount({
3935
+ provider: "apple",
3936
+ redirectUrl: resolveRedirectUrl()
3937
+ });
3938
+ onConnectApple == null ? void 0 : onConnectApple();
3939
+ if (result.type === "redirect") {
3940
+ navigateTopWindow(result.url);
3941
+ }
3942
+ } catch (err) {
3943
+ surfaceError(err, "Could not connect Apple");
3967
3944
  }
3968
- }), [onConnectApple, startAuth]);
3945
+ }), [client, onConnectApple, surfaceError]);
3969
3946
  const handleDisconnectTwitter = useCallback9(() => __async(null, null, function* () {
3970
- yield client.disconnectAccount("twitter");
3971
- yield client.getCurrentUser();
3972
- onDisconnectTwitter == null ? void 0 : onDisconnectTwitter();
3973
- }), [client, onDisconnectTwitter]);
3947
+ try {
3948
+ yield client.disconnectAccount("twitter");
3949
+ yield client.getCurrentUser();
3950
+ onDisconnectTwitter == null ? void 0 : onDisconnectTwitter();
3951
+ } catch (err) {
3952
+ surfaceError(err, "Could not disconnect X (Twitter)");
3953
+ }
3954
+ }), [client, onDisconnectTwitter, surfaceError]);
3974
3955
  const handleDisconnectGoogle = useCallback9(() => __async(null, null, function* () {
3975
- yield client.disconnectAccount("google");
3976
- yield client.getCurrentUser();
3977
- onDisconnectGoogle == null ? void 0 : onDisconnectGoogle();
3978
- }), [client, onDisconnectGoogle]);
3956
+ try {
3957
+ yield client.disconnectAccount("google");
3958
+ yield client.getCurrentUser();
3959
+ onDisconnectGoogle == null ? void 0 : onDisconnectGoogle();
3960
+ } catch (err) {
3961
+ surfaceError(err, "Could not disconnect Google");
3962
+ }
3963
+ }), [client, onDisconnectGoogle, surfaceError]);
3979
3964
  const handleDisconnectApple = useCallback9(() => __async(null, null, function* () {
3980
- yield client.disconnectAccount("apple");
3981
- yield client.getCurrentUser();
3982
- onDisconnectApple == null ? void 0 : onDisconnectApple();
3983
- }), [client, onDisconnectApple]);
3965
+ try {
3966
+ yield client.disconnectAccount("apple");
3967
+ yield client.getCurrentUser();
3968
+ onDisconnectApple == null ? void 0 : onDisconnectApple();
3969
+ } catch (err) {
3970
+ surfaceError(err, "Could not disconnect Apple");
3971
+ }
3972
+ }), [client, onDisconnectApple, surfaceError]);
3984
3973
  const handleConnectEmail = useCallback9(() => __async(null, null, function* () {
3985
3974
  var _a2;
3986
3975
  const typedEmail = typeof window !== "undefined" ? (_a2 = window.prompt("Enter your email to receive a magic link")) == null ? void 0 : _a2.trim() : void 0;
3987
3976
  if (!typedEmail) return;
3988
- yield startAuth({
3989
- provider: "email",
3990
- email: typedEmail,
3991
- redirectUrl: resolveRedirectUrl()
3992
- });
3993
- onConnectEmail == null ? void 0 : onConnectEmail();
3994
- }), [onConnectEmail, startAuth]);
3977
+ try {
3978
+ yield client.linkAccount({
3979
+ provider: "email",
3980
+ email: typedEmail,
3981
+ redirectUrl: resolveRedirectUrl()
3982
+ });
3983
+ onConnectEmail == null ? void 0 : onConnectEmail();
3984
+ toastCtx == null ? void 0 : toastCtx.toast(`We sent a link to ${typedEmail} to connect your email.`, {
3985
+ tone: "success",
3986
+ title: "Check your inbox"
3987
+ });
3988
+ } catch (err) {
3989
+ surfaceError(err, "Could not connect email");
3990
+ }
3991
+ }), [client, onConnectEmail, surfaceError, toastCtx]);
3995
3992
  const handleDisconnectWallet = useCallback9(
3996
3993
  (wallet) => __async(null, null, function* () {
3997
3994
  const normalizedChain = wallet.chain.toLowerCase();
3998
3995
  const provider = normalizedChain === "solana" || normalizedChain === "svm" ? "solana_wallet" : "wallet";
3999
- yield client.disconnectAccount(provider);
4000
- yield client.getCurrentUser();
4001
- onDisconnectWallet == null ? void 0 : onDisconnectWallet(wallet);
3996
+ try {
3997
+ yield client.disconnectAccount(provider);
3998
+ yield client.getCurrentUser();
3999
+ onDisconnectWallet == null ? void 0 : onDisconnectWallet(wallet);
4000
+ } catch (err) {
4001
+ surfaceError(err, "Could not disconnect wallet");
4002
+ }
4002
4003
  }),
4003
- [client, onDisconnectWallet]
4004
+ [client, onDisconnectWallet, surfaceError]
4004
4005
  );
4005
4006
  const providerActionMap = useMemo3(
4006
4007
  () => ({
@@ -4269,8 +4270,8 @@ export {
4269
4270
  HowItWorksStep,
4270
4271
  ProfileSetupStep,
4271
4272
  ConnectAccountsStep,
4272
- ConnectKalshiModal,
4273
4273
  ConnectOnchainModal,
4274
+ ConnectKalshiModal,
4274
4275
  OnboardingModal,
4275
4276
  ProfileModal,
4276
4277
  GeoBlockModal