@unifold/connect-react 0.1.10 → 0.1.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.js +228 -31
- package/dist/index.mjs +208 -30
- package/dist/styles.css +1 -1
- package/package.json +4 -3
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export { Button, ButtonProps } from '@unifold/ui-react';
|
|
4
|
+
export { AutoSwapRequest, AutoSwapResponse, CreateDepositAddressRequest, DepositAddressResponse, ExecutionStatus, FeaturedToken, FiatCurrenciesResponse, FiatCurrency, I18nStrings, IconUrl, MeldQuote, MeldQuotesRequest, MeldQuotesResponse, MeldSessionRequest, MeldSessionResponse, PaymentNetwork, ProjectConfigResponse, QueryExecutionsRequest, QueryExecutionsResponse, SOLANA_USDC_ADDRESS, SupportedChain, SupportedDepositTokensResponse, SupportedToken, TokenChain, TokenChainIconUrl, TokenChainsResponse, UserIpInfo, Wallet, createDepositAddress, createMeldSession, getApiBaseUrl, getChainName, getFiatCurrencies, getIconUrl, getIconUrlWithCdn, getMeldQuotes, getPreferredIconUrl, getProjectConfig, getSupportedDepositTokens, getTokenChains, getWalletByChainType, i18n, queryExecutions, setApiConfig, useUserIp } from '@unifold/core';
|
|
4
5
|
|
|
5
6
|
interface UnifoldConnectProviderConfig {
|
|
6
7
|
publishableKey: string;
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
export { Button, ButtonProps } from '@unifold/ui-react';
|
|
4
|
+
export { AutoSwapRequest, AutoSwapResponse, CreateDepositAddressRequest, DepositAddressResponse, ExecutionStatus, FeaturedToken, FiatCurrenciesResponse, FiatCurrency, I18nStrings, IconUrl, MeldQuote, MeldQuotesRequest, MeldQuotesResponse, MeldSessionRequest, MeldSessionResponse, PaymentNetwork, ProjectConfigResponse, QueryExecutionsRequest, QueryExecutionsResponse, SOLANA_USDC_ADDRESS, SupportedChain, SupportedDepositTokensResponse, SupportedToken, TokenChain, TokenChainIconUrl, TokenChainsResponse, UserIpInfo, Wallet, createDepositAddress, createMeldSession, getApiBaseUrl, getChainName, getFiatCurrencies, getIconUrl, getIconUrlWithCdn, getMeldQuotes, getPreferredIconUrl, getProjectConfig, getSupportedDepositTokens, getTokenChains, getWalletByChainType, i18n, queryExecutions, setApiConfig, useUserIp } from '@unifold/core';
|
|
4
5
|
|
|
5
6
|
interface UnifoldConnectProviderConfig {
|
|
6
7
|
publishableKey: string;
|
package/dist/index.js
CHANGED
|
@@ -1153,8 +1153,27 @@ ${new this._window.XMLSerializer().serializeToString(e3)}`;
|
|
|
1153
1153
|
var index_exports = {};
|
|
1154
1154
|
__export(index_exports, {
|
|
1155
1155
|
Button: () => Button,
|
|
1156
|
+
ExecutionStatus: () => ExecutionStatus,
|
|
1157
|
+
SOLANA_USDC_ADDRESS: () => SOLANA_USDC_ADDRESS,
|
|
1156
1158
|
UnifoldProvider: () => UnifoldProvider2,
|
|
1157
|
-
|
|
1159
|
+
createDepositAddress: () => createDepositAddress,
|
|
1160
|
+
createMeldSession: () => createMeldSession,
|
|
1161
|
+
getApiBaseUrl: () => getApiBaseUrl,
|
|
1162
|
+
getChainName: () => getChainName,
|
|
1163
|
+
getFiatCurrencies: () => getFiatCurrencies,
|
|
1164
|
+
getIconUrl: () => getIconUrl,
|
|
1165
|
+
getIconUrlWithCdn: () => getIconUrlWithCdn,
|
|
1166
|
+
getMeldQuotes: () => getMeldQuotes,
|
|
1167
|
+
getPreferredIconUrl: () => getPreferredIconUrl,
|
|
1168
|
+
getProjectConfig: () => getProjectConfig,
|
|
1169
|
+
getSupportedDepositTokens: () => getSupportedDepositTokens,
|
|
1170
|
+
getTokenChains: () => getTokenChains,
|
|
1171
|
+
getWalletByChainType: () => getWalletByChainType,
|
|
1172
|
+
i18n: () => i18n,
|
|
1173
|
+
queryExecutions: () => queryExecutions,
|
|
1174
|
+
setApiConfig: () => setApiConfig,
|
|
1175
|
+
useUnifold: () => useUnifold2,
|
|
1176
|
+
useUserIp: () => useUserIp
|
|
1158
1177
|
});
|
|
1159
1178
|
module.exports = __toCommonJS(index_exports);
|
|
1160
1179
|
|
|
@@ -5954,6 +5973,30 @@ var import_react_query2 = require("@tanstack/react-query");
|
|
|
5954
5973
|
var API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL || "https://api.unifold.io";
|
|
5955
5974
|
var DEFAULT_PUBLISHABLE_KEY = "pk_test_123";
|
|
5956
5975
|
var DEFAULT_CONFIG = {};
|
|
5976
|
+
function setApiConfig(config) {
|
|
5977
|
+
if (config.publishableKey !== void 0) {
|
|
5978
|
+
if (!config.publishableKey || config.publishableKey.trim() === "") {
|
|
5979
|
+
throw new Error(
|
|
5980
|
+
"Unifold SDK: publishableKey cannot be empty. Please provide a valid publishable key."
|
|
5981
|
+
);
|
|
5982
|
+
}
|
|
5983
|
+
if (!config.publishableKey.startsWith("pk_test_") && !config.publishableKey.startsWith("pk_live_")) {
|
|
5984
|
+
console.warn(
|
|
5985
|
+
'Unifold SDK: publishableKey should start with "pk_test_" or "pk_live_". Please ensure you are using a valid publishable key.'
|
|
5986
|
+
);
|
|
5987
|
+
}
|
|
5988
|
+
DEFAULT_PUBLISHABLE_KEY = config.publishableKey;
|
|
5989
|
+
}
|
|
5990
|
+
if (config.baseUrl) {
|
|
5991
|
+
API_BASE_URL = config.baseUrl;
|
|
5992
|
+
}
|
|
5993
|
+
if (config.defaultConfig) {
|
|
5994
|
+
DEFAULT_CONFIG = config.defaultConfig;
|
|
5995
|
+
}
|
|
5996
|
+
}
|
|
5997
|
+
function getApiBaseUrl() {
|
|
5998
|
+
return API_BASE_URL;
|
|
5999
|
+
}
|
|
5957
6000
|
function validatePublishableKey(key) {
|
|
5958
6001
|
if (!key || key.trim() === "") {
|
|
5959
6002
|
throw new Error(
|
|
@@ -6018,6 +6061,7 @@ var ExecutionStatus = /* @__PURE__ */ ((ExecutionStatus2) => {
|
|
|
6018
6061
|
ExecutionStatus2["WAITING"] = "waiting";
|
|
6019
6062
|
return ExecutionStatus2;
|
|
6020
6063
|
})(ExecutionStatus || {});
|
|
6064
|
+
var SOLANA_USDC_ADDRESS = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
6021
6065
|
async function queryExecutions(externalUserId, publishableKey) {
|
|
6022
6066
|
const pk = publishableKey || DEFAULT_PUBLISHABLE_KEY;
|
|
6023
6067
|
validatePublishableKey(pk);
|
|
@@ -6162,6 +6206,116 @@ async function getProjectConfig(publishableKey) {
|
|
|
6162
6206
|
}
|
|
6163
6207
|
return response.json();
|
|
6164
6208
|
}
|
|
6209
|
+
async function getIpViaIpApi() {
|
|
6210
|
+
const url = "https://ipapi.co/json";
|
|
6211
|
+
const response = await fetch(url);
|
|
6212
|
+
if (!response.ok) {
|
|
6213
|
+
throw new Error(`ipapi.co failed: ${response.statusText}`);
|
|
6214
|
+
}
|
|
6215
|
+
const data = await response.json();
|
|
6216
|
+
return {
|
|
6217
|
+
alpha2: data.country_code.toLowerCase(),
|
|
6218
|
+
state: data.region_code?.toLowerCase()
|
|
6219
|
+
};
|
|
6220
|
+
}
|
|
6221
|
+
function useUserIp() {
|
|
6222
|
+
const {
|
|
6223
|
+
data: userIpInfo,
|
|
6224
|
+
isLoading,
|
|
6225
|
+
error
|
|
6226
|
+
} = (0, import_react_query2.useQuery)({
|
|
6227
|
+
queryKey: ["getUserIpInfo"],
|
|
6228
|
+
queryFn: async () => {
|
|
6229
|
+
try {
|
|
6230
|
+
const ipApiData = await getIpViaIpApi();
|
|
6231
|
+
console.log("IP detected via ipapi.co:", ipApiData);
|
|
6232
|
+
return ipApiData;
|
|
6233
|
+
} catch (ipApiError) {
|
|
6234
|
+
console.error("IP detection failed:", ipApiError);
|
|
6235
|
+
throw ipApiError;
|
|
6236
|
+
}
|
|
6237
|
+
},
|
|
6238
|
+
// Cache configuration to reduce API calls
|
|
6239
|
+
refetchOnMount: false,
|
|
6240
|
+
refetchOnReconnect: true,
|
|
6241
|
+
refetchOnWindowFocus: false,
|
|
6242
|
+
// Optional: Increase cache duration to 1 hour for even better rate limit protection
|
|
6243
|
+
staleTime: 1e3 * 60 * 60,
|
|
6244
|
+
// 1 hour - data considered fresh for 1 hour
|
|
6245
|
+
gcTime: 1e3 * 60 * 60 * 24
|
|
6246
|
+
// 24 hours - keep in cache for 24 hours
|
|
6247
|
+
});
|
|
6248
|
+
return {
|
|
6249
|
+
userIpInfo,
|
|
6250
|
+
isLoading,
|
|
6251
|
+
error
|
|
6252
|
+
};
|
|
6253
|
+
}
|
|
6254
|
+
var en_default = {
|
|
6255
|
+
transferCrypto: {
|
|
6256
|
+
priceImpact: {
|
|
6257
|
+
label: "Price impact",
|
|
6258
|
+
tooltip: "Price impact reflects the difference between the expected price and the final execution price, influenced by trade size and available liquidity. Larger trades may move the market price during execution.",
|
|
6259
|
+
finalCost: "The final cost reflects price impact and may vary depending on market and network conditions. Larger trade sizes typically benefit from lower relative costs."
|
|
6260
|
+
},
|
|
6261
|
+
slippage: {
|
|
6262
|
+
label: "Max slippage",
|
|
6263
|
+
auto: "Auto",
|
|
6264
|
+
tooltip: "Slippage represents price changes that can occur while a transaction is being processed. Slippage is dynamically adjusted per trading pair to support reliable execution during market movements.",
|
|
6265
|
+
finalCost: "The final cost includes any slippage and may change based on real-time network conditions. Costs are generally reduced for larger transaction amounts."
|
|
6266
|
+
},
|
|
6267
|
+
processingTime: {
|
|
6268
|
+
label: "Processing time",
|
|
6269
|
+
lessThanMinutes: "< {{minutes}} min",
|
|
6270
|
+
lessThanHours: "< {{hours}} hr"
|
|
6271
|
+
},
|
|
6272
|
+
minDeposit: {
|
|
6273
|
+
label: "min",
|
|
6274
|
+
tooltip: "The minimum amount you can deposit on the selected network."
|
|
6275
|
+
},
|
|
6276
|
+
help: {
|
|
6277
|
+
needHelp: "Need help?",
|
|
6278
|
+
contactSupport: "Contact support"
|
|
6279
|
+
},
|
|
6280
|
+
terms: {
|
|
6281
|
+
termsApply: "Terms apply"
|
|
6282
|
+
},
|
|
6283
|
+
supportedToken: "Supported token",
|
|
6284
|
+
supportedChain: "Supported chain",
|
|
6285
|
+
depositAddress: {
|
|
6286
|
+
label: "Your deposit address",
|
|
6287
|
+
tooltip: "Send any supported token to this address, and it will be automatically converted to {{token}} in your account."
|
|
6288
|
+
},
|
|
6289
|
+
copyAddress: "Copy address",
|
|
6290
|
+
copied: "Copied!",
|
|
6291
|
+
loading: "Loading...",
|
|
6292
|
+
loadingQRCode: "Loading QR Code...",
|
|
6293
|
+
noAddressAvailable: "No address available",
|
|
6294
|
+
noChainsAvailable: "No chains available for this token"
|
|
6295
|
+
},
|
|
6296
|
+
depositModal: {
|
|
6297
|
+
transferCrypto: {
|
|
6298
|
+
title: "Transfer Crypto",
|
|
6299
|
+
subtitle: "No limit \u2022 Instant"
|
|
6300
|
+
},
|
|
6301
|
+
depositWithCard: {
|
|
6302
|
+
title: "Deposit with Card",
|
|
6303
|
+
subtitle: "$50,000 limit \u2022 2 min"
|
|
6304
|
+
},
|
|
6305
|
+
quotes: "Quotes"
|
|
6306
|
+
},
|
|
6307
|
+
buyWithCard: {
|
|
6308
|
+
onramp: {
|
|
6309
|
+
completeTransaction: "Complete transaction with {{provider}}",
|
|
6310
|
+
canCloseModal: "You can close this modal.",
|
|
6311
|
+
youUse: "You use",
|
|
6312
|
+
youBuy: "You buy",
|
|
6313
|
+
youReceive: "You receive",
|
|
6314
|
+
intentAddressNote: "The wallet address displayed in the payment provider is a temporary deposit address. Your funds will be automatically converted and deposited into your account."
|
|
6315
|
+
}
|
|
6316
|
+
}
|
|
6317
|
+
};
|
|
6318
|
+
var i18n = en_default;
|
|
6165
6319
|
|
|
6166
6320
|
// ../ui-react/dist/index.mjs
|
|
6167
6321
|
var import_jsx_runtime22 = require("react/jsx-runtime");
|
|
@@ -10634,6 +10788,14 @@ function DepositExecutionItem({
|
|
|
10634
10788
|
}
|
|
10635
10789
|
);
|
|
10636
10790
|
}
|
|
10791
|
+
function formatCurrency(currency) {
|
|
10792
|
+
if (!currency) return "";
|
|
10793
|
+
const dotIndex = currency.indexOf(".");
|
|
10794
|
+
if (dotIndex === -1) {
|
|
10795
|
+
return currency.toUpperCase();
|
|
10796
|
+
}
|
|
10797
|
+
return currency.slice(0, dotIndex).toUpperCase() + currency.slice(dotIndex);
|
|
10798
|
+
}
|
|
10637
10799
|
function DepositDetailContent({ execution }) {
|
|
10638
10800
|
const [chains, setChains] = (0, import_react11.useState)([]);
|
|
10639
10801
|
const [showNetworkDetails, setShowNetworkDetails] = (0, import_react11.useState)(false);
|
|
@@ -10773,7 +10935,7 @@ function DepositDetailContent({ execution }) {
|
|
|
10773
10935
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "uf-text-foreground uf-font-medium", children: [
|
|
10774
10936
|
formatAmount(execution.source_amount_base_unit),
|
|
10775
10937
|
" ",
|
|
10776
|
-
execution.source_currency
|
|
10938
|
+
formatCurrency(execution.source_currency)
|
|
10777
10939
|
] })
|
|
10778
10940
|
] }),
|
|
10779
10941
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "uf-flex uf-justify-between uf-items-center uf-px-4 uf-py-3 uf-border-b uf-border-border/50", children: [
|
|
@@ -10781,7 +10943,7 @@ function DepositDetailContent({ execution }) {
|
|
|
10781
10943
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("span", { className: "uf-text-foreground uf-font-medium", children: [
|
|
10782
10944
|
formatAmount(execution.destination_amount_base_unit),
|
|
10783
10945
|
" ",
|
|
10784
|
-
execution.destination_currency
|
|
10946
|
+
formatCurrency(execution.destination_currency)
|
|
10785
10947
|
] })
|
|
10786
10948
|
] }),
|
|
10787
10949
|
/* @__PURE__ */ (0, import_jsx_runtime23.jsxs)("div", { className: "uf-flex uf-justify-between uf-items-center uf-px-4 uf-py-3 uf-border-b uf-border-border/50", children: [
|
|
@@ -10869,7 +11031,7 @@ function DepositsModal({
|
|
|
10869
11031
|
}
|
|
10870
11032
|
};
|
|
10871
11033
|
fetchExecutions();
|
|
10872
|
-
const pollInterval = setInterval(fetchExecutions,
|
|
11034
|
+
const pollInterval = setInterval(fetchExecutions, 3e3);
|
|
10873
11035
|
return () => {
|
|
10874
11036
|
clearInterval(pollInterval);
|
|
10875
11037
|
};
|
|
@@ -11176,7 +11338,7 @@ var SelectItem2 = React38.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
11176
11338
|
{
|
|
11177
11339
|
ref,
|
|
11178
11340
|
className: cn(
|
|
11179
|
-
"uf-relative uf-flex uf-w-full uf-cursor-default uf-select-none uf-items-center uf-rounded-sm uf-py-1.5 uf-pl-8 uf-pr-2 uf-text-sm uf-text-foreground uf-outline-none focus:uf-bg-accent focus:uf-text-accent-foreground data-[disabled]:uf-pointer-events-none data-[disabled]:uf-opacity-50 hover:uf-bg-accent",
|
|
11341
|
+
"uf-relative uf-flex uf-w-full uf-cursor-default uf-select-none uf-items-center uf-rounded-sm uf-py-1.5 uf-pl-8 uf-pr-2 uf-text-sm uf-text-foreground uf-outline-none focus:uf-bg-accent focus:uf-text-accent-foreground data-[disabled]:uf-pointer-events-none data-[disabled]:uf-opacity-50 hover:uf-bg-accent [&>span]:uf-flex-1",
|
|
11180
11342
|
className
|
|
11181
11343
|
),
|
|
11182
11344
|
...props,
|
|
@@ -11216,7 +11378,7 @@ var TooltipContent2 = React42.forwardRef(({ className, sideOffset = 4, ...props
|
|
|
11216
11378
|
) });
|
|
11217
11379
|
});
|
|
11218
11380
|
TooltipContent2.displayName = Content23.displayName;
|
|
11219
|
-
var
|
|
11381
|
+
var en_default2 = {
|
|
11220
11382
|
transferCrypto: {
|
|
11221
11383
|
priceImpact: {
|
|
11222
11384
|
label: "Price impact",
|
|
@@ -11280,7 +11442,7 @@ var en_default = {
|
|
|
11280
11442
|
}
|
|
11281
11443
|
}
|
|
11282
11444
|
};
|
|
11283
|
-
var i18n2 =
|
|
11445
|
+
var i18n2 = en_default2;
|
|
11284
11446
|
var t = i18n2.transferCrypto;
|
|
11285
11447
|
var getChainKey = (chainId, chainType) => {
|
|
11286
11448
|
return `${chainType}:${chainId}`;
|
|
@@ -11378,6 +11540,10 @@ function TransferCryptoBase({
|
|
|
11378
11540
|
setLoading(false);
|
|
11379
11541
|
return;
|
|
11380
11542
|
}
|
|
11543
|
+
if (internalWallets.length > 0) {
|
|
11544
|
+
setLoading(false);
|
|
11545
|
+
return;
|
|
11546
|
+
}
|
|
11381
11547
|
let retryTimeout = null;
|
|
11382
11548
|
let isCancelled = false;
|
|
11383
11549
|
const fetchWallets = async () => {
|
|
@@ -11502,7 +11668,7 @@ function TransferCryptoBase({
|
|
|
11502
11668
|
});
|
|
11503
11669
|
}
|
|
11504
11670
|
}
|
|
11505
|
-
},
|
|
11671
|
+
}, 3e3);
|
|
11506
11672
|
return () => clearInterval(pollInterval);
|
|
11507
11673
|
}, [
|
|
11508
11674
|
userId,
|
|
@@ -11560,20 +11726,26 @@ function TransferCryptoBase({
|
|
|
11560
11726
|
showDetailedDropdowns && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "uf-text-xs uf-text-muted-foreground", children: tokenData.name })
|
|
11561
11727
|
] });
|
|
11562
11728
|
};
|
|
11563
|
-
const renderChainItem = (chainData) => {
|
|
11564
|
-
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "uf-flex uf-items-center uf-
|
|
11565
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.
|
|
11566
|
-
|
|
11567
|
-
|
|
11568
|
-
|
|
11569
|
-
|
|
11570
|
-
|
|
11571
|
-
|
|
11572
|
-
|
|
11573
|
-
|
|
11574
|
-
|
|
11575
|
-
|
|
11576
|
-
|
|
11729
|
+
const renderChainItem = (chainData, showMinDeposit = false) => {
|
|
11730
|
+
return /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "uf-flex uf-items-center uf-justify-between uf-w-full", children: [
|
|
11731
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "uf-flex uf-items-center uf-gap-2", children: [
|
|
11732
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
11733
|
+
"img",
|
|
11734
|
+
{
|
|
11735
|
+
src: chainData.icon_url,
|
|
11736
|
+
alt: chainData.chain_name,
|
|
11737
|
+
width: 20,
|
|
11738
|
+
height: 20,
|
|
11739
|
+
className: "uf-rounded-full uf-flex-shrink-0"
|
|
11740
|
+
}
|
|
11741
|
+
),
|
|
11742
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "uf-text-xs uf-font-normal", children: chainData.chain_name }),
|
|
11743
|
+
showDetailedDropdowns && /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "uf-text-xs uf-text-muted-foreground uf-capitalize", children: chainData.chain_type })
|
|
11744
|
+
] }),
|
|
11745
|
+
showMinDeposit && chainData.minimum_deposit_amount_usd && /* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "uf-text-xs uf-text-amber-400 uf-font-medium", children: [
|
|
11746
|
+
"$",
|
|
11747
|
+
chainData.minimum_deposit_amount_usd
|
|
11748
|
+
] })
|
|
11577
11749
|
] });
|
|
11578
11750
|
};
|
|
11579
11751
|
const selectContainerClass = layoutVariant === "horizontal" ? "uf-grid uf-grid-cols-2 uf-gap-2.5" : "uf-space-y-3";
|
|
@@ -11605,7 +11777,7 @@ function TransferCryptoBase({
|
|
|
11605
11777
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { children: [
|
|
11606
11778
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("div", { className: "uf-text-xs uf-text-muted-foreground uf-mb-2 uf-flex uf-items-center uf-gap-1", children: [
|
|
11607
11779
|
t.supportedChain,
|
|
11608
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "uf-text-
|
|
11780
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsxs)("span", { className: "uf-text-amber-400 uf-font-medium", children: [
|
|
11609
11781
|
"$",
|
|
11610
11782
|
minDepositUsd,
|
|
11611
11783
|
" ",
|
|
@@ -11619,7 +11791,7 @@ function TransferCryptoBase({
|
|
|
11619
11791
|
tabIndex: 0,
|
|
11620
11792
|
role: "button",
|
|
11621
11793
|
"aria-label": "Minimum deposit information",
|
|
11622
|
-
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Info, { className: "uf-w-
|
|
11794
|
+
children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(Info, { className: "uf-w-4 uf-h-4" })
|
|
11623
11795
|
}
|
|
11624
11796
|
) }),
|
|
11625
11797
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(
|
|
@@ -11641,7 +11813,7 @@ function TransferCryptoBase({
|
|
|
11641
11813
|
disabled: tokensLoading || availableChainsForToken.length === 0,
|
|
11642
11814
|
children: [
|
|
11643
11815
|
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectTrigger2, { className: "uf-bg-secondary uf-border-none uf-rounded-lg uf-h-10 hover:uf-bg-accent uf-text-foreground focus:uf-ring-1 focus:uf-ring-ring disabled:uf-opacity-50", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectValue2, { children: tokensLoading ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "uf-flex uf-items-center uf-gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "uf-text-xs uf-font-light uf-text-muted-foreground", children: t.loading }) }) : currentChainFromBackend ? renderChainItem(currentChainFromBackend) : currentChainData ? renderChainItem(currentChainData) : /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "uf-flex uf-items-center uf-gap-2", children: /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("span", { className: "uf-text-xs uf-font-normal", children: chain }) }) }) }),
|
|
11644
|
-
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectContent2, { className: "uf-bg-secondary uf-border uf-text-foreground uf-max-h-[300px]", children: availableChainsForToken.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "uf-px-2 uf-py-3 uf-text-xs uf-text-muted-foreground uf-text-center", children: t.noChainsAvailable }) : availableChainsForToken.map((chainData) => {
|
|
11816
|
+
/* @__PURE__ */ (0, import_jsx_runtime28.jsx)(SelectContent2, { align: "end", className: "uf-bg-secondary uf-border uf-text-foreground uf-max-h-[300px] uf-min-w-[200px]", children: availableChainsForToken.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime28.jsx)("div", { className: "uf-px-2 uf-py-3 uf-text-xs uf-text-muted-foreground uf-text-center", children: t.noChainsAvailable }) : availableChainsForToken.map((chainData) => {
|
|
11645
11817
|
const chainKey = getChainKey(
|
|
11646
11818
|
chainData.chain_id,
|
|
11647
11819
|
chainData.chain_type
|
|
@@ -11651,7 +11823,7 @@ function TransferCryptoBase({
|
|
|
11651
11823
|
{
|
|
11652
11824
|
value: chainKey,
|
|
11653
11825
|
className: "focus:uf-bg-accent focus:uf-text-foreground",
|
|
11654
|
-
children: renderChainItem(chainData)
|
|
11826
|
+
children: renderChainItem(chainData, true)
|
|
11655
11827
|
},
|
|
11656
11828
|
`${chainData.chain_id}-${chainData.chain_type}`
|
|
11657
11829
|
);
|
|
@@ -12036,7 +12208,7 @@ function CurrencyModal({
|
|
|
12036
12208
|
] }) })
|
|
12037
12209
|
] }) });
|
|
12038
12210
|
}
|
|
12039
|
-
async function
|
|
12211
|
+
async function getIpViaIpApi2() {
|
|
12040
12212
|
const url = "https://ipapi.co/json";
|
|
12041
12213
|
const response = await fetch(url);
|
|
12042
12214
|
if (!response.ok) {
|
|
@@ -12057,7 +12229,7 @@ function useUserIp2() {
|
|
|
12057
12229
|
queryKey: ["getUserIpInfo"],
|
|
12058
12230
|
queryFn: async () => {
|
|
12059
12231
|
try {
|
|
12060
|
-
const ipApiData = await
|
|
12232
|
+
const ipApiData = await getIpViaIpApi2();
|
|
12061
12233
|
console.log("IP detected via ipapi.co:", ipApiData);
|
|
12062
12234
|
return ipApiData;
|
|
12063
12235
|
} catch (ipApiError) {
|
|
@@ -12179,6 +12351,10 @@ function BuyWithCard({
|
|
|
12179
12351
|
setWalletsLoading(false);
|
|
12180
12352
|
return;
|
|
12181
12353
|
}
|
|
12354
|
+
if (internalWallets.length > 0) {
|
|
12355
|
+
setWalletsLoading(false);
|
|
12356
|
+
return;
|
|
12357
|
+
}
|
|
12182
12358
|
let retryTimeout = null;
|
|
12183
12359
|
let isCancelled = false;
|
|
12184
12360
|
const fetchWallets = async () => {
|
|
@@ -12438,7 +12614,8 @@ function BuyWithCard({
|
|
|
12438
12614
|
] }) }),
|
|
12439
12615
|
quotesLoading ? /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "uf-flex uf-justify-center", children: /* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "uf-h-4 uf-bg-muted uf-rounded uf-w-40 uf-animate-pulse" }) }) : /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "uf-text-sm uf-text-muted-foreground uf-font-normal", children: [
|
|
12440
12616
|
calculateUSDC(),
|
|
12441
|
-
"
|
|
12617
|
+
" ",
|
|
12618
|
+
displayTokenSymbol
|
|
12442
12619
|
] })
|
|
12443
12620
|
] }),
|
|
12444
12621
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsx)("div", { className: "uf-flex uf-gap-3 uf-justify-center", children: QUICK_AMOUNTS.map((quickAmount) => /* @__PURE__ */ (0, import_jsx_runtime33.jsxs)(
|
|
@@ -12572,7 +12749,8 @@ function BuyWithCard({
|
|
|
12572
12749
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "uf-text-right", children: [
|
|
12573
12750
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "uf-text-sm uf-font-medium uf-text-foreground", children: [
|
|
12574
12751
|
quote.destination_amount.toFixed(2),
|
|
12575
|
-
"
|
|
12752
|
+
" ",
|
|
12753
|
+
displayTokenSymbol
|
|
12576
12754
|
] }),
|
|
12577
12755
|
/* @__PURE__ */ (0, import_jsx_runtime33.jsxs)("div", { className: "uf-text-xs uf-text-muted-foreground uf-font-normal", children: [
|
|
12578
12756
|
currencySymbol,
|
|
@@ -13227,8 +13405,27 @@ function useUnifold2() {
|
|
|
13227
13405
|
// Annotate the CommonJS export names for ESM import in node:
|
|
13228
13406
|
0 && (module.exports = {
|
|
13229
13407
|
Button,
|
|
13408
|
+
ExecutionStatus,
|
|
13409
|
+
SOLANA_USDC_ADDRESS,
|
|
13230
13410
|
UnifoldProvider,
|
|
13231
|
-
|
|
13411
|
+
createDepositAddress,
|
|
13412
|
+
createMeldSession,
|
|
13413
|
+
getApiBaseUrl,
|
|
13414
|
+
getChainName,
|
|
13415
|
+
getFiatCurrencies,
|
|
13416
|
+
getIconUrl,
|
|
13417
|
+
getIconUrlWithCdn,
|
|
13418
|
+
getMeldQuotes,
|
|
13419
|
+
getPreferredIconUrl,
|
|
13420
|
+
getProjectConfig,
|
|
13421
|
+
getSupportedDepositTokens,
|
|
13422
|
+
getTokenChains,
|
|
13423
|
+
getWalletByChainType,
|
|
13424
|
+
i18n,
|
|
13425
|
+
queryExecutions,
|
|
13426
|
+
setApiConfig,
|
|
13427
|
+
useUnifold,
|
|
13428
|
+
useUserIp
|
|
13232
13429
|
});
|
|
13233
13430
|
/*! Bundled license information:
|
|
13234
13431
|
|
package/dist/index.mjs
CHANGED
|
@@ -5950,6 +5950,30 @@ import { useQuery } from "@tanstack/react-query";
|
|
|
5950
5950
|
var API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL || "https://api.unifold.io";
|
|
5951
5951
|
var DEFAULT_PUBLISHABLE_KEY = "pk_test_123";
|
|
5952
5952
|
var DEFAULT_CONFIG = {};
|
|
5953
|
+
function setApiConfig(config) {
|
|
5954
|
+
if (config.publishableKey !== void 0) {
|
|
5955
|
+
if (!config.publishableKey || config.publishableKey.trim() === "") {
|
|
5956
|
+
throw new Error(
|
|
5957
|
+
"Unifold SDK: publishableKey cannot be empty. Please provide a valid publishable key."
|
|
5958
|
+
);
|
|
5959
|
+
}
|
|
5960
|
+
if (!config.publishableKey.startsWith("pk_test_") && !config.publishableKey.startsWith("pk_live_")) {
|
|
5961
|
+
console.warn(
|
|
5962
|
+
'Unifold SDK: publishableKey should start with "pk_test_" or "pk_live_". Please ensure you are using a valid publishable key.'
|
|
5963
|
+
);
|
|
5964
|
+
}
|
|
5965
|
+
DEFAULT_PUBLISHABLE_KEY = config.publishableKey;
|
|
5966
|
+
}
|
|
5967
|
+
if (config.baseUrl) {
|
|
5968
|
+
API_BASE_URL = config.baseUrl;
|
|
5969
|
+
}
|
|
5970
|
+
if (config.defaultConfig) {
|
|
5971
|
+
DEFAULT_CONFIG = config.defaultConfig;
|
|
5972
|
+
}
|
|
5973
|
+
}
|
|
5974
|
+
function getApiBaseUrl() {
|
|
5975
|
+
return API_BASE_URL;
|
|
5976
|
+
}
|
|
5953
5977
|
function validatePublishableKey(key) {
|
|
5954
5978
|
if (!key || key.trim() === "") {
|
|
5955
5979
|
throw new Error(
|
|
@@ -6014,6 +6038,7 @@ var ExecutionStatus = /* @__PURE__ */ ((ExecutionStatus2) => {
|
|
|
6014
6038
|
ExecutionStatus2["WAITING"] = "waiting";
|
|
6015
6039
|
return ExecutionStatus2;
|
|
6016
6040
|
})(ExecutionStatus || {});
|
|
6041
|
+
var SOLANA_USDC_ADDRESS = "EPjFWdd5AufqSSqeM2qN1xzybapC8G4wEGGkZwyTDt1v";
|
|
6017
6042
|
async function queryExecutions(externalUserId, publishableKey) {
|
|
6018
6043
|
const pk = publishableKey || DEFAULT_PUBLISHABLE_KEY;
|
|
6019
6044
|
validatePublishableKey(pk);
|
|
@@ -6158,6 +6183,116 @@ async function getProjectConfig(publishableKey) {
|
|
|
6158
6183
|
}
|
|
6159
6184
|
return response.json();
|
|
6160
6185
|
}
|
|
6186
|
+
async function getIpViaIpApi() {
|
|
6187
|
+
const url = "https://ipapi.co/json";
|
|
6188
|
+
const response = await fetch(url);
|
|
6189
|
+
if (!response.ok) {
|
|
6190
|
+
throw new Error(`ipapi.co failed: ${response.statusText}`);
|
|
6191
|
+
}
|
|
6192
|
+
const data = await response.json();
|
|
6193
|
+
return {
|
|
6194
|
+
alpha2: data.country_code.toLowerCase(),
|
|
6195
|
+
state: data.region_code?.toLowerCase()
|
|
6196
|
+
};
|
|
6197
|
+
}
|
|
6198
|
+
function useUserIp() {
|
|
6199
|
+
const {
|
|
6200
|
+
data: userIpInfo,
|
|
6201
|
+
isLoading,
|
|
6202
|
+
error
|
|
6203
|
+
} = useQuery({
|
|
6204
|
+
queryKey: ["getUserIpInfo"],
|
|
6205
|
+
queryFn: async () => {
|
|
6206
|
+
try {
|
|
6207
|
+
const ipApiData = await getIpViaIpApi();
|
|
6208
|
+
console.log("IP detected via ipapi.co:", ipApiData);
|
|
6209
|
+
return ipApiData;
|
|
6210
|
+
} catch (ipApiError) {
|
|
6211
|
+
console.error("IP detection failed:", ipApiError);
|
|
6212
|
+
throw ipApiError;
|
|
6213
|
+
}
|
|
6214
|
+
},
|
|
6215
|
+
// Cache configuration to reduce API calls
|
|
6216
|
+
refetchOnMount: false,
|
|
6217
|
+
refetchOnReconnect: true,
|
|
6218
|
+
refetchOnWindowFocus: false,
|
|
6219
|
+
// Optional: Increase cache duration to 1 hour for even better rate limit protection
|
|
6220
|
+
staleTime: 1e3 * 60 * 60,
|
|
6221
|
+
// 1 hour - data considered fresh for 1 hour
|
|
6222
|
+
gcTime: 1e3 * 60 * 60 * 24
|
|
6223
|
+
// 24 hours - keep in cache for 24 hours
|
|
6224
|
+
});
|
|
6225
|
+
return {
|
|
6226
|
+
userIpInfo,
|
|
6227
|
+
isLoading,
|
|
6228
|
+
error
|
|
6229
|
+
};
|
|
6230
|
+
}
|
|
6231
|
+
var en_default = {
|
|
6232
|
+
transferCrypto: {
|
|
6233
|
+
priceImpact: {
|
|
6234
|
+
label: "Price impact",
|
|
6235
|
+
tooltip: "Price impact reflects the difference between the expected price and the final execution price, influenced by trade size and available liquidity. Larger trades may move the market price during execution.",
|
|
6236
|
+
finalCost: "The final cost reflects price impact and may vary depending on market and network conditions. Larger trade sizes typically benefit from lower relative costs."
|
|
6237
|
+
},
|
|
6238
|
+
slippage: {
|
|
6239
|
+
label: "Max slippage",
|
|
6240
|
+
auto: "Auto",
|
|
6241
|
+
tooltip: "Slippage represents price changes that can occur while a transaction is being processed. Slippage is dynamically adjusted per trading pair to support reliable execution during market movements.",
|
|
6242
|
+
finalCost: "The final cost includes any slippage and may change based on real-time network conditions. Costs are generally reduced for larger transaction amounts."
|
|
6243
|
+
},
|
|
6244
|
+
processingTime: {
|
|
6245
|
+
label: "Processing time",
|
|
6246
|
+
lessThanMinutes: "< {{minutes}} min",
|
|
6247
|
+
lessThanHours: "< {{hours}} hr"
|
|
6248
|
+
},
|
|
6249
|
+
minDeposit: {
|
|
6250
|
+
label: "min",
|
|
6251
|
+
tooltip: "The minimum amount you can deposit on the selected network."
|
|
6252
|
+
},
|
|
6253
|
+
help: {
|
|
6254
|
+
needHelp: "Need help?",
|
|
6255
|
+
contactSupport: "Contact support"
|
|
6256
|
+
},
|
|
6257
|
+
terms: {
|
|
6258
|
+
termsApply: "Terms apply"
|
|
6259
|
+
},
|
|
6260
|
+
supportedToken: "Supported token",
|
|
6261
|
+
supportedChain: "Supported chain",
|
|
6262
|
+
depositAddress: {
|
|
6263
|
+
label: "Your deposit address",
|
|
6264
|
+
tooltip: "Send any supported token to this address, and it will be automatically converted to {{token}} in your account."
|
|
6265
|
+
},
|
|
6266
|
+
copyAddress: "Copy address",
|
|
6267
|
+
copied: "Copied!",
|
|
6268
|
+
loading: "Loading...",
|
|
6269
|
+
loadingQRCode: "Loading QR Code...",
|
|
6270
|
+
noAddressAvailable: "No address available",
|
|
6271
|
+
noChainsAvailable: "No chains available for this token"
|
|
6272
|
+
},
|
|
6273
|
+
depositModal: {
|
|
6274
|
+
transferCrypto: {
|
|
6275
|
+
title: "Transfer Crypto",
|
|
6276
|
+
subtitle: "No limit \u2022 Instant"
|
|
6277
|
+
},
|
|
6278
|
+
depositWithCard: {
|
|
6279
|
+
title: "Deposit with Card",
|
|
6280
|
+
subtitle: "$50,000 limit \u2022 2 min"
|
|
6281
|
+
},
|
|
6282
|
+
quotes: "Quotes"
|
|
6283
|
+
},
|
|
6284
|
+
buyWithCard: {
|
|
6285
|
+
onramp: {
|
|
6286
|
+
completeTransaction: "Complete transaction with {{provider}}",
|
|
6287
|
+
canCloseModal: "You can close this modal.",
|
|
6288
|
+
youUse: "You use",
|
|
6289
|
+
youBuy: "You buy",
|
|
6290
|
+
youReceive: "You receive",
|
|
6291
|
+
intentAddressNote: "The wallet address displayed in the payment provider is a temporary deposit address. Your funds will be automatically converted and deposited into your account."
|
|
6292
|
+
}
|
|
6293
|
+
}
|
|
6294
|
+
};
|
|
6295
|
+
var i18n = en_default;
|
|
6161
6296
|
|
|
6162
6297
|
// ../ui-react/dist/index.mjs
|
|
6163
6298
|
import { jsx as jsx52, jsxs as jsxs32 } from "react/jsx-runtime";
|
|
@@ -10630,6 +10765,14 @@ function DepositExecutionItem({
|
|
|
10630
10765
|
}
|
|
10631
10766
|
);
|
|
10632
10767
|
}
|
|
10768
|
+
function formatCurrency(currency) {
|
|
10769
|
+
if (!currency) return "";
|
|
10770
|
+
const dotIndex = currency.indexOf(".");
|
|
10771
|
+
if (dotIndex === -1) {
|
|
10772
|
+
return currency.toUpperCase();
|
|
10773
|
+
}
|
|
10774
|
+
return currency.slice(0, dotIndex).toUpperCase() + currency.slice(dotIndex);
|
|
10775
|
+
}
|
|
10633
10776
|
function DepositDetailContent({ execution }) {
|
|
10634
10777
|
const [chains, setChains] = useState16([]);
|
|
10635
10778
|
const [showNetworkDetails, setShowNetworkDetails] = useState16(false);
|
|
@@ -10769,7 +10912,7 @@ function DepositDetailContent({ execution }) {
|
|
|
10769
10912
|
/* @__PURE__ */ jsxs42("span", { className: "uf-text-foreground uf-font-medium", children: [
|
|
10770
10913
|
formatAmount(execution.source_amount_base_unit),
|
|
10771
10914
|
" ",
|
|
10772
|
-
execution.source_currency
|
|
10915
|
+
formatCurrency(execution.source_currency)
|
|
10773
10916
|
] })
|
|
10774
10917
|
] }),
|
|
10775
10918
|
/* @__PURE__ */ jsxs42("div", { className: "uf-flex uf-justify-between uf-items-center uf-px-4 uf-py-3 uf-border-b uf-border-border/50", children: [
|
|
@@ -10777,7 +10920,7 @@ function DepositDetailContent({ execution }) {
|
|
|
10777
10920
|
/* @__PURE__ */ jsxs42("span", { className: "uf-text-foreground uf-font-medium", children: [
|
|
10778
10921
|
formatAmount(execution.destination_amount_base_unit),
|
|
10779
10922
|
" ",
|
|
10780
|
-
execution.destination_currency
|
|
10923
|
+
formatCurrency(execution.destination_currency)
|
|
10781
10924
|
] })
|
|
10782
10925
|
] }),
|
|
10783
10926
|
/* @__PURE__ */ jsxs42("div", { className: "uf-flex uf-justify-between uf-items-center uf-px-4 uf-py-3 uf-border-b uf-border-border/50", children: [
|
|
@@ -10865,7 +11008,7 @@ function DepositsModal({
|
|
|
10865
11008
|
}
|
|
10866
11009
|
};
|
|
10867
11010
|
fetchExecutions();
|
|
10868
|
-
const pollInterval = setInterval(fetchExecutions,
|
|
11011
|
+
const pollInterval = setInterval(fetchExecutions, 3e3);
|
|
10869
11012
|
return () => {
|
|
10870
11013
|
clearInterval(pollInterval);
|
|
10871
11014
|
};
|
|
@@ -11172,7 +11315,7 @@ var SelectItem2 = React38.forwardRef(({ className, children, ...props }, ref) =>
|
|
|
11172
11315
|
{
|
|
11173
11316
|
ref,
|
|
11174
11317
|
className: cn(
|
|
11175
|
-
"uf-relative uf-flex uf-w-full uf-cursor-default uf-select-none uf-items-center uf-rounded-sm uf-py-1.5 uf-pl-8 uf-pr-2 uf-text-sm uf-text-foreground uf-outline-none focus:uf-bg-accent focus:uf-text-accent-foreground data-[disabled]:uf-pointer-events-none data-[disabled]:uf-opacity-50 hover:uf-bg-accent",
|
|
11318
|
+
"uf-relative uf-flex uf-w-full uf-cursor-default uf-select-none uf-items-center uf-rounded-sm uf-py-1.5 uf-pl-8 uf-pr-2 uf-text-sm uf-text-foreground uf-outline-none focus:uf-bg-accent focus:uf-text-accent-foreground data-[disabled]:uf-pointer-events-none data-[disabled]:uf-opacity-50 hover:uf-bg-accent [&>span]:uf-flex-1",
|
|
11176
11319
|
className
|
|
11177
11320
|
),
|
|
11178
11321
|
...props,
|
|
@@ -11212,7 +11355,7 @@ var TooltipContent2 = React42.forwardRef(({ className, sideOffset = 4, ...props
|
|
|
11212
11355
|
) });
|
|
11213
11356
|
});
|
|
11214
11357
|
TooltipContent2.displayName = Content23.displayName;
|
|
11215
|
-
var
|
|
11358
|
+
var en_default2 = {
|
|
11216
11359
|
transferCrypto: {
|
|
11217
11360
|
priceImpact: {
|
|
11218
11361
|
label: "Price impact",
|
|
@@ -11276,7 +11419,7 @@ var en_default = {
|
|
|
11276
11419
|
}
|
|
11277
11420
|
}
|
|
11278
11421
|
};
|
|
11279
|
-
var i18n2 =
|
|
11422
|
+
var i18n2 = en_default2;
|
|
11280
11423
|
var t = i18n2.transferCrypto;
|
|
11281
11424
|
var getChainKey = (chainId, chainType) => {
|
|
11282
11425
|
return `${chainType}:${chainId}`;
|
|
@@ -11374,6 +11517,10 @@ function TransferCryptoBase({
|
|
|
11374
11517
|
setLoading(false);
|
|
11375
11518
|
return;
|
|
11376
11519
|
}
|
|
11520
|
+
if (internalWallets.length > 0) {
|
|
11521
|
+
setLoading(false);
|
|
11522
|
+
return;
|
|
11523
|
+
}
|
|
11377
11524
|
let retryTimeout = null;
|
|
11378
11525
|
let isCancelled = false;
|
|
11379
11526
|
const fetchWallets = async () => {
|
|
@@ -11498,7 +11645,7 @@ function TransferCryptoBase({
|
|
|
11498
11645
|
});
|
|
11499
11646
|
}
|
|
11500
11647
|
}
|
|
11501
|
-
},
|
|
11648
|
+
}, 3e3);
|
|
11502
11649
|
return () => clearInterval(pollInterval);
|
|
11503
11650
|
}, [
|
|
11504
11651
|
userId,
|
|
@@ -11556,20 +11703,26 @@ function TransferCryptoBase({
|
|
|
11556
11703
|
showDetailedDropdowns && /* @__PURE__ */ jsx112("span", { className: "uf-text-xs uf-text-muted-foreground", children: tokenData.name })
|
|
11557
11704
|
] });
|
|
11558
11705
|
};
|
|
11559
|
-
const renderChainItem = (chainData) => {
|
|
11560
|
-
return /* @__PURE__ */ jsxs8("div", { className: "uf-flex uf-items-center uf-
|
|
11561
|
-
/* @__PURE__ */
|
|
11562
|
-
|
|
11563
|
-
|
|
11564
|
-
|
|
11565
|
-
|
|
11566
|
-
|
|
11567
|
-
|
|
11568
|
-
|
|
11569
|
-
|
|
11570
|
-
|
|
11571
|
-
|
|
11572
|
-
|
|
11706
|
+
const renderChainItem = (chainData, showMinDeposit = false) => {
|
|
11707
|
+
return /* @__PURE__ */ jsxs8("div", { className: "uf-flex uf-items-center uf-justify-between uf-w-full", children: [
|
|
11708
|
+
/* @__PURE__ */ jsxs8("div", { className: "uf-flex uf-items-center uf-gap-2", children: [
|
|
11709
|
+
/* @__PURE__ */ jsx112(
|
|
11710
|
+
"img",
|
|
11711
|
+
{
|
|
11712
|
+
src: chainData.icon_url,
|
|
11713
|
+
alt: chainData.chain_name,
|
|
11714
|
+
width: 20,
|
|
11715
|
+
height: 20,
|
|
11716
|
+
className: "uf-rounded-full uf-flex-shrink-0"
|
|
11717
|
+
}
|
|
11718
|
+
),
|
|
11719
|
+
/* @__PURE__ */ jsx112("span", { className: "uf-text-xs uf-font-normal", children: chainData.chain_name }),
|
|
11720
|
+
showDetailedDropdowns && /* @__PURE__ */ jsx112("span", { className: "uf-text-xs uf-text-muted-foreground uf-capitalize", children: chainData.chain_type })
|
|
11721
|
+
] }),
|
|
11722
|
+
showMinDeposit && chainData.minimum_deposit_amount_usd && /* @__PURE__ */ jsxs8("span", { className: "uf-text-xs uf-text-amber-400 uf-font-medium", children: [
|
|
11723
|
+
"$",
|
|
11724
|
+
chainData.minimum_deposit_amount_usd
|
|
11725
|
+
] })
|
|
11573
11726
|
] });
|
|
11574
11727
|
};
|
|
11575
11728
|
const selectContainerClass = layoutVariant === "horizontal" ? "uf-grid uf-grid-cols-2 uf-gap-2.5" : "uf-space-y-3";
|
|
@@ -11601,7 +11754,7 @@ function TransferCryptoBase({
|
|
|
11601
11754
|
/* @__PURE__ */ jsxs8("div", { children: [
|
|
11602
11755
|
/* @__PURE__ */ jsxs8("div", { className: "uf-text-xs uf-text-muted-foreground uf-mb-2 uf-flex uf-items-center uf-gap-1", children: [
|
|
11603
11756
|
t.supportedChain,
|
|
11604
|
-
/* @__PURE__ */ jsxs8("span", { className: "uf-text-
|
|
11757
|
+
/* @__PURE__ */ jsxs8("span", { className: "uf-text-amber-400 uf-font-medium", children: [
|
|
11605
11758
|
"$",
|
|
11606
11759
|
minDepositUsd,
|
|
11607
11760
|
" ",
|
|
@@ -11615,7 +11768,7 @@ function TransferCryptoBase({
|
|
|
11615
11768
|
tabIndex: 0,
|
|
11616
11769
|
role: "button",
|
|
11617
11770
|
"aria-label": "Minimum deposit information",
|
|
11618
|
-
children: /* @__PURE__ */ jsx112(Info, { className: "uf-w-
|
|
11771
|
+
children: /* @__PURE__ */ jsx112(Info, { className: "uf-w-4 uf-h-4" })
|
|
11619
11772
|
}
|
|
11620
11773
|
) }),
|
|
11621
11774
|
/* @__PURE__ */ jsx112(
|
|
@@ -11637,7 +11790,7 @@ function TransferCryptoBase({
|
|
|
11637
11790
|
disabled: tokensLoading || availableChainsForToken.length === 0,
|
|
11638
11791
|
children: [
|
|
11639
11792
|
/* @__PURE__ */ jsx112(SelectTrigger2, { className: "uf-bg-secondary uf-border-none uf-rounded-lg uf-h-10 hover:uf-bg-accent uf-text-foreground focus:uf-ring-1 focus:uf-ring-ring disabled:uf-opacity-50", children: /* @__PURE__ */ jsx112(SelectValue2, { children: tokensLoading ? /* @__PURE__ */ jsx112("div", { className: "uf-flex uf-items-center uf-gap-2", children: /* @__PURE__ */ jsx112("span", { className: "uf-text-xs uf-font-light uf-text-muted-foreground", children: t.loading }) }) : currentChainFromBackend ? renderChainItem(currentChainFromBackend) : currentChainData ? renderChainItem(currentChainData) : /* @__PURE__ */ jsx112("div", { className: "uf-flex uf-items-center uf-gap-2", children: /* @__PURE__ */ jsx112("span", { className: "uf-text-xs uf-font-normal", children: chain }) }) }) }),
|
|
11640
|
-
/* @__PURE__ */ jsx112(SelectContent2, { className: "uf-bg-secondary uf-border uf-text-foreground uf-max-h-[300px]", children: availableChainsForToken.length === 0 ? /* @__PURE__ */ jsx112("div", { className: "uf-px-2 uf-py-3 uf-text-xs uf-text-muted-foreground uf-text-center", children: t.noChainsAvailable }) : availableChainsForToken.map((chainData) => {
|
|
11793
|
+
/* @__PURE__ */ jsx112(SelectContent2, { align: "end", className: "uf-bg-secondary uf-border uf-text-foreground uf-max-h-[300px] uf-min-w-[200px]", children: availableChainsForToken.length === 0 ? /* @__PURE__ */ jsx112("div", { className: "uf-px-2 uf-py-3 uf-text-xs uf-text-muted-foreground uf-text-center", children: t.noChainsAvailable }) : availableChainsForToken.map((chainData) => {
|
|
11641
11794
|
const chainKey = getChainKey(
|
|
11642
11795
|
chainData.chain_id,
|
|
11643
11796
|
chainData.chain_type
|
|
@@ -11647,7 +11800,7 @@ function TransferCryptoBase({
|
|
|
11647
11800
|
{
|
|
11648
11801
|
value: chainKey,
|
|
11649
11802
|
className: "focus:uf-bg-accent focus:uf-text-foreground",
|
|
11650
|
-
children: renderChainItem(chainData)
|
|
11803
|
+
children: renderChainItem(chainData, true)
|
|
11651
11804
|
},
|
|
11652
11805
|
`${chainData.chain_id}-${chainData.chain_type}`
|
|
11653
11806
|
);
|
|
@@ -12032,7 +12185,7 @@ function CurrencyModal({
|
|
|
12032
12185
|
] }) })
|
|
12033
12186
|
] }) });
|
|
12034
12187
|
}
|
|
12035
|
-
async function
|
|
12188
|
+
async function getIpViaIpApi2() {
|
|
12036
12189
|
const url = "https://ipapi.co/json";
|
|
12037
12190
|
const response = await fetch(url);
|
|
12038
12191
|
if (!response.ok) {
|
|
@@ -12053,7 +12206,7 @@ function useUserIp2() {
|
|
|
12053
12206
|
queryKey: ["getUserIpInfo"],
|
|
12054
12207
|
queryFn: async () => {
|
|
12055
12208
|
try {
|
|
12056
|
-
const ipApiData = await
|
|
12209
|
+
const ipApiData = await getIpViaIpApi2();
|
|
12057
12210
|
console.log("IP detected via ipapi.co:", ipApiData);
|
|
12058
12211
|
return ipApiData;
|
|
12059
12212
|
} catch (ipApiError) {
|
|
@@ -12175,6 +12328,10 @@ function BuyWithCard({
|
|
|
12175
12328
|
setWalletsLoading(false);
|
|
12176
12329
|
return;
|
|
12177
12330
|
}
|
|
12331
|
+
if (internalWallets.length > 0) {
|
|
12332
|
+
setWalletsLoading(false);
|
|
12333
|
+
return;
|
|
12334
|
+
}
|
|
12178
12335
|
let retryTimeout = null;
|
|
12179
12336
|
let isCancelled = false;
|
|
12180
12337
|
const fetchWallets = async () => {
|
|
@@ -12434,7 +12591,8 @@ function BuyWithCard({
|
|
|
12434
12591
|
] }) }),
|
|
12435
12592
|
quotesLoading ? /* @__PURE__ */ jsx162("div", { className: "uf-flex uf-justify-center", children: /* @__PURE__ */ jsx162("div", { className: "uf-h-4 uf-bg-muted uf-rounded uf-w-40 uf-animate-pulse" }) }) : /* @__PURE__ */ jsxs12("div", { className: "uf-text-sm uf-text-muted-foreground uf-font-normal", children: [
|
|
12436
12593
|
calculateUSDC(),
|
|
12437
|
-
"
|
|
12594
|
+
" ",
|
|
12595
|
+
displayTokenSymbol
|
|
12438
12596
|
] })
|
|
12439
12597
|
] }),
|
|
12440
12598
|
/* @__PURE__ */ jsx162("div", { className: "uf-flex uf-gap-3 uf-justify-center", children: QUICK_AMOUNTS.map((quickAmount) => /* @__PURE__ */ jsxs12(
|
|
@@ -12568,7 +12726,8 @@ function BuyWithCard({
|
|
|
12568
12726
|
/* @__PURE__ */ jsxs12("div", { className: "uf-text-right", children: [
|
|
12569
12727
|
/* @__PURE__ */ jsxs12("div", { className: "uf-text-sm uf-font-medium uf-text-foreground", children: [
|
|
12570
12728
|
quote.destination_amount.toFixed(2),
|
|
12571
|
-
"
|
|
12729
|
+
" ",
|
|
12730
|
+
displayTokenSymbol
|
|
12572
12731
|
] }),
|
|
12573
12732
|
/* @__PURE__ */ jsxs12("div", { className: "uf-text-xs uf-text-muted-foreground uf-font-normal", children: [
|
|
12574
12733
|
currencySymbol,
|
|
@@ -13222,8 +13381,27 @@ function useUnifold2() {
|
|
|
13222
13381
|
}
|
|
13223
13382
|
export {
|
|
13224
13383
|
Button,
|
|
13384
|
+
ExecutionStatus,
|
|
13385
|
+
SOLANA_USDC_ADDRESS,
|
|
13225
13386
|
UnifoldProvider2 as UnifoldProvider,
|
|
13226
|
-
|
|
13387
|
+
createDepositAddress,
|
|
13388
|
+
createMeldSession,
|
|
13389
|
+
getApiBaseUrl,
|
|
13390
|
+
getChainName,
|
|
13391
|
+
getFiatCurrencies,
|
|
13392
|
+
getIconUrl,
|
|
13393
|
+
getIconUrlWithCdn,
|
|
13394
|
+
getMeldQuotes,
|
|
13395
|
+
getPreferredIconUrl,
|
|
13396
|
+
getProjectConfig,
|
|
13397
|
+
getSupportedDepositTokens,
|
|
13398
|
+
getTokenChains,
|
|
13399
|
+
getWalletByChainType,
|
|
13400
|
+
i18n,
|
|
13401
|
+
queryExecutions,
|
|
13402
|
+
setApiConfig,
|
|
13403
|
+
useUnifold2 as useUnifold,
|
|
13404
|
+
useUserIp
|
|
13227
13405
|
};
|
|
13228
13406
|
/*! Bundled license information:
|
|
13229
13407
|
|
package/dist/styles.css
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--uf-background:0 0% 100%;--uf-foreground:0 0% 3.9%;--uf-card:0 0% 98%;--uf-card-foreground:0 0% 3.9%;--uf-popover:0 0% 100%;--uf-popover-foreground:0 0% 3.9%;--uf-primary:0 0% 9%;--uf-primary-foreground:0 0% 98%;--uf-secondary:0 0% 95%;--uf-secondary-foreground:0 0% 9%;--uf-muted:0 0% 92%;--uf-muted-foreground:0 0% 40%;--uf-accent:0 0% 90%;--uf-accent-foreground:0 0% 9%;--uf-destructive:0 84.2% 60.2%;--uf-destructive-foreground:0 0% 98%;--uf-border:0 0% 85%;--uf-input:0 0% 89.8%;--uf-ring:0 0% 3.9%;--uf-radius:0.5rem}.uf-dark{--uf-background:0 0% 5%;--uf-foreground:0 0% 98%;--uf-card:0 0% 10%;--uf-card-foreground:0 0% 98%;--uf-popover:0 0% 10%;--uf-popover-foreground:0 0% 98%;--uf-primary:0 0% 98%;--uf-primary-foreground:0 0% 9%;--uf-secondary:0 0% 16%;--uf-secondary-foreground:0 0% 98%;--uf-muted:0 0% 20%;--uf-muted-foreground:0 0% 60%;--uf-accent:0 0% 20%;--uf-accent-foreground:0 0% 98%;--uf-destructive:0 62.8% 30.6%;--uf-destructive-foreground:0 0% 98%;--uf-border:0 0% 20%;--uf-input:0 0% 20%;--uf-ring:0 0% 83.1%}[class*=uf-],[data-radix-popper-content-wrapper],[data-radix-portal]{font-family:Sons,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif!important}[class*=uf-] *,[data-radix-popper-content-wrapper] *,[data-radix-portal] *{font-family:inherit}.uf-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}.uf-pointer-events-none{pointer-events:none}.uf-invisible{visibility:hidden}.uf-fixed{position:fixed}.uf-absolute{position:absolute}.uf-relative{position:relative}.uf-inset-0{inset:0}.-uf-bottom-0\.5{bottom:-.125rem}.-uf-bottom-1{bottom:-.25rem}.-uf-right-0\.5{right:-.125rem}.-uf-right-1{right:-.25rem}.-uf-top-1{top:-.25rem}.uf--bottom-0\.5{bottom:-.125rem}.uf--right-0\.5{right:-.125rem}.uf-bottom-0{bottom:0}.uf-bottom-4{bottom:1rem}.uf-left-0{left:0}.uf-left-1\/2{left:50%}.uf-left-2{left:.5rem}.uf-left-4{left:1rem}.uf-right-0{right:0}.uf-right-6{right:1.5rem}.uf-top-1\/2{top:50%}.uf-top-6{top:1.5rem}.uf-z-50{z-index:50}.uf-z-\[100\]{z-index:100}.uf-z-\[1\]{z-index:1}.uf-z-\[9999\]{z-index:9999}.uf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.uf-mx-1{margin-left:.25rem;margin-right:.25rem}.uf-my-1{margin-top:.25rem;margin-bottom:.25rem}.uf-mb-0\.5{margin-bottom:.125rem}.uf-mb-1{margin-bottom:.25rem}.uf-mb-1\.5{margin-bottom:.375rem}.uf-mb-2{margin-bottom:.5rem}.uf-mb-3{margin-bottom:.75rem}.uf-mb-4{margin-bottom:1rem}.uf-mb-6{margin-bottom:1.5rem}.uf-mb-8{margin-bottom:2rem}.uf-mr-1{margin-right:.25rem}.uf-mt-0\.5{margin-top:.125rem}.uf-mt-2{margin-top:.5rem}.uf-mt-8{margin-top:2rem}.uf-block{display:block}.uf-flex{display:flex}.uf-inline-flex{display:inline-flex}.uf-grid{display:grid}.uf-h-10{height:2.5rem}.uf-h-11{height:2.75rem}.uf-h-2{height:.5rem}.uf-h-3{height:.75rem}.uf-h-3\.5{height:.875rem}.uf-h-4{height:1rem}.uf-h-5{height:1.25rem}.uf-h-6{height:1.5rem}.uf-h-7{height:1.75rem}.uf-h-8{height:2rem}.uf-h-9{height:2.25rem}.uf-h-\[18px\]{height:18px}.uf-h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.uf-h-full{height:100%}.uf-h-px{height:1px}.uf-max-h-96{max-height:24rem}.uf-max-h-\[300px\]{max-height:300px}.uf-max-h-\[400px\]{max-height:400px}.uf-max-h-\[500px\]{max-height:500px}.uf-min-h-\[420px\]{min-height:420px}.uf-w-10{width:2.5rem}.uf-w-2{width:.5rem}.uf-w-24{width:6rem}.uf-w-28{width:7rem}.uf-w-3{width:.75rem}.uf-w-3\.5{width:.875rem}.uf-w-32{width:8rem}.uf-w-4{width:1rem}.uf-w-40{width:10rem}.uf-w-5{width:1.25rem}.uf-w-6{width:1.5rem}.uf-w-7{width:1.75rem}.uf-w-8{width:2rem}.uf-w-9{width:2.25rem}.uf-w-\[360px\]{width:360px}.uf-w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.uf-w-full{width:100%}.uf-min-w-0{min-width:0}.uf-min-w-\[18px\]{min-width:18px}.uf-min-w-\[1ch\]{min-width:1ch}.uf-min-w-\[72px\]{min-width:72px}.uf-min-w-\[8rem\]{min-width:8rem}.uf-min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.uf-max-w-\[200px\]{max-width:200px}.uf-max-w-\[240px\]{max-width:240px}.uf-max-w-\[280px\]{max-width:280px}.uf-max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.uf-max-w-full{max-width:100%}.uf-flex-1{flex:1 1 0%}.uf-flex-shrink-0{flex-shrink:0}.uf--translate-x-1\/2{--tw-translate-x:-50%}.uf--translate-x-1\/2,.uf--translate-y-1\/2{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))}.uf--translate-y-1\/2{--tw-translate-y:-50%}@keyframes uf-pulse{50%{opacity:.5}}.uf-animate-pulse{animation:uf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes uf-spin{to{transform:rotate(1turn)}}.uf-animate-spin{animation:uf-spin 1s linear infinite}.uf-cursor-default{cursor:default}.uf-cursor-pointer{cursor:pointer}.uf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.uf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.uf-grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.uf-flex-col{flex-direction:column}.uf-flex-col-reverse{flex-direction:column-reverse}.uf-items-center{align-items:center}.uf-justify-end{justify-content:flex-end}.uf-justify-center{justify-content:center}.uf-justify-between{justify-content:space-between}.uf-gap-0{gap:0}.uf-gap-1{gap:.25rem}.uf-gap-1\.5{gap:.375rem}.uf-gap-2{gap:.5rem}.uf-gap-2\.5{gap:.625rem}.uf-gap-3{gap:.75rem}.uf-gap-4{gap:1rem}.uf--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)))}.uf--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)))}.uf-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))}.uf-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))}.uf-space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.uf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.uf-self-start{align-self:flex-start}.uf-overflow-hidden{overflow:hidden}.uf-overflow-visible{overflow:visible}.uf-overflow-y-auto{overflow-y:auto}.uf-whitespace-nowrap{white-space:nowrap}.uf-break-all{word-break:break-all}.uf-rounded{border-radius:.25rem}.uf-rounded-2xl{border-radius:1rem}.uf-rounded-full{border-radius:9999px}.uf-rounded-lg{border-radius:var(--uf-radius)}.uf-rounded-md{border-radius:calc(var(--uf-radius) - 2px)}.uf-rounded-sm{border-radius:calc(var(--uf-radius) - 4px)}.uf-rounded-xl{border-radius:.75rem}.uf-rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.uf-border{border-width:1px}.uf-border-2{border-width:2px}.uf-border-b{border-bottom-width:1px}.uf-border-none{border-style:none}.uf-border-border{border-color:hsl(var(--uf-border))}.uf-border-border\/50{border-color:hsl(var(--uf-border)/.5)}.uf-border-input{border-color:hsl(var(--uf-input))}.uf-border-secondary{border-color:hsl(var(--uf-secondary))}.uf-border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity,1))}.\!uf-bg-card{background-color:hsl(var(--uf-card))!important}.\!uf-bg-popover{background-color:hsl(var(--uf-popover))!important}.\!uf-bg-secondary{background-color:hsl(var(--uf-secondary))!important}.uf-bg-background{background-color:hsl(var(--uf-background))}.uf-bg-black\/40{background-color:rgba(0,0,0,.4)}.uf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.uf-bg-card{background-color:hsl(var(--uf-card))}.uf-bg-destructive{background-color:hsl(var(--uf-destructive))}.uf-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.uf-bg-muted{background-color:hsl(var(--uf-muted))}.uf-bg-popover{background-color:hsl(var(--uf-popover))}.uf-bg-primary{background-color:hsl(var(--uf-primary))}.uf-bg-secondary{background-color:hsl(var(--uf-secondary))}.uf-bg-transparent{background-color:transparent}.uf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.uf-bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.uf-p-0{padding:0}.uf-p-0\.5{padding:.125rem}.uf-p-1{padding:.25rem}.uf-p-2{padding:.5rem}.uf-p-3{padding:.75rem}.uf-p-4{padding:1rem}.uf-p-6{padding:1.5rem}.uf-px-1{padding-left:.25rem;padding-right:.25rem}.uf-px-2{padding-left:.5rem;padding-right:.5rem}.uf-px-3{padding-left:.75rem;padding-right:.75rem}.uf-px-4{padding-left:1rem;padding-right:1rem}.uf-px-8{padding-left:2rem;padding-right:2rem}.uf-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.uf-py-1{padding-top:.25rem;padding-bottom:.25rem}.uf-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.uf-py-2{padding-top:.5rem;padding-bottom:.5rem}.uf-py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.uf-py-3{padding-top:.75rem;padding-bottom:.75rem}.uf-py-4{padding-top:1rem;padding-bottom:1rem}.uf-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.uf-py-8{padding-top:2rem;padding-bottom:2rem}.uf-pb-1{padding-bottom:.25rem}.uf-pb-2{padding-bottom:.5rem}.uf-pb-3{padding-bottom:.75rem}.uf-pb-4{padding-bottom:1rem}.uf-pl-11{padding-left:2.75rem}.uf-pl-8{padding-left:2rem}.uf-pr-2{padding-right:.5rem}.uf-pr-4{padding-right:1rem}.uf-pt-2{padding-top:.5rem}.uf-pt-4{padding-top:1rem}.uf-pt-6{padding-top:1.5rem}.uf-text-left{text-align:left}.uf-text-center{text-align:center}.uf-text-right{text-align:right}.uf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uf-text-\[10px\]{font-size:10px}.uf-text-base{font-size:1rem;line-height:1.5rem}.uf-text-lg{font-size:1.125rem;line-height:1.75rem}.uf-text-sm{font-size:.875rem;line-height:1.25rem}.uf-text-xl{font-size:1.25rem;line-height:1.75rem}.uf-text-xs{font-size:.75rem;line-height:1rem}.uf-font-light{font-weight:300}.uf-font-medium{font-weight:500}.uf-font-normal{font-weight:400}.uf-font-semibold{font-weight:600}.uf-capitalize{text-transform:capitalize}.uf-leading-none{line-height:1}.uf-leading-relaxed{line-height:1.625}.uf-leading-tight{line-height:1.25}.uf-tracking-tight{letter-spacing:-.025em}.uf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.uf-text-destructive-foreground{color:hsl(var(--uf-destructive-foreground))}.uf-text-foreground{color:hsl(var(--uf-foreground))}.uf-text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.uf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.uf-text-muted{color:hsl(var(--uf-muted))}.uf-text-muted-foreground{color:hsl(var(--uf-muted-foreground))}.uf-text-popover-foreground{color:hsl(var(--uf-popover-foreground))}.uf-text-primary{color:hsl(var(--uf-primary))}.uf-text-primary-foreground{color:hsl(var(--uf-primary-foreground))}.uf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.uf-text-secondary-foreground{color:hsl(var(--uf-secondary-foreground))}.uf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.uf-text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity,1))}.uf-underline{text-decoration-line:underline}.uf-underline-offset-4{text-underline-offset:4px}.uf-placeholder-muted-foreground::-moz-placeholder{color:hsl(var(--uf-muted-foreground))}.uf-placeholder-muted-foreground::placeholder{color:hsl(var(--uf-muted-foreground))}.uf-opacity-0{opacity:0}.uf-opacity-100{opacity:1}.uf-opacity-50{opacity:.5}.uf-opacity-70{opacity:.7}.uf-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.uf-outline-none{outline:2px solid transparent;outline-offset:2px}.uf-ring-2{--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)}.uf-ring-inset{--tw-ring-inset:inset}.uf-ring-primary{--tw-ring-color:hsl(var(--uf-primary))}.uf-ring-offset-background{--tw-ring-offset-color:hsl(var(--uf-background))}.uf-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.uf-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}.uf-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.uf-duration-1000{transition-duration:1s}.uf-duration-200{transition-duration:.2s}.uf-duration-300{transition-duration:.3s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.uf-animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.uf-fade-in,.uf-fade-in-0{--tw-enter-opacity:0}.uf-zoom-in-95{--tw-enter-scale:.95}.uf-slide-in-from-bottom-2{--tw-enter-translate-y:0.5rem}.uf-slide-in-from-right-8{--tw-enter-translate-x:2rem}.uf-duration-1000{animation-duration:1s}.uf-duration-200{animation-duration:.2s}.uf-duration-300{animation-duration:.3s}.\[scrollbar-width\:none\]{scrollbar-width:none}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Thin.ttf) format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Light.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-RegularItalic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Semibold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-SemiboldItalic.ttf) format("truetype");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Extrabold.ttf) format("truetype");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-ExtraboldItalic.ttf) format("truetype");font-weight:800;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Black.ttf) format("truetype");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic;font-display:swap}.placeholder\:uf-text-muted-foreground::-moz-placeholder{color:hsl(var(--uf-muted-foreground))}.placeholder\:uf-text-muted-foreground::placeholder{color:hsl(var(--uf-muted-foreground))}.hover\:uf-bg-accent:hover{background-color:hsl(var(--uf-accent))}.hover\:uf-bg-card\/50:hover{background-color:hsl(var(--uf-card)/.5)}.hover\:uf-bg-destructive\/90:hover{background-color:hsl(var(--uf-destructive)/.9)}.hover\:uf-bg-primary\/90:hover{background-color:hsl(var(--uf-primary)/.9)}.hover\:uf-bg-secondary:hover{background-color:hsl(var(--uf-secondary))}.hover\:uf-bg-secondary\/80:hover{background-color:hsl(var(--uf-secondary)/.8)}.hover\:uf-text-accent-foreground:hover{color:hsl(var(--uf-accent-foreground))}.hover\:uf-text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:uf-text-foreground:hover{color:hsl(var(--uf-foreground))}.hover\:uf-text-muted-foreground:hover{color:hsl(var(--uf-muted-foreground))}.hover\:uf-underline:hover{text-decoration-line:underline}.hover\:uf-opacity-100:hover{opacity:1}.hover\:uf-opacity-90:hover{opacity:.9}.focus\:uf-bg-accent:focus{background-color:hsl(var(--uf-accent))}.focus\:uf-text-accent-foreground:focus{color:hsl(var(--uf-accent-foreground))}.focus\:uf-text-foreground:focus{color:hsl(var(--uf-foreground))}.focus\:uf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:uf-ring-1:focus{--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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:uf-ring-1:focus,.focus\:uf-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:uf-ring-2:focus{--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)}.focus\:uf-ring-ring:focus{--tw-ring-color:hsl(var(--uf-ring))}.focus\:uf-ring-ring\/30:focus{--tw-ring-color:hsl(var(--uf-ring)/0.3)}.focus\:uf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:uf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:uf-ring-2: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)}.focus-visible\:uf-ring-ring:focus-visible{--tw-ring-color:hsl(var(--uf-ring))}.focus-visible\:uf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:uf-pointer-events-none:disabled{pointer-events:none}.disabled\:uf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!uf-bg-muted:disabled{background-color:hsl(var(--uf-muted))!important}.disabled\:uf-text-muted-foreground:disabled{color:hsl(var(--uf-muted-foreground))}.disabled\:uf-opacity-50:disabled{opacity:.5}.uf-group:hover .group-hover\:uf-text-foreground{color:hsl(var(--uf-foreground))}.data-\[disabled\]\:uf-pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:uf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:uf-translate-y-1[data-side=bottom],.data-\[side\=left\]\:uf--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))}.data-\[side\=left\]\:uf--translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\[side\=right\]\:uf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\[side\=right\]\:uf-translate-x-1[data-side=right],.data-\[side\=top\]\:uf--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))}.data-\[side\=top\]\:uf--translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=open\]\:uf-bg-accent[data-state=open]{background-color:hsl(var(--uf-accent))}.data-\[state\=open\]\:uf-text-muted-foreground[data-state=open]{color:hsl(var(--uf-muted-foreground))}.data-\[disabled\]\:uf-opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:uf-animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:uf-animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:uf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:uf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:uf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:uf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:uf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:uf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:uf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:uf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\[state\=closed\]\:uf-slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=open\]\:uf-slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.dark\:uf-border-zinc-700:is([class=uf-dark] *){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity,1))}.dark\:uf-bg-black:is([class=uf-dark] *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:uf-text-white:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:uf-text-zinc-400:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\:hover\:uf-text-white:hover:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:uf-bottom-auto{bottom:auto}.sm\:uf-left-\[50\%\]{left:50%}.sm\:uf-right-auto{right:auto}.sm\:uf-top-\[50\%\]{top:50%}.sm\:uf-max-w-\[400px\]{max-width:400px}.sm\:uf-translate-x-\[-50\%\]{--tw-translate-x:-50%}.sm\:uf-translate-x-\[-50\%\],.sm\:uf-translate-y-\[-50\%\]{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))}.sm\:uf-translate-y-\[-50\%\]{--tw-translate-y:-50%}.sm\:uf-flex-row{flex-direction:row}.sm\:uf-justify-end{justify-content:flex-end}.sm\:uf-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)))}.sm\:uf-rounded-3xl{border-radius:1.5rem}.sm\:uf-text-left{text-align:left}.sm\:data-\[state\=closed\]\:uf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.sm\:data-\[state\=open\]\:uf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.sm\:data-\[state\=closed\]\:uf-slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.sm\:data-\[state\=closed\]\:uf-slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.sm\:data-\[state\=open\]\:uf-slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.sm\:data-\[state\=open\]\:uf-slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}}.\[\&\:\:-webkit-scrollbar\]\:uf-hidden::-webkit-scrollbar{display:none}.\[\&\>button\]\:uf-hidden>button{display:none}.\[\&\>span\]\:uf-line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}
|
|
1
|
+
*,:after,:before{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }/*! tailwindcss v3.4.18 | MIT License | https://tailwindcss.com*/*,:after,:before{box-sizing:border-box;border:0 solid #e5e7eb}:after,:before{--tw-content:""}:host,html{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}fieldset{margin:0}fieldset,legend{padding:0}menu,ol,ul{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}[role=button],button{cursor:pointer}:disabled{cursor:default}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}:root{--uf-background:0 0% 100%;--uf-foreground:0 0% 3.9%;--uf-card:0 0% 98%;--uf-card-foreground:0 0% 3.9%;--uf-popover:0 0% 100%;--uf-popover-foreground:0 0% 3.9%;--uf-primary:0 0% 9%;--uf-primary-foreground:0 0% 98%;--uf-secondary:0 0% 95%;--uf-secondary-foreground:0 0% 9%;--uf-muted:0 0% 92%;--uf-muted-foreground:0 0% 40%;--uf-accent:0 0% 90%;--uf-accent-foreground:0 0% 9%;--uf-destructive:0 84.2% 60.2%;--uf-destructive-foreground:0 0% 98%;--uf-border:0 0% 85%;--uf-input:0 0% 89.8%;--uf-ring:0 0% 3.9%;--uf-radius:0.5rem}.uf-dark{--uf-background:0 0% 5%;--uf-foreground:0 0% 98%;--uf-card:0 0% 10%;--uf-card-foreground:0 0% 98%;--uf-popover:0 0% 10%;--uf-popover-foreground:0 0% 98%;--uf-primary:0 0% 98%;--uf-primary-foreground:0 0% 9%;--uf-secondary:0 0% 16%;--uf-secondary-foreground:0 0% 98%;--uf-muted:0 0% 20%;--uf-muted-foreground:0 0% 60%;--uf-accent:0 0% 20%;--uf-accent-foreground:0 0% 98%;--uf-destructive:0 62.8% 30.6%;--uf-destructive-foreground:0 0% 98%;--uf-border:0 0% 20%;--uf-input:0 0% 20%;--uf-ring:0 0% 83.1%}[class*=uf-],[data-radix-popper-content-wrapper],[data-radix-portal]{font-family:Sons,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif!important}[class*=uf-] *,[data-radix-popper-content-wrapper] *,[data-radix-portal] *{font-family:inherit}.uf-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}.uf-pointer-events-none{pointer-events:none}.uf-invisible{visibility:hidden}.uf-fixed{position:fixed}.uf-absolute{position:absolute}.uf-relative{position:relative}.uf-inset-0{inset:0}.-uf-bottom-0\.5{bottom:-.125rem}.-uf-bottom-1{bottom:-.25rem}.-uf-right-0\.5{right:-.125rem}.-uf-right-1{right:-.25rem}.-uf-top-1{top:-.25rem}.uf--bottom-0\.5{bottom:-.125rem}.uf--right-0\.5{right:-.125rem}.uf-bottom-0{bottom:0}.uf-bottom-4{bottom:1rem}.uf-left-0{left:0}.uf-left-1\/2{left:50%}.uf-left-2{left:.5rem}.uf-left-4{left:1rem}.uf-right-0{right:0}.uf-right-6{right:1.5rem}.uf-top-1\/2{top:50%}.uf-top-6{top:1.5rem}.uf-z-50{z-index:50}.uf-z-\[100\]{z-index:100}.uf-z-\[1\]{z-index:1}.uf-z-\[9999\]{z-index:9999}.uf--mx-1{margin-left:-.25rem;margin-right:-.25rem}.uf-mx-1{margin-left:.25rem;margin-right:.25rem}.uf-my-1{margin-top:.25rem;margin-bottom:.25rem}.uf-mb-0\.5{margin-bottom:.125rem}.uf-mb-1{margin-bottom:.25rem}.uf-mb-1\.5{margin-bottom:.375rem}.uf-mb-2{margin-bottom:.5rem}.uf-mb-3{margin-bottom:.75rem}.uf-mb-4{margin-bottom:1rem}.uf-mb-6{margin-bottom:1.5rem}.uf-mb-8{margin-bottom:2rem}.uf-mr-1{margin-right:.25rem}.uf-mt-0\.5{margin-top:.125rem}.uf-mt-2{margin-top:.5rem}.uf-mt-8{margin-top:2rem}.uf-block{display:block}.uf-flex{display:flex}.uf-inline-flex{display:inline-flex}.uf-grid{display:grid}.uf-h-10{height:2.5rem}.uf-h-11{height:2.75rem}.uf-h-2{height:.5rem}.uf-h-3{height:.75rem}.uf-h-3\.5{height:.875rem}.uf-h-4{height:1rem}.uf-h-5{height:1.25rem}.uf-h-6{height:1.5rem}.uf-h-7{height:1.75rem}.uf-h-8{height:2rem}.uf-h-9{height:2.25rem}.uf-h-\[18px\]{height:18px}.uf-h-\[var\(--radix-select-trigger-height\)\]{height:var(--radix-select-trigger-height)}.uf-h-full{height:100%}.uf-h-px{height:1px}.uf-max-h-96{max-height:24rem}.uf-max-h-\[300px\]{max-height:300px}.uf-max-h-\[400px\]{max-height:400px}.uf-max-h-\[500px\]{max-height:500px}.uf-min-h-\[420px\]{min-height:420px}.uf-w-10{width:2.5rem}.uf-w-2{width:.5rem}.uf-w-24{width:6rem}.uf-w-28{width:7rem}.uf-w-3{width:.75rem}.uf-w-3\.5{width:.875rem}.uf-w-32{width:8rem}.uf-w-4{width:1rem}.uf-w-40{width:10rem}.uf-w-5{width:1.25rem}.uf-w-6{width:1.5rem}.uf-w-7{width:1.75rem}.uf-w-8{width:2rem}.uf-w-9{width:2.25rem}.uf-w-\[360px\]{width:360px}.uf-w-\[calc\(100vw-2rem\)\]{width:calc(100vw - 2rem)}.uf-w-full{width:100%}.uf-min-w-0{min-width:0}.uf-min-w-\[18px\]{min-width:18px}.uf-min-w-\[1ch\]{min-width:1ch}.uf-min-w-\[200px\]{min-width:200px}.uf-min-w-\[72px\]{min-width:72px}.uf-min-w-\[8rem\]{min-width:8rem}.uf-min-w-\[var\(--radix-select-trigger-width\)\]{min-width:var(--radix-select-trigger-width)}.uf-max-w-\[200px\]{max-width:200px}.uf-max-w-\[240px\]{max-width:240px}.uf-max-w-\[280px\]{max-width:280px}.uf-max-w-\[calc\(100vw-2rem\)\]{max-width:calc(100vw - 2rem)}.uf-max-w-full{max-width:100%}.uf-flex-1{flex:1 1 0%}.uf-flex-shrink-0{flex-shrink:0}.uf--translate-x-1\/2{--tw-translate-x:-50%}.uf--translate-x-1\/2,.uf--translate-y-1\/2{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))}.uf--translate-y-1\/2{--tw-translate-y:-50%}@keyframes uf-pulse{50%{opacity:.5}}.uf-animate-pulse{animation:uf-pulse 2s cubic-bezier(.4,0,.6,1) infinite}@keyframes uf-spin{to{transform:rotate(1turn)}}.uf-animate-spin{animation:uf-spin 1s linear infinite}.uf-cursor-default{cursor:default}.uf-cursor-pointer{cursor:pointer}.uf-select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.uf-grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.uf-grid-cols-\[auto_1fr_auto\]{grid-template-columns:auto 1fr auto}.uf-flex-col{flex-direction:column}.uf-flex-col-reverse{flex-direction:column-reverse}.uf-items-center{align-items:center}.uf-justify-end{justify-content:flex-end}.uf-justify-center{justify-content:center}.uf-justify-between{justify-content:space-between}.uf-gap-0{gap:0}.uf-gap-1{gap:.25rem}.uf-gap-1\.5{gap:.375rem}.uf-gap-2{gap:.5rem}.uf-gap-2\.5{gap:.625rem}.uf-gap-3{gap:.75rem}.uf-gap-4{gap:1rem}.uf--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)))}.uf--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)))}.uf-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))}.uf-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))}.uf-space-y-2\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.625rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.625rem*var(--tw-space-y-reverse))}.uf-space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem*(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem*var(--tw-space-y-reverse))}.uf-self-start{align-self:flex-start}.uf-overflow-hidden{overflow:hidden}.uf-overflow-visible{overflow:visible}.uf-overflow-y-auto{overflow-y:auto}.uf-whitespace-nowrap{white-space:nowrap}.uf-break-all{word-break:break-all}.uf-rounded{border-radius:.25rem}.uf-rounded-2xl{border-radius:1rem}.uf-rounded-full{border-radius:9999px}.uf-rounded-lg{border-radius:var(--uf-radius)}.uf-rounded-md{border-radius:calc(var(--uf-radius) - 2px)}.uf-rounded-sm{border-radius:calc(var(--uf-radius) - 4px)}.uf-rounded-xl{border-radius:.75rem}.uf-rounded-t-3xl{border-top-left-radius:1.5rem;border-top-right-radius:1.5rem}.uf-border{border-width:1px}.uf-border-2{border-width:2px}.uf-border-b{border-bottom-width:1px}.uf-border-none{border-style:none}.uf-border-border{border-color:hsl(var(--uf-border))}.uf-border-border\/50{border-color:hsl(var(--uf-border)/.5)}.uf-border-input{border-color:hsl(var(--uf-input))}.uf-border-secondary{border-color:hsl(var(--uf-secondary))}.uf-border-zinc-300{--tw-border-opacity:1;border-color:rgb(212 212 216/var(--tw-border-opacity,1))}.\!uf-bg-card{background-color:hsl(var(--uf-card))!important}.\!uf-bg-popover{background-color:hsl(var(--uf-popover))!important}.\!uf-bg-secondary{background-color:hsl(var(--uf-secondary))!important}.uf-bg-background{background-color:hsl(var(--uf-background))}.uf-bg-black\/40{background-color:rgba(0,0,0,.4)}.uf-bg-blue-500{--tw-bg-opacity:1;background-color:rgb(59 130 246/var(--tw-bg-opacity,1))}.uf-bg-card{background-color:hsl(var(--uf-card))}.uf-bg-destructive{background-color:hsl(var(--uf-destructive))}.uf-bg-green-500{--tw-bg-opacity:1;background-color:rgb(34 197 94/var(--tw-bg-opacity,1))}.uf-bg-muted{background-color:hsl(var(--uf-muted))}.uf-bg-popover{background-color:hsl(var(--uf-popover))}.uf-bg-primary{background-color:hsl(var(--uf-primary))}.uf-bg-secondary{background-color:hsl(var(--uf-secondary))}.uf-bg-transparent{background-color:transparent}.uf-bg-white{--tw-bg-opacity:1;background-color:rgb(255 255 255/var(--tw-bg-opacity,1))}.uf-bg-yellow-500{--tw-bg-opacity:1;background-color:rgb(234 179 8/var(--tw-bg-opacity,1))}.uf-p-0{padding:0}.uf-p-0\.5{padding:.125rem}.uf-p-1{padding:.25rem}.uf-p-2{padding:.5rem}.uf-p-3{padding:.75rem}.uf-p-4{padding:1rem}.uf-p-6{padding:1.5rem}.uf-px-1{padding-left:.25rem;padding-right:.25rem}.uf-px-2{padding-left:.5rem;padding-right:.5rem}.uf-px-3{padding-left:.75rem;padding-right:.75rem}.uf-px-4{padding-left:1rem;padding-right:1rem}.uf-px-8{padding-left:2rem;padding-right:2rem}.uf-py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.uf-py-1{padding-top:.25rem;padding-bottom:.25rem}.uf-py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.uf-py-2{padding-top:.5rem;padding-bottom:.5rem}.uf-py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.uf-py-3{padding-top:.75rem;padding-bottom:.75rem}.uf-py-4{padding-top:1rem;padding-bottom:1rem}.uf-py-6{padding-top:1.5rem;padding-bottom:1.5rem}.uf-py-8{padding-top:2rem;padding-bottom:2rem}.uf-pb-1{padding-bottom:.25rem}.uf-pb-2{padding-bottom:.5rem}.uf-pb-3{padding-bottom:.75rem}.uf-pb-4{padding-bottom:1rem}.uf-pl-11{padding-left:2.75rem}.uf-pl-8{padding-left:2rem}.uf-pr-2{padding-right:.5rem}.uf-pr-4{padding-right:1rem}.uf-pt-2{padding-top:.5rem}.uf-pt-4{padding-top:1rem}.uf-pt-6{padding-top:1.5rem}.uf-text-left{text-align:left}.uf-text-center{text-align:center}.uf-text-right{text-align:right}.uf-font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.uf-text-\[10px\]{font-size:10px}.uf-text-base{font-size:1rem;line-height:1.5rem}.uf-text-lg{font-size:1.125rem;line-height:1.75rem}.uf-text-sm{font-size:.875rem;line-height:1.25rem}.uf-text-xl{font-size:1.25rem;line-height:1.75rem}.uf-text-xs{font-size:.75rem;line-height:1rem}.uf-font-light{font-weight:300}.uf-font-medium{font-weight:500}.uf-font-normal{font-weight:400}.uf-font-semibold{font-weight:600}.uf-capitalize{text-transform:capitalize}.uf-leading-none{line-height:1}.uf-leading-relaxed{line-height:1.625}.uf-leading-tight{line-height:1.25}.uf-tracking-tight{letter-spacing:-.025em}.uf-text-amber-400{--tw-text-opacity:1;color:rgb(251 191 36/var(--tw-text-opacity,1))}.uf-text-black{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.uf-text-destructive-foreground{color:hsl(var(--uf-destructive-foreground))}.uf-text-foreground{color:hsl(var(--uf-foreground))}.uf-text-green-400{--tw-text-opacity:1;color:rgb(74 222 128/var(--tw-text-opacity,1))}.uf-text-green-500{--tw-text-opacity:1;color:rgb(34 197 94/var(--tw-text-opacity,1))}.uf-text-muted{color:hsl(var(--uf-muted))}.uf-text-muted-foreground{color:hsl(var(--uf-muted-foreground))}.uf-text-popover-foreground{color:hsl(var(--uf-popover-foreground))}.uf-text-primary{color:hsl(var(--uf-primary))}.uf-text-primary-foreground{color:hsl(var(--uf-primary-foreground))}.uf-text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.uf-text-secondary-foreground{color:hsl(var(--uf-secondary-foreground))}.uf-text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.uf-text-zinc-600{--tw-text-opacity:1;color:rgb(82 82 91/var(--tw-text-opacity,1))}.uf-underline{text-decoration-line:underline}.uf-underline-offset-4{text-underline-offset:4px}.uf-placeholder-muted-foreground::-moz-placeholder{color:hsl(var(--uf-muted-foreground))}.uf-placeholder-muted-foreground::placeholder{color:hsl(var(--uf-muted-foreground))}.uf-opacity-0{opacity:0}.uf-opacity-100{opacity:1}.uf-opacity-50{opacity:.5}.uf-opacity-70{opacity:.7}.uf-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);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.uf-outline-none{outline:2px solid transparent;outline-offset:2px}.uf-ring-2{--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)}.uf-ring-inset{--tw-ring-inset:inset}.uf-ring-primary{--tw-ring-color:hsl(var(--uf-primary))}.uf-ring-offset-background{--tw-ring-offset-color:hsl(var(--uf-background))}.uf-transition-all{transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.uf-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}.uf-transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.uf-duration-1000{transition-duration:1s}.uf-duration-200{transition-duration:.2s}.uf-duration-300{transition-duration:.3s}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0) scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1)) rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0) scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1)) rotate(var(--tw-exit-rotate,0))}}.uf-animate-in{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.uf-fade-in,.uf-fade-in-0{--tw-enter-opacity:0}.uf-zoom-in-95{--tw-enter-scale:.95}.uf-slide-in-from-bottom-2{--tw-enter-translate-y:0.5rem}.uf-slide-in-from-right-8{--tw-enter-translate-x:2rem}.uf-duration-1000{animation-duration:1s}.uf-duration-200{animation-duration:.2s}.uf-duration-300{animation-duration:.3s}.\[scrollbar-width\:none\]{scrollbar-width:none}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Thin.ttf) format("truetype");font-weight:100;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-ThinItalic.ttf) format("truetype");font-weight:100;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Light.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-LightItalic.ttf) format("truetype");font-weight:300;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-RegularItalic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Semibold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-SemiboldItalic.ttf) format("truetype");font-weight:600;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Extrabold.ttf) format("truetype");font-weight:800;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-ExtraboldItalic.ttf) format("truetype");font-weight:800;font-style:italic;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-Black.ttf) format("truetype");font-weight:900;font-style:normal;font-display:swap}@font-face{font-family:Sons;src:url(assets/fonts/Sons-BlackItalic.ttf) format("truetype");font-weight:900;font-style:italic;font-display:swap}.placeholder\:uf-text-muted-foreground::-moz-placeholder{color:hsl(var(--uf-muted-foreground))}.placeholder\:uf-text-muted-foreground::placeholder{color:hsl(var(--uf-muted-foreground))}.hover\:uf-bg-accent:hover{background-color:hsl(var(--uf-accent))}.hover\:uf-bg-card\/50:hover{background-color:hsl(var(--uf-card)/.5)}.hover\:uf-bg-destructive\/90:hover{background-color:hsl(var(--uf-destructive)/.9)}.hover\:uf-bg-primary\/90:hover{background-color:hsl(var(--uf-primary)/.9)}.hover\:uf-bg-secondary:hover{background-color:hsl(var(--uf-secondary))}.hover\:uf-bg-secondary\/80:hover{background-color:hsl(var(--uf-secondary)/.8)}.hover\:uf-text-accent-foreground:hover{color:hsl(var(--uf-accent-foreground))}.hover\:uf-text-black:hover{--tw-text-opacity:1;color:rgb(0 0 0/var(--tw-text-opacity,1))}.hover\:uf-text-foreground:hover{color:hsl(var(--uf-foreground))}.hover\:uf-text-muted-foreground:hover{color:hsl(var(--uf-muted-foreground))}.hover\:uf-underline:hover{text-decoration-line:underline}.hover\:uf-opacity-100:hover{opacity:1}.hover\:uf-opacity-90:hover{opacity:.9}.focus\:uf-bg-accent:focus{background-color:hsl(var(--uf-accent))}.focus\:uf-text-accent-foreground:focus{color:hsl(var(--uf-accent-foreground))}.focus\:uf-text-foreground:focus{color:hsl(var(--uf-foreground))}.focus\:uf-outline-none:focus{outline:2px solid transparent;outline-offset:2px}.focus\:uf-ring-1:focus{--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(1px + var(--tw-ring-offset-width)) var(--tw-ring-color)}.focus\:uf-ring-1:focus,.focus\:uf-ring-2:focus{box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:uf-ring-2:focus{--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)}.focus\:uf-ring-ring:focus{--tw-ring-color:hsl(var(--uf-ring))}.focus\:uf-ring-ring\/30:focus{--tw-ring-color:hsl(var(--uf-ring)/0.3)}.focus\:uf-ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:uf-outline-none:focus-visible{outline:2px solid transparent;outline-offset:2px}.focus-visible\:uf-ring-2: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)}.focus-visible\:uf-ring-ring:focus-visible{--tw-ring-color:hsl(var(--uf-ring))}.focus-visible\:uf-ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:uf-pointer-events-none:disabled{pointer-events:none}.disabled\:uf-cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:\!uf-bg-muted:disabled{background-color:hsl(var(--uf-muted))!important}.disabled\:uf-text-muted-foreground:disabled{color:hsl(var(--uf-muted-foreground))}.disabled\:uf-opacity-50:disabled{opacity:.5}.uf-group:hover .group-hover\:uf-text-foreground{color:hsl(var(--uf-foreground))}.data-\[disabled\]\:uf-pointer-events-none[data-disabled]{pointer-events:none}.data-\[side\=bottom\]\:uf-translate-y-1[data-side=bottom]{--tw-translate-y:0.25rem}.data-\[side\=bottom\]\:uf-translate-y-1[data-side=bottom],.data-\[side\=left\]\:uf--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))}.data-\[side\=left\]\:uf--translate-x-1[data-side=left]{--tw-translate-x:-0.25rem}.data-\[side\=right\]\:uf-translate-x-1[data-side=right]{--tw-translate-x:0.25rem}.data-\[side\=right\]\:uf-translate-x-1[data-side=right],.data-\[side\=top\]\:uf--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))}.data-\[side\=top\]\:uf--translate-y-1[data-side=top]{--tw-translate-y:-0.25rem}.data-\[state\=open\]\:uf-bg-accent[data-state=open]{background-color:hsl(var(--uf-accent))}.data-\[state\=open\]\:uf-text-muted-foreground[data-state=open]{color:hsl(var(--uf-muted-foreground))}.data-\[disabled\]\:uf-opacity-50[data-disabled]{opacity:.5}.data-\[state\=open\]\:uf-animate-in[data-state=open]{animation-name:enter;animation-duration:.15s;--tw-enter-opacity:initial;--tw-enter-scale:initial;--tw-enter-rotate:initial;--tw-enter-translate-x:initial;--tw-enter-translate-y:initial}.data-\[state\=closed\]\:uf-animate-out[data-state=closed]{animation-name:exit;animation-duration:.15s;--tw-exit-opacity:initial;--tw-exit-scale:initial;--tw-exit-rotate:initial;--tw-exit-translate-x:initial;--tw-exit-translate-y:initial}.data-\[state\=closed\]\:uf-fade-out-0[data-state=closed]{--tw-exit-opacity:0}.data-\[state\=open\]\:uf-fade-in-0[data-state=open]{--tw-enter-opacity:0}.data-\[state\=closed\]\:uf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.data-\[state\=open\]\:uf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.data-\[side\=bottom\]\:uf-slide-in-from-top-2[data-side=bottom]{--tw-enter-translate-y:-0.5rem}.data-\[side\=left\]\:uf-slide-in-from-right-2[data-side=left]{--tw-enter-translate-x:0.5rem}.data-\[side\=right\]\:uf-slide-in-from-left-2[data-side=right]{--tw-enter-translate-x:-0.5rem}.data-\[side\=top\]\:uf-slide-in-from-bottom-2[data-side=top]{--tw-enter-translate-y:0.5rem}.data-\[state\=closed\]\:uf-slide-out-to-bottom[data-state=closed]{--tw-exit-translate-y:100%}.data-\[state\=open\]\:uf-slide-in-from-bottom[data-state=open]{--tw-enter-translate-y:100%}.dark\:uf-border-zinc-700:is([class=uf-dark] *){--tw-border-opacity:1;border-color:rgb(63 63 70/var(--tw-border-opacity,1))}.dark\:uf-bg-black:is([class=uf-dark] *){--tw-bg-opacity:1;background-color:rgb(0 0 0/var(--tw-bg-opacity,1))}.dark\:uf-text-white:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.dark\:uf-text-zinc-400:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(161 161 170/var(--tw-text-opacity,1))}.dark\:hover\:uf-text-white:hover:is([class=uf-dark] *){--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}@media (min-width:640px){.sm\:uf-bottom-auto{bottom:auto}.sm\:uf-left-\[50\%\]{left:50%}.sm\:uf-right-auto{right:auto}.sm\:uf-top-\[50\%\]{top:50%}.sm\:uf-max-w-\[400px\]{max-width:400px}.sm\:uf-translate-x-\[-50\%\]{--tw-translate-x:-50%}.sm\:uf-translate-x-\[-50\%\],.sm\:uf-translate-y-\[-50\%\]{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))}.sm\:uf-translate-y-\[-50\%\]{--tw-translate-y:-50%}.sm\:uf-flex-row{flex-direction:row}.sm\:uf-justify-end{justify-content:flex-end}.sm\:uf-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)))}.sm\:uf-rounded-3xl{border-radius:1.5rem}.sm\:uf-text-left{text-align:left}.sm\:data-\[state\=closed\]\:uf-zoom-out-95[data-state=closed]{--tw-exit-scale:.95}.sm\:data-\[state\=open\]\:uf-zoom-in-95[data-state=open]{--tw-enter-scale:.95}.sm\:data-\[state\=closed\]\:uf-slide-out-to-left-1\/2[data-state=closed]{--tw-exit-translate-x:-50%}.sm\:data-\[state\=closed\]\:uf-slide-out-to-top-\[48\%\][data-state=closed]{--tw-exit-translate-y:-48%}.sm\:data-\[state\=open\]\:uf-slide-in-from-left-1\/2[data-state=open]{--tw-enter-translate-x:-50%}.sm\:data-\[state\=open\]\:uf-slide-in-from-top-\[48\%\][data-state=open]{--tw-enter-translate-y:-48%}}.\[\&\:\:-webkit-scrollbar\]\:uf-hidden::-webkit-scrollbar{display:none}.\[\&\>button\]\:uf-hidden>button{display:none}.\[\&\>span\]\:uf-line-clamp-1>span{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:1}.\[\&\>span\]\:uf-flex-1>span{flex:1 1 0%}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@unifold/connect-react",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.12",
|
|
4
4
|
"description": "Unifold Connect React - Complete React SDK with UI components for crypto deposits",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"module": "./dist/index.mjs",
|
|
@@ -24,8 +24,9 @@
|
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
26
|
"@tanstack/react-query": "^5.62.15",
|
|
27
|
-
"@unifold/
|
|
28
|
-
"@unifold/ui-react": "0.1.
|
|
27
|
+
"@unifold/core": "0.1.12",
|
|
28
|
+
"@unifold/ui-react": "0.1.12",
|
|
29
|
+
"@unifold/react-provider": "0.1.12"
|
|
29
30
|
},
|
|
30
31
|
"devDependencies": {
|
|
31
32
|
"@types/react": "^18.2.0",
|