@lifi/widget 3.24.0-alpha.0 → 3.24.1

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 +30 -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 +2 -0
  29. package/dist/esm/index.js +2 -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 +2 -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
@@ -21,10 +21,12 @@ export { watermelonLightTheme } from './themes/watermelonLight.js';
21
21
  export { windows95Theme } from './themes/windows95.js';
22
22
  export * from './themes/palettes.js';
23
23
  export * from './themes/types.js';
24
+ export { createTheme } from './themes/createTheme.js';
24
25
  export * from './types/events.js';
25
26
  export type { TokenAmount } from './types/token.js';
26
27
  export * from './types/widget.js';
27
28
  export { getPriceImpact } from './utils/getPriceImpact.js';
29
+ export * from './utils/format.js';
28
30
  export { percentFormatter } from './utils/percentFormatter.js';
29
31
  export { compactNumberFormatter } from './utils/compactNumberFormatter.js';
30
32
  export { currencyExtendedFormatter } from './utils/currencyExtendedFormatter.js';
package/dist/esm/index.js CHANGED
@@ -19,9 +19,11 @@ export { watermelonLightTheme } from './themes/watermelonLight.js';
19
19
  export { windows95Theme } from './themes/windows95.js';
20
20
  export * from './themes/palettes.js';
21
21
  export * from './themes/types.js';
22
+ export { createTheme } from './themes/createTheme.js';
22
23
  export * from './types/events.js';
23
24
  export * from './types/widget.js';
24
25
  export { getPriceImpact } from './utils/getPriceImpact.js';
26
+ export * from './utils/format.js';
25
27
  export { percentFormatter } from './utils/percentFormatter.js';
26
28
  export { compactNumberFormatter } from './utils/compactNumberFormatter.js';
27
29
  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,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAA;AACrD,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":"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"}
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.1",
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.1",
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.1'
@@ -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) => {