@lifi/widget 2.0.0-beta.10 → 2.0.0-beta.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/cjs/components/Header/NavigationTabs.style.js +1 -1
- package/cjs/components/SwapInput/FormPriceHelperText.d.ts +6 -0
- package/cjs/components/SwapInput/FormPriceHelperText.js +11 -5
- package/cjs/components/SwapInput/SwapInput.d.ts +9 -1
- package/cjs/components/SwapInput/SwapInput.js +25 -9
- package/cjs/components/TokenList/TokenListItem.js +1 -1
- package/cjs/config/version.d.ts +1 -1
- package/cjs/config/version.js +1 -1
- package/cjs/hooks/useGasRecommendation.d.ts +1 -1
- package/cjs/hooks/useGasRecommendation.js +5 -0
- package/cjs/hooks/useTokens.js +21 -9
- package/cjs/i18n/id.json +24 -7
- package/cjs/i18n/it.json +38 -10
- package/cjs/i18n/pt.json +2 -2
- package/cjs/i18n/uk.json +2 -2
- package/cjs/i18n/vi.json +30 -5
- package/cjs/i18n/zh.json +26 -9
- package/cjs/types/events.d.ts +6 -6
- package/cjs/types/widget.d.ts +2 -1
- package/cjs/utils/format.d.ts +1 -1
- package/cjs/utils/format.js +13 -10
- package/components/Header/NavigationTabs.style.js +1 -1
- package/components/SwapInput/FormPriceHelperText.d.ts +6 -0
- package/components/SwapInput/FormPriceHelperText.js +8 -3
- package/components/SwapInput/SwapInput.d.ts +9 -1
- package/components/SwapInput/SwapInput.js +26 -11
- package/components/TokenList/TokenListItem.js +1 -1
- package/config/version.d.ts +1 -1
- package/config/version.js +1 -1
- package/hooks/useGasRecommendation.d.ts +1 -1
- package/hooks/useGasRecommendation.js +5 -0
- package/hooks/useTokens.js +21 -9
- package/i18n/id.json +24 -7
- package/i18n/it.json +38 -10
- package/i18n/pt.json +2 -2
- package/i18n/uk.json +2 -2
- package/i18n/vi.json +30 -5
- package/i18n/zh.json +26 -9
- package/package.json +3 -3
- package/tsconfig.cjs.tsbuildinfo +1 -1
- package/types/events.d.ts +6 -6
- package/types/widget.d.ts +2 -1
- package/utils/format.d.ts +1 -1
- package/utils/format.js +13 -10
- package/cjs/components/SwapInput/FitInputText.d.ts +0 -3
- package/cjs/components/SwapInput/FitInputText.js +0 -19
- package/components/SwapInput/FitInputText.d.ts +0 -3
- package/components/SwapInput/FitInputText.js +0 -16
|
@@ -7,7 +7,7 @@ exports.NavbarTabs = (0, styles_1.styled)(material_1.Tabs)(({ theme }) => ({
|
|
|
7
7
|
backgroundColor: theme.palette.mode === 'dark'
|
|
8
8
|
? theme.palette.common.white
|
|
9
9
|
: (0, styles_1.alpha)(theme.palette.common.black, 0.04),
|
|
10
|
-
borderRadius: theme.shape.borderRadius,
|
|
10
|
+
borderRadius: Math.max(theme.shape.borderRadius, theme.shape.borderRadiusSecondary),
|
|
11
11
|
padding: theme.spacing(0.5),
|
|
12
12
|
flex: 1,
|
|
13
13
|
display: 'flex',
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
/// <reference types="react" />
|
|
2
|
+
import type { TokenAmount } from '@lifi/sdk';
|
|
2
3
|
import type { SwapFormTypeProps } from '../../providers';
|
|
3
4
|
export declare const FormPriceHelperText: React.FC<SwapFormTypeProps>;
|
|
5
|
+
export declare const FormPriceHelperTextBase: React.FC<SwapFormTypeProps & {
|
|
6
|
+
isLoading?: boolean;
|
|
7
|
+
tokenAddress?: string;
|
|
8
|
+
token?: TokenAmount;
|
|
9
|
+
}>;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.FormPriceHelperText = void 0;
|
|
3
|
+
exports.FormPriceHelperTextBase = exports.FormPriceHelperText = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const material_1 = require("@mui/material");
|
|
6
6
|
const react_hook_form_1 = require("react-hook-form");
|
|
@@ -9,15 +9,21 @@ const hooks_1 = require("../../hooks");
|
|
|
9
9
|
const providers_1 = require("../../providers");
|
|
10
10
|
const utils_1 = require("../../utils");
|
|
11
11
|
const FormPriceHelperText = ({ formType, }) => {
|
|
12
|
-
const
|
|
13
|
-
const [amount, chainId, tokenAddress] = (0, react_hook_form_1.useWatch)({
|
|
12
|
+
const [chainId, tokenAddress] = (0, react_hook_form_1.useWatch)({
|
|
14
13
|
name: [
|
|
15
|
-
providers_1.SwapFormKeyHelper.getAmountKey(formType),
|
|
16
14
|
providers_1.SwapFormKeyHelper.getChainKey(formType),
|
|
17
15
|
providers_1.SwapFormKeyHelper.getTokenKey(formType),
|
|
18
16
|
],
|
|
19
17
|
});
|
|
20
18
|
const { token, isLoading } = (0, hooks_1.useTokenAddressBalance)(chainId, tokenAddress);
|
|
19
|
+
return ((0, jsx_runtime_1.jsx)(exports.FormPriceHelperTextBase, { formType: formType, isLoading: isLoading, tokenAddress: tokenAddress, token: token }));
|
|
20
|
+
};
|
|
21
|
+
exports.FormPriceHelperText = FormPriceHelperText;
|
|
22
|
+
const FormPriceHelperTextBase = ({ formType, isLoading, tokenAddress, token }) => {
|
|
23
|
+
const { t } = (0, react_i18next_1.useTranslation)();
|
|
24
|
+
const amount = (0, react_hook_form_1.useWatch)({
|
|
25
|
+
name: providers_1.SwapFormKeyHelper.getAmountKey(formType),
|
|
26
|
+
});
|
|
21
27
|
const fromAmountTokenPrice = (0, utils_1.formatTokenPrice)(amount, token?.priceUSD);
|
|
22
28
|
return ((0, jsx_runtime_1.jsxs)(material_1.FormHelperText, { component: "div", sx: { display: 'flex', justifyContent: 'space-between', margin: 0 }, children: [(0, jsx_runtime_1.jsx)(material_1.Typography, { color: fromAmountTokenPrice ? 'text.secondary' : 'grey.600', fontWeight: 400, fontSize: 12, marginLeft: 8, lineHeight: 1.3334, flex: 1, sx: {
|
|
23
29
|
wordBreak: 'break-word',
|
|
@@ -28,4 +34,4 @@ const FormPriceHelperText = ({ formType, }) => {
|
|
|
28
34
|
value: (0, utils_1.formatTokenAmount)(token?.amount),
|
|
29
35
|
})}` })) : null] }));
|
|
30
36
|
};
|
|
31
|
-
exports.
|
|
37
|
+
exports.FormPriceHelperTextBase = FormPriceHelperTextBase;
|
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
|
|
1
|
+
import type { Token } from '@lifi/sdk';
|
|
2
2
|
import type { BoxProps } from '@mui/material';
|
|
3
|
+
import type { ReactNode } from 'react';
|
|
3
4
|
import type { SwapFormTypeProps } from '../../providers';
|
|
4
5
|
export declare const SwapInput: React.FC<SwapFormTypeProps & BoxProps>;
|
|
6
|
+
export declare const SwapInputBase: React.FC<SwapFormTypeProps & BoxProps & {
|
|
7
|
+
token?: Token;
|
|
8
|
+
startAdornment?: ReactNode;
|
|
9
|
+
endAdornment?: ReactNode;
|
|
10
|
+
bottomAdornment?: ReactNode;
|
|
11
|
+
disabled?: boolean;
|
|
12
|
+
}>;
|
|
@@ -1,41 +1,57 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SwapInput = void 0;
|
|
3
|
+
exports.SwapInputBase = exports.SwapInput = void 0;
|
|
4
4
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
5
5
|
const react_1 = require("react");
|
|
6
6
|
const react_hook_form_1 = require("react-hook-form");
|
|
7
7
|
const react_i18next_1 = require("react-i18next");
|
|
8
|
+
const hooks_1 = require("../../hooks");
|
|
8
9
|
const providers_1 = require("../../providers");
|
|
9
10
|
const types_1 = require("../../types");
|
|
10
11
|
const utils_1 = require("../../utils");
|
|
11
12
|
const Card_1 = require("../Card");
|
|
12
|
-
const FitInputText_1 = require("./FitInputText");
|
|
13
13
|
const FormPriceHelperText_1 = require("./FormPriceHelperText");
|
|
14
14
|
const SwapInput_style_1 = require("./SwapInput.style");
|
|
15
15
|
const SwapInputEndAdornment_1 = require("./SwapInputEndAdornment");
|
|
16
16
|
const SwapInputStartAdornment_1 = require("./SwapInputStartAdornment");
|
|
17
17
|
const SwapInput = ({ formType, ...props }) => {
|
|
18
|
+
const { disabledUI } = (0, providers_1.useWidgetConfig)();
|
|
19
|
+
const [chainId, tokenAddress] = (0, react_hook_form_1.useWatch)({
|
|
20
|
+
name: [
|
|
21
|
+
providers_1.SwapFormKeyHelper.getChainKey(formType),
|
|
22
|
+
providers_1.SwapFormKeyHelper.getTokenKey(formType),
|
|
23
|
+
],
|
|
24
|
+
});
|
|
25
|
+
const { token } = (0, hooks_1.useToken)(chainId, tokenAddress);
|
|
26
|
+
const disabled = disabledUI?.includes(types_1.DisabledUI.FromAmount);
|
|
27
|
+
return ((0, jsx_runtime_1.jsx)(exports.SwapInputBase, { formType: formType, token: token, startAdornment: (0, jsx_runtime_1.jsx)(SwapInputStartAdornment_1.SwapInputStartAdornment, { formType: formType }), endAdornment: !disabled ? (0, jsx_runtime_1.jsx)(SwapInputEndAdornment_1.SwapInputEndAdornment, { formType: formType }) : undefined, bottomAdornment: (0, jsx_runtime_1.jsx)(FormPriceHelperText_1.FormPriceHelperText, { formType: formType }), disabled: disabled, ...props }));
|
|
28
|
+
};
|
|
29
|
+
exports.SwapInput = SwapInput;
|
|
30
|
+
const SwapInputBase = ({ formType, token, startAdornment, endAdornment, bottomAdornment, disabled, ...props }) => {
|
|
18
31
|
const { t } = (0, react_i18next_1.useTranslation)();
|
|
19
32
|
const amountKey = providers_1.SwapFormKeyHelper.getAmountKey(formType);
|
|
20
33
|
const { field: { onChange, onBlur, value }, } = (0, react_hook_form_1.useController)({
|
|
21
34
|
name: amountKey,
|
|
22
35
|
});
|
|
23
|
-
const { disabledUI } = (0, providers_1.useWidgetConfig)();
|
|
24
36
|
const ref = (0, react_1.useRef)(null);
|
|
25
37
|
const handleChange = (event) => {
|
|
26
38
|
const { value } = event.target;
|
|
27
|
-
const formattedAmount = (0, utils_1.formatInputAmount)(value, true);
|
|
39
|
+
const formattedAmount = (0, utils_1.formatInputAmount)(value, token?.decimals, true);
|
|
28
40
|
onChange(formattedAmount);
|
|
29
41
|
};
|
|
30
42
|
const handleBlur = (event) => {
|
|
31
43
|
const { value } = event.target;
|
|
32
|
-
const formattedAmount = (0, utils_1.formatInputAmount)(value);
|
|
44
|
+
const formattedAmount = (0, utils_1.formatInputAmount)(value, token?.decimals);
|
|
33
45
|
onChange(formattedAmount);
|
|
34
46
|
onBlur();
|
|
35
47
|
};
|
|
36
|
-
|
|
37
|
-
|
|
48
|
+
(0, react_1.useLayoutEffect)(() => {
|
|
49
|
+
if (ref.current) {
|
|
50
|
+
(0, utils_1.fitInputText)(SwapInput_style_1.maxInputFontSize, SwapInput_style_1.minInputFontSize, ref.current);
|
|
51
|
+
}
|
|
52
|
+
}, [value, ref]);
|
|
53
|
+
return ((0, jsx_runtime_1.jsxs)(Card_1.Card, { ...props, children: [(0, jsx_runtime_1.jsx)(Card_1.CardTitle, { children: t('swap.fromAmount') }), (0, jsx_runtime_1.jsxs)(SwapInput_style_1.FormControl, { fullWidth: true, children: [(0, jsx_runtime_1.jsx)(SwapInput_style_1.Input, { inputRef: ref, size: "small", autoComplete: "off", placeholder: "0", startAdornment: startAdornment, endAdornment: endAdornment, inputProps: {
|
|
38
54
|
inputMode: 'decimal',
|
|
39
|
-
}, onChange: handleChange, onBlur: handleBlur, value: value, name: amountKey, disabled: disabled, required: true }),
|
|
55
|
+
}, onChange: handleChange, onBlur: handleBlur, value: value, name: amountKey, disabled: disabled, required: true }), bottomAdornment] })] }));
|
|
40
56
|
};
|
|
41
|
-
exports.
|
|
57
|
+
exports.SwapInputBase = SwapInputBase;
|
|
@@ -30,7 +30,7 @@ const TokenListItemButton = ({ onClick, token, chain, showBalance, isBalanceLoad
|
|
|
30
30
|
setShowAddress(false);
|
|
31
31
|
}
|
|
32
32
|
};
|
|
33
|
-
return ((0, jsx_runtime_1.jsxs)(TokenList_style_1.ListItemButton, { onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, dense: true, children: [(0, jsx_runtime_1.jsx)(material_1.ListItemAvatar, { children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: token.logoURI, alt: token.symbol, children: token.symbol[0] }) }), (0, jsx_runtime_1.jsx)(material_1.ListItemText, { primary: token.symbol, secondaryTypographyProps: {
|
|
33
|
+
return ((0, jsx_runtime_1.jsxs)(TokenList_style_1.ListItemButton, { onClick: onClick, onMouseEnter: onMouseEnter, onMouseLeave: onMouseLeave, dense: true, children: [(0, jsx_runtime_1.jsx)(material_1.ListItemAvatar, { children: (0, jsx_runtime_1.jsx)(material_1.Avatar, { src: token.logoURI, alt: token.symbol, children: token.symbol?.[0] }) }), (0, jsx_runtime_1.jsx)(material_1.ListItemText, { primary: token.symbol, secondaryTypographyProps: {
|
|
34
34
|
component: 'div',
|
|
35
35
|
sx: {
|
|
36
36
|
overflow: 'auto',
|
package/cjs/config/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export declare const name = "@lifi/widget";
|
|
2
|
-
export declare const version = "2.0.0-beta.
|
|
2
|
+
export declare const version = "2.0.0-beta.12";
|
package/cjs/config/version.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { ChainId } from '@lifi/sdk';
|
|
2
|
-
export declare const useGasRecommendation: (chainId: ChainId, fromChain?: ChainId, fromToken?: string) => import("@tanstack/react-query").UseQueryResult<import("@lifi/sdk").GasRecommendationResponse, unknown>;
|
|
2
|
+
export declare const useGasRecommendation: (chainId: ChainId, fromChain?: ChainId, fromToken?: string) => import("@tanstack/react-query").UseQueryResult<import("@lifi/sdk").GasRecommendationResponse | null, unknown>;
|
|
@@ -3,10 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
3
3
|
exports.useGasRecommendation = void 0;
|
|
4
4
|
const react_query_1 = require("@tanstack/react-query");
|
|
5
5
|
const providers_1 = require("../providers");
|
|
6
|
+
const useChains_1 = require("./useChains");
|
|
6
7
|
const refetchInterval = 60000;
|
|
7
8
|
const useGasRecommendation = (chainId, fromChain, fromToken) => {
|
|
8
9
|
const lifi = (0, providers_1.useLiFi)();
|
|
10
|
+
const { chains } = (0, useChains_1.useChains)();
|
|
9
11
|
return (0, react_query_1.useQuery)(['gas-recommendation', chainId, fromChain, fromToken], async ({ queryKey: [_, chainId, fromChain, fromToken] }) => {
|
|
12
|
+
if (!chains?.some((chain) => chain.id === chainId)) {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
10
15
|
const gasRecommendation = await lifi.getGasRecommendation({
|
|
11
16
|
chainId: chainId,
|
|
12
17
|
fromChain: fromChain,
|
package/cjs/hooks/useTokens.js
CHANGED
|
@@ -8,7 +8,9 @@ const useChains_1 = require("./useChains");
|
|
|
8
8
|
const useFeaturedTokens_1 = require("./useFeaturedTokens");
|
|
9
9
|
const useTokens = (selectedChainId) => {
|
|
10
10
|
const lifi = (0, providers_1.useLiFi)();
|
|
11
|
-
const { data, isLoading
|
|
11
|
+
const { data, isLoading } = (0, react_query_1.useQuery)(['tokens'], () => lifi.getTokens(), {
|
|
12
|
+
refetchInterval: 3600000,
|
|
13
|
+
});
|
|
12
14
|
const { getChainById, isLoading: isSupportedChainsLoading } = (0, useChains_1.useChains)();
|
|
13
15
|
const featuredTokens = (0, useFeaturedTokens_1.useFeaturedTokens)(selectedChainId);
|
|
14
16
|
const { tokens: configTokens, chains: configChains } = (0, providers_1.useWidgetConfig)();
|
|
@@ -22,9 +24,18 @@ const useTokens = (selectedChainId) => {
|
|
|
22
24
|
if (!chainAllowed) {
|
|
23
25
|
return [];
|
|
24
26
|
}
|
|
25
|
-
let filteredTokens =
|
|
26
|
-
|
|
27
|
-
|
|
27
|
+
let filteredTokens = data?.tokens[selectedChainId];
|
|
28
|
+
const includedTokens = configTokens?.include?.filter((token) => token.chainId === selectedChainId);
|
|
29
|
+
if (includedTokens?.length) {
|
|
30
|
+
filteredTokens = filteredTokens
|
|
31
|
+
? [...includedTokens, ...filteredTokens]
|
|
32
|
+
: includedTokens;
|
|
33
|
+
}
|
|
34
|
+
const allowedTokens = configTokens?.allow
|
|
35
|
+
?.filter((token) => token.chainId === selectedChainId)
|
|
36
|
+
.map((token) => token.address);
|
|
37
|
+
if (allowedTokens?.length) {
|
|
38
|
+
filteredTokens = filteredTokens?.filter((token) => allowedTokens.includes(token.address));
|
|
28
39
|
}
|
|
29
40
|
const deniedTokenAddresses = configTokens?.deny
|
|
30
41
|
?.filter((token) => token.chainId === selectedChainId)
|
|
@@ -43,15 +54,16 @@ const useTokens = (selectedChainId) => {
|
|
|
43
54
|
return tokens;
|
|
44
55
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
45
56
|
}, [
|
|
46
|
-
isSupportedChainsLoading,
|
|
47
|
-
selectedChainId,
|
|
48
|
-
getChainById,
|
|
49
57
|
configChains,
|
|
50
58
|
configTokens?.allow,
|
|
51
59
|
configTokens?.deny,
|
|
52
|
-
|
|
60
|
+
configTokens?.include,
|
|
61
|
+
data?.tokens,
|
|
53
62
|
data,
|
|
54
|
-
|
|
63
|
+
featuredTokens,
|
|
64
|
+
getChainById,
|
|
65
|
+
isSupportedChainsLoading,
|
|
66
|
+
selectedChainId,
|
|
55
67
|
]);
|
|
56
68
|
return {
|
|
57
69
|
tokens,
|
package/cjs/i18n/id.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"button": {
|
|
3
3
|
"auto": "Otomatis",
|
|
4
|
+
"buy": "Beli",
|
|
5
|
+
"buyNow": "Beli sekarang",
|
|
4
6
|
"cancel": "Batal",
|
|
5
7
|
"connectWallet": "Hubungkan dompet",
|
|
6
8
|
"contactSupport": "Kontak bantuan",
|
|
@@ -23,6 +25,7 @@
|
|
|
23
25
|
"resetSettings": "Setel ulang pengaturan",
|
|
24
26
|
"restartSwap": "Mengulang kembali swap",
|
|
25
27
|
"reviewGasSwap": "Tinjau gas swap",
|
|
28
|
+
"reviewPurchase": "Tinjau pembelian",
|
|
26
29
|
"reviewSwap": "Tinjau swap",
|
|
27
30
|
"seeDetails": "Lihat rinciannya",
|
|
28
31
|
"showAll": "Tampilkan semua",
|
|
@@ -39,10 +42,14 @@
|
|
|
39
42
|
},
|
|
40
43
|
"header": {
|
|
41
44
|
"activeSwaps": "Swap aktif",
|
|
45
|
+
"bridge": "Bridge",
|
|
42
46
|
"checkout": "Checkout",
|
|
43
47
|
"from": "Swap dari",
|
|
44
48
|
"gas": "Gas",
|
|
45
49
|
"gasSwap": "Gas swap",
|
|
50
|
+
"payWith": "Bayar dengan",
|
|
51
|
+
"purchase": "Pembelian",
|
|
52
|
+
"purchaseDetails": "Detail pembelian",
|
|
46
53
|
"routes": "Anda mendapatkan",
|
|
47
54
|
"selectChain": "Pilih jaringan",
|
|
48
55
|
"selectWallet": "Pilih dompet",
|
|
@@ -75,6 +82,8 @@
|
|
|
75
82
|
"currentAmount": "Jumlah saat ini",
|
|
76
83
|
"error": {
|
|
77
84
|
"message": {
|
|
85
|
+
"allowanceRequired": "Jumlah transfer untuk {{tokenSymbol}} melebihi jatah Anda saat ini. Tingkatkan jatah Anda dan coba lagi.",
|
|
86
|
+
"insufficientFunds": "Anda tidak memiliki cukup gas untuk menutup biaya transaksi.",
|
|
78
87
|
"slippageThreshold": "Slippage lebih besar dari ambang batas yang ditentukan. Silakan minta rute baru untuk mendapatkan penawaran baru.",
|
|
79
88
|
"transactionFailed": "Silakan periksa block explorer untuk informasi lebih lanjut.",
|
|
80
89
|
"transactionNotSent": "Transaksi tidak terkirim. {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} di {{chainName}} tetap berada di dompet Anda.",
|
|
@@ -82,10 +91,12 @@
|
|
|
82
91
|
"unknown": "Silakan coba lagi atau hubungi bagian dukungan."
|
|
83
92
|
},
|
|
84
93
|
"title": {
|
|
94
|
+
"allowanceRequired": "Saldo tidak mencukupi",
|
|
85
95
|
"balanceIsTooLow": "Saldo Anda terlalu sedikit",
|
|
86
96
|
"chainSwitch": "Penggantian jaringan diperlukan",
|
|
87
97
|
"failed": "Pertukaran gagal",
|
|
88
98
|
"gasLimitIsTooLow": "Gas limit terlalu rendah",
|
|
99
|
+
"insufficientFunds": "Dana tidak mencukupi",
|
|
89
100
|
"slippageNotMet": "Kondisi slippage tidak terpenuhi",
|
|
90
101
|
"transactionCanceled": "Transaksi dibatalkan",
|
|
91
102
|
"transactionFailed": "Transaksi gagal",
|
|
@@ -108,8 +119,8 @@
|
|
|
108
119
|
"inProgress": "dalam proses",
|
|
109
120
|
"insurance": {
|
|
110
121
|
"bridgeExploits": "Malfungsi jembatan, peretasan, atau eksploitasi",
|
|
111
|
-
"insure": "Asuransikan
|
|
112
|
-
"insured": "Anda telah mengasuransikan
|
|
122
|
+
"insure": "Asuransikan <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> dalam perjalanan.",
|
|
123
|
+
"insured": "Anda telah mengasuransikan <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> dalam perjalanan:",
|
|
113
124
|
"slippageError": "Kesalahan dalam slippage untuk token yang diterima"
|
|
114
125
|
},
|
|
115
126
|
"info": {
|
|
@@ -131,7 +142,6 @@
|
|
|
131
142
|
"onChain": "di {{chainName}}",
|
|
132
143
|
"otherTokens": "Token lainnya",
|
|
133
144
|
"ownedBy": "Dimiliki oleh",
|
|
134
|
-
"payWith": "Bayar dengan",
|
|
135
145
|
"process": {
|
|
136
146
|
"crossChain": {
|
|
137
147
|
"actionRequired": "Mohon konfirmasi transaksi",
|
|
@@ -139,6 +149,9 @@
|
|
|
139
149
|
"pending": "Menunggu transaksi bridge",
|
|
140
150
|
"started": "Mempersiapkan transaksi bridge"
|
|
141
151
|
},
|
|
152
|
+
"nft": {
|
|
153
|
+
"done": "NFT dibeli"
|
|
154
|
+
},
|
|
142
155
|
"receivingChain": {
|
|
143
156
|
"done": "Bridge selesai",
|
|
144
157
|
"partial": "Bridge sebagian selesai",
|
|
@@ -165,24 +178,27 @@
|
|
|
165
178
|
"rateChange": "Perubahan rate",
|
|
166
179
|
"receiving": "Menerima",
|
|
167
180
|
"refuelStepDetails": "Dapatkan gas melalui {{tool}}",
|
|
168
|
-
"
|
|
169
|
-
"selectChain": "Jaringan",
|
|
181
|
+
"selectChain": "Pilih jaringan",
|
|
170
182
|
"selectChainAndToken": "Pilih jaringan dan token",
|
|
171
|
-
"selectToken": "
|
|
183
|
+
"selectToken": "Pilih token",
|
|
172
184
|
"sendToAddress": "Kirim ke {{address}}",
|
|
173
185
|
"sendToWallet": "Kirim ke dompet berbeda",
|
|
174
186
|
"sentToAddress": "Dikirim ke {{address}}",
|
|
175
187
|
"stepBridge": "Bridge",
|
|
188
|
+
"stepBridgeAndBuy": "Bridge dan beli",
|
|
176
189
|
"stepDetails": "{{tool}} melalui LI.FI",
|
|
177
190
|
"stepSwap": "Swap",
|
|
178
191
|
"stepSwapAndBridge": "Swap dan bridge",
|
|
192
|
+
"stepSwapAndBuy": "Swap dan beli",
|
|
179
193
|
"success": {
|
|
180
194
|
"message": {
|
|
181
195
|
"swapPartiallySuccessful": "Kami telah mencoba menyelesaikan pertukaran, tetapi {{tool}} kehabisan likuiditas untuk token {{tokenSymbol}}.",
|
|
196
|
+
"purchaseSuccessful": "Anda sekarang memiliki {{assetName}} di dompet {{walletAddress}} di chain {{chainName}}.",
|
|
182
197
|
"swapSuccessful": "Sekarang ada {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} di dompet {{walletAddress}} pada jaringan {{chainName}}."
|
|
183
198
|
},
|
|
184
199
|
"title": {
|
|
185
200
|
"gasSwapSuccessful": "Pertukaran gas berhasil",
|
|
201
|
+
"purchaseSuccessful": "Pembelian berhasil",
|
|
186
202
|
"refundIssued": "Pengembalian dana diterbitkan",
|
|
187
203
|
"swapPartiallySuccessful": "Swap sebagian berhasil",
|
|
188
204
|
"swapSuccessful": "Swap berhasil"
|
|
@@ -203,7 +219,7 @@
|
|
|
203
219
|
"to": "Kepada",
|
|
204
220
|
"tokenOnChain": "{{tokenSymbol}} di {{chainName}}",
|
|
205
221
|
"tokenOnChainAmount": "{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} di {{chainName}}",
|
|
206
|
-
"tokenSearch": "Cari token",
|
|
222
|
+
"tokenSearch": "Cari berdasarkan nama atau alamat token",
|
|
207
223
|
"valueLoss": "Kehilangan nilai",
|
|
208
224
|
"walletAddressOrEns": "Alamat dompet atau nama ENS",
|
|
209
225
|
"warning": {
|
|
@@ -237,6 +253,7 @@
|
|
|
237
253
|
},
|
|
238
254
|
"numberOfSteps": "Sejumlah langkah swap. Setiap langkah dapat berisi 1-2 transaksi yang memerlukan tanda tangan.",
|
|
239
255
|
"progressToNextUpdate": "Data yang ditampilkan akan disegarkan secara otomatis setelah {{value}} detik. Klik di sini untuk memperbarui secara manual.",
|
|
256
|
+
"recommended": "Rute murah yang menyeimbangkan kerumitan dan kemudahan penggunaan.",
|
|
240
257
|
"settingsModified": "Pengaturan (diubah)"
|
|
241
258
|
},
|
|
242
259
|
"wallet": {
|
package/cjs/i18n/it.json
CHANGED
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"button": {
|
|
3
3
|
"auto": "Auto",
|
|
4
|
+
"buy": "Acquista",
|
|
5
|
+
"buyNow": "Acquista subito",
|
|
4
6
|
"cancel": "Annulla",
|
|
5
7
|
"connectWallet": "Collega il portafoglio",
|
|
6
8
|
"contactSupport": "Contatta l'assistenza",
|
|
@@ -12,6 +14,7 @@
|
|
|
12
14
|
"done": "Fatto",
|
|
13
15
|
"getGas": "Ottieni gas",
|
|
14
16
|
"hide": "Nascondi",
|
|
17
|
+
"learnMore": "Ulteriori informazioni",
|
|
15
18
|
"lifiSwap": "Scambio LI.FI",
|
|
16
19
|
"light": "Chiaro",
|
|
17
20
|
"max": "massimo",
|
|
@@ -22,6 +25,7 @@
|
|
|
22
25
|
"resetSettings": "Ripristina impostazioni",
|
|
23
26
|
"restartSwap": "Riavvia lo scambio",
|
|
24
27
|
"reviewGasSwap": "Rivedi lo scambio di gas",
|
|
28
|
+
"reviewPurchase": "Rivedi acquisto",
|
|
25
29
|
"reviewSwap": "Rivedi lo scambio",
|
|
26
30
|
"seeDetails": "Vedi dettagli",
|
|
27
31
|
"showAll": "Mostra tutto",
|
|
@@ -29,6 +33,7 @@
|
|
|
29
33
|
"startSwap": "Avvia lo scambio",
|
|
30
34
|
"swap": "Scambio",
|
|
31
35
|
"tryAgain": "Riprova",
|
|
36
|
+
"viewCoverage": "Vedi copertura",
|
|
32
37
|
"viewOnExplorer": "Visualizza sull'Explorer"
|
|
33
38
|
},
|
|
34
39
|
"format": {
|
|
@@ -37,10 +42,14 @@
|
|
|
37
42
|
},
|
|
38
43
|
"header": {
|
|
39
44
|
"activeSwaps": "Scambi attivi",
|
|
45
|
+
"bridge": "Bridge",
|
|
40
46
|
"checkout": "Checkout",
|
|
41
47
|
"from": "Scambia da",
|
|
42
48
|
"gas": "Gas",
|
|
43
49
|
"gasSwap": "Scambio di gas",
|
|
50
|
+
"payWith": "Paga con",
|
|
51
|
+
"purchase": "Acquista",
|
|
52
|
+
"purchaseDetails": "Dettagli di acquisto",
|
|
44
53
|
"routes": "Ottieni",
|
|
45
54
|
"selectChain": "Seleziona la chain",
|
|
46
55
|
"selectWallet": "Seleziona il tuo portafoglio",
|
|
@@ -73,6 +82,8 @@
|
|
|
73
82
|
"currentAmount": "Quantità corrente",
|
|
74
83
|
"error": {
|
|
75
84
|
"message": {
|
|
85
|
+
"allowanceRequired": "L'importo di {{tokenSymbol}} supera la tua quota massima permessa. Aumenta la quota e riprova.",
|
|
86
|
+
"insufficientFunds": "Non hai abbastanza gas per coprire il costo della transazione.",
|
|
76
87
|
"slippageThreshold": "Lo slittamento di prezzo è più alto della soglia definita. Si prega di richiedere una nuova route per ottenere una quota aggiornata.",
|
|
77
88
|
"transactionFailed": "Per ulteriori informazioni, consultare il block explorer.",
|
|
78
89
|
"transactionNotSent": "La transazione non è stata inviata. {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} su {{chainName}} sono ancora presenti nel tuo portafoglio.",
|
|
@@ -80,10 +91,12 @@
|
|
|
80
91
|
"unknown": "Riprova o contatta il nostro supporto."
|
|
81
92
|
},
|
|
82
93
|
"title": {
|
|
94
|
+
"allowanceRequired": "Quota massima insufficiente",
|
|
83
95
|
"balanceIsTooLow": "Il saldo è troppo basso",
|
|
84
96
|
"chainSwitch": "È necessario cambiare la chain",
|
|
85
97
|
"failed": "Scambio fallito",
|
|
86
98
|
"gasLimitIsTooLow": "Limite di gas troppo basso",
|
|
99
|
+
"insufficientFunds": "Fondi insufficienti",
|
|
87
100
|
"slippageNotMet": "Condizioni di slittamento di prezzo non rispettate",
|
|
88
101
|
"transactionCanceled": "Transazione cancellata",
|
|
89
102
|
"transactionFailed": "Transazione fallita",
|
|
@@ -104,6 +117,12 @@
|
|
|
104
117
|
"gasFeeEstimated": "tassa di gas stimata",
|
|
105
118
|
"gasFeePaid": "tassa di gas pagata",
|
|
106
119
|
"inProgress": "in corso",
|
|
120
|
+
"insurance": {
|
|
121
|
+
"bridgeExploits": "Malfunzionamenti, hack o exploit di bridge",
|
|
122
|
+
"insure": "Assicura <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> in transito.",
|
|
123
|
+
"insured": "Hai assicurato <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> in transito:",
|
|
124
|
+
"slippageError": "Errore nello slippage dei token ricevuti"
|
|
125
|
+
},
|
|
107
126
|
"info": {
|
|
108
127
|
"message": {
|
|
109
128
|
"autoRefuel": "Livello basso di gas su {{chainName}}. Continuando avrai abbastanza gas per completare lo scambio.",
|
|
@@ -123,7 +142,6 @@
|
|
|
123
142
|
"onChain": "su {{chainName}}",
|
|
124
143
|
"otherTokens": "Altri token",
|
|
125
144
|
"ownedBy": "Di proprietà di",
|
|
126
|
-
"payWith": "Paga con",
|
|
127
145
|
"process": {
|
|
128
146
|
"crossChain": {
|
|
129
147
|
"actionRequired": "Si prega di firmare la transazione",
|
|
@@ -131,6 +149,9 @@
|
|
|
131
149
|
"pending": "In attesa della transazione di bridge",
|
|
132
150
|
"started": "Preparazione della transazione di bridge"
|
|
133
151
|
},
|
|
152
|
+
"nft": {
|
|
153
|
+
"done": "NFT acquistati"
|
|
154
|
+
},
|
|
134
155
|
"receivingChain": {
|
|
135
156
|
"done": "Bridge completato",
|
|
136
157
|
"partial": "Bridge parzialmente completato",
|
|
@@ -157,24 +178,27 @@
|
|
|
157
178
|
"rateChange": "Tasso di scambio",
|
|
158
179
|
"receiving": "In ricezione",
|
|
159
180
|
"refuelStepDetails": "Ottieni gas tramite {{tool}}",
|
|
160
|
-
"
|
|
161
|
-
"selectChain": "Chain",
|
|
181
|
+
"selectChain": "Seleziona la chain",
|
|
162
182
|
"selectChainAndToken": "Selezionare la chain ed il token",
|
|
163
|
-
"selectToken": "
|
|
183
|
+
"selectToken": "Seleziona un token",
|
|
164
184
|
"sendToAddress": "Invia a {{address}}",
|
|
165
185
|
"sendToWallet": "Invia ad un altro portafoglio",
|
|
166
186
|
"sentToAddress": "Inviati a {{address}}",
|
|
167
187
|
"stepBridge": "Bridge",
|
|
188
|
+
"stepBridgeAndBuy": "Trasferisci e acquista",
|
|
168
189
|
"stepDetails": "{{tool}} tramite LI.FI",
|
|
169
190
|
"stepSwap": "Scambio",
|
|
170
191
|
"stepSwapAndBridge": "Scambia e bridge",
|
|
192
|
+
"stepSwapAndBuy": "Scambia e acquista",
|
|
171
193
|
"success": {
|
|
172
194
|
"message": {
|
|
173
195
|
"swapPartiallySuccessful": "Abbiamo provato a completare lo scambio, ma {{tool}} ha terminato la liquidità per {{tokenSymbol}} token.",
|
|
196
|
+
"purchaseSuccessful": "Ora possiedi {{assetName}} nel wallet {{walletAddress}} sulla chain {{chainName}}.",
|
|
174
197
|
"swapSuccessful": "Sono presenti ora {{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} nel portafoglio {{walletAddress}} sulla chain {{chainName}}."
|
|
175
198
|
},
|
|
176
199
|
"title": {
|
|
177
200
|
"gasSwapSuccessful": "Scambio di swap avvenuto con successo",
|
|
201
|
+
"purchaseSuccessful": "Acquisto completato",
|
|
178
202
|
"refundIssued": "Rimborso inviato",
|
|
179
203
|
"swapPartiallySuccessful": "Scambio parzialmente completato con successo",
|
|
180
204
|
"swapSuccessful": "Scambio completato con successo"
|
|
@@ -184,16 +208,18 @@
|
|
|
184
208
|
"swapStepDetails": "Scambio su {{chain}} tramite {{tool}}.",
|
|
185
209
|
"swapping": "In fase di scambio",
|
|
186
210
|
"tags": {
|
|
187
|
-
"
|
|
188
|
-
"
|
|
189
|
-
"
|
|
190
|
-
"
|
|
191
|
-
"
|
|
211
|
+
"cheapest": "Economico",
|
|
212
|
+
"fastest": "Veloce",
|
|
213
|
+
"insurable": "Assicurabile",
|
|
214
|
+
"insurance": "Assicurazione",
|
|
215
|
+
"insured": "Assicurato",
|
|
216
|
+
"recommended": "Consigliato",
|
|
217
|
+
"safest": "Sicuro"
|
|
192
218
|
},
|
|
193
219
|
"to": "A",
|
|
194
220
|
"tokenOnChain": "{{tokenSymbol}} su {{chainName}}",
|
|
195
221
|
"tokenOnChainAmount": "{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}} su {{chainName}}",
|
|
196
|
-
"tokenSearch": "Cerca
|
|
222
|
+
"tokenSearch": "Cerca per nome token o indirizzo",
|
|
197
223
|
"valueLoss": "Perdita di valore",
|
|
198
224
|
"walletAddressOrEns": "Indirizzo del portafoglio o nome ENS",
|
|
199
225
|
"warning": {
|
|
@@ -218,6 +244,7 @@
|
|
|
218
244
|
}
|
|
219
245
|
},
|
|
220
246
|
"tooltip": {
|
|
247
|
+
"additionalProviderFee": "Bridge aggiuntivi, DEX e spese di servizio.",
|
|
221
248
|
"estimatedNetworkFee": "Costo di rete stimato.",
|
|
222
249
|
"estimatedTime": "Tempo di esecuzione dello scambio stimato in minuti.",
|
|
223
250
|
"notFound": {
|
|
@@ -226,6 +253,7 @@
|
|
|
226
253
|
},
|
|
227
254
|
"numberOfSteps": "Una serie di fasi di scambio. Ogni fase può contenere 1-3 transazioni che richiedono una firma.",
|
|
228
255
|
"progressToNextUpdate": "I dati visualizzati si aggiorneranno automaticamente dopo {{value}} secondi. Fai click qui per aggiornare manualmente.",
|
|
256
|
+
"recommended": "Una rotta economica che equilibra complessità e facilità di utilizzo.",
|
|
229
257
|
"settingsModified": "Impostazioni (modificate)"
|
|
230
258
|
},
|
|
231
259
|
"wallet": {
|
package/cjs/i18n/pt.json
CHANGED
|
@@ -119,8 +119,8 @@
|
|
|
119
119
|
"inProgress": "em andamento",
|
|
120
120
|
"insurance": {
|
|
121
121
|
"bridgeExploits": "Mau funcionamento da ponte, hacks ou exploits",
|
|
122
|
-
"insure": "
|
|
123
|
-
"insured": "Você
|
|
122
|
+
"insure": "Contratar seguro para <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> em trânsito.",
|
|
123
|
+
"insured": "Você contratou seguro para <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> em trânsito:",
|
|
124
124
|
"slippageError": "Erro na discrepância para tokens recebidos"
|
|
125
125
|
},
|
|
126
126
|
"info": {
|
package/cjs/i18n/uk.json
CHANGED
|
@@ -119,8 +119,8 @@
|
|
|
119
119
|
"inProgress": "в процесі",
|
|
120
120
|
"insurance": {
|
|
121
121
|
"bridgeExploits": "Збої в роботі бриджу, зломи чи експлойти",
|
|
122
|
-
"insure": "Застрахуйте
|
|
123
|
-
"insured": "Ви застрахували
|
|
122
|
+
"insure": "Застрахуйте <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> токенів транзакції.",
|
|
123
|
+
"insured": "Ви застрахували <strong>{{amount, number(maximumFractionDigits: 9)}} {{tokenSymbol}}</strong> токенів транзакції:",
|
|
124
124
|
"slippageError": "Помилка в прослизанні для отриманих токенів"
|
|
125
125
|
},
|
|
126
126
|
"info": {
|