@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/iframe/index.html +1 -1
- package/dist/iframe/main.js +1 -1
- package/dist/index.cjs +311 -277
- package/dist/index.d.cts +8 -124
- package/dist/index.d.ts +8 -124
- package/dist/index.js +249 -211
- package/package.json +2 -2
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
6080
|
-
switchingWalletChain: "\u6B63\u5728\u5207\u6362\u94FE...",
|
|
6076
|
+
balanceInsufficient: "\u4F59\u989D\u4E0D\u8DB3",
|
|
6081
6077
|
txPrepare: "\u6B63\u5728\u51C6\u5907\u4EA4\u6613...",
|
|
6082
|
-
|
|
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:
|
|
19618
|
-
|
|
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
|
-
|
|
19643
|
-
|
|
19644
|
-
|
|
19645
|
-
|
|
19646
|
-
|
|
19647
|
-
|
|
19648
|
-
|
|
19649
|
-
|
|
19650
|
-
|
|
19651
|
-
|
|
19652
|
-
|
|
19653
|
-
|
|
19654
|
-
|
|
19655
|
-
|
|
19656
|
-
|
|
19657
|
-
|
|
19658
|
-
|
|
19659
|
-
|
|
19660
|
-
|
|
19661
|
-
|
|
19662
|
-
|
|
19663
|
-
|
|
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
|
|
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:
|
|
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:
|
|
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
|
|
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
|
-
|
|
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
|
-
[
|
|
22932
|
-
[
|
|
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
|
-
|
|
22937
|
-
|
|
22938
|
-
|
|
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
|
-
|
|
23114
|
+
import_read17.BSC_TESTNET_CHAIN_ID
|
|
22942
23115
|
]);
|
|
22943
23116
|
TX_HISTORY_URLS = {
|
|
22944
|
-
[
|
|
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
|
-
[
|
|
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.
|
|
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,
|
|
25131
|
-
bundlerClient: (0,
|
|
25132
|
-
viemChain: (0,
|
|
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
|
|
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
|
-
|
|
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,
|
|
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,
|
|
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,
|
|
25315
|
-
const viemChain = (0,
|
|
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
|
|
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
|
-
|
|
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 =
|
|
25332
|
-
lumiaPrisma =
|
|
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
|
|
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
|
-
|
|
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:
|
|
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
|
-
|
|
27602
|
-
|
|
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
|
|
28064
|
+
var import_core7, import_wagmi10, import_jsx_runtime123, WagmiProvider2;
|
|
27930
28065
|
var init_WagmiContext = __esm({
|
|
27931
28066
|
"src/context/WagmiContext.tsx"() {
|
|
27932
|
-
|
|
27933
|
-
|
|
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)(
|
|
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
|
-
|
|
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
|
|
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,
|
|
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
|
|
29443
|
-
var
|
|
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,
|
|
29449
|
-
const { switchChainAsync } = (0,
|
|
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,
|
|
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,
|
|
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
|
|
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,
|
|
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,
|
|
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,
|
|
29578
|
+
data = (0, import_viem21.encodeFunctionData)({
|
|
29549
29579
|
abi: ERC20_TRANSFER_ABI2,
|
|
29550
29580
|
functionName: "transfer",
|
|
29551
|
-
args: [toAddress, (0,
|
|
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
|
|
29612
|
+
var import_wagmi13 = require("wagmi");
|
|
29583
29613
|
init_providers();
|
|
29584
29614
|
function useNativeWalletSignature() {
|
|
29585
|
-
const signMessage = (0,
|
|
29586
|
-
const signTypedMessage = (0,
|
|
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
|
|
29650
|
-
var
|
|
29651
|
-
var
|
|
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,
|
|
29655
|
-
const publicClient = (0,
|
|
29656
|
-
const { data: walletClient } = (0,
|
|
29657
|
-
const { address } = (0,
|
|
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,
|
|
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
|
|
29717
|
-
var
|
|
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,
|
|
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:
|
|
29777
|
+
abi: import_viem23.erc20Abi,
|
|
29744
29778
|
functionName: "balanceOf",
|
|
29745
29779
|
args: [address],
|
|
29746
29780
|
chainId
|
|
29747
29781
|
}));
|
|
29748
|
-
const readContractsResult = (0,
|
|
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,
|
|
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,
|
|
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,
|
|
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,
|
|
29863
|
+
const readContractsResult = (0, import_wagmi15.useReadContracts)({
|
|
29830
29864
|
contracts: [
|
|
29831
|
-
{ address: tokenAddress, abi:
|
|
29832
|
-
{ address: tokenAddress, abi:
|
|
29833
|
-
{ address: tokenAddress, abi:
|
|
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,
|
|
29894
|
+
} = (0, import_wagmi15.useReadContract)({
|
|
29861
29895
|
address: tokenAddress,
|
|
29862
|
-
abi:
|
|
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,
|
|
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
|
|
29919
|
+
var import_viem24 = require("viem");
|
|
29886
29920
|
init_SessionContext();
|
|
29887
|
-
var USER_OP_EVENT = (0,
|
|
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() {
|