@embarkai/ui-kit 0.4.38 → 0.4.39

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.cjs CHANGED
@@ -5435,9 +5435,9 @@ var init_en = __esm({
5435
5435
  confirmBridge: "I confirm bridging {{amount}} {{asset}} to {{destinationChain}}"
5436
5436
  },
5437
5437
  statuses: {
5438
+ balanceInsufficient: "Insufficient balance",
5438
5439
  txPrepare: "Preparing transactions...",
5439
- txSending: "Sending {{txCount}} transactions...",
5440
- txSent: "Transactions sent. Delivery to {{destination}}",
5440
+ txExecuting: "Executing transactions...",
5441
5441
  txWaitingReceipt: "Waiting for receipt...",
5442
5442
  txPatching: "Patching transaction..."
5443
5443
  },
@@ -5754,12 +5754,9 @@ var init_ru = __esm({
5754
5754
  confirmBridge: "\u041F\u041E\u0414\u0422\u0412\u0415\u0420\u0414\u0418\u0422\u042C \u041F\u0415\u0420\u0415\u041C\u0415\u0429\u0415\u041D\u0418\u0415"
5755
5755
  },
5756
5756
  statuses: {
5757
- qouteEstimating: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0441\u0442\u043E\u0438\u043C\u043E\u0441\u0442\u0438...",
5758
- switchingWalletChain: "\u041F\u0435\u0440\u0435\u043A\u043B\u044E\u0447\u0435\u043D\u0438\u0435 \u0441\u0435\u0442\u0438...",
5757
+ balanceInsufficient: "\u041D\u0435\u0434\u043E\u0441\u0442\u0430\u0442\u043E\u0447\u043D\u043E \u0441\u0440\u0435\u0434\u0441\u0442\u0432",
5759
5758
  txPrepare: "\u041F\u043E\u0434\u0433\u043E\u0442\u043E\u0432\u043A\u0430 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0439...",
5760
- txSending: "\u041E\u0442\u043F\u0440\u0430\u0432\u043A\u0430 {{txCount}} \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0439...",
5761
- txSent: "\u0422\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0438 \u043E\u0442\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u044B. \u0414\u043E\u0441\u0442\u0430\u0432\u043A\u0430 \u0432 {{destination}}",
5762
- txExecuting: "\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u043F\u0435\u0440\u0435\u043C\u0435\u0449\u0435\u043D\u0438\u044F...",
5759
+ txExecuting: "\u0412\u044B\u043F\u043E\u043B\u043D\u0435\u043D\u0438\u0435 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0439...",
5763
5760
  txWaitingReceipt: "\u041E\u0436\u0438\u0434\u0430\u043D\u0438\u0435 \u043F\u043E\u0434\u0442\u0432\u0435\u0440\u0436\u0434\u0435\u043D\u0438\u044F...",
5764
5761
  txPatching: "\u041E\u0431\u043D\u043E\u0432\u043B\u0435\u043D\u0438\u0435 \u0442\u0440\u0430\u043D\u0437\u0430\u043A\u0446\u0438\u0438..."
5765
5762
  },
@@ -6076,12 +6073,9 @@ var init_zh = __esm({
6076
6073
  confirmBridge: "\u786E\u8BA4\u8DE8\u94FE"
6077
6074
  },
6078
6075
  statuses: {
6079
- qouteEstimating: "\u6B63\u5728\u4F30\u7B97\u62A5\u4EF7...",
6080
- switchingWalletChain: "\u6B63\u5728\u5207\u6362\u94FE...",
6076
+ balanceInsufficient: "\u4F59\u989D\u4E0D\u8DB3",
6081
6077
  txPrepare: "\u6B63\u5728\u51C6\u5907\u4EA4\u6613...",
6082
- txSending: "\u6B63\u5728\u53D1\u9001 {{txCount}} \u7B14\u4EA4\u6613...",
6083
- txSent: "\u4EA4\u6613\u5DF2\u53D1\u9001\u3002\u6B63\u5728\u4F20\u8F93\u81F3 {{destination}}",
6084
- txExecuting: "\u6B63\u5728\u6267\u884C\u8DE8\u94FE...",
6078
+ txExecuting: "\u6B63\u5728\u6267\u884C\u4EA4\u6613...",
6085
6079
  txWaitingReceipt: "\u7B49\u5F85\u6536\u636E...",
6086
6080
  txPatching: "\u66F4\u65B0\u4EA4\u6613..."
6087
6081
  },
@@ -19608,15 +19602,145 @@ var init_api3 = __esm({
19608
19602
  }
19609
19603
  });
19610
19604
 
19605
+ // src/clients/bundler/getUserOperationByHash.ts
19606
+ async function getUserOperationByHash(userOpHash, chainId) {
19607
+ const targetChainId = chainId ?? requireActiveChainId();
19608
+ const chainConfig = (0, import_read15.getChainConfig)(targetChainId);
19609
+ if (!chainConfig) {
19610
+ throw new Error(`Chain ${targetChainId} is not supported`);
19611
+ }
19612
+ if (!chainConfig.bundlerUrl) {
19613
+ throw new Error(`Chain ${targetChainId} has no bundlerUrl configured`);
19614
+ }
19615
+ if (!userOpHash) {
19616
+ throw new Error("Operation hash is required");
19617
+ }
19618
+ try {
19619
+ const result = await (0, import_core3.bundlerRpc)("eth_getUserOperationByHash", [userOpHash], chainConfig.bundlerUrl);
19620
+ if (!result) {
19621
+ return null;
19622
+ }
19623
+ console.log("[getUserOperationByHash] Receipt:", JSON.stringify(result, null, 2));
19624
+ return {
19625
+ entryPoint: result.entryPoint,
19626
+ userOperation: result.userOperation,
19627
+ transactionHash: result.transactionHash,
19628
+ blockNumber: result.blockNumber,
19629
+ blockHash: result.blockHash
19630
+ };
19631
+ } catch (error) {
19632
+ console.warn("[getUserOperationByHash] Failed to get user operation:", error);
19633
+ return null;
19634
+ }
19635
+ }
19636
+ var import_core3, import_read15;
19637
+ var init_getUserOperationByHash = __esm({
19638
+ "src/clients/bundler/getUserOperationByHash.ts"() {
19639
+ init_SessionContext();
19640
+ import_core3 = require("@embarkai/core");
19641
+ import_read15 = require("@embarkai/core/read");
19642
+ }
19643
+ });
19644
+
19645
+ // src/clients/bundler/getUserOperationReceipt.ts
19646
+ async function getUserOperationReceipt(userOpHash, chainId) {
19647
+ const targetChainId = chainId ?? requireActiveChainId();
19648
+ const chainConfig = (0, import_read16.getChainConfig)(targetChainId);
19649
+ if (!chainConfig) {
19650
+ throw new Error(`Chain ${targetChainId} is not supported`);
19651
+ }
19652
+ if (!chainConfig.bundlerUrl) {
19653
+ throw new Error(`Chain ${targetChainId} has no bundlerUrl configured`);
19654
+ }
19655
+ if (!userOpHash) {
19656
+ throw new Error("Operation hash is required");
19657
+ }
19658
+ try {
19659
+ const result = await (0, import_core4.bundlerRpc)("eth_getUserOperationReceipt", [userOpHash], chainConfig.bundlerUrl);
19660
+ if (!result) {
19661
+ return null;
19662
+ }
19663
+ console.log("[getUserOperationReceipt] Receipt:", JSON.stringify(result, null, 2));
19664
+ return {
19665
+ userOpHash: result.userOpHash,
19666
+ entryPoint: result.entryPoint,
19667
+ sender: result.sender,
19668
+ nonce: result.nonce,
19669
+ success: result.success,
19670
+ actualGasCost: result.actualGasCost,
19671
+ actualGasUsed: result.actualGasUsed,
19672
+ paymaster: result.paymaster,
19673
+ receipt: result.receipt,
19674
+ logs: result.logs,
19675
+ reason: result.reason
19676
+ };
19677
+ } catch (error) {
19678
+ console.warn("[getUserOperationReceipt] Failed to get receipt:", error);
19679
+ return null;
19680
+ }
19681
+ }
19682
+ var import_core4, import_read16;
19683
+ var init_getUserOperationReceipt = __esm({
19684
+ "src/clients/bundler/getUserOperationReceipt.ts"() {
19685
+ init_SessionContext();
19686
+ import_core4 = require("@embarkai/core");
19687
+ import_read16 = require("@embarkai/core/read");
19688
+ }
19689
+ });
19690
+
19691
+ // src/clients/bundler/waitForUserOperationReceipt.ts
19692
+ async function waitForUserOperationReceipt(userOpHash, options) {
19693
+ const pollIntervalMs = options?.pollIntervalMs ?? 1e3;
19694
+ const maxPollTimeMs = options?.maxPollTimeMs ?? 6e4;
19695
+ const targetChainId = options?.chainId ?? requireActiveChainId();
19696
+ const startTime = Date.now();
19697
+ while (true) {
19698
+ const elapsed = Date.now() - startTime;
19699
+ if (elapsed >= maxPollTimeMs) {
19700
+ throw new UserOperationTimeoutError(userOpHash, targetChainId, maxPollTimeMs);
19701
+ }
19702
+ const receipt = await getUserOperationReceipt(userOpHash, targetChainId);
19703
+ if (receipt) {
19704
+ return receipt;
19705
+ }
19706
+ await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
19707
+ }
19708
+ }
19709
+ var UserOperationTimeoutError;
19710
+ var init_waitForUserOperationReceipt = __esm({
19711
+ "src/clients/bundler/waitForUserOperationReceipt.ts"() {
19712
+ init_SessionContext();
19713
+ init_getUserOperationReceipt();
19714
+ UserOperationTimeoutError = class extends Error {
19715
+ constructor(userOpHash, chainId, timeoutMs) {
19716
+ super(`Timeout waiting for UserOperation receipt after ${timeoutMs}ms (hash: ${userOpHash}, chainId: ${chainId})`);
19717
+ this.name = "UserOperationTimeoutError";
19718
+ this.userOpHash = userOpHash;
19719
+ this.chainId = chainId;
19720
+ this.timeoutMs = timeoutMs;
19721
+ }
19722
+ };
19723
+ }
19724
+ });
19725
+
19726
+ // src/clients/bundler/index.ts
19727
+ var init_bundler = __esm({
19728
+ "src/clients/bundler/index.ts"() {
19729
+ init_getUserOperationByHash();
19730
+ init_getUserOperationReceipt();
19731
+ init_waitForUserOperationReceipt();
19732
+ }
19733
+ });
19734
+
19611
19735
  // src/internal/components/SendMenu/hyperbridge/lib/executeWarpTxs.ts
19612
19736
  async function executeWarpTransactions(txs, walletClient) {
19613
19737
  const originChain = useBridgeStore.getState().originChain;
19614
19738
  const session = useSession.getState().session;
19615
19739
  const bridgeSender = useBridgeStore.getState().bridgeSender;
19740
+ const externalWalletChain = CHAINS_UI_META[originChain].chain;
19616
19741
  const publicClient = bridgeSender === "embarkai-wallet" ? useSession.getState().publicClient : (0, import_viem11.createPublicClient)({
19617
- chain: CHAINS_UI_META[originChain].chain,
19618
- // transport: http(this.rpcUrl)
19619
- transport: (0, import_viem11.http)(CHAINS_UI_META[originChain].chain.rpcUrls.default.http[0])
19742
+ chain: externalWalletChain,
19743
+ transport: import_core5.CHAINS_BROWSERS_TRANSPORTS[externalWalletChain.id] || (0, import_viem11.http)(externalWalletChain.rpcUrls.default.http[0])
19620
19744
  });
19621
19745
  if (!session) {
19622
19746
  throw new Error("No active session");
@@ -19627,6 +19751,9 @@ async function executeWarpTransactions(txs, walletClient) {
19627
19751
  const hashes = [];
19628
19752
  const errorsStack = [];
19629
19753
  for (const tx of txs) {
19754
+ if (tx.type !== "ethers-v5" /* EthersV5 */) {
19755
+ throw new Error(`Unsupported transaction provider: ${tx.type}`);
19756
+ }
19630
19757
  const populated = tx.transaction;
19631
19758
  if (!populated.to) {
19632
19759
  throw new Error("Transaction missing `to` address");
@@ -19639,28 +19766,69 @@ async function executeWarpTransactions(txs, walletClient) {
19639
19766
  BigInt(rawValue.hex)
19640
19767
  ) : BigInt(rawValue.toString())
19641
19768
  );
19642
- if (bridgeSender === "embarkai-wallet") {
19643
- const operationHash = await sendUserOperation(session, {
19644
- to: populated.to,
19645
- data: populated.data ?? "0x",
19646
- value: valueBigInt.toString(),
19647
- chainId: publicClient.chain.id
19648
- }).catch((error) => {
19649
- errorsStack.push(error);
19650
- throw error;
19651
- });
19652
- hashes.push(operationHash);
19653
- } else {
19654
- const walletOpHash = await walletClient?.sendTransaction?.({
19655
- to: populated.to,
19656
- value: valueBigInt.toString(),
19657
- data: populated.data,
19658
- chain: walletClient.chain
19659
- }).catch((error) => {
19660
- errorsStack.push(error);
19661
- throw error;
19662
- });
19663
- hashes.push(walletOpHash);
19769
+ switch (bridgeSender) {
19770
+ case "embarkai-wallet":
19771
+ useBridgeStore.getState().setBridgeTxStatus(`Tx: ${tx.category || ""}...`);
19772
+ const embarkOpHash = await sendUserOperation(session, {
19773
+ to: populated.to,
19774
+ data: populated.data ?? "0x",
19775
+ value: valueBigInt.toString(),
19776
+ chainId: publicClient.chain.id
19777
+ }).catch((error) => {
19778
+ errorsStack.push(error);
19779
+ throw error;
19780
+ });
19781
+ if (TARGET_TX_CATEGORIES.includes(tx.category)) {
19782
+ console.warn("[HYPERLANE] embarkai-wallet tx done", tx.category, embarkOpHash);
19783
+ hashes.push(embarkOpHash);
19784
+ }
19785
+ if (!TARGET_TX_CATEGORIES.includes(tx.category)) {
19786
+ useBridgeStore.getState().setBridgeTxStatus(`Tx receipt: ${tx.category || ""}...`);
19787
+ const embarkNonTransferReceipt = await waitForUserOperationReceipt(embarkOpHash, {
19788
+ chainId: publicClient.chain.id
19789
+ }).catch((error) => {
19790
+ errorsStack.push(error);
19791
+ throw error;
19792
+ });
19793
+ if (!embarkNonTransferReceipt.success) {
19794
+ throw new Error(
19795
+ `Approval transaction failed: ${embarkNonTransferReceipt?.receipt?.transactionHash || "unknown hash"}`
19796
+ );
19797
+ }
19798
+ }
19799
+ break;
19800
+ case "direct-wallet":
19801
+ useBridgeStore.getState().setBridgeTxStatus(`Tx: ${tx.category || ""}...`);
19802
+ const walletOpHash = await walletClient?.sendTransaction?.({
19803
+ to: populated.to,
19804
+ value: valueBigInt.toString(),
19805
+ data: populated.data,
19806
+ chain: walletClient.chain
19807
+ }).catch((error) => {
19808
+ errorsStack.push(error);
19809
+ throw error;
19810
+ });
19811
+ if (TARGET_TX_CATEGORIES.includes(tx.category)) {
19812
+ console.warn("[HYPERLANE] direct-wallet tx done", tx.category, walletOpHash);
19813
+ hashes.push(walletOpHash);
19814
+ }
19815
+ if (!TARGET_TX_CATEGORIES.includes(tx.category)) {
19816
+ useBridgeStore.getState().setBridgeTxStatus(`Tx receipt: ${tx.category || ""}...`);
19817
+ const wagmiNonTransferReceipt = await (0, import_core5.waitForWagmiTransactionReceipt)(import_core5.wagmiConfig, {
19818
+ chainId: publicClient.chain.id,
19819
+ hash: walletOpHash,
19820
+ pollingInterval: 2500
19821
+ }).catch((error) => {
19822
+ errorsStack.push(error);
19823
+ throw error;
19824
+ });
19825
+ if (!wagmiNonTransferReceipt.success) {
19826
+ throw new Error(
19827
+ `Approval transaction failed: ${wagmiNonTransferReceipt?.transactionHash || "unknown hash"}`
19828
+ );
19829
+ }
19830
+ }
19831
+ break;
19664
19832
  }
19665
19833
  }
19666
19834
  if (errorsStack.length > 0) {
@@ -19669,14 +19837,17 @@ async function executeWarpTransactions(txs, walletClient) {
19669
19837
  }
19670
19838
  return hashes;
19671
19839
  }
19672
- var import_viem11;
19840
+ var import_core5, import_viem11, TARGET_TX_CATEGORIES;
19673
19841
  var init_executeWarpTxs = __esm({
19674
19842
  "src/internal/components/SendMenu/hyperbridge/lib/executeWarpTxs.ts"() {
19843
+ init_bundler();
19675
19844
  init_SessionContext();
19676
- import_viem11 = require("viem");
19677
19845
  init_account2();
19846
+ import_core5 = require("@embarkai/core");
19847
+ import_viem11 = require("viem");
19678
19848
  init_useBridgeStore();
19679
19849
  init_chains();
19850
+ TARGET_TX_CATEGORIES = ["transfer"];
19680
19851
  }
19681
19852
  });
19682
19853
 
@@ -19863,6 +20034,7 @@ function useBridge() {
19863
20034
  warpTxs,
19864
20035
  bridgeSender.type === "direct-wallet" ? walletClient : null
19865
20036
  );
20037
+ setBridgeTxStatus(t("passport:bridgeMenu.statuses.txPatching"));
19866
20038
  await Promise.all([
19867
20039
  patchInitiatedBridgeTxOpHashes({ txId: hyperlaneDbTx.id, txOpHashes: operationHashes }),
19868
20040
  patchInitiatedBridgeTxStatus({ txId: hyperlaneDbTx.id, txStatus: "SENDING" })
@@ -19870,18 +20042,14 @@ function useBridge() {
19870
20042
  return operationHashes;
19871
20043
  },
19872
20044
  onSuccess: (operationHashes) => {
19873
- const { setBridgeStep, setBridgeTxStatus, destinationChain } = useBridgeStore.getState();
19874
- setBridgeTxStatus(
19875
- // @ts-expect-error i18n typing
19876
- t("passport:bridgeMenu.statuses.txSent", { destination: destinationChain })
19877
- );
20045
+ const { setBridgeStep, setBridgeTxStatus } = useBridgeStore.getState();
19878
20046
  useOperationHashesStore.getState().setOperationHashes(operationHashes);
19879
20047
  useLayoutStore.getState().setIsDialogForced(false);
19880
20048
  useFlowSelectorStore.getState().setIsUiLocked(false);
20049
+ setBridgeTxStatus(null);
19881
20050
  setBridgeStep("success");
19882
20051
  },
19883
20052
  onError: (error) => {
19884
- const { setBridgeTxStatus } = useBridgeStore.getState();
19885
20053
  console.error("[HYPERLANE SDK] Bridge execution error", error);
19886
20054
  const hyperlaneDbTx = useOperationHashesStore.getState().hyperlaneDatabaseTx;
19887
20055
  if (hyperlaneDbTx?.id) {
@@ -19889,9 +20057,9 @@ function useBridge() {
19889
20057
  console.log("[HYPERLANE SDK] initiated tx patched as REJECTED: ", hyperlaneDbTx.id, "ok: ", ok);
19890
20058
  });
19891
20059
  }
19892
- setBridgeTxStatus(null);
19893
20060
  useLayoutStore.getState().setIsDialogForced(false);
19894
20061
  useFlowSelectorStore.getState().setIsUiLocked(false);
20062
+ useBridgeStore.getState().setBridgeTxStatus(null);
19895
20063
  useFlowSelectorStore.getState().setError(error instanceof Error ? error.message : String(error));
19896
20064
  }
19897
20065
  });
@@ -20069,13 +20237,14 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
20069
20237
  const originChainMeta = CHAINS_UI_META[originChain];
20070
20238
  const isSelectedTokenNative = selectedWarpRoute?.symbol?.toUpperCase() === originChainMeta?.chain?.nativeCurrency?.symbol?.toUpperCase();
20071
20239
  const { data: externalBalanceData, isLoading: isExternalBalanceLoading } = (0, import_react_query45.useQuery)({
20072
- enabled: bridgeSender === "direct-wallet" && !isSelectedTokenNative && !!directWalletAddress && !!routeTokenAddress && !!originChain,
20073
20240
  retry: false,
20241
+ enabled: bridgeSender === "direct-wallet" && !isSelectedTokenNative && !!directWalletAddress && !!routeTokenAddress && !!originChain,
20074
20242
  queryKey: [EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY, originChain, directWalletAddress, routeTokenAddress],
20075
20243
  queryFn: async () => {
20244
+ const chainTransport = import_core6.CHAINS_BROWSERS_TRANSPORTS[originChainMeta.chain.id] || (0, import_viem13.http)(originChainMeta.chain.rpcUrls.default.http[0]);
20076
20245
  const client = (0, import_viem13.createPublicClient)({
20077
20246
  chain: originChainMeta.chain,
20078
- transport: (0, import_viem13.http)(originChainMeta.chain.rpcUrls.default.http[0])
20247
+ transport: chainTransport
20079
20248
  });
20080
20249
  const [value, decimals, symbol] = await Promise.all([
20081
20250
  client.readContract({
@@ -20168,11 +20337,12 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
20168
20337
  isRouteTokenBalanceLoading: isAssetsLoading || isExternalBalanceLoading || isExternalNativeBalanceLoading
20169
20338
  };
20170
20339
  }
20171
- var import_react_query45, import_react66, import_viem13, import_wagmi4, EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY;
20340
+ var import_core6, import_react_query45, import_react66, import_viem13, import_wagmi4, EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY;
20172
20341
  var init_useBridgeBalance = __esm({
20173
20342
  "src/internal/components/SendMenu/hyperbridge/hooks/useBridgeBalance.ts"() {
20174
20343
  init_SessionContext();
20175
20344
  init_i18n();
20345
+ import_core6 = require("@embarkai/core");
20176
20346
  import_react_query45 = require("@tanstack/react-query");
20177
20347
  import_react66 = require("react");
20178
20348
  import_viem13 = require("viem");
@@ -20213,6 +20383,9 @@ function SelectStep(props) {
20213
20383
  if (isLoadingWarpRoutes) {
20214
20384
  return /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("div", { className: "w-full flex items-center justify-center p-[var(--ui-kit-pd)]", children: /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_lucide_react59.LoaderIcon, { className: "w-4 h-4 animate-spin" }) });
20215
20385
  }
20386
+ const isBalanceInsufficient = !routeTokenBalance || Number(amount || 0) > Number(routeTokenBalance || 0);
20387
+ const isFalsyAmount = !amount || !Number(amount) || Number(amount) <= 0;
20388
+ const isQuoteEstimationDisabled = isQuoteEstimating || !hyperlaneWarpRoutes.length || !selectedSender || !originChain || !destinationChain || !hyperRoute || isFalsyAmount || isBalanceInsufficient;
20216
20389
  return /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)] items-center", children: [
20217
20390
  /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
20218
20391
  /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(
@@ -20257,7 +20430,7 @@ function SelectStep(props) {
20257
20430
  ": "
20258
20431
  ] }),
20259
20432
  isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_lucide_react59.LoaderIcon, { className: "w-4 h-4 animate-spin text-[var(--ui-kit-fg-muted)]" }),
20260
- !isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("span", { className: "font-semibold", children: [
20433
+ !isRouteTokenBalanceLoading && /* @__PURE__ */ (0, import_jsx_runtime93.jsxs)("span", { className: cn("font-semibold", { "text-[var(--ui-kit-bg-error)]": isBalanceInsufficient }), children: [
20261
20434
  formatPrice(Number(routeTokenBalance || 0)),
20262
20435
  " ",
20263
20436
  selectedWarpRoute?.symbol
@@ -20417,10 +20590,10 @@ function SelectStep(props) {
20417
20590
  variant: "default",
20418
20591
  className: "w-full",
20419
20592
  onClick: () => handleQuoteEstimation(amount),
20420
- disabled: isQuoteEstimating || !hyperlaneWarpRoutes.length || !selectedSender || !amount || !Number(amount) || !originChain || !destinationChain || !hyperRoute,
20593
+ disabled: isQuoteEstimationDisabled,
20421
20594
  children: [
20422
20595
  isQuoteEstimating && /* @__PURE__ */ (0, import_jsx_runtime93.jsx)(import_lucide_react59.LoaderIcon, { className: "h-4 w-4 animate-spin" }),
20423
- /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { children: t("passport:bridgeMenu.actions.estimateQuote") })
20596
+ /* @__PURE__ */ (0, import_jsx_runtime93.jsx)("span", { children: isBalanceInsufficient ? t("passport:bridgeMenu.statuses.balanceInsufficient") : t("passport:bridgeMenu.actions.estimateQuote") })
20424
20597
  ]
20425
20598
  }
20426
20599
  )
@@ -22921,27 +23094,27 @@ function getHistoryUrls(params) {
22921
23094
  }
22922
23095
  return getBlockscoutHistoryUrls(params);
22923
23096
  }
22924
- var import_read15, ETHERSCAN_V2_API_URL, BLOCKSCOUT_API_URLS, CHAIN_SPECIFIC_API_URLS, ETHERSCAN_CHAINS, UNSUPPORTED_HISTORY_CHAINS, TX_HISTORY_URLS;
23097
+ var import_read17, ETHERSCAN_V2_API_URL, BLOCKSCOUT_API_URLS, CHAIN_SPECIFIC_API_URLS, ETHERSCAN_CHAINS, UNSUPPORTED_HISTORY_CHAINS, TX_HISTORY_URLS;
22925
23098
  var init_txUrls = __esm({
22926
23099
  "src/internal/components/TransactionsMenu/txUrls.ts"() {
22927
- import_read15 = require("@embarkai/core/read");
23100
+ import_read17 = require("@embarkai/core/read");
22928
23101
  init_base();
22929
23102
  ETHERSCAN_V2_API_URL = "https://api.etherscan.io/v2/api";
22930
23103
  BLOCKSCOUT_API_URLS = {
22931
- [import_read15.ARBITRUM_SEPOLIA_CHAIN_ID]: "https://arbitrum-sepolia.blockscout.com/api",
22932
- [import_read15.BASE_SEPOLIA_CHAIN_ID]: "https://base-sepolia.blockscout.com/api"
23104
+ [import_read17.ARBITRUM_SEPOLIA_CHAIN_ID]: "https://arbitrum-sepolia.blockscout.com/api",
23105
+ [import_read17.BASE_SEPOLIA_CHAIN_ID]: "https://base-sepolia.blockscout.com/api"
22933
23106
  };
22934
23107
  CHAIN_SPECIFIC_API_URLS = {};
22935
23108
  ETHERSCAN_CHAINS = /* @__PURE__ */ new Set([
22936
- import_read15.SEPOLIA_CHAIN_ID,
22937
- import_read15.ARBITRUM_SEPOLIA_CHAIN_ID,
22938
- import_read15.BASE_SEPOLIA_CHAIN_ID
23109
+ import_read17.SEPOLIA_CHAIN_ID,
23110
+ import_read17.ARBITRUM_SEPOLIA_CHAIN_ID,
23111
+ import_read17.BASE_SEPOLIA_CHAIN_ID
22939
23112
  ]);
22940
23113
  UNSUPPORTED_HISTORY_CHAINS = /* @__PURE__ */ new Set([
22941
- import_read15.BSC_TESTNET_CHAIN_ID
23114
+ import_read17.BSC_TESTNET_CHAIN_ID
22942
23115
  ]);
22943
23116
  TX_HISTORY_URLS = {
22944
- [import_read15.LUMIA_TESTNET_CHAIN_ID]: (p) => {
23117
+ [import_read17.LUMIA_TESTNET_CHAIN_ID]: (p) => {
22945
23118
  const result = getBlockscoutHistoryUrls(p);
22946
23119
  return {
22947
23120
  transactionsUrl: result.transactionsUrl,
@@ -22949,7 +23122,7 @@ var init_txUrls = __esm({
22949
23122
  tokenTransfersUrl: result.tokenTransfersUrl
22950
23123
  };
22951
23124
  },
22952
- [import_read15.LUMIA_MAINNET_CHAIN_ID]: (p) => {
23125
+ [import_read17.LUMIA_MAINNET_CHAIN_ID]: (p) => {
22953
23126
  const result = getBlockscoutHistoryUrls(p);
22954
23127
  return {
22955
23128
  transactionsUrl: result.transactionsUrl,
@@ -24114,7 +24287,7 @@ var init_package = __esm({
24114
24287
  "package.json"() {
24115
24288
  package_default = {
24116
24289
  name: "@embarkai/ui-kit",
24117
- version: "0.4.38",
24290
+ version: "0.4.39",
24118
24291
  description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
24119
24292
  type: "module",
24120
24293
  main: "./dist/index.cjs",
@@ -25127,9 +25300,9 @@ function getChainParams(chainCfg) {
25127
25300
  return {
25128
25301
  activeChainId: chainCfg.id,
25129
25302
  chainConfig: chainCfg,
25130
- publicClient: (0, import_read16.createPublicClientForChain)(chainCfg.id),
25131
- bundlerClient: (0, import_read16.createBundlerClientForChain)(chainCfg.id),
25132
- viemChain: (0, import_read16.getViemChain)(chainCfg.id)
25303
+ publicClient: (0, import_read18.createPublicClientForChain)(chainCfg.id),
25304
+ bundlerClient: (0, import_read18.createBundlerClientForChain)(chainCfg.id),
25305
+ viemChain: (0, import_read18.getViemChain)(chainCfg.id)
25133
25306
  };
25134
25307
  }
25135
25308
  function waitForStoreHydration() {
@@ -25155,10 +25328,10 @@ function SessionProvider({ children }) {
25155
25328
  /* @__PURE__ */ (0, import_jsx_runtime121.jsx)(Dialog2, {})
25156
25329
  ] });
25157
25330
  }
25158
- var import_read16, import_react89, import_zustand13, import_middleware4, import_jsx_runtime121, useSession, requireActiveChainId;
25331
+ var import_read18, import_react89, import_zustand13, import_middleware4, import_jsx_runtime121, useSession, requireActiveChainId;
25159
25332
  var init_SessionContext = __esm({
25160
25333
  "src/context/SessionContext.tsx"() {
25161
- import_read16 = require("@embarkai/core/read");
25334
+ import_read18 = require("@embarkai/core/read");
25162
25335
  import_react89 = require("react");
25163
25336
  import_zustand13 = require("zustand");
25164
25337
  import_middleware4 = require("zustand/middleware");
@@ -25230,7 +25403,7 @@ var init_SessionContext = __esm({
25230
25403
  // Set default chainId after hydration if not persisted
25231
25404
  onRehydrateStorage: () => (state) => {
25232
25405
  if (!state) return;
25233
- const hydartedChain = getChainParams((0, import_read16.getChainConfig)(state.activeChainId || import_read16.DEFAULT_CHAIN_ID));
25406
+ const hydartedChain = getChainParams((0, import_read18.getChainConfig)(state.activeChainId || import_read18.DEFAULT_CHAIN_ID));
25234
25407
  state.activeChainId = hydartedChain.activeChainId;
25235
25408
  state.publicClient = hydartedChain.publicClient;
25236
25409
  state.bundlerClient = hydartedChain.bundlerClient;
@@ -25305,31 +25478,31 @@ function getExplorerUrl() {
25305
25478
  const paramUrl = typeof window !== "undefined" ? new URLSearchParams(window.location.search).get("explorerUrl") || void 0 : void 0;
25306
25479
  const net = getSelectedNetwork();
25307
25480
  const chainId = requireActiveChainId();
25308
- const chainConfig = (0, import_read17.getChainConfig)(chainId);
25481
+ const chainConfig = (0, import_read19.getChainConfig)(chainId);
25309
25482
  console.log("[getExplorerUrl] ", paramUrl, chainConfig.blockExplorerUrl);
25310
25483
  return paramUrl || chainConfig.blockExplorerUrl;
25311
25484
  }
25312
25485
  function getBundlerClient() {
25313
25486
  const chainId = requireActiveChainId();
25314
- const chainConfig = (0, import_read17.getChainConfig)(chainId);
25315
- const viemChain = (0, import_read17.getViemChain)(chainId);
25487
+ const chainConfig = (0, import_read19.getChainConfig)(chainId);
25488
+ const viemChain = (0, import_read19.getViemChain)(chainId);
25316
25489
  return (0, import_account_abstraction2.createBundlerClient)({
25317
25490
  chain: viemChain,
25318
25491
  transport: (0, import_viem19.http)(chainConfig.bundlerUrl, { timeout: 1e4, retryCount: 0, fetchOptions: { mode: "cors" } })
25319
25492
  });
25320
25493
  }
25321
- var import_read17, import_viem19, import_account_abstraction2, BUILD_NETWORK, lumiaBeamTestnet, lumiaPrisma, FUNDER_PK;
25494
+ var import_read19, import_viem19, import_account_abstraction2, BUILD_NETWORK, lumiaBeamTestnet, lumiaPrisma, FUNDER_PK;
25322
25495
  var init_base = __esm({
25323
25496
  "src/internal/clients/base.ts"() {
25324
25497
  init_initial();
25325
25498
  init_SessionContext();
25326
- import_read17 = require("@embarkai/core/read");
25499
+ import_read19 = require("@embarkai/core/read");
25327
25500
  import_viem19 = require("viem");
25328
25501
  import_account_abstraction2 = require("viem/account-abstraction");
25329
25502
  init_env();
25330
25503
  BUILD_NETWORK = true ? "" : "";
25331
- lumiaBeamTestnet = import_read17.lumiaTestnetChain;
25332
- lumiaPrisma = import_read17.lumiaMainnetChain;
25504
+ lumiaBeamTestnet = import_read19.lumiaTestnetChain;
25505
+ lumiaPrisma = import_read19.lumiaMainnetChain;
25333
25506
  FUNDER_PK = getEnvVar("VITE_FUNDER_PK") || "";
25334
25507
  }
25335
25508
  });
@@ -27570,10 +27743,10 @@ var init_iframe_manager = __esm({
27570
27743
  });
27571
27744
 
27572
27745
  // src/config/rainbowkit.ts
27573
- var import_read18, import_rainbowkit3, import_wallets2, import_wagmi8, import_chains12, getProjectId2, WALLET_MAP, getWagmiStorageKey, buildRainbowChains, createRainbowConfig, rainbowTheme;
27746
+ var import_read20, import_rainbowkit3, import_wallets2, import_wagmi8, import_chains12, getProjectId2, WALLET_MAP, getWagmiStorageKey, buildRainbowChains, createRainbowConfig, rainbowTheme;
27574
27747
  var init_rainbowkit = __esm({
27575
27748
  "src/config/rainbowkit.ts"() {
27576
- import_read18 = require("@embarkai/core/read");
27749
+ import_read20 = require("@embarkai/core/read");
27577
27750
  import_rainbowkit3 = require("@rainbow-me/rainbowkit");
27578
27751
  import_wallets2 = require("@rainbow-me/rainbowkit/wallets");
27579
27752
  import_wagmi8 = require("wagmi");
@@ -27588,8 +27761,9 @@ var init_rainbowkit = __esm({
27588
27761
  WALLET_MAP = {
27589
27762
  walletconnect: import_wallets2.walletConnectWallet,
27590
27763
  metamask: import_wallets2.metaMaskWallet,
27591
- coinbase: import_wallets2.coinbaseWallet,
27592
- rainbow: import_wallets2.rainbowWallet
27764
+ // coinbase: coinbaseWallet,
27765
+ rainbow: import_wallets2.rainbowWallet,
27766
+ binance: import_wallets2.binanceWallet
27593
27767
  };
27594
27768
  getWagmiStorageKey = (options) => {
27595
27769
  const projectId = options?.projectId || "default";
@@ -27598,8 +27772,8 @@ var init_rainbowkit = __esm({
27598
27772
  };
27599
27773
  buildRainbowChains = (supportedChains, preferredChainId) => {
27600
27774
  const availableChains = [
27601
- import_read18.lumiaMainnetChain,
27602
- import_read18.lumiaTestnetChain,
27775
+ import_read20.lumiaMainnetChain,
27776
+ import_read20.lumiaTestnetChain,
27603
27777
  import_chains12.mainnet,
27604
27778
  import_chains12.polygon,
27605
27779
  import_chains12.bsc,
@@ -27886,54 +28060,15 @@ var init_utils11 = __esm({
27886
28060
  }
27887
28061
  });
27888
28062
 
27889
- // src/config/wagmi.ts
27890
- function buildTransport(urls) {
27891
- const transports = urls.map(
27892
- (url) => (0, import_wagmi10.http)(url, {
27893
- timeout: 1e4,
27894
- retryCount: 0,
27895
- batch: false,
27896
- // Disable batch requests
27897
- fetchOptions: { mode: "cors" }
27898
- })
27899
- );
27900
- if (transports.length === 1) {
27901
- return transports[0];
27902
- }
27903
- return (0, import_viem20.fallback)(transports, {
27904
- rank: false,
27905
- retryCount: 0
27906
- });
27907
- }
27908
- var import_read19, import_viem20, import_wagmi10, import_chains13, wagmiConfig;
27909
- var init_wagmi = __esm({
27910
- "src/config/wagmi.ts"() {
27911
- import_read19 = require("@embarkai/core/read");
27912
- import_viem20 = require("viem");
27913
- import_wagmi10 = require("wagmi");
27914
- import_chains13 = require("wagmi/chains");
27915
- wagmiConfig = (0, import_wagmi10.createConfig)({
27916
- chains: [import_read19.lumiaMainnetChain, import_read19.lumiaTestnetChain, import_chains13.bsc, import_chains13.mainnet],
27917
- storage: (0, import_wagmi10.createStorage)({ key: "embark-wagmi-static-v2" }),
27918
- transports: {
27919
- [import_read19.lumiaTestnetChain.id]: buildTransport(import_read19.lumiaTestnetChain.rpcUrls.default.http),
27920
- [import_read19.lumiaMainnetChain.id]: buildTransport(import_read19.lumiaMainnetChain.rpcUrls.default.http),
27921
- [import_chains13.bsc.id]: (0, import_wagmi10.http)(),
27922
- [import_chains13.mainnet.id]: (0, import_wagmi10.http)()
27923
- }
27924
- });
27925
- }
27926
- });
27927
-
27928
28063
  // src/context/WagmiContext.tsx
27929
- var import_wagmi11, import_jsx_runtime123, WagmiProvider2;
28064
+ var import_core7, import_wagmi10, import_jsx_runtime123, WagmiProvider2;
27930
28065
  var init_WagmiContext = __esm({
27931
28066
  "src/context/WagmiContext.tsx"() {
27932
- import_wagmi11 = require("wagmi");
27933
- init_wagmi();
28067
+ import_core7 = require("@embarkai/core");
28068
+ import_wagmi10 = require("wagmi");
27934
28069
  import_jsx_runtime123 = require("react/jsx-runtime");
27935
28070
  WagmiProvider2 = ({ children }) => {
27936
- return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_wagmi11.WagmiProvider, { config: wagmiConfig, children });
28071
+ return /* @__PURE__ */ (0, import_jsx_runtime123.jsx)(import_wagmi10.WagmiProvider, { config: import_core7.wagmiConfig, children });
27937
28072
  };
27938
28073
  }
27939
28074
  });
@@ -28166,7 +28301,7 @@ __export(index_exports, {
28166
28301
  useWalletMode: () => useWalletMode,
28167
28302
  verifyFingerprint: () => verifyFingerprint,
28168
28303
  verifyFingerprintDetailed: () => verifyFingerprintDetailed,
28169
- wagmiConfig: () => wagmiConfig,
28304
+ wagmiConfig: () => import_core8.wagmiConfig,
28170
28305
  waitForStoreHydration: () => waitForStoreHydration,
28171
28306
  waitForUserOperationReceipt: () => waitForUserOperationReceipt
28172
28307
  });
@@ -28176,6 +28311,7 @@ module.exports = __toCommonJS(index_exports);
28176
28311
  var built_default = `.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}@media (min-width:1536px){.container{max-width:1536px}}.embarkai-ui-scope .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.embarkai-ui-scope .pointer-events-none{pointer-events:none}.embarkai-ui-scope .pointer-events-auto{pointer-events:auto}.embarkai-ui-scope .visible{visibility:visible}.embarkai-ui-scope .invisible{visibility:hidden}.embarkai-ui-scope .static{position:static}.embarkai-ui-scope .fixed{position:fixed}.embarkai-ui-scope .absolute{position:absolute}.embarkai-ui-scope .relative{position:relative}.embarkai-ui-scope .sticky{position:sticky}.embarkai-ui-scope .inset-0{inset:0}.embarkai-ui-scope .-right-0\\.5{right:-.125rem}.embarkai-ui-scope .-right-1{right:-.25rem}.embarkai-ui-scope .-right-2{right:-.5rem}.embarkai-ui-scope .-top-0\\.5{top:-.125rem}.embarkai-ui-scope .-top-1{top:-.25rem}.embarkai-ui-scope .-top-2{top:-.5rem}.embarkai-ui-scope .bottom-0{bottom:0}.embarkai-ui-scope .bottom-full{bottom:100%}.embarkai-ui-scope .left-0{left:0}.embarkai-ui-scope .left-1\\/2{left:50%}.embarkai-ui-scope .left-4{left:1rem}.embarkai-ui-scope .right-0{right:0}.embarkai-ui-scope .right-3{right:.75rem}.embarkai-ui-scope .right-4{right:1rem}.embarkai-ui-scope .right-\\[var\\(--ui-kit-pd\\)\\]{right:var(--ui-kit-pd)}.embarkai-ui-scope .right-full{right:100%}.embarkai-ui-scope .top-0{top:0}.embarkai-ui-scope .top-1\\/2{top:50%}.embarkai-ui-scope .top-4{top:1rem}.embarkai-ui-scope .top-\\[var\\(--ui-kit-pd\\)\\]{top:var(--ui-kit-pd)}.embarkai-ui-scope .z-10{z-index:10}.embarkai-ui-scope .z-50{z-index:50}.embarkai-ui-scope .z-\\[9998\\]{z-index:9998}.embarkai-ui-scope .z-\\[9999\\]{z-index:9999}.embarkai-ui-scope .-m-px{margin:-1px}.embarkai-ui-scope .-mx-1{margin-left:-.25rem;margin-right:-.25rem}.embarkai-ui-scope .mx-auto{margin-left:auto;margin-right:auto}.embarkai-ui-scope .my-1{margin-top:.25rem;margin-bottom:.25rem}.embarkai-ui-scope .mb-1{margin-bottom:.25rem}.embarkai-ui-scope .mb-2{margin-bottom:.5rem}.embarkai-ui-scope .mb-3{margin-bottom:.75rem}.embarkai-ui-scope .mb-4{margin-bottom:1rem}.embarkai-ui-scope .ml-1{margin-left:.25rem}.embarkai-ui-scope .ml-2{margin-left:.5rem}.embarkai-ui-scope .ml-auto{margin-left:auto}.embarkai-ui-scope .mr-1{margin-right:.25rem}.embarkai-ui-scope .mt-0\\.5{margin-top:.125rem}.embarkai-ui-scope .mt-1{margin-top:.25rem}.embarkai-ui-scope .mt-2{margin-top:.5rem}.embarkai-ui-scope .mt-4{margin-top:1rem}.embarkai-ui-scope .block{display:block}.embarkai-ui-scope .inline-block{display:inline-block}.embarkai-ui-scope .inline{display:inline}.embarkai-ui-scope .flex{display:flex}.embarkai-ui-scope .inline-flex{display:inline-flex}.embarkai-ui-scope .table{display:table}.embarkai-ui-scope .grid{display:grid}.embarkai-ui-scope .hidden{display:none}.embarkai-ui-scope .aspect-square{aspect-ratio:1/1}.embarkai-ui-scope .size-4{width:1rem;height:1rem}.embarkai-ui-scope .size-8{width:2rem;height:2rem}.embarkai-ui-scope .size-auto{width:auto;height:auto}.embarkai-ui-scope .h-0{height:0}.embarkai-ui-scope .h-1{height:.25rem}.embarkai-ui-scope .h-10{height:2.5rem}.embarkai-ui-scope .h-12{height:3rem}.embarkai-ui-scope .h-16{height:4rem}.embarkai-ui-scope .h-2{height:.5rem}.embarkai-ui-scope .h-3{height:.75rem}.embarkai-ui-scope .h-3\\.5{height:.875rem}.embarkai-ui-scope .h-4{height:1rem}.embarkai-ui-scope .h-48{height:12rem}.embarkai-ui-scope .h-5{height:1.25rem}.embarkai-ui-scope .h-6{height:1.5rem}.embarkai-ui-scope .h-7{height:1.75rem}.embarkai-ui-scope .h-8{height:2rem}.embarkai-ui-scope .h-\\[100dvh\\]{height:100dvh}.embarkai-ui-scope .h-\\[48px\\]{height:48px}.embarkai-ui-scope .h-\\[var\\(--radix-select-trigger-height\\)\\]{height:var(--radix-select-trigger-height)}.embarkai-ui-scope .h-auto{height:auto}.embarkai-ui-scope .h-fit{height:-moz-fit-content;height:fit-content}.embarkai-ui-scope .h-full{height:100%}.embarkai-ui-scope .h-px{height:1px}.embarkai-ui-scope .max-h-64{max-height:16rem}.embarkai-ui-scope .max-h-96{max-height:24rem}.embarkai-ui-scope .max-h-\\[95dvh\\]{max-height:95dvh}.embarkai-ui-scope .min-h-10{min-height:2.5rem}.embarkai-ui-scope .w-1{width:.25rem}.embarkai-ui-scope .w-1\\/2{width:50%}.embarkai-ui-scope .w-10{width:2.5rem}.embarkai-ui-scope .w-12{width:3rem}.embarkai-ui-scope .w-16{width:4rem}.embarkai-ui-scope .w-2{width:.5rem}.embarkai-ui-scope .w-3{width:.75rem}.embarkai-ui-scope .w-3\\.5{width:.875rem}.embarkai-ui-scope .w-4{width:1rem}.embarkai-ui-scope .w-48{width:12rem}.embarkai-ui-scope .w-5{width:1.25rem}.embarkai-ui-scope .w-6{width:1.5rem}.embarkai-ui-scope .w-7{width:1.75rem}.embarkai-ui-scope .w-72{width:18rem}.embarkai-ui-scope .w-8{width:2rem}.embarkai-ui-scope .w-\\[100dvw\\]{width:100dvw}.embarkai-ui-scope .w-\\[40px\\]{width:40px}.embarkai-ui-scope .w-\\[var\\(--ui-kit-maw\\)\\]{width:var(--ui-kit-maw)}.embarkai-ui-scope .w-fit{width:-moz-fit-content;width:fit-content}.embarkai-ui-scope .w-full{width:100%}.embarkai-ui-scope .w-px{width:1px}.embarkai-ui-scope .min-w-0{min-width:0}.embarkai-ui-scope .min-w-10{min-width:2.5rem}.embarkai-ui-scope .min-w-16{min-width:4rem}.embarkai-ui-scope .min-w-\\[256px\\]{min-width:256px}.embarkai-ui-scope .min-w-\\[8rem\\]{min-width:8rem}.embarkai-ui-scope .min-w-\\[var\\(--radix-select-trigger-width\\)\\]{min-width:var(--radix-select-trigger-width)}.embarkai-ui-scope .max-w-\\[100px\\]{max-width:100px}.embarkai-ui-scope .max-w-\\[144px\\]{max-width:144px}.embarkai-ui-scope .max-w-\\[150px\\]{max-width:150px}.embarkai-ui-scope .max-w-\\[160px\\]{max-width:160px}.embarkai-ui-scope .max-w-\\[256px\\]{max-width:256px}.embarkai-ui-scope .max-w-\\[680px\\]{max-width:680px}.embarkai-ui-scope .max-w-\\[80px\\]{max-width:80px}.embarkai-ui-scope .max-w-\\[calc\\(50\\%-8px\\)\\]{max-width:calc(50% - 8px)}.embarkai-ui-scope .max-w-full{max-width:100%}.embarkai-ui-scope .max-w-sm{max-width:24rem}.embarkai-ui-scope .flex-1{flex:1 1 0%}.embarkai-ui-scope .flex-none{flex:none}.embarkai-ui-scope .flex-shrink-0,.embarkai-ui-scope .shrink-0{flex-shrink:0}.embarkai-ui-scope .-translate-x-1\\/2{--tw-translate-x:-50%}.embarkai-ui-scope .-translate-x-1\\/2,.embarkai-ui-scope .-translate-x-\\[var\\(--ui-kit-gap\\)\\]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.embarkai-ui-scope .-translate-x-\\[var\\(--ui-kit-gap\\)\\]{--tw-translate-x:calc(var(--ui-kit-gap)*-1)}.embarkai-ui-scope .-translate-y-1\\/2{--tw-translate-y:-50%}.embarkai-ui-scope .-translate-y-1\\/2,.embarkai-ui-scope .-translate-y-1\\/3{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.embarkai-ui-scope .-translate-y-1\\/3{--tw-translate-y:-33.333333%}.embarkai-ui-scope .rotate-180{--tw-rotate:180deg}.embarkai-ui-scope .rotate-180,.embarkai-ui-scope .transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes glow-warning{0%,to{transform:scale(1);box-shadow:0 0 16px var(--ui-kit-bg-warning)}50%{transform:scale(.97);box-shadow:0 0 4px var(--ui-kit-bg-warning)}}.embarkai-ui-scope .animate-glow-warning{animation:glow-warning 2s ease infinite}@keyframes pulse{50%{opacity:.5}}.embarkai-ui-scope .animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes spin{to{transform:rotate(1turn)}}.embarkai-ui-scope .animate-spin{animation:spin 1s linear infinite}.embarkai-ui-scope .cursor-default{cursor:default}.embarkai-ui-scope .cursor-help{cursor:help}.embarkai-ui-scope .cursor-not-allowed{cursor:not-allowed}.embarkai-ui-scope .cursor-pointer{cursor:pointer}.embarkai-ui-scope .cursor-text{cursor:text}.embarkai-ui-scope .select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.embarkai-ui-scope .select-all{-webkit-user-select:all;-moz-user-select:all;user-select:all}.embarkai-ui-scope .scroll-my-1{scroll-margin-top:.25rem;scroll-margin-bottom:.25rem}.embarkai-ui-scope .list-inside{list-style-position:inside}.embarkai-ui-scope .list-disc{list-style-type:disc}.embarkai-ui-scope .grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-10{grid-template-columns:repeat(10,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-11{grid-template-columns:repeat(11,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.embarkai-ui-scope .grid-cols-8{grid-template-columns:repeat(8,minmax(0,1fr))}.embarkai-ui-scope .flex-col{flex-direction:column}.embarkai-ui-scope .flex-col-reverse{flex-direction:column-reverse}.embarkai-ui-scope .flex-wrap{flex-wrap:wrap}.embarkai-ui-scope .place-content-center{place-content:center}.embarkai-ui-scope .items-start{align-items:flex-start}.embarkai-ui-scope .items-end{align-items:flex-end}.embarkai-ui-scope .items-center{align-items:center}.embarkai-ui-scope .justify-start{justify-content:flex-start}.embarkai-ui-scope .justify-end{justify-content:flex-end}.embarkai-ui-scope .justify-center{justify-content:center}.embarkai-ui-scope .justify-between{justify-content:space-between}.embarkai-ui-scope .gap-0{gap:0}.embarkai-ui-scope .gap-1{gap:.25rem}.embarkai-ui-scope .gap-1\\.5{gap:.375rem}.embarkai-ui-scope .gap-2{gap:.5rem}.embarkai-ui-scope .gap-3{gap:.75rem}.embarkai-ui-scope .gap-4{gap:1rem}.embarkai-ui-scope .gap-\\[10px\\]{gap:10px}.embarkai-ui-scope .gap-\\[var\\(--ui-kit-gap\\)\\]{gap:var(--ui-kit-gap)}.embarkai-ui-scope :is(.space-x-1>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.25rem*var(--tw-space-x-reverse));margin-left:calc(.25rem*(1 - var(--tw-space-x-reverse)))}.embarkai-ui-scope :is(.space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.embarkai-ui-scope :is(.space-y-0\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.125rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem*var(--tw-space-y-reverse))}.embarkai-ui-scope :is(.space-y-1>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.25rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.embarkai-ui-scope :is(.space-y-1\\.5>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.375rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.embarkai-ui-scope :is(.space-y-2>:not([hidden])~:not([hidden])){--tw-space-y-reverse:0;margin-top:calc(.5rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem*var(--tw-space-y-reverse))}.embarkai-ui-scope .overflow-hidden{overflow:hidden}.embarkai-ui-scope .overflow-y-auto{overflow-y:auto}.embarkai-ui-scope .overflow-x-hidden{overflow-x:hidden}.embarkai-ui-scope .truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.embarkai-ui-scope .text-ellipsis{text-overflow:ellipsis}.embarkai-ui-scope .whitespace-nowrap{white-space:nowrap}.embarkai-ui-scope .whitespace-pre-line{white-space:pre-line}.embarkai-ui-scope .whitespace-pre-wrap{white-space:pre-wrap}.embarkai-ui-scope .break-normal{overflow-wrap:normal;word-break:normal}.embarkai-ui-scope .break-words{overflow-wrap:break-word}.embarkai-ui-scope .break-all{word-break:break-all}.embarkai-ui-scope .rounded{border-radius:.25rem}.embarkai-ui-scope .rounded-\\[10px\\]{border-radius:10px}.embarkai-ui-scope .rounded-\\[8px\\]{border-radius:8px}.embarkai-ui-scope .rounded-\\[var\\(--ui-kit-bdrs\\)\\]{border-radius:var(--ui-kit-bdrs)}.embarkai-ui-scope .rounded-\\[var\\(--ui-kit-el-bdrs\\)\\]{border-radius:var(--ui-kit-el-bdrs)}.embarkai-ui-scope .rounded-full{border-radius:9999px}.embarkai-ui-scope .rounded-lg{border-radius:.5rem}.embarkai-ui-scope .rounded-md{border-radius:.375rem}.embarkai-ui-scope .rounded-xl{border-radius:.75rem}.embarkai-ui-scope .border{border-width:1px}.embarkai-ui-scope .border-0{border-width:0}.embarkai-ui-scope .border-2{border-width:2px}.embarkai-ui-scope .border-b{border-bottom-width:1px}.embarkai-ui-scope .border-t{border-top-width:1px}.embarkai-ui-scope .border-dashed{border-style:dashed}.embarkai-ui-scope .border-\\[var\\(--ui-kit-bd\\)\\]{border-color:var(--ui-kit-bd)}.embarkai-ui-scope .border-\\[var\\(--ui-kit-bg-error\\)\\]{border-color:var(--ui-kit-bg-error)}.embarkai-ui-scope .border-\\[var\\(--ui-kit-bg-success\\)\\]{border-color:var(--ui-kit-bg-success)}.embarkai-ui-scope .border-\\[var\\(--ui-kit-bg-warning\\)\\]{border-color:var(--ui-kit-bg-warning)}.embarkai-ui-scope .border-\\[var\\(--ui-kit-error\\)\\]{border-color:var(--ui-kit-error)}.embarkai-ui-scope .border-\\[var\\(--ui-kit-secondary\\)\\]{border-color:var(--ui-kit-secondary)}.embarkai-ui-scope .border-current{border-color:currentColor}.embarkai-ui-scope .border-transparent{border-color:transparent}.embarkai-ui-scope .border-t-transparent{border-top-color:transparent}.embarkai-ui-scope .bg-\\[\\#002c15\\]{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-\\[\\#081f2c\\]{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-\\[\\#f0f6f8\\]{--tw-bg-opacity:1;background-color:rgb(240 246 248/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-\\[\\#f3ba2f\\]{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-accent\\)\\]{background-color:var(--ui-kit-accent)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg\\)\\]{background-color:var(--ui-kit-bg)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg-error\\)\\]{background-color:var(--ui-kit-bg-error)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg-info\\)\\]{background-color:var(--ui-kit-bg-info)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg-secondary\\)\\]{background-color:var(--ui-kit-bg-secondary)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg-success\\)\\]{background-color:var(--ui-kit-bg-success)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-bg-warning\\)\\]{background-color:var(--ui-kit-bg-warning)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-fg\\)\\]{background-color:var(--ui-kit-fg)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-overlay\\)\\]{background-color:var(--ui-kit-overlay)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-primary\\)\\]{background-color:var(--ui-kit-primary)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-secondary\\)\\]{background-color:var(--ui-kit-secondary)}.embarkai-ui-scope .bg-\\[var\\(--ui-kit-secondary-h\\)\\]{background-color:var(--ui-kit-secondary-h)}.embarkai-ui-scope .bg-amber-500{--tw-bg-opacity:1;background-color:rgb(245 158 11/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-blue-100{--tw-bg-opacity:1;background-color:rgb(219 234 254/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-gray-100{--tw-bg-opacity:1;background-color:rgb(243 244 246/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-green-100{--tw-bg-opacity:1;background-color:rgb(220 252 231/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-red-100{--tw-bg-opacity:1;background-color:rgb(254 226 226/var(--tw-bg-opacity,1))}.embarkai-ui-scope .bg-transparent{background-color:transparent}.embarkai-ui-scope .fill-\\[var\\(--ui-kit-bg-warning\\)\\]{fill:var(--ui-kit-bg-warning)}.embarkai-ui-scope .object-contain{-o-object-fit:contain;object-fit:contain}.embarkai-ui-scope .object-cover{-o-object-fit:cover;object-fit:cover}.embarkai-ui-scope .p-0{padding:0}.embarkai-ui-scope .p-1{padding:.25rem}.embarkai-ui-scope .p-2{padding:.5rem}.embarkai-ui-scope .p-3{padding:.75rem}.embarkai-ui-scope .p-4{padding:1rem}.embarkai-ui-scope .p-5{padding:1.25rem}.embarkai-ui-scope .p-6{padding:1.5rem}.embarkai-ui-scope .p-8{padding:2rem}.embarkai-ui-scope .p-\\[2px\\]{padding:2px}.embarkai-ui-scope .p-\\[var\\(--ui-kit-gap\\)\\]{padding:var(--ui-kit-gap)}.embarkai-ui-scope .p-\\[var\\(--ui-kit-pd\\)\\]{padding:var(--ui-kit-pd)}.embarkai-ui-scope .px-0{padding-left:0;padding-right:0}.embarkai-ui-scope .px-1{padding-left:.25rem;padding-right:.25rem}.embarkai-ui-scope .px-2{padding-left:.5rem;padding-right:.5rem}.embarkai-ui-scope .px-3{padding-left:.75rem;padding-right:.75rem}.embarkai-ui-scope .px-4{padding-left:1rem;padding-right:1rem}.embarkai-ui-scope .px-5{padding-left:1.25rem;padding-right:1.25rem}.embarkai-ui-scope .px-8{padding-left:2rem;padding-right:2rem}.embarkai-ui-scope .px-\\[var\\(--ui-kit-gap\\)\\]{padding-left:var(--ui-kit-gap);padding-right:var(--ui-kit-gap)}.embarkai-ui-scope .px-\\[var\\(--ui-kit-pd\\)\\]{padding-left:var(--ui-kit-pd);padding-right:var(--ui-kit-pd)}.embarkai-ui-scope .py-0{padding-top:0;padding-bottom:0}.embarkai-ui-scope .py-1{padding-top:.25rem;padding-bottom:.25rem}.embarkai-ui-scope .py-1\\.5{padding-top:.375rem;padding-bottom:.375rem}.embarkai-ui-scope .py-2{padding-top:.5rem;padding-bottom:.5rem}.embarkai-ui-scope .py-3{padding-top:.75rem;padding-bottom:.75rem}.embarkai-ui-scope .py-4{padding-top:1rem;padding-bottom:1rem}.embarkai-ui-scope .py-8{padding-top:2rem;padding-bottom:2rem}.embarkai-ui-scope .py-\\[10px\\]{padding-top:10px;padding-bottom:10px}.embarkai-ui-scope .py-\\[var\\(--ui-kit-gap\\)\\]{padding-top:var(--ui-kit-gap);padding-bottom:var(--ui-kit-gap)}.embarkai-ui-scope .py-\\[var\\(--ui-kit-pd\\)\\]{padding-top:var(--ui-kit-pd);padding-bottom:var(--ui-kit-pd)}.embarkai-ui-scope .pb-2{padding-bottom:.5rem}.embarkai-ui-scope .pb-5{padding-bottom:1.25rem}.embarkai-ui-scope .pb-6{padding-bottom:1.5rem}.embarkai-ui-scope .pb-\\[var\\(--ui-kit-pd\\)\\]{padding-bottom:var(--ui-kit-pd)}.embarkai-ui-scope .pl-\\[var\\(--ui-kit-pd\\)\\]{padding-left:var(--ui-kit-pd)}.embarkai-ui-scope .pr-8{padding-right:2rem}.embarkai-ui-scope .pt-3{padding-top:.75rem}.embarkai-ui-scope .pt-4{padding-top:1rem}.embarkai-ui-scope .pt-5{padding-top:1.25rem}.embarkai-ui-scope .text-left{text-align:left}.embarkai-ui-scope .text-center{text-align:center}.embarkai-ui-scope .text-right{text-align:right}.embarkai-ui-scope .font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.embarkai-ui-scope .font-sans{font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.embarkai-ui-scope .text-2xl{font-size:1.5rem;line-height:2rem}.embarkai-ui-scope .text-\\[10px\\]{font-size:10px}.embarkai-ui-scope .text-\\[14px\\]{font-size:14px}.embarkai-ui-scope .text-\\[16px\\]{font-size:16px}.embarkai-ui-scope .text-\\[8px\\]{font-size:8px}.embarkai-ui-scope .text-lg{font-size:1.125rem;line-height:1.75rem}.embarkai-ui-scope .text-sm{font-size:.875rem;line-height:1.25rem}.embarkai-ui-scope .text-xl{font-size:1.25rem;line-height:1.75rem}.embarkai-ui-scope .text-xs{font-size:.75rem;line-height:1rem}.embarkai-ui-scope .font-bold{font-weight:700}.embarkai-ui-scope .font-medium{font-weight:500}.embarkai-ui-scope .font-normal{font-weight:400}.embarkai-ui-scope .font-semibold{font-weight:600}.embarkai-ui-scope .uppercase{text-transform:uppercase}.embarkai-ui-scope .lowercase{text-transform:lowercase}.embarkai-ui-scope .leading-3{line-height:.75rem}.embarkai-ui-scope .leading-4{line-height:1rem}.embarkai-ui-scope .leading-5{line-height:1.25rem}.embarkai-ui-scope .leading-6{line-height:1.5rem}.embarkai-ui-scope .leading-8{line-height:2rem}.embarkai-ui-scope .leading-\\[8px\\]{line-height:8px}.embarkai-ui-scope .leading-none{line-height:1}.embarkai-ui-scope .leading-tight{line-height:1.25}.embarkai-ui-scope .tracking-\\[0\\.3em\\]{letter-spacing:.3em}.embarkai-ui-scope .tracking-tight{letter-spacing:-.025em}.embarkai-ui-scope .tracking-wider{letter-spacing:.05em}.embarkai-ui-scope .text-\\[\\#c3f53c\\]{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-\\[var\\(--ui-kit-bg-error\\)\\]{color:var(--ui-kit-bg-error)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-bg-success\\)\\]{color:var(--ui-kit-bg-success)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-bg-warning\\)\\]{color:var(--ui-kit-bg-warning)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-error\\)\\]{color:var(--ui-kit-error)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-fg\\)\\]{color:var(--ui-kit-fg)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-fg-inverted\\)\\]{color:var(--ui-kit-fg-inverted)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-fg-muted\\)\\]{color:var(--ui-kit-fg-muted)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-info\\)\\]{color:var(--ui-kit-info)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-primary\\)\\]{color:var(--ui-kit-primary)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-success\\)\\]{color:var(--ui-kit-success)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-text-secondary\\)\\]{color:var(--ui-kit-text-secondary)}.embarkai-ui-scope .text-\\[var\\(--ui-kit-warning\\)\\]{color:var(--ui-kit-warning)}.embarkai-ui-scope .text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-blue-600{--tw-text-opacity:1;color:rgb(37 99 235/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-blue-800{--tw-text-opacity:1;color:rgb(30 64 175/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-gray-600{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-green-600{--tw-text-opacity:1;color:rgb(22 163 74/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-green-800{--tw-text-opacity:1;color:rgb(22 101 52/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-red-800{--tw-text-opacity:1;color:rgb(153 27 27/var(--tw-text-opacity,1))}.embarkai-ui-scope .text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.embarkai-ui-scope .underline{text-decoration-line:underline}.embarkai-ui-scope .underline-offset-2{text-underline-offset:2px}.embarkai-ui-scope .underline-offset-4{text-underline-offset:4px}.embarkai-ui-scope .antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.embarkai-ui-scope .opacity-0{opacity:0}.embarkai-ui-scope .opacity-100{opacity:1}.embarkai-ui-scope .opacity-50{opacity:.5}.embarkai-ui-scope .opacity-60{opacity:.6}.embarkai-ui-scope .opacity-70{opacity:.7}.embarkai-ui-scope .opacity-90{opacity:.9}.embarkai-ui-scope .shadow{--tw-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px -1px rgba(0,0,0,.1);--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color)}.embarkai-ui-scope .shadow,.embarkai-ui-scope .shadow-lg{box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.embarkai-ui-scope .shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -4px rgba(0,0,0,.1);--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color),0 4px 6px -4px var(--tw-shadow-color)}.embarkai-ui-scope .outline-none{outline:2px solid transparent;outline-offset:2px}.embarkai-ui-scope .outline{outline-style:solid}.embarkai-ui-scope .blur{--tw-blur:blur(8px)}.embarkai-ui-scope .blur,.embarkai-ui-scope .grayscale{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.embarkai-ui-scope .grayscale{--tw-grayscale:grayscale(100%)}.embarkai-ui-scope .filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.embarkai-ui-scope .transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .transition-\\[color\\2c box-shadow\\]{transition-property:color,box-shadow;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .transition-none{transition-property:none}.embarkai-ui-scope .transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .transition-transform{transition-property:transform;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.embarkai-ui-scope .duration-200{transition-duration:.2s}.embarkai-ui-scope .ease-in-out{transition-timing-function:cubic-bezier(.4,0,.2,1)}.embarkai-ui-scope{--ui-kit-ff:var(--embark-ui-ff,-apple-system,BlinkMacSystemFont,"Inter",system-ui,sans-serif);--ui-kit-maw:var(--embark-ui-maw,384px);--ui-kit-pd:var(--embark-ui-pd,12px);--ui-kit-gap:var(--embark-ui-gap,10px);--ui-kit-bdrs:var(--embark-ui-bdrs,20px);--ui-kit-el-bdrs:var(--embark-ui-element-bdrs,10px);--ui-kit-backdrop-blur:var(--embark-ui-backdrop-blur,10px)}.embarkai-ui-scope[data-current-theme-mode=light]{--ui-kit-overlay:var(--embark-ui-overlay,hsla(0,0%,100%,.8));--ui-kit-bg:var(--embark-ui-bg,#fff);--ui-kit-fg:var(--embark-ui-fg,#000);--ui-kit-fg-inverted:var(--embark-ui-fg-inverted,#fff);--ui-kit-fg-muted:var(--embark-ui-fg-muted,rgba(0,0,0,.6));--ui-kit-primary:var(--embark-ui-primary,#000);--ui-kit-primary-h:var(--embark-ui-primary-h,rgba(0,0,0,.8));--ui-kit-primary-a:var(--embark-ui-primary-a,rgba(0,0,0,.6));--ui-kit-secondary:var(--embark-ui-secondary,#e4e4e4);--ui-kit-secondary-h:var(--embark-ui-secondary-h,hsla(0,0%,89%,.8));--ui-kit-secondary-a:var(--embark-ui-secondary-a,hsla(0,0%,89%,.6));--ui-kit-bd:var(--embark-ui-bd,#ebebeb);--ui-kit-bd-intense:var(--embark-ui-bd-intense,#a9a9a9);--ui-kit-shadow:var(--embark-ui-shadow,0 0 0 0 transparent);--ui-kit-shadow-c:var(--embark-ui-shadow-c,rgba(0,0,0,.1));--ui-kit-info:var(--embark-ui-info,var(--ui-kit-fg));--ui-kit-bg-info:var(--embark-ui-bg-info,var(--ui-kit-secondary));--ui-kit-success:var(--embark-ui-success,#000);--ui-kit-bg-success:var(--embark-ui-bg-success,#21ff51);--ui-kit-warning:var(--embark-ui-warning,#000);--ui-kit-bg-warning:var(--embark-ui-bg-warning,#e9fa00);--ui-kit-error:var(--embark-ui-error,#fff);--ui-kit-bg-error:var(--embark-ui-bg-error,#d6204e)}.embarkai-ui-scope[data-current-theme-mode=dark]{--ui-kit-overlay:var(--embark-ui-overlay,rgba(0,0,0,.8));--ui-kit-bg:var(--embark-ui-bg,#1a1a1a);--ui-kit-fg:var(--embark-ui-fg,#fff);--ui-kit-fg-inverted:var(--embark-ui-fg-inverted,#000);--ui-kit-fg-muted:var(--embark-ui-fg-muted,hsla(0,0%,100%,.6));--ui-kit-primary:var(--embark-ui-primary,#fff);--ui-kit-primary-h:var(--embark-ui-primary-h,hsla(0,0%,100%,.8));--ui-kit-primary-a:var(--embark-ui-primary-a,hsla(0,0%,100%,.6));--ui-kit-secondary:var(--embark-ui-secondary,#2a2a2a);--ui-kit-secondary-h:var(--embark-ui-secondary-h,rgba(42,42,42,.6));--ui-kit-secondary-a:var(--embark-ui-secondary-a,rgba(42,42,42,.4));--ui-kit-bd:var(--embark-ui-bd,#3a3a3a);--ui-kit-bd-intense:var(--embark-ui-bd-intense,#4a4a4a);--ui-kit-shadow:var(--embark-ui-shadow,0 0 0 0 transparent);--ui-kit-shadow-c:var(--embark-ui-shadow-c,rgba(0,0,0,.1));--ui-kit-info:var(--embark-ui-info,var(--ui-kit-fg));--ui-kit-bg-info:var(--embark-ui-bg-info,var(--ui-kit-secondary));--ui-kit-success:var(--embark-ui-success,#000);--ui-kit-bg-success:var(--embark-ui-bg-success,#21ff51);--ui-kit-warning:var(--embark-ui-warning,#000);--ui-kit-bg-warning:var(--embark-ui-bg-warning,#e9fa00);--ui-kit-error:var(--embark-ui-error,#fff);--ui-kit-bg-error:var(--embark-ui-bg-error,#d6204e)}.embarkai-ui-scope,.embarkai-ui-scope *{margin:0;box-sizing:border-box;font-family:var(--ui-kit-ff);font-optical-sizing:auto;-webkit-tap-highlight-color:transparent;-moz-tap-highlight-color:transparent;-ms-tap-highlight-color:transparent;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.embarkai-ui-scope button,.embarkai-ui-scope h1,.embarkai-ui-scope h2,.embarkai-ui-scope h3,.embarkai-ui-scope h4,.embarkai-ui-scope h5,.embarkai-ui-scope h6,.embarkai-ui-scope input,.embarkai-ui-scope p,.embarkai-ui-scope select,.embarkai-ui-scope textarea{font-family:var(--ui-kit-ff)!important;margin:0}.embarkai-ui-scope button,.embarkai-ui-scope input,.embarkai-ui-scope select,.embarkai-ui-scope textarea{border-style:solid;outline:none!important;appearance:none!important;-webkit-appearance:none;-moz-appearance:none}.embarkai-ui-scope input,.embarkai-ui-scope textarea{font-size:16px!important}.embarkai-ui-scope .account-connect-button{box-shadow:0 4px 20px var(--ui-kit-shadow-c),inset 0 0 0 1px var(--ui-kit-bd);transition:transform .25s ease}.embarkai-ui-scope .account-connect-button:hover{transform:scale(1.02)}.embarkai-ui-scope .account-connect-button:active{transform:scale(1)}@keyframes lumia-mobile-dialog-fade-in{0%{opacity:0;transform:translateY(64px)}to{opacity:1;transform:translateY(0)}}@keyframes lumia-mobile-dialog-fade-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(64px)}}.embarkai-ui-scope .animate-mobile-dialog-in{animation:lumia-mobile-dialog-fade-in 375ms ease}.embarkai-ui-scope .animate-mobile-dialog-out{animation:lumia-mobile-dialog-fade-out 375ms ease}@keyframes lumia-dialog-fade-in{0%{opacity:0}to{opacity:1}}@keyframes lumia-dialog-fade-out{0%{opacity:1}to{opacity:0}}.embarkai-ui-scope .animate-dialog-in{animation:lumia-dialog-fade-in 375ms ease}.embarkai-ui-scope .animate-dialog-out{animation:lumia-dialog-fade-out 375ms ease}.embarkai-ui-scope .list-scrollbar-y{width:100%;padding-right:var(--ui-kit-list-scrollbar-pd-r,0);overflow-y:auto;overflow-x:hidden;max-height:var(--ui-kit-scrollbar-mah,300px)}.embarkai-ui-scope .list-scrollbar-y::-webkit-scrollbar{width:4px;height:4px}.embarkai-ui-scope .list-scrollbar-y::-webkit-scrollbar-thumb{cursor:pointer;width:4px;border-radius:2px;background-color:var(--ui-kit-bd)}.embarkai-ui-scope .list-scrollbar-y::-webkit-scrollbar-track{margin-top:10px;margin-bottom:10px;background-color:transparent}.embarkai-ui-scope .noScrollbars::-webkit-scrollbar{display:none}.embarkai-ui-scope div[data-radix-popper-content-wrapper]{z-index:10000!important}.embarkai-ui-scope .file\\:mr-\\[var\\(--ui-kit-gap\\)\\]::file-selector-button{margin-right:var(--ui-kit-gap)}.embarkai-ui-scope .file\\:h-12::file-selector-button{height:3rem}.embarkai-ui-scope .file\\:cursor-pointer::file-selector-button{cursor:pointer}.embarkai-ui-scope .file\\:rounded-\\[var\\(--ui-kit-el-bdrs\\)\\]::file-selector-button{border-radius:var(--ui-kit-el-bdrs)}.embarkai-ui-scope .file\\:border-0::file-selector-button{border-width:0}.embarkai-ui-scope .file\\:bg-\\[var\\(--ui-kit-primary\\)\\]::file-selector-button{background-color:var(--ui-kit-primary)}.embarkai-ui-scope .file\\:bg-transparent::file-selector-button{background-color:transparent}.embarkai-ui-scope .file\\:px-\\[var\\(--ui-kit-pd\\)\\]::file-selector-button{padding-left:var(--ui-kit-pd);padding-right:var(--ui-kit-pd)}.embarkai-ui-scope .file\\:text-\\[16px\\]::file-selector-button{font-size:16px}.embarkai-ui-scope .file\\:text-base::file-selector-button{font-size:1rem;line-height:1.5rem}.embarkai-ui-scope .file\\:font-medium::file-selector-button{font-weight:500}.embarkai-ui-scope .file\\:text-\\[var\\(--ui-kit-fg-inverted\\)\\]::file-selector-button{color:var(--ui-kit-fg-inverted)}.embarkai-ui-scope .placeholder\\:text-\\[var\\(--ui-kit-fg-muted\\)\\]::-moz-placeholder{color:var(--ui-kit-fg-muted)}.embarkai-ui-scope .placeholder\\:text-\\[var\\(--ui-kit-fg-muted\\)\\]::placeholder{color:var(--ui-kit-fg-muted)}.embarkai-ui-scope .focus-within\\:bg-\\[var\\(--ui-kit-secondary-a\\)\\]:focus-within{background-color:var(--ui-kit-secondary-a)}.embarkai-ui-scope .focus-within\\:outline-none:focus-within{outline:2px solid transparent;outline-offset:2px}.embarkai-ui-scope .hover\\:bg-\\[\\#002c15\\]:hover{--tw-bg-opacity:1;background-color:rgb(0 44 21/var(--tw-bg-opacity,1))}.embarkai-ui-scope .hover\\:bg-\\[\\#081f2c\\]:hover{--tw-bg-opacity:1;background-color:rgb(8 31 44/var(--tw-bg-opacity,1))}.embarkai-ui-scope .hover\\:bg-\\[\\#f0f6f8\\]:hover{--tw-bg-opacity:1;background-color:rgb(240 246 248/var(--tw-bg-opacity,1))}.embarkai-ui-scope .hover\\:bg-\\[\\#f3ba2f\\]:hover{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.embarkai-ui-scope .hover\\:bg-\\[var\\(--ui-kit-bg\\)\\]:hover{background-color:var(--ui-kit-bg)}.embarkai-ui-scope .hover\\:bg-\\[var\\(--ui-kit-bg-secondary\\)\\]:hover{background-color:var(--ui-kit-bg-secondary)}.embarkai-ui-scope .hover\\:bg-\\[var\\(--ui-kit-secondary\\)\\]:hover{background-color:var(--ui-kit-secondary)}.embarkai-ui-scope .hover\\:bg-\\[var\\(--ui-kit-secondary-h\\)\\]:hover{background-color:var(--ui-kit-secondary-h)}.embarkai-ui-scope .hover\\:bg-gray-50:hover{--tw-bg-opacity:1;background-color:rgb(249 250 251/var(--tw-bg-opacity,1))}.embarkai-ui-scope .hover\\:text-\\[\\#c3f53c\\]:hover{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.embarkai-ui-scope .hover\\:text-\\[var\\(--ui-kit-fg\\)\\]:hover{color:var(--ui-kit-fg)}.embarkai-ui-scope .hover\\:text-gray-600:hover{--tw-text-opacity:1;color:rgb(75 85 99/var(--tw-text-opacity,1))}.embarkai-ui-scope .hover\\:text-gray-700:hover{--tw-text-opacity:1;color:rgb(55 65 81/var(--tw-text-opacity,1))}.embarkai-ui-scope .hover\\:underline:hover{text-decoration-line:underline}.embarkai-ui-scope .hover\\:opacity-100:hover{opacity:1}.embarkai-ui-scope .hover\\:opacity-80:hover{opacity:.8}.embarkai-ui-scope .hover\\:brightness-110:hover{--tw-brightness:brightness(1.1);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.embarkai-ui-scope .file\\:hover\\:opacity-90:hover::file-selector-button{opacity:.9}.embarkai-ui-scope .focus\\:border-\\[var\\(--ui-kit-primary\\)\\]:focus{border-color:var(--ui-kit-primary)}.embarkai-ui-scope .focus\\:bg-\\[var\\(--ui-kit-secondary-a\\)\\]:focus{background-color:var(--ui-kit-secondary-a)}.embarkai-ui-scope .focus\\:bg-transparent:focus{background-color:transparent}.embarkai-ui-scope .focus\\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.embarkai-ui-scope .focus-visible\\:outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.embarkai-ui-scope .focus-visible\\:ring-0:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.embarkai-ui-scope .focus-visible\\:ring-\\[2px\\]:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.embarkai-ui-scope .focus-visible\\:ring-transparent:focus-visible{--tw-ring-color:transparent}.embarkai-ui-scope .focus-visible\\:ring-offset-0:focus-visible{--tw-ring-offset-width:0px}.embarkai-ui-scope .active\\:bg-\\[\\#f3ba2f\\]:active{--tw-bg-opacity:1;background-color:rgb(243 186 47/var(--tw-bg-opacity,1))}.embarkai-ui-scope .active\\:bg-\\[var\\(--ui-kit-bg\\)\\]:active{background-color:var(--ui-kit-bg)}.embarkai-ui-scope .active\\:bg-\\[var\\(--ui-kit-secondary-a\\)\\]:active{background-color:var(--ui-kit-secondary-a)}.embarkai-ui-scope .active\\:text-\\[\\#c3f53c\\]:active{--tw-text-opacity:1;color:rgb(195 245 60/var(--tw-text-opacity,1))}.embarkai-ui-scope .active\\:opacity-60:active{opacity:.6}.embarkai-ui-scope .file\\:active\\:opacity-80:active::file-selector-button{opacity:.8}.embarkai-ui-scope .disabled\\:cursor-default:disabled{cursor:default}.embarkai-ui-scope .disabled\\:cursor-not-allowed:disabled{cursor:not-allowed}.embarkai-ui-scope .disabled\\:opacity-50:disabled{opacity:.5}.embarkai-ui-scope .disabled\\:hover\\:bg-\\[var\\(--ui-kit-bg\\)\\]:hover:disabled{background-color:var(--ui-kit-bg)}.embarkai-ui-scope .disabled\\:hover\\:bg-\\[var\\(--ui-kit-secondary\\)\\]:hover:disabled{background-color:var(--ui-kit-secondary)}.embarkai-ui-scope .disabled\\:hover\\:text-\\[var\\(--ui-kit-bg-error\\)\\]:hover:disabled{color:var(--ui-kit-bg-error)}.embarkai-ui-scope .disabled\\:hover\\:opacity-50:hover:disabled{opacity:.5}.embarkai-ui-scope .disabled\\:active\\:bg-\\[var\\(--ui-kit-bg\\)\\]:active:disabled{background-color:var(--ui-kit-bg)}.embarkai-ui-scope .disabled\\:active\\:text-\\[var\\(--ui-kit-bg-error\\)\\]:active:disabled{color:var(--ui-kit-bg-error)}.embarkai-ui-scope .disabled\\:active\\:opacity-50:active:disabled{opacity:.5}.embarkai-ui-scope :is(.group:hover .group-hover\\:opacity-100){opacity:1}.embarkai-ui-scope .data-\\[disabled\\]\\:pointer-events-none[data-disabled]{pointer-events:none}.embarkai-ui-scope .data-\\[size\\=default\\]\\:h-12[data-size=default]{height:3rem}.embarkai-ui-scope .data-\\[size\\=sm\\]\\:h-10[data-size=sm]{height:2.5rem}.embarkai-ui-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.embarkai-ui-scope .data-\\[side\\=bottom\\]\\:translate-y-1[data-side=bottom],.embarkai-ui-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.embarkai-ui-scope .data-\\[side\\=left\\]\\:-translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.embarkai-ui-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.embarkai-ui-scope .data-\\[side\\=right\\]\\:translate-x-1[data-side=right],.embarkai-ui-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.embarkai-ui-scope .data-\\[side\\=top\\]\\:-translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.embarkai-ui-scope .data-\\[state\\=checked\\]\\:border-\\[var\\(--ui-kit-bd-intense\\)\\][data-state=checked]{border-color:var(--ui-kit-bd-intense)}.embarkai-ui-scope .data-\\[state\\=checked\\]\\:bg-\\[var\\(--ui-kit-secondary\\)\\][data-state=checked]{background-color:var(--ui-kit-secondary)}.embarkai-ui-scope .data-\\[state\\=checked\\]\\:text-\\[var\\(--ui-kit-fg\\)\\][data-state=checked]{color:var(--ui-kit-fg)}.embarkai-ui-scope .data-\\[disabled\\]\\:opacity-50[data-disabled]{opacity:.5}.embarkai-ui-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:line-clamp-1[data-slot=select-value]>*){overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.embarkai-ui-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:flex[data-slot=select-value]>*){display:flex}.embarkai-ui-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:items-center[data-slot=select-value]>*){align-items:center}.embarkai-ui-scope :is(.\\*\\:data-\\[slot\\=select-value\\]\\:gap-\\[var\\(--ui-kit-gap\\)\\][data-slot=select-value]>*){gap:var(--ui-kit-gap)}@media (min-width:640px){.embarkai-ui-scope .sm\\:flex-row{flex-direction:row}.embarkai-ui-scope .sm\\:justify-end{justify-content:flex-end}.embarkai-ui-scope :is(.sm\\:space-x-2>:not([hidden])~:not([hidden])){--tw-space-x-reverse:0;margin-right:calc(.5rem*var(--tw-space-x-reverse));margin-left:calc(.5rem*(1 - var(--tw-space-x-reverse)))}.embarkai-ui-scope .sm\\:text-left{text-align:left}}@media (min-width:768px){.embarkai-ui-scope .md\\:h-8{height:2rem}.embarkai-ui-scope .md\\:w-8{width:2rem}.embarkai-ui-scope .md\\:gap-\\[var\\(--ui-kit-gap\\)\\]{gap:var(--ui-kit-gap)}.embarkai-ui-scope .md\\:py-1{padding-top:.25rem;padding-bottom:.25rem}.embarkai-ui-scope .md\\:text-sm{font-size:.875rem;line-height:1.25rem}.embarkai-ui-scope .md\\:text-xs{font-size:.75rem;line-height:1rem}}.embarkai-ui-scope :is(.\\[\\&_svg\\:not\\(\\[class\\*\\=\\'size-\\'\\]\\)\\]\\:size-4 svg:not([class*=size-])){width:1rem;height:1rem}.embarkai-ui-scope :is(.\\[\\&_svg\\]\\:pointer-events-none svg){pointer-events:none}.embarkai-ui-scope :is(.\\[\\&_svg\\]\\:shrink-0 svg){flex-shrink:0}`;
28177
28312
 
28178
28313
  // src/index.ts
28314
+ var import_core8 = require("@embarkai/core");
28179
28315
  init_ProviderContext();
28180
28316
 
28181
28317
  // src/components/ConnectWalletButton.tsx
@@ -28587,84 +28723,8 @@ init_useLayoutDataStore();
28587
28723
  // src/internal/components/UserOpStatus.tsx
28588
28724
  var import_lucide_react82 = require("lucide-react");
28589
28725
  var React11 = __toESM(require("react"), 1);
28590
-
28591
- // src/clients/bundler/getUserOperationByHash.ts
28592
- init_SessionContext();
28593
- var import_core3 = require("@embarkai/core");
28594
- var import_read20 = require("@embarkai/core/read");
28595
- async function getUserOperationByHash(userOpHash, chainId) {
28596
- const targetChainId = chainId ?? requireActiveChainId();
28597
- const chainConfig = (0, import_read20.getChainConfig)(targetChainId);
28598
- if (!chainConfig) {
28599
- throw new Error(`Chain ${targetChainId} is not supported`);
28600
- }
28601
- if (!chainConfig.bundlerUrl) {
28602
- throw new Error(`Chain ${targetChainId} has no bundlerUrl configured`);
28603
- }
28604
- if (!userOpHash) {
28605
- throw new Error("Operation hash is required");
28606
- }
28607
- try {
28608
- const result = await (0, import_core3.bundlerRpc)("eth_getUserOperationByHash", [userOpHash], chainConfig.bundlerUrl);
28609
- if (!result) {
28610
- return null;
28611
- }
28612
- console.log("[getUserOperationByHash] Receipt:", JSON.stringify(result, null, 2));
28613
- return {
28614
- entryPoint: result.entryPoint,
28615
- userOperation: result.userOperation,
28616
- transactionHash: result.transactionHash,
28617
- blockNumber: result.blockNumber,
28618
- blockHash: result.blockHash
28619
- };
28620
- } catch (error) {
28621
- console.warn("[getUserOperationByHash] Failed to get user operation:", error);
28622
- return null;
28623
- }
28624
- }
28625
-
28626
- // src/clients/bundler/getUserOperationReceipt.ts
28627
- init_SessionContext();
28628
- var import_core4 = require("@embarkai/core");
28629
- var import_read21 = require("@embarkai/core/read");
28630
- async function getUserOperationReceipt(userOpHash, chainId) {
28631
- const targetChainId = chainId ?? requireActiveChainId();
28632
- const chainConfig = (0, import_read21.getChainConfig)(targetChainId);
28633
- if (!chainConfig) {
28634
- throw new Error(`Chain ${targetChainId} is not supported`);
28635
- }
28636
- if (!chainConfig.bundlerUrl) {
28637
- throw new Error(`Chain ${targetChainId} has no bundlerUrl configured`);
28638
- }
28639
- if (!userOpHash) {
28640
- throw new Error("Operation hash is required");
28641
- }
28642
- try {
28643
- const result = await (0, import_core4.bundlerRpc)("eth_getUserOperationReceipt", [userOpHash], chainConfig.bundlerUrl);
28644
- if (!result) {
28645
- return null;
28646
- }
28647
- console.log("[getUserOperationReceipt] Receipt:", JSON.stringify(result, null, 2));
28648
- return {
28649
- userOpHash: result.userOpHash,
28650
- entryPoint: result.entryPoint,
28651
- sender: result.sender,
28652
- nonce: result.nonce,
28653
- success: result.success,
28654
- actualGasCost: result.actualGasCost,
28655
- actualGasUsed: result.actualGasUsed,
28656
- paymaster: result.paymaster,
28657
- receipt: result.receipt,
28658
- logs: result.logs,
28659
- reason: result.reason
28660
- };
28661
- } catch (error) {
28662
- console.warn("[getUserOperationReceipt] Failed to get receipt:", error);
28663
- return null;
28664
- }
28665
- }
28666
-
28667
- // src/internal/components/UserOpStatus.tsx
28726
+ init_getUserOperationByHash();
28727
+ init_getUserOperationReceipt();
28668
28728
  init_cn();
28669
28729
 
28670
28730
  // src/internal/components/Address.tsx
@@ -29184,37 +29244,7 @@ init_useSendTransaction();
29184
29244
 
29185
29245
  // src/hooks/useUserOpStatus.ts
29186
29246
  var React14 = __toESM(require("react"), 1);
29187
-
29188
- // src/clients/bundler/waitForUserOperationReceipt.ts
29189
- init_SessionContext();
29190
- var UserOperationTimeoutError = class extends Error {
29191
- constructor(userOpHash, chainId, timeoutMs) {
29192
- super(`Timeout waiting for UserOperation receipt after ${timeoutMs}ms (hash: ${userOpHash}, chainId: ${chainId})`);
29193
- this.name = "UserOperationTimeoutError";
29194
- this.userOpHash = userOpHash;
29195
- this.chainId = chainId;
29196
- this.timeoutMs = timeoutMs;
29197
- }
29198
- };
29199
- async function waitForUserOperationReceipt(userOpHash, options) {
29200
- const pollIntervalMs = options?.pollIntervalMs ?? 1e3;
29201
- const maxPollTimeMs = options?.maxPollTimeMs ?? 6e4;
29202
- const targetChainId = options?.chainId ?? requireActiveChainId();
29203
- const startTime = Date.now();
29204
- while (true) {
29205
- const elapsed = Date.now() - startTime;
29206
- if (elapsed >= maxPollTimeMs) {
29207
- throw new UserOperationTimeoutError(userOpHash, targetChainId, maxPollTimeMs);
29208
- }
29209
- const receipt = await getUserOperationReceipt(userOpHash, targetChainId);
29210
- if (receipt) {
29211
- return receipt;
29212
- }
29213
- await new Promise((resolve) => setTimeout(resolve, pollIntervalMs));
29214
- }
29215
- }
29216
-
29217
- // src/hooks/useUserOpStatus.ts
29247
+ init_bundler();
29218
29248
  function useUserOpStatus(options = {}) {
29219
29249
  const {
29220
29250
  userOpHash,
@@ -29404,7 +29434,7 @@ function useWalletMode() {
29404
29434
  // src/hooks/useDirectWallet.ts
29405
29435
  var import_react96 = require("react");
29406
29436
  var import_rainbowkit6 = require("@rainbow-me/rainbowkit");
29407
- var import_wagmi13 = require("wagmi");
29437
+ var import_wagmi11 = require("wagmi");
29408
29438
  init_useExternalWalletStore();
29409
29439
  init_useLayoutDataStore();
29410
29440
  function useDirectWallet() {
@@ -29413,7 +29443,7 @@ function useDirectWallet() {
29413
29443
  const isConnected = useExternalWalletStore((st) => st.isExternalConnected);
29414
29444
  const connectorName = useExternalWalletStore((st) => st.connectorName);
29415
29445
  const clearExternalWallet = useExternalWalletStore((st) => st.clearExternalWallet);
29416
- const { disconnect: wagmiDisconnect } = (0, import_wagmi13.useDisconnect)();
29446
+ const { disconnect: wagmiDisconnect } = (0, import_wagmi11.useDisconnect)();
29417
29447
  const { openConnectModal } = (0, import_rainbowkit6.useConnectModal)();
29418
29448
  const setIsWalletLinking = useLayoutDataStore((st) => st.setIsWalletLinking);
29419
29449
  const connect = (0, import_react96.useCallback)(() => {
@@ -29439,14 +29469,14 @@ function useDirectWallet() {
29439
29469
 
29440
29470
  // src/hooks/useSendDirectTransaction.ts
29441
29471
  var import_react97 = require("react");
29442
- var import_viem21 = require("viem");
29443
- var import_wagmi14 = require("wagmi");
29472
+ var import_viem20 = require("viem");
29473
+ var import_wagmi12 = require("wagmi");
29444
29474
  init_useExternalWalletStore();
29445
29475
  function useSendDirectTransaction() {
29446
29476
  const isConnected = useExternalWalletStore((st) => st.isExternalConnected);
29447
29477
  const externalChainId = useExternalWalletStore((st) => st.externalChainId);
29448
- const { sendTransactionAsync } = (0, import_wagmi14.useSendTransaction)();
29449
- const { switchChainAsync } = (0, import_wagmi14.useSwitchChain)();
29478
+ const { sendTransactionAsync } = (0, import_wagmi12.useSendTransaction)();
29479
+ const { switchChainAsync } = (0, import_wagmi12.useSwitchChain)();
29450
29480
  const [isPending, setIsPending] = (0, import_react97.useState)(false);
29451
29481
  const [error, setError] = (0, import_react97.useState)(null);
29452
29482
  const [txHash, setTxHash] = (0, import_react97.useState)(null);
@@ -29456,7 +29486,7 @@ function useSendDirectTransaction() {
29456
29486
  setError("No external wallet connected");
29457
29487
  return null;
29458
29488
  }
29459
- if (!(0, import_viem21.isAddress)(params.to)) {
29489
+ if (!(0, import_viem20.isAddress)(params.to)) {
29460
29490
  setError("Invalid recipient address");
29461
29491
  return null;
29462
29492
  }
@@ -29469,7 +29499,7 @@ function useSendDirectTransaction() {
29469
29499
  }
29470
29500
  const hash = await sendTransactionAsync({
29471
29501
  to: params.to,
29472
- value: (0, import_viem21.parseEther)(params.value),
29502
+ value: (0, import_viem20.parseEther)(params.value),
29473
29503
  data: params.data
29474
29504
  });
29475
29505
  setTxHash(hash);
@@ -29494,7 +29524,7 @@ function useSendDirectTransaction() {
29494
29524
 
29495
29525
  // src/hooks/useTransferToLinkedWallet.ts
29496
29526
  var import_react98 = require("react");
29497
- var import_viem22 = require("viem");
29527
+ var import_viem21 = require("viem");
29498
29528
  init_SessionContext();
29499
29529
  init_account2();
29500
29530
  init_linkedProfiles();
@@ -29526,7 +29556,7 @@ function useTransferToLinkedWallet() {
29526
29556
  return null;
29527
29557
  }
29528
29558
  const toAddress = params.toAddress || linkedWallets[0];
29529
- if (!toAddress || !(0, import_viem22.isAddress)(toAddress)) {
29559
+ if (!toAddress || !(0, import_viem21.isAddress)(toAddress)) {
29530
29560
  setError("No linked wallet address available");
29531
29561
  return null;
29532
29562
  }
@@ -29539,16 +29569,16 @@ function useTransferToLinkedWallet() {
29539
29569
  let data;
29540
29570
  if (params.token === "native") {
29541
29571
  to = toAddress;
29542
- value = (0, import_viem22.parseEther)(params.amount).toString();
29572
+ value = (0, import_viem21.parseEther)(params.amount).toString();
29543
29573
  data = "0x";
29544
29574
  } else {
29545
29575
  const decimals = params.decimals ?? 18;
29546
29576
  to = params.token;
29547
29577
  value = "0";
29548
- data = (0, import_viem22.encodeFunctionData)({
29578
+ data = (0, import_viem21.encodeFunctionData)({
29549
29579
  abi: ERC20_TRANSFER_ABI2,
29550
29580
  functionName: "transfer",
29551
- args: [toAddress, (0, import_viem22.parseUnits)(params.amount, decimals)]
29581
+ args: [toAddress, (0, import_viem21.parseUnits)(params.amount, decimals)]
29552
29582
  });
29553
29583
  }
29554
29584
  const hash = await sendUserOperation(session, {
@@ -29579,11 +29609,11 @@ function useTransferToLinkedWallet() {
29579
29609
  }
29580
29610
 
29581
29611
  // src/hooks/useNativeWalletSignature.ts
29582
- var import_wagmi15 = require("wagmi");
29612
+ var import_wagmi13 = require("wagmi");
29583
29613
  init_providers();
29584
29614
  function useNativeWalletSignature() {
29585
- const signMessage = (0, import_wagmi15.useSignMessage)();
29586
- const signTypedMessage = (0, import_wagmi15.useSignTypedData)();
29615
+ const signMessage = (0, import_wagmi13.useSignMessage)();
29616
+ const signTypedMessage = (0, import_wagmi13.useSignTypedData)();
29587
29617
  return {
29588
29618
  signMessage,
29589
29619
  /** EIP-712 signature */
@@ -29634,34 +29664,38 @@ function useLogout() {
29634
29664
  // src/index.ts
29635
29665
  init_useNicknameResolve();
29636
29666
  init_account2();
29667
+
29668
+ // src/clients/index.ts
29669
+ init_bundler();
29670
+
29671
+ // src/index.ts
29637
29672
  init_auth();
29638
29673
  init_profile();
29639
29674
  init_hooks2();
29640
29675
  init_linkedProfiles();
29641
29676
  init_nickname_fingerprint();
29642
29677
  init_errors();
29643
- init_wagmi();
29644
29678
  init_base();
29645
29679
  init_useBlockscoutAssets();
29646
29680
 
29647
29681
  // src/modules/transactions.ts
29648
29682
  init_SessionContext();
29649
- var import_read22 = require("@embarkai/core/read");
29650
- var import_viem23 = require("viem");
29651
- var import_wagmi16 = require("wagmi");
29683
+ var import_read21 = require("@embarkai/core/read");
29684
+ var import_viem22 = require("viem");
29685
+ var import_wagmi14 = require("wagmi");
29652
29686
  function useTransactions() {
29653
29687
  const chainId = requireActiveChainId();
29654
- const viemChain = (0, import_read22.getViemChain)(chainId);
29655
- const publicClient = (0, import_wagmi16.usePublicClient)({ chainId });
29656
- const { data: walletClient } = (0, import_wagmi16.useWalletClient)();
29657
- const { address } = (0, import_wagmi16.useAccount)();
29688
+ const viemChain = (0, import_read21.getViemChain)(chainId);
29689
+ const publicClient = (0, import_wagmi14.usePublicClient)({ chainId });
29690
+ const { data: walletClient } = (0, import_wagmi14.useWalletClient)();
29691
+ const { address } = (0, import_wagmi14.useAccount)();
29658
29692
  const sendTransaction = async (params) => {
29659
29693
  if (!walletClient) {
29660
29694
  throw new Error("Wallet not connected");
29661
29695
  }
29662
29696
  const txParams = {
29663
29697
  to: params.to,
29664
- value: (0, import_viem23.parseEther)(params.value),
29698
+ value: (0, import_viem22.parseEther)(params.value),
29665
29699
  data: params.data,
29666
29700
  chain: viemChain
29667
29701
  };
@@ -29713,8 +29747,8 @@ function useTransactions() {
29713
29747
  // src/modules/assets.ts
29714
29748
  init_SessionContext();
29715
29749
  var import_react100 = __toESM(require("react"), 1);
29716
- var import_viem24 = require("viem");
29717
- var import_wagmi17 = require("wagmi");
29750
+ var import_viem23 = require("viem");
29751
+ var import_wagmi15 = require("wagmi");
29718
29752
  var COMMON_TOKENS = [
29719
29753
  // Add real token addresses here when available
29720
29754
  // {
@@ -29731,7 +29765,7 @@ function useAssets(address) {
29731
29765
  data: nativeBalance,
29732
29766
  isLoading: nativeBalanceLoading,
29733
29767
  refetch: refetchNativeBalance
29734
- } = (0, import_wagmi17.useBalance)({
29768
+ } = (0, import_wagmi15.useBalance)({
29735
29769
  address,
29736
29770
  chainId,
29737
29771
  query: {
@@ -29740,12 +29774,12 @@ function useAssets(address) {
29740
29774
  });
29741
29775
  const tokenContracts = COMMON_TOKENS.map((token) => ({
29742
29776
  address: token.address,
29743
- abi: import_viem24.erc20Abi,
29777
+ abi: import_viem23.erc20Abi,
29744
29778
  functionName: "balanceOf",
29745
29779
  args: [address],
29746
29780
  chainId
29747
29781
  }));
29748
- const readContractsResult = (0, import_wagmi17.useReadContracts)({
29782
+ const readContractsResult = (0, import_wagmi15.useReadContracts)({
29749
29783
  contracts: tokenContracts,
29750
29784
  query: {
29751
29785
  enabled: !!address && COMMON_TOKENS.length > 0
@@ -29764,7 +29798,7 @@ function useAssets(address) {
29764
29798
  name: "Lumia",
29765
29799
  symbol: "LUMIA",
29766
29800
  balance: nativeBalance.value.toString(),
29767
- formattedBalance: parseFloat((0, import_viem24.formatUnits)(nativeBalance.value, nativeBalance.decimals)).toFixed(4),
29801
+ formattedBalance: parseFloat((0, import_viem23.formatUnits)(nativeBalance.value, nativeBalance.decimals)).toFixed(4),
29768
29802
  decimals: 18
29769
29803
  });
29770
29804
  }
@@ -29773,7 +29807,7 @@ function useAssets(address) {
29773
29807
  const token = COMMON_TOKENS[index];
29774
29808
  if (balance.status === "success" && balance.result) {
29775
29809
  const balanceValue = balance.result;
29776
- const formattedBalance = (0, import_viem24.formatUnits)(balanceValue, token.decimals);
29810
+ const formattedBalance = (0, import_viem23.formatUnits)(balanceValue, token.decimals);
29777
29811
  assets.push({
29778
29812
  type: "erc20",
29779
29813
  address: token.address,
@@ -29798,7 +29832,7 @@ function useAssets(address) {
29798
29832
  const token = COMMON_TOKENS[tokenIndex];
29799
29833
  if (balance.status === "success" && balance.result) {
29800
29834
  const balanceValue = balance.result;
29801
- const formattedBalance = (0, import_viem24.formatUnits)(balanceValue, token.decimals);
29835
+ const formattedBalance = (0, import_viem23.formatUnits)(balanceValue, token.decimals);
29802
29836
  return {
29803
29837
  address: token.address,
29804
29838
  name: token.name,
@@ -29826,11 +29860,11 @@ function useAssets(address) {
29826
29860
  }
29827
29861
  function useTokenInfo(tokenAddress) {
29828
29862
  const chainId = requireActiveChainId();
29829
- const readContractsResult = (0, import_wagmi17.useReadContracts)({
29863
+ const readContractsResult = (0, import_wagmi15.useReadContracts)({
29830
29864
  contracts: [
29831
- { address: tokenAddress, abi: import_viem24.erc20Abi, functionName: "name", chainId },
29832
- { address: tokenAddress, abi: import_viem24.erc20Abi, functionName: "symbol", chainId },
29833
- { address: tokenAddress, abi: import_viem24.erc20Abi, functionName: "decimals", chainId }
29865
+ { address: tokenAddress, abi: import_viem23.erc20Abi, functionName: "name", chainId },
29866
+ { address: tokenAddress, abi: import_viem23.erc20Abi, functionName: "symbol", chainId },
29867
+ { address: tokenAddress, abi: import_viem23.erc20Abi, functionName: "decimals", chainId }
29834
29868
  ]
29835
29869
  });
29836
29870
  const { data: tokenData, isLoading } = readContractsResult;
@@ -29857,9 +29891,9 @@ function useTokenBalance(tokenAddress, userAddress) {
29857
29891
  data: balance,
29858
29892
  isLoading,
29859
29893
  refetch
29860
- } = (0, import_wagmi17.useReadContract)({
29894
+ } = (0, import_wagmi15.useReadContract)({
29861
29895
  address: tokenAddress,
29862
- abi: import_viem24.erc20Abi,
29896
+ abi: import_viem23.erc20Abi,
29863
29897
  functionName: "balanceOf",
29864
29898
  args: userAddress ? [userAddress] : void 0,
29865
29899
  chainId,
@@ -29870,7 +29904,7 @@ function useTokenBalance(tokenAddress, userAddress) {
29870
29904
  const { tokenInfo } = useTokenInfo(tokenAddress);
29871
29905
  const formattedBalance = import_react100.default.useMemo(() => {
29872
29906
  if (!balance || !tokenInfo) return "0";
29873
- return (0, import_viem24.formatUnits)(balance, tokenInfo.decimals);
29907
+ return (0, import_viem23.formatUnits)(balance, tokenInfo.decimals);
29874
29908
  }, [balance, tokenInfo]);
29875
29909
  return {
29876
29910
  balance,
@@ -29882,9 +29916,9 @@ function useTokenBalance(tokenAddress, userAddress) {
29882
29916
  }
29883
29917
 
29884
29918
  // src/modules/smartAccountTransactions.ts
29885
- var import_viem25 = require("viem");
29919
+ var import_viem24 = require("viem");
29886
29920
  init_SessionContext();
29887
- var USER_OP_EVENT = (0, import_viem25.parseAbiItem)(
29921
+ var USER_OP_EVENT = (0, import_viem24.parseAbiItem)(
29888
29922
  "event UserOperationEvent(bytes32 indexed userOpHash, address indexed sender, address indexed paymaster, uint256 nonce, bool success, uint256 actualGasCost, uint256 actualGasUsed)"
29889
29923
  );
29890
29924
  function useSmartAccountTransactions() {