@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.
Files changed (56) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/README.md +10 -6
  3. package/dist/esm/components/Header/Header.style.js +1 -0
  4. package/dist/esm/components/Header/Header.style.js.map +1 -1
  5. package/dist/esm/components/RouteCard/RouteCard.js +3 -3
  6. package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
  7. package/dist/esm/components/RouteCard/RouteCardEssentials.js +5 -5
  8. package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
  9. package/dist/esm/components/Step/CircularProgress.style.js +22 -17
  10. package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
  11. package/dist/esm/components/StepActions/StepActions.js +3 -3
  12. package/dist/esm/components/TokenList/TokenList.js +2 -2
  13. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  14. package/dist/esm/components/TransactionDetails.js +7 -7
  15. package/dist/esm/components/TransactionDetails.js.map +1 -1
  16. package/dist/esm/config/version.d.ts +1 -1
  17. package/dist/esm/config/version.js +1 -1
  18. package/dist/esm/config/version.js.map +1 -1
  19. package/dist/esm/hooks/useTokenBalances.d.ts +2 -1
  20. package/dist/esm/hooks/useTokenBalances.js +2 -2
  21. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  22. package/dist/esm/hooks/useTokenSearch.d.ts +2 -1
  23. package/dist/esm/hooks/useTokenSearch.js +7 -2
  24. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  25. package/dist/esm/hooks/useTokens.d.ts +2 -1
  26. package/dist/esm/hooks/useTokens.js +6 -13
  27. package/dist/esm/hooks/useTokens.js.map +1 -1
  28. package/dist/esm/index.d.ts +1 -0
  29. package/dist/esm/index.js +1 -0
  30. package/dist/esm/index.js.map +1 -1
  31. package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js +18 -7
  32. package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
  33. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +4 -4
  34. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  35. package/dist/esm/types/widget.d.ts +2 -0
  36. package/dist/esm/utils/item.d.ts +7 -2
  37. package/dist/esm/utils/item.js +10 -3
  38. package/dist/esm/utils/item.js.map +1 -1
  39. package/package.json +14 -14
  40. package/package.json.tmp +13 -13
  41. package/src/components/Header/Header.style.ts +1 -0
  42. package/src/components/RouteCard/RouteCard.tsx +3 -3
  43. package/src/components/RouteCard/RouteCardEssentials.tsx +5 -5
  44. package/src/components/Step/CircularProgress.style.tsx +25 -17
  45. package/src/components/StepActions/StepActions.tsx +3 -3
  46. package/src/components/TokenList/TokenList.tsx +7 -2
  47. package/src/components/TransactionDetails.tsx +8 -8
  48. package/src/config/version.ts +1 -1
  49. package/src/hooks/useTokenBalances.ts +9 -3
  50. package/src/hooks/useTokenSearch.ts +11 -2
  51. package/src/hooks/useTokens.ts +10 -21
  52. package/src/index.ts +1 -0
  53. package/src/pages/TransactionPage/StatusBottomSheet.style.tsx +19 -11
  54. package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +4 -4
  55. package/src/types/widget.ts +2 -0
  56. package/src/utils/item.ts +29 -4
@@ -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';
@@ -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
- darken: 0,
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
- darken: 0,
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
- darken: theme.palette.mode === 'light' ? 0.32 : 0,
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
- darken: 0,
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 { color, alpha: alphaValue, darken: darkenValue, } = getStatusColor(status, theme);
45
+ const statusConfig = getStatusColor(status, theme);
42
46
  return {
43
- backgroundColor: `rgba(${color} / ${alphaValue})`,
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 - darkenValue) * 100}%, black)`,
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,MAAM,EAAE,CAAC;aACV,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,MAAM,EAAE,CAAC;aACV,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,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;aAClD,CAAA;QACH;YACE,OAAO;gBACL,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW;gBAC7C,KAAK,EAAE,IAAI;gBACX,MAAM,EAAE,CAAC;aACV,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,EACJ,KAAK,EACL,KAAK,EAAE,UAAU,EACjB,MAAM,EAAE,WAAW,GACpB,GAAG,cAAc,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IACjC,OAAO;QACL,eAAe,EAAE,QAAQ,KAAK,MAAM,UAAU,GAAG;QACjD,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,KAAK,KAAK,CAAC,CAAC,GAAG,WAAW,CAAC,GAAG,GAAG,WAAW;YAC7E,KAAK,EAAE,EAAE;YACT,MAAM,EAAE,EAAE;SACX;KACF,CAAA;AACH,CAAC,CAAC,CAAA"}
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 { isRelayerStep } from '@lifi/sdk';
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 hasRelayerSupport = route.steps.every(isRelayerStep);
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: hasRelayerSupport, children: _jsx(Typography, { sx: {
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: hasRelayerSupport
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,KAAK,CAAC,aAAa,CAAC,CAAA;IAC1D,OAAO,CACL,MAAC,GAAG,IACF,GAAG,EAAE,GAAG,EACR,EAAE,EAAE;YACF,CAAC,EAAE,CAAC;SACL,aAED,MAAC,eAAe,eACd,KAAC,UAAU,IAAC,MAAM,EAAC,SAAS,EAAC,EAAE,EAAE,CAAC,YAChC,KAAC,cAAc,IAAC,KAAK,EAAC,SAAS,GAAG,GACvB,EACb,KAAC,UAAU,IACT,EAAE,EAAE;4BACF,EAAE,EAAE,CAAC;4BACL,QAAQ,EAAE,EAAE;4BACZ,UAAU,EAAE,GAAG;yBAChB,YAEA,CAAC,CAAC,6BAA6B,CAAC,GACtB,IACG,EAClB,KAAC,UAAU,IACT,EAAE,EAAE;oBACF,EAAE,EAAE,CAAC;iBACN,YAEA,CAAC,CAAC,+BAA+B,CAAC,GACxB,EACb,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,EAAE,EAAE,CAAC;iBACN,aAED,KAAC,UAAU,cAAE,CAAC,CAAC,cAAc,CAAC,GAAc,EAC5C,KAAC,UAAU,IACT,EAAE,EAAE;4BACF,UAAU,EAAE,GAAG;yBAChB,YAEA,CAAC,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,aAAa,EAAE,CAAC,GAC1C,IACT,EACN,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,EAAE,EAAE,IAAI;iBACT,aAED,KAAC,UAAU,cAAE,CAAC,CAAC,mBAAmB,CAAC,GAAc,EACjD,KAAC,mBAAmB,IAClB,QAAQ,EAAE,QAAQ,EAClB,cAAc,EAAE,iBAAiB,YAEjC,KAAC,UAAU,IACT,EAAE,EAAE;gCACF,UAAU,EAAE,GAAG;6BAChB,YAEA,iBAAiB;gCAChB,CAAC,CAAC,CAAC,CAAC,gBAAgB,CAAC;gCACrB,CAAC,CAAC,CAAC,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,GACpC,GACO,IAClB,EACL,UAAU,CAAC,CAAC,CAAC,CACZ,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,EAAE,EAAE,IAAI;iBACT,aAED,KAAC,UAAU,cAAE,CAAC,CAAC,oBAAoB,CAAC,GAAc,EAClD,KAAC,mBAAmB,IAAC,QAAQ,EAAE,QAAQ,YACrC,KAAC,UAAU,IACT,EAAE,EAAE;gCACF,UAAU,EAAE,GAAG;6BAChB,YAEA,CAAC,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,GACjC,GACO,IAClB,CACP,CAAC,CAAC,CAAC,IAAI,EACR,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,EAAE,EAAE,IAAI;iBACT,aAED,KAAC,UAAU,cAAE,CAAC,CAAC,gBAAgB,CAAC,GAAc,EAC9C,KAAC,UAAU,IACT,EAAE,EAAE;4BACF,UAAU,EAAE,GAAG;yBAChB,YAEA,CAAC,CAAC,iBAAiB,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,WAAW,EAAE,CAAC,GACxC,IACT,EACN,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,cAAc,EAAE,eAAe;oBAC/B,EAAE,EAAE,IAAI;iBACT,aAED,KAAC,UAAU,cAAE,CAAC,CAAC,gBAAgB,CAAC,GAAc,EAC9C,MAAC,UAAU,IACT,EAAE,EAAE;4BACF,UAAU,EAAE,GAAG;yBAChB,aAEA,4BAA4B,CAC3B,aAAa,EACb,WAAW,EACX,UAAU,EACV,UAAU,CACX,SAEU,IACT,EACN,MAAC,GAAG,IACF,EAAE,EAAE;oBACF,OAAO,EAAE,MAAM;oBACf,EAAE,EAAE,CAAC;iBACN,aAED,KAAC,MAAM,IAAC,OAAO,EAAC,MAAM,EAAC,OAAO,EAAE,QAAQ,EAAE,SAAS,kBAChD,CAAC,CAAC,eAAe,CAAC,GACZ,EACT,KAAC,GAAG,IACF,EAAE,EAAE;4BACF,OAAO,EAAE,MAAM;4BACf,CAAC,EAAE,CAAC;yBACL,GACD,EACF,KAAC,MAAM,IAAC,OAAO,EAAC,WAAW,EAAC,OAAO,EAAE,UAAU,EAAE,SAAS,kBACvD,CAAC,CAAC,iBAAiB,CAAC,GACd,IACL,IACF,CACP,CAAA;AACH,CAAC,CAAA"}
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;
@@ -1,2 +1,7 @@
1
- import type { AllowDeny } from '../types/widget.js';
2
- export declare const isItemAllowed: <T>(itemId: T, items?: AllowDeny<T>) => boolean;
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 {};
@@ -1,7 +1,14 @@
1
- export const isItemAllowed = (itemId, items) => {
1
+ export const isItemAllowed = (item, items, includes = (list, val) => list.includes(val)) => {
2
2
  if (items?.allow?.length) {
3
- return items.allow.includes(itemId);
3
+ return includes(items.allow, item);
4
4
  }
5
- return !items?.deny?.includes(itemId);
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":"AAEA,MAAM,CAAC,MAAM,aAAa,GAAG,CAAI,MAAS,EAAE,KAAoB,EAAE,EAAE;IAClE,IAAI,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;IACrC,CAAC;IACD,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAA;AACvC,CAAC,CAAA"}
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-alpha.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.0-beta.2",
34
- "@bigmi/core": "^0.4.0-beta.1",
33
+ "@bigmi/client": "^0.4.1",
34
+ "@bigmi/core": "^0.4.0",
35
35
  "@emotion/react": "^11.14.0",
36
- "@emotion/styled": "^11.14.0",
37
- "@lifi/sdk": "^3.8.0-alpha.1",
38
- "@mui/icons-material": "^7.1.2",
39
- "@mui/material": "^7.1.2",
40
- "@mui/system": "^7.1.0",
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.11",
46
- "i18next": "^25.2.1",
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.4",
53
- "zustand": "^5.0.5",
54
- "@lifi/wallet-management": "^3.12.0-alpha.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": "^0.4.0-beta.2",
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-alpha.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.0-beta.2",
53
- "@bigmi/core": "^0.4.0-beta.1",
52
+ "@bigmi/client": "^0.4.1",
53
+ "@bigmi/core": "^0.4.0",
54
54
  "@emotion/react": "^11.14.0",
55
- "@emotion/styled": "^11.14.0",
56
- "@lifi/sdk": "^3.8.0-alpha.1",
55
+ "@emotion/styled": "^11.14.1",
56
+ "@lifi/sdk": "^3.7.10",
57
57
  "@lifi/wallet-management": "workspace:^",
58
- "@mui/icons-material": "^7.1.2",
59
- "@mui/material": "^7.1.2",
60
- "@mui/system": "^7.1.0",
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.11",
66
- "i18next": "^25.2.1",
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.4",
73
- "zustand": "^5.0.5"
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": "^0.4.0-beta.2",
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",
@@ -34,6 +34,7 @@ export const Container = styled(Box, {
34
34
  gap: theme.spacing(0.5),
35
35
  padding: theme.spacing(1.5, 3, 1.5, 3),
36
36
  overflow: 'auto',
37
+ borderRadius: theme.container?.borderRadius ?? 0,
37
38
  ...theme.header,
38
39
  ...(theme.header?.position === 'fixed'
39
40
  ? {
@@ -1,5 +1,5 @@
1
1
  import type { TokenAmount } from '@lifi/sdk'
2
- import { isRelayerStep } from '@lifi/sdk'
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 hasRelayerSupport = route.steps.every(isRelayerStep)
57
- if (hasRelayerSupport) {
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 { isRelayerStep } from '@lifi/sdk'
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 hasRelayerSupport = route.steps.every(isRelayerStep)
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={hasRelayerSupport}
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={hasRelayerSupport ? 0 : combinedFeesUSD}
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
- {hasRelayerSupport
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 theme.vars.palette.grey[theme.palette.mode === 'light' ? 300 : 800]
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
- backgroundColor: ['ACTION_REQUIRED', 'DONE', 'FAILED'].includes(status!)
36
- ? getStatusColor(theme, status, substatus)
37
- : theme.vars.palette.background.paper,
38
- borderStyle: 'solid',
39
- borderColor: getStatusColor(theme, status, substatus),
40
- borderWidth: !['ACTION_REQUIRED', 'DONE', 'FAILED'].includes(status!)
41
- ? 3
42
- : 0,
43
- display: 'grid',
44
- position: 'relative',
45
- placeItems: 'center',
46
- width: 40,
47
- height: 40,
48
- borderRadius: '50%',
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 { isRelayerStep } from '@lifi/sdk'
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 hasRelayerSupport = isRelayerStep(step)
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={hasRelayerSupport}
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(selectedChainId, normalizedSearchFilter, tokenSearchEnabled)
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 { isRelayerStep } from '@lifi/sdk'
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 hasRelayerSupport = route.steps.every(isRelayerStep)
74
+ const hasGaslessSupport = route.steps.some(isGaslessStep)
75
75
 
76
76
  const showIntegratorFeeCollectionDetails =
77
- (feeAmountUSD || Number.isFinite(feeConfig?.fee)) && !hasRelayerSupport
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={hasRelayerSupport}
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={hasRelayerSupport ? 0 : combinedFeesUSD}
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
- {hasRelayerSupport
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={hasRelayerSupport}
160
+ relayerSupport={hasGaslessSupport}
161
161
  >
162
162
  <Typography
163
163
  variant="body2"
164
164
  sx={{ fontWeight: 600, cursor: 'help' }}
165
165
  >
166
- {hasRelayerSupport
166
+ {hasGaslessSupport
167
167
  ? t('main.fees.free')
168
168
  : t('format.currency', {
169
169
  value: gasCostUSD,
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '3.24.0-alpha.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 = (selectedChainId?: number) => {
13
- const { tokens, featuredTokens, popularTokens, chain, isLoading } =
14
- useTokens(selectedChainId)
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) => {