@embarkai/ui-kit 0.4.115 → 0.4.117

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.d.cts CHANGED
@@ -1648,7 +1648,7 @@ interface AuthProvider {
1648
1648
  meta?: AuthProviderMeta;
1649
1649
  }
1650
1650
 
1651
- declare function fetchProjectName(projectId: string): Promise<string>;
1651
+ declare function fetchProjectName(projectId: string, attempts?: number): Promise<string>;
1652
1652
 
1653
1653
  declare function useNativeWalletSignature(): {
1654
1654
  signMessage: wagmi.UseSignMessageReturnType<unknown>;
@@ -2740,6 +2740,7 @@ declare const PASSPORT_TRANSLATIONS: {
2740
2740
  connectWallet: string;
2741
2741
  noWallets: string;
2742
2742
  requestPending: string;
2743
+ projectInfoUnavailable: string;
2743
2744
  instructions: {
2744
2745
  follow: string;
2745
2746
  confirm: string;
@@ -3328,6 +3329,7 @@ declare const PASSPORT_TRANSLATIONS: {
3328
3329
  connectWallet: string;
3329
3330
  noWallets: string;
3330
3331
  requestPending: string;
3332
+ projectInfoUnavailable: string;
3331
3333
  instructions: {
3332
3334
  follow: string;
3333
3335
  confirm: string;
@@ -3916,6 +3918,7 @@ declare const PASSPORT_TRANSLATIONS: {
3916
3918
  connectWallet: string;
3917
3919
  noWallets: string;
3918
3920
  requestPending: string;
3921
+ projectInfoUnavailable: string;
3919
3922
  instructions: {
3920
3923
  follow: string;
3921
3924
  confirm: string;
package/dist/index.d.ts CHANGED
@@ -1648,7 +1648,7 @@ interface AuthProvider {
1648
1648
  meta?: AuthProviderMeta;
1649
1649
  }
1650
1650
 
1651
- declare function fetchProjectName(projectId: string): Promise<string>;
1651
+ declare function fetchProjectName(projectId: string, attempts?: number): Promise<string>;
1652
1652
 
1653
1653
  declare function useNativeWalletSignature(): {
1654
1654
  signMessage: wagmi.UseSignMessageReturnType<unknown>;
@@ -2740,6 +2740,7 @@ declare const PASSPORT_TRANSLATIONS: {
2740
2740
  connectWallet: string;
2741
2741
  noWallets: string;
2742
2742
  requestPending: string;
2743
+ projectInfoUnavailable: string;
2743
2744
  instructions: {
2744
2745
  follow: string;
2745
2746
  confirm: string;
@@ -3328,6 +3329,7 @@ declare const PASSPORT_TRANSLATIONS: {
3328
3329
  connectWallet: string;
3329
3330
  noWallets: string;
3330
3331
  requestPending: string;
3332
+ projectInfoUnavailable: string;
3331
3333
  instructions: {
3332
3334
  follow: string;
3333
3335
  confirm: string;
@@ -3916,6 +3918,7 @@ declare const PASSPORT_TRANSLATIONS: {
3916
3918
  connectWallet: string;
3917
3919
  noWallets: string;
3918
3920
  requestPending: string;
3921
+ projectInfoUnavailable: string;
3919
3922
  instructions: {
3920
3923
  follow: string;
3921
3924
  confirm: string;
package/dist/index.js CHANGED
@@ -7581,6 +7581,7 @@ var init_en = __esm({
7581
7581
  connectWallet: "Connect Wallet Profile",
7582
7582
  noWallets: "No wallets available to connect",
7583
7583
  requestPending: "{{wallet}} already has a pending request from this site. Open {{wallet}}, reject or close that request, then try again.",
7584
+ projectInfoUnavailable: "Could not load the app details needed to sign in. Check your connection and try again.",
7584
7585
  instructions: {
7585
7586
  follow: "Watch your connecting wallet app.\nYou will be asked to:\n {{steps}}",
7586
7587
  confirm: "- 1. Confirm your wallet connection into embarkAI",
@@ -8174,6 +8175,7 @@ var init_ru = __esm({
8174
8175
  connectWallet: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C \u043F\u0440\u043E\u0444\u0438\u043B\u044C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430",
8175
8176
  noWallets: "\u041D\u0435\u0442 \u0434\u043E\u0441\u0442\u0443\u043F\u043D\u044B\u0445 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u043E\u0432 \u0434\u043B\u044F \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u044F",
8176
8177
  requestPending: "\u0412 {{wallet}} \u0443\u0436\u0435 \u0432\u0438\u0441\u0438\u0442 \u0437\u0430\u043F\u0440\u043E\u0441 \u043E\u0442 \u044D\u0442\u043E\u0433\u043E \u0441\u0430\u0439\u0442\u0430. \u041E\u0442\u043A\u0440\u043E\u0439\u0442\u0435 {{wallet}}, \u043E\u0442\u043A\u043B\u043E\u043D\u0438\u0442\u0435 \u0438\u043B\u0438 \u0437\u0430\u043A\u0440\u043E\u0439\u0442\u0435 \u044D\u0442\u043E\u0442 \u0437\u0430\u043F\u0440\u043E\u0441 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
8178
+ projectInfoUnavailable: "\u041D\u0435 \u0443\u0434\u0430\u043B\u043E\u0441\u044C \u0437\u0430\u0433\u0440\u0443\u0437\u0438\u0442\u044C \u0434\u0430\u043D\u043D\u044B\u0435 \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u044F \u0434\u043B\u044F \u0432\u0445\u043E\u0434\u0430. \u041F\u0440\u043E\u0432\u0435\u0440\u044C\u0442\u0435 \u0441\u043E\u0435\u0434\u0438\u043D\u0435\u043D\u0438\u0435 \u0438 \u043F\u043E\u043F\u0440\u043E\u0431\u0443\u0439\u0442\u0435 \u0441\u043D\u043E\u0432\u0430.",
8177
8179
  instructions: {
8178
8180
  follow: "\u0421\u043B\u0435\u0434\u0438\u0442\u0435 \u0437\u0430 \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0430\u0435\u043C\u044B\u043C \u043F\u0440\u0438\u043B\u043E\u0436\u0435\u043D\u0438\u0435\u043C \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430.\n\u0412\u0430\u043C \u0431\u0443\u0434\u0435\u0442 \u043F\u0440\u0435\u0434\u043B\u043E\u0436\u0435\u043D\u043E:\n {{steps}}",
8179
8181
  confirm: "- 1. \u041F\u043E\u0434\u0442\u0432\u0435\u0440\u0434\u0438\u0442\u044C \u043F\u043E\u0434\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u043A\u043E\u0448\u0435\u043B\u044C\u043A\u0430 \u043A embarkAI",
@@ -8767,6 +8769,7 @@ var init_zh = __esm({
8767
8769
  connectWallet: "\u8FDE\u63A5\u94B1\u5305\u914D\u7F6E\u6587\u4EF6",
8768
8770
  noWallets: "\u6CA1\u6709\u53EF\u8FDE\u63A5\u7684\u94B1\u5305",
8769
8771
  requestPending: "{{wallet}} \u4E2D\u5DF2\u6709\u6765\u81EA\u672C\u7F51\u7AD9\u7684\u5F85\u5904\u7406\u8BF7\u6C42\u3002\u8BF7\u6253\u5F00 {{wallet}}\uFF0C\u62D2\u7EDD\u6216\u5173\u95ED\u8BE5\u8BF7\u6C42\uFF0C\u7136\u540E\u91CD\u8BD5\u3002",
8772
+ projectInfoUnavailable: "\u65E0\u6CD5\u52A0\u8F7D\u767B\u5F55\u6240\u9700\u7684\u5E94\u7528\u4FE1\u606F\u3002\u8BF7\u68C0\u67E5\u7F51\u7EDC\u8FDE\u63A5\u540E\u91CD\u8BD5\u3002",
8770
8773
  instructions: {
8771
8774
  follow: "\u8BF7\u67E5\u770B\u60A8\u6B63\u5728\u8FDE\u63A5\u7684\u94B1\u5305\u5E94\u7528\u3002\n\u60A8\u5C06\u88AB\u8981\u6C42\uFF1A\n {{steps}}",
8772
8775
  confirm: "- 1. \u786E\u8BA4\u5C06\u60A8\u7684\u94B1\u5305\u8FDE\u63A5\u5230 embarkAI",
@@ -15943,20 +15946,27 @@ async function unlinkWallet(address) {
15943
15946
  throw new Error(errorData.message || `Failed to unlink wallet: ${response.statusText}`);
15944
15947
  }
15945
15948
  }
15946
- async function fetchProjectName(projectId) {
15947
- const now = Date.now();
15948
- if (metadataCache && now - metadataCache.timestamp < METADATA_CACHE_TTL) {
15949
+ async function requestProjectName(projectId) {
15950
+ const response = await fetch(`${METADATA_API_URL}/${projectId}/metadata`);
15951
+ if (!response.ok) throw new Error(`Project metadata request failed with status ${response.status}`);
15952
+ const metadata = await response.json();
15953
+ if (!metadata?.name) throw new Error("Project metadata has no name");
15954
+ metadataCache = { data: metadata, timestamp: Date.now() };
15955
+ return metadata.name;
15956
+ }
15957
+ async function fetchProjectName(projectId, attempts = 2) {
15958
+ if (metadataCache && Date.now() - metadataCache.timestamp < METADATA_CACHE_TTL) {
15949
15959
  return metadataCache.data.name;
15950
15960
  }
15951
- try {
15952
- const response = await fetch(`${METADATA_API_URL}/${projectId}/metadata`);
15953
- if (!response.ok) return "EmbarkAI";
15954
- const metadata = await response.json();
15955
- metadataCache = { data: metadata, timestamp: now };
15956
- return metadata.name;
15957
- } catch {
15958
- return "EmbarkAI";
15961
+ let lastError;
15962
+ for (let attempt = 0; attempt < attempts; attempt++) {
15963
+ try {
15964
+ return await requestProjectName(projectId);
15965
+ } catch (error) {
15966
+ lastError = error;
15967
+ }
15959
15968
  }
15969
+ throw lastError;
15960
15970
  }
15961
15971
  function createSignatureMessage(address, projectName, nonce) {
15962
15972
  const timestamp = Date.now();
@@ -17385,8 +17395,65 @@ var init_useHasInjectedWallet = __esm({
17385
17395
  }
17386
17396
  });
17387
17397
 
17398
+ // src/internal/components/ConnectExternalWalletMenu/walletProviders.ts
17399
+ function isConnectorAllowedByProject(connector, walletProviders) {
17400
+ if (!walletProviders) return true;
17401
+ const connectorId = connector.id.toLowerCase();
17402
+ return walletProviders.some((provider) => {
17403
+ const id = provider.toLowerCase();
17404
+ if (id === OTHER_BROWSER_WALLETS) return !KNOWN_CONNECTOR_IDS.has(connectorId);
17405
+ return PROVIDER_CONNECTOR_IDS[id]?.includes(connectorId) ?? false;
17406
+ });
17407
+ }
17408
+ function parseWalletProviders(metadata) {
17409
+ const value = metadata?.walletProviders;
17410
+ return Array.isArray(value) ? value.filter((item) => typeof item === "string") : null;
17411
+ }
17412
+ var PROVIDER_CONNECTOR_IDS, OTHER_BROWSER_WALLETS, KNOWN_CONNECTOR_IDS;
17413
+ var init_walletProviders = __esm({
17414
+ "src/internal/components/ConnectExternalWalletMenu/walletProviders.ts"() {
17415
+ PROVIDER_CONNECTOR_IDS = {
17416
+ metamask: ["metamasksdk", "metamask", "io.metamask", "io.metamask.flask", "io.metamask.mobile"],
17417
+ walletconnect: ["walletconnect"],
17418
+ coinbase: ["coinbasewalletsdk", "coinbasewallet", "com.coinbase.wallet"],
17419
+ phantom: ["app.phantom"],
17420
+ trust: ["com.trustwallet.app"],
17421
+ rabby: ["io.rabby"]
17422
+ };
17423
+ OTHER_BROWSER_WALLETS = "injected";
17424
+ KNOWN_CONNECTOR_IDS = new Set(Object.values(PROVIDER_CONNECTOR_IDS).flat());
17425
+ }
17426
+ });
17427
+
17428
+ // src/internal/components/ConnectExternalWalletMenu/useProjectWalletProviders.ts
17429
+ import { useQuery as useQuery9 } from "@tanstack/react-query";
17430
+ async function fetchProjectWalletProviders(projectId) {
17431
+ const dashboardUrl = (getServiceUrls().dashboardUrl || DEFAULT_DASHBOARD_URL).replace(/\/+$/, "");
17432
+ const response = await fetch(`${dashboardUrl}/api/public/project/${encodeURIComponent(projectId)}/metadata`);
17433
+ if (!response.ok) throw new Error(`Project metadata request failed with status ${response.status}`);
17434
+ return parseWalletProviders(await response.json());
17435
+ }
17436
+ function useProjectWalletProviders(projectId) {
17437
+ const query = useQuery9({
17438
+ queryKey: ["embarkai", "project-wallet-providers", projectId],
17439
+ queryFn: () => fetchProjectWalletProviders(projectId),
17440
+ enabled: !!projectId,
17441
+ staleTime: 6e4,
17442
+ retry: 1
17443
+ });
17444
+ return { walletProviders: query.data ?? null, isLoading: query.isLoading };
17445
+ }
17446
+ var DEFAULT_DASHBOARD_URL;
17447
+ var init_useProjectWalletProviders = __esm({
17448
+ "src/internal/components/ConnectExternalWalletMenu/useProjectWalletProviders.ts"() {
17449
+ init_initial();
17450
+ init_walletProviders();
17451
+ DEFAULT_DASHBOARD_URL = "https://dashboard.embarkai.io";
17452
+ }
17453
+ });
17454
+
17388
17455
  // src/internal/components/ConnectExternalWalletMenu/ConnectExternalWalletMenu.tsx
17389
- import { useMutation as useMutation10, useQuery as useQuery9, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
17456
+ import { useMutation as useMutation10, useQuery as useQuery10, useQueryClient as useQueryClient14 } from "@tanstack/react-query";
17390
17457
  import { ArrowLeft as ArrowLeft8, Loader as Loader11, Wallet2Icon as Wallet2Icon2 } from "lucide-react";
17391
17458
  import { useCallback as useCallback18, useMemo as useMemo9, useState as useState14 } from "react";
17392
17459
  import {
@@ -17417,6 +17484,7 @@ function ConnectExternalWalletMenu() {
17417
17484
  const menuParams = useConnectExternalWalletMenuParams();
17418
17485
  const connectors = useConnectors();
17419
17486
  const hasInjectedWallet2 = useHasInjectedWallet();
17487
+ const { walletProviders, isLoading: isLoadingWalletProviders } = useProjectWalletProviders(config.current?.projectId);
17420
17488
  const wagmiConfig3 = useConfig2();
17421
17489
  const chains = useChains();
17422
17490
  const connections = useConnections2();
@@ -17445,7 +17513,7 @@ function ConnectExternalWalletMenu() {
17445
17513
  }
17446
17514
  };
17447
17515
  const walletMenuOpenedFrom = useLayoutDataStore((st) => st.walletMenuOpenedFrom);
17448
- const { data: providers = [] } = useQuery9({
17516
+ const { data: providers = [] } = useQuery10({
17449
17517
  retry: false,
17450
17518
  enabled: !!embarkAiAddress,
17451
17519
  queryKey: [PROVIDERS_QUERY_KEY, embarkAiAddress],
@@ -17548,7 +17616,9 @@ function ConnectExternalWalletMenu() {
17548
17616
  return;
17549
17617
  }
17550
17618
  const projectId = config.current?.projectId;
17551
- const projectName = projectId ? await fetchProjectName(projectId) : "EmbarkAI";
17619
+ const projectName = projectId ? await fetchProjectName(projectId).catch(() => {
17620
+ throw new Error(t("passport:connectMenu.projectInfoUnavailable"));
17621
+ }) : "EmbarkAI";
17552
17622
  const createMessage = connectFlowType === "auth" ? createLoginMessage : createSignatureMessage;
17553
17623
  const message = createMessage(signingWalletAddress, projectName);
17554
17624
  const { signature, chainId: signedChainId } = await signOnSupportedChain({
@@ -17615,14 +17685,14 @@ function ConnectExternalWalletMenu() {
17615
17685
  return false;
17616
17686
  }
17617
17687
  seen.add(connector.uid);
17618
- return true;
17688
+ return isConnectorAllowedByProject(connector, walletProviders);
17619
17689
  });
17620
17690
  if (!allowedWallets?.length) return unique;
17621
17691
  const allowed = allowedWallets.map((id) => id.toLowerCase());
17622
17692
  return unique.filter(
17623
17693
  (connector) => allowed.includes(connector.id.toLowerCase()) || allowed.includes(connector.name.toLowerCase())
17624
17694
  );
17625
- }, [connectors, allowedWallets, hasInjectedWallet2]);
17695
+ }, [connectors, allowedWallets, hasInjectedWallet2, walletProviders]);
17626
17696
  const getInstructionSteps = useCallback18(() => {
17627
17697
  const connectFlowType = getConnectFlowType({
17628
17698
  isEmbarkAI: !!embarkAiAddress,
@@ -17651,7 +17721,8 @@ function ConnectExternalWalletMenu() {
17651
17721
  ),
17652
17722
  /* @__PURE__ */ jsx74("span", { className: "text-xl font-semibold", children: t("passport:connectMenu.connectWallet") })
17653
17723
  ] }),
17654
- visibleConnectors.map((connector) => {
17724
+ isLoadingWalletProviders && /* @__PURE__ */ jsx74("div", { className: "flex items-center justify-center py-[var(--ui-kit-gap)]", children: /* @__PURE__ */ jsx74(Loader11, { className: "w-4 h-4 animate-spin" }) }),
17725
+ (isLoadingWalletProviders ? [] : visibleConnectors).map((connector) => {
17655
17726
  const isConnectingThis = isConnectingExternalWallet && //@ts-expect-error uid exists
17656
17727
  pendingConnectVariables?.connector?.uid === connector.uid;
17657
17728
  const WalletIcon = WALLET_ICONS[connector.id] || Wallet2Icon2;
@@ -17709,7 +17780,7 @@ function ConnectExternalWalletMenu() {
17709
17780
  steps: getInstructionSteps()
17710
17781
  })
17711
17782
  }),
17712
- visibleConnectors.length === 0 && /* @__PURE__ */ jsx74(Highlight, { type: "info", children: t("passport:connectMenu.noWallets") }),
17783
+ !isLoadingWalletProviders && visibleConnectors.length === 0 && /* @__PURE__ */ jsx74(Highlight, { type: "info", children: t("passport:connectMenu.noWallets") }),
17713
17784
  connectError && /* @__PURE__ */ jsxs65(Highlight, { type: "error", className: "flex flex-col gap-[var(--ui-kit-gap)]", children: [
17714
17785
  /* @__PURE__ */ jsx74("p", { children: connectError }),
17715
17786
  /* @__PURE__ */ jsx74(
@@ -17753,6 +17824,8 @@ var init_ConnectExternalWalletMenu = __esm({
17753
17824
  init_highlight();
17754
17825
  init_useConnectExternalWalletMenuParams();
17755
17826
  init_useHasInjectedWallet();
17827
+ init_useProjectWalletProviders();
17828
+ init_walletProviders();
17756
17829
  SIGN_FALLBACK_CHAIN_ID = mainnet.id;
17757
17830
  }
17758
17831
  });
@@ -17853,7 +17926,7 @@ var init_ConnectExternalWalletMenu2 = __esm({
17853
17926
  });
17854
17927
 
17855
17928
  // src/internal/clients/devices.ts
17856
- import { useMutation as useMutation11, useQuery as useQuery10, useQueryClient as useQueryClient15 } from "@tanstack/react-query";
17929
+ import { useMutation as useMutation11, useQuery as useQuery11, useQueryClient as useQueryClient15 } from "@tanstack/react-query";
17857
17930
  async function getDevices() {
17858
17931
  const response = await tssClient.get("/api/auth/devices", true);
17859
17932
  if (!response.success || !response.data) {
@@ -17879,7 +17952,7 @@ async function unlinkDevice(deviceId) {
17879
17952
  }
17880
17953
  }
17881
17954
  function useDevices() {
17882
- return useQuery10({
17955
+ return useQuery11({
17883
17956
  queryKey: [DEVICES_QUERY_KEY],
17884
17957
  queryFn: getDevices
17885
17958
  });
@@ -20586,7 +20659,7 @@ var init_select = __esm({
20586
20659
  });
20587
20660
 
20588
20661
  // src/internal/components/KeyshareRestoreMenu/methods/Cloud.tsx
20589
- import { useQuery as useQuery11 } from "@tanstack/react-query";
20662
+ import { useQuery as useQuery12 } from "@tanstack/react-query";
20590
20663
  import { ArrowLeft as ArrowLeft13, CloudDownload, CloudUpload, Loader as Loader13 } from "lucide-react";
20591
20664
  import { useEffect as useEffect32 } from "react";
20592
20665
  import { Fragment as Fragment27, jsx as jsx85, jsxs as jsxs76 } from "react/jsx-runtime";
@@ -20599,7 +20672,7 @@ function Cloud2(props) {
20599
20672
  data: cloudProviders = [],
20600
20673
  isLoading: isCloudProvidersLoading,
20601
20674
  error: cloudProvidersError
20602
- } = useQuery11({
20675
+ } = useQuery12({
20603
20676
  retry: false,
20604
20677
  enabled: !!passportUserId,
20605
20678
  queryKey: [AVAILABLE_CLOUD_PROVIDERS_QUERY_KEY, passportUserId],
@@ -20847,7 +20920,7 @@ var init_methods = __esm({
20847
20920
  });
20848
20921
 
20849
20922
  // src/internal/components/KeyshareRestoreMenu/KeyshareRestoreMenu.tsx
20850
- import { useMutation as useMutation14, useQuery as useQuery12, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
20923
+ import { useMutation as useMutation14, useQuery as useQuery13, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
20851
20924
  import { AlertCircle as AlertCircle2, CheckCircle2 as CheckCircle22, CloudDownload as CloudDownload2, Loader as Loader14, UserCircle as UserCircle2 } from "lucide-react";
20852
20925
  import { useEffect as useEffect33 } from "react";
20853
20926
  import { Fragment as Fragment29, jsx as jsx87, jsxs as jsxs78 } from "react/jsx-runtime";
@@ -20918,7 +20991,7 @@ var init_KeyshareRestoreMenu = __esm({
20918
20991
  restoreFromCloud,
20919
20992
  isRestoringFromCloud
20920
20993
  } = useRestoreAccount();
20921
- const { data: serverRecoveryStatus, isLoading: isBackupStatusLoading } = useQuery12({
20994
+ const { data: serverRecoveryStatus, isLoading: isBackupStatusLoading } = useQuery13({
20922
20995
  retry: false,
20923
20996
  queryKey: [CHECK_BACKUP_QUERY_KEY, address],
20924
20997
  queryFn: async () => await getShareRecoveryStats()
@@ -21062,7 +21135,7 @@ var init_KeyshareRestoreMenu = __esm({
21062
21135
  });
21063
21136
 
21064
21137
  // src/internal/components/KeyshareRestoreMenu/KeyshareBackupMenu.tsx
21065
- import { useQuery as useQuery13 } from "@tanstack/react-query";
21138
+ import { useQuery as useQuery14 } from "@tanstack/react-query";
21066
21139
  import { AlertCircle as AlertCircle3, ArrowLeft as ArrowLeft14, CheckCircle2 as CheckCircle23, Loader as Loader15, LockIcon } from "lucide-react";
21067
21140
  import { useEffect as useEffect34 } from "react";
21068
21141
  import { Fragment as Fragment30, jsx as jsx88, jsxs as jsxs79 } from "react/jsx-runtime";
@@ -21087,7 +21160,7 @@ function KeyshareBackupMenu() {
21087
21160
  setMethod(null);
21088
21161
  };
21089
21162
  }, []);
21090
- const { data: serverRecoveryStatus, isLoading: isRecoveryLoading } = useQuery13({
21163
+ const { data: serverRecoveryStatus, isLoading: isRecoveryLoading } = useQuery14({
21091
21164
  retry: false,
21092
21165
  enabled: !!address,
21093
21166
  queryKey: [CHECK_BACKUP_QUERY_KEY, address],
@@ -21472,10 +21545,10 @@ var init_KycMenu = __esm({
21472
21545
  });
21473
21546
 
21474
21547
  // src/internal/hooks/useUserProfile.ts
21475
- import { useQuery as useQuery14 } from "@tanstack/react-query";
21548
+ import { useQuery as useQuery15 } from "@tanstack/react-query";
21476
21549
  function useUserProfile() {
21477
21550
  const address = useSession((st) => st.address);
21478
- return useQuery14({
21551
+ return useQuery15({
21479
21552
  queryKey: [QUERY_KEYS.userProfile, address],
21480
21553
  queryFn: getUserProfile,
21481
21554
  enabled: !!address,
@@ -21661,11 +21734,11 @@ var init_constants6 = __esm({
21661
21734
  });
21662
21735
 
21663
21736
  // src/internal/hooks/useBlockscoutAssets/useNativeBalance.ts
21664
- import { useQuery as useQuery15 } from "@tanstack/react-query";
21737
+ import { useQuery as useQuery16 } from "@tanstack/react-query";
21665
21738
  import { formatUnits as formatUnits3 } from "viem";
21666
21739
  function useNativeBalance(options) {
21667
21740
  const { enabled, address, chainId, publicClient, nativeCurrency } = options;
21668
- return useQuery15({
21741
+ return useQuery16({
21669
21742
  enabled: enabled && !!address && !!publicClient && !!nativeCurrency?.symbol,
21670
21743
  ...BALANCE_DEFAULT_QUERY_CFG,
21671
21744
  queryKey: [NATIVE_BALANCE_QUERY_KEY2, chainId, address],
@@ -21687,7 +21760,7 @@ var init_useNativeBalance = __esm({
21687
21760
  });
21688
21761
 
21689
21762
  // src/internal/hooks/useBlockscoutAssets/useWatchTokens.ts
21690
- import { useQuery as useQuery16 } from "@tanstack/react-query";
21763
+ import { useQuery as useQuery17 } from "@tanstack/react-query";
21691
21764
  import { useMemo as useMemo12 } from "react";
21692
21765
  import { erc20Abi as erc20Abi2, formatUnits as formatUnits4 } from "viem";
21693
21766
  function useWatchTokens(options) {
@@ -21698,7 +21771,7 @@ function useWatchTokens(options) {
21698
21771
  const tokensForChain = chainId ? allWatchTokens?.[chainId] || [] : [];
21699
21772
  return tokensForChain;
21700
21773
  }, [config, chainId]);
21701
- return useQuery16({
21774
+ return useQuery17({
21702
21775
  enabled: !!publicClient && !!address && enabled && watchTokens.length > 0,
21703
21776
  ...BALANCE_DEFAULT_QUERY_CFG,
21704
21777
  queryKey: [WATCH_TOKENS_QUERY_KEY, chainId, address, watchTokens.map((t) => t.address).join(",")],
@@ -21901,7 +21974,7 @@ var init_utils9 = __esm({
21901
21974
 
21902
21975
  // src/internal/hooks/useBlockscoutAssets/useBlockscoutAssets.ts
21903
21976
  import { createBlockscoutClient as createBlockscoutClient2, nonBlockscoutClient } from "@embarkai/core";
21904
- import { useQuery as useQuery17, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
21977
+ import { useQuery as useQuery18, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
21905
21978
  import { useCallback as useCallback24, useMemo as useMemo13, useRef as useRef17 } from "react";
21906
21979
  function useBlockscoutAssets(options) {
21907
21980
  const { address, chainId, enabled = true, detectSecurityTokens = true } = options;
@@ -21943,7 +22016,7 @@ function useBlockscoutAssets(options) {
21943
22016
  data: coreTokenBalances = [],
21944
22017
  isLoading: coreTokensLoading,
21945
22018
  isFetching: coreTokensFetching
21946
- } = useQuery17({
22019
+ } = useQuery18({
21947
22020
  enabled: !!address && enabled && !blockscoutClient && !customTokenBalancesQuery && !customTokenBalancesQueryKey,
21948
22021
  ...BALANCE_DEFAULT_QUERY_CFG,
21949
22022
  queryKey: [`NON-${BLOCKSCOUT_QUERY_KEY}`, resolvedChainId, address],
@@ -21959,7 +22032,7 @@ function useBlockscoutAssets(options) {
21959
22032
  data: customItems = [],
21960
22033
  isLoading: customLoading,
21961
22034
  isFetching: customFetching
21962
- } = useQuery17({
22035
+ } = useQuery18({
21963
22036
  enabled: !!address && enabled && !blockscoutClient && !!customTokenBalancesQuery && !!customTokenBalancesQueryKey,
21964
22037
  ...BALANCE_DEFAULT_QUERY_CFG,
21965
22038
  queryKey: customTokenBalancesQueryKey,
@@ -21972,7 +22045,7 @@ function useBlockscoutAssets(options) {
21972
22045
  isFetching: blockscoutFetching,
21973
22046
  error: blockscoutError,
21974
22047
  dataUpdatedAt
21975
- } = useQuery17({
22048
+ } = useQuery18({
21976
22049
  enabled: !!address && enabled && !!blockscoutClient && !customTokenBalancesQuery && !customTokenBalancesQueryKey,
21977
22050
  ...BALANCE_DEFAULT_QUERY_CFG,
21978
22051
  queryKey: [BLOCKSCOUT_QUERY_KEY, resolvedChainId, blockscoutApiUrl, address],
@@ -21983,7 +22056,7 @@ function useBlockscoutAssets(options) {
21983
22056
  data: nftItems,
21984
22057
  isLoading: nftsLoading,
21985
22058
  isFetching: nftsFetching
21986
- } = useQuery17({
22059
+ } = useQuery18({
21987
22060
  enabled: !!address && enabled && !!blockscoutClient,
21988
22061
  ...BALANCE_DEFAULT_QUERY_CFG,
21989
22062
  queryKey: [BLOCKSCOUT_QUERY_KEY, "nfts", resolvedChainId, blockscoutApiUrl, address],
@@ -21993,7 +22066,7 @@ function useBlockscoutAssets(options) {
21993
22066
  if (!blockscoutItems) return [];
21994
22067
  return blockscoutItems.filter((tb) => tb.token.type === "ERC-20").map((tb) => tb.token.address_hash);
21995
22068
  }, [blockscoutItems]);
21996
- const { data: erc3643Results } = useQuery17({
22069
+ const { data: erc3643Results } = useQuery18({
21997
22070
  queryKey: [ERC3643_DETECTION_QUERY_KEY, resolvedChainId, address, erc20TokenAddresses],
21998
22071
  queryFn: async () => {
21999
22072
  if (!publicClient || erc20TokenAddresses.length === 0) {
@@ -22260,7 +22333,7 @@ var init_BalanceView2 = __esm({
22260
22333
  });
22261
22334
 
22262
22335
  // src/internal/components/PortfolioMenu/PortfolioItem.tsx
22263
- import { useQuery as useQuery18 } from "@tanstack/react-query";
22336
+ import { useQuery as useQuery19 } from "@tanstack/react-query";
22264
22337
  import { LoaderIcon as LoaderIcon11, ShieldAlertIcon, SparklesIcon } from "lucide-react";
22265
22338
  import { useMemo as useMemo14, useState as useState22 } from "react";
22266
22339
  import { formatUnits as formatUnits7 } from "viem";
@@ -22376,7 +22449,7 @@ function PortfolioItem(props) {
22376
22449
  queryKey: asset.balanceQueryKey,
22377
22450
  queryFn: asset.balanceQuery
22378
22451
  } : void 0;
22379
- const { data: projectAssetBalance } = useQuery18({
22452
+ const { data: projectAssetBalance } = useQuery19({
22380
22453
  enabled: !!projectAssetQuery,
22381
22454
  retry: false,
22382
22455
  queryKey: projectAssetQuery?.queryKey ?? ["project-asset-balance-disabled", asset.symbol],
@@ -22386,7 +22459,7 @@ function PortfolioItem(props) {
22386
22459
  const isSecurity = isSecurityToken(asset);
22387
22460
  const embeddedRate = Number(asset.exchangeRateUsd || 0);
22388
22461
  const hasEmbeddedRate = Number.isFinite(embeddedRate) && embeddedRate > 0;
22389
- const { data: assetRate, isLoading: isRateLoading } = useQuery18({
22462
+ const { data: assetRate, isLoading: isRateLoading } = useQuery19({
22390
22463
  enabled: !!address && !hasEmbeddedRate && !isProjectAsset && !isNft && !isSecurity,
22391
22464
  // (!!customAssetRateQuery || !!isAssetRateAvailable(asset.symbol)),
22392
22465
  retry: false,
@@ -23085,7 +23158,7 @@ var init_NicknameEditForm = __esm({
23085
23158
  });
23086
23159
 
23087
23160
  // src/internal/components/NicknameMenu/NicknameMenu.tsx
23088
- import { useQuery as useQuery19 } from "@tanstack/react-query";
23161
+ import { useQuery as useQuery20 } from "@tanstack/react-query";
23089
23162
  import dayjs5 from "dayjs";
23090
23163
  import { ArrowLeft as ArrowLeft18, Loader as Loader18 } from "lucide-react";
23091
23164
  import { useEffect as useEffect38 } from "react";
@@ -23101,7 +23174,7 @@ function NicknameMenu() {
23101
23174
  data: nicknameInfo,
23102
23175
  isLoading: isNicknameInfoLoading,
23103
23176
  error: nicknameInfoError
23104
- } = useQuery19({
23177
+ } = useQuery20({
23105
23178
  retry: 1,
23106
23179
  enabled: !!address,
23107
23180
  queryKey: [QUERY_KEYS.nicknameInfo, address],
@@ -23297,7 +23370,7 @@ var init_nickname_fingerprint = __esm({
23297
23370
  });
23298
23371
 
23299
23372
  // src/internal/components/ReceiveMenu/ReceiveMenu.tsx
23300
- import { useQuery as useQuery20 } from "@tanstack/react-query";
23373
+ import { useQuery as useQuery21 } from "@tanstack/react-query";
23301
23374
  import { ArrowLeft as ArrowLeft19, AtSignIcon as AtSignIcon2, CheckCircle2 as CheckCircle24, Copy as Copy2, FingerprintIcon, LoaderIcon as LoaderIcon13, Wallet2Icon as Wallet2Icon4 } from "lucide-react";
23302
23375
  import QRCode from "qrcode";
23303
23376
  import { useEffect as useEffect39, useMemo as useMemo15, useState as useState24 } from "react";
@@ -23307,7 +23380,7 @@ function ReceiveMenu() {
23307
23380
  const session = useSession((st) => st.session);
23308
23381
  const chainConfig = useSession((st) => st.chainConfig);
23309
23382
  const address = session?.smartAccountAddress ?? null;
23310
- const { data: nicknameInfo, isLoading: isNicknameInfoLoading } = useQuery20({
23383
+ const { data: nicknameInfo, isLoading: isNicknameInfoLoading } = useQuery21({
23311
23384
  retry: 1,
23312
23385
  enabled: !!address,
23313
23386
  queryKey: [QUERY_KEYS.nicknameInfo, address],
@@ -23543,11 +23616,11 @@ var init_constants7 = __esm({
23543
23616
  });
23544
23617
 
23545
23618
  // src/internal/components/SecurityMenu/ConnectedApps/useConnectedApps.ts
23546
- import { useQuery as useQuery21 } from "@tanstack/react-query";
23619
+ import { useQuery as useQuery22 } from "@tanstack/react-query";
23547
23620
  function useConnectedApps() {
23548
23621
  const session = useSession((st) => st.session);
23549
23622
  const userId = session?.mpcUserId || null;
23550
- return useQuery21({
23623
+ return useQuery22({
23551
23624
  retry: false,
23552
23625
  enabled: !!userId,
23553
23626
  queryKey: [CONNECTED_TRUSTED_APPS_QUERY, userId],
@@ -23918,11 +23991,11 @@ var init_LastBackup = __esm({
23918
23991
  });
23919
23992
 
23920
23993
  // src/internal/components/SecurityMenu/Keyshare/useKeyshareRecoveryStats.ts
23921
- import { useQuery as useQuery22 } from "@tanstack/react-query";
23994
+ import { useQuery as useQuery23 } from "@tanstack/react-query";
23922
23995
  function useKeyshareRecoveryStats() {
23923
23996
  const session = useSession((st) => st.session);
23924
23997
  const userId = session?.mpcUserId || null;
23925
- return useQuery22({
23998
+ return useQuery23({
23926
23999
  enabled: !!userId,
23927
24000
  queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
23928
24001
  queryFn: async () => {
@@ -24188,10 +24261,10 @@ var init_usePolicyForm = __esm({
24188
24261
  });
24189
24262
 
24190
24263
  // src/internal/components/SecurityMenu/UserPolicies/useUserAssetsPolicies.ts
24191
- import { useQuery as useQuery23 } from "@tanstack/react-query";
24264
+ import { useQuery as useQuery24 } from "@tanstack/react-query";
24192
24265
  function useUserAssetsPolicies(activeChainId) {
24193
24266
  const mpcUserId = useSession((st) => st.session?.mpcUserId);
24194
- return useQuery23({
24267
+ return useQuery24({
24195
24268
  retry: 1,
24196
24269
  enabled: !!mpcUserId && !!activeChainId,
24197
24270
  queryKey: [USER_POLICIES_QUERY_KEY, mpcUserId, activeChainId],
@@ -25743,7 +25816,7 @@ var init_useBridge = __esm({
25743
25816
  });
25744
25817
 
25745
25818
  // src/internal/components/SendMenu/hyperbridge/hooks/useHyperlaneRoutes.ts
25746
- import { useQuery as useQuery24 } from "@tanstack/react-query";
25819
+ import { useQuery as useQuery25 } from "@tanstack/react-query";
25747
25820
  import { useEffect as useEffect44 } from "react";
25748
25821
  function useHyperlaneRoutes() {
25749
25822
  const address = useSession((st) => st.address);
@@ -25754,7 +25827,7 @@ function useHyperlaneRoutes() {
25754
25827
  data: hyperlaneWarpRoutes = [],
25755
25828
  isLoading: isLoadingWarpRoutes,
25756
25829
  error: errorWarpRoutes
25757
- } = useQuery24({
25830
+ } = useQuery25({
25758
25831
  retry: false,
25759
25832
  enabled: !!address && page === "send" /* SEND */ && flow === "bridge",
25760
25833
  queryKey: [HYPERLANE_WARP_ROUTES_QUERY_KEY, address],
@@ -26007,7 +26080,7 @@ var init_ResolveChainIcon = __esm({
26007
26080
 
26008
26081
  // src/internal/components/SendMenu/hyperbridge/hooks/useBridgeBalance.ts
26009
26082
  import { CHAINS_BROWSERS_TRANSPORTS as CHAINS_BROWSERS_TRANSPORTS2 } from "@embarkai/core";
26010
- import { useQuery as useQuery25, useQueryClient as useQueryClient26 } from "@tanstack/react-query";
26083
+ import { useQuery as useQuery26, useQueryClient as useQueryClient26 } from "@tanstack/react-query";
26011
26084
  import { useCallback as useCallback30, useEffect as useEffect46 } from "react";
26012
26085
  import { createPublicClient as createPublicClient2, erc20Abi as erc20Abi3, formatUnits as formatUnits9, http as http3 } from "viem";
26013
26086
  import { useSwitchChain as useSwitchChain3 } from "wagmi";
@@ -26040,7 +26113,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26040
26113
  const embarkTokenBalanace = assets.find((a) => selectedWarpRoute?.symbol === checkWrapedTokenSymbol(a.symbol));
26041
26114
  const originChainMeta = CHAINS_UI_META[originChain];
26042
26115
  const isSelectedTokenNative = selectedWarpRoute?.symbol?.toUpperCase() === originChainMeta?.chain?.nativeCurrency?.symbol?.toUpperCase();
26043
- const { data: externalBalanceData, isLoading: isExternalBalanceLoading } = useQuery25({
26116
+ const { data: externalBalanceData, isLoading: isExternalBalanceLoading } = useQuery26({
26044
26117
  retry: false,
26045
26118
  enabled: bridgeSender === "direct-wallet" && !isSelectedTokenNative && !!directWalletAddress && !!routeTokenAddress && !!originChain,
26046
26119
  queryKey: [EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY, originChain, directWalletAddress, routeTokenAddress],
@@ -26083,7 +26156,7 @@ function useBridgeBalance(isLoadingWarpRoutes, hyperlaneWarpRoutes) {
26083
26156
  return { value, decimals, symbol, formatted };
26084
26157
  }
26085
26158
  });
26086
- const { data: externalNativeBalanceData, isLoading: isExternalNativeBalanceLoading } = useQuery25({
26159
+ const { data: externalNativeBalanceData, isLoading: isExternalNativeBalanceLoading } = useQuery26({
26087
26160
  retry: false,
26088
26161
  enabled: bridgeSender === "direct-wallet" && isSelectedTokenNative && !!directWalletAddress && !!originChain,
26089
26162
  queryKey: [EXTERNAL_WALLET_BRIDGING_NATIVE_BALANCE_QUERY, originChain, directWalletAddress],
@@ -27239,7 +27312,7 @@ var init_useErc3643Compliance = __esm({
27239
27312
  });
27240
27313
 
27241
27314
  // src/hooks/useNicknameResolve.ts
27242
- import { useQuery as useQuery26 } from "@tanstack/react-query";
27315
+ import { useQuery as useQuery27 } from "@tanstack/react-query";
27243
27316
  import { useEffect as useEffect48, useMemo as useMemo18, useState as useState29 } from "react";
27244
27317
  function looksLikeNickname(input) {
27245
27318
  if (!input) return false;
@@ -27269,7 +27342,7 @@ function useNicknameResolve(input, options) {
27269
27342
  clearTimeout(timer);
27270
27343
  };
27271
27344
  }, [normalized, isNicknameInput, enabled]);
27272
- const query = useQuery26({
27345
+ const query = useQuery27({
27273
27346
  queryKey: [...QUERY_KEYS.nicknameResolve(debouncedInput), chainId],
27274
27347
  queryFn: async () => await resolveNickname(debouncedInput, chainId),
27275
27348
  enabled: enabled && isNicknameInput && debouncedInput.length > 0,
@@ -27809,7 +27882,7 @@ var init_components3 = __esm({
27809
27882
  });
27810
27883
 
27811
27884
  // src/internal/components/SendMenu/send/useTokenBalance.ts
27812
- import { useQuery as useQuery27 } from "@tanstack/react-query";
27885
+ import { useQuery as useQuery28 } from "@tanstack/react-query";
27813
27886
  import { erc20Abi as erc20Abi4, formatUnits as formatUnits12 } from "viem";
27814
27887
  function isNftAsset4(asset) {
27815
27888
  if (!asset) return false;
@@ -27818,7 +27891,7 @@ function isNftAsset4(asset) {
27818
27891
  function useTokenBalance(asset) {
27819
27892
  const address = useSession((st) => st.address);
27820
27893
  const chainConfig = useSession((st) => st.chainConfig);
27821
- return useQuery27({
27894
+ return useQuery28({
27822
27895
  retry: false,
27823
27896
  enabled: !!address && !!chainConfig?.id && !!asset?.symbol,
27824
27897
  refetchInterval: 5e3,
@@ -29546,7 +29619,7 @@ var init_TransactionsGroup = __esm({
29546
29619
  });
29547
29620
 
29548
29621
  // src/internal/components/TransactionsMenu/TransactionsMenu.tsx
29549
- import { useQuery as useQuery28, useQueryClient as useQueryClient28 } from "@tanstack/react-query";
29622
+ import { useQuery as useQuery29, useQueryClient as useQueryClient28 } from "@tanstack/react-query";
29550
29623
  import { ArrowLeft as ArrowLeft22, Loader as Loader29, RefreshCw as RefreshCw3, XCircle as XCircle2 } from "lucide-react";
29551
29624
  import { useCallback as useCallback32, useState as useState32 } from "react";
29552
29625
  import { jsx as jsx128, jsxs as jsxs116 } from "react/jsx-runtime";
@@ -29564,7 +29637,7 @@ function TransactionsMenu() {
29564
29637
  isLoading: isTxHistoryLoading,
29565
29638
  isFetching: isTxHistoryFetching,
29566
29639
  error: txHistoryError
29567
- } = useQuery28({
29640
+ } = useQuery29({
29568
29641
  retry: false,
29569
29642
  enabled: !!address && !!chainConfig?.id && historySupported,
29570
29643
  queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address],
@@ -29667,7 +29740,7 @@ var init_constants9 = __esm({
29667
29740
  });
29668
29741
 
29669
29742
  // src/internal/components/SettingsMenu/SettingsMenu.tsx
29670
- import { useQuery as useQuery29 } from "@tanstack/react-query";
29743
+ import { useQuery as useQuery30 } from "@tanstack/react-query";
29671
29744
  import { ArrowLeft as ArrowLeft23, HardDrive as HardDrive3 } from "lucide-react";
29672
29745
  import { jsx as jsx129, jsxs as jsxs117 } from "react/jsx-runtime";
29673
29746
  function useSettingsButtons(chainId) {
@@ -29699,7 +29772,7 @@ function SettingsMenu() {
29699
29772
  const setPage = useLayoutDataStore((st) => st.setPage);
29700
29773
  const settingsButtons = useSettingsButtons(activeChainId);
29701
29774
  useProvidersList();
29702
- useQuery29({
29775
+ useQuery30({
29703
29776
  retry: 1,
29704
29777
  enabled: !!address,
29705
29778
  queryKey: [QUERY_KEYS.nicknameInfo, address],
@@ -30039,7 +30112,7 @@ var init_package = __esm({
30039
30112
  "package.json"() {
30040
30113
  package_default = {
30041
30114
  name: "@embarkai/ui-kit",
30042
- version: "0.4.115",
30115
+ version: "0.4.117",
30043
30116
  description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
30044
30117
  type: "module",
30045
30118
  main: "./dist/index.cjs",