@embarkai/ui-kit 0.4.109 → 0.4.110

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js CHANGED
@@ -6031,6 +6031,32 @@ var init_ChainSync2 = __esm({
6031
6031
  }
6032
6032
  });
6033
6033
 
6034
+ // src/internal/hooks/useAllowExternalModalsScroll.ts
6035
+ import { useEffect as useEffect4 } from "react";
6036
+ function isFromExternalModal(event) {
6037
+ return event.composedPath().some((node) => node instanceof Element && EXTERNAL_MODAL_TAGS.has(node.tagName));
6038
+ }
6039
+ function stopExternalModalScrollEvent(event) {
6040
+ if (isFromExternalModal(event)) event.stopPropagation();
6041
+ }
6042
+ function useAllowExternalModalsScroll(enabled) {
6043
+ useEffect4(() => {
6044
+ if (!enabled || typeof document === "undefined") return;
6045
+ const body = document.body;
6046
+ SCROLL_EVENTS.forEach((type) => body.addEventListener(type, stopExternalModalScrollEvent, { passive: true }));
6047
+ return () => {
6048
+ SCROLL_EVENTS.forEach((type) => body.removeEventListener(type, stopExternalModalScrollEvent));
6049
+ };
6050
+ }, [enabled]);
6051
+ }
6052
+ var EXTERNAL_MODAL_TAGS, SCROLL_EVENTS;
6053
+ var init_useAllowExternalModalsScroll = __esm({
6054
+ "src/internal/hooks/useAllowExternalModalsScroll.ts"() {
6055
+ EXTERNAL_MODAL_TAGS = /* @__PURE__ */ new Set(["W3M-MODAL", "APPKIT-MODAL", "WCM-MODAL"]);
6056
+ SCROLL_EVENTS = ["wheel", "touchmove"];
6057
+ }
6058
+ });
6059
+
6034
6060
  // src/internal/clients/account/register-smart-account-address.ts
6035
6061
  async function registerSmartAccountAddress(chainId, smartAccountAddress, factoryAddress) {
6036
6062
  const accessToken = jwtTokenManager2.getAccessToken();
@@ -6959,7 +6985,7 @@ var init_clients = __esm({
6959
6985
  });
6960
6986
 
6961
6987
  // src/internal/hooks/useAutoConnect.ts
6962
- import { useCallback as useCallback3, useEffect as useEffect4, useRef as useRef2 } from "react";
6988
+ import { useCallback as useCallback3, useEffect as useEffect5, useRef as useRef2 } from "react";
6963
6989
  function useAutoConnect() {
6964
6990
  const {
6965
6991
  config: { current: config },
@@ -7021,7 +7047,7 @@ function useAutoConnect() {
7021
7047
  [usePaymaster, setStatus, activeChainId]
7022
7048
  );
7023
7049
  const autoConnectAttemptedRef = useRef2(false);
7024
- useEffect4(() => {
7050
+ useEffect5(() => {
7025
7051
  if (!hasHydrated) return;
7026
7052
  if (autoConnectAttemptedRef.current) return;
7027
7053
  setIsLoading(true);
@@ -7160,7 +7186,7 @@ var init_useAutoConnect = __esm({
7160
7186
  });
7161
7187
 
7162
7188
  // src/hooks/useOpenPage.ts
7163
- import { useCallback as useCallback4, useEffect as useEffect5, useRef as useRef3 } from "react";
7189
+ import { useCallback as useCallback4, useEffect as useEffect6, useRef as useRef3 } from "react";
7164
7190
  function useOpenPage() {
7165
7191
  const page = useLayoutDataStore((st) => st.page);
7166
7192
  const setPage = useLayoutDataStore((st) => st.setPage);
@@ -7190,7 +7216,7 @@ function useOpenPage() {
7190
7216
  }
7191
7217
  function usePageParams() {
7192
7218
  const currentParams = useRef3({});
7193
- useEffect5(() => {
7219
+ useEffect6(() => {
7194
7220
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
7195
7221
  if (!pageParams) return;
7196
7222
  currentParams.current = pageParams;
@@ -7206,13 +7232,13 @@ var init_useOpenPage = __esm({
7206
7232
  });
7207
7233
 
7208
7234
  // src/internal/hooks/useBackupStatusChanges.ts
7209
- import { useEffect as useEffect6, useRef as useRef4 } from "react";
7235
+ import { useEffect as useEffect7, useRef as useRef4 } from "react";
7210
7236
  function useBackupStatusChanges() {
7211
7237
  const { open: openPage } = useOpenPage();
7212
7238
  const requestSeqRef = useRef4(0);
7213
7239
  const openPageRef = useRef4(openPage);
7214
7240
  openPageRef.current = openPage;
7215
- useEffect6(() => {
7241
+ useEffect7(() => {
7216
7242
  async function handleBackupStatusChanged(event) {
7217
7243
  const detail = event?.detail;
7218
7244
  console.log("[BACKUP STATUS] changed:", detail);
@@ -7254,7 +7280,7 @@ var init_useBackupStatusChanges = __esm({
7254
7280
 
7255
7281
  // src/internal/hooks/useDetectMaxScrollHeight.ts
7256
7282
  import { debounce } from "lodash-es";
7257
- import { useCallback as useCallback5, useEffect as useEffect7 } from "react";
7283
+ import { useCallback as useCallback5, useEffect as useEffect8 } from "react";
7258
7284
  function useDetectMaxScrollHeight() {
7259
7285
  const page = useLayoutDataStore((state) => state.page);
7260
7286
  const setIsMobileView = useLayoutStore((state) => state.setIsMobileView);
@@ -7268,7 +7294,7 @@ function useDetectMaxScrollHeight() {
7268
7294
  }, DEBOUNCE_DELAY),
7269
7295
  [page, setMaxScrollHeight, setIsMobileView]
7270
7296
  );
7271
- useEffect7(() => {
7297
+ useEffect8(() => {
7272
7298
  const obs = new ResizeObserver(([entry]) => onResize(entry.contentRect));
7273
7299
  const doc = window.document.getElementsByTagName("html")[0];
7274
7300
  if (doc) obs.observe(doc);
@@ -7286,7 +7312,7 @@ var init_useDetectMaxScrollHeight = __esm({
7286
7312
  });
7287
7313
 
7288
7314
  // src/internal/hooks/useListenIframeAuthEvents.ts
7289
- import { useCallback as useCallback6, useEffect as useEffect8 } from "react";
7315
+ import { useCallback as useCallback6, useEffect as useEffect9 } from "react";
7290
7316
  function useListenIframeAuthEvents() {
7291
7317
  const setPage = useLayoutDataStore((state) => state.setPage);
7292
7318
  const setIsIframeReady = useSession((state) => state.setIsIframeReady);
@@ -7306,7 +7332,7 @@ function useListenIframeAuthEvents() {
7306
7332
  },
7307
7333
  [setPage, setIsIframeReady]
7308
7334
  );
7309
- useEffect8(() => {
7335
+ useEffect9(() => {
7310
7336
  window.addEventListener("message", handleIframeMessage);
7311
7337
  return () => window.removeEventListener("message", handleIframeMessage);
7312
7338
  }, [handleIframeMessage]);
@@ -7319,7 +7345,7 @@ var init_useListenIframeAuthEvents = __esm({
7319
7345
  });
7320
7346
 
7321
7347
  // src/internal/components/Expandable/hooks/useExpandable.ts
7322
- import { useCallback as useCallback7, useEffect as useEffect9, useRef as useRef5 } from "react";
7348
+ import { useCallback as useCallback7, useEffect as useEffect10, useRef as useRef5 } from "react";
7323
7349
  var DEFERRED_DELAY, useExpandable;
7324
7350
  var init_useExpandable = __esm({
7325
7351
  "src/internal/components/Expandable/hooks/useExpandable.ts"() {
@@ -7328,7 +7354,7 @@ var init_useExpandable = __esm({
7328
7354
  const { isExpanded = false, initHeight = 0, minHeight = 0 } = props;
7329
7355
  const expandableRef = useRef5(null);
7330
7356
  const contentRef = useRef5(null);
7331
- useEffect9(() => {
7357
+ useEffect10(() => {
7332
7358
  if (!expandableRef.current) return;
7333
7359
  expandableRef.current.style.setProperty("--ui-kit-expandable-h", `${initHeight}px )`);
7334
7360
  }, []);
@@ -7344,7 +7370,7 @@ var init_useExpandable = __esm({
7344
7370
  expandableHeightTimerRef.current = null;
7345
7371
  }, DEFERRED_DELAY);
7346
7372
  }, []);
7347
- useEffect9(() => {
7373
+ useEffect10(() => {
7348
7374
  if (!contentRef.current || !expandableRef.current) return;
7349
7375
  const resizeObs = new ResizeObserver(() => setExpandableHeight(minHeight, isExpanded));
7350
7376
  const domMutationObs = new MutationObserver(() => setExpandableHeight(minHeight, isExpanded));
@@ -9610,9 +9636,9 @@ var init_useActivityLog = __esm({
9610
9636
 
9611
9637
  // src/internal/components/ActivityLogMenu/useActivityLogMenuParams.ts
9612
9638
  import { keys } from "lodash-es";
9613
- import { useEffect as useEffect10 } from "react";
9639
+ import { useEffect as useEffect11 } from "react";
9614
9640
  function useActivityLogMenuParams() {
9615
- useEffect10(() => {
9641
+ useEffect11(() => {
9616
9642
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
9617
9643
  if (!pageParams || !keys(pageParams).length) return;
9618
9644
  setTimeout(() => useActivityLogFilters.setState(pageParams), 0);
@@ -10184,7 +10210,7 @@ var init_emailChallenge = __esm({
10184
10210
  // src/internal/components/AuthMenu/SignInStep/Email.tsx
10185
10211
  import { useMutation as useMutation2 } from "@tanstack/react-query";
10186
10212
  import { ChevronRight, Loader as Loader2, Mail as Mail2 } from "lucide-react";
10187
- import { useEffect as useEffect11, useRef as useRef7 } from "react";
10213
+ import { useEffect as useEffect12, useRef as useRef7 } from "react";
10188
10214
  import { jsx as jsx20, jsxs as jsxs14 } from "react/jsx-runtime";
10189
10215
  function Email() {
10190
10216
  const { callbacksRef } = useProviderConfig();
@@ -10255,7 +10281,7 @@ function Email() {
10255
10281
  }
10256
10282
  onSendVerificationCode(email);
10257
10283
  };
10258
- useEffect11(() => {
10284
+ useEffect12(() => {
10259
10285
  if (!focusRef.current || !isMobileView) return;
10260
10286
  focusRef.current?.focus();
10261
10287
  setTimeout(() => {
@@ -11178,7 +11204,7 @@ var init_useAuthMenuHanders = __esm({
11178
11204
  });
11179
11205
 
11180
11206
  // src/internal/components/AuthMenu/VerifyStep/VerificationCodeInput.tsx
11181
- import { useEffect as useEffect12, useRef as useRef9, useState as useState4 } from "react";
11207
+ import { useEffect as useEffect13, useRef as useRef9, useState as useState4 } from "react";
11182
11208
  import { Fragment as Fragment8, jsx as jsx24, jsxs as jsxs18 } from "react/jsx-runtime";
11183
11209
  var getRemainingSeconds, VerificationCodeInput;
11184
11210
  var init_VerificationCodeInput = __esm({
@@ -11193,7 +11219,7 @@ var init_VerificationCodeInput = __esm({
11193
11219
  const { t } = useT();
11194
11220
  const setAlert = useAuthStore((st) => st.setAlert);
11195
11221
  const [timeLeft, setTimeLeft] = useState4(() => getRemainingSeconds(expiresAt));
11196
- useEffect12(() => {
11222
+ useEffect13(() => {
11197
11223
  let intervalId;
11198
11224
  const syncTimeLeft = () => {
11199
11225
  const remaining = getRemainingSeconds(expiresAt);
@@ -11217,7 +11243,7 @@ var init_VerificationCodeInput = __esm({
11217
11243
  const lastSubmittedRef = useRef9(null);
11218
11244
  const inputsRef = useRef9([]);
11219
11245
  const [digits, setDigits] = useState4(["", "", "", "", "", ""]);
11220
- useEffect12(() => {
11246
+ useEffect13(() => {
11221
11247
  const code = digits.join("");
11222
11248
  if (code.length === 6 && digits.every((d) => d !== "") && !isLoading) {
11223
11249
  if (lastSubmittedRef.current !== code) {
@@ -11226,7 +11252,7 @@ var init_VerificationCodeInput = __esm({
11226
11252
  }
11227
11253
  }
11228
11254
  }, [digits, isLoading, onVerifyCode]);
11229
- useEffect12(() => {
11255
+ useEffect13(() => {
11230
11256
  const t2 = setTimeout(() => {
11231
11257
  inputsRef.current[0]?.focus();
11232
11258
  }, 0);
@@ -11531,7 +11557,7 @@ var init_VerifyStep2 = __esm({
11531
11557
 
11532
11558
  // src/internal/components/AuthMenu/AuthMenu.tsx
11533
11559
  import { Loader as Loader4 } from "lucide-react";
11534
- import { useEffect as useEffect13, useMemo as useMemo2 } from "react";
11560
+ import { useEffect as useEffect14, useMemo as useMemo2 } from "react";
11535
11561
  import { jsx as jsx26, jsxs as jsxs20 } from "react/jsx-runtime";
11536
11562
  var AuthMenu;
11537
11563
  var init_AuthMenu = __esm({
@@ -11558,7 +11584,7 @@ var init_AuthMenu = __esm({
11558
11584
  const step = useAuthStore((st) => st.step);
11559
11585
  const alert2 = useAuthStore((st) => st.alert);
11560
11586
  const { pendingLoginResponseRef, onAuthSuccess, goBackToSignIn } = useAuthMenuHandlers();
11561
- useEffect13(() => {
11587
+ useEffect14(() => {
11562
11588
  if (!pendingWalletLogin) return;
11563
11589
  const loginResponse = pendingWalletLogin;
11564
11590
  useLayoutDataStore.getState().setPendingWalletLogin(null);
@@ -11568,7 +11594,7 @@ var init_AuthMenu = __esm({
11568
11594
  onAuthSuccess();
11569
11595
  });
11570
11596
  }, [pendingWalletLogin]);
11571
- useEffect13(() => {
11597
+ useEffect14(() => {
11572
11598
  useLayoutDataStore.getState().setTransitionPageHeight(DEFAULT_AUTH_MENU_HEIGHT);
11573
11599
  return () => {
11574
11600
  const { setStep, setPasskeyStatus, setEmail, setEmailChallenge, setAlert } = useAuthStore.getState();
@@ -11760,7 +11786,7 @@ var init_onboarder = __esm({
11760
11786
 
11761
11787
  // src/internal/components/Onboarding/OnboardingOverlay.tsx
11762
11788
  import { ChevronRightIcon, LoaderIcon as LoaderIcon2, XIcon } from "lucide-react";
11763
- import { useEffect as useEffect14, useMemo as useMemo3, useState as useState6 } from "react";
11789
+ import { useEffect as useEffect15, useMemo as useMemo3, useState as useState6 } from "react";
11764
11790
  import { createPortal as createPortal2 } from "react-dom";
11765
11791
  import { jsx as jsx27, jsxs as jsxs21 } from "react/jsx-runtime";
11766
11792
  function getTooltipXPos(params) {
@@ -11786,7 +11812,7 @@ function getTooltipYPos(params) {
11786
11812
  function OnboardingOverlay() {
11787
11813
  const { t } = useT();
11788
11814
  const page = useLayoutDataStore((st) => st.page);
11789
- useEffect14(() => {
11815
+ useEffect15(() => {
11790
11816
  setTimeout(() => {
11791
11817
  if (!page) {
11792
11818
  useOnboardingStore.getState().setMountIntoNode(document.body);
@@ -11822,7 +11848,7 @@ function OnboardingOverlay() {
11822
11848
  };
11823
11849
  return { ...getTooltipXPos(posParams), ...getTooltipYPos(posParams) };
11824
11850
  }, [elRect, isMobileView]);
11825
- useEffect14(() => {
11851
+ useEffect15(() => {
11826
11852
  if (!waitSecs) return;
11827
11853
  setContinueCountdown(waitSecs);
11828
11854
  const countdownInterval = setInterval(() => {
@@ -11981,9 +12007,9 @@ var init_OnboardingOverlay = __esm({
11981
12007
  });
11982
12008
 
11983
12009
  // src/internal/components/Onboarding/useOnboardingTouirAvailable.ts
11984
- import { useEffect as useEffect15 } from "react";
12010
+ import { useEffect as useEffect16 } from "react";
11985
12011
  function useOnboardingTourAvailable(isAvailable) {
11986
- useEffect15(() => {
12012
+ useEffect16(() => {
11987
12013
  useOnboardingStore.getState().setIsTourAvailable(isAvailable);
11988
12014
  return () => useOnboardingStore.getState().setIsTourAvailable(false);
11989
12015
  }, [isAvailable]);
@@ -12553,11 +12579,11 @@ var init_priceFormatter = __esm({
12553
12579
 
12554
12580
  // src/internal/components/BuyMenu/useBuyMenuStore.ts
12555
12581
  import { keys as keys2, noop } from "lodash-es";
12556
- import { useEffect as useEffect16 } from "react";
12582
+ import { useEffect as useEffect17 } from "react";
12557
12583
  import { create as create7 } from "zustand";
12558
12584
  import { persist as persist2 } from "zustand/middleware";
12559
12585
  function useBuyMenuParams() {
12560
- useEffect16(() => {
12586
+ useEffect17(() => {
12561
12587
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
12562
12588
  if (!pageParams || !keys2(pageParams).length) return;
12563
12589
  const { amount, crypto: crypto2, onRampWidgetRedirected } = pageParams || {};
@@ -13732,11 +13758,11 @@ var init_BinanceTxHistory = __esm({
13732
13758
 
13733
13759
  // src/internal/components/BuyMenu/binance/useBinanceSseTracing.ts
13734
13760
  import { useQueryClient as useQueryClient4 } from "@tanstack/react-query";
13735
- import { useEffect as useEffect18, useRef as useRef10 } from "react";
13761
+ import { useEffect as useEffect19, useRef as useRef10 } from "react";
13736
13762
  function useBinanceSseTxTracing(walletAddress) {
13737
13763
  const qc = useQueryClient4();
13738
13764
  const debounceRef = useRef10(null);
13739
- useEffect18(() => {
13765
+ useEffect19(() => {
13740
13766
  if (!walletAddress) return;
13741
13767
  const iframeManager = getIframeManager();
13742
13768
  if (!iframeManager) return;
@@ -13778,7 +13804,7 @@ var init_utils7 = __esm({
13778
13804
  // src/internal/components/BuyMenu/binance/Binance.tsx
13779
13805
  import { useMutation as useMutation5, useQuery as useQuery4, useQueryClient as useQueryClient5 } from "@tanstack/react-query";
13780
13806
  import { LoaderIcon as LoaderIcon5 } from "lucide-react";
13781
- import { useEffect as useEffect19 } from "react";
13807
+ import { useEffect as useEffect20 } from "react";
13782
13808
  import { Fragment as Fragment13, jsx as jsx47, jsxs as jsxs40 } from "react/jsx-runtime";
13783
13809
  function Binance() {
13784
13810
  const qc = useQueryClient5();
@@ -13831,7 +13857,7 @@ function Binance() {
13831
13857
  });
13832
13858
  const paymentModes = paymentModesData?.data?.paymentMethods || [];
13833
13859
  const selectedPaymentMode = paymentModes?.find((el) => getPayMethodID(el) === paymentMode) || null;
13834
- useEffect19(() => {
13860
+ useEffect20(() => {
13835
13861
  useBuyMenuStore.getState().setMinAmount(Number(selectedPaymentMode?.fiatMinLimit || "0"));
13836
13862
  }, [selectedPaymentMode]);
13837
13863
  const { mutate: estimateQuote, isPending: isQuoteEstimating } = useMutation5({
@@ -13859,22 +13885,22 @@ function Binance() {
13859
13885
  }
13860
13886
  });
13861
13887
  const availableFiats = (tradingPairsData?.data?.fiatCurrencies || []).map((ticker) => ({ ticker }));
13862
- useEffect19(() => {
13888
+ useEffect20(() => {
13863
13889
  if (!!selectedFiat || !availableFiats?.length) return;
13864
13890
  const targetFiat = availableFiats.find((item) => PREFERRED_FIATS.includes(item.ticker)) || availableFiats[0];
13865
13891
  useBuyMenuStore.getState().setSelectedFiat(targetFiat.ticker);
13866
13892
  }, [availableFiats, selectedFiat]);
13867
- useEffect19(() => {
13893
+ useEffect20(() => {
13868
13894
  if (!!selectedCrypto || !networkAvailableCryptoList?.length) return;
13869
13895
  const targetCrypto = networkAvailableCryptoList.find((item) => PREFERRED_CRYPTOS.includes(item.cryptoCurrency)) || networkAvailableCryptoList[0];
13870
13896
  useBuyMenuStore.getState().setSelectedCrypto(targetCrypto.cryptoCurrency);
13871
13897
  }, [networkAvailableCryptoList, selectedCrypto]);
13872
- useEffect19(() => {
13898
+ useEffect20(() => {
13873
13899
  if (!!paymentMode || !paymentModes.length) return;
13874
13900
  const targetPaymentMode = paymentModes.find((item) => item.payMethodCode === PREFERRED_PAYMENT_METHOD) || paymentModes[0];
13875
13901
  useBinanceStore.getState().setPaymentMode(getPayMethodID(targetPaymentMode));
13876
13902
  }, [paymentModes]);
13877
- useEffect19(() => {
13903
+ useEffect20(() => {
13878
13904
  return () => {
13879
13905
  useBinanceStore.getState().setPaymentMode(null);
13880
13906
  qc.resetQueries({ queryKey: [QUERY_KEYS2.binanceTradingPairs] });
@@ -14393,11 +14419,11 @@ var init_networks = __esm({
14393
14419
 
14394
14420
  // src/internal/components/BuyMenu/finchpay/useFinchpaySseTxTracing.ts
14395
14421
  import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
14396
- import { useEffect as useEffect20, useRef as useRef11 } from "react";
14422
+ import { useEffect as useEffect21, useRef as useRef11 } from "react";
14397
14423
  function useFinchpaySseTxTracing(walletAddress) {
14398
14424
  const qc = useQueryClient6();
14399
14425
  const debounceRef = useRef11(null);
14400
- useEffect20(() => {
14426
+ useEffect21(() => {
14401
14427
  if (!walletAddress) return;
14402
14428
  const iframeManager = getIframeManager();
14403
14429
  if (!iframeManager) return;
@@ -14446,7 +14472,7 @@ var init_utils8 = __esm({
14446
14472
  // src/internal/components/BuyMenu/finchpay/FinchPay.tsx
14447
14473
  import { useQuery as useQuery5, useQueryClient as useQueryClient7 } from "@tanstack/react-query";
14448
14474
  import { DollarSign, LoaderIcon as LoaderIcon7 } from "lucide-react";
14449
- import { useEffect as useEffect21 } from "react";
14475
+ import { useEffect as useEffect22 } from "react";
14450
14476
  import { Fragment as Fragment14, jsx as jsx50, jsxs as jsxs43 } from "react/jsx-runtime";
14451
14477
  function FinchPay() {
14452
14478
  const qc = useQueryClient7();
@@ -14522,7 +14548,7 @@ function FinchPay() {
14522
14548
  })
14523
14549
  });
14524
14550
  const minimum = Number(limitsData?.min_amount || "0");
14525
- useEffect21(() => {
14551
+ useEffect22(() => {
14526
14552
  if (minimum <= 0) return;
14527
14553
  useBuyMenuStore.getState().setMinAmount(minimum);
14528
14554
  }, [minimum]);
@@ -14550,23 +14576,23 @@ function FinchPay() {
14550
14576
  // defaults to CARD estimation, widgetUrl
14551
14577
  })
14552
14578
  });
14553
- useEffect21(() => {
14579
+ useEffect22(() => {
14554
14580
  const { error: errorTitle, message: errorMessage } = handleErrors([currenciesError, limitsError, estimateError]);
14555
14581
  if (!errorTitle && !errorMessage) return;
14556
14582
  console.error(`[BuyModal][Binance] ${errorTitle}: ${errorMessage}`);
14557
14583
  useBuyMenuStore.getState().setError(errorMessage);
14558
14584
  }, [currenciesError, limitsError, estimateError]);
14559
- useEffect21(() => {
14585
+ useEffect22(() => {
14560
14586
  if (!!selectedFiat || currenciesData.fiats.length === 0) return;
14561
14587
  const fallbackFiat = currenciesData.fiats[0];
14562
14588
  const targetFiat = currenciesData.fiats.find((f) => f.ticker.toUpperCase() === "USD") || fallbackFiat;
14563
14589
  useBuyMenuStore.getState().setSelectedFiat(targetFiat.ticker);
14564
14590
  }, [currenciesData, selectedFiat]);
14565
- useEffect21(() => {
14591
+ useEffect22(() => {
14566
14592
  if (!!selectedCrypto || currenciesData.currentNetworkCoins.length === 0) return;
14567
14593
  useBuyMenuStore.getState().setSelectedCrypto(currenciesData.currentNetworkCoins[0].ticker);
14568
14594
  }, [currenciesData, selectedCrypto]);
14569
- useEffect21(() => {
14595
+ useEffect22(() => {
14570
14596
  return () => {
14571
14597
  qc.resetQueries({ queryKey: [QUERY_KEYS2.finchPayCurrencies] });
14572
14598
  qc.resetQueries({ queryKey: [QUERY_KEYS2.finchPayLimits] });
@@ -14820,7 +14846,7 @@ var init_ProviderSelector = __esm({
14820
14846
  });
14821
14847
 
14822
14848
  // src/internal/components/BuyMenu/useHandleInputAmount.ts
14823
- import { useEffect as useEffect22, useRef as useRef12 } from "react";
14849
+ import { useEffect as useEffect23, useRef as useRef12 } from "react";
14824
14850
  var ON_INPUT_QUERY_DELAY, useHandleInputAmount;
14825
14851
  var init_useHandleInputAmount = __esm({
14826
14852
  "src/internal/components/BuyMenu/useHandleInputAmount.ts"() {
@@ -14833,7 +14859,7 @@ var init_useHandleInputAmount = __esm({
14833
14859
  const srcInputAmount = useBuyMenuStore((st) => st.srcInputAmount);
14834
14860
  const minAmount = useBuyMenuStore((st) => st.minAmount);
14835
14861
  const queryAmountTimer = useRef12(null);
14836
- useEffect22(() => {
14862
+ useEffect23(() => {
14837
14863
  if (queryAmountTimer.current) clearTimeout(queryAmountTimer.current);
14838
14864
  queryAmountTimer.current = setTimeout(() => {
14839
14865
  const checkedValue = Math.ceil(Math.max(Number(srcInputAmount), Number(minAmount)));
@@ -14841,7 +14867,7 @@ var init_useHandleInputAmount = __esm({
14841
14867
  useBuyMenuStore.getState().setSrcQueryAmount(checkedValue);
14842
14868
  }, ON_INPUT_QUERY_DELAY);
14843
14869
  }, [minAmount, srcInputAmount]);
14844
- useEffect22(() => {
14870
+ useEffect23(() => {
14845
14871
  if (lastRampProviderRef.current === rampProvider) return;
14846
14872
  const {
14847
14873
  setIsProviderSummary,
@@ -16526,7 +16552,7 @@ var init_EmailNotConnectedWarning = __esm({
16526
16552
 
16527
16553
  // src/internal/components/ManageWalletMenu/hooks/useLinkSocial.ts
16528
16554
  import { useQueryClient as useQueryClient11 } from "@tanstack/react-query";
16529
- import React29, { useEffect as useEffect23 } from "react";
16555
+ import React29, { useEffect as useEffect24 } from "react";
16530
16556
  function normalizeSocialLinkError(message) {
16531
16557
  if (message === "X_ALREADY_LINKED") {
16532
16558
  return "This X account is already linked to another account";
@@ -16601,7 +16627,7 @@ function useLinkSocial() {
16601
16627
  [config.social?.providers]
16602
16628
  );
16603
16629
  const [socialLinkStarted, setSocialLinkStarted] = React29.useState(false);
16604
- useEffect23(() => {
16630
+ useEffect24(() => {
16605
16631
  const key = providerType?.toLowerCase();
16606
16632
  console.log("[useLinkSocial] Effect triggered:", { key, linkIsLoading, socialLinkStarted });
16607
16633
  if (key && key !== "telegram" && key !== "email" && key !== "passkey" && key !== "wallet") {
@@ -16680,7 +16706,7 @@ var init_telegram2 = __esm({
16680
16706
 
16681
16707
  // src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
16682
16708
  import { useQueryClient as useQueryClient12 } from "@tanstack/react-query";
16683
- import { useCallback as useCallback16, useEffect as useEffect24, useState as useState12 } from "react";
16709
+ import { useCallback as useCallback16, useEffect as useEffect25, useState as useState12 } from "react";
16684
16710
  function useLinkTelegram() {
16685
16711
  const {
16686
16712
  config: { current: config },
@@ -16738,7 +16764,7 @@ function useLinkTelegram() {
16738
16764
  }
16739
16765
  }, [config.social?.providers]);
16740
16766
  const [telegramLinkStarted, setTelegramLinkStarted] = useState12(false);
16741
- useEffect24(() => {
16767
+ useEffect25(() => {
16742
16768
  console.log("[useLinkTelegram] Effect triggered:", { providerType, linkIsLoading, telegramLinkStarted });
16743
16769
  if (providerType === "telegram" && !linkIsLoading && !telegramLinkStarted) {
16744
16770
  console.log("[useLinkTelegram] Starting Telegram link flow");
@@ -16746,7 +16772,7 @@ function useLinkTelegram() {
16746
16772
  handleLinkTelegram();
16747
16773
  }
16748
16774
  }, [providerType, handleLinkTelegram, linkIsLoading, telegramLinkStarted]);
16749
- useEffect24(() => {
16775
+ useEffect25(() => {
16750
16776
  if (providerType !== "telegram") {
16751
16777
  setTelegramLinkStarted(false);
16752
16778
  }
@@ -17259,10 +17285,10 @@ var init_ManageWalletMenu = __esm({
17259
17285
 
17260
17286
  // src/internal/components/ConnectExternalWalletMenu/useConnectExternalWalletMenuParams.ts
17261
17287
  import { keys as keys3 } from "lodash-es";
17262
- import { useEffect as useEffect25, useRef as useRef13 } from "react";
17288
+ import { useEffect as useEffect26, useRef as useRef13 } from "react";
17263
17289
  function useConnectExternalWalletMenuParams() {
17264
17290
  const paramsRef = useRef13(null);
17265
- useEffect25(() => {
17291
+ useEffect26(() => {
17266
17292
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
17267
17293
  if (!pageParams || !keys3(pageParams).length) return;
17268
17294
  paramsRef.current = pageParams;
@@ -18409,7 +18435,7 @@ var init_guardian_backup = __esm({
18409
18435
 
18410
18436
  // src/internal/components/DevicesMenu/DeviceManageScreen.tsx
18411
18437
  import { ArrowLeft as ArrowLeft10, Cpu, Download, HardDrive, Loader2 as Loader23, Trash2, Upload } from "lucide-react";
18412
- import { useCallback as useCallback19, useEffect as useEffect26, useRef as useRef14, useState as useState16 } from "react";
18438
+ import { useCallback as useCallback19, useEffect as useEffect27, useRef as useRef14, useState as useState16 } from "react";
18413
18439
  import { Fragment as Fragment20, jsx as jsx76, jsxs as jsxs67 } from "react/jsx-runtime";
18414
18440
  function formatSize(bytes) {
18415
18441
  if (bytes < 1024) return `${bytes} B`;
@@ -18429,12 +18455,12 @@ function DeviceManageScreen() {
18429
18455
  const [statusMessage, setStatusMessage] = useState16(null);
18430
18456
  const [errorMessage, setErrorMessage] = useState16(null);
18431
18457
  const [waitingConfirm, setWaitingConfirm] = useState16(false);
18432
- useEffect26(() => {
18458
+ useEffect27(() => {
18433
18459
  if (!statusMessage) return;
18434
18460
  const t = setTimeout(() => setStatusMessage(null), 3e3);
18435
18461
  return () => clearTimeout(t);
18436
18462
  }, [statusMessage]);
18437
- useEffect26(() => {
18463
+ useEffect27(() => {
18438
18464
  if (!deviceId || !isWebSerialAvailable()) {
18439
18465
  setScreen({ step: "error", message: "WebSerial not available" });
18440
18466
  return;
@@ -19366,7 +19392,7 @@ var init_cloudStorage = __esm({
19366
19392
 
19367
19393
  // src/internal/components/KeyshareRestoreMenu/hooks/useCreateBackup.ts
19368
19394
  import { useMutation as useMutation12, useQueryClient as useQueryClient16 } from "@tanstack/react-query";
19369
- import { useCallback as useCallback22, useEffect as useEffect27 } from "react";
19395
+ import { useCallback as useCallback22, useEffect as useEffect28 } from "react";
19370
19396
  function useCreateBackup() {
19371
19397
  const qc = useQueryClient16();
19372
19398
  const session = useSession((st) => st.session);
@@ -19375,7 +19401,7 @@ function useCreateBackup() {
19375
19401
  const usePasskey = useRestoreStore((st) => st.usePasskey);
19376
19402
  const restorePassword = useRestoreStore((st) => st.restorePassword);
19377
19403
  const selectedCloudProvider = useRestoreStore((st) => st.selectedCloudProvider);
19378
- useEffect27(() => {
19404
+ useEffect28(() => {
19379
19405
  if (!hasServerVault) {
19380
19406
  useRestoreStore.getState().setMethod("server");
19381
19407
  useLayoutStore.getState().setIsDialogForced(true);
@@ -19685,7 +19711,7 @@ var init_useRestoreAccount = __esm({
19685
19711
  });
19686
19712
 
19687
19713
  // src/internal/components/KeyshareRestoreMenu/hooks/useValidateFileBackup.ts
19688
- import { useEffect as useEffect28 } from "react";
19714
+ import { useEffect as useEffect29 } from "react";
19689
19715
  function validateRestoreFileFormat(parsedData) {
19690
19716
  if (typeof parsedData !== "object" || parsedData === null) return false;
19691
19717
  const data = parsedData;
@@ -19695,7 +19721,7 @@ function useValidateFileBackup() {
19695
19721
  const restoreFile = useRestoreStore((st) => st.restoreFile);
19696
19722
  const setError = useRestoreStore((st) => st.setError);
19697
19723
  const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
19698
- useEffect28(() => {
19724
+ useEffect29(() => {
19699
19725
  if (!restoreFile) {
19700
19726
  return;
19701
19727
  }
@@ -19923,7 +19949,7 @@ var init_onboarding_setup4 = __esm({
19923
19949
 
19924
19950
  // src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
19925
19951
  import { ChevronRight as ChevronRight3, Eye, EyeOff, Info as Info3, Key as Key5, Loader as Loader12, Plus } from "lucide-react";
19926
- import { useEffect as useEffect29, useRef as useRef15 } from "react";
19952
+ import { useEffect as useEffect30, useRef as useRef15 } from "react";
19927
19953
  import { Fragment as Fragment23, jsx as jsx80, jsxs as jsxs71 } from "react/jsx-runtime";
19928
19954
  function PasswordPasskey(props) {
19929
19955
  const { t } = useT();
@@ -19952,7 +19978,7 @@ function PasswordPasskey(props) {
19952
19978
  } = useRestoreStore();
19953
19979
  const { config } = useProviderConfig();
19954
19980
  const isPasskeyEnabled = config.current.passkey.enabled;
19955
- useEffect29(() => {
19981
+ useEffect30(() => {
19956
19982
  if (!isPasskeyEnabled && usePasskey) setUsePasskey(false);
19957
19983
  }, [isPasskeyEnabled, usePasskey]);
19958
19984
  return /* @__PURE__ */ jsxs71(Fragment23, { children: [
@@ -20290,7 +20316,7 @@ var init_File = __esm({
20290
20316
  import { useQueryClient as useQueryClient17 } from "@tanstack/react-query";
20291
20317
  import dayjs4 from "dayjs";
20292
20318
  import { Download as Download3, Key as Key6, Upload as Upload3 } from "lucide-react";
20293
- import { useEffect as useEffect30 } from "react";
20319
+ import { useEffect as useEffect31 } from "react";
20294
20320
  import { Fragment as Fragment26, jsx as jsx83, jsxs as jsxs74 } from "react/jsx-runtime";
20295
20321
  function Server(props) {
20296
20322
  const { isLoading, mode = "restore", serverHandler, createPasskeyHandler } = props;
@@ -20300,7 +20326,7 @@ function Server(props) {
20300
20326
  const usePasskey = useRestoreStore((st) => st.usePasskey);
20301
20327
  const setUsePasskey = useRestoreStore((st) => st.setUsePasskey);
20302
20328
  const serverRecoveryStatus = qc.getQueryData([CHECK_BACKUP_QUERY_KEY, address]);
20303
- useEffect30(() => {
20329
+ useEffect31(() => {
20304
20330
  if (mode === "backup" || !serverRecoveryStatus?.created?.encryptionMethod) return;
20305
20331
  setUsePasskey(serverRecoveryStatus.created.encryptionMethod === "passkey");
20306
20332
  }, [mode, serverRecoveryStatus, setUsePasskey]);
@@ -20492,7 +20518,7 @@ var init_select = __esm({
20492
20518
  // src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
20493
20519
  import { useQuery as useQuery11 } from "@tanstack/react-query";
20494
20520
  import { ArrowLeft as ArrowLeft13, CloudDownload, CloudUpload, Loader as Loader13 } from "lucide-react";
20495
- import { useEffect as useEffect31 } from "react";
20521
+ import { useEffect as useEffect32 } from "react";
20496
20522
  import { Fragment as Fragment27, jsx as jsx85, jsxs as jsxs76 } from "react/jsx-runtime";
20497
20523
  function Cloud2(props) {
20498
20524
  const { isLoading, mode = "restore", cloudHandler } = props;
@@ -20513,7 +20539,7 @@ function Cloud2(props) {
20513
20539
  return availableProviders.map((p) => ({ id: p.id, name: p.name, available: p.isAvailable() }));
20514
20540
  }
20515
20541
  });
20516
- useEffect31(() => {
20542
+ useEffect32(() => {
20517
20543
  if (isCloudProvidersLoading) return;
20518
20544
  if (!!cloudProvidersError) {
20519
20545
  console.error("[KeyshareBackup] Failed to load cloud providers:", cloudProvidersError);
@@ -20753,7 +20779,7 @@ var init_methods = __esm({
20753
20779
  // src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
20754
20780
  import { useMutation as useMutation14, useQuery as useQuery12, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
20755
20781
  import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle22, CloudDownload as CloudDownload2, Loader as Loader14, UserCircle as UserCircle2 } from "lucide-react";
20756
- import { useEffect as useEffect32 } from "react";
20782
+ import { useEffect as useEffect33 } from "react";
20757
20783
  import { useDisconnect as useDisconnect4 } from "wagmi";
20758
20784
  import { Fragment as Fragment29, jsx as jsx87, jsxs as jsxs78 } from "react/jsx-runtime";
20759
20785
  var RESTORE_COMPONENTS, KeyshareRestoreMenu;
@@ -20789,7 +20815,7 @@ var init_KeyshareRestoreMenu = __esm({
20789
20815
  const error = useRestoreStore((st) => st.error);
20790
20816
  const success = useRestoreStore((st) => st.success);
20791
20817
  const currentRestoreMethod = useRestoreStore((st) => st.method);
20792
- useEffect32(() => {
20818
+ useEffect33(() => {
20793
20819
  const { setIsDialogForced } = useLayoutStore.getState();
20794
20820
  const { setRestorePassword, setRestoreFile, setShowPassword, setUsePasskey, setMethod } = useRestoreStore.getState();
20795
20821
  setIsDialogForced(true);
@@ -20828,7 +20854,7 @@ var init_KeyshareRestoreMenu = __esm({
20828
20854
  queryFn: async () => await getShareRecoveryStats()
20829
20855
  });
20830
20856
  const hasServerBackup = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
20831
- useEffect32(() => {
20857
+ useEffect33(() => {
20832
20858
  if (!!hasServerBackup) useRestoreStore.getState().setMethod("server");
20833
20859
  }, [hasServerBackup]);
20834
20860
  const { mutate: disconnect, isPending: isDisconnecting } = useMutation14({
@@ -20968,7 +20994,7 @@ var init_KeyshareRestoreMenu = __esm({
20968
20994
  // src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
20969
20995
  import { useQuery as useQuery13 } from "@tanstack/react-query";
20970
20996
  import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft14, CheckCircle2 as CheckCircle23, Loader as Loader15, LockIcon } from "lucide-react";
20971
- import { useEffect as useEffect33 } from "react";
20997
+ import { useEffect as useEffect34 } from "react";
20972
20998
  import { Fragment as Fragment30, jsx as jsx88, jsxs as jsxs79 } from "react/jsx-runtime";
20973
20999
  function KeyshareBackupMenu() {
20974
21000
  const address = useSession((st) => st.address);
@@ -20979,7 +21005,7 @@ function KeyshareBackupMenu() {
20979
21005
  const usePasskey = useRestoreStore((st) => st.usePasskey);
20980
21006
  const error = useRestoreStore((st) => st.error);
20981
21007
  const success = useRestoreStore((st) => st.success);
20982
- useEffect33(() => {
21008
+ useEffect34(() => {
20983
21009
  const { setSuccess, setError, setRestorePassword, setRestoreFile, setShowPassword, setUsePasskey, setMethod } = useRestoreStore.getState();
20984
21010
  return () => {
20985
21011
  setSuccess(null);
@@ -20999,7 +21025,7 @@ function KeyshareBackupMenu() {
20999
21025
  });
21000
21026
  useOnboardingTourAvailable(!isRecoveryLoading && currentBackupMethod === "server" && !usePasskey);
21001
21027
  const hasRecoveryData2 = serverRecoveryStatus?.created || serverRecoveryStatus?.devices?.length > 0;
21002
- useEffect33(() => {
21028
+ useEffect34(() => {
21003
21029
  if (!!hasRecoveryData2) useRestoreStore.getState().setMethod("server");
21004
21030
  }, [hasRecoveryData2]);
21005
21031
  const {
@@ -21246,7 +21272,7 @@ var init_SumsubIframeManager = __esm({
21246
21272
  });
21247
21273
 
21248
21274
  // src/internal/components/KYC/useSumsubIframe.ts
21249
- import { useEffect as useEffect34, useRef as useRef16, useState as useState21 } from "react";
21275
+ import { useEffect as useEffect35, useRef as useRef16, useState as useState21 } from "react";
21250
21276
  function useSumsubIframe({ iframeUrl }) {
21251
21277
  const config = useProviderConfig().config;
21252
21278
  const { colorMode } = useColorMode();
@@ -21256,7 +21282,7 @@ function useSumsubIframe({ iframeUrl }) {
21256
21282
  const [height, setHeight] = useState21(0);
21257
21283
  const [status, setStatus] = useState21("");
21258
21284
  const levelName = config.current?.kyc?.options?.levelName;
21259
- useEffect34(() => {
21285
+ useEffect35(() => {
21260
21286
  setError(null);
21261
21287
  setIsLoading(true);
21262
21288
  setStatus("Preparing verification...");
@@ -22758,11 +22784,11 @@ var init_useNicknameStore = __esm({
22758
22784
  // src/internal/components/NicknameMenu/useNicknameAvailability.ts
22759
22785
  import { useMutation as useMutation15 } from "@tanstack/react-query";
22760
22786
  import { debounce as debounce4 } from "lodash-es";
22761
- import { useCallback as useCallback25, useEffect as useEffect35 } from "react";
22787
+ import { useCallback as useCallback25, useEffect as useEffect36 } from "react";
22762
22788
  function useNicknameAvailability(currentNickname) {
22763
22789
  const { t } = useT();
22764
22790
  const nicknameValue = useNicknameStore((st) => st.nicknameValue);
22765
- useEffect35(() => {
22791
+ useEffect36(() => {
22766
22792
  if (!currentNickname) return;
22767
22793
  useNicknameStore.getState().setNicknameValue(currentNickname);
22768
22794
  }, [currentNickname]);
@@ -22784,7 +22810,7 @@ function useNicknameAvailability(currentNickname) {
22784
22810
  }
22785
22811
  });
22786
22812
  const debouncedCheckAvailability = useCallback25(debounce4(checkAvailability, DEBOUNCE_MS), [checkAvailability]);
22787
- useEffect35(() => {
22813
+ useEffect36(() => {
22788
22814
  if (!currentNickname) return;
22789
22815
  const normalizedInputValue = normalizeNickname(nicknameValue);
22790
22816
  const { valid: isNicknameValid } = validateNickname(nicknameValue);
@@ -22813,7 +22839,7 @@ var init_useNicknameAvailability = __esm({
22813
22839
  // src/internal/components/NicknameMenu/NicknameEditForm.tsx
22814
22840
  import { useMutation as useMutation16, useQueryClient as useQueryClient21 } from "@tanstack/react-query";
22815
22841
  import { AtSignIcon, CopyIcon as CopyIcon2, LoaderIcon as LoaderIcon12, SaveIcon } from "lucide-react";
22816
- import { useCallback as useCallback26, useEffect as useEffect36, useRef as useRef18, useState as useState23 } from "react";
22842
+ import { useCallback as useCallback26, useEffect as useEffect37, useRef as useRef18, useState as useState23 } from "react";
22817
22843
  import { Fragment as Fragment34, jsx as jsx98, jsxs as jsxs89 } from "react/jsx-runtime";
22818
22844
  function NicknameEditForm(props) {
22819
22845
  const { isInitialUser, nicknameInfo } = props;
@@ -22828,7 +22854,7 @@ function NicknameEditForm(props) {
22828
22854
  const { isCheckingAvailability } = useNicknameAvailability(nicknameInfo ? nicknameInfo.handle : "");
22829
22855
  const [isNicknameCopied, setIsNicknameCopied] = useState23(false);
22830
22856
  const exitTimerRef = useRef18(null);
22831
- useEffect36(() => () => {
22857
+ useEffect37(() => () => {
22832
22858
  if (exitTimerRef.current) clearTimeout(exitTimerRef.current);
22833
22859
  }, []);
22834
22860
  const { mutate: changeNickname2, isPending: isNicknameChanging } = useMutation16({
@@ -22992,7 +23018,7 @@ var init_NicknameEditForm = __esm({
22992
23018
  import { useQuery as useQuery19 } from "@tanstack/react-query";
22993
23019
  import dayjs5 from "dayjs";
22994
23020
  import { ArrowLeft as ArrowLeft18, Loader as Loader18 } from "lucide-react";
22995
- import { useEffect as useEffect37 } from "react";
23021
+ import { useEffect as useEffect38 } from "react";
22996
23022
  import { jsx as jsx99, jsxs as jsxs90 } from "react/jsx-runtime";
22997
23023
  function NicknameMenu() {
22998
23024
  const { isInitialUser } = usePageParams().current;
@@ -23012,7 +23038,7 @@ function NicknameMenu() {
23012
23038
  queryFn: async () => await getNicknameInfo()
23013
23039
  });
23014
23040
  const resolvedError = nicknameError || nicknameInfoError?.message || null;
23015
- useEffect37(() => () => useNicknameStore.getState().reset(), []);
23041
+ useEffect38(() => () => useNicknameStore.getState().reset(), []);
23016
23042
  return /* @__PURE__ */ jsxs90(Expandable, { isExpanded: true, contentClassName: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
23017
23043
  /* @__PURE__ */ jsxs90("div", { className: "flex items-center gap-[var(--ui-kit-gap)] ", children: [
23018
23044
  /* @__PURE__ */ jsx99(
@@ -23204,7 +23230,7 @@ var init_nickname_fingerprint = __esm({
23204
23230
  import { useQuery as useQuery20 } from "@tanstack/react-query";
23205
23231
  import { ArrowLeft as ArrowLeft19, AtSignIcon as AtSignIcon2, CheckCircle2 as CheckCircle24, Copy as Copy2, FingerprintIcon, LoaderIcon as LoaderIcon13, Wallet2Icon as Wallet2Icon4 } from "lucide-react";
23206
23232
  import QRCode from "qrcode";
23207
- import { useEffect as useEffect38, useMemo as useMemo15, useState as useState24 } from "react";
23233
+ import { useEffect as useEffect39, useMemo as useMemo15, useState as useState24 } from "react";
23208
23234
  import { Fragment as Fragment35, jsx as jsx100, jsxs as jsxs91 } from "react/jsx-runtime";
23209
23235
  function ReceiveMenu() {
23210
23236
  const { t } = useT();
@@ -23230,7 +23256,7 @@ function ReceiveMenu() {
23230
23256
  return null;
23231
23257
  }
23232
23258
  }, [session?.ownerAddress]);
23233
- useEffect38(() => {
23259
+ useEffect39(() => {
23234
23260
  if (!address) return;
23235
23261
  QRCode.toDataURL(address, {
23236
23262
  width: 200,
@@ -24032,7 +24058,7 @@ var init_utils10 = __esm({
24032
24058
  });
24033
24059
 
24034
24060
  // src/internal/components/SecurityMenu/UserPolicies/usePolicyForm.ts
24035
- import { useEffect as useEffect39, useState as useState25 } from "react";
24061
+ import { useEffect as useEffect40, useState as useState25 } from "react";
24036
24062
  import { create as create14 } from "zustand";
24037
24063
  function updateDestinations(patch) {
24038
24064
  usePolicyForm.setState((st) => ({ ...st, destinations: { ...st?.destinations, ...patch } }));
@@ -24044,7 +24070,7 @@ function useWatchFormData() {
24044
24070
  const [showFormErrors, setShowFormErrors] = useState25(false);
24045
24071
  const formData = usePolicyForm();
24046
24072
  const formState = usePolicyFormValidation();
24047
- useEffect39(() => {
24073
+ useEffect40(() => {
24048
24074
  if (!formData) return;
24049
24075
  setShowFormErrors(false);
24050
24076
  const errors = {};
@@ -24071,7 +24097,7 @@ function useWatchFormData() {
24071
24097
  }
24072
24098
  usePolicyFormValidation.setState(errors, true);
24073
24099
  }, [formData]);
24074
- useEffect39(() => () => usePolicyFormValidation.setState({}, true), []);
24100
+ useEffect40(() => () => usePolicyFormValidation.setState({}, true), []);
24075
24101
  const formErrorItem = Object.entries(formState).find(([_, value]) => value?.error);
24076
24102
  const formErrorMessage = formErrorItem ? `${formErrorItem[0].toUpperCase()}: ${formErrorItem[1]?.error}` : "";
24077
24103
  return {
@@ -24578,9 +24604,9 @@ var init_UserPolicies2 = __esm({
24578
24604
 
24579
24605
  // src/internal/components/SecurityMenu/useSecurityMenuParams.ts
24580
24606
  import { keys as keys4 } from "lodash-es";
24581
- import { useEffect as useEffect40 } from "react";
24607
+ import { useEffect as useEffect41 } from "react";
24582
24608
  function useSecurityMenuParams() {
24583
- useEffect40(() => {
24609
+ useEffect41(() => {
24584
24610
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
24585
24611
  if (!pageParams || !keys4(pageParams).length) return;
24586
24612
  const { submenu } = pageParams;
@@ -24614,7 +24640,7 @@ var init_useSecurityMenuParams = __esm({
24614
24640
 
24615
24641
  // src/internal/components/SecurityMenu/SecurityMenu.tsx
24616
24642
  import { ArrowLeft as ArrowLeft20, LayoutGridIcon, ShieldCogIcon } from "lucide-react";
24617
- import { useEffect as useEffect41 } from "react";
24643
+ import { useEffect as useEffect42 } from "react";
24618
24644
  import { Fragment as Fragment38, jsx as jsx108, jsxs as jsxs99 } from "react/jsx-runtime";
24619
24645
  function SecurityMenuContent() {
24620
24646
  const { t } = useT();
@@ -24623,7 +24649,7 @@ function SecurityMenuContent() {
24623
24649
  const { appToUntrust, showConnectedApps, showAssetsPolicies } = useSecurityStore();
24624
24650
  const policyForm = usePolicyForm();
24625
24651
  useOnboardingTourAvailable(!showConnectedApps && !showAssetsPolicies);
24626
- useEffect41(() => {
24652
+ useEffect42(() => {
24627
24653
  let securityTitle = "";
24628
24654
  switch (true) {
24629
24655
  case showConnectedApps:
@@ -24644,7 +24670,7 @@ function SecurityMenuContent() {
24644
24670
  return () => {
24645
24671
  };
24646
24672
  }, [t, showConnectedApps, showAssetsPolicies, policyForm]);
24647
- useEffect41(
24673
+ useEffect42(
24648
24674
  () => () => {
24649
24675
  usePolicyForm.setState(null, true);
24650
24676
  useSecurityStore.setState(
@@ -24940,12 +24966,12 @@ var init_SenderSelector = __esm({
24940
24966
  });
24941
24967
 
24942
24968
  // src/internal/components/SendMenu/hyperbridge/hooks/useAvailableSenders.ts
24943
- import { useEffect as useEffect42, useRef as useRef19 } from "react";
24969
+ import { useEffect as useEffect43, useRef as useRef19 } from "react";
24944
24970
  function useAvailableSenders() {
24945
24971
  const address = useSession((st) => st.address);
24946
24972
  const { profiles } = useLinkedProfiles();
24947
24973
  const lastCalcedSenders = useRef19([]);
24948
- useEffect42(() => {
24974
+ useEffect43(() => {
24949
24975
  const sendersAccumulator = [
24950
24976
  {
24951
24977
  type: "embarkai-wallet",
@@ -25648,7 +25674,7 @@ var init_useBridge = __esm({
25648
25674
 
25649
25675
  // src/internal/components/SendMenu/hyperbridge/hooks/useHyperlaneRoutes.ts
25650
25676
  import { useQuery as useQuery24 } from "@tanstack/react-query";
25651
- import { useEffect as useEffect43 } from "react";
25677
+ import { useEffect as useEffect44 } from "react";
25652
25678
  function useHyperlaneRoutes() {
25653
25679
  const address = useSession((st) => st.address);
25654
25680
  const page = useLayoutDataStore((st) => st.page);
@@ -25664,7 +25690,7 @@ function useHyperlaneRoutes() {
25664
25690
  queryKey: [HYPERLANE_WARP_ROUTES_QUERY_KEY, address],
25665
25691
  queryFn: async () => await getHyperlaneWarpRoutes()
25666
25692
  });
25667
- useEffect43(() => {
25693
+ useEffect44(() => {
25668
25694
  if (!errorWarpRoutes) return;
25669
25695
  useFlowSelectorStore.getState().setError(errorWarpRoutes.message);
25670
25696
  const { resetSelections, setRecipient, setOriginChain, setDestinationChain } = useBridgeStore.getState();
@@ -25673,7 +25699,7 @@ function useHyperlaneRoutes() {
25673
25699
  setOriginChain(null);
25674
25700
  setDestinationChain(null);
25675
25701
  }, [errorWarpRoutes]);
25676
- useEffect43(() => {
25702
+ useEffect44(() => {
25677
25703
  if (!!hyperRoute || !hyperlaneWarpRoutes.length) return;
25678
25704
  let targetHyperRouteToSelect = hyperlaneWarpRoutes.find((route) => route.routeId === hyperRoute);
25679
25705
  if (!targetHyperRouteToSelect) {
@@ -25712,13 +25738,13 @@ var init_useHyperlaneRoutes = __esm({
25712
25738
  });
25713
25739
 
25714
25740
  // src/internal/components/SendMenu/hyperbridge/hooks/useMenuTitle.ts
25715
- import { useEffect as useEffect44 } from "react";
25741
+ import { useEffect as useEffect45 } from "react";
25716
25742
  function useMenuTitle(warpRoutes) {
25717
25743
  const { t } = useT();
25718
25744
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
25719
25745
  const hyperRoute = useBridgeStore((st) => st.hyperRoute);
25720
25746
  const hyperRouteMeta = warpRoutes?.length ? warpRoutes.find((route) => route.routeId === hyperRoute) : null;
25721
- useEffect44(() => {
25747
+ useEffect45(() => {
25722
25748
  const updateMenuTitle = useFlowSelectorStore.getState().setMenuTitle;
25723
25749
  switch (true) {
25724
25750
  case bridgeStep === "sender-selector":
@@ -25912,7 +25938,7 @@ var init_ResolveChainIcon = __esm({
25912
25938
  // src/internal/components/SendMenu/hyperbridge/hooks/useBridgeBalance.ts
25913
25939
  import { CHAINS_BROWSERS_TRANSPORTS as CHAINS_BROWSERS_TRANSPORTS2 } from "@embarkai/core";
25914
25940
  import { useQuery as useQuery25, useQueryClient as useQueryClient26 } from "@tanstack/react-query";
25915
- import { useCallback as useCallback29, useEffect as useEffect45 } from "react";
25941
+ import { useCallback as useCallback29, useEffect as useEffect46 } from "react";
25916
25942
  import { createPublicClient as createPublicClient2, erc20Abi as erc20Abi3, formatUnits as formatUnits9, http as http3 } from "viem";
25917
25943
  import { useSwitchChain as useSwitchChain3 } from "wagmi";
25918
25944
  function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
@@ -26018,7 +26044,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26018
26044
  },
26019
26045
  [refreshBalances, qc]
26020
26046
  );
26021
- useEffect45(() => {
26047
+ useEffect46(() => {
26022
26048
  if (!!isLoadingWarpRoutes || !bridgeSender || !originChain) return;
26023
26049
  switch (bridgeSender) {
26024
26050
  case "embarkai-wallet":
@@ -26981,7 +27007,7 @@ var init_steps = __esm({
26981
27007
  });
26982
27008
 
26983
27009
  // src/internal/components/SendMenu/hyperbridge/HyperlaneBridge.tsx
26984
- import { useEffect as useEffect46 } from "react";
27010
+ import { useEffect as useEffect47 } from "react";
26985
27011
  import { jsx as jsx117, jsxs as jsxs106 } from "react/jsx-runtime";
26986
27012
  function HyperlaneBridge() {
26987
27013
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
@@ -26989,7 +27015,7 @@ function HyperlaneBridge() {
26989
27015
  const { hyperlaneWarpRoutes, isLoadingWarpRoutes } = useHyperlaneRoutes();
26990
27016
  const { directWalletProfiles } = useAvailableSenders();
26991
27017
  useMenuTitle(hyperlaneWarpRoutes);
26992
- useEffect46(() => {
27018
+ useEffect47(() => {
26993
27019
  return () => {
26994
27020
  useBridgeStore.getState().resetSelections();
26995
27021
  };
@@ -27144,7 +27170,7 @@ var init_useErc3643Compliance = __esm({
27144
27170
 
27145
27171
  // src/hooks/useNicknameResolve.ts
27146
27172
  import { useQuery as useQuery26 } from "@tanstack/react-query";
27147
- import { useEffect as useEffect47, useMemo as useMemo18, useState as useState29 } from "react";
27173
+ import { useEffect as useEffect48, useMemo as useMemo18, useState as useState29 } from "react";
27148
27174
  function looksLikeNickname(input) {
27149
27175
  if (!input) return false;
27150
27176
  if (input.startsWith("0x")) return false;
@@ -27158,7 +27184,7 @@ function useNicknameResolve(input, options) {
27158
27184
  const [isDebouncing, setIsDebouncing] = useState29(false);
27159
27185
  const normalized = normalizeNickname(input);
27160
27186
  const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
27161
- useEffect47(() => {
27187
+ useEffect48(() => {
27162
27188
  if (!isNicknameInput || !enabled) {
27163
27189
  setDebouncedInput("");
27164
27190
  setIsDebouncing(false);
@@ -27626,7 +27652,7 @@ var init_AssetList = __esm({
27626
27652
 
27627
27653
  // src/internal/components/SendMenu/send/components/NicknameData.tsx
27628
27654
  import { AtSign, CheckCircle2 as CheckCircle25, ShieldAlert, ShieldCheck as ShieldCheck2 } from "lucide-react";
27629
- import { useEffect as useEffect48 } from "react";
27655
+ import { useEffect as useEffect49 } from "react";
27630
27656
  import { jsx as jsx122, jsxs as jsxs110 } from "react/jsx-runtime";
27631
27657
  function NicknameData(props) {
27632
27658
  const { resolvedNicknameData, isNicknameInput } = props;
@@ -27639,7 +27665,7 @@ function NicknameData(props) {
27639
27665
  isWalletNotSetup,
27640
27666
  isFrozen
27641
27667
  } = resolvedNicknameData;
27642
- useEffect48(() => {
27668
+ useEffect49(() => {
27643
27669
  if (isResolving) return;
27644
27670
  let errMessage = null;
27645
27671
  switch (true) {
@@ -28208,7 +28234,7 @@ var init_sendSteps = __esm({
28208
28234
 
28209
28235
  // src/internal/components/SendMenu/send/SendMenu.tsx
28210
28236
  import { CheckCircle2 as CheckCircle27, Loader as Loader28 } from "lucide-react";
28211
- import { useEffect as useEffect49, useMemo as useMemo19 } from "react";
28237
+ import { useEffect as useEffect50, useMemo as useMemo19 } from "react";
28212
28238
  import { parseUnits as parseUnits2 } from "viem";
28213
28239
  import { Fragment as Fragment44, jsx as jsx125, jsxs as jsxs113 } from "react/jsx-runtime";
28214
28240
  function SendMenu() {
@@ -28229,16 +28255,16 @@ function SendMenu() {
28229
28255
  userOpHash,
28230
28256
  reset
28231
28257
  } = useSendTransaction();
28232
- useEffect49(() => {
28258
+ useEffect50(() => {
28233
28259
  useFlowSelectorStore.getState().setIsUiLocked(isAssetsLoading || isTransactionPending);
28234
28260
  }, [isAssetsLoading, isTransactionPending]);
28235
- useEffect49(() => {
28261
+ useEffect50(() => {
28236
28262
  useFlowSelectorStore.getState().setError(sendTransactionError || null);
28237
28263
  }, [sendTransactionError]);
28238
28264
  const { txStep, recipient, amount, selectedAsset, setSelectedAsset } = useSendStore();
28239
28265
  const isNft = isNftAsset3(selectedAsset);
28240
28266
  const isSecurity = isSecurityToken2(selectedAsset);
28241
- useEffect49(() => {
28267
+ useEffect50(() => {
28242
28268
  const shouldDefaultAsset = assets.length > 0 && !selectedAsset;
28243
28269
  if (!shouldDefaultAsset) return;
28244
28270
  const chainNativeCurrency = useSession.getState().chainConfig?.nativeCurrency;
@@ -28248,7 +28274,7 @@ function SendMenu() {
28248
28274
  if (isBalance(erc20)) return setSelectedAsset(erc20);
28249
28275
  setSelectedAsset(assets[0]);
28250
28276
  }, [assets, selectedAsset]);
28251
- useEffect49(
28277
+ useEffect50(
28252
28278
  () => () => {
28253
28279
  useSendStore.getState().reset();
28254
28280
  reset();
@@ -28273,7 +28299,7 @@ function SendMenu() {
28273
28299
  enabled: isSecurity && !!effectiveAddress && !!complianceAmount,
28274
28300
  chainId: activeChainId
28275
28301
  });
28276
- useEffect49(() => {
28302
+ useEffect50(() => {
28277
28303
  const updateMenuTitle = useFlowSelectorStore.getState().setMenuTitle;
28278
28304
  switch (true) {
28279
28305
  case txStep === "select-asset":
@@ -28372,10 +28398,10 @@ var init_send = __esm({
28372
28398
 
28373
28399
  // src/internal/components/SendMenu/useSendMenuParams.ts
28374
28400
  import { keys as keys5 } from "lodash-es";
28375
- import { useEffect as useEffect50 } from "react";
28401
+ import { useEffect as useEffect51 } from "react";
28376
28402
  function useSendMenuParams() {
28377
28403
  const { config } = useProviderConfig();
28378
- useEffect50(() => {
28404
+ useEffect51(() => {
28379
28405
  const { pageParams, setPageParams } = useLayoutDataStore.getState();
28380
28406
  if (!pageParams || !keys5(pageParams).length) return;
28381
28407
  const { sendFlow, send, bridge } = pageParams || {};
@@ -28440,7 +28466,7 @@ var init_useSendMenuParams = __esm({
28440
28466
 
28441
28467
  // src/internal/components/SendMenu/SendFlowSelector.tsx
28442
28468
  import { ArrowLeft as ArrowLeft21, ArrowRightIcon as ArrowRightIcon2, ArrowRightLeftIcon as ArrowRightLeftIcon3 } from "lucide-react";
28443
- import { useEffect as useEffect51, useMemo as useMemo20 } from "react";
28469
+ import { useEffect as useEffect52, useMemo as useMemo20 } from "react";
28444
28470
  import { jsx as jsx126, jsxs as jsxs114 } from "react/jsx-runtime";
28445
28471
  function SelectorFlowButtons() {
28446
28472
  const { t } = useT();
@@ -28501,13 +28527,13 @@ function SendFlowSelector() {
28501
28527
  const sendStep = useSendStore((st) => st.txStep);
28502
28528
  const bridgeStep = useBridgeStore((st) => st.bridgeStep);
28503
28529
  useOnboardingTourAvailable(sendStep === "input" && bridgeStep === "select");
28504
- useEffect51(
28530
+ useEffect52(
28505
28531
  () => () => {
28506
28532
  useFlowSelectorStore.getState().setError(null);
28507
28533
  },
28508
28534
  []
28509
28535
  );
28510
- useEffect51(() => {
28536
+ useEffect52(() => {
28511
28537
  if (!!config?.current?.features?.showAssetBridge) return;
28512
28538
  if (selectorFlow === "bridge") useFlowSelectorStore.getState().setFlow("send");
28513
28539
  }, [selectorFlow]);
@@ -29852,7 +29878,7 @@ var init_PageMap = __esm({
29852
29878
  });
29853
29879
 
29854
29880
  // src/internal/hooks/usePageMapper.tsx
29855
- import { useCallback as useCallback32, useEffect as useEffect52 } from "react";
29881
+ import { useCallback as useCallback32, useEffect as useEffect53 } from "react";
29856
29882
  import { jsx as jsx130 } from "react/jsx-runtime";
29857
29883
  function usePageMapper() {
29858
29884
  const page = useLayoutDataStore((st) => st.page);
@@ -29875,7 +29901,7 @@ function usePageMapper() {
29875
29901
  // isDialogAnimating: true
29876
29902
  });
29877
29903
  }, []);
29878
- useEffect52(() => {
29904
+ useEffect53(() => {
29879
29905
  if (page === null) return closeDialog();
29880
29906
  const pageItem = PAGE_MAP[page];
29881
29907
  if (!pageItem) {
@@ -29898,20 +29924,20 @@ var init_usePageMapper = __esm({
29898
29924
  });
29899
29925
 
29900
29926
  // src/internal/hooks/useSettingsNotifications.ts
29901
- import { useEffect as useEffect53 } from "react";
29927
+ import { useEffect as useEffect54 } from "react";
29902
29928
  function useSettingsNotifications() {
29903
29929
  const setSettingsNotifications = useLayoutDataStore((st) => st.setSettingsNotifications);
29904
29930
  const providers = jwtTokenManager2.getProviders();
29905
29931
  const hasEmail = providers.includes("email");
29906
29932
  const { data: userProfile = null } = useUserProfile();
29907
- useEffect53(() => {
29933
+ useEffect54(() => {
29908
29934
  const isKYCVerified = userProfile?.kycDetails?.kycStatus === "verified";
29909
29935
  setSettingsNotifications({
29910
29936
  ...COMPLETE_KYC_PROGRESS,
29911
29937
  status: isKYCVerified ? "resolved" : "active"
29912
29938
  });
29913
29939
  }, [userProfile, setSettingsNotifications]);
29914
- useEffect53(() => {
29940
+ useEffect54(() => {
29915
29941
  setSettingsNotifications({
29916
29942
  ...EMAIL_NOT_CONNECTED_NOTIFICATION,
29917
29943
  status: hasEmail ? "resolved" : "active"
@@ -29943,7 +29969,7 @@ var init_package = __esm({
29943
29969
  "package.json"() {
29944
29970
  package_default = {
29945
29971
  name: "@embarkai/ui-kit",
29946
- version: "0.4.109",
29972
+ version: "0.4.110",
29947
29973
  description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
29948
29974
  type: "module",
29949
29975
  main: "./dist/index.cjs",
@@ -30604,7 +30630,7 @@ var init_visually_hidden = __esm({
30604
30630
 
30605
30631
  // src/internal/components/Dialog/Dialog.tsx
30606
30632
  import { AnimatePresence, motion } from "motion/react";
30607
- import { useEffect as useEffect54 } from "react";
30633
+ import { useEffect as useEffect55 } from "react";
30608
30634
  import { jsx as jsx135, jsxs as jsxs121 } from "react/jsx-runtime";
30609
30635
  function Dialog2() {
30610
30636
  const config = useProviderConfig().config;
@@ -30614,13 +30640,14 @@ function Dialog2() {
30614
30640
  const { colorMode, maxScrollHeight, isDialogOpen, dialogContent, isDialogForced } = useLayoutStore();
30615
30641
  const page = useLayoutDataStore((st) => st.page);
30616
30642
  const transitionPageHeight = useLayoutDataStore((st) => st.transitionPageHeight);
30617
- useEffect54(() => useLayoutStore.setState({ isSettings: !!session }), [session]);
30643
+ useEffect55(() => useLayoutStore.setState({ isSettings: !!session }), [session]);
30618
30644
  usePageMapper();
30619
30645
  useAutoConnect();
30620
30646
  useBackupStatusChanges();
30621
30647
  useDetectMaxScrollHeight();
30622
30648
  useSettingsNotifications();
30623
30649
  useListenIframeAuthEvents();
30650
+ useAllowExternalModalsScroll(isDialogOpen);
30624
30651
  const isHeaderHidden = !session || page === "keysare-backup" /* KEYSARE_BACKUP */ && !hasServerVault;
30625
30652
  return /* @__PURE__ */ jsx135(
30626
30653
  Dialog,
@@ -30679,6 +30706,7 @@ var init_Dialog = __esm({
30679
30706
  init_ProviderContext();
30680
30707
  init_SessionContext();
30681
30708
  init_constants();
30709
+ init_useAllowExternalModalsScroll();
30682
30710
  init_useAutoConnect();
30683
30711
  init_useBackupStatusChanges();
30684
30712
  init_useDetectMaxScrollHeight();
@@ -30703,19 +30731,19 @@ var init_Dialog2 = __esm({
30703
30731
  });
30704
30732
 
30705
30733
  // src/internal/components/DirectWalletHandler.tsx
30706
- import { useEffect as useEffect55 } from "react";
30734
+ import { useEffect as useEffect56 } from "react";
30707
30735
  import { useConnection } from "wagmi";
30708
30736
  function DirectWalletHandler() {
30709
30737
  const walletMode = useProviderConfig().config.current?.wallet?.mode || "both";
30710
30738
  const externalAddress = useExternalWalletStore((st) => st.externalAddress);
30711
30739
  const isExternalConnected = useExternalWalletStore((st) => st.isExternalConnected);
30712
30740
  const { address, isConnected, chain, connector } = useConnection();
30713
- useEffect55(() => {
30741
+ useEffect56(() => {
30714
30742
  const { setConfigMode, setActiveMode } = useExternalWalletStore.getState();
30715
30743
  setConfigMode(walletMode);
30716
30744
  if (walletMode !== "both") setActiveMode(walletMode);
30717
30745
  }, [walletMode]);
30718
- useEffect55(() => {
30746
+ useEffect56(() => {
30719
30747
  if ((!!externalAddress || isExternalConnected) && !isConnected) {
30720
30748
  useExternalWalletStore.getState().clearExternalWallet();
30721
30749
  return;
@@ -33299,7 +33327,7 @@ import {
33299
33327
  createContext,
33300
33328
  useCallback as useCallback35,
33301
33329
  useContext,
33302
- useEffect as useEffect56,
33330
+ useEffect as useEffect57,
33303
33331
  useMemo as useMemo21,
33304
33332
  useRef as useRef22
33305
33333
  } from "react";
@@ -33323,7 +33351,7 @@ function clearLegacyWagmiStorage() {
33323
33351
  function Provider(props) {
33324
33352
  const { children, projectId, initialConfig = {}, callbacks } = props;
33325
33353
  const callbacksRef = useRef22(callbacks);
33326
- useEffect56(() => notifyNoProjetctId(projectId), [projectId]);
33354
+ useEffect57(() => notifyNoProjetctId(projectId), [projectId]);
33327
33355
  const config = useRef22(merge3({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
33328
33356
  const wagmiConfig3 = useRef22(getWagmiConfig(config.current?.wallet?.walletConnectId || null));
33329
33357
  const updateConfig = useCallback35((updates) => {
@@ -33365,7 +33393,7 @@ function Provider(props) {
33365
33393
  const next = updates ? { ...prev, ...updates } : void 0;
33366
33394
  callbacksRef.current = next;
33367
33395
  }, []);
33368
- useEffect56(() => {
33396
+ useEffect57(() => {
33369
33397
  if (typeof window === "undefined" || !projectId) return;
33370
33398
  const mergedConfig = merge3(DEFAULT_PROVIDER_CONFIG, initialConfig);
33371
33399
  updateConfig(mergedConfig);
@@ -33385,7 +33413,7 @@ function Provider(props) {
33385
33413
  useSession.getState().setActiveChainId(mergedConfig.network.chainId);
33386
33414
  }
33387
33415
  }, [projectId, initialConfig]);
33388
- useEffect56(() => {
33416
+ useEffect57(() => {
33389
33417
  if (typeof window === "undefined" || !projectId) return;
33390
33418
  try {
33391
33419
  initSdkErrorTracking();
@@ -33465,7 +33493,7 @@ init_useUserProfile();
33465
33493
  init_pro_mode();
33466
33494
  init_utils();
33467
33495
  import { Cloud as Cloud4, Laptop as Laptop2, Loader as Loader32, Shield as Shield2 } from "lucide-react";
33468
- import { useEffect as useEffect57, useMemo as useMemo22 } from "react";
33496
+ import { useEffect as useEffect58, useMemo as useMemo22 } from "react";
33469
33497
  import { Fragment as Fragment48, jsx as jsx138, jsxs as jsxs123 } from "react/jsx-runtime";
33470
33498
  function getFormattedStatus(label, status, showStatus) {
33471
33499
  const isStatus = showStatus && status && status !== "idle" && status !== "ready";
@@ -33485,7 +33513,7 @@ function ConnectWalletButton(props) {
33485
33513
  const colorMode = useLayoutStore((st) => st.colorMode);
33486
33514
  const { session, address, hasServerVault, isLoading, isIframeReady, status, setUsePaymaster } = useSession();
33487
33515
  const connectButtonLabel = getFormattedStatus(label || "Connect", status, isIframeReady);
33488
- useEffect57(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
33516
+ useEffect58(() => setUsePaymaster(usePaymaster), [setUsePaymaster, usePaymaster]);
33489
33517
  const { data: profile, isLoading: isProfileLoading } = useUserProfile();
33490
33518
  const displayName = profile?.nicknameDisplay || profile?.displayName || jwtTokenManager2.getDisplayName();
33491
33519
  const indicators = useMemo22(() => {
@@ -34131,13 +34159,13 @@ var Hash = ({
34131
34159
 
34132
34160
  // src/internal/components/TransactionsMenu/TransactionsList.tsx
34133
34161
  init_base3();
34134
- import { useEffect as useEffect59, useState as useState37 } from "react";
34162
+ import { useEffect as useEffect60, useState as useState37 } from "react";
34135
34163
  import { jsx as jsx144, jsxs as jsxs127 } from "react/jsx-runtime";
34136
34164
  var TransactionsList = ({ address, itemsCount = 10 }) => {
34137
34165
  const [transactions, setTransactions] = useState37([]);
34138
34166
  const [loading, setLoading] = useState37(true);
34139
34167
  const [error, setError] = useState37(null);
34140
- useEffect59(() => {
34168
+ useEffect60(() => {
34141
34169
  const fetchTransactions2 = async () => {
34142
34170
  try {
34143
34171
  setLoading(true);