@embarkai/ui-kit 0.4.59 → 0.4.60
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 +1102 -989
- package/dist/index.d.cts +14 -40
- package/dist/index.d.ts +14 -40
- package/dist/index.js +665 -556
- package/dist/styles.css +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -842,8 +842,8 @@ var init_constants = __esm({
|
|
|
842
842
|
MAX_CONTENT_HEIGHT = 640;
|
|
843
843
|
MAIN_DIALOG_ANIMATION_SPEED = 375;
|
|
844
844
|
Y_ANIMATION_SETUP = { duration: 0.15, ease: "easeInOut", height: { duration: 0.375 } };
|
|
845
|
-
BLOCKSCOUT_QUERY_STALE_TIME =
|
|
846
|
-
BLOCKSCOUT_QUERY_GC_TIME =
|
|
845
|
+
BLOCKSCOUT_QUERY_STALE_TIME = 3e4;
|
|
846
|
+
BLOCKSCOUT_QUERY_GC_TIME = 3e5;
|
|
847
847
|
BLOCKSCOUT_REFRESH_DEBOUNCE = 2e3;
|
|
848
848
|
IPFS_GATEWAY = "https://ipfs.io/ipfs/";
|
|
849
849
|
PROVIDERS_META = {
|
|
@@ -867,31 +867,31 @@ var PageKey, useLayoutDataStore;
|
|
|
867
867
|
var init_useLayoutDataStore = __esm({
|
|
868
868
|
"src/internal/hooks/useLayoutDataStore.ts"() {
|
|
869
869
|
init_constants();
|
|
870
|
-
PageKey = /* @__PURE__ */ ((
|
|
871
|
-
|
|
872
|
-
|
|
873
|
-
|
|
874
|
-
|
|
875
|
-
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
887
|
-
|
|
888
|
-
|
|
889
|
-
|
|
890
|
-
|
|
891
|
-
|
|
892
|
-
|
|
893
|
-
|
|
894
|
-
return
|
|
870
|
+
PageKey = /* @__PURE__ */ ((PageKey3) => {
|
|
871
|
+
PageKey3["AUTH"] = "auth";
|
|
872
|
+
PageKey3["LANGUAGES"] = "languages";
|
|
873
|
+
PageKey3["TERMS_OF_SERVICE"] = "terms-of-service";
|
|
874
|
+
PageKey3["MAIN_MENU"] = "main-menu";
|
|
875
|
+
PageKey3["SETTINGS"] = "settings";
|
|
876
|
+
PageKey3["SEND"] = "send";
|
|
877
|
+
PageKey3["RECEIVE"] = "receive";
|
|
878
|
+
PageKey3["BUY"] = "buy";
|
|
879
|
+
PageKey3["KYC"] = "kyc";
|
|
880
|
+
PageKey3["TRANSACTIONS"] = "transactions";
|
|
881
|
+
PageKey3["ASSETS"] = "assets";
|
|
882
|
+
PageKey3["MANAGE_WALLET"] = "manage-wallet";
|
|
883
|
+
PageKey3["UNLINK_PROVIDER"] = "unlink-provider";
|
|
884
|
+
PageKey3["SECURITY"] = "security";
|
|
885
|
+
PageKey3["KEYSARE_BACKUP"] = "keysare-backup";
|
|
886
|
+
PageKey3["KEYSHARE_RESTORE"] = "keyshare-restore";
|
|
887
|
+
PageKey3["CHAIN"] = "chain";
|
|
888
|
+
PageKey3["CHAIN_SWITCH_REQUEST"] = "chain-switch-request";
|
|
889
|
+
PageKey3["NICKNAME_SETTINGS"] = "nickname-settings";
|
|
890
|
+
PageKey3["DEVICES"] = "devices";
|
|
891
|
+
PageKey3["DEVICE_LINK"] = "device-link";
|
|
892
|
+
PageKey3["DEVICE_MANAGE"] = "device-manage";
|
|
893
|
+
PageKey3["DEVICE_RESTORE"] = "device-restore";
|
|
894
|
+
return PageKey3;
|
|
895
895
|
})(PageKey || {});
|
|
896
896
|
useLayoutDataStore = create((set) => ({
|
|
897
897
|
page: null,
|
|
@@ -934,92 +934,88 @@ var init_useLayoutDataStore = __esm({
|
|
|
934
934
|
});
|
|
935
935
|
|
|
936
936
|
// src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx
|
|
937
|
+
import { NON_BLOCKSCOUT_CORE_TOKENS } from "@embarkai/core/read";
|
|
937
938
|
import { useQuery } from "@tanstack/react-query";
|
|
938
939
|
import { useEffect, useState } from "react";
|
|
939
|
-
import { formatUnits } from "viem";
|
|
940
|
+
import { erc20Abi, formatUnits } from "viem";
|
|
940
941
|
async function getAssetRate(symbol = "LUMIA", fiat = "USDT") {
|
|
941
942
|
if (SKIP_SYMBOLS.includes(symbol) || symbol === fiat) return { symbol, price: "1" };
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
943
|
+
try {
|
|
944
|
+
const assetURL = `https://api.binance.com/api/v3/ticker/price?symbol=${symbol.toUpperCase()}${fiat.toUpperCase()}`;
|
|
945
|
+
const response = await fetch(assetURL);
|
|
946
|
+
return await response.json();
|
|
947
|
+
} catch (err) {
|
|
948
|
+
console.warn("[BALANCE FEED] Failed to fetch asset rate:", { symbol, fiat, error: err });
|
|
949
|
+
return { symbol, price: "1" };
|
|
950
|
+
}
|
|
945
951
|
}
|
|
946
952
|
function BalanceFeedProvider() {
|
|
947
953
|
const config = useProviderConfig().config;
|
|
948
954
|
const address = useSession((st) => st.address);
|
|
949
955
|
const chainConfig = useSession((st) => st.chainConfig);
|
|
950
956
|
const publicClient = useSession((st) => st.publicClient);
|
|
951
|
-
const { setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore();
|
|
952
957
|
const [balanceSymbol, setBalanceSymbol] = useState(null);
|
|
953
|
-
useEffect(
|
|
954
|
-
|
|
955
|
-
|
|
956
|
-
|
|
957
|
-
|
|
958
|
-
|
|
959
|
-
|
|
960
|
-
|
|
961
|
-
const { data:
|
|
962
|
-
|
|
963
|
-
|
|
964
|
-
|
|
958
|
+
useEffect(
|
|
959
|
+
() => setBalanceSymbol(config?.current?.showBalanceAs || chainConfig.nativeCurrency.symbol),
|
|
960
|
+
[config, address, chainConfig]
|
|
961
|
+
);
|
|
962
|
+
useEffect(
|
|
963
|
+
() => useLayoutDataStore.getState().setCryptoSymbol(chainConfig?.nativeCurrency?.symbol || "LUMIA"),
|
|
964
|
+
[chainConfig]
|
|
965
|
+
);
|
|
966
|
+
const { data: cryptoRate } = useQuery({
|
|
967
|
+
queryKey: [LUMIA_RATE_QUERY_KEY, address, balanceSymbol],
|
|
968
|
+
enabled: !!address && !!balanceSymbol,
|
|
969
|
+
refetchInterval: BALANCE_POLLING_INTERVAL * 2,
|
|
970
|
+
queryFn: async () => await getAssetRate(balanceSymbol, "USDT")
|
|
971
|
+
});
|
|
972
|
+
const isNativeBalanceFeedEnabled = !!balanceSymbol && !!chainConfig?.nativeCurrency.symbol && balanceSymbol === chainConfig?.nativeCurrency.symbol;
|
|
973
|
+
const { data: nativeBalance } = useQuery({
|
|
974
|
+
enabled: !!isNativeBalanceFeedEnabled && !!address && !!publicClient,
|
|
975
|
+
retry: false,
|
|
965
976
|
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
977
|
+
queryKey: [NATIVE_BALANCE_QUERY_KEY, address, chainConfig?.nativeCurrency?.symbol],
|
|
978
|
+
// Include chainId in query key to refetch when chain changes
|
|
966
979
|
queryFn: async () => {
|
|
967
|
-
if (!address || !publicClient) return null;
|
|
968
980
|
const balanceValue = await publicClient.getBalance({ address });
|
|
969
981
|
return {
|
|
970
982
|
decimals: chainConfig?.nativeCurrency?.decimals || 18,
|
|
971
983
|
formatted: formatUnits(balanceValue, chainConfig?.nativeCurrency?.decimals || 18),
|
|
972
|
-
symbol:
|
|
984
|
+
symbol: chainConfig?.nativeCurrency?.symbol || "LUMIA",
|
|
973
985
|
value: balanceValue
|
|
974
986
|
};
|
|
975
987
|
}
|
|
976
988
|
});
|
|
977
989
|
useEffect(() => {
|
|
978
|
-
|
|
979
|
-
|
|
980
|
-
|
|
981
|
-
|
|
982
|
-
|
|
983
|
-
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
984
|
-
queryFn: async () => getAssetRate(nativeSymbol, "USDT")
|
|
985
|
-
});
|
|
986
|
-
useEffect(() => {
|
|
987
|
-
const rate = cryptoRate ? Number(cryptoRate.price) : null;
|
|
988
|
-
if (!isNativeBalanceFeedEnabled || !balance || !rate) return;
|
|
989
|
-
const fiatBalanceValue = Number(formatUnits(BigInt(balance.value || "0"), balance.decimals || 18));
|
|
990
|
+
if (!isNativeBalanceFeedEnabled) return;
|
|
991
|
+
const nativeSymbol = chainConfig?.nativeCurrency?.symbol || "LUMIA";
|
|
992
|
+
const rate = Number(cryptoRate?.price || "1");
|
|
993
|
+
const formattedBalance = Number(formatUnits(BigInt(nativeBalance?.value || "0"), nativeBalance?.decimals || 18));
|
|
994
|
+
const { setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore.getState();
|
|
990
995
|
setCryptoRate(rate);
|
|
991
996
|
setCryptoSymbol(nativeSymbol);
|
|
992
997
|
setFiatSymbol("USD");
|
|
993
|
-
setFiatBalance(
|
|
994
|
-
setBalance(
|
|
995
|
-
}, [
|
|
996
|
-
isNativeBalanceFeedEnabled,
|
|
997
|
-
balance,
|
|
998
|
-
cryptoRate,
|
|
999
|
-
nativeSymbol,
|
|
1000
|
-
setFiatBalance,
|
|
1001
|
-
setCryptoRate,
|
|
1002
|
-
setBalance,
|
|
1003
|
-
setCryptoSymbol,
|
|
1004
|
-
setFiatSymbol
|
|
1005
|
-
]);
|
|
998
|
+
setFiatBalance(formattedBalance * rate);
|
|
999
|
+
setBalance(nativeBalance || { decimals: 18, formatted: "0", symbol: nativeSymbol, value: BigInt(0) });
|
|
1000
|
+
}, [isNativeBalanceFeedEnabled, nativeBalance, cryptoRate, chainConfig]);
|
|
1006
1001
|
const {
|
|
1007
|
-
balanceQuery:
|
|
1008
|
-
balanceQueryKey:
|
|
1009
|
-
symbol:
|
|
1010
|
-
} = config.current?.projectAssets?.assets?.find((a) => a.symbol === config.current?.
|
|
1011
|
-
const
|
|
1012
|
-
const { data:
|
|
1002
|
+
balanceQuery: projectAssetBalanceQueryFn,
|
|
1003
|
+
balanceQueryKey: PROJECT_ASSET_BALANCE_QUERY_KEY,
|
|
1004
|
+
symbol: projectAssetAssetSymbol
|
|
1005
|
+
} = config.current?.projectAssets?.assets?.find((a) => a.symbol === config.current?.showBalanceAs) || {};
|
|
1006
|
+
const isProjectAssetBalanceEnabled = !!balanceSymbol && !!projectAssetAssetSymbol && balanceSymbol === projectAssetAssetSymbol;
|
|
1007
|
+
const { data: projectAssetBalance } = useQuery({
|
|
1013
1008
|
retry: false,
|
|
1014
1009
|
refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
1015
|
-
enabled: !!address && !!
|
|
1016
|
-
queryKey:
|
|
1010
|
+
enabled: !!address && !!isProjectAssetBalanceEnabled,
|
|
1011
|
+
queryKey: PROJECT_ASSET_BALANCE_QUERY_KEY,
|
|
1017
1012
|
// should be invalidated by host app via provided queryKey
|
|
1018
|
-
queryFn: async () => await
|
|
1013
|
+
queryFn: async () => await projectAssetBalanceQueryFn?.()
|
|
1019
1014
|
});
|
|
1020
1015
|
useEffect(() => {
|
|
1021
|
-
if (!
|
|
1022
|
-
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } =
|
|
1016
|
+
if (!isProjectAssetBalanceEnabled || !projectAssetBalance) return;
|
|
1017
|
+
const { cryptoFiatRate, fiatFormatted, cryptoFormatted, cryptoSymbol, fiatSymbol } = projectAssetBalance;
|
|
1018
|
+
const { setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore.getState();
|
|
1023
1019
|
if (!!cryptoSymbol) setCryptoSymbol(cryptoSymbol?.toUpperCase());
|
|
1024
1020
|
if (!!fiatSymbol) setFiatSymbol(fiatSymbol?.toUpperCase());
|
|
1025
1021
|
setCryptoRate(cryptoFiatRate || 1);
|
|
@@ -1027,31 +1023,71 @@ function BalanceFeedProvider() {
|
|
|
1027
1023
|
setBalance({
|
|
1028
1024
|
decimals: 18,
|
|
1029
1025
|
formatted: cryptoFormatted?.toString() || "0",
|
|
1030
|
-
symbol: cryptoSymbol?.toUpperCase()
|
|
1026
|
+
symbol: cryptoSymbol?.toUpperCase(),
|
|
1031
1027
|
value: BigInt(Math.floor((cryptoFormatted || 0) * 10 ** 18))
|
|
1032
1028
|
});
|
|
1033
|
-
}, [
|
|
1034
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
1037
|
-
|
|
1038
|
-
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
1042
|
-
|
|
1029
|
+
}, [isProjectAssetBalanceEnabled, projectAssetBalance]);
|
|
1030
|
+
const isCustomAssetBalanceEnabled = !isNativeBalanceFeedEnabled && !isProjectAssetBalanceEnabled;
|
|
1031
|
+
const { data: customBalance } = useQuery({
|
|
1032
|
+
// enabled: !!isCustomAssetBalanceEnabled && !!balanceSymbol && !!chainConfig?.id && !!address && !!publicClient,
|
|
1033
|
+
enabled: true,
|
|
1034
|
+
// retry: false,
|
|
1035
|
+
// refetchInterval: BALANCE_POLLING_INTERVAL,
|
|
1036
|
+
staleTime: 0,
|
|
1037
|
+
queryKey: [CUSTOM_BALANCE_QUERY_KEY, chainConfig?.id, address, balanceSymbol],
|
|
1038
|
+
// Include chainId in query key to refetch when chain changes
|
|
1039
|
+
queryFn: async () => {
|
|
1040
|
+
const coreTokenList = NON_BLOCKSCOUT_CORE_TOKENS[chainConfig?.id] || [];
|
|
1041
|
+
const watchTokensList = (config?.current?.watchTokens?.[chainConfig?.id] || []).map((el) => ({
|
|
1042
|
+
address: el.address,
|
|
1043
|
+
decimals: el.decimals,
|
|
1044
|
+
symbol: el.symbol
|
|
1045
|
+
}));
|
|
1046
|
+
const customAssetList = [...watchTokensList, ...coreTokenList];
|
|
1047
|
+
const { address: customAssetAddress, decimals: customAssetADecimals } = customAssetList.find((el) => el.symbol === balanceSymbol) || {};
|
|
1048
|
+
if (!customAssetAddress) {
|
|
1049
|
+
console.warn(`[BALANCE FEED] No token address found for symbol ${balanceSymbol} on chain ${chainConfig?.name}`);
|
|
1050
|
+
return { decimals: 18, formatted: "0", symbol: balanceSymbol, value: BigInt(0) };
|
|
1051
|
+
}
|
|
1052
|
+
const balanceValue = await await publicClient.readContract({
|
|
1053
|
+
address: customAssetAddress,
|
|
1054
|
+
abi: erc20Abi,
|
|
1055
|
+
functionName: "balanceOf",
|
|
1056
|
+
args: [address],
|
|
1057
|
+
authorizationList: void 0
|
|
1058
|
+
});
|
|
1059
|
+
return {
|
|
1060
|
+
decimals: customAssetADecimals || 18,
|
|
1061
|
+
formatted: formatUnits(balanceValue, customAssetADecimals || 18),
|
|
1062
|
+
symbol: balanceSymbol,
|
|
1063
|
+
value: balanceValue
|
|
1064
|
+
};
|
|
1065
|
+
}
|
|
1066
|
+
});
|
|
1067
|
+
useEffect(() => {
|
|
1068
|
+
if (!isCustomAssetBalanceEnabled || !customBalance) return;
|
|
1069
|
+
const rate = Number(cryptoRate?.price || "1");
|
|
1070
|
+
const formattedBalance = Number(formatUnits(BigInt(customBalance?.value || "0"), customBalance?.decimals || 18));
|
|
1071
|
+
const { setCryptoRate, setFiatBalance, setBalance, setCryptoSymbol, setFiatSymbol } = useLayoutDataStore.getState();
|
|
1072
|
+
setCryptoRate(rate);
|
|
1073
|
+
setCryptoSymbol(customBalance.symbol);
|
|
1074
|
+
setFiatSymbol("USD");
|
|
1075
|
+
setFiatBalance(formattedBalance * rate);
|
|
1076
|
+
setBalance(customBalance);
|
|
1077
|
+
}, [isCustomAssetBalanceEnabled, customBalance, cryptoRate]);
|
|
1043
1078
|
return null;
|
|
1044
1079
|
}
|
|
1045
|
-
var BALANCE_POLLING_INTERVAL,
|
|
1080
|
+
var BALANCE_POLLING_INTERVAL, NATIVE_BALANCE_QUERY_KEY, CUSTOM_BALANCE_QUERY_KEY, LUMIA_RATE_QUERY_KEY, SKIP_SYMBOLS;
|
|
1046
1081
|
var init_BalanceFeedProvider = __esm({
|
|
1047
1082
|
"src/internal/components/BalanceFeedProvider/BalanceFeedProvider.tsx"() {
|
|
1048
1083
|
init_ProviderContext();
|
|
1049
1084
|
init_SessionContext();
|
|
1050
1085
|
init_useLayoutDataStore();
|
|
1051
1086
|
BALANCE_POLLING_INTERVAL = 3e4;
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
LUMIA_RATE_QUERY_KEY = "
|
|
1087
|
+
NATIVE_BALANCE_QUERY_KEY = "embarkai-native-balance-query-key";
|
|
1088
|
+
CUSTOM_BALANCE_QUERY_KEY = "embarkai-custom-balance-query-key";
|
|
1089
|
+
LUMIA_RATE_QUERY_KEY = "lembarkai-root-balance-rate-query-key";
|
|
1090
|
+
SKIP_SYMBOLS = ["TEST", "USDT", "P"];
|
|
1055
1091
|
}
|
|
1056
1092
|
});
|
|
1057
1093
|
|
|
@@ -8816,19 +8852,15 @@ function useBuyMenuParams() {
|
|
|
8816
8852
|
useEffect12(() => {
|
|
8817
8853
|
const { pageParams, setPageParams } = useLayoutDataStore.getState();
|
|
8818
8854
|
if (!pageParams || !keys(pageParams).length) return;
|
|
8819
|
-
const { amount, crypto: crypto2,
|
|
8855
|
+
const { amount, crypto: crypto2, onRampWidgetRedirected } = pageParams || {};
|
|
8820
8856
|
switch (true) {
|
|
8821
8857
|
case !!amount:
|
|
8822
8858
|
useBuyMenuStore.getState().setSrcInputAmount(amount);
|
|
8823
8859
|
useBuyMenuStore.getState().setSrcQueryAmount(amount);
|
|
8824
8860
|
case !!crypto2:
|
|
8825
8861
|
useBuyMenuStore.getState().setSelectedCrypto(crypto2);
|
|
8826
|
-
case !!toWalletAddress:
|
|
8827
|
-
useBuyMenuStore.getState().setToWalletAddress(toWalletAddress);
|
|
8828
8862
|
case !!onRampWidgetRedirected:
|
|
8829
8863
|
useBuyMenuStore.getState().setOnRampWidgetRedirectedFn(onRampWidgetRedirected);
|
|
8830
|
-
case !!confirmationMessage:
|
|
8831
|
-
useBuyMenuStore.getState().setConfirmationMessage(confirmationMessage);
|
|
8832
8864
|
}
|
|
8833
8865
|
setPageParams(null);
|
|
8834
8866
|
}, []);
|
|
@@ -8851,8 +8883,8 @@ var init_useBuyMenuStore = __esm({
|
|
|
8851
8883
|
(set) => ({
|
|
8852
8884
|
renderKey: "default-initial-buy-menu-render-key",
|
|
8853
8885
|
setRenderKey: (key) => set({ renderKey: key }),
|
|
8854
|
-
toWalletAddress: null,
|
|
8855
|
-
setToWalletAddress: (toWalletAddress) => set({ toWalletAddress }),
|
|
8886
|
+
// toWalletAddress: null,
|
|
8887
|
+
// setToWalletAddress: (toWalletAddress) => set({ toWalletAddress }),
|
|
8856
8888
|
/** boolean flags */
|
|
8857
8889
|
isTransactionHistory: false,
|
|
8858
8890
|
setIsTransactionHistory: (isTransactionHistory) => {
|
|
@@ -8904,8 +8936,6 @@ var init_useBuyMenuStore = __esm({
|
|
|
8904
8936
|
/** */
|
|
8905
8937
|
onRampWidgetRedirected: noop,
|
|
8906
8938
|
setOnRampWidgetRedirectedFn: (cb) => set({ onRampWidgetRedirected: cb }),
|
|
8907
|
-
confirmationMessage: null,
|
|
8908
|
-
setConfirmationMessage: (message) => set({ confirmationMessage: message }),
|
|
8909
8939
|
error: null,
|
|
8910
8940
|
setError: (error) => set({ error })
|
|
8911
8941
|
}),
|
|
@@ -9486,61 +9516,6 @@ var init_api = __esm({
|
|
|
9486
9516
|
}
|
|
9487
9517
|
});
|
|
9488
9518
|
|
|
9489
|
-
// src/internal/utils/cn.ts
|
|
9490
|
-
import { clsx as clsx2 } from "clsx";
|
|
9491
|
-
function cn2(...inputs) {
|
|
9492
|
-
return twMerge(clsx2(inputs));
|
|
9493
|
-
}
|
|
9494
|
-
var init_cn = __esm({
|
|
9495
|
-
"src/internal/utils/cn.ts"() {
|
|
9496
|
-
init_bundle_mjs();
|
|
9497
|
-
}
|
|
9498
|
-
});
|
|
9499
|
-
|
|
9500
|
-
// src/internal/components/ui/badge.tsx
|
|
9501
|
-
import { cva as cva2 } from "class-variance-authority";
|
|
9502
|
-
import { jsx as jsx36 } from "react/jsx-runtime";
|
|
9503
|
-
function Badge(props) {
|
|
9504
|
-
const { className, variant = "secondary", size = "default", ...rest } = props;
|
|
9505
|
-
return /* @__PURE__ */ jsx36("span", { ...rest, className: cn2(badgeVariants({ variant, size }), className) });
|
|
9506
|
-
}
|
|
9507
|
-
var badgeVariants;
|
|
9508
|
-
var init_badge = __esm({
|
|
9509
|
-
"src/internal/components/ui/badge.tsx"() {
|
|
9510
|
-
init_cn();
|
|
9511
|
-
badgeVariants = cva2(
|
|
9512
|
-
cn2(
|
|
9513
|
-
//
|
|
9514
|
-
"inline-flex items-center",
|
|
9515
|
-
"border font-semibold",
|
|
9516
|
-
"select-none"
|
|
9517
|
-
),
|
|
9518
|
-
{
|
|
9519
|
-
variants: {
|
|
9520
|
-
variant: {
|
|
9521
|
-
outline: "border-[var(--ui-kit-bd)] bg-transparent text-[var(--ui-kit-fg)]",
|
|
9522
|
-
secondary: "border-[var(--ui-kit-secondary)] bg-[var(--ui-kit-secondary)] text-[var(--ui-kit-fg)]",
|
|
9523
|
-
destructive: "border-[var(--ui-kit-bg-error)] bg-[var(--ui-kit-bg-error)] text-[var(--ui-kit-error)]",
|
|
9524
|
-
success: "border-[var(--ui-kit-bg-success)] bg-[var(--ui-kit-bg-success)] text-[var(--ui-kit-success)]",
|
|
9525
|
-
warning: "border-[var(--ui-kit-bg-warning)] bg-[var(--ui-kit-bg-warning)] text-[var(--ui-kit-warning)]"
|
|
9526
|
-
},
|
|
9527
|
-
size: {
|
|
9528
|
-
default: "h-5 px-2 rounded-full text-[10px] gap-[var(--ui-kit-gap)]",
|
|
9529
|
-
medium: "h-8 px-[var(--ui-kit-pd)] rounded-[var(--ui-kit-el-bdrs)] text-sm gap-[var(--ui-kit-gap)]",
|
|
9530
|
-
large: cn2(
|
|
9531
|
-
"whitespace-nowrap text-sm font-semibold font-sans",
|
|
9532
|
-
"h-12 px-[var(--ui-kit-pd)] rounded-[var(--ui-kit-el-bdrs)]"
|
|
9533
|
-
)
|
|
9534
|
-
}
|
|
9535
|
-
},
|
|
9536
|
-
defaultVariants: {
|
|
9537
|
-
variant: "secondary"
|
|
9538
|
-
}
|
|
9539
|
-
}
|
|
9540
|
-
);
|
|
9541
|
-
}
|
|
9542
|
-
});
|
|
9543
|
-
|
|
9544
9519
|
// src/internal/components/BuyMenu/binance/config.ts
|
|
9545
9520
|
import { BSC_MAINNET_CHAIN_ID, LUMIA_MAINNET_CHAIN_ID } from "@embarkai/core/read";
|
|
9546
9521
|
var CHAIN_ID_TO_BINANCE_NETWORK_TICKER;
|
|
@@ -9556,29 +9531,21 @@ var init_config = __esm({
|
|
|
9556
9531
|
// src/internal/components/BuyMenu/binance/BinanceSummary.tsx
|
|
9557
9532
|
import { useMutation as useMutation5, useQueryClient as useQueryClient3 } from "@tanstack/react-query";
|
|
9558
9533
|
import { InfoIcon as InfoIcon3, LoaderIcon } from "lucide-react";
|
|
9559
|
-
import { jsx as
|
|
9534
|
+
import { jsx as jsx36, jsxs as jsxs31 } from "react/jsx-runtime";
|
|
9560
9535
|
function BinanceSummary(props) {
|
|
9561
9536
|
const { payment } = props;
|
|
9562
9537
|
const qc = useQueryClient3();
|
|
9563
9538
|
const { t } = useT();
|
|
9564
9539
|
const embarkaiAddress = useSession((st) => st.address);
|
|
9565
9540
|
const chainConfig = useSession((st) => st.chainConfig);
|
|
9566
|
-
const {
|
|
9567
|
-
toWalletAddress,
|
|
9568
|
-
selectedFiat,
|
|
9569
|
-
selectedCrypto,
|
|
9570
|
-
srcQueryAmount,
|
|
9571
|
-
redirecting,
|
|
9572
|
-
confirmationMessage,
|
|
9573
|
-
setRedirecting
|
|
9574
|
-
} = useBuyMenuStore();
|
|
9541
|
+
const { selectedFiat, selectedCrypto, srcQueryAmount, redirecting, setRedirecting } = useBuyMenuStore();
|
|
9575
9542
|
const quoteData = useBinanceStore((st) => st.quoteData);
|
|
9576
9543
|
const cryptoToRecieve = Number(quoteData?.totalAmount || "0");
|
|
9577
9544
|
const { mutate: checkoutFundWalletOrder, isPending: isFundWalletOrderCheckouting } = useMutation5({
|
|
9578
9545
|
mutationFn: async () => {
|
|
9579
9546
|
setRedirecting(true);
|
|
9580
9547
|
return await createPreorderMutation({
|
|
9581
|
-
address:
|
|
9548
|
+
address: embarkaiAddress,
|
|
9582
9549
|
amountType: 1,
|
|
9583
9550
|
requestedAmount: String(srcQueryAmount),
|
|
9584
9551
|
fiatCurrency: selectedFiat,
|
|
@@ -9618,14 +9585,14 @@ function BinanceSummary(props) {
|
|
|
9618
9585
|
});
|
|
9619
9586
|
const isContinueDisabled = !!redirecting || !!isFundWalletOrderCheckouting || !quoteData;
|
|
9620
9587
|
if (!quoteData) {
|
|
9621
|
-
return /* @__PURE__ */
|
|
9622
|
-
/* @__PURE__ */
|
|
9623
|
-
/* @__PURE__ */
|
|
9588
|
+
return /* @__PURE__ */ jsx36("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: /* @__PURE__ */ jsxs31(Highlight, { type: "warning", className: "flex gap-[var(--ui-kit-gap)]", children: [
|
|
9589
|
+
/* @__PURE__ */ jsx36(InfoIcon3, { className: "w-4 h-4" }),
|
|
9590
|
+
/* @__PURE__ */ jsx36("span", { children: t("passport:common.errors.oops") })
|
|
9624
9591
|
] }) });
|
|
9625
9592
|
}
|
|
9626
9593
|
return /* @__PURE__ */ jsxs31("div", { className: "w-full flex flex-col gap-[var(--ui-kit-gap)]", children: [
|
|
9627
9594
|
/* @__PURE__ */ jsxs31("div", { className: "flex justify-between text-xs leading-5", children: [
|
|
9628
|
-
/* @__PURE__ */
|
|
9595
|
+
/* @__PURE__ */ jsx36("span", { className: "", children: t("passport:common.amount") }),
|
|
9629
9596
|
/* @__PURE__ */ jsxs31("span", { className: "font-bold", children: [
|
|
9630
9597
|
formatPrice(srcQueryAmount),
|
|
9631
9598
|
" ",
|
|
@@ -9633,7 +9600,7 @@ function BinanceSummary(props) {
|
|
|
9633
9600
|
] })
|
|
9634
9601
|
] }),
|
|
9635
9602
|
/* @__PURE__ */ jsxs31("div", { className: "flex justify-between text-xs leading-5", children: [
|
|
9636
|
-
/* @__PURE__ */
|
|
9603
|
+
/* @__PURE__ */ jsx36("span", { className: "", children: t("passport:buyMenu.summary.youReceive") }),
|
|
9637
9604
|
/* @__PURE__ */ jsxs31("span", { className: "font-bold", children: [
|
|
9638
9605
|
formatPrice(cryptoToRecieve),
|
|
9639
9606
|
" ",
|
|
@@ -9642,7 +9609,7 @@ function BinanceSummary(props) {
|
|
|
9642
9609
|
] }),
|
|
9643
9610
|
/* @__PURE__ */ jsxs31(Highlight, { type: "info", className: "", children: [
|
|
9644
9611
|
/* @__PURE__ */ jsxs31("p", { className: "flex justify-between gap-[var(--ui-kit-gap)] leading-5", children: [
|
|
9645
|
-
/* @__PURE__ */
|
|
9612
|
+
/* @__PURE__ */ jsx36("span", { children: t("passport:buyMenu.summary.networkFee") }),
|
|
9646
9613
|
/* @__PURE__ */ jsxs31("strong", { children: [
|
|
9647
9614
|
formatPrice(Number(quoteData?.networkFee || "0")),
|
|
9648
9615
|
" ",
|
|
@@ -9650,7 +9617,7 @@ function BinanceSummary(props) {
|
|
|
9650
9617
|
] })
|
|
9651
9618
|
] }),
|
|
9652
9619
|
/* @__PURE__ */ jsxs31("p", { className: "flex justify-between gap-[var(--ui-kit-gap)] leading-5", children: [
|
|
9653
|
-
/* @__PURE__ */
|
|
9620
|
+
/* @__PURE__ */ jsx36("span", { children: t("passport:buyMenu.summary.serviceFee") }),
|
|
9654
9621
|
/* @__PURE__ */ jsxs31("strong", { children: [
|
|
9655
9622
|
formatPrice(Number(quoteData?.feeAmount || "0")),
|
|
9656
9623
|
" ",
|
|
@@ -9658,16 +9625,8 @@ function BinanceSummary(props) {
|
|
|
9658
9625
|
] })
|
|
9659
9626
|
] }),
|
|
9660
9627
|
/* @__PURE__ */ jsxs31("p", { className: "flex justify-between gap-[var(--ui-kit-gap)] leading-5", children: [
|
|
9661
|
-
/* @__PURE__ */
|
|
9662
|
-
/* @__PURE__ */
|
|
9663
|
-
] })
|
|
9664
|
-
] }),
|
|
9665
|
-
toWalletAddress && /* @__PURE__ */ jsxs31(Highlight, { type: "warning", children: [
|
|
9666
|
-
/* @__PURE__ */ jsx37("p", { className: "font-bold leading-6", children: t("passport:buyMenu.summary.toAddress.receiver") }),
|
|
9667
|
-
/* @__PURE__ */ jsx37(Badge, { variant: "secondary", size: "medium", className: "w-full text-center justify-center text-[10px]", children: /* @__PURE__ */ jsx37("span", { className: "truncate leading-4", children: toWalletAddress }) }),
|
|
9668
|
-
!!confirmationMessage ? /* @__PURE__ */ jsx37("p", { className: "leading-5", children: confirmationMessage }) : /* @__PURE__ */ jsxs31("p", { className: "leading-4", children: [
|
|
9669
|
-
/* @__PURE__ */ jsx37("span", { children: t("passport:buyMenu.summary.toAddress.message") }),
|
|
9670
|
-
/* @__PURE__ */ jsx37("span", { children: t("passport:buyMenu.summary.toAddress.suggestion") })
|
|
9628
|
+
/* @__PURE__ */ jsx36("span", { children: t("passport:buyMenu.selectPaymentMode") }),
|
|
9629
|
+
/* @__PURE__ */ jsx36("strong", { children: payment?.paymentMethod?.toUpperCase() })
|
|
9671
9630
|
] })
|
|
9672
9631
|
] }),
|
|
9673
9632
|
/* @__PURE__ */ jsxs31(
|
|
@@ -9679,8 +9638,8 @@ function BinanceSummary(props) {
|
|
|
9679
9638
|
variant: "default",
|
|
9680
9639
|
onClick: () => checkoutFundWalletOrder(),
|
|
9681
9640
|
children: [
|
|
9682
|
-
redirecting && /* @__PURE__ */
|
|
9683
|
-
/* @__PURE__ */
|
|
9641
|
+
redirecting && /* @__PURE__ */ jsx36(LoaderIcon, { size: 16, className: "animate-spin" }),
|
|
9642
|
+
/* @__PURE__ */ jsx36("span", { children: redirecting ? "REDIRECTING..." : String(t("passport:buyMenu.actions.confirmPurchase")).toUpperCase() }),
|
|
9684
9643
|
!!quoteData?.totalAmount && /* @__PURE__ */ jsxs31("strong", { children: [
|
|
9685
9644
|
formatPrice(Number(quoteData.totalAmount)),
|
|
9686
9645
|
" ",
|
|
@@ -9697,7 +9656,6 @@ var init_BinanceSummary = __esm({
|
|
|
9697
9656
|
init_SessionContext();
|
|
9698
9657
|
init_i18n();
|
|
9699
9658
|
init_priceFormatter();
|
|
9700
|
-
init_badge();
|
|
9701
9659
|
init_button();
|
|
9702
9660
|
init_highlight();
|
|
9703
9661
|
init_contants();
|
|
@@ -9709,6 +9667,61 @@ var init_BinanceSummary = __esm({
|
|
|
9709
9667
|
}
|
|
9710
9668
|
});
|
|
9711
9669
|
|
|
9670
|
+
// src/internal/utils/cn.ts
|
|
9671
|
+
import { clsx as clsx2 } from "clsx";
|
|
9672
|
+
function cn2(...inputs) {
|
|
9673
|
+
return twMerge(clsx2(inputs));
|
|
9674
|
+
}
|
|
9675
|
+
var init_cn = __esm({
|
|
9676
|
+
"src/internal/utils/cn.ts"() {
|
|
9677
|
+
init_bundle_mjs();
|
|
9678
|
+
}
|
|
9679
|
+
});
|
|
9680
|
+
|
|
9681
|
+
// src/internal/components/ui/badge.tsx
|
|
9682
|
+
import { cva as cva2 } from "class-variance-authority";
|
|
9683
|
+
import { jsx as jsx37 } from "react/jsx-runtime";
|
|
9684
|
+
function Badge(props) {
|
|
9685
|
+
const { className, variant = "secondary", size = "default", ...rest } = props;
|
|
9686
|
+
return /* @__PURE__ */ jsx37("span", { ...rest, className: cn2(badgeVariants({ variant, size }), className) });
|
|
9687
|
+
}
|
|
9688
|
+
var badgeVariants;
|
|
9689
|
+
var init_badge = __esm({
|
|
9690
|
+
"src/internal/components/ui/badge.tsx"() {
|
|
9691
|
+
init_cn();
|
|
9692
|
+
badgeVariants = cva2(
|
|
9693
|
+
cn2(
|
|
9694
|
+
//
|
|
9695
|
+
"inline-flex items-center",
|
|
9696
|
+
"border font-semibold",
|
|
9697
|
+
"select-none"
|
|
9698
|
+
),
|
|
9699
|
+
{
|
|
9700
|
+
variants: {
|
|
9701
|
+
variant: {
|
|
9702
|
+
outline: "border-[var(--ui-kit-bd)] bg-transparent text-[var(--ui-kit-fg)]",
|
|
9703
|
+
secondary: "border-[var(--ui-kit-secondary)] bg-[var(--ui-kit-secondary)] text-[var(--ui-kit-fg)]",
|
|
9704
|
+
destructive: "border-[var(--ui-kit-bg-error)] bg-[var(--ui-kit-bg-error)] text-[var(--ui-kit-error)]",
|
|
9705
|
+
success: "border-[var(--ui-kit-bg-success)] bg-[var(--ui-kit-bg-success)] text-[var(--ui-kit-success)]",
|
|
9706
|
+
warning: "border-[var(--ui-kit-bg-warning)] bg-[var(--ui-kit-bg-warning)] text-[var(--ui-kit-warning)]"
|
|
9707
|
+
},
|
|
9708
|
+
size: {
|
|
9709
|
+
default: "h-5 px-2 rounded-full text-[10px] gap-[var(--ui-kit-gap)]",
|
|
9710
|
+
medium: "h-8 px-[var(--ui-kit-pd)] rounded-[var(--ui-kit-el-bdrs)] text-sm gap-[var(--ui-kit-gap)]",
|
|
9711
|
+
large: cn2(
|
|
9712
|
+
"whitespace-nowrap text-sm font-semibold font-sans",
|
|
9713
|
+
"h-12 px-[var(--ui-kit-pd)] rounded-[var(--ui-kit-el-bdrs)]"
|
|
9714
|
+
)
|
|
9715
|
+
}
|
|
9716
|
+
},
|
|
9717
|
+
defaultVariants: {
|
|
9718
|
+
variant: "secondary"
|
|
9719
|
+
}
|
|
9720
|
+
}
|
|
9721
|
+
);
|
|
9722
|
+
}
|
|
9723
|
+
});
|
|
9724
|
+
|
|
9712
9725
|
// src/internal/components/BuyMenu/binance/statuses.ts
|
|
9713
9726
|
import { values } from "lodash-es";
|
|
9714
9727
|
var STATUS_CODE_TO_MESSAGE, STATUSES_FILTERS;
|
|
@@ -10017,10 +10030,10 @@ var init_BinanceTxHistory = __esm({
|
|
|
10017
10030
|
|
|
10018
10031
|
// src/internal/components/BuyMenu/binance/useBinanceSseTracing.ts
|
|
10019
10032
|
import { useQueryClient as useQueryClient4 } from "@tanstack/react-query";
|
|
10020
|
-
import { useEffect as useEffect14, useRef as
|
|
10033
|
+
import { useEffect as useEffect14, useRef as useRef9 } from "react";
|
|
10021
10034
|
function useBinanceSseTxTracing(walletAddress) {
|
|
10022
10035
|
const qc = useQueryClient4();
|
|
10023
|
-
const debounceRef =
|
|
10036
|
+
const debounceRef = useRef9(null);
|
|
10024
10037
|
useEffect14(() => {
|
|
10025
10038
|
if (!walletAddress) return;
|
|
10026
10039
|
const iframeManager = getIframeManager();
|
|
@@ -10674,10 +10687,10 @@ var init_networks = __esm({
|
|
|
10674
10687
|
|
|
10675
10688
|
// src/internal/components/BuyMenu/finchpay/useFinchpaySseTxTracing.ts
|
|
10676
10689
|
import { useQueryClient as useQueryClient6 } from "@tanstack/react-query";
|
|
10677
|
-
import { useEffect as useEffect16, useRef as
|
|
10690
|
+
import { useEffect as useEffect16, useRef as useRef10 } from "react";
|
|
10678
10691
|
function useFinchpaySseTxTracing(walletAddress) {
|
|
10679
10692
|
const qc = useQueryClient6();
|
|
10680
|
-
const debounceRef =
|
|
10693
|
+
const debounceRef = useRef10(null);
|
|
10681
10694
|
useEffect16(() => {
|
|
10682
10695
|
if (!walletAddress) return;
|
|
10683
10696
|
const iframeManager = getIframeManager();
|
|
@@ -11105,7 +11118,7 @@ var init_ProviderSelector = __esm({
|
|
|
11105
11118
|
});
|
|
11106
11119
|
|
|
11107
11120
|
// src/internal/components/BuyMenu/useHandleInputAmount.ts
|
|
11108
|
-
import { useEffect as useEffect18, useRef as
|
|
11121
|
+
import { useEffect as useEffect18, useRef as useRef11 } from "react";
|
|
11109
11122
|
var ON_INPUT_QUERY_DELAY, useHandleInputAmount;
|
|
11110
11123
|
var init_useHandleInputAmount = __esm({
|
|
11111
11124
|
"src/internal/components/BuyMenu/useHandleInputAmount.ts"() {
|
|
@@ -11113,11 +11126,11 @@ var init_useHandleInputAmount = __esm({
|
|
|
11113
11126
|
init_useBuyMenuStore();
|
|
11114
11127
|
ON_INPUT_QUERY_DELAY = 1500;
|
|
11115
11128
|
useHandleInputAmount = () => {
|
|
11116
|
-
const lastRampProviderRef =
|
|
11129
|
+
const lastRampProviderRef = useRef11(DEFAULT_PROVIDER2);
|
|
11117
11130
|
const rampProvider = useBuyMenuStore((st) => st.rampProvider);
|
|
11118
11131
|
const srcInputAmount = useBuyMenuStore((st) => st.srcInputAmount);
|
|
11119
11132
|
const minAmount = useBuyMenuStore((st) => st.minAmount);
|
|
11120
|
-
const queryAmountTimer =
|
|
11133
|
+
const queryAmountTimer = useRef11(null);
|
|
11121
11134
|
useEffect18(() => {
|
|
11122
11135
|
if (queryAmountTimer.current) clearTimeout(queryAmountTimer.current);
|
|
11123
11136
|
queryAmountTimer.current = setTimeout(() => {
|
|
@@ -11498,8 +11511,7 @@ var init_truncateMiddle = __esm({
|
|
|
11498
11511
|
|
|
11499
11512
|
// src/internal/components/ChainsMenu/ChainItem.tsx
|
|
11500
11513
|
import { getChainConfig as getChainConfig7 } from "@embarkai/core/read";
|
|
11501
|
-
import {
|
|
11502
|
-
import { useRef as useRef13, useState as useState9 } from "react";
|
|
11514
|
+
import { ExternalLink, Loader as Loader6 } from "lucide-react";
|
|
11503
11515
|
import { jsx as jsx51, jsxs as jsxs45 } from "react/jsx-runtime";
|
|
11504
11516
|
function getPaymasterExplorerUrl(chainId, paymasterAddress) {
|
|
11505
11517
|
const chainConfig = getChainConfig7(chainId);
|
|
@@ -11519,10 +11531,9 @@ function ChainItem(props) {
|
|
|
11519
11531
|
setNextChainId
|
|
11520
11532
|
} = props;
|
|
11521
11533
|
const { t } = useT();
|
|
11534
|
+
const address = useSession((st) => st.address);
|
|
11522
11535
|
const isSessionLoading = useSession((st) => st.isLoading);
|
|
11523
11536
|
const activeChainId = useSession((st) => st.activeChainId);
|
|
11524
|
-
const [copiedChainId, setCopiedChainId] = useState9(null);
|
|
11525
|
-
const copiedResetTimerRef = useRef13(null);
|
|
11526
11537
|
const isActiveChain = activeChainId === chainId;
|
|
11527
11538
|
const paymasterAddress = isActiveChain ? activePaymasterData?.address : null;
|
|
11528
11539
|
const paymasterExplorerUrl = paymasterAddress ? getPaymasterExplorerUrl(chainId, paymasterAddress) : null;
|
|
@@ -11562,55 +11573,58 @@ function ChainItem(props) {
|
|
|
11562
11573
|
},
|
|
11563
11574
|
children: [
|
|
11564
11575
|
isLoading && chainId === nextChainId ? /* @__PURE__ */ jsx51("div", { className: "w-7 h-7 flex items-center justify-center", children: /* @__PURE__ */ jsx51(Loader6, { className: "h-4 w-4 animate-spin" }) }) : /* @__PURE__ */ jsx51(Icon2, { className: "w-7 h-7" }),
|
|
11565
|
-
/* @__PURE__ */ jsxs45("div", { className: "min-w-0 flex-1 flex flex-col
|
|
11576
|
+
/* @__PURE__ */ jsxs45("div", { className: "min-w-0 flex-1 flex flex-col", children: [
|
|
11566
11577
|
/* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-2", children: [
|
|
11567
11578
|
/* @__PURE__ */ jsx51(
|
|
11568
11579
|
"span",
|
|
11569
11580
|
{
|
|
11570
|
-
className: cn2("block flex-1 uppercase text-left text-sm truncate", {
|
|
11571
|
-
"font-bold": isActiveChain
|
|
11581
|
+
className: cn2("block flex-1 uppercase text-left text-sm truncate leading-6", {
|
|
11582
|
+
"font-bold leading-7": isActiveChain
|
|
11572
11583
|
}),
|
|
11573
11584
|
children: name
|
|
11574
11585
|
}
|
|
11575
11586
|
),
|
|
11576
11587
|
/* @__PURE__ */ jsx51(Badge, { variant: badge.toLowerCase() === "mainnet" ? "success" : "secondary", children: badge })
|
|
11577
11588
|
] }),
|
|
11578
|
-
isActiveChain &&
|
|
11579
|
-
/* @__PURE__ */ jsx51("span", { className: "flex-none uppercase", children: "
|
|
11589
|
+
isActiveChain && /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-[var(--ui-kit-gap)] text-xs leading-5", children: [
|
|
11590
|
+
/* @__PURE__ */ jsx51("span", { className: "flex-none uppercase", children: "Explorer" }),
|
|
11580
11591
|
/* @__PURE__ */ jsxs45(
|
|
11581
11592
|
Button,
|
|
11582
11593
|
{
|
|
11583
11594
|
type: "button",
|
|
11584
11595
|
size: "small",
|
|
11585
11596
|
variant: "ghost",
|
|
11586
|
-
className: "text-[var(--ui-kit-fg-inverted)]",
|
|
11597
|
+
className: "text-[var(--ui-kit-fg-inverted)] h-5",
|
|
11587
11598
|
title: `${paymasterAddress} (SOURCE: ${paymasterSource})`,
|
|
11588
11599
|
onClick: (e) => {
|
|
11589
11600
|
e.stopPropagation();
|
|
11590
|
-
window.open(
|
|
11601
|
+
address && window.open(`${getExplorerUrl()}/address/${address}`, "_blank");
|
|
11591
11602
|
},
|
|
11592
11603
|
children: [
|
|
11593
|
-
/* @__PURE__ */ jsx51("span", { className: "text-xs", children: truncateMiddle(
|
|
11604
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xs", children: truncateMiddle(address) }),
|
|
11594
11605
|
/* @__PURE__ */ jsx51(ExternalLink, { className: "w-4 h-4 flex-none" })
|
|
11595
11606
|
]
|
|
11596
11607
|
}
|
|
11597
|
-
)
|
|
11598
|
-
|
|
11608
|
+
)
|
|
11609
|
+
] }),
|
|
11610
|
+
isActiveChain && paymasterAddress && /* @__PURE__ */ jsxs45("div", { className: "flex items-center gap-[var(--ui-kit-gap)] text-xs leading-5", children: [
|
|
11611
|
+
/* @__PURE__ */ jsx51("span", { className: "flex-none uppercase", children: "Paymaster" }),
|
|
11612
|
+
/* @__PURE__ */ jsxs45(
|
|
11599
11613
|
Button,
|
|
11600
11614
|
{
|
|
11601
11615
|
type: "button",
|
|
11602
11616
|
size: "small",
|
|
11603
11617
|
variant: "ghost",
|
|
11604
|
-
|
|
11605
|
-
|
|
11606
|
-
onClick: (
|
|
11607
|
-
|
|
11608
|
-
|
|
11609
|
-
setCopiedChainId(chainId);
|
|
11610
|
-
if (copiedResetTimerRef.current) clearTimeout(copiedResetTimerRef.current);
|
|
11611
|
-
copiedResetTimerRef.current = setTimeout(() => setCopiedChainId(null), 1500);
|
|
11618
|
+
className: "text-[var(--ui-kit-fg-inverted)] h-5",
|
|
11619
|
+
title: `${paymasterAddress} (SOURCE: ${paymasterSource})`,
|
|
11620
|
+
onClick: (e) => {
|
|
11621
|
+
e.stopPropagation();
|
|
11622
|
+
window.open(paymasterExplorerUrl || paymasterAddress, "_blank", "noopener,noreferrer");
|
|
11612
11623
|
},
|
|
11613
|
-
children:
|
|
11624
|
+
children: [
|
|
11625
|
+
/* @__PURE__ */ jsx51("span", { className: "text-xs", children: truncateMiddle(paymasterAddress) }),
|
|
11626
|
+
/* @__PURE__ */ jsx51(ExternalLink, { className: "w-4 h-4 flex-none" })
|
|
11627
|
+
]
|
|
11614
11628
|
}
|
|
11615
11629
|
)
|
|
11616
11630
|
] })
|
|
@@ -11623,9 +11637,9 @@ var init_ChainItem = __esm({
|
|
|
11623
11637
|
"src/internal/components/ChainsMenu/ChainItem.tsx"() {
|
|
11624
11638
|
init_SessionContext();
|
|
11625
11639
|
init_useT();
|
|
11626
|
-
init_icons();
|
|
11627
11640
|
init_cn();
|
|
11628
11641
|
init_truncateMiddle();
|
|
11642
|
+
init_base2();
|
|
11629
11643
|
init_badge();
|
|
11630
11644
|
init_button();
|
|
11631
11645
|
}
|
|
@@ -11636,13 +11650,13 @@ import { PAYMASTER_CACHE_TTL_MS } from "@embarkai/core";
|
|
|
11636
11650
|
import { getChainConfig as getChainConfig8, SUPPORTED_MAINNETS as SUPPORTED_MAINNETS2 } from "@embarkai/core/read";
|
|
11637
11651
|
import { useQuery as useQuery4 } from "@tanstack/react-query";
|
|
11638
11652
|
import { ArrowLeft as ArrowLeft4 } from "lucide-react";
|
|
11639
|
-
import { useMemo as useMemo5, useState as
|
|
11653
|
+
import { useMemo as useMemo5, useState as useState9 } from "react";
|
|
11640
11654
|
import { jsx as jsx52, jsxs as jsxs46 } from "react/jsx-runtime";
|
|
11641
11655
|
function ChainsMenu() {
|
|
11642
11656
|
const config = useProviderConfig().config;
|
|
11643
11657
|
const activeChainId = useSession((st) => st.activeChainId);
|
|
11644
|
-
const [isTestnets, setIsTestnets] =
|
|
11645
|
-
const [nextChainId, setNextChainId] =
|
|
11658
|
+
const [isTestnets, setIsTestnets] = useState9(false);
|
|
11659
|
+
const [nextChainId, setNextChainId] = useState9(null);
|
|
11646
11660
|
const { t } = useT();
|
|
11647
11661
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
11648
11662
|
const visibleNetworks = useMemo5(() => {
|
|
@@ -11891,7 +11905,7 @@ var init_devices = __esm({
|
|
|
11891
11905
|
});
|
|
11892
11906
|
|
|
11893
11907
|
// src/internal/components/DevicesMenu/DeviceLinkScreen.tsx
|
|
11894
|
-
import { useState as
|
|
11908
|
+
import { useState as useState10 } from "react";
|
|
11895
11909
|
import { ArrowLeft as ArrowLeft6, Loader2 as Loader22 } from "lucide-react";
|
|
11896
11910
|
import { jsx as jsx54, jsxs as jsxs48 } from "react/jsx-runtime";
|
|
11897
11911
|
function getErrorMessage(err) {
|
|
@@ -11913,8 +11927,8 @@ function DeviceLinkScreen() {
|
|
|
11913
11927
|
const setPage = useLayoutDataStore((s) => s.setPage);
|
|
11914
11928
|
const maxScrollHeight = useLayoutStore((s) => s.maxScrollHeight);
|
|
11915
11929
|
const { mutate: link, isPending } = useLinkDevice();
|
|
11916
|
-
const [code, setCode] =
|
|
11917
|
-
const [error, setError] =
|
|
11930
|
+
const [code, setCode] = useState10("");
|
|
11931
|
+
const [error, setError] = useState10(null);
|
|
11918
11932
|
const isValid = code.length === 6 && VALID_CHARS.test(code);
|
|
11919
11933
|
function handleCodeChange(value) {
|
|
11920
11934
|
const upper = value.toUpperCase().slice(0, 6);
|
|
@@ -12494,7 +12508,7 @@ var init_guardian_backup = __esm({
|
|
|
12494
12508
|
});
|
|
12495
12509
|
|
|
12496
12510
|
// src/internal/components/DevicesMenu/DeviceManageScreen.tsx
|
|
12497
|
-
import { useCallback as useCallback14, useEffect as useEffect19, useRef as
|
|
12511
|
+
import { useCallback as useCallback14, useEffect as useEffect19, useRef as useRef12, useState as useState11 } from "react";
|
|
12498
12512
|
import { ArrowLeft as ArrowLeft7, Cpu, Download, HardDrive, Loader2 as Loader23, Trash2, Upload } from "lucide-react";
|
|
12499
12513
|
import { Fragment as Fragment15, jsx as jsx55, jsxs as jsxs49 } from "react/jsx-runtime";
|
|
12500
12514
|
function formatSize(bytes) {
|
|
@@ -12509,13 +12523,13 @@ function DeviceManageScreen() {
|
|
|
12509
12523
|
const userId = session?.mpcUserId || "";
|
|
12510
12524
|
const deviceId = pageParams?.deviceId;
|
|
12511
12525
|
const deviceName = pageParams?.deviceName;
|
|
12512
|
-
const guardianRef =
|
|
12513
|
-
const [screen, setScreen] =
|
|
12514
|
-
const [actionState, setActionState] =
|
|
12515
|
-
const [password, setPassword] =
|
|
12516
|
-
const [statusMessage, setStatusMessage] =
|
|
12517
|
-
const [errorMessage, setErrorMessage] =
|
|
12518
|
-
const [waitingConfirm, setWaitingConfirm] =
|
|
12526
|
+
const guardianRef = useRef12(null);
|
|
12527
|
+
const [screen, setScreen] = useState11({ step: "connecting" });
|
|
12528
|
+
const [actionState, setActionState] = useState11(null);
|
|
12529
|
+
const [password, setPassword] = useState11("");
|
|
12530
|
+
const [statusMessage, setStatusMessage] = useState11(null);
|
|
12531
|
+
const [errorMessage, setErrorMessage] = useState11(null);
|
|
12532
|
+
const [waitingConfirm, setWaitingConfirm] = useState11(false);
|
|
12519
12533
|
useEffect19(() => {
|
|
12520
12534
|
if (!statusMessage) return;
|
|
12521
12535
|
const t = setTimeout(() => setStatusMessage(null), 3e3);
|
|
@@ -12786,7 +12800,7 @@ var init_DeviceManageScreen = __esm({
|
|
|
12786
12800
|
});
|
|
12787
12801
|
|
|
12788
12802
|
// src/internal/components/DevicesMenu/DeviceRestoreScreen.tsx
|
|
12789
|
-
import { useCallback as useCallback15, useState as
|
|
12803
|
+
import { useCallback as useCallback15, useState as useState12 } from "react";
|
|
12790
12804
|
import { AlertTriangle as AlertTriangle3, ArrowLeft as ArrowLeft8, Download as Download2, Loader2 as Loader24 } from "lucide-react";
|
|
12791
12805
|
import { Fragment as Fragment16, jsx as jsx56, jsxs as jsxs50 } from "react/jsx-runtime";
|
|
12792
12806
|
function DeviceRestoreScreen() {
|
|
@@ -12798,10 +12812,10 @@ function DeviceRestoreScreen() {
|
|
|
12798
12812
|
const keyshareId = pageParams?.keyshareId;
|
|
12799
12813
|
const deviceId = pageParams?.deviceId;
|
|
12800
12814
|
const deviceName = pageParams?.deviceName;
|
|
12801
|
-
const [password, setPassword] =
|
|
12802
|
-
const [isWorking, setIsWorking] =
|
|
12803
|
-
const [statusMessage, setStatusMessage] =
|
|
12804
|
-
const [errorMessage, setErrorMessage] =
|
|
12815
|
+
const [password, setPassword] = useState12("");
|
|
12816
|
+
const [isWorking, setIsWorking] = useState12(false);
|
|
12817
|
+
const [statusMessage, setStatusMessage] = useState12(null);
|
|
12818
|
+
const [errorMessage, setErrorMessage] = useState12(null);
|
|
12805
12819
|
const handleRestore = useCallback15(async () => {
|
|
12806
12820
|
if (!password || !keyshareId || !userId) return;
|
|
12807
12821
|
const iframe4 = getIframeManager();
|
|
@@ -12902,7 +12916,7 @@ var init_DeviceRestoreScreen = __esm({
|
|
|
12902
12916
|
});
|
|
12903
12917
|
|
|
12904
12918
|
// src/internal/components/DevicesMenu/DevicesMenu.tsx
|
|
12905
|
-
import { useState as
|
|
12919
|
+
import { useState as useState13 } from "react";
|
|
12906
12920
|
import { ArrowLeft as ArrowLeft9, Cpu as Cpu2, Monitor, CheckCircle, Trash2 as Trash22, Loader2 as Loader25, RefreshCw, HardDrive as HardDrive2 } from "lucide-react";
|
|
12907
12921
|
import { jsx as jsx57, jsxs as jsxs51 } from "react/jsx-runtime";
|
|
12908
12922
|
function DeviceIcon({ deviceType }) {
|
|
@@ -12914,8 +12928,8 @@ function truncateAddress(address) {
|
|
|
12914
12928
|
return `${address.slice(0, 6)}...${address.slice(-4)}`;
|
|
12915
12929
|
}
|
|
12916
12930
|
function DeviceRow({ device }) {
|
|
12917
|
-
const [confirmingUnlink, setConfirmingUnlink] =
|
|
12918
|
-
const [unlinkError, setUnlinkError] =
|
|
12931
|
+
const [confirmingUnlink, setConfirmingUnlink] = useState13(false);
|
|
12932
|
+
const [unlinkError, setUnlinkError] = useState13(null);
|
|
12919
12933
|
const { mutate: unlink, isPending } = useUnlinkDevice();
|
|
12920
12934
|
if (confirmingUnlink) {
|
|
12921
12935
|
return /* @__PURE__ */ jsxs51("div", { className: "flex flex-col gap-2 p-3 rounded-lg bg-[var(--ui-kit-bg)]", children: [
|
|
@@ -14089,7 +14103,7 @@ var init_MethodSelector = __esm({
|
|
|
14089
14103
|
|
|
14090
14104
|
// src/internal/components/KeyshareRestoreMenu/components/PasswordPasskey.tsx
|
|
14091
14105
|
import { ChevronRight as ChevronRight2, Eye, EyeOff, Info as Info3, Key as Key4, Loader as Loader8, Plus } from "lucide-react";
|
|
14092
|
-
import { useEffect as useEffect22, useRef as
|
|
14106
|
+
import { useEffect as useEffect22, useRef as useRef13 } from "react";
|
|
14093
14107
|
import { Fragment as Fragment18, jsx as jsx59, jsxs as jsxs53 } from "react/jsx-runtime";
|
|
14094
14108
|
function PasswordPasskey(props) {
|
|
14095
14109
|
const { t } = useT();
|
|
@@ -14104,7 +14118,7 @@ function PasswordPasskey(props) {
|
|
|
14104
14118
|
onCreatePasskey
|
|
14105
14119
|
} = props;
|
|
14106
14120
|
const hasServerVault = useSession((st) => st.hasServerVault);
|
|
14107
|
-
const actionRef =
|
|
14121
|
+
const actionRef = useRef13(null);
|
|
14108
14122
|
const {
|
|
14109
14123
|
showPassword,
|
|
14110
14124
|
restorePassword,
|
|
@@ -14736,7 +14750,7 @@ var init_Cloud = __esm({
|
|
|
14736
14750
|
});
|
|
14737
14751
|
|
|
14738
14752
|
// src/internal/components/KeyshareRestoreMenu/methods/Guardian.tsx
|
|
14739
|
-
import { useState as
|
|
14753
|
+
import { useState as useState15 } from "react";
|
|
14740
14754
|
import { Cpu as Cpu4, Loader2 as Loader26 } from "lucide-react";
|
|
14741
14755
|
import { Fragment as Fragment23, jsx as jsx65, jsxs as jsxs59 } from "react/jsx-runtime";
|
|
14742
14756
|
function Guardian(props) {
|
|
@@ -14745,8 +14759,8 @@ function Guardian(props) {
|
|
|
14745
14759
|
const session = useSession((st) => st.session);
|
|
14746
14760
|
const recoveryUserId = useSession((st) => st.recoveryUserId);
|
|
14747
14761
|
const { onRestoreSuccess } = useOnRestoreSuccess();
|
|
14748
|
-
const [isWorking, setIsWorking] =
|
|
14749
|
-
const [step, setStep] =
|
|
14762
|
+
const [isWorking, setIsWorking] = useState15(false);
|
|
14763
|
+
const [step, setStep] = useState15("idle");
|
|
14750
14764
|
const handleGuardianBackup = async () => {
|
|
14751
14765
|
if (!restorePassword) {
|
|
14752
14766
|
setError("Please enter a password");
|
|
@@ -15437,15 +15451,15 @@ var init_SumsubIframeManager = __esm({
|
|
|
15437
15451
|
});
|
|
15438
15452
|
|
|
15439
15453
|
// src/internal/components/KYC/useSumsubIframe.ts
|
|
15440
|
-
import { useEffect as useEffect28, useRef as
|
|
15454
|
+
import { useEffect as useEffect28, useRef as useRef14, useState as useState16 } from "react";
|
|
15441
15455
|
function useSumsubIframe({ iframeUrl }) {
|
|
15442
15456
|
const config = useProviderConfig().config;
|
|
15443
15457
|
const { colorMode } = useColorMode();
|
|
15444
|
-
const iframeRef =
|
|
15445
|
-
const [isLoading, setIsLoading] =
|
|
15446
|
-
const [error, setError] =
|
|
15447
|
-
const [height, setHeight] =
|
|
15448
|
-
const [status, setStatus] =
|
|
15458
|
+
const iframeRef = useRef14(null);
|
|
15459
|
+
const [isLoading, setIsLoading] = useState16(true);
|
|
15460
|
+
const [error, setError] = useState16(null);
|
|
15461
|
+
const [height, setHeight] = useState16(0);
|
|
15462
|
+
const [status, setStatus] = useState16("");
|
|
15449
15463
|
const levelName = config.current?.kyc?.options?.levelName;
|
|
15450
15464
|
useEffect28(() => {
|
|
15451
15465
|
setError(null);
|
|
@@ -16480,7 +16494,7 @@ var init_telegram2 = __esm({
|
|
|
16480
16494
|
|
|
16481
16495
|
// src/internal/components/ManageWalletMenu/hooks/useLinkTelegram.ts
|
|
16482
16496
|
import { useQueryClient as useQueryClient16 } from "@tanstack/react-query";
|
|
16483
|
-
import { useCallback as useCallback20, useEffect as useEffect31, useState as
|
|
16497
|
+
import { useCallback as useCallback20, useEffect as useEffect31, useState as useState17 } from "react";
|
|
16484
16498
|
function useLinkTelegram() {
|
|
16485
16499
|
const {
|
|
16486
16500
|
config: { current: config },
|
|
@@ -16538,7 +16552,7 @@ function useLinkTelegram() {
|
|
|
16538
16552
|
setLinkIsLoading(false);
|
|
16539
16553
|
}
|
|
16540
16554
|
}, [config.social?.providers]);
|
|
16541
|
-
const [telegramLinkStarted, setTelegramLinkStarted] =
|
|
16555
|
+
const [telegramLinkStarted, setTelegramLinkStarted] = useState17(false);
|
|
16542
16556
|
useEffect31(() => {
|
|
16543
16557
|
console.log("[useLinkTelegram] Effect triggered:", {
|
|
16544
16558
|
providerType,
|
|
@@ -16859,7 +16873,7 @@ var init_ManageWallet = __esm({
|
|
|
16859
16873
|
// src/internal/components/ManageWalletMenu/UnlinkProviderMenu.tsx
|
|
16860
16874
|
import { useMutation as useMutation15, useQueryClient as useQueryClient17 } from "@tanstack/react-query";
|
|
16861
16875
|
import { Key as Key6, Loader as Loader14 } from "lucide-react";
|
|
16862
|
-
import { useState as
|
|
16876
|
+
import { useState as useState18 } from "react";
|
|
16863
16877
|
import { useDisconnect as useDisconnect2 } from "wagmi";
|
|
16864
16878
|
import { jsx as jsx78, jsxs as jsxs72 } from "react/jsx-runtime";
|
|
16865
16879
|
function UnlinkProviderMenu() {
|
|
@@ -16871,7 +16885,7 @@ function UnlinkProviderMenu() {
|
|
|
16871
16885
|
const { t } = useT();
|
|
16872
16886
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
16873
16887
|
const { confirmUnlink, setConfirmUnlink, setAlert } = useManageWalletStore();
|
|
16874
|
-
const [confirmInput, setConfirmInput] =
|
|
16888
|
+
const [confirmInput, setConfirmInput] = useState18("");
|
|
16875
16889
|
const { mutate: handleUnlinkProvider, isPending: isProviderUnlinking } = useMutation15({
|
|
16876
16890
|
mutationFn: async () => {
|
|
16877
16891
|
if (!confirmUnlink) {
|
|
@@ -17132,7 +17146,7 @@ var init_useNicknameAvailability = __esm({
|
|
|
17132
17146
|
// src/internal/components/NicknameMenu/NicknameEditForm.tsx
|
|
17133
17147
|
import { useMutation as useMutation17, useQueryClient as useQueryClient18 } from "@tanstack/react-query";
|
|
17134
17148
|
import { AtSignIcon, CheckIcon as CheckIcon2, CopyIcon, LoaderIcon as LoaderIcon7, SaveIcon } from "lucide-react";
|
|
17135
|
-
import { useCallback as useCallback22, useState as
|
|
17149
|
+
import { useCallback as useCallback22, useState as useState19 } from "react";
|
|
17136
17150
|
import { Fragment as Fragment29, jsx as jsx79, jsxs as jsxs73 } from "react/jsx-runtime";
|
|
17137
17151
|
function NicknameEditForm(props) {
|
|
17138
17152
|
const { isInitialUser, nicknameInfo } = props;
|
|
@@ -17145,7 +17159,7 @@ function NicknameEditForm(props) {
|
|
|
17145
17159
|
const nicknameValue = useNicknameStore((st) => st.nicknameValue);
|
|
17146
17160
|
const nicknameAvailability = useNicknameStore((st) => st.availability);
|
|
17147
17161
|
const { isCheckingAvailability } = useNicknameAvailability(nicknameInfo ? nicknameInfo.handle : "");
|
|
17148
|
-
const [isNicknameCopied, setIsNicknameCopied] =
|
|
17162
|
+
const [isNicknameCopied, setIsNicknameCopied] = useState19(false);
|
|
17149
17163
|
const {
|
|
17150
17164
|
mutate: changeNickname2,
|
|
17151
17165
|
isError: isNicknameChangeError,
|
|
@@ -17459,27 +17473,76 @@ var init_useResolvedPublicClient = __esm({
|
|
|
17459
17473
|
}
|
|
17460
17474
|
});
|
|
17461
17475
|
|
|
17462
|
-
// src/internal/hooks/
|
|
17476
|
+
// src/internal/hooks/useBlockscoutAssets/constants.ts
|
|
17477
|
+
var NATIVE_BALANCE_QUERY_KEY2, WATCH_TOKENS_QUERY_KEY, BLOCKSCOUT_QUERY_KEY, ERC3643_DETECTION_QUERY_KEY, BALANCE_DEFAULT_QUERY_CFG, ERC3643_ABI;
|
|
17478
|
+
var init_constants5 = __esm({
|
|
17479
|
+
"src/internal/hooks/useBlockscoutAssets/constants.ts"() {
|
|
17480
|
+
init_constants();
|
|
17481
|
+
NATIVE_BALANCE_QUERY_KEY2 = "chain-native-coin-balance-query";
|
|
17482
|
+
WATCH_TOKENS_QUERY_KEY = "chain-watch-coin-balance-query";
|
|
17483
|
+
BLOCKSCOUT_QUERY_KEY = "blockscout-token-balances";
|
|
17484
|
+
ERC3643_DETECTION_QUERY_KEY = "erc3643-detection";
|
|
17485
|
+
BALANCE_DEFAULT_QUERY_CFG = {
|
|
17486
|
+
staleTime: BLOCKSCOUT_QUERY_STALE_TIME,
|
|
17487
|
+
gcTime: BLOCKSCOUT_QUERY_GC_TIME,
|
|
17488
|
+
refetchOnMount: "always",
|
|
17489
|
+
retry: 2,
|
|
17490
|
+
retryDelay: 2e3
|
|
17491
|
+
};
|
|
17492
|
+
ERC3643_ABI = [
|
|
17493
|
+
{
|
|
17494
|
+
name: "identityRegistry",
|
|
17495
|
+
type: "function",
|
|
17496
|
+
stateMutability: "view",
|
|
17497
|
+
inputs: [],
|
|
17498
|
+
outputs: [{ name: "", type: "address" }]
|
|
17499
|
+
}
|
|
17500
|
+
];
|
|
17501
|
+
}
|
|
17502
|
+
});
|
|
17503
|
+
|
|
17504
|
+
// src/internal/hooks/useBlockscoutAssets/useNativeBalance.ts
|
|
17463
17505
|
import { useQuery as useQuery13 } from "@tanstack/react-query";
|
|
17506
|
+
import { formatUnits as formatUnits2 } from "viem";
|
|
17507
|
+
function useNativeBalance(options) {
|
|
17508
|
+
const { enabled, address, chainId, publicClient, nativeCurrency } = options;
|
|
17509
|
+
return useQuery13({
|
|
17510
|
+
enabled: enabled && !!address && !!publicClient && !!nativeCurrency?.symbol,
|
|
17511
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17512
|
+
queryKey: [NATIVE_BALANCE_QUERY_KEY2, chainId, address],
|
|
17513
|
+
queryFn: async () => {
|
|
17514
|
+
const balance = await publicClient.getBalance({ address });
|
|
17515
|
+
return {
|
|
17516
|
+
value: balance,
|
|
17517
|
+
formatted: formatUnits2(balance, nativeCurrency?.decimals || 18),
|
|
17518
|
+
symbol: nativeCurrency?.symbol || "ETH",
|
|
17519
|
+
decimals: nativeCurrency?.decimals || 18
|
|
17520
|
+
};
|
|
17521
|
+
}
|
|
17522
|
+
});
|
|
17523
|
+
}
|
|
17524
|
+
var init_useNativeBalance = __esm({
|
|
17525
|
+
"src/internal/hooks/useBlockscoutAssets/useNativeBalance.ts"() {
|
|
17526
|
+
init_constants5();
|
|
17527
|
+
}
|
|
17528
|
+
});
|
|
17529
|
+
|
|
17530
|
+
// src/internal/hooks/useBlockscoutAssets/useWatchTokens.ts
|
|
17531
|
+
import { useQuery as useQuery14 } from "@tanstack/react-query";
|
|
17464
17532
|
import { useMemo as useMemo9 } from "react";
|
|
17465
|
-
import { erc20Abi, formatUnits as
|
|
17533
|
+
import { erc20Abi as erc20Abi2, formatUnits as formatUnits3 } from "viem";
|
|
17466
17534
|
function useWatchTokens(options) {
|
|
17467
|
-
const { address, chainId, enabled
|
|
17535
|
+
const { address, chainId, enabled, publicClient } = options;
|
|
17468
17536
|
const { config } = useProviderConfig();
|
|
17469
|
-
const { publicClient, resolvedChainId } = useResolvedPublicClient(chainId, "useWatchTokens");
|
|
17470
17537
|
const watchTokens = useMemo9(() => {
|
|
17471
17538
|
const allWatchTokens = config.current.watchTokens;
|
|
17472
|
-
const tokensForChain =
|
|
17539
|
+
const tokensForChain = chainId ? allWatchTokens?.[chainId] || [] : [];
|
|
17473
17540
|
return tokensForChain;
|
|
17474
|
-
}, [config,
|
|
17475
|
-
|
|
17476
|
-
|
|
17477
|
-
|
|
17478
|
-
|
|
17479
|
-
error,
|
|
17480
|
-
refetch
|
|
17481
|
-
} = useQuery13({
|
|
17482
|
-
queryKey: [WATCH_TOKENS_QUERY_KEY, resolvedChainId, address, watchTokens.map((t) => t.address).join(",")],
|
|
17541
|
+
}, [config, chainId]);
|
|
17542
|
+
return useQuery14({
|
|
17543
|
+
enabled: !!publicClient && !!address && enabled && watchTokens.length > 0,
|
|
17544
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17545
|
+
queryKey: [WATCH_TOKENS_QUERY_KEY, chainId, address, watchTokens.map((t) => t.address).join(",")],
|
|
17483
17546
|
queryFn: async () => {
|
|
17484
17547
|
if (!publicClient || !address || watchTokens.length === 0) {
|
|
17485
17548
|
return [];
|
|
@@ -17489,17 +17552,19 @@ function useWatchTokens(options) {
|
|
|
17489
17552
|
try {
|
|
17490
17553
|
const balance = await publicClient.readContract({
|
|
17491
17554
|
address: token.address,
|
|
17492
|
-
abi:
|
|
17555
|
+
abi: erc20Abi2,
|
|
17493
17556
|
functionName: "balanceOf",
|
|
17494
|
-
args: [address]
|
|
17557
|
+
args: [address],
|
|
17558
|
+
authorizationList: void 0
|
|
17495
17559
|
});
|
|
17496
17560
|
let name = token.name;
|
|
17497
17561
|
if (!name) {
|
|
17498
17562
|
try {
|
|
17499
17563
|
name = await publicClient.readContract({
|
|
17500
17564
|
address: token.address,
|
|
17501
|
-
abi:
|
|
17502
|
-
functionName: "name"
|
|
17565
|
+
abi: erc20Abi2,
|
|
17566
|
+
functionName: "name",
|
|
17567
|
+
authorizationList: void 0
|
|
17503
17568
|
});
|
|
17504
17569
|
} catch {
|
|
17505
17570
|
name = token.symbol;
|
|
@@ -17510,14 +17575,15 @@ function useWatchTokens(options) {
|
|
|
17510
17575
|
try {
|
|
17511
17576
|
decimals = await publicClient.readContract({
|
|
17512
17577
|
address: token.address,
|
|
17513
|
-
abi:
|
|
17514
|
-
functionName: "decimals"
|
|
17578
|
+
abi: erc20Abi2,
|
|
17579
|
+
functionName: "decimals",
|
|
17580
|
+
authorizationList: void 0
|
|
17515
17581
|
});
|
|
17516
17582
|
} catch {
|
|
17517
17583
|
decimals = 18;
|
|
17518
17584
|
}
|
|
17519
17585
|
}
|
|
17520
|
-
const formattedBalance =
|
|
17586
|
+
const formattedBalance = formatUnits3(balance, decimals);
|
|
17521
17587
|
results.push({
|
|
17522
17588
|
type: "erc20",
|
|
17523
17589
|
address: token.address,
|
|
@@ -17533,38 +17599,18 @@ function useWatchTokens(options) {
|
|
|
17533
17599
|
}
|
|
17534
17600
|
}
|
|
17535
17601
|
return results;
|
|
17536
|
-
}
|
|
17537
|
-
enabled: !!publicClient && !!address && enabled && watchTokens.length > 0,
|
|
17538
|
-
staleTime: 30 * 1e3,
|
|
17539
|
-
// 30 seconds
|
|
17540
|
-
gcTime: 5 * 60 * 1e3,
|
|
17541
|
-
// 5 minutes
|
|
17542
|
-
refetchOnMount: "always",
|
|
17543
|
-
retry: 2,
|
|
17544
|
-
retryDelay: 1e3
|
|
17602
|
+
}
|
|
17545
17603
|
});
|
|
17546
|
-
return {
|
|
17547
|
-
assets: assets || [],
|
|
17548
|
-
isLoading,
|
|
17549
|
-
isFetching,
|
|
17550
|
-
error: error || null,
|
|
17551
|
-
refetch
|
|
17552
|
-
};
|
|
17553
17604
|
}
|
|
17554
|
-
var WATCH_TOKENS_QUERY_KEY;
|
|
17555
17605
|
var init_useWatchTokens = __esm({
|
|
17556
|
-
"src/internal/hooks/useWatchTokens.ts"() {
|
|
17606
|
+
"src/internal/hooks/useBlockscoutAssets/useWatchTokens.ts"() {
|
|
17557
17607
|
init_ProviderContext();
|
|
17558
|
-
|
|
17559
|
-
WATCH_TOKENS_QUERY_KEY = "watch-tokens";
|
|
17608
|
+
init_constants5();
|
|
17560
17609
|
}
|
|
17561
17610
|
});
|
|
17562
17611
|
|
|
17563
|
-
// src/internal/hooks/useBlockscoutAssets.ts
|
|
17564
|
-
import {
|
|
17565
|
-
import { useQuery as useQuery14, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
|
|
17566
|
-
import { useCallback as useCallback23, useMemo as useMemo10, useRef as useRef17 } from "react";
|
|
17567
|
-
import { formatEther, formatUnits as formatUnits3 } from "viem";
|
|
17612
|
+
// src/internal/hooks/useBlockscoutAssets/utils.ts
|
|
17613
|
+
import { formatUnits as formatUnits4 } from "viem";
|
|
17568
17614
|
function resolveIpfsUri(uri) {
|
|
17569
17615
|
if (!uri) return "";
|
|
17570
17616
|
if (uri.startsWith("ipfs://")) {
|
|
@@ -17595,7 +17641,7 @@ function mapBlockscoutToAsset(balance) {
|
|
|
17595
17641
|
if (type === "erc721") {
|
|
17596
17642
|
formattedBalance = "1";
|
|
17597
17643
|
} else if (decimals !== void 0) {
|
|
17598
|
-
formattedBalance =
|
|
17644
|
+
formattedBalance = formatUnits4(BigInt(value), decimals);
|
|
17599
17645
|
} else {
|
|
17600
17646
|
formattedBalance = value;
|
|
17601
17647
|
}
|
|
@@ -17688,96 +17734,107 @@ function createError(error) {
|
|
|
17688
17734
|
retryable: true
|
|
17689
17735
|
};
|
|
17690
17736
|
}
|
|
17737
|
+
var init_utils8 = __esm({
|
|
17738
|
+
"src/internal/hooks/useBlockscoutAssets/utils.ts"() {
|
|
17739
|
+
init_constants();
|
|
17740
|
+
}
|
|
17741
|
+
});
|
|
17742
|
+
|
|
17743
|
+
// src/internal/hooks/useBlockscoutAssets/useBlockscoutAssets.ts
|
|
17744
|
+
import { createBlockscoutClient, nonBlockscoutClient } from "@embarkai/core/clients";
|
|
17745
|
+
import { useQuery as useQuery15, useQueryClient as useQueryClient19 } from "@tanstack/react-query";
|
|
17746
|
+
import { useCallback as useCallback23, useMemo as useMemo10, useRef as useRef15 } from "react";
|
|
17691
17747
|
function useBlockscoutAssets(options) {
|
|
17692
17748
|
const { address, chainId, enabled = true, detectSecurityTokens = true } = options;
|
|
17693
17749
|
const qc = useQueryClient19();
|
|
17694
17750
|
const { chainConfig, publicClient, resolvedChainId } = useResolvedPublicClient(chainId, "useBlockscoutAssets");
|
|
17695
|
-
const
|
|
17696
|
-
|
|
17697
|
-
|
|
17751
|
+
const {
|
|
17752
|
+
//
|
|
17753
|
+
tokenBalancesQuery: customTokenBalancesQuery,
|
|
17754
|
+
tokenBalancesQueryKey: customTokenBalancesQueryKey
|
|
17755
|
+
} = useProviderConfig().config?.current?.portfolio || {};
|
|
17698
17756
|
const blockscoutApiUrl = getBlockscoutApiUrl(chainConfig);
|
|
17699
17757
|
const blockscoutClient = useMemo10(
|
|
17700
17758
|
() => blockscoutApiUrl ? createBlockscoutClient({ baseUrl: blockscoutApiUrl }) : null,
|
|
17701
17759
|
[blockscoutApiUrl]
|
|
17702
17760
|
);
|
|
17703
|
-
const lastRefreshRef =
|
|
17761
|
+
const lastRefreshRef = useRef15(0);
|
|
17704
17762
|
const {
|
|
17705
|
-
|
|
17763
|
+
data: watchTokenAssets = [],
|
|
17706
17764
|
isLoading: watchTokensLoading,
|
|
17707
17765
|
isFetching: watchTokensFetching
|
|
17708
|
-
|
|
17709
|
-
|
|
17766
|
+
} = useWatchTokens({
|
|
17767
|
+
enabled,
|
|
17768
|
+
address,
|
|
17769
|
+
chainId: resolvedChainId,
|
|
17770
|
+
publicClient
|
|
17771
|
+
});
|
|
17710
17772
|
const {
|
|
17711
17773
|
data: nativeBalanceData,
|
|
17712
17774
|
isLoading: nativeLoading,
|
|
17713
17775
|
isFetching: nativeFetching
|
|
17714
|
-
|
|
17715
|
-
|
|
17716
|
-
|
|
17776
|
+
} = useNativeBalance({
|
|
17777
|
+
enabled,
|
|
17778
|
+
address,
|
|
17779
|
+
chainId: resolvedChainId,
|
|
17780
|
+
publicClient,
|
|
17781
|
+
nativeCurrency: chainConfig?.nativeCurrency || null
|
|
17782
|
+
});
|
|
17783
|
+
const {
|
|
17784
|
+
data: coreTokenBalances = [],
|
|
17785
|
+
isLoading: coreTokensLoading,
|
|
17786
|
+
isFetching: coreTokensFetching
|
|
17787
|
+
} = useQuery15({
|
|
17788
|
+
enabled: !!address && enabled && !blockscoutClient && !customTokenBalancesQuery && !customTokenBalancesQueryKey,
|
|
17789
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17790
|
+
queryKey: [`NON-${BLOCKSCOUT_QUERY_KEY}`, resolvedChainId, address],
|
|
17717
17791
|
queryFn: async () => {
|
|
17718
|
-
|
|
17719
|
-
|
|
17720
|
-
|
|
17721
|
-
|
|
17722
|
-
|
|
17723
|
-
|
|
17724
|
-
decimals: chainConfig?.nativeCurrency?.decimals || 18
|
|
17725
|
-
};
|
|
17726
|
-
},
|
|
17727
|
-
enabled: !!publicClient && !!address && enabled,
|
|
17728
|
-
staleTime: 30 * 1e3,
|
|
17729
|
-
// 30 seconds
|
|
17730
|
-
gcTime: 5 * 60 * 1e3,
|
|
17731
|
-
// 5 minutes
|
|
17732
|
-
refetchOnMount: "always"
|
|
17792
|
+
const assetList = await nonBlockscoutClient.getTokenBalances({
|
|
17793
|
+
walletAddress: address,
|
|
17794
|
+
chainId: resolvedChainId
|
|
17795
|
+
});
|
|
17796
|
+
return assetList.filter((item) => BigInt(item.value) > BigInt(0));
|
|
17797
|
+
}
|
|
17733
17798
|
});
|
|
17734
17799
|
const {
|
|
17735
|
-
data:
|
|
17736
|
-
isLoading:
|
|
17737
|
-
isFetching:
|
|
17738
|
-
|
|
17739
|
-
|
|
17800
|
+
data: customItems = [],
|
|
17801
|
+
isLoading: customLoading,
|
|
17802
|
+
isFetching: customFetching
|
|
17803
|
+
} = useQuery15({
|
|
17804
|
+
enabled: !!address && enabled && !blockscoutClient && !!customTokenBalancesQuery && !!customTokenBalancesQueryKey,
|
|
17805
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17806
|
+
queryKey: customTokenBalancesQueryKey,
|
|
17807
|
+
// query is invalidated by this key
|
|
17808
|
+
queryFn: async () => await customTokenBalancesQuery(address)
|
|
17809
|
+
});
|
|
17810
|
+
const {
|
|
17811
|
+
data: blockscoutItems = [],
|
|
17812
|
+
isLoading: blockscoutLoading,
|
|
17813
|
+
isFetching: blockscoutFetching,
|
|
17814
|
+
error: blockscoutError,
|
|
17740
17815
|
dataUpdatedAt
|
|
17741
|
-
} =
|
|
17742
|
-
|
|
17743
|
-
|
|
17744
|
-
|
|
17745
|
-
|
|
17746
|
-
|
|
17747
|
-
} catch (error2) {
|
|
17748
|
-
console.warn("[useBlockscoutAssets] Custom token balances query failed:", error2);
|
|
17749
|
-
if (!blockscoutClient) throw error2;
|
|
17750
|
-
}
|
|
17751
|
-
}
|
|
17752
|
-
return await blockscoutClient.getTokenBalances(address);
|
|
17753
|
-
},
|
|
17754
|
-
enabled: !!address && enabled && (!!customTokenBalancesQuery || !!blockscoutClient),
|
|
17755
|
-
staleTime: 0,
|
|
17756
|
-
gcTime: BLOCKSCOUT_QUERY_GC_TIME,
|
|
17757
|
-
refetchOnMount: "always",
|
|
17758
|
-
retry: 2,
|
|
17759
|
-
retryDelay: 1e3
|
|
17816
|
+
} = useQuery15({
|
|
17817
|
+
enabled: !!address && enabled && !!blockscoutClient && !customTokenBalancesQuery && !customTokenBalancesQueryKey,
|
|
17818
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17819
|
+
queryKey: [BLOCKSCOUT_QUERY_KEY, resolvedChainId, blockscoutApiUrl, address],
|
|
17820
|
+
//
|
|
17821
|
+
queryFn: async () => await blockscoutClient.getTokenBalances(address)
|
|
17760
17822
|
});
|
|
17761
17823
|
const {
|
|
17762
17824
|
data: nftItems,
|
|
17763
17825
|
isLoading: nftsLoading,
|
|
17764
17826
|
isFetching: nftsFetching
|
|
17765
|
-
|
|
17766
|
-
} = useQuery14({
|
|
17767
|
-
queryKey: [BLOCKSCOUT_QUERY_KEY, "nfts", resolvedChainId, address, blockscoutApiUrl],
|
|
17768
|
-
queryFn: () => blockscoutClient.getNfts(address),
|
|
17827
|
+
} = useQuery15({
|
|
17769
17828
|
enabled: !!address && enabled && !!blockscoutClient,
|
|
17770
|
-
|
|
17771
|
-
|
|
17772
|
-
|
|
17773
|
-
retry: 2,
|
|
17774
|
-
retryDelay: 1e3
|
|
17829
|
+
...BALANCE_DEFAULT_QUERY_CFG,
|
|
17830
|
+
queryKey: [BLOCKSCOUT_QUERY_KEY, "nfts", resolvedChainId, blockscoutApiUrl, address],
|
|
17831
|
+
queryFn: () => blockscoutClient.getNfts(address)
|
|
17775
17832
|
});
|
|
17776
17833
|
const erc20TokenAddresses = useMemo10(() => {
|
|
17777
|
-
if (!
|
|
17778
|
-
return
|
|
17779
|
-
}, [
|
|
17780
|
-
const { data: erc3643Results } =
|
|
17834
|
+
if (!blockscoutItems) return [];
|
|
17835
|
+
return blockscoutItems.filter((tb) => tb.token.type === "ERC-20").map((tb) => tb.token.address_hash);
|
|
17836
|
+
}, [blockscoutItems]);
|
|
17837
|
+
const { data: erc3643Results } = useQuery15({
|
|
17781
17838
|
queryKey: [ERC3643_DETECTION_QUERY_KEY, resolvedChainId, address, erc20TokenAddresses],
|
|
17782
17839
|
queryFn: async () => {
|
|
17783
17840
|
if (!publicClient || erc20TokenAddresses.length === 0) {
|
|
@@ -17812,10 +17869,11 @@ function useBlockscoutAssets(options) {
|
|
|
17812
17869
|
}
|
|
17813
17870
|
return results;
|
|
17814
17871
|
},
|
|
17872
|
+
retry: false,
|
|
17815
17873
|
enabled: !!address && enabled && detectSecurityTokens && erc20TokenAddresses.length > 0 && !!publicClient,
|
|
17816
|
-
staleTime:
|
|
17817
|
-
|
|
17818
|
-
|
|
17874
|
+
staleTime: 6e4
|
|
17875
|
+
// 1 minute
|
|
17876
|
+
// gcTime: BLOCKSCOUT_QUERY_GC_TIME,
|
|
17819
17877
|
});
|
|
17820
17878
|
const assets = useMemo10(() => {
|
|
17821
17879
|
const result = [];
|
|
@@ -17830,8 +17888,47 @@ function useBlockscoutAssets(options) {
|
|
|
17830
17888
|
decimals: nativeBalanceData.decimals
|
|
17831
17889
|
});
|
|
17832
17890
|
}
|
|
17833
|
-
if (
|
|
17834
|
-
const
|
|
17891
|
+
if (!!customItems?.length) {
|
|
17892
|
+
const customErc20Tokens = customItems.filter((item) => item.token.type === "ERC-20");
|
|
17893
|
+
customErc20Tokens.forEach((item) => {
|
|
17894
|
+
const asset = mapBlockscoutToAsset(item);
|
|
17895
|
+
if (asset.address) {
|
|
17896
|
+
addedAddresses.add(asset.address.toLowerCase());
|
|
17897
|
+
}
|
|
17898
|
+
if (asset.type === "erc20" && asset.address && erc3643Results) {
|
|
17899
|
+
const registryAddress = erc3643Results.get(asset.address.toLowerCase());
|
|
17900
|
+
if (registryAddress) {
|
|
17901
|
+
asset.type = "erc3643";
|
|
17902
|
+
asset.complianceStatus = {
|
|
17903
|
+
isSecurityToken: true,
|
|
17904
|
+
identityRegistry: registryAddress
|
|
17905
|
+
};
|
|
17906
|
+
}
|
|
17907
|
+
}
|
|
17908
|
+
result.push(asset);
|
|
17909
|
+
});
|
|
17910
|
+
}
|
|
17911
|
+
if (!!coreTokenBalances?.length) {
|
|
17912
|
+
coreTokenBalances.forEach((item) => {
|
|
17913
|
+
const asset = mapBlockscoutToAsset(item);
|
|
17914
|
+
if (asset.address) {
|
|
17915
|
+
addedAddresses.add(asset.address.toLowerCase());
|
|
17916
|
+
}
|
|
17917
|
+
if (asset.type === "erc20" && asset.address && erc3643Results) {
|
|
17918
|
+
const registryAddress = erc3643Results.get(asset.address.toLowerCase());
|
|
17919
|
+
if (registryAddress) {
|
|
17920
|
+
asset.type = "erc3643";
|
|
17921
|
+
asset.complianceStatus = {
|
|
17922
|
+
isSecurityToken: true,
|
|
17923
|
+
identityRegistry: registryAddress
|
|
17924
|
+
};
|
|
17925
|
+
}
|
|
17926
|
+
}
|
|
17927
|
+
result.push(asset);
|
|
17928
|
+
});
|
|
17929
|
+
}
|
|
17930
|
+
if (!!blockscoutItems?.length) {
|
|
17931
|
+
const erc20Tokens = blockscoutItems.filter((balance) => balance.token.type === "ERC-20");
|
|
17835
17932
|
const mappedTokens = erc20Tokens.map((balance) => {
|
|
17836
17933
|
const asset = mapBlockscoutToAsset(balance);
|
|
17837
17934
|
if (asset.address) {
|
|
@@ -17862,7 +17959,16 @@ function useBlockscoutAssets(options) {
|
|
|
17862
17959
|
result.push(...mappedNfts);
|
|
17863
17960
|
}
|
|
17864
17961
|
return result;
|
|
17865
|
-
}, [
|
|
17962
|
+
}, [
|
|
17963
|
+
nativeBalanceData,
|
|
17964
|
+
blockscoutItems,
|
|
17965
|
+
coreTokenBalances,
|
|
17966
|
+
customItems,
|
|
17967
|
+
nftItems,
|
|
17968
|
+
erc3643Results,
|
|
17969
|
+
watchTokenAssets,
|
|
17970
|
+
chainConfig
|
|
17971
|
+
]);
|
|
17866
17972
|
const nativeBalance = useMemo10(() => {
|
|
17867
17973
|
if (!nativeBalanceData) return null;
|
|
17868
17974
|
return {
|
|
@@ -17872,9 +17978,9 @@ function useBlockscoutAssets(options) {
|
|
|
17872
17978
|
};
|
|
17873
17979
|
}, [nativeBalanceData]);
|
|
17874
17980
|
const error = useMemo10(() => {
|
|
17875
|
-
if (!
|
|
17876
|
-
return createError(
|
|
17877
|
-
}, [
|
|
17981
|
+
if (!blockscoutError) return null;
|
|
17982
|
+
return createError(blockscoutError);
|
|
17983
|
+
}, [blockscoutError]);
|
|
17878
17984
|
const refreshBalances = useCallback23(async () => {
|
|
17879
17985
|
const now = Date.now();
|
|
17880
17986
|
if (now - lastRefreshRef.current < BLOCKSCOUT_REFRESH_DEBOUNCE) {
|
|
@@ -17882,16 +17988,15 @@ function useBlockscoutAssets(options) {
|
|
|
17882
17988
|
}
|
|
17883
17989
|
lastRefreshRef.current = now;
|
|
17884
17990
|
await Promise.all([
|
|
17885
|
-
|
|
17886
|
-
qc.invalidateQueries({ queryKey:
|
|
17887
|
-
|
|
17888
|
-
//
|
|
17991
|
+
qc.invalidateQueries({ queryKey: [NATIVE_BALANCE_QUERY_KEY2] }),
|
|
17992
|
+
qc.invalidateQueries({ queryKey: customTokenBalancesQueryKey }),
|
|
17993
|
+
qc.invalidateQueries({ queryKey: [`NON-${BLOCKSCOUT_QUERY_KEY}`] }),
|
|
17994
|
+
// invalidate non-blockscout core token list
|
|
17889
17995
|
qc.invalidateQueries({ queryKey: [BLOCKSCOUT_QUERY_KEY] }),
|
|
17890
17996
|
// invalidates both - token-balances and nfts queries
|
|
17891
|
-
// refetchWatchTokens()
|
|
17892
17997
|
qc.invalidateQueries({ queryKey: [WATCH_TOKENS_QUERY_KEY] })
|
|
17893
17998
|
]);
|
|
17894
|
-
}, [qc]);
|
|
17999
|
+
}, [qc, customTokenBalancesQueryKey]);
|
|
17895
18000
|
const getTokenBalance = useCallback23(
|
|
17896
18001
|
(tokenAddress) => {
|
|
17897
18002
|
return assets.find((a) => a.address?.toLowerCase() === tokenAddress.toLowerCase()) || null;
|
|
@@ -17901,36 +18006,35 @@ function useBlockscoutAssets(options) {
|
|
|
17901
18006
|
return {
|
|
17902
18007
|
nativeBalance,
|
|
17903
18008
|
assets,
|
|
17904
|
-
isLoading: nativeLoading ||
|
|
17905
|
-
isFetching: nativeFetching ||
|
|
18009
|
+
isLoading: nativeLoading || blockscoutLoading || customLoading || coreTokensLoading || nftsLoading || watchTokensLoading,
|
|
18010
|
+
isFetching: nativeFetching || blockscoutFetching || customFetching || coreTokensFetching || nftsFetching || watchTokensFetching,
|
|
17906
18011
|
isInitialLoading: nativeLoading && !nativeBalanceData,
|
|
17907
18012
|
error,
|
|
17908
|
-
isBlockscoutAvailable: !!blockscoutClient && !
|
|
18013
|
+
isBlockscoutAvailable: !!blockscoutClient && !blockscoutError,
|
|
17909
18014
|
refreshBalances,
|
|
17910
18015
|
getTokenBalance,
|
|
17911
18016
|
lastUpdated: dataUpdatedAt || null
|
|
17912
18017
|
};
|
|
17913
18018
|
}
|
|
17914
|
-
var NATIVE_BALANCE_QUERY_KEY, BLOCKSCOUT_QUERY_KEY, ERC3643_DETECTION_QUERY_KEY, ERC3643_ABI;
|
|
17915
18019
|
var init_useBlockscoutAssets = __esm({
|
|
17916
|
-
"src/internal/hooks/useBlockscoutAssets.ts"() {
|
|
18020
|
+
"src/internal/hooks/useBlockscoutAssets/useBlockscoutAssets.ts"() {
|
|
17917
18021
|
init_ProviderContext();
|
|
17918
18022
|
init_initial();
|
|
17919
18023
|
init_constants();
|
|
17920
18024
|
init_useResolvedPublicClient();
|
|
18025
|
+
init_constants5();
|
|
18026
|
+
init_useNativeBalance();
|
|
18027
|
+
init_useWatchTokens();
|
|
18028
|
+
init_utils8();
|
|
18029
|
+
}
|
|
18030
|
+
});
|
|
18031
|
+
|
|
18032
|
+
// src/internal/hooks/useBlockscoutAssets/index.ts
|
|
18033
|
+
var init_useBlockscoutAssets2 = __esm({
|
|
18034
|
+
"src/internal/hooks/useBlockscoutAssets/index.ts"() {
|
|
18035
|
+
init_useBlockscoutAssets();
|
|
18036
|
+
init_useNativeBalance();
|
|
17921
18037
|
init_useWatchTokens();
|
|
17922
|
-
NATIVE_BALANCE_QUERY_KEY = "blockscouts-native-balance-query";
|
|
17923
|
-
BLOCKSCOUT_QUERY_KEY = "blockscout-token-balances";
|
|
17924
|
-
ERC3643_DETECTION_QUERY_KEY = "erc3643-detection";
|
|
17925
|
-
ERC3643_ABI = [
|
|
17926
|
-
{
|
|
17927
|
-
name: "identityRegistry",
|
|
17928
|
-
type: "function",
|
|
17929
|
-
stateMutability: "view",
|
|
17930
|
-
inputs: [],
|
|
17931
|
-
outputs: [{ name: "", type: "address" }]
|
|
17932
|
-
}
|
|
17933
|
-
];
|
|
17934
18038
|
}
|
|
17935
18039
|
});
|
|
17936
18040
|
|
|
@@ -17943,7 +18047,7 @@ var init_no_image = __esm({
|
|
|
17943
18047
|
});
|
|
17944
18048
|
|
|
17945
18049
|
// src/internal/components/BalanceView/BalanceView.tsx
|
|
17946
|
-
import { formatUnits as
|
|
18050
|
+
import { formatUnits as formatUnits5 } from "viem";
|
|
17947
18051
|
import { jsx as jsx81, jsxs as jsxs75 } from "react/jsx-runtime";
|
|
17948
18052
|
function BalanceView(props) {
|
|
17949
18053
|
const { className } = props;
|
|
@@ -17951,22 +18055,35 @@ function BalanceView(props) {
|
|
|
17951
18055
|
const showFiatBalance = config.current?.features?.showActiveBalanceAsFiat;
|
|
17952
18056
|
const balance = useLayoutDataStore((st) => st.balance);
|
|
17953
18057
|
const cryptoSymbol = useLayoutDataStore((st) => st.cryptoSymbol);
|
|
17954
|
-
const cryptoBalance = Number(
|
|
18058
|
+
const cryptoBalance = Number(formatUnits5(balance?.value || BigInt(0), balance?.decimals || 18));
|
|
17955
18059
|
const fiatBalance = useLayoutDataStore((st) => st.fiatBalance);
|
|
17956
18060
|
const fiatSymbol = useLayoutDataStore((st) => st.fiatSymbol);
|
|
17957
|
-
const
|
|
17958
|
-
return /* @__PURE__ */ jsxs75(
|
|
17959
|
-
|
|
17960
|
-
|
|
17961
|
-
|
|
17962
|
-
|
|
17963
|
-
|
|
17964
|
-
|
|
17965
|
-
|
|
18061
|
+
const BalanceIcon = showFiatBalance && !!fiatBalance ? TOKENS_ICONS[cryptoSymbol] : null;
|
|
18062
|
+
return /* @__PURE__ */ jsxs75(
|
|
18063
|
+
"p",
|
|
18064
|
+
{
|
|
18065
|
+
className: cn(
|
|
18066
|
+
//
|
|
18067
|
+
"flex items-center gap-1",
|
|
18068
|
+
"text-lg leading-5 font-bold",
|
|
18069
|
+
className
|
|
18070
|
+
),
|
|
18071
|
+
children: [
|
|
18072
|
+
!!BalanceIcon && /* @__PURE__ */ jsx81(BalanceIcon, { className: "w-5 h-5" }),
|
|
18073
|
+
/* @__PURE__ */ jsxs75("span", { children: [
|
|
18074
|
+
showFiatBalance && !!fiatBalance && BALANCE_PREFIXES[fiatSymbol],
|
|
18075
|
+
formatPrice(showFiatBalance ? fiatBalance : cryptoBalance)
|
|
18076
|
+
] }),
|
|
18077
|
+
showFiatBalance && !!fiatBalance && !BALANCE_PREFIXES[fiatSymbol] && /* @__PURE__ */ jsx81("span", { children: fiatSymbol }),
|
|
18078
|
+
!showFiatBalance && /* @__PURE__ */ jsx81("span", { children: cryptoSymbol })
|
|
18079
|
+
]
|
|
18080
|
+
}
|
|
18081
|
+
);
|
|
17966
18082
|
}
|
|
17967
18083
|
var BALANCE_PREFIXES;
|
|
17968
18084
|
var init_BalanceView = __esm({
|
|
17969
18085
|
"src/internal/components/BalanceView/BalanceView.tsx"() {
|
|
18086
|
+
init_tokens();
|
|
17970
18087
|
init_useLayoutDataStore();
|
|
17971
18088
|
init_priceFormatter();
|
|
17972
18089
|
init_utils2();
|
|
@@ -17989,9 +18106,9 @@ var init_BalanceView2 = __esm({
|
|
|
17989
18106
|
});
|
|
17990
18107
|
|
|
17991
18108
|
// src/internal/components/PortfolioMenu/PortfolioItem.tsx
|
|
17992
|
-
import { useQuery as
|
|
18109
|
+
import { useQuery as useQuery16 } from "@tanstack/react-query";
|
|
17993
18110
|
import { LoaderIcon as LoaderIcon8, ShieldAlertIcon, SparklesIcon } from "lucide-react";
|
|
17994
|
-
import { formatUnits as
|
|
18111
|
+
import { formatUnits as formatUnits6 } from "viem";
|
|
17995
18112
|
import { Fragment as Fragment30, jsx as jsx82, jsxs as jsxs76 } from "react/jsx-runtime";
|
|
17996
18113
|
function openInExplorer(address) {
|
|
17997
18114
|
window.open(`${getExplorerUrl()}/address/${address}`, "_blank");
|
|
@@ -18099,7 +18216,7 @@ function PortfolioItem(props) {
|
|
|
18099
18216
|
queryKey: asset.balanceQueryKey,
|
|
18100
18217
|
queryFn: asset.balanceQuery
|
|
18101
18218
|
} : void 0;
|
|
18102
|
-
const { data: projectAssetBalance } =
|
|
18219
|
+
const { data: projectAssetBalance } = useQuery16({
|
|
18103
18220
|
enabled: !!projectAssetQuery,
|
|
18104
18221
|
retry: false,
|
|
18105
18222
|
queryKey: projectAssetQuery?.queryKey ?? ["project-asset-balance-disabled", asset.symbol],
|
|
@@ -18109,7 +18226,7 @@ function PortfolioItem(props) {
|
|
|
18109
18226
|
const isSecurity = isSecurityToken(asset);
|
|
18110
18227
|
const embeddedRate = Number(asset.exchangeRateUsd || 0);
|
|
18111
18228
|
const hasEmbeddedRate = Number.isFinite(embeddedRate) && embeddedRate > 0;
|
|
18112
|
-
const { data: assetRate, isLoading: isRateLoading } =
|
|
18229
|
+
const { data: assetRate, isLoading: isRateLoading } = useQuery16({
|
|
18113
18230
|
enabled: !!address && !hasEmbeddedRate && !isProjectAsset && !isNft && !isSecurity && (!!customAssetRateQuery || !!isAssetRateAvailable(asset.symbol)),
|
|
18114
18231
|
retry: false,
|
|
18115
18232
|
staleTime: 4 * 60 * 1e3,
|
|
@@ -18118,7 +18235,7 @@ function PortfolioItem(props) {
|
|
|
18118
18235
|
queryFn: async () => await resolveAssetRate(asset.symbol, asset.address, customAssetRateQuery)
|
|
18119
18236
|
});
|
|
18120
18237
|
const hasProjectAssetBalance = isProjectAsset && projectAssetBalance != null;
|
|
18121
|
-
const renderBalance = hasProjectAssetBalance ? projectAssetBalance.cryptoFormatted : Number(
|
|
18238
|
+
const renderBalance = hasProjectAssetBalance ? projectAssetBalance.cryptoFormatted : Number(formatUnits6(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
18122
18239
|
const resolvedRate = hasEmbeddedRate ? embeddedRate : Number(assetRate?.price || 0);
|
|
18123
18240
|
const usdRenderBalance = resolvedRate > 0 ? renderBalance * resolvedRate : 0;
|
|
18124
18241
|
const shortContractAddress = asset.address ? truncateMiddle(asset.address, 6, 4) : null;
|
|
@@ -18208,15 +18325,14 @@ function PortfolioMenu() {
|
|
|
18208
18325
|
const { t } = useT();
|
|
18209
18326
|
const qc = useQueryClient20();
|
|
18210
18327
|
const address = useSession((st) => st.address);
|
|
18211
|
-
const chainConfig = useSession((st) => st.chainConfig);
|
|
18212
18328
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
18213
18329
|
const {
|
|
18214
18330
|
assets: blockscoutAssets,
|
|
18215
18331
|
refreshBalances: refreshBlockscoutBalances,
|
|
18216
18332
|
isLoading: isBlockscoutLoading,
|
|
18217
18333
|
isFetching: isBlockscoutFetching,
|
|
18218
|
-
error: blockscoutError
|
|
18219
|
-
isBlockscoutAvailable
|
|
18334
|
+
error: blockscoutError
|
|
18335
|
+
// isBlockscoutAvailable
|
|
18220
18336
|
} = useBlockscoutAssets({
|
|
18221
18337
|
address,
|
|
18222
18338
|
enabled: !!address
|
|
@@ -18273,11 +18389,6 @@ function PortfolioMenu() {
|
|
|
18273
18389
|
},
|
|
18274
18390
|
`${asset.type}-${asset.address || "native"}-${asset.tokenId || index}`
|
|
18275
18391
|
)),
|
|
18276
|
-
!isBlockscoutAvailable && /* @__PURE__ */ jsx83(Highlight, {
|
|
18277
|
-
type: "warning",
|
|
18278
|
-
//@ts-expect-error i18n typings
|
|
18279
|
-
children: t("passport:portfolioMenu.noBlockscout", { chain: chainConfig?.name?.toUpperCase() || "UNKNOWN" })
|
|
18280
|
-
}),
|
|
18281
18392
|
blockscoutError && /* @__PURE__ */ jsx83(Highlight, { type: "error", children: blockscoutError?.message })
|
|
18282
18393
|
] })
|
|
18283
18394
|
}
|
|
@@ -18288,7 +18399,7 @@ var init_PortfolioMenu = __esm({
|
|
|
18288
18399
|
init_ProviderContext();
|
|
18289
18400
|
init_SessionContext();
|
|
18290
18401
|
init_i18n();
|
|
18291
|
-
|
|
18402
|
+
init_useBlockscoutAssets2();
|
|
18292
18403
|
init_useLayoutDataStore();
|
|
18293
18404
|
init_useLayoutStore();
|
|
18294
18405
|
init_Expandable2();
|
|
@@ -18388,7 +18499,7 @@ var init_nickname_fingerprint = __esm({
|
|
|
18388
18499
|
// src/internal/components/ReceiveMenu/ReceiveMenu.tsx
|
|
18389
18500
|
import { ArrowLeft as ArrowLeft17, CheckCircle2 as CheckCircle23, Copy as Copy2, Info as Info5, Loader as Loader17, Shield } from "lucide-react";
|
|
18390
18501
|
import QRCode from "qrcode";
|
|
18391
|
-
import { useCallback as useCallback25, useEffect as useEffect33, useMemo as useMemo11, useState as
|
|
18502
|
+
import { useCallback as useCallback25, useEffect as useEffect33, useMemo as useMemo11, useState as useState20 } from "react";
|
|
18392
18503
|
import { Fragment as Fragment31, jsx as jsx84, jsxs as jsxs78 } from "react/jsx-runtime";
|
|
18393
18504
|
function ReceiveMenu() {
|
|
18394
18505
|
const session = useSession((st) => st.session);
|
|
@@ -18399,9 +18510,9 @@ function ReceiveMenu() {
|
|
|
18399
18510
|
const { t } = useT();
|
|
18400
18511
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
18401
18512
|
const open = page === "receive";
|
|
18402
|
-
const [qrCodeUrl, setQrCodeUrl] =
|
|
18403
|
-
const [copied, setCopied] =
|
|
18404
|
-
const [fingerprintCopied, setFingerprintCopied] =
|
|
18513
|
+
const [qrCodeUrl, setQrCodeUrl] = useState20("");
|
|
18514
|
+
const [copied, setCopied] = useState20(false);
|
|
18515
|
+
const [fingerprintCopied, setFingerprintCopied] = useState20(false);
|
|
18405
18516
|
const fingerprint = useMemo11(() => {
|
|
18406
18517
|
if (!session?.ownerAddress) return null;
|
|
18407
18518
|
try {
|
|
@@ -18533,7 +18644,7 @@ var init_useSecurityStore = __esm({
|
|
|
18533
18644
|
|
|
18534
18645
|
// src/internal/components/SecurityMenu/constants.ts
|
|
18535
18646
|
var KEYSHARE_RECOVERY_STATS_QUERY, CONNECTED_TRUSTED_APPS_QUERY;
|
|
18536
|
-
var
|
|
18647
|
+
var init_constants6 = __esm({
|
|
18537
18648
|
"src/internal/components/SecurityMenu/constants.ts"() {
|
|
18538
18649
|
KEYSHARE_RECOVERY_STATS_QUERY = "keyshare-recovery-stats-query";
|
|
18539
18650
|
CONNECTED_TRUSTED_APPS_QUERY = "connected-trusted-apps-query";
|
|
@@ -18541,11 +18652,11 @@ var init_constants5 = __esm({
|
|
|
18541
18652
|
});
|
|
18542
18653
|
|
|
18543
18654
|
// src/internal/components/SecurityMenu/ConnectedApps/useConnectedApps.ts
|
|
18544
|
-
import { useQuery as
|
|
18655
|
+
import { useQuery as useQuery17 } from "@tanstack/react-query";
|
|
18545
18656
|
function useConnectedApps() {
|
|
18546
18657
|
const session = useSession((st) => st.session);
|
|
18547
18658
|
const userId = session?.mpcUserId || null;
|
|
18548
|
-
return
|
|
18659
|
+
return useQuery17({
|
|
18549
18660
|
retry: false,
|
|
18550
18661
|
enabled: !!userId,
|
|
18551
18662
|
queryKey: [CONNECTED_TRUSTED_APPS_QUERY, userId],
|
|
@@ -18562,7 +18673,7 @@ var init_useConnectedApps = __esm({
|
|
|
18562
18673
|
"src/internal/components/SecurityMenu/ConnectedApps/useConnectedApps.ts"() {
|
|
18563
18674
|
init_SessionContext();
|
|
18564
18675
|
init_httpClient();
|
|
18565
|
-
|
|
18676
|
+
init_constants6();
|
|
18566
18677
|
}
|
|
18567
18678
|
});
|
|
18568
18679
|
|
|
@@ -18789,7 +18900,7 @@ var init_UntrustApplication = __esm({
|
|
|
18789
18900
|
init_iframe_manager();
|
|
18790
18901
|
init_button();
|
|
18791
18902
|
init_highlight();
|
|
18792
|
-
|
|
18903
|
+
init_constants6();
|
|
18793
18904
|
init_useSecurityStore();
|
|
18794
18905
|
}
|
|
18795
18906
|
});
|
|
@@ -18900,11 +19011,11 @@ var init_LastBackup = __esm({
|
|
|
18900
19011
|
});
|
|
18901
19012
|
|
|
18902
19013
|
// src/internal/components/SecurityMenu/Keyshare/useKeyshareRecoveryStats.ts
|
|
18903
|
-
import { useQuery as
|
|
19014
|
+
import { useQuery as useQuery18 } from "@tanstack/react-query";
|
|
18904
19015
|
function useKeyshareRecoveryStats() {
|
|
18905
19016
|
const session = useSession((st) => st.session);
|
|
18906
19017
|
const userId = session?.mpcUserId || null;
|
|
18907
|
-
return
|
|
19018
|
+
return useQuery18({
|
|
18908
19019
|
enabled: !!userId,
|
|
18909
19020
|
queryKey: [KEYSHARE_RECOVERY_STATS_QUERY, userId],
|
|
18910
19021
|
queryFn: async () => {
|
|
@@ -18927,7 +19038,7 @@ var init_useKeyshareRecoveryStats = __esm({
|
|
|
18927
19038
|
init_keyshare();
|
|
18928
19039
|
init_iframe_manager();
|
|
18929
19040
|
init_vaultClient();
|
|
18930
|
-
|
|
19041
|
+
init_constants6();
|
|
18931
19042
|
}
|
|
18932
19043
|
});
|
|
18933
19044
|
|
|
@@ -19346,7 +19457,7 @@ var init_useBridgeStore = __esm({
|
|
|
19346
19457
|
// src/internal/components/SendMenu/hyperbridge/components/SenderSelector.tsx
|
|
19347
19458
|
import { useConnectModal } from "@rainbow-me/rainbowkit";
|
|
19348
19459
|
import { useMutation as useMutation19 } from "@tanstack/react-query";
|
|
19349
|
-
import { useEffect as useEffect36, useRef as
|
|
19460
|
+
import { useEffect as useEffect36, useRef as useRef16, useState as useState21 } from "react";
|
|
19350
19461
|
import { useSignMessage } from "wagmi";
|
|
19351
19462
|
import { jsx as jsx91, jsxs as jsxs85 } from "react/jsx-runtime";
|
|
19352
19463
|
function SenderSelector(props) {
|
|
@@ -19357,11 +19468,11 @@ function SenderSelector(props) {
|
|
|
19357
19468
|
const { openConnectModal } = useConnectModal();
|
|
19358
19469
|
const directWalletAddress = useExternalWalletStore((st) => st.externalAddress);
|
|
19359
19470
|
const directWalletIsConnected = useExternalWalletStore((st) => st.isExternalConnected);
|
|
19360
|
-
const pendingWalletRef =
|
|
19471
|
+
const pendingWalletRef = useRef16(null);
|
|
19361
19472
|
const originChain = useBridgeStore((st) => st.originChain);
|
|
19362
19473
|
const bridgeSender = useBridgeStore((st) => st.bridgeSender);
|
|
19363
19474
|
const bridgeSenders = useBridgeStore((st) => st.bridgeSenders);
|
|
19364
|
-
const [walletMessage, setWalletMessage] =
|
|
19475
|
+
const [walletMessage, setWalletMessage] = useState21(null);
|
|
19365
19476
|
useEffect36(() => {
|
|
19366
19477
|
useFlowSelectorStore.getState().setRenderKey(`sender-selected-${Date.now()}`);
|
|
19367
19478
|
}, [walletMessage]);
|
|
@@ -19591,11 +19702,11 @@ var init_wallets = __esm({
|
|
|
19591
19702
|
});
|
|
19592
19703
|
|
|
19593
19704
|
// src/internal/components/SendMenu/hyperbridge/hooks/useAvailableSenders.ts
|
|
19594
|
-
import { useEffect as useEffect37, useRef as
|
|
19705
|
+
import { useEffect as useEffect37, useRef as useRef17 } from "react";
|
|
19595
19706
|
function useAvailableSenders() {
|
|
19596
19707
|
const address = useSession((st) => st.address);
|
|
19597
19708
|
const { profiles } = useLinkedProfiles();
|
|
19598
|
-
const lastCalcedSenders =
|
|
19709
|
+
const lastCalcedSenders = useRef17([]);
|
|
19599
19710
|
useEffect37(() => {
|
|
19600
19711
|
const sendersAccumulator = [
|
|
19601
19712
|
{
|
|
@@ -19935,7 +20046,7 @@ var init_executeWarpTxs = __esm({
|
|
|
19935
20046
|
|
|
19936
20047
|
// src/internal/components/SendMenu/hyperbridge/utils.ts
|
|
19937
20048
|
import { SUPPORTED_CHAINS as SUPPORTED_CHAINS2 } from "@embarkai/core/read";
|
|
19938
|
-
import { formatUnits as
|
|
20049
|
+
import { formatUnits as formatUnits7 } from "viem";
|
|
19939
20050
|
function isNftAsset2(asset) {
|
|
19940
20051
|
if (!asset) return false;
|
|
19941
20052
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
@@ -19943,13 +20054,13 @@ function isNftAsset2(asset) {
|
|
|
19943
20054
|
function getAssetBalance(asset) {
|
|
19944
20055
|
if (!asset) return 0;
|
|
19945
20056
|
if (isNftAsset2(asset)) return 1;
|
|
19946
|
-
return Number(
|
|
20057
|
+
return Number(formatUnits7(BigInt(asset.balance || "0"), asset.decimals || 18));
|
|
19947
20058
|
}
|
|
19948
20059
|
function isOririnChainEmbarkSupported(originChain) {
|
|
19949
20060
|
const supportedChain = [...SUPPORTED_CHAINS2].map(([chainId]) => chainId);
|
|
19950
20061
|
return supportedChain.includes(CHAINS_UI_META[originChain].chainID);
|
|
19951
20062
|
}
|
|
19952
|
-
var
|
|
20063
|
+
var init_utils9 = __esm({
|
|
19953
20064
|
"src/internal/components/SendMenu/hyperbridge/utils.ts"() {
|
|
19954
20065
|
init_chains();
|
|
19955
20066
|
}
|
|
@@ -20216,14 +20327,14 @@ var init_useBridge = __esm({
|
|
|
20216
20327
|
init_chains();
|
|
20217
20328
|
init_executeWarpTxs();
|
|
20218
20329
|
init_useBridgeStore();
|
|
20219
|
-
|
|
20330
|
+
init_utils9();
|
|
20220
20331
|
init_useHyperlaneHistory();
|
|
20221
20332
|
init_useOperationHashesStore();
|
|
20222
20333
|
}
|
|
20223
20334
|
});
|
|
20224
20335
|
|
|
20225
20336
|
// src/internal/components/SendMenu/hyperbridge/hooks/useHyperlaneRoutes.ts
|
|
20226
|
-
import { useQuery as
|
|
20337
|
+
import { useQuery as useQuery19 } from "@tanstack/react-query";
|
|
20227
20338
|
import { useEffect as useEffect39 } from "react";
|
|
20228
20339
|
function useHyperlaneRoutes() {
|
|
20229
20340
|
const address = useSession((st) => st.address);
|
|
@@ -20234,7 +20345,7 @@ function useHyperlaneRoutes() {
|
|
|
20234
20345
|
data: hyperlaneWarpRoutes = [],
|
|
20235
20346
|
isLoading: isLoadingWarpRoutes,
|
|
20236
20347
|
error: errorWarpRoutes
|
|
20237
|
-
} =
|
|
20348
|
+
} = useQuery19({
|
|
20238
20349
|
retry: false,
|
|
20239
20350
|
enabled: !!address && page === "send" /* SEND */ && flow === "bridge",
|
|
20240
20351
|
queryKey: [HYPERLANE_WARP_ROUTES_QUERY_KEY, address],
|
|
@@ -20280,7 +20391,7 @@ var init_useHyperlaneRoutes = __esm({
|
|
|
20280
20391
|
init_useFlowSelector();
|
|
20281
20392
|
init_api3();
|
|
20282
20393
|
init_useBridgeStore();
|
|
20283
|
-
|
|
20394
|
+
init_utils9();
|
|
20284
20395
|
HYPERLANE_WARP_ROUTES_QUERY_KEY = "hyperlane-available-warp-routes";
|
|
20285
20396
|
}
|
|
20286
20397
|
});
|
|
@@ -20343,9 +20454,9 @@ var init_ResolveChainIcon = __esm({
|
|
|
20343
20454
|
|
|
20344
20455
|
// src/internal/components/SendMenu/hyperbridge/hooks/useBridgeBalance.ts
|
|
20345
20456
|
import { CHAINS_BROWSERS_TRANSPORTS as CHAINS_BROWSERS_TRANSPORTS2 } from "@embarkai/core";
|
|
20346
|
-
import { useQuery as
|
|
20457
|
+
import { useQuery as useQuery20, useQueryClient as useQueryClient23 } from "@tanstack/react-query";
|
|
20347
20458
|
import { useCallback as useCallback28, useEffect as useEffect41 } from "react";
|
|
20348
|
-
import { createPublicClient as createPublicClient2, erc20Abi as
|
|
20459
|
+
import { createPublicClient as createPublicClient2, erc20Abi as erc20Abi3, formatUnits as formatUnits8, http as http3 } from "viem";
|
|
20349
20460
|
import { useSwitchChain as useSwitchChain2 } from "wagmi";
|
|
20350
20461
|
function checkWrapedTokenSymbol2(symbol) {
|
|
20351
20462
|
if (WRAPPED_TOKENS.includes(symbol)) {
|
|
@@ -20381,7 +20492,7 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
|
|
|
20381
20492
|
const embarkTokenBalanace = assets.find((a) => selectedWarpRoute?.symbol === checkWrapedTokenSymbol2(a.symbol));
|
|
20382
20493
|
const originChainMeta = CHAINS_UI_META[originChain];
|
|
20383
20494
|
const isSelectedTokenNative = selectedWarpRoute?.symbol?.toUpperCase() === originChainMeta?.chain?.nativeCurrency?.symbol?.toUpperCase();
|
|
20384
|
-
const { data: externalBalanceData, isLoading: isExternalBalanceLoading } =
|
|
20495
|
+
const { data: externalBalanceData, isLoading: isExternalBalanceLoading } = useQuery20({
|
|
20385
20496
|
retry: false,
|
|
20386
20497
|
enabled: bridgeSender === "direct-wallet" && !isSelectedTokenNative && !!directWalletAddress && !!routeTokenAddress && !!originChain,
|
|
20387
20498
|
queryKey: [EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY, originChain, directWalletAddress, routeTokenAddress],
|
|
@@ -20394,20 +20505,20 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
|
|
|
20394
20505
|
const [value, decimals, symbol] = await Promise.all([
|
|
20395
20506
|
client.readContract({
|
|
20396
20507
|
address: routeTokenAddress,
|
|
20397
|
-
abi:
|
|
20508
|
+
abi: erc20Abi3,
|
|
20398
20509
|
functionName: "balanceOf",
|
|
20399
20510
|
args: [directWalletAddress],
|
|
20400
20511
|
authorizationList: void 0
|
|
20401
20512
|
}),
|
|
20402
20513
|
client.readContract({
|
|
20403
20514
|
address: routeTokenAddress,
|
|
20404
|
-
abi:
|
|
20515
|
+
abi: erc20Abi3,
|
|
20405
20516
|
functionName: "decimals",
|
|
20406
20517
|
authorizationList: void 0
|
|
20407
20518
|
}),
|
|
20408
20519
|
client.readContract({
|
|
20409
20520
|
address: routeTokenAddress,
|
|
20410
|
-
abi:
|
|
20521
|
+
abi: erc20Abi3,
|
|
20411
20522
|
functionName: "symbol",
|
|
20412
20523
|
authorizationList: void 0
|
|
20413
20524
|
})
|
|
@@ -20420,11 +20531,11 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
|
|
|
20420
20531
|
});
|
|
20421
20532
|
return [BigInt(0), 18, selectedWarpRoute.symbol];
|
|
20422
20533
|
});
|
|
20423
|
-
const formatted = Number(
|
|
20534
|
+
const formatted = Number(formatUnits8(value, decimals));
|
|
20424
20535
|
return { value, decimals, symbol, formatted };
|
|
20425
20536
|
}
|
|
20426
20537
|
});
|
|
20427
|
-
const { data: externalNativeBalanceData, isLoading: isExternalNativeBalanceLoading } =
|
|
20538
|
+
const { data: externalNativeBalanceData, isLoading: isExternalNativeBalanceLoading } = useQuery20({
|
|
20428
20539
|
retry: false,
|
|
20429
20540
|
enabled: bridgeSender === "direct-wallet" && isSelectedTokenNative && !!directWalletAddress && !!originChain,
|
|
20430
20541
|
queryKey: [EXTERNAL_WALLET_BRIDGING_NATIVE_BALANCE_QUERY, originChain, directWalletAddress],
|
|
@@ -20480,7 +20591,7 @@ function useBridgeBalance(hyperlaneWarpRoutes) {
|
|
|
20480
20591
|
}
|
|
20481
20592
|
}, [bridgeSender, originChain, directWalletChainId, switchChainAsync]);
|
|
20482
20593
|
const embarkBalance = embarkTokenBalanace ? getAssetBalance(embarkTokenBalanace) : 0;
|
|
20483
|
-
const externalWalletBalance = isSelectedTokenNative ?
|
|
20594
|
+
const externalWalletBalance = isSelectedTokenNative ? formatUnits8(externalNativeBalanceData?.value || BigInt(0), externalNativeBalanceData?.decimals || 18) : formatUnits8(externalBalanceData?.value || BigInt(0), externalBalanceData?.decimals || 18);
|
|
20484
20595
|
return {
|
|
20485
20596
|
routeTokenBalance: isEmbarkSender ? embarkBalance : externalWalletBalance,
|
|
20486
20597
|
isRouteTokenBalanceLoading: isAssetsLoading || isExternalBalanceLoading || isExternalNativeBalanceLoading
|
|
@@ -20492,12 +20603,12 @@ var init_useBridgeBalance = __esm({
|
|
|
20492
20603
|
init_constants();
|
|
20493
20604
|
init_SessionContext();
|
|
20494
20605
|
init_i18n();
|
|
20495
|
-
|
|
20606
|
+
init_useBlockscoutAssets2();
|
|
20496
20607
|
init_useExternalWalletStore();
|
|
20497
20608
|
init_useFlowSelector();
|
|
20498
20609
|
init_chains();
|
|
20499
20610
|
init_useBridgeStore();
|
|
20500
|
-
|
|
20611
|
+
init_utils9();
|
|
20501
20612
|
EXTERNAL_WALLET_BRIDGING_BALANCE_QUERY = "external-wallet-bridging-balance-query";
|
|
20502
20613
|
EXTERNAL_WALLET_BRIDGING_NATIVE_BALANCE_QUERY = "external-wallet-bridging-native-balance-query";
|
|
20503
20614
|
}
|
|
@@ -20794,11 +20905,11 @@ var init_checkbox = __esm({
|
|
|
20794
20905
|
|
|
20795
20906
|
// src/internal/components/SendMenu/hyperbridge/steps/ConfirmStep.tsx
|
|
20796
20907
|
import { LoaderIcon as LoaderIcon12 } from "lucide-react";
|
|
20797
|
-
import { useState as
|
|
20908
|
+
import { useState as useState22 } from "react";
|
|
20798
20909
|
import { jsx as jsx97, jsxs as jsxs89 } from "react/jsx-runtime";
|
|
20799
20910
|
function ConfirmStep(props) {
|
|
20800
20911
|
const { isAssetBridging, bridgeAsset, hyperlaneWarpRoutes } = props;
|
|
20801
|
-
const [userConsent, setUserConsent] =
|
|
20912
|
+
const [userConsent, setUserConsent] = useState22(false);
|
|
20802
20913
|
const { t } = useT();
|
|
20803
20914
|
const address = useSession((st) => st.address);
|
|
20804
20915
|
const bridgeSender = useBridgeStore((st) => st.bridgeSenders.find((s) => s.type === st.bridgeSender));
|
|
@@ -21283,12 +21394,12 @@ var init_HistoryStep = __esm({
|
|
|
21283
21394
|
|
|
21284
21395
|
// src/internal/components/SendMenu/hyperbridge/steps/SelectAssetRoute.tsx
|
|
21285
21396
|
import { ArrowLeftRightIcon as ArrowLeftRightIcon2 } from "lucide-react";
|
|
21286
|
-
import { useMemo as useMemo13, useState as
|
|
21397
|
+
import { useMemo as useMemo13, useState as useState23 } from "react";
|
|
21287
21398
|
import { Fragment as Fragment38, jsx as jsx100, jsxs as jsxs92 } from "react/jsx-runtime";
|
|
21288
21399
|
function SelectAssetRoute(props) {
|
|
21289
21400
|
const { hyperlaneWarpRoutes } = props;
|
|
21290
21401
|
const { t } = useT();
|
|
21291
|
-
const [isTokenSymbolSelector, setIsTokenSymbolSelector] =
|
|
21402
|
+
const [isTokenSymbolSelector, setIsTokenSymbolSelector] = useState23(false);
|
|
21292
21403
|
const selectedAssetSymbol = useBridgeStore((st) => st.bridgeAssetSymbol);
|
|
21293
21404
|
const tokenList = useMemo13(() => {
|
|
21294
21405
|
const tokens = hyperlaneWarpRoutes.map((route) => route.symbol);
|
|
@@ -21395,7 +21506,7 @@ var init_SelectAssetRoute = __esm({
|
|
|
21395
21506
|
init_useFlowSelector();
|
|
21396
21507
|
init_ResolveChainIcon();
|
|
21397
21508
|
init_useBridgeStore();
|
|
21398
|
-
|
|
21509
|
+
init_utils9();
|
|
21399
21510
|
}
|
|
21400
21511
|
});
|
|
21401
21512
|
|
|
@@ -21465,14 +21576,14 @@ var init_HyperlaneBridge = __esm({
|
|
|
21465
21576
|
});
|
|
21466
21577
|
|
|
21467
21578
|
// src/internal/components/SendMenu/hyperbridge/components/HistorySwitch.tsx
|
|
21468
|
-
import { useRef as
|
|
21579
|
+
import { useRef as useRef18 } from "react";
|
|
21469
21580
|
import { jsx as jsx102 } from "react/jsx-runtime";
|
|
21470
21581
|
function BridgeHistorySwitch(props) {
|
|
21471
21582
|
const { disabled } = props;
|
|
21472
21583
|
const selectorFlow = useFlowSelectorStore((st) => st.flow);
|
|
21473
21584
|
const isUiLocked = useFlowSelectorStore((st) => st.isUiLocked);
|
|
21474
21585
|
const bridgeStep = useBridgeStore((st) => st.bridgeStep);
|
|
21475
|
-
const lastBridgeStepRef =
|
|
21586
|
+
const lastBridgeStepRef = useRef18(null);
|
|
21476
21587
|
if (selectorFlow !== "bridge" || bridgeStep === "confirm" || bridgeStep === "success" || bridgeStep === "sender-selector" || bridgeStep === "select-token" || bridgeStep === "tx-history-details") {
|
|
21477
21588
|
return null;
|
|
21478
21589
|
}
|
|
@@ -21573,8 +21684,8 @@ var init_useErc3643Compliance = __esm({
|
|
|
21573
21684
|
});
|
|
21574
21685
|
|
|
21575
21686
|
// src/hooks/useNicknameResolve.ts
|
|
21576
|
-
import { useQuery as
|
|
21577
|
-
import { useEffect as useEffect43, useMemo as useMemo14, useState as
|
|
21687
|
+
import { useQuery as useQuery21 } from "@tanstack/react-query";
|
|
21688
|
+
import { useEffect as useEffect43, useMemo as useMemo14, useState as useState24 } from "react";
|
|
21578
21689
|
function looksLikeNickname(input) {
|
|
21579
21690
|
if (!input) return false;
|
|
21580
21691
|
if (input.startsWith("0x")) return false;
|
|
@@ -21584,8 +21695,8 @@ function looksLikeNickname(input) {
|
|
|
21584
21695
|
}
|
|
21585
21696
|
function useNicknameResolve(input, options) {
|
|
21586
21697
|
const { enabled = true, chainId } = options;
|
|
21587
|
-
const [debouncedInput, setDebouncedInput] =
|
|
21588
|
-
const [isDebouncing, setIsDebouncing] =
|
|
21698
|
+
const [debouncedInput, setDebouncedInput] = useState24("");
|
|
21699
|
+
const [isDebouncing, setIsDebouncing] = useState24(false);
|
|
21589
21700
|
const normalized = normalizeNickname(input);
|
|
21590
21701
|
const isNicknameInput = looksLikeNickname(input) && normalized.length >= 3;
|
|
21591
21702
|
useEffect43(() => {
|
|
@@ -21603,7 +21714,7 @@ function useNicknameResolve(input, options) {
|
|
|
21603
21714
|
clearTimeout(timer);
|
|
21604
21715
|
};
|
|
21605
21716
|
}, [normalized, isNicknameInput, enabled]);
|
|
21606
|
-
const query =
|
|
21717
|
+
const query = useQuery21({
|
|
21607
21718
|
queryKey: [...QUERY_KEYS.nicknameResolve(debouncedInput), chainId],
|
|
21608
21719
|
queryFn: async () => await resolveNickname(debouncedInput, chainId),
|
|
21609
21720
|
enabled: enabled && isNicknameInput && debouncedInput.length > 0,
|
|
@@ -21648,14 +21759,14 @@ var init_useNicknameResolve = __esm({
|
|
|
21648
21759
|
});
|
|
21649
21760
|
|
|
21650
21761
|
// src/hooks/useSendTransaction.ts
|
|
21651
|
-
import { useCallback as useCallback29, useState as
|
|
21762
|
+
import { useCallback as useCallback29, useState as useState25 } from "react";
|
|
21652
21763
|
import { encodeFunctionData as encodeFunctionData2, isAddress, parseEther as parseEther2, parseUnits } from "viem";
|
|
21653
21764
|
function useSendTransaction() {
|
|
21654
21765
|
const session = useSession((st) => st.session);
|
|
21655
21766
|
const address = useSession((st) => st.address);
|
|
21656
|
-
const [isLoading, setIsLoading] =
|
|
21657
|
-
const [error, setError] =
|
|
21658
|
-
const [userOpHash, setUserOpHash] =
|
|
21767
|
+
const [isLoading, setIsLoading] = useState25(false);
|
|
21768
|
+
const [error, setError] = useState25(null);
|
|
21769
|
+
const [userOpHash, setUserOpHash] = useState25(null);
|
|
21659
21770
|
const sendTransaction = useCallback29(
|
|
21660
21771
|
async (params) => {
|
|
21661
21772
|
if (!session || !address) {
|
|
@@ -21812,7 +21923,7 @@ var init_useSendTransaction = __esm({
|
|
|
21812
21923
|
});
|
|
21813
21924
|
|
|
21814
21925
|
// src/internal/components/SendMenu/send/utils.ts
|
|
21815
|
-
import { formatUnits as
|
|
21926
|
+
import { formatUnits as formatUnits9 } from "viem";
|
|
21816
21927
|
function isNftAsset3(asset) {
|
|
21817
21928
|
if (!asset) return false;
|
|
21818
21929
|
return asset.type === "erc721" || asset.type === "erc1155";
|
|
@@ -21824,12 +21935,12 @@ function isSecurityToken2(asset) {
|
|
|
21824
21935
|
function getAssetBalance2(asset) {
|
|
21825
21936
|
if (!asset) return 0;
|
|
21826
21937
|
if (isNftAsset3(asset)) return 1;
|
|
21827
|
-
return Number(
|
|
21938
|
+
return Number(formatUnits9(BigInt(asset.balance || "0"), asset.decimals || 18));
|
|
21828
21939
|
}
|
|
21829
21940
|
function isBalance(asset) {
|
|
21830
21941
|
return asset?.balance && BigInt(asset.balance || 0) > 0n;
|
|
21831
21942
|
}
|
|
21832
|
-
var
|
|
21943
|
+
var init_utils10 = __esm({
|
|
21833
21944
|
"src/internal/components/SendMenu/send/utils.ts"() {
|
|
21834
21945
|
}
|
|
21835
21946
|
});
|
|
@@ -21902,16 +22013,16 @@ var init_AssetInputIcon = __esm({
|
|
|
21902
22013
|
init_tokens();
|
|
21903
22014
|
init_no_image();
|
|
21904
22015
|
init_utils2();
|
|
21905
|
-
|
|
22016
|
+
init_utils10();
|
|
21906
22017
|
}
|
|
21907
22018
|
});
|
|
21908
22019
|
|
|
21909
22020
|
// src/internal/components/SendMenu/send/components/NftDisplayCard.tsx
|
|
21910
22021
|
import { Image as ImageIcon2, Sparkles as Sparkles2 } from "lucide-react";
|
|
21911
|
-
import { useState as
|
|
22022
|
+
import { useState as useState26 } from "react";
|
|
21912
22023
|
import { jsx as jsx104, jsxs as jsxs95 } from "react/jsx-runtime";
|
|
21913
22024
|
function NftDisplayCard({ asset }) {
|
|
21914
|
-
const [imageError, setImageError] =
|
|
22025
|
+
const [imageError, setImageError] = useState26(false);
|
|
21915
22026
|
const nftImage = asset.image || asset.nftMetadata?.image;
|
|
21916
22027
|
return /* @__PURE__ */ jsxs95("div", { className: "flex items-center gap-3 p-3 rounded-[var(--ui-kit-el-bdrs)] bg-[var(--ui-kit-bg-secondary)]", children: [
|
|
21917
22028
|
nftImage && !imageError ? /* @__PURE__ */ jsx104(
|
|
@@ -21984,11 +22095,11 @@ var init_useSendStore = __esm({
|
|
|
21984
22095
|
});
|
|
21985
22096
|
|
|
21986
22097
|
// src/internal/components/SendMenu/send/components/AssetList.tsx
|
|
21987
|
-
import { formatUnits as
|
|
22098
|
+
import { formatUnits as formatUnits10 } from "viem";
|
|
21988
22099
|
import { Fragment as Fragment40, jsx as jsx105, jsxs as jsxs96 } from "react/jsx-runtime";
|
|
21989
22100
|
function getAssetBalance3(asset) {
|
|
21990
22101
|
if (isNftAsset3(asset)) return "1";
|
|
21991
|
-
const balance = Number(
|
|
22102
|
+
const balance = Number(formatUnits10(BigInt(asset?.balance || "0"), asset?.decimals || 18));
|
|
21992
22103
|
return formatPrice(balance);
|
|
21993
22104
|
}
|
|
21994
22105
|
function AssetListItem(props) {
|
|
@@ -22080,7 +22191,7 @@ var init_AssetList = __esm({
|
|
|
22080
22191
|
init_truncateMiddle();
|
|
22081
22192
|
init_BalanceView2();
|
|
22082
22193
|
init_useSendStore();
|
|
22083
|
-
|
|
22194
|
+
init_utils10();
|
|
22084
22195
|
init_AssetInputIcon();
|
|
22085
22196
|
}
|
|
22086
22197
|
});
|
|
@@ -22179,11 +22290,11 @@ var init_components3 = __esm({
|
|
|
22179
22290
|
|
|
22180
22291
|
// src/internal/components/SendMenu/send/useTokenBalance.ts
|
|
22181
22292
|
import {
|
|
22182
|
-
useQuery as
|
|
22293
|
+
useQuery as useQuery22
|
|
22183
22294
|
} from "@tanstack/react-query";
|
|
22184
22295
|
import {
|
|
22185
|
-
erc20Abi as
|
|
22186
|
-
formatUnits as
|
|
22296
|
+
erc20Abi as erc20Abi4,
|
|
22297
|
+
formatUnits as formatUnits11
|
|
22187
22298
|
} from "viem";
|
|
22188
22299
|
function isNftAsset4(asset) {
|
|
22189
22300
|
if (!asset) return false;
|
|
@@ -22192,7 +22303,7 @@ function isNftAsset4(asset) {
|
|
|
22192
22303
|
function useTokenBalance(asset) {
|
|
22193
22304
|
const address = useSession((st) => st.address);
|
|
22194
22305
|
const chainConfig = useSession((st) => st.chainConfig);
|
|
22195
|
-
return
|
|
22306
|
+
return useQuery22({
|
|
22196
22307
|
retry: false,
|
|
22197
22308
|
enabled: !!address && !!chainConfig?.id && !!asset?.symbol,
|
|
22198
22309
|
refetchInterval: 5e3,
|
|
@@ -22216,7 +22327,7 @@ function useTokenBalance(asset) {
|
|
|
22216
22327
|
const balanceValue = await client.getBalance({ address });
|
|
22217
22328
|
return {
|
|
22218
22329
|
decimals: chainConfig?.nativeCurrency?.decimals || 18,
|
|
22219
|
-
formatted: Number(
|
|
22330
|
+
formatted: Number(formatUnits11(balanceValue, chainConfig?.nativeCurrency?.decimals || 18)),
|
|
22220
22331
|
symbol: asset.symbol,
|
|
22221
22332
|
value: balanceValue
|
|
22222
22333
|
};
|
|
@@ -22225,20 +22336,20 @@ function useTokenBalance(asset) {
|
|
|
22225
22336
|
client.readContract({
|
|
22226
22337
|
// address: routeTokenAddress as `0x${string}`,
|
|
22227
22338
|
address: asset.address,
|
|
22228
|
-
abi:
|
|
22339
|
+
abi: erc20Abi4,
|
|
22229
22340
|
functionName: "balanceOf",
|
|
22230
22341
|
args: [address],
|
|
22231
22342
|
authorizationList: void 0
|
|
22232
22343
|
}),
|
|
22233
22344
|
client.readContract({
|
|
22234
22345
|
address: asset.address,
|
|
22235
|
-
abi:
|
|
22346
|
+
abi: erc20Abi4,
|
|
22236
22347
|
functionName: "decimals",
|
|
22237
22348
|
authorizationList: void 0
|
|
22238
22349
|
}),
|
|
22239
22350
|
client.readContract({
|
|
22240
22351
|
address: asset.address,
|
|
22241
|
-
abi:
|
|
22352
|
+
abi: erc20Abi4,
|
|
22242
22353
|
functionName: "symbol",
|
|
22243
22354
|
authorizationList: void 0
|
|
22244
22355
|
})
|
|
@@ -22251,7 +22362,7 @@ function useTokenBalance(asset) {
|
|
|
22251
22362
|
});
|
|
22252
22363
|
return [BigInt(0), 18, asset.symbol];
|
|
22253
22364
|
});
|
|
22254
|
-
return { decimals, formatted: Number(
|
|
22365
|
+
return { decimals, formatted: Number(formatUnits11(value, decimals)), symbol, value };
|
|
22255
22366
|
}
|
|
22256
22367
|
}
|
|
22257
22368
|
});
|
|
@@ -22266,7 +22377,7 @@ var init_useTokenBalance = __esm({
|
|
|
22266
22377
|
|
|
22267
22378
|
// src/internal/components/SendMenu/send/sendSteps/InputSendStep.tsx
|
|
22268
22379
|
import { AlertCircle as AlertCircle4, AtSign as AtSign2, CheckCircle2 as CheckCircle25, Loader as Loader20, Wallet2 as Wallet24 } from "lucide-react";
|
|
22269
|
-
import { formatUnits as
|
|
22380
|
+
import { formatUnits as formatUnits12, isAddress as isAddress2 } from "viem";
|
|
22270
22381
|
import { Fragment as Fragment41, jsx as jsx107, jsxs as jsxs98 } from "react/jsx-runtime";
|
|
22271
22382
|
function InputSendStep(props) {
|
|
22272
22383
|
const { erc3643Compliance, isNicknameInput, resolvedNicknameData, isAssetsLoading } = props;
|
|
@@ -22297,7 +22408,7 @@ function InputSendStep(props) {
|
|
|
22297
22408
|
const maxAmount = Math.max(0, balanceData.formatted - 1e-3);
|
|
22298
22409
|
setAmount(maxAmount.toFixed(6));
|
|
22299
22410
|
} else {
|
|
22300
|
-
setAmount(
|
|
22411
|
+
setAmount(formatUnits12(BigInt(selectedAsset.balance || "0"), selectedAsset.decimals || 18));
|
|
22301
22412
|
}
|
|
22302
22413
|
};
|
|
22303
22414
|
const validateInput = () => {
|
|
@@ -22469,7 +22580,7 @@ var init_InputSendStep = __esm({
|
|
|
22469
22580
|
init_components3();
|
|
22470
22581
|
init_useSendStore();
|
|
22471
22582
|
init_useTokenBalance();
|
|
22472
|
-
|
|
22583
|
+
init_utils10();
|
|
22473
22584
|
}
|
|
22474
22585
|
});
|
|
22475
22586
|
|
|
@@ -22652,7 +22763,7 @@ var init_ConfirmSendStep = __esm({
|
|
|
22652
22763
|
init_highlight();
|
|
22653
22764
|
init_useFlowSelector();
|
|
22654
22765
|
init_useSendStore();
|
|
22655
|
-
|
|
22766
|
+
init_utils10();
|
|
22656
22767
|
}
|
|
22657
22768
|
});
|
|
22658
22769
|
|
|
@@ -22820,7 +22931,7 @@ var init_SendMenu = __esm({
|
|
|
22820
22931
|
init_useNicknameResolve();
|
|
22821
22932
|
init_useSendTransaction();
|
|
22822
22933
|
init_useT();
|
|
22823
|
-
|
|
22934
|
+
init_useBlockscoutAssets2();
|
|
22824
22935
|
init_useLayoutDataStore();
|
|
22825
22936
|
init_button();
|
|
22826
22937
|
init_highlight();
|
|
@@ -22828,7 +22939,7 @@ var init_SendMenu = __esm({
|
|
|
22828
22939
|
init_components3();
|
|
22829
22940
|
init_sendSteps();
|
|
22830
22941
|
init_useSendStore();
|
|
22831
|
-
|
|
22942
|
+
init_utils10();
|
|
22832
22943
|
}
|
|
22833
22944
|
});
|
|
22834
22945
|
|
|
@@ -23053,7 +23164,7 @@ var init_pro_mode = __esm({
|
|
|
23053
23164
|
// src/internal/components/SettingsMenu/constants.ts
|
|
23054
23165
|
import { ArrowLeftRight, AtSign as AtSign4, DatabaseBackup as DatabaseBackup2, Link2, LockKeyhole, UsersRound } from "lucide-react";
|
|
23055
23166
|
var NAV_BUTTONS;
|
|
23056
|
-
var
|
|
23167
|
+
var init_constants7 = __esm({
|
|
23057
23168
|
"src/internal/components/SettingsMenu/constants.ts"() {
|
|
23058
23169
|
init_icons();
|
|
23059
23170
|
NAV_BUTTONS = [
|
|
@@ -23069,7 +23180,7 @@ var init_constants6 = __esm({
|
|
|
23069
23180
|
});
|
|
23070
23181
|
|
|
23071
23182
|
// src/internal/components/SettingsMenu/SettingsMenu.tsx
|
|
23072
|
-
import { useQuery as
|
|
23183
|
+
import { useQuery as useQuery23 } from "@tanstack/react-query";
|
|
23073
23184
|
import { ArrowLeft as ArrowLeft20, HardDrive as HardDrive3 } from "lucide-react";
|
|
23074
23185
|
import { useEffect as useEffect47 } from "react";
|
|
23075
23186
|
import { jsx as jsx111, jsxs as jsxs102 } from "react/jsx-runtime";
|
|
@@ -23112,7 +23223,7 @@ function SettingsMenu() {
|
|
|
23112
23223
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
23113
23224
|
const settingsButtons = useSettingsButtons();
|
|
23114
23225
|
useProvidersList();
|
|
23115
|
-
|
|
23226
|
+
useQuery23({
|
|
23116
23227
|
retry: 1,
|
|
23117
23228
|
enabled: !!address,
|
|
23118
23229
|
queryKey: [QUERY_KEYS.nicknameInfo, address],
|
|
@@ -23167,7 +23278,7 @@ var init_SettingsMenu = __esm({
|
|
|
23167
23278
|
init_utils2();
|
|
23168
23279
|
init_useProvidersList();
|
|
23169
23280
|
init_button();
|
|
23170
|
-
|
|
23281
|
+
init_constants7();
|
|
23171
23282
|
}
|
|
23172
23283
|
});
|
|
23173
23284
|
|
|
@@ -23846,7 +23957,7 @@ function formatIntl(price, fractionDigits) {
|
|
|
23846
23957
|
return formatter.format(price);
|
|
23847
23958
|
}
|
|
23848
23959
|
var formatAddress, parseValue, formatValue2, openInExplorer2, formatTimestamp;
|
|
23849
|
-
var
|
|
23960
|
+
var init_utils11 = __esm({
|
|
23850
23961
|
"src/internal/components/TransactionsMenu/utils.ts"() {
|
|
23851
23962
|
init_base2();
|
|
23852
23963
|
formatAddress = (addr) => {
|
|
@@ -24022,14 +24133,14 @@ var init_TransactionsGroup = __esm({
|
|
|
24022
24133
|
init_icons();
|
|
24023
24134
|
init_utils2();
|
|
24024
24135
|
init_button();
|
|
24025
|
-
|
|
24136
|
+
init_utils11();
|
|
24026
24137
|
}
|
|
24027
24138
|
});
|
|
24028
24139
|
|
|
24029
24140
|
// src/internal/components/TransactionsMenu/TransactionsMenu.tsx
|
|
24030
|
-
import { useQuery as
|
|
24141
|
+
import { useQuery as useQuery24, useQueryClient as useQueryClient25 } from "@tanstack/react-query";
|
|
24031
24142
|
import { ArrowLeft as ArrowLeft22, Loader as Loader28, RefreshCw as RefreshCw3, XCircle } from "lucide-react";
|
|
24032
|
-
import { useCallback as useCallback30, useState as
|
|
24143
|
+
import { useCallback as useCallback30, useState as useState27 } from "react";
|
|
24033
24144
|
import { jsx as jsx114, jsxs as jsxs105 } from "react/jsx-runtime";
|
|
24034
24145
|
function TransactionsMenu() {
|
|
24035
24146
|
const qc = useQueryClient25();
|
|
@@ -24038,14 +24149,14 @@ function TransactionsMenu() {
|
|
|
24038
24149
|
const { t } = useT();
|
|
24039
24150
|
const setPage = useLayoutDataStore((st) => st.setPage);
|
|
24040
24151
|
const maxScrollHeight = useLayoutStore((st) => st.maxScrollHeight);
|
|
24041
|
-
const [expandedGroups, setExpandedGroups] =
|
|
24152
|
+
const [expandedGroups, setExpandedGroups] = useState27({});
|
|
24042
24153
|
const historySupported = isTransactionHistorySupported(chainConfig?.id);
|
|
24043
24154
|
const {
|
|
24044
24155
|
data: txHistoryGroups = [],
|
|
24045
24156
|
isLoading: isTxHistoryLoading,
|
|
24046
24157
|
isFetching: isTxHistoryFetching,
|
|
24047
24158
|
error: txHistoryError
|
|
24048
|
-
} =
|
|
24159
|
+
} = useQuery24({
|
|
24049
24160
|
retry: false,
|
|
24050
24161
|
enabled: !!address && !!chainConfig?.id && historySupported,
|
|
24051
24162
|
queryKey: [TRANSACTIONS_HISTORY_QUERY_KEY, chainConfig.id, address],
|
|
@@ -24391,7 +24502,7 @@ var init_package = __esm({
|
|
|
24391
24502
|
"package.json"() {
|
|
24392
24503
|
package_default = {
|
|
24393
24504
|
name: "@embarkai/ui-kit",
|
|
24394
|
-
version: "0.4.
|
|
24505
|
+
version: "0.4.60",
|
|
24395
24506
|
description: "React UI components and hooks for EmbarkAI authentication and Account Abstraction",
|
|
24396
24507
|
type: "module",
|
|
24397
24508
|
main: "./dist/index.cjs",
|
|
@@ -24564,7 +24675,7 @@ function Footer() {
|
|
|
24564
24675
|
size: "small",
|
|
24565
24676
|
variant: "ghost",
|
|
24566
24677
|
disabled: isDisconnecting,
|
|
24567
|
-
onClick: () =>
|
|
24678
|
+
onClick: () => useLayoutDataStore.getState().setPage("chain" /* CHAIN */),
|
|
24568
24679
|
children: [
|
|
24569
24680
|
/* @__PURE__ */ jsx116(ChainIcon, { className: "flex-none w-6 h-6" }),
|
|
24570
24681
|
/* @__PURE__ */ jsx116("span", { className: "text-xs font-bold", children: chainConfig.name || "EmbarkAI Wallet" })
|
|
@@ -24608,7 +24719,6 @@ var init_Footer = __esm({
|
|
|
24608
24719
|
init_SessionContext();
|
|
24609
24720
|
init_i18n();
|
|
24610
24721
|
init_auth();
|
|
24611
|
-
init_base2();
|
|
24612
24722
|
init_useLayoutDataStore();
|
|
24613
24723
|
init_useLayoutStore();
|
|
24614
24724
|
init_utils2();
|
|
@@ -24627,7 +24737,7 @@ var init_Footer2 = __esm({
|
|
|
24627
24737
|
|
|
24628
24738
|
// src/internal/components/Header/Header.tsx
|
|
24629
24739
|
import { Copy as Copy4, Loader as Loader30 } from "lucide-react";
|
|
24630
|
-
import { useCallback as useCallback32, useRef as
|
|
24740
|
+
import { useCallback as useCallback32, useRef as useRef19, useState as useState28 } from "react";
|
|
24631
24741
|
import { Fragment as Fragment45, jsx as jsx117, jsxs as jsxs107 } from "react/jsx-runtime";
|
|
24632
24742
|
function formatAddress2(addr) {
|
|
24633
24743
|
if (!addr) return "";
|
|
@@ -24639,10 +24749,10 @@ function Header() {
|
|
|
24639
24749
|
const chainConfig = useSession((st) => st.chainConfig);
|
|
24640
24750
|
const { t } = useT();
|
|
24641
24751
|
const proMode = useProMode();
|
|
24642
|
-
const [proToast, setProToast] =
|
|
24643
|
-
const [copied, setCopied] =
|
|
24644
|
-
const clickCountRef =
|
|
24645
|
-
const clickTimerRef =
|
|
24752
|
+
const [proToast, setProToast] = useState28(false);
|
|
24753
|
+
const [copied, setCopied] = useState28(false);
|
|
24754
|
+
const clickCountRef = useRef19(0);
|
|
24755
|
+
const clickTimerRef = useRef19(null);
|
|
24646
24756
|
const handleAvatarClick = useCallback32(() => {
|
|
24647
24757
|
clickCountRef.current += 1;
|
|
24648
24758
|
if (clickTimerRef.current) {
|
|
@@ -28196,7 +28306,7 @@ function notifyNoProjetctId(projectId) {
|
|
|
28196
28306
|
'\n\u2554\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2557\n\u2551 \u26A0\uFE0F EmbarkAI WARNING \u26A0\uFE0F \u2551\n\u2560\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2563\n\u2551 \u2551\n\u2551 projectId is NOT configured! \u2551\n\u2551 \u2551\n\u2551 Your integration will NOT work without a valid projectId. \u2551\n\u2551 Most features will be disabled and errors will occur. \u2551\n\u2551 \u2551\n\u2551 To fix this: \u2551\n\u2551 1. Get your projectId from: https://dashboard.embarkai.io/ \u2551\n\u2551 2. Add it to your Provider: \u2551\n\u2551 \u2551\n\u2551 <Provider projectId="your-project-id"> \u2551\n\u2551 {children} \u2551\n\u2551 </Provider> \u2551\n\u2551 \u2551\n\u255A\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u255D\n'
|
|
28197
28307
|
);
|
|
28198
28308
|
}
|
|
28199
|
-
var
|
|
28309
|
+
var init_utils12 = __esm({
|
|
28200
28310
|
"src/context/utils.ts"() {
|
|
28201
28311
|
}
|
|
28202
28312
|
});
|
|
@@ -28223,7 +28333,7 @@ import {
|
|
|
28223
28333
|
useContext,
|
|
28224
28334
|
useEffect as useEffect53,
|
|
28225
28335
|
useMemo as useMemo17,
|
|
28226
|
-
useRef as
|
|
28336
|
+
useRef as useRef20
|
|
28227
28337
|
} from "react";
|
|
28228
28338
|
import { jsx as jsx124 } from "react/jsx-runtime";
|
|
28229
28339
|
function clearLegacyWagmiStorage() {
|
|
@@ -28243,9 +28353,9 @@ function clearLegacyWagmiStorage() {
|
|
|
28243
28353
|
}
|
|
28244
28354
|
function Provider(props) {
|
|
28245
28355
|
const { children, projectId, initialConfig = {}, callbacks } = props;
|
|
28246
|
-
const callbacksRef =
|
|
28356
|
+
const callbacksRef = useRef20(callbacks);
|
|
28247
28357
|
useEffect53(() => notifyNoProjetctId(projectId), [projectId]);
|
|
28248
|
-
const config =
|
|
28358
|
+
const config = useRef20(merge3({}, DEFAULT_PROVIDER_CONFIG, { projectId }, initialConfig));
|
|
28249
28359
|
const updateConfig = useCallback35((updates) => {
|
|
28250
28360
|
const prev = config.current;
|
|
28251
28361
|
const next = { ...prev };
|
|
@@ -28362,7 +28472,7 @@ var init_ProviderContext = __esm({
|
|
|
28362
28472
|
init_iframe_manager();
|
|
28363
28473
|
init_RainbowKitContext();
|
|
28364
28474
|
init_SessionContext();
|
|
28365
|
-
|
|
28475
|
+
init_utils12();
|
|
28366
28476
|
init_WagmiContext();
|
|
28367
28477
|
UIContext = createContext(void 0);
|
|
28368
28478
|
useProviderConfig = () => {
|
|
@@ -28374,7 +28484,7 @@ var init_ProviderContext = __esm({
|
|
|
28374
28484
|
});
|
|
28375
28485
|
|
|
28376
28486
|
// src/styles/built.css
|
|
28377
|
-
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 .inset-0{inset:0}.embarkai-ui-scope .-right-1{right:-.25rem}.embarkai-ui-scope .-right-2{right:-.5rem}.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-2{right:.5rem}.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-2{top:.5rem}.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-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-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 .min-h-12{min-height:3rem}.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-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-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-\\[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 .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-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-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-\\[calc\\(var\\(--ui-kit-el-bdrs\\)_\\/_2\\)\\]{border-radius:calc(var(--ui-kit-el-bdrs)/2)}.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-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-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 .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 .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 .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}@keyframes rotateShine{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.embarkai-ui-scope .button-shine-outline{position:absolute;top:0;left:0;width:100%;height:100%;padding:1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0) border-box;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0) border-box;-webkit-mask-composite:xor;mask-composite:exclude}.embarkai-ui-scope .button-shine-outline-shiner{position:absolute;top:50%;left:50%;width:500px;height:500px;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,transparent 0,var(--ui-kit-fg) 8%,transparent 24%);animation:rotateShine 3s linear infinite}.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-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-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 :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}`;
|
|
28487
|
+
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 .inset-0{inset:0}.embarkai-ui-scope .-right-1{right:-.25rem}.embarkai-ui-scope .-right-2{right:-.5rem}.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-2{right:.5rem}.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-2{top:.5rem}.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-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-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 .min-h-12{min-height:3rem}.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-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-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-\\[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 .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-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-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-\\[calc\\(var\\(--ui-kit-el-bdrs\\)_\\/_2\\)\\]{border-radius:calc(var(--ui-kit-el-bdrs)/2)}.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-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-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-7{line-height:1.75rem}.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 .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 .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 .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}@keyframes rotateShine{0%{transform:translate(-50%,-50%) rotate(0deg)}to{transform:translate(-50%,-50%) rotate(1turn)}}.embarkai-ui-scope .button-shine-outline{position:absolute;top:0;left:0;width:100%;height:100%;padding:1px;-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0) border-box;mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0) border-box;-webkit-mask-composite:xor;mask-composite:exclude}.embarkai-ui-scope .button-shine-outline-shiner{position:absolute;top:50%;left:50%;width:500px;height:500px;transform:translate(-50%,-50%);background:conic-gradient(from 0deg,transparent 0,var(--ui-kit-fg) 8%,transparent 24%);animation:rotateShine 3s linear infinite}.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-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-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 :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}`;
|
|
28378
28488
|
|
|
28379
28489
|
// src/index.ts
|
|
28380
28490
|
init_ProviderContext();
|
|
@@ -29060,12 +29170,12 @@ var Hash = ({
|
|
|
29060
29170
|
|
|
29061
29171
|
// src/internal/components/TransactionsMenu/TransactionsList.tsx
|
|
29062
29172
|
init_base2();
|
|
29063
|
-
import { useEffect as useEffect56, useState as
|
|
29173
|
+
import { useEffect as useEffect56, useState as useState32 } from "react";
|
|
29064
29174
|
import { jsx as jsx131, jsxs as jsxs115 } from "react/jsx-runtime";
|
|
29065
29175
|
var TransactionsList = ({ address, itemsCount = 10 }) => {
|
|
29066
|
-
const [transactions, setTransactions] =
|
|
29067
|
-
const [loading, setLoading] =
|
|
29068
|
-
const [error, setError] =
|
|
29176
|
+
const [transactions, setTransactions] = useState32([]);
|
|
29177
|
+
const [loading, setLoading] = useState32(true);
|
|
29178
|
+
const [error, setError] = useState32(null);
|
|
29069
29179
|
useEffect56(() => {
|
|
29070
29180
|
const fetchTransactions2 = async () => {
|
|
29071
29181
|
try {
|
|
@@ -29416,7 +29526,7 @@ function useDirectWallet() {
|
|
|
29416
29526
|
|
|
29417
29527
|
// src/hooks/useSendDirectTransaction.ts
|
|
29418
29528
|
init_useExternalWalletStore();
|
|
29419
|
-
import { useCallback as useCallback40, useState as
|
|
29529
|
+
import { useCallback as useCallback40, useState as useState34 } from "react";
|
|
29420
29530
|
import { isAddress as isAddress3, parseEther as parseEther3 } from "viem";
|
|
29421
29531
|
import { useSendTransaction as useWagmiSendTransaction, useSwitchChain as useSwitchChain3 } from "wagmi";
|
|
29422
29532
|
function useSendDirectTransaction() {
|
|
@@ -29424,9 +29534,9 @@ function useSendDirectTransaction() {
|
|
|
29424
29534
|
const externalChainId = useExternalWalletStore((st) => st.externalChainId);
|
|
29425
29535
|
const { sendTransactionAsync } = useWagmiSendTransaction();
|
|
29426
29536
|
const { switchChainAsync } = useSwitchChain3();
|
|
29427
|
-
const [isPending, setIsPending] =
|
|
29428
|
-
const [error, setError] =
|
|
29429
|
-
const [txHash, setTxHash] =
|
|
29537
|
+
const [isPending, setIsPending] = useState34(false);
|
|
29538
|
+
const [error, setError] = useState34(null);
|
|
29539
|
+
const [txHash, setTxHash] = useState34(null);
|
|
29430
29540
|
const sendTransaction = useCallback40(
|
|
29431
29541
|
async (params) => {
|
|
29432
29542
|
if (!isConnected) {
|
|
@@ -29473,7 +29583,7 @@ function useSendDirectTransaction() {
|
|
|
29473
29583
|
init_SessionContext();
|
|
29474
29584
|
init_account2();
|
|
29475
29585
|
init_linkedProfiles();
|
|
29476
|
-
import { useCallback as useCallback41, useMemo as useMemo19, useState as
|
|
29586
|
+
import { useCallback as useCallback41, useMemo as useMemo19, useState as useState35 } from "react";
|
|
29477
29587
|
import { encodeFunctionData as encodeFunctionData3, isAddress as isAddress4, parseEther as parseEther4, parseUnits as parseUnits3 } from "viem";
|
|
29478
29588
|
var ERC20_TRANSFER_ABI2 = [
|
|
29479
29589
|
{
|
|
@@ -29489,9 +29599,9 @@ var ERC20_TRANSFER_ABI2 = [
|
|
|
29489
29599
|
function useTransferToLinkedWallet() {
|
|
29490
29600
|
const session = useSession((st) => st.session);
|
|
29491
29601
|
const { profiles } = useLinkedProfiles();
|
|
29492
|
-
const [isPending, setIsPending] =
|
|
29493
|
-
const [error, setError] =
|
|
29494
|
-
const [userOpHash, setUserOpHash] =
|
|
29602
|
+
const [isPending, setIsPending] = useState35(false);
|
|
29603
|
+
const [error, setError] = useState35(null);
|
|
29604
|
+
const [userOpHash, setUserOpHash] = useState35(null);
|
|
29495
29605
|
const linkedWallets = useMemo19(
|
|
29496
29606
|
() => (profiles || []).filter((p) => p.provider === "wallet" && p.externalId).map((p) => p.externalId),
|
|
29497
29607
|
[profiles]
|
|
@@ -29639,7 +29749,7 @@ init_linkedProfiles();
|
|
|
29639
29749
|
init_nickname_fingerprint();
|
|
29640
29750
|
init_errors();
|
|
29641
29751
|
init_base2();
|
|
29642
|
-
|
|
29752
|
+
init_useBlockscoutAssets2();
|
|
29643
29753
|
|
|
29644
29754
|
// src/modules/transactions.ts
|
|
29645
29755
|
init_SessionContext();
|
|
@@ -29710,7 +29820,7 @@ function useTransactions() {
|
|
|
29710
29820
|
// src/modules/assets.ts
|
|
29711
29821
|
init_SessionContext();
|
|
29712
29822
|
import React33 from "react";
|
|
29713
|
-
import { erc20Abi as
|
|
29823
|
+
import { erc20Abi as erc20Abi5, formatUnits as formatUnits13 } from "viem";
|
|
29714
29824
|
import { useBalance as useBalance2, useReadContract as useReadContract2, useReadContracts } from "wagmi";
|
|
29715
29825
|
var COMMON_TOKENS = [
|
|
29716
29826
|
// Add real token addresses here when available
|
|
@@ -29737,22 +29847,21 @@ function useAssets(address) {
|
|
|
29737
29847
|
});
|
|
29738
29848
|
const tokenContracts = COMMON_TOKENS.map((token) => ({
|
|
29739
29849
|
address: token.address,
|
|
29740
|
-
abi:
|
|
29850
|
+
abi: erc20Abi5,
|
|
29741
29851
|
functionName: "balanceOf",
|
|
29742
29852
|
args: [address],
|
|
29743
29853
|
chainId
|
|
29744
29854
|
}));
|
|
29745
|
-
const
|
|
29855
|
+
const {
|
|
29856
|
+
data: tokenBalances,
|
|
29857
|
+
isLoading: tokenBalancesLoading,
|
|
29858
|
+
refetch: refetchTokenBalances
|
|
29859
|
+
} = useReadContracts({
|
|
29746
29860
|
contracts: tokenContracts,
|
|
29747
29861
|
query: {
|
|
29748
29862
|
enabled: !!address && COMMON_TOKENS.length > 0
|
|
29749
29863
|
}
|
|
29750
29864
|
});
|
|
29751
|
-
const {
|
|
29752
|
-
data: tokenBalances,
|
|
29753
|
-
isLoading: tokenBalancesLoading,
|
|
29754
|
-
refetch: refetchTokenBalances
|
|
29755
|
-
} = readContractsResult;
|
|
29756
29865
|
const getAllAssets = () => {
|
|
29757
29866
|
const assets = [];
|
|
29758
29867
|
if (nativeBalance) {
|
|
@@ -29761,7 +29870,7 @@ function useAssets(address) {
|
|
|
29761
29870
|
name: "Lumia",
|
|
29762
29871
|
symbol: "LUMIA",
|
|
29763
29872
|
balance: nativeBalance.value.toString(),
|
|
29764
|
-
formattedBalance: parseFloat(
|
|
29873
|
+
formattedBalance: parseFloat(formatUnits13(nativeBalance.value, nativeBalance.decimals)).toFixed(4),
|
|
29765
29874
|
decimals: 18
|
|
29766
29875
|
});
|
|
29767
29876
|
}
|
|
@@ -29770,7 +29879,7 @@ function useAssets(address) {
|
|
|
29770
29879
|
const token = COMMON_TOKENS[index];
|
|
29771
29880
|
if (balance.status === "success" && balance.result) {
|
|
29772
29881
|
const balanceValue = balance.result;
|
|
29773
|
-
const formattedBalance =
|
|
29882
|
+
const formattedBalance = formatUnits13(balanceValue, token.decimals);
|
|
29774
29883
|
assets.push({
|
|
29775
29884
|
type: "erc20",
|
|
29776
29885
|
address: token.address,
|
|
@@ -29795,7 +29904,7 @@ function useAssets(address) {
|
|
|
29795
29904
|
const token = COMMON_TOKENS[tokenIndex];
|
|
29796
29905
|
if (balance.status === "success" && balance.result) {
|
|
29797
29906
|
const balanceValue = balance.result;
|
|
29798
|
-
const formattedBalance =
|
|
29907
|
+
const formattedBalance = formatUnits13(balanceValue, token.decimals);
|
|
29799
29908
|
return {
|
|
29800
29909
|
address: token.address,
|
|
29801
29910
|
name: token.name,
|
|
@@ -29825,9 +29934,9 @@ function useTokenInfo(tokenAddress) {
|
|
|
29825
29934
|
const chainId = requireActiveChainId();
|
|
29826
29935
|
const readContractsResult = useReadContracts({
|
|
29827
29936
|
contracts: [
|
|
29828
|
-
{ address: tokenAddress, abi:
|
|
29829
|
-
{ address: tokenAddress, abi:
|
|
29830
|
-
{ address: tokenAddress, abi:
|
|
29937
|
+
{ address: tokenAddress, abi: erc20Abi5, functionName: "name", chainId },
|
|
29938
|
+
{ address: tokenAddress, abi: erc20Abi5, functionName: "symbol", chainId },
|
|
29939
|
+
{ address: tokenAddress, abi: erc20Abi5, functionName: "decimals", chainId }
|
|
29831
29940
|
]
|
|
29832
29941
|
});
|
|
29833
29942
|
const { data: tokenData, isLoading } = readContractsResult;
|
|
@@ -29856,7 +29965,7 @@ function useTokenBalance2(tokenAddress, userAddress) {
|
|
|
29856
29965
|
refetch
|
|
29857
29966
|
} = useReadContract2({
|
|
29858
29967
|
address: tokenAddress,
|
|
29859
|
-
abi:
|
|
29968
|
+
abi: erc20Abi5,
|
|
29860
29969
|
functionName: "balanceOf",
|
|
29861
29970
|
args: userAddress ? [userAddress] : void 0,
|
|
29862
29971
|
chainId,
|
|
@@ -29867,7 +29976,7 @@ function useTokenBalance2(tokenAddress, userAddress) {
|
|
|
29867
29976
|
const { tokenInfo } = useTokenInfo(tokenAddress);
|
|
29868
29977
|
const formattedBalance = React33.useMemo(() => {
|
|
29869
29978
|
if (!balance || !tokenInfo) return "0";
|
|
29870
|
-
return
|
|
29979
|
+
return formatUnits13(balance, tokenInfo.decimals);
|
|
29871
29980
|
}, [balance, tokenInfo]);
|
|
29872
29981
|
return {
|
|
29873
29982
|
balance,
|