@lifi/widget 3.24.0-alpha.0 → 3.24.0
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/CHANGELOG.md +23 -0
- package/README.md +10 -6
- package/dist/esm/components/Header/Header.style.js +1 -0
- package/dist/esm/components/Header/Header.style.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCard.js +3 -3
- package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
- package/dist/esm/components/RouteCard/RouteCardEssentials.js +5 -5
- package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
- package/dist/esm/components/Step/CircularProgress.style.js +22 -17
- package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
- package/dist/esm/components/StepActions/StepActions.js +3 -3
- package/dist/esm/components/TokenList/TokenList.js +2 -2
- package/dist/esm/components/TokenList/TokenList.js.map +1 -1
- package/dist/esm/components/TransactionDetails.js +7 -7
- package/dist/esm/components/TransactionDetails.js.map +1 -1
- package/dist/esm/config/version.d.ts +1 -1
- package/dist/esm/config/version.js +1 -1
- package/dist/esm/config/version.js.map +1 -1
- package/dist/esm/hooks/useTokenBalances.d.ts +2 -1
- package/dist/esm/hooks/useTokenBalances.js +2 -2
- package/dist/esm/hooks/useTokenBalances.js.map +1 -1
- package/dist/esm/hooks/useTokenSearch.d.ts +2 -1
- package/dist/esm/hooks/useTokenSearch.js +7 -2
- package/dist/esm/hooks/useTokenSearch.js.map +1 -1
- package/dist/esm/hooks/useTokens.d.ts +2 -1
- package/dist/esm/hooks/useTokens.js +6 -13
- package/dist/esm/hooks/useTokens.js.map +1 -1
- package/dist/esm/index.d.ts +1 -0
- package/dist/esm/index.js +1 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js +18 -7
- package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +4 -4
- package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
- package/dist/esm/types/widget.d.ts +2 -0
- package/dist/esm/utils/item.d.ts +7 -2
- package/dist/esm/utils/item.js +10 -3
- package/dist/esm/utils/item.js.map +1 -1
- package/package.json +14 -14
- package/package.json.tmp +13 -13
- package/src/components/Header/Header.style.ts +1 -0
- package/src/components/RouteCard/RouteCard.tsx +3 -3
- package/src/components/RouteCard/RouteCardEssentials.tsx +5 -5
- package/src/components/Step/CircularProgress.style.tsx +25 -17
- package/src/components/StepActions/StepActions.tsx +3 -3
- package/src/components/TokenList/TokenList.tsx +7 -2
- package/src/components/TransactionDetails.tsx +8 -8
- package/src/config/version.ts +1 -1
- package/src/hooks/useTokenBalances.ts +9 -3
- package/src/hooks/useTokenSearch.ts +11 -2
- package/src/hooks/useTokens.ts +10 -21
- package/src/index.ts +1 -0
- package/src/pages/TransactionPage/StatusBottomSheet.style.tsx +19 -11
- package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +4 -4
- package/src/types/widget.ts +2 -0
- package/src/utils/item.ts +29 -4
package/dist/esm/index.d.ts
CHANGED
|
@@ -25,6 +25,7 @@ export * from './types/events.js';
|
|
|
25
25
|
export type { TokenAmount } from './types/token.js';
|
|
26
26
|
export * from './types/widget.js';
|
|
27
27
|
export { getPriceImpact } from './utils/getPriceImpact.js';
|
|
28
|
+
export * from './utils/format.js';
|
|
28
29
|
export { percentFormatter } from './utils/percentFormatter.js';
|
|
29
30
|
export { compactNumberFormatter } from './utils/compactNumberFormatter.js';
|
|
30
31
|
export { currencyExtendedFormatter } from './utils/currencyExtendedFormatter.js';
|
package/dist/esm/index.js
CHANGED
|
@@ -22,6 +22,7 @@ export * from './themes/types.js';
|
|
|
22
22
|
export * from './types/events.js';
|
|
23
23
|
export * from './types/widget.js';
|
|
24
24
|
export { getPriceImpact } from './utils/getPriceImpact.js';
|
|
25
|
+
export * from './utils/format.js';
|
|
25
26
|
export { percentFormatter } from './utils/percentFormatter.js';
|
|
26
27
|
export { compactNumberFormatter } from './utils/compactNumberFormatter.js';
|
|
27
28
|
export { currencyExtendedFormatter } from './utils/currencyExtendedFormatter.js';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA;AAE5C,cAAc,6CAA6C,CAAA;AAC3D,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,yCAAyC,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC1E,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,cAAc,6BAA6B,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AACvD,OAAO,EAAE,GAAG,IAAI,UAAU,EAAE,MAAM,UAAU,CAAA;AAE5C,cAAc,6CAA6C,CAAA;AAC3D,cAAc,2CAA2C,CAAA;AACzD,cAAc,+CAA+C,CAAA;AAC7D,cAAc,6CAA6C,CAAA;AAC3D,cAAc,yCAAyC,CAAA;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,cAAc,qBAAqB,CAAA;AACnC,OAAO,EAAE,kBAAkB,EAAE,MAAM,+BAA+B,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAA;AAC1E,cAAc,wBAAwB,CAAA;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,iCAAiC,CAAA;AAChE,cAAc,6BAA6B,CAAA;AAC3C,OAAO,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAA;AACxD,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAA;AAClE,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,cAAc,sBAAsB,CAAA;AACpC,cAAc,mBAAmB,CAAA;AACjC,cAAc,mBAAmB,CAAA;AAEjC,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAA;AAC1D,cAAc,mBAAmB,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAA;AAC1E,OAAO,EAAE,yBAAyB,EAAE,MAAM,sCAAsC,CAAA;AAChF,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA"}
|
|
@@ -6,13 +6,15 @@ const getStatusColor = (status, theme) => {
|
|
|
6
6
|
return {
|
|
7
7
|
color: theme.vars.palette.success.mainChannel,
|
|
8
8
|
alpha: 0.12,
|
|
9
|
-
|
|
9
|
+
lightDarken: 0,
|
|
10
|
+
darkDarken: 0,
|
|
10
11
|
};
|
|
11
12
|
case RouteExecutionStatus.Failed:
|
|
12
13
|
return {
|
|
13
14
|
color: theme.vars.palette.error.mainChannel,
|
|
14
15
|
alpha: 0.12,
|
|
15
|
-
|
|
16
|
+
lightDarken: 0,
|
|
17
|
+
darkDarken: 0,
|
|
16
18
|
};
|
|
17
19
|
case RouteExecutionStatus.Done | RouteExecutionStatus.Partial:
|
|
18
20
|
case RouteExecutionStatus.Done | RouteExecutionStatus.Refunded:
|
|
@@ -20,13 +22,15 @@ const getStatusColor = (status, theme) => {
|
|
|
20
22
|
return {
|
|
21
23
|
color: theme.vars.palette.warning.mainChannel,
|
|
22
24
|
alpha: 0.48,
|
|
23
|
-
|
|
25
|
+
lightDarken: 0.32,
|
|
26
|
+
darkDarken: 0,
|
|
24
27
|
};
|
|
25
28
|
default:
|
|
26
29
|
return {
|
|
27
30
|
color: theme.vars.palette.primary.mainChannel,
|
|
28
31
|
alpha: 0.12,
|
|
29
|
-
|
|
32
|
+
lightDarken: 0,
|
|
33
|
+
darkDarken: 0,
|
|
30
34
|
};
|
|
31
35
|
}
|
|
32
36
|
};
|
|
@@ -38,9 +42,9 @@ export const CenterContainer = styled(Box)(() => ({
|
|
|
38
42
|
export const IconCircle = styled(Box, {
|
|
39
43
|
shouldForwardProp: (prop) => prop !== 'status',
|
|
40
44
|
})(({ theme, status }) => {
|
|
41
|
-
const
|
|
45
|
+
const statusConfig = getStatusColor(status, theme);
|
|
42
46
|
return {
|
|
43
|
-
backgroundColor: `rgba(${color} / ${
|
|
47
|
+
backgroundColor: `rgba(${statusConfig.color} / ${statusConfig.alpha})`,
|
|
44
48
|
borderRadius: '50%',
|
|
45
49
|
width: 72,
|
|
46
50
|
height: 72,
|
|
@@ -48,10 +52,17 @@ export const IconCircle = styled(Box, {
|
|
|
48
52
|
position: 'relative',
|
|
49
53
|
placeItems: 'center',
|
|
50
54
|
'& > svg': {
|
|
51
|
-
color: `color-mix(in srgb, rgb(${color}) ${(1 -
|
|
55
|
+
color: `color-mix(in srgb, rgb(${statusConfig.color}) ${(1 - statusConfig.lightDarken) * 100}%, black)`,
|
|
52
56
|
width: 36,
|
|
53
57
|
height: 36,
|
|
54
58
|
},
|
|
59
|
+
...theme.applyStyles('dark', {
|
|
60
|
+
'& > svg': {
|
|
61
|
+
color: `color-mix(in srgb, rgb(${statusConfig.color}) ${(1 - statusConfig.darkDarken) * 100}%, black)`,
|
|
62
|
+
width: 36,
|
|
63
|
+
height: 36,
|
|
64
|
+
},
|
|
65
|
+
}),
|
|
55
66
|
};
|
|
56
67
|
});
|
|
57
68
|
//# sourceMappingURL=StatusBottomSheet.style.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"StatusBottomSheet.style.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.style.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAInE,MAAM,cAAc,GAAG,CAAC,MAAmB,EAAE,KAAY,EAAE,EAAE;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,IAAI;YAC5B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBAC7C,KAAK,EAAE,IAAI;gBACX,
|
|
1
|
+
{"version":3,"file":"StatusBottomSheet.style.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/StatusBottomSheet.style.tsx"],"names":[],"mappings":"AACA,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,eAAe,CAAA;AAC3C,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAA;AAInE,MAAM,cAAc,GAAG,CAAC,MAAmB,EAAE,KAAY,EAAE,EAAE;IAC3D,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,oBAAoB,CAAC,IAAI;YAC5B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBAC7C,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;aACd,CAAA;QACH,KAAK,oBAAoB,CAAC,MAAM;YAC9B,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW;gBAC3C,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;aACd,CAAA;QACH,KAAK,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,OAAO,CAAC;QAC9D,KAAK,oBAAoB,CAAC,IAAI,GAAG,oBAAoB,CAAC,QAAQ,CAAC;QAC/D,KAAK,SAAS;YACZ,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBAC7C,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,IAAI;gBACjB,UAAU,EAAE,CAAC;aACd,CAAA;QACH;YACE,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBAC7C,KAAK,EAAE,IAAI;gBACX,WAAW,EAAE,CAAC;gBACd,UAAU,EAAE,CAAC;aACd,CAAA;IACL,CAAC;AACH,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAChD,OAAO,EAAE,MAAM;IACf,UAAU,EAAE,QAAQ;IACpB,QAAQ,EAAE,UAAU;CACrB,CAAC,CAAC,CAAA;AAEH,MAAM,CAAC,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,EAAE;IACpC,iBAAiB,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ;CAC/C,CAAC,CAA0B,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,EAAE;IAChD,MAAM,YAAY,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAElD,OAAO;QACL,eAAe,EAAE,QAAQ,YAAY,CAAC,KAAK,MAAM,YAAY,CAAC,KAAK,GAAG;QACtE,YAAY,EAAE,KAAK;QACnB,KAAK,EAAE,EAAE;QACT,MAAM,EAAE,EAAE;QACV,OAAO,EAAE,MAAM;QACf,QAAQ,EAAE,UAAU;QACpB,UAAU,EAAE,QAAQ;QACpB,SAAS,EAAE;YACT,KAAK,EAAE,0BAA0B,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,WAAW,CAAC,GAAG,GAAG,WAAW;YACvG,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;QACD,GAAG,KAAK,CAAC,WAAW,CAAC,MAAM,EAAE;YAC3B,SAAS,EAAE;gBACT,KAAK,EAAE,0BAA0B,YAAY,CAAC,KAAK,KAAK,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,GAAG,GAAG,WAAW;gBACtG,KAAK,EAAE,EAAE;gBACT,MAAM,EAAE,EAAE;aACX;SACF,CAAC;KACH,CAAA;AACH,CAAC,CAAC,CAAA"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
-
import {
|
|
2
|
+
import { isGaslessStep } from '@lifi/sdk';
|
|
3
3
|
import WarningRounded from '@mui/icons-material/WarningRounded';
|
|
4
4
|
import { Box, Button, Typography } from '@mui/material';
|
|
5
5
|
import { forwardRef, useRef } from 'react';
|
|
@@ -25,7 +25,7 @@ const TokenValueBottomSheetContent = ({ route, onCancel, onContinue, }) => {
|
|
|
25
25
|
const { gasCosts, feeCosts, gasCostUSD, feeCostUSD } = getAccumulatedFeeCostsBreakdown(route);
|
|
26
26
|
const fromAmountUSD = Number.parseFloat(route.fromAmountUSD);
|
|
27
27
|
const toAmountUSD = Number.parseFloat(route.toAmountUSD);
|
|
28
|
-
const
|
|
28
|
+
const hasGaslessSupport = route.steps.some(isGaslessStep);
|
|
29
29
|
return (_jsxs(Box, { ref: ref, sx: {
|
|
30
30
|
p: 3,
|
|
31
31
|
}, children: [_jsxs(CenterContainer, { children: [_jsx(IconCircle, { status: "warning", mb: 1, children: _jsx(WarningRounded, { color: "warning" }) }), _jsx(Typography, { sx: {
|
|
@@ -44,9 +44,9 @@ const TokenValueBottomSheetContent = ({ route, onCancel, onContinue, }) => {
|
|
|
44
44
|
display: 'flex',
|
|
45
45
|
justifyContent: 'space-between',
|
|
46
46
|
mt: 0.25,
|
|
47
|
-
}, children: [_jsx(Typography, { children: t('main.fees.network') }), _jsx(FeeBreakdownTooltip, { gasCosts: gasCosts, relayerSupport:
|
|
47
|
+
}, children: [_jsx(Typography, { children: t('main.fees.network') }), _jsx(FeeBreakdownTooltip, { gasCosts: gasCosts, relayerSupport: hasGaslessSupport, children: _jsx(Typography, { sx: {
|
|
48
48
|
fontWeight: 600,
|
|
49
|
-
}, children:
|
|
49
|
+
}, children: hasGaslessSupport
|
|
50
50
|
? t('main.fees.free')
|
|
51
51
|
: t('format.currency', { value: gasCostUSD }) }) })] }), feeCostUSD ? (_jsxs(Box, { sx: {
|
|
52
52
|
display: 'flex',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TokenValueBottomSheet.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"names":[],"mappings":";AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAA;AACzC,OAAO,cAAc,MAAM,oCAAoC,CAAA;AAC/D,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAEvD,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,eAAe,CAAA;AAC9C,OAAO,EAAE,WAAW,EAAE,MAAM,6CAA6C,CAAA;AAEzE,OAAO,EAAE,mBAAmB,EAAE,MAAM,yCAAyC,CAAA;AAC7E,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,+BAA+B,EAAE,MAAM,qBAAqB,CAAA;AACrE,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAA;AAC1E,OAAO,EAAE,4BAA4B,EAAE,MAAM,YAAY,CAAA;AAQzD,MAAM,CAAC,MAAM,qBAAqB,GAAG,UAAU,CAG7C,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;IACzC,MAAM,YAAY,GAAG,GAAG,EAAE;QACxB,CAAC;QAAC,GAAkC,CAAC,OAAO,EAAE,KAAK,EAAE,CAAA;QACrD,QAAQ,EAAE,EAAE,CAAA;IACd,CAAC,CAAA;IAED,OAAO,CACL,KAAC,WAAW,IAAC,GAAG,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,YACtC,KAAC,4BAA4B,IAC3B,KAAK,EAAE,KAAK,EACZ,UAAU,EAAE,UAAU,EACtB,QAAQ,EAAE,YAAY,GACtB,GACU,CACf,CAAA;AACH,CAAC,CAAC,CAAA;AAEF,MAAM,4BAA4B,GAAyC,CAAC,EAC1E,KAAK,EACL,QAAQ,EACR,UAAU,GACX,EAAE,EAAE;IACH,MAAM,EAAE,CAAC,EAAE,GAAG,cAAc,EAAE,CAAA;IAC9B,MAAM,GAAG,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IACrC,mBAAmB,CAAC,GAAG,CAAC,CAAA;IACxB,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,UAAU,EAAE,UAAU,EAAE,GAClD,+BAA+B,CAAC,KAAK,CAAC,CAAA;IACxC,MAAM,aAAa,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;IAC5D,MAAM,WAAW,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;IACxD,MAAM,iBAAiB,GAAG,KAAK,CAAC,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"TokenValueBottomSheet.js","sourceRoot":"","sources":["../../../../src/pages/TransactionPage/TokenValueBottomSheet.tsx"],"names":[],"mappings":"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"}
|
|
@@ -160,6 +160,8 @@ export type WidgetTokens = {
|
|
|
160
160
|
featured?: StaticToken[];
|
|
161
161
|
include?: Token[];
|
|
162
162
|
popular?: StaticToken[];
|
|
163
|
+
from?: AllowDeny<BaseToken>;
|
|
164
|
+
to?: AllowDeny<BaseToken>;
|
|
163
165
|
} & AllowDeny<BaseToken>;
|
|
164
166
|
export type WidgetLanguages = {
|
|
165
167
|
default?: LanguageKey;
|
package/dist/esm/utils/item.d.ts
CHANGED
|
@@ -1,2 +1,7 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { BaseToken } from '@lifi/sdk';
|
|
2
|
+
import type { FormType } from '../stores/form/types.js';
|
|
3
|
+
import type { AllowDeny, WidgetTokens } from '../types/widget.js';
|
|
4
|
+
type IncludesFn<T> = (list: T[], item: T) => boolean;
|
|
5
|
+
export declare const isItemAllowed: <T>(item: T, items?: AllowDeny<T>, includes?: IncludesFn<T>) => boolean;
|
|
6
|
+
export declare const isTokenAllowed: (token: BaseToken, configTokens: WidgetTokens | undefined, formType: FormType | undefined) => boolean;
|
|
7
|
+
export {};
|
package/dist/esm/utils/item.js
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
|
-
export const isItemAllowed = (
|
|
1
|
+
export const isItemAllowed = (item, items, includes = (list, val) => list.includes(val)) => {
|
|
2
2
|
if (items?.allow?.length) {
|
|
3
|
-
return items.allow
|
|
3
|
+
return includes(items.allow, item);
|
|
4
4
|
}
|
|
5
|
-
return !items?.deny
|
|
5
|
+
return !includes(items?.deny ?? [], item);
|
|
6
|
+
};
|
|
7
|
+
const tokenIncludes = (list, item) => list.some((t) => t.address === item.address && t.chainId === item.chainId);
|
|
8
|
+
export const isTokenAllowed = (token, configTokens, formType) => {
|
|
9
|
+
return (isItemAllowed(token, configTokens, tokenIncludes) &&
|
|
10
|
+
(formType
|
|
11
|
+
? isItemAllowed(token, configTokens?.[formType], tokenIncludes)
|
|
12
|
+
: true));
|
|
6
13
|
};
|
|
7
14
|
//# sourceMappingURL=item.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/utils/item.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"item.js","sourceRoot":"","sources":["../../../src/utils/item.ts"],"names":[],"mappings":"AAMA,MAAM,CAAC,MAAM,aAAa,GAAG,CAC3B,IAAO,EACP,KAAoB,EACpB,WAA0B,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAClD,EAAE;IACX,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,QAAQ,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;IACpC,CAAC;IAED,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,EAAE,IAAI,CAAC,CAAA;AAC3C,CAAC,CAAA;AAED,MAAM,aAAa,GAAG,CAAC,IAAiB,EAAE,IAAe,EAAE,EAAE,CAC3D,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,IAAI,CAAC,CAAC,OAAO,KAAK,IAAI,CAAC,OAAO,CAAC,CAAA;AAE5E,MAAM,CAAC,MAAM,cAAc,GAAG,CAC5B,KAAgB,EAChB,YAAsC,EACtC,QAA8B,EAC9B,EAAE;IACF,OAAO,CACL,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,aAAa,CAAC;QACjD,CAAC,QAAQ;YACP,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,YAAY,EAAE,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC;YAC/D,CAAC,CAAC,IAAI,CAAC,CACV,CAAA;AACH,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.24.0
|
|
3
|
+
"version": "3.24.0",
|
|
4
4
|
"description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/esm/index.js",
|
|
@@ -30,31 +30,31 @@
|
|
|
30
30
|
"lifi"
|
|
31
31
|
],
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@bigmi/client": "^0.4.
|
|
34
|
-
"@bigmi/core": "^0.4.0
|
|
33
|
+
"@bigmi/client": "^0.4.1",
|
|
34
|
+
"@bigmi/core": "^0.4.0",
|
|
35
35
|
"@emotion/react": "^11.14.0",
|
|
36
|
-
"@emotion/styled": "^11.14.
|
|
37
|
-
"@lifi/sdk": "^3.
|
|
38
|
-
"@mui/icons-material": "^7.
|
|
39
|
-
"@mui/material": "^7.
|
|
40
|
-
"@mui/system": "^7.
|
|
36
|
+
"@emotion/styled": "^11.14.1",
|
|
37
|
+
"@lifi/sdk": "^3.7.10",
|
|
38
|
+
"@mui/icons-material": "^7.2.0",
|
|
39
|
+
"@mui/material": "^7.2.0",
|
|
40
|
+
"@mui/system": "^7.2.0",
|
|
41
41
|
"@mysten/sui": "^1.34.0",
|
|
42
42
|
"@solana/wallet-adapter-base": "^0.9.27",
|
|
43
43
|
"@solana/wallet-adapter-coinbase": "^0.1.23",
|
|
44
44
|
"@solana/web3.js": "^1.98.2",
|
|
45
|
-
"@tanstack/react-virtual": "^3.13.
|
|
46
|
-
"i18next": "^25.
|
|
45
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
46
|
+
"i18next": "^25.3.0",
|
|
47
47
|
"microdiff": "^1.5.0",
|
|
48
48
|
"mitt": "^3.0.1",
|
|
49
49
|
"react-i18next": "^15.5.3",
|
|
50
50
|
"react-intersection-observer": "^9.16.0",
|
|
51
51
|
"react-router-dom": "^6.30.0",
|
|
52
|
-
"viem": "^2.31.
|
|
53
|
-
"zustand": "^5.0.
|
|
54
|
-
"@lifi/wallet-management": "^3.12.0
|
|
52
|
+
"viem": "^2.31.6",
|
|
53
|
+
"zustand": "^5.0.6",
|
|
54
|
+
"@lifi/wallet-management": "^3.12.0"
|
|
55
55
|
},
|
|
56
56
|
"peerDependencies": {
|
|
57
|
-
"@bigmi/react": "
|
|
57
|
+
"@bigmi/react": ">=0.4.0",
|
|
58
58
|
"@mysten/dapp-kit": ">=0.16.0",
|
|
59
59
|
"@solana/wallet-adapter-react": ">=0.15.35",
|
|
60
60
|
"@tanstack/react-query": ">=5.68.0",
|
package/package.json.tmp
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lifi/widget",
|
|
3
|
-
"version": "3.24.0
|
|
3
|
+
"version": "3.24.0",
|
|
4
4
|
"description": "LI.FI Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./src/index.ts",
|
|
@@ -49,28 +49,28 @@
|
|
|
49
49
|
"lifi"
|
|
50
50
|
],
|
|
51
51
|
"dependencies": {
|
|
52
|
-
"@bigmi/client": "^0.4.
|
|
53
|
-
"@bigmi/core": "^0.4.0
|
|
52
|
+
"@bigmi/client": "^0.4.1",
|
|
53
|
+
"@bigmi/core": "^0.4.0",
|
|
54
54
|
"@emotion/react": "^11.14.0",
|
|
55
|
-
"@emotion/styled": "^11.14.
|
|
56
|
-
"@lifi/sdk": "^3.
|
|
55
|
+
"@emotion/styled": "^11.14.1",
|
|
56
|
+
"@lifi/sdk": "^3.7.10",
|
|
57
57
|
"@lifi/wallet-management": "workspace:^",
|
|
58
|
-
"@mui/icons-material": "^7.
|
|
59
|
-
"@mui/material": "^7.
|
|
60
|
-
"@mui/system": "^7.
|
|
58
|
+
"@mui/icons-material": "^7.2.0",
|
|
59
|
+
"@mui/material": "^7.2.0",
|
|
60
|
+
"@mui/system": "^7.2.0",
|
|
61
61
|
"@mysten/sui": "^1.34.0",
|
|
62
62
|
"@solana/wallet-adapter-base": "^0.9.27",
|
|
63
63
|
"@solana/wallet-adapter-coinbase": "^0.1.23",
|
|
64
64
|
"@solana/web3.js": "^1.98.2",
|
|
65
|
-
"@tanstack/react-virtual": "^3.13.
|
|
66
|
-
"i18next": "^25.
|
|
65
|
+
"@tanstack/react-virtual": "^3.13.12",
|
|
66
|
+
"i18next": "^25.3.0",
|
|
67
67
|
"microdiff": "^1.5.0",
|
|
68
68
|
"mitt": "^3.0.1",
|
|
69
69
|
"react-i18next": "^15.5.3",
|
|
70
70
|
"react-intersection-observer": "^9.16.0",
|
|
71
71
|
"react-router-dom": "^6.30.0",
|
|
72
|
-
"viem": "^2.31.
|
|
73
|
-
"zustand": "^5.0.
|
|
72
|
+
"viem": "^2.31.6",
|
|
73
|
+
"zustand": "^5.0.6"
|
|
74
74
|
},
|
|
75
75
|
"devDependencies": {
|
|
76
76
|
"cpy-cli": "^5.0.0",
|
|
@@ -81,7 +81,7 @@
|
|
|
81
81
|
"vitest": "^3.2.4"
|
|
82
82
|
},
|
|
83
83
|
"peerDependencies": {
|
|
84
|
-
"@bigmi/react": "
|
|
84
|
+
"@bigmi/react": ">=0.4.0",
|
|
85
85
|
"@mysten/dapp-kit": ">=0.16.0",
|
|
86
86
|
"@solana/wallet-adapter-react": ">=0.15.35",
|
|
87
87
|
"@tanstack/react-query": ">=5.68.0",
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TokenAmount } from '@lifi/sdk'
|
|
2
|
-
import {
|
|
2
|
+
import { isGaslessStep } from '@lifi/sdk'
|
|
3
3
|
import ExpandLess from '@mui/icons-material/ExpandLess'
|
|
4
4
|
import ExpandMore from '@mui/icons-material/ExpandMore'
|
|
5
5
|
import { Box, Collapse } from '@mui/material'
|
|
@@ -53,8 +53,8 @@ export const RouteCard: React.FC<
|
|
|
53
53
|
(tag) => tag === 'CHEAPEST' || tag === 'FASTEST'
|
|
54
54
|
)
|
|
55
55
|
const tags: string[] = mainTag ? [mainTag] : []
|
|
56
|
-
const
|
|
57
|
-
if (
|
|
56
|
+
const hasGaslessSupport = route.steps.some(isGaslessStep)
|
|
57
|
+
if (hasGaslessSupport) {
|
|
58
58
|
tags.push('GASLESS')
|
|
59
59
|
}
|
|
60
60
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { isGaslessStep } from '@lifi/sdk'
|
|
2
2
|
import AccessTimeFilled from '@mui/icons-material/AccessTimeFilled'
|
|
3
3
|
import LocalGasStationRounded from '@mui/icons-material/LocalGasStationRounded'
|
|
4
4
|
import { Box, Tooltip, Typography } from '@mui/material'
|
|
@@ -22,7 +22,7 @@ export const RouteCardEssentials: React.FC<RouteCardEssentialsProps> = ({
|
|
|
22
22
|
)
|
|
23
23
|
const { gasCosts, feeCosts, combinedFeesUSD } =
|
|
24
24
|
getAccumulatedFeeCostsBreakdown(route)
|
|
25
|
-
const
|
|
25
|
+
const hasGaslessSupport = route.steps.some(isGaslessStep)
|
|
26
26
|
return (
|
|
27
27
|
<Box
|
|
28
28
|
sx={{
|
|
@@ -43,7 +43,7 @@ export const RouteCardEssentials: React.FC<RouteCardEssentialsProps> = ({
|
|
|
43
43
|
<FeeBreakdownTooltip
|
|
44
44
|
gasCosts={gasCosts}
|
|
45
45
|
feeCosts={feeCosts}
|
|
46
|
-
relayerSupport={
|
|
46
|
+
relayerSupport={hasGaslessSupport}
|
|
47
47
|
>
|
|
48
48
|
<Box
|
|
49
49
|
sx={{
|
|
@@ -56,7 +56,7 @@ export const RouteCardEssentials: React.FC<RouteCardEssentialsProps> = ({
|
|
|
56
56
|
<LocalGasStationRounded fontSize="inherit" />
|
|
57
57
|
</IconTypography>
|
|
58
58
|
<Typography
|
|
59
|
-
data-value={
|
|
59
|
+
data-value={hasGaslessSupport ? 0 : combinedFeesUSD}
|
|
60
60
|
sx={{
|
|
61
61
|
fontSize: 14,
|
|
62
62
|
color: 'text.primary',
|
|
@@ -64,7 +64,7 @@ export const RouteCardEssentials: React.FC<RouteCardEssentialsProps> = ({
|
|
|
64
64
|
lineHeight: 1,
|
|
65
65
|
}}
|
|
66
66
|
>
|
|
67
|
-
{
|
|
67
|
+
{hasGaslessSupport
|
|
68
68
|
? t('main.fees.free')
|
|
69
69
|
: t('format.currency', {
|
|
70
70
|
value: combinedFeesUSD,
|
|
@@ -24,29 +24,37 @@ const getStatusColor = (
|
|
|
24
24
|
case 'FAILED':
|
|
25
25
|
return `rgba(${theme.vars.palette.error.mainChannel} / 0.12)`
|
|
26
26
|
default:
|
|
27
|
-
return
|
|
27
|
+
return null
|
|
28
28
|
}
|
|
29
29
|
}
|
|
30
30
|
|
|
31
31
|
export const CircularIcon = styled(Box, {
|
|
32
32
|
shouldForwardProp: (prop: string) => !['status', 'substatus'].includes(prop),
|
|
33
33
|
})<{ status?: ProcessStatus; substatus?: Substatus }>(
|
|
34
|
-
({ theme, status, substatus }) =>
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
34
|
+
({ theme, status, substatus }) => {
|
|
35
|
+
const statusColor = getStatusColor(theme, status, substatus)
|
|
36
|
+
const isSpecialStatus = ['ACTION_REQUIRED', 'DONE', 'FAILED'].includes(
|
|
37
|
+
status!
|
|
38
|
+
)
|
|
39
|
+
|
|
40
|
+
return {
|
|
41
|
+
backgroundColor: isSpecialStatus
|
|
42
|
+
? statusColor!
|
|
43
|
+
: theme.vars.palette.background.paper,
|
|
44
|
+
borderStyle: 'solid',
|
|
45
|
+
borderColor: statusColor || theme.vars.palette.grey[300],
|
|
46
|
+
borderWidth: !isSpecialStatus ? 3 : 0,
|
|
47
|
+
display: 'grid',
|
|
48
|
+
position: 'relative',
|
|
49
|
+
placeItems: 'center',
|
|
50
|
+
width: 40,
|
|
51
|
+
height: 40,
|
|
52
|
+
borderRadius: '50%',
|
|
53
|
+
...theme.applyStyles('dark', {
|
|
54
|
+
borderColor: statusColor || theme.vars.palette.grey[800],
|
|
55
|
+
}),
|
|
56
|
+
}
|
|
57
|
+
}
|
|
50
58
|
)
|
|
51
59
|
|
|
52
60
|
const circleAnimation = keyframes`
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { LiFiStep, StepExtended } from '@lifi/sdk'
|
|
2
|
-
import {
|
|
2
|
+
import { isGaslessStep } from '@lifi/sdk'
|
|
3
3
|
import ArrowForward from '@mui/icons-material/ArrowForward'
|
|
4
4
|
import ExpandLess from '@mui/icons-material/ExpandLess'
|
|
5
5
|
import ExpandMore from '@mui/icons-material/ExpandMore'
|
|
@@ -162,7 +162,7 @@ export const IncludedSteps: React.FC<IncludedStepsProps> = ({ step }) => {
|
|
|
162
162
|
) : null
|
|
163
163
|
}
|
|
164
164
|
|
|
165
|
-
const
|
|
165
|
+
const hasGaslessSupport = isGaslessStep(step)
|
|
166
166
|
|
|
167
167
|
return (
|
|
168
168
|
<Box
|
|
@@ -194,7 +194,7 @@ export const IncludedSteps: React.FC<IncludedStepsProps> = ({ step }) => {
|
|
|
194
194
|
<ProtocolStepDetailsLabel
|
|
195
195
|
step={step}
|
|
196
196
|
feeConfig={feeConfig}
|
|
197
|
-
relayerSupport={
|
|
197
|
+
relayerSupport={hasGaslessSupport}
|
|
198
198
|
/>
|
|
199
199
|
) : (
|
|
200
200
|
<SwapStepDetailsLabel step={step} />
|
|
@@ -42,7 +42,7 @@ export const TokenList: FC<TokenListProps> = ({
|
|
|
42
42
|
isBalanceLoading,
|
|
43
43
|
featuredTokens,
|
|
44
44
|
popularTokens,
|
|
45
|
-
} = useTokenBalances(selectedChainId)
|
|
45
|
+
} = useTokenBalances(selectedChainId, formType)
|
|
46
46
|
|
|
47
47
|
let filteredTokens = (tokensWithBalance ?? chainTokens ?? []) as TokenAmount[]
|
|
48
48
|
const normalizedSearchFilter = tokenSearchFilter?.replaceAll('$', '')
|
|
@@ -70,7 +70,12 @@ export const TokenList: FC<TokenListProps> = ({
|
|
|
70
70
|
!!selectedChainId
|
|
71
71
|
|
|
72
72
|
const { token: searchedToken, isLoading: isSearchedTokenLoading } =
|
|
73
|
-
useTokenSearch(
|
|
73
|
+
useTokenSearch(
|
|
74
|
+
selectedChainId,
|
|
75
|
+
normalizedSearchFilter,
|
|
76
|
+
tokenSearchEnabled,
|
|
77
|
+
formType
|
|
78
|
+
)
|
|
74
79
|
|
|
75
80
|
const isLoading =
|
|
76
81
|
isTokensLoading ||
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { RouteExtended } from '@lifi/sdk'
|
|
2
|
-
import {
|
|
2
|
+
import { isGaslessStep } from '@lifi/sdk'
|
|
3
3
|
import ExpandLess from '@mui/icons-material/ExpandLess'
|
|
4
4
|
import ExpandMore from '@mui/icons-material/ExpandMore'
|
|
5
5
|
import LocalGasStationRounded from '@mui/icons-material/LocalGasStationRounded'
|
|
@@ -71,10 +71,10 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
71
71
|
) ?? 0
|
|
72
72
|
}
|
|
73
73
|
|
|
74
|
-
const
|
|
74
|
+
const hasGaslessSupport = route.steps.some(isGaslessStep)
|
|
75
75
|
|
|
76
76
|
const showIntegratorFeeCollectionDetails =
|
|
77
|
-
(feeAmountUSD || Number.isFinite(feeConfig?.fee)) && !
|
|
77
|
+
(feeAmountUSD || Number.isFinite(feeConfig?.fee)) && !hasGaslessSupport
|
|
78
78
|
|
|
79
79
|
return (
|
|
80
80
|
<Card selectionColor="secondary" {...props}>
|
|
@@ -100,7 +100,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
100
100
|
<FeeBreakdownTooltip
|
|
101
101
|
gasCosts={gasCosts}
|
|
102
102
|
feeCosts={feeCosts}
|
|
103
|
-
relayerSupport={
|
|
103
|
+
relayerSupport={hasGaslessSupport}
|
|
104
104
|
>
|
|
105
105
|
<Box
|
|
106
106
|
onClick={toggleCard}
|
|
@@ -117,7 +117,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
117
117
|
<LocalGasStationRounded fontSize="inherit" />
|
|
118
118
|
</IconTypography>
|
|
119
119
|
<Typography
|
|
120
|
-
data-value={
|
|
120
|
+
data-value={hasGaslessSupport ? 0 : combinedFeesUSD}
|
|
121
121
|
sx={{
|
|
122
122
|
fontSize: 14,
|
|
123
123
|
color: 'text.primary',
|
|
@@ -125,7 +125,7 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
125
125
|
lineHeight: 1.429,
|
|
126
126
|
}}
|
|
127
127
|
>
|
|
128
|
-
{
|
|
128
|
+
{hasGaslessSupport
|
|
129
129
|
? t('main.fees.free')
|
|
130
130
|
: t('format.currency', { value: combinedFeesUSD })}
|
|
131
131
|
</Typography>
|
|
@@ -157,13 +157,13 @@ export const TransactionDetails: React.FC<TransactionDetailsProps> = ({
|
|
|
157
157
|
<Typography variant="body2">{t('main.fees.network')}</Typography>
|
|
158
158
|
<FeeBreakdownTooltip
|
|
159
159
|
gasCosts={gasCosts}
|
|
160
|
-
relayerSupport={
|
|
160
|
+
relayerSupport={hasGaslessSupport}
|
|
161
161
|
>
|
|
162
162
|
<Typography
|
|
163
163
|
variant="body2"
|
|
164
164
|
sx={{ fontWeight: 600, cursor: 'help' }}
|
|
165
165
|
>
|
|
166
|
-
{
|
|
166
|
+
{hasGaslessSupport
|
|
167
167
|
? t('main.fees.free')
|
|
168
168
|
: t('format.currency', {
|
|
169
169
|
value: gasCostUSD,
|
package/src/config/version.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export const name = '@lifi/widget'
|
|
2
|
-
export const version = '3.24.0
|
|
2
|
+
export const version = '3.24.0'
|
|
@@ -3,15 +3,21 @@ import { useAccount } from '@lifi/wallet-management'
|
|
|
3
3
|
import { useQuery } from '@tanstack/react-query'
|
|
4
4
|
import { formatUnits } from 'viem'
|
|
5
5
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
6
|
+
import type { FormType } from '../stores/form/types.js'
|
|
6
7
|
import type { TokenAmount } from '../types/token.js'
|
|
7
8
|
import { getQueryKey } from '../utils/queries.js'
|
|
8
9
|
import { useTokens } from './useTokens.js'
|
|
9
10
|
|
|
10
11
|
const defaultRefetchInterval = 32_000
|
|
11
12
|
|
|
12
|
-
export const useTokenBalances = (
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
export const useTokenBalances = (
|
|
14
|
+
selectedChainId?: number,
|
|
15
|
+
formType?: FormType
|
|
16
|
+
) => {
|
|
17
|
+
const { tokens, featuredTokens, popularTokens, chain, isLoading } = useTokens(
|
|
18
|
+
selectedChainId,
|
|
19
|
+
formType
|
|
20
|
+
)
|
|
15
21
|
const { account } = useAccount({ chainType: chain?.chainType })
|
|
16
22
|
const { keyPrefix } = useWidgetConfig()
|
|
17
23
|
|
|
@@ -1,16 +1,20 @@
|
|
|
1
1
|
import { type ChainId, type TokensResponse, getToken } from '@lifi/sdk'
|
|
2
2
|
import { useQuery, useQueryClient } from '@tanstack/react-query'
|
|
3
3
|
import { useWidgetConfig } from '../providers/WidgetProvider/WidgetProvider.js'
|
|
4
|
+
import type { FormType } from '../stores/form/types.js'
|
|
4
5
|
import type { TokenAmount } from '../types/token.js'
|
|
6
|
+
import { isTokenAllowed } from '../utils/item.js'
|
|
5
7
|
import { getQueryKey } from '../utils/queries.js'
|
|
6
8
|
|
|
7
9
|
export const useTokenSearch = (
|
|
8
10
|
chainId?: number,
|
|
9
11
|
tokenQuery?: string,
|
|
10
|
-
enabled?: boolean
|
|
12
|
+
enabled?: boolean,
|
|
13
|
+
formType?: FormType
|
|
11
14
|
) => {
|
|
12
15
|
const queryClient = useQueryClient()
|
|
13
|
-
const { keyPrefix } = useWidgetConfig()
|
|
16
|
+
const { tokens: configTokens, keyPrefix } = useWidgetConfig()
|
|
17
|
+
|
|
14
18
|
const { data, isLoading } = useQuery({
|
|
15
19
|
queryKey: [getQueryKey('token-search', keyPrefix), chainId, tokenQuery],
|
|
16
20
|
queryFn: async ({ queryKey: [, chainId, tokenQuery], signal }) => {
|
|
@@ -19,6 +23,11 @@ export const useTokenSearch = (
|
|
|
19
23
|
})
|
|
20
24
|
|
|
21
25
|
if (token) {
|
|
26
|
+
// Return undefined if the token is denied
|
|
27
|
+
if (!isTokenAllowed(token, configTokens, formType)) {
|
|
28
|
+
return undefined
|
|
29
|
+
}
|
|
30
|
+
|
|
22
31
|
queryClient.setQueriesData<TokensResponse>(
|
|
23
32
|
{ queryKey: [getQueryKey('tokens', keyPrefix)] },
|
|
24
33
|
(data) => {
|