@lifi/widget 3.36.0 → 3.37.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 CHANGED
@@ -2,6 +2,25 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [3.37.0](https://github.com/lifinance/widget/compare/v3.36.1...v3.37.0) (2025-12-10)
6
+
7
+
8
+ ### Features
9
+
10
+ * add option to hide route card price impact ([#623](https://github.com/lifinance/widget/issues/623)) ([4d9c77a](https://github.com/lifinance/widget/commit/4d9c77ad67c64d81af4373a9ef941e150bbcc373))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * sync widget lg with config.languages.default ([#622](https://github.com/lifinance/widget/issues/622)) ([18cf1d6](https://github.com/lifinance/widget/commit/18cf1d67e4579f2914689dc3a3170f1a3cd00729))
16
+
17
+ ### [3.36.1](https://github.com/lifinance/widget/compare/v3.36.0...v3.36.1) (2025-12-04)
18
+
19
+
20
+ ### Bug Fixes
21
+
22
+ * limit decimals in formatInputAmount ([#601](https://github.com/lifinance/widget/issues/601)) ([02dd64d](https://github.com/lifinance/widget/commit/02dd64d0379906d98b7df36ece9e2b2bfc3e0876))
23
+
5
24
  ## [3.36.0](https://github.com/lifinance/widget/compare/v3.35.1...v3.36.0) (2025-12-03)
6
25
 
7
26
 
@@ -27,7 +27,8 @@ export const RouteCard = ({ route, active, variant = 'default', expanded: defaul
27
27
  const token = subvariant === 'custom' && subvariantOptions?.custom !== 'deposit'
28
28
  ? { ...route.fromToken, amount: BigInt(route.fromAmount) }
29
29
  : { ...route.toToken, amount: BigInt(route.toAmount) };
30
- const impactToken = subvariant !== 'custom'
30
+ const impactToken = subvariant !== 'custom' &&
31
+ !hiddenUI?.includes(HiddenUI.RouteCardPriceImpact)
31
32
  ? { ...route.fromToken, amount: BigInt(route.fromAmount) }
32
33
  : undefined;
33
34
  const [tags, customLabels] = useMemo(() => {
@@ -1 +1 @@
1
- {"version":3,"file":"RouteCard.js","sourceRoot":"","sources":["../../../../src/components/RouteCard/RouteCard.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"RouteCard.js","sourceRoot":"","sources":["../../../../src/components/RouteCard/RouteCard.tsx"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
1
  export declare const name = "@lifi/widget";
2
- export declare const version = "3.36.0";
2
+ export declare const version = "3.37.0";
@@ -1,3 +1,3 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '3.36.0';
2
+ export const version = '3.37.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -1,7 +1,9 @@
1
- import { jsx as _jsx } from "react/jsx-runtime";
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
2
  import { createInstance } from 'i18next';
3
- import { useMemo, useRef } from 'react';
3
+ import { useEffect, useMemo, useRef } from 'react';
4
4
  import { I18nextProvider } from 'react-i18next';
5
+ import { useLanguages } from '../../hooks/useLanguages.js';
6
+ import { useSettingsStore } from '../../stores/settings/SettingsStore.js';
5
7
  import { useSettings } from '../../stores/settings/useSettings.js';
6
8
  import { compactNumberFormatter } from '../../utils/compactNumberFormatter.js';
7
9
  import { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js';
@@ -67,6 +69,28 @@ export const I18nProvider = ({ children, }) => {
67
69
  i18nInstanceRef.current = i18n;
68
70
  return i18n;
69
71
  }, [language, languageResources, languages?.default, languageCache]);
70
- return _jsx(I18nextProvider, { i18n: i18nInstance, children: children });
72
+ return (_jsxs(I18nextProvider, { i18n: i18nInstance, children: [children, _jsx(DefaultLanguageHandler, {})] }));
73
+ };
74
+ // Sync language settings internally when config.languages.default changes externally
75
+ const DefaultLanguageHandler = () => {
76
+ const { languages } = useWidgetConfig();
77
+ const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [
78
+ state.lastDefaultLanguage,
79
+ state.setValue,
80
+ ]);
81
+ const { setLanguageWithCode: setLanguage } = useLanguages();
82
+ useEffect(() => {
83
+ const currentDefaultLanguage = languages?.default;
84
+ const defaultLanguageChanged = currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage;
85
+ if (!defaultLanguageChanged) {
86
+ return;
87
+ }
88
+ const updateLanguage = async () => {
89
+ await setLanguage(currentDefaultLanguage);
90
+ setValue('lastDefaultLanguage', currentDefaultLanguage);
91
+ };
92
+ updateLanguage();
93
+ }, [languages?.default, setValue, lastDefaultLanguage, setLanguage]);
94
+ return null;
71
95
  };
72
96
  //# sourceMappingURL=I18nProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"I18nProvider.js","sourceRoot":"","sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AACvC,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAGtD,MAAM,CAAC,MAAM,YAAY,GAAsC,CAAC,EAC9D,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAAA;IAC1D,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAEjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,gEAAgE;YAChE,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACnD,eAAe,CAAC,OAAO,CAAC,iBAAiB,CACvC,QAAQ,EACR,aAAa,EACb,aAAa,EACb,IAAI,EACJ,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAA;QAChC,CAAC;QAED,6EAA6E;QAC7E,6GAA6G;QAC7G,MAAM,kBAAkB,GAAG,iBAAiB;YAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACnC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAkB,CAAC,CAC5D;YACH,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,eAAe,GAAG,QAAQ,IAAI,SAAS,EAAE,OAAO,CAAA;QACtD,MAAM,IAAI,GAAG,cAAc,CAAC;YAC1B,GAAG,EAAE,eAAe;YACpB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;YACrC,SAAS,EAAE;gBACT,EAAE,EAAE;oBACF,WAAW,EAAE,0BAA0B,CACrC,UAAU,EACV,iBAAiB,EAAE,EAAE,CACtB;iBACF;gBACD,GAAG,CAAC,eAAe;oBACjB,eAAe,KAAK,IAAI;oBACxB,aAAa,IAAI;oBACf,CAAC,eAAe,CAAC,EAAE;wBACjB,WAAW,EAAE,aAAa;qBAC3B;iBACF,CAAC;gBACJ,6CAA6C;gBAC7C,GAAG,kBAAkB,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACX,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC,GAAkB,CAAC,CAAA;oBAC9D,IAAI,cAAc,EAAE,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,GAAG;4BACT,WAAW,EAAE,cAAc;yBAC5B,CAAA;oBACH,CAAC;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC,EACD,EAGC,CACF;aACF;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE;aACX;YACD,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE,CAAA;QAEX,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAA;QAC5E,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAC/D,eAAe,CAAC,OAAO,GAAG,IAAI,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IAEpE,OAAO,KAAC,eAAe,IAAC,IAAI,EAAE,YAAY,YAAG,QAAQ,GAAmB,CAAA;AAC1E,CAAC,CAAA"}
1
+ {"version":3,"file":"I18nProvider.js","sourceRoot":"","sources":["../../../../src/providers/I18nProvider/I18nProvider.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAE,cAAc,EAAa,MAAM,SAAS,CAAA;AACnD,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,OAAO,CAAA;AAClD,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAC/C,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAA;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,sCAAsC,CAAA;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,uCAAuC,CAAA;AAC9E,OAAO,EAAE,yBAAyB,EAAE,MAAM,0CAA0C,CAAA;AACpF,OAAO,EAAE,gBAAgB,EAAE,MAAM,iCAAiC,CAAA;AAClE,OAAO,EAAE,eAAe,EAAE,MAAM,qCAAqC,CAAA;AACrE,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC7C,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,0BAA0B,EAAE,MAAM,WAAW,CAAA;AAGtD,MAAM,CAAC,MAAM,YAAY,GAAsC,CAAC,EAC9D,QAAQ,GACT,EAAE,EAAE;IACH,MAAM,EAAE,SAAS,EAAE,iBAAiB,EAAE,GAAG,eAAe,EAAE,CAAA;IAC1D,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,WAAW,CAAC,CAAC,UAAU,EAAE,eAAe,CAAC,CAAC,CAAA;IAC9E,MAAM,eAAe,GAAG,MAAM,CAAc,IAAI,CAAC,CAAA;IAEjD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,EAAE;QAChC,IAAI,eAAe,CAAC,OAAO,EAAE,CAAC;YAC5B,gEAAgE;YAChE,IAAI,QAAQ,IAAI,aAAa,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACnD,eAAe,CAAC,OAAO,CAAC,iBAAiB,CACvC,QAAQ,EACR,aAAa,EACb,aAAa,EACb,IAAI,EACJ,IAAI,CACL,CAAA;YACH,CAAC;YACD,OAAO,eAAe,CAAC,OAAO,CAAA;QAChC,CAAC;QAED,6EAA6E;QAC7E,6GAA6G;QAC7G,MAAM,kBAAkB,GAAG,iBAAiB;YAC1C,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,MAAM,CACnC,CAAC,GAAW,EAAE,EAAE,CAAC,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAkB,CAAC,CAC5D;YACH,CAAC,CAAC,EAAE,CAAA;QACN,MAAM,eAAe,GAAG,QAAQ,IAAI,SAAS,EAAE,OAAO,CAAA;QACtD,MAAM,IAAI,GAAG,cAAc,CAAC;YAC1B,GAAG,EAAE,eAAe;YACpB,WAAW,EAAE,IAAI;YACjB,YAAY,EAAE,IAAI;YAClB,aAAa,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE;YACrC,SAAS,EAAE;gBACT,EAAE,EAAE;oBACF,WAAW,EAAE,0BAA0B,CACrC,UAAU,EACV,iBAAiB,EAAE,EAAE,CACtB;iBACF;gBACD,GAAG,CAAC,eAAe;oBACjB,eAAe,KAAK,IAAI;oBACxB,aAAa,IAAI;oBACf,CAAC,eAAe,CAAC,EAAE;wBACjB,WAAW,EAAE,aAAa;qBAC3B;iBACF,CAAC;gBACJ,6CAA6C;gBAC7C,GAAG,kBAAkB,CAAC,MAAM,CAC1B,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;oBACX,MAAM,cAAc,GAAG,iBAAiB,EAAE,CAAC,GAAkB,CAAC,CAAA;oBAC9D,IAAI,cAAc,EAAE,CAAC;wBACnB,GAAG,CAAC,GAAG,CAAC,GAAG;4BACT,WAAW,EAAE,cAAc;yBAC5B,CAAA;oBACH,CAAC;oBACD,OAAO,GAAG,CAAA;gBACZ,CAAC,EACD,EAGC,CACF;aACF;YACD,SAAS,EAAE;gBACT,MAAM,EAAE,EAAE;aACX;YACD,iBAAiB,EAAE,KAAK;SACzB,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,EAAE,CAAA;QAEX,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,WAAW,EAAE,sBAAsB,CAAC,CAAA;QACvE,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE,yBAAyB,CAAC,CAAA;QAC5E,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,SAAS,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAA;QAC/D,eAAe,CAAC,OAAO,GAAG,IAAI,CAAA;QAC9B,OAAO,IAAI,CAAA;IACb,CAAC,EAAE,CAAC,QAAQ,EAAE,iBAAiB,EAAE,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAA;IAEpE,OAAO,CACL,MAAC,eAAe,IAAC,IAAI,EAAE,YAAY,aAChC,QAAQ,EACT,KAAC,sBAAsB,KAAG,IACV,CACnB,CAAA;AACH,CAAC,CAAA;AAED,qFAAqF;AACrF,MAAM,sBAAsB,GAAa,GAAG,EAAE;IAC5C,MAAM,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,CAAA;IACvC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,CAAC,GAAG,gBAAgB,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QAClE,KAAK,CAAC,mBAAmB;QACzB,KAAK,CAAC,QAAQ;KACf,CAAC,CAAA;IACF,MAAM,EAAE,mBAAmB,EAAE,WAAW,EAAE,GAAG,YAAY,EAAE,CAAA;IAE3D,SAAS,CAAC,GAAG,EAAE;QACb,MAAM,sBAAsB,GAAG,SAAS,EAAE,OAAO,CAAA;QAEjD,MAAM,sBAAsB,GAC1B,sBAAsB,IAAI,sBAAsB,KAAK,mBAAmB,CAAA;QAE1E,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAC5B,OAAM;QACR,CAAC;QAED,MAAM,cAAc,GAAG,KAAK,IAAI,EAAE;YAChC,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;YACzC,QAAQ,CAAC,qBAAqB,EAAE,sBAAsB,CAAC,CAAA;QACzD,CAAC,CAAA;QAED,cAAc,EAAE,CAAA;IAClB,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,WAAW,CAAC,CAAC,CAAA;IAEpE,OAAO,IAAI,CAAA;AACb,CAAC,CAAA"}
@@ -10,6 +10,7 @@ export declare const createSettingsStore: (config: WidgetConfig) => import("zust
10
10
  gasPrice?: string;
11
11
  language?: string;
12
12
  languageCache?: import("../../providers/I18nProvider/types.js").LanguageResource;
13
+ lastDefaultLanguage?: string;
13
14
  routePriority?: import("@lifi/sdk").Order;
14
15
  enabledAutoRefuel: boolean;
15
16
  slippage?: string;
@@ -33,6 +34,7 @@ export declare const createSettingsStore: (config: WidgetConfig) => import("zust
33
34
  gasPrice?: string;
34
35
  language?: string;
35
36
  languageCache?: import("../../providers/I18nProvider/types.js").LanguageResource;
37
+ lastDefaultLanguage?: string;
36
38
  routePriority?: import("@lifi/sdk").Order;
37
39
  enabledAutoRefuel: boolean;
38
40
  slippage?: string;
@@ -12,6 +12,7 @@ export interface SettingsProps {
12
12
  gasPrice?: string;
13
13
  language?: string;
14
14
  languageCache?: LanguageResource;
15
+ lastDefaultLanguage?: string;
15
16
  routePriority?: Order;
16
17
  enabledAutoRefuel: boolean;
17
18
  slippage?: string;
@@ -2,6 +2,7 @@ export const getStateValues = (state) => ({
2
2
  gasPrice: state.gasPrice,
3
3
  language: state.language,
4
4
  languageCache: state.languageCache,
5
+ lastDefaultLanguage: state.lastDefaultLanguage,
5
6
  routePriority: state.routePriority,
6
7
  enabledAutoRefuel: state.enabledAutoRefuel,
7
8
  slippage: state.slippage,
@@ -1 +1 @@
1
- {"version":3,"file":"getStateValues.js","sourceRoot":"","sources":["../../../../../src/stores/settings/utils/getStateValues.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAiB,EAAE,CAAC,CAAC;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;IAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;IAC3C,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;IACzC,eAAe,EAAE,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE;IAC7C,iBAAiB,EAAE,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC7C,iBAAiB,EAAE,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE;CAClD,CAAC,CAAA"}
1
+ {"version":3,"file":"getStateValues.js","sourceRoot":"","sources":["../../../../../src/stores/settings/utils/getStateValues.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,KAAoB,EAAiB,EAAE,CAAC,CAAC;IACtE,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,mBAAmB,EAAE,KAAK,CAAC,mBAAmB;IAC9C,aAAa,EAAE,KAAK,CAAC,aAAa;IAClC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;IAC1C,QAAQ,EAAE,KAAK,CAAC,QAAQ;IACxB,eAAe,EAAE,CAAC,GAAG,KAAK,CAAC,eAAe,CAAC;IAC3C,cAAc,EAAE,CAAC,GAAG,KAAK,CAAC,cAAc,CAAC;IACzC,eAAe,EAAE,EAAE,GAAG,KAAK,CAAC,eAAe,EAAE;IAC7C,iBAAiB,EAAE,CAAC,GAAG,KAAK,CAAC,iBAAiB,CAAC;IAC/C,gBAAgB,EAAE,CAAC,GAAG,KAAK,CAAC,gBAAgB,CAAC;IAC7C,iBAAiB,EAAE,EAAE,GAAG,KAAK,CAAC,iBAAiB,EAAE;CAClD,CAAC,CAAA"}
@@ -69,6 +69,7 @@ export declare enum HiddenUI {
69
69
  IntegratorStepDetails = "integratorStepDetails",
70
70
  ReverseTokensButton = "reverseTokensButton",
71
71
  RouteTokenDescription = "routeTokenDescription",
72
+ RouteCardPriceImpact = "routeCardPriceImpact",
72
73
  ChainSelect = "chainSelect",
73
74
  BridgesSettings = "bridgesSettings",
74
75
  AddressBookConnectedWallets = "addressBookConnectedWallets",
@@ -19,6 +19,7 @@ export var HiddenUI;
19
19
  HiddenUI["IntegratorStepDetails"] = "integratorStepDetails";
20
20
  HiddenUI["ReverseTokensButton"] = "reverseTokensButton";
21
21
  HiddenUI["RouteTokenDescription"] = "routeTokenDescription";
22
+ HiddenUI["RouteCardPriceImpact"] = "routeCardPriceImpact";
22
23
  HiddenUI["ChainSelect"] = "chainSelect";
23
24
  HiddenUI["BridgesSettings"] = "bridgesSettings";
24
25
  HiddenUI["AddressBookConnectedWallets"] = "addressBookConnectedWallets";
@@ -1 +1 @@
1
- {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/types/widget.ts"],"names":[],"mappings":"AAiGA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAGD,MAAM,CAAN,IAAY,QAqBX;AArBD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,mDAAuC,CAAA;IACvC,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,2DAA+C,CAAA;IAC/C,uDAA2C,CAAA;IAC3C,2DAA+C,CAAA;IAC/C,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,uEAA2D,CAAA;IAC3D,6EAAiE,CAAA;IACjE,iDAAqC,CAAA;IACrC,iDAAqC,CAAA;IACrC,6DAAiD,CAAA;IACjD,6CAAiC,CAAA;AACnC,CAAC,EArBW,QAAQ,KAAR,QAAQ,QAqBnB;AAGD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,+DAAiD,CAAA;AACnD,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAsRD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
1
+ {"version":3,"file":"widget.js","sourceRoot":"","sources":["../../../src/types/widget.ts"],"names":[],"mappings":"AAiGA,MAAM,CAAN,IAAY,UAKX;AALD,WAAY,UAAU;IACpB,uCAAyB,CAAA;IACzB,qCAAuB,CAAA;IACvB,qCAAuB,CAAA;IACvB,iCAAmB,CAAA;AACrB,CAAC,EALW,UAAU,KAAV,UAAU,QAKrB;AAGD,MAAM,CAAN,IAAY,QAsBX;AAtBD,WAAY,QAAQ;IAClB,qCAAyB,CAAA;IACzB,mDAAuC,CAAA;IACvC,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,mCAAuB,CAAA;IACvB,+BAAmB,CAAA;IACnB,qCAAyB,CAAA;IACzB,2DAA+C,CAAA;IAC/C,uDAA2C,CAAA;IAC3C,2DAA+C,CAAA;IAC/C,yDAA6C,CAAA;IAC7C,uCAA2B,CAAA;IAC3B,+CAAmC,CAAA;IACnC,uEAA2D,CAAA;IAC3D,6EAAiE,CAAA;IACjE,iDAAqC,CAAA;IACrC,iDAAqC,CAAA;IACrC,6DAAiD,CAAA;IACjD,6CAAiC,CAAA;AACnC,CAAC,EAtBW,QAAQ,KAAR,QAAQ,QAsBnB;AAGD,MAAM,CAAN,IAAY,UAGX;AAHD,WAAY,UAAU;IACpB,qCAAuB,CAAA;IACvB,+DAAiD,CAAA;AACnD,CAAC,EAHW,UAAU,KAAV,UAAU,QAGrB;AAsRD,MAAM,CAAN,IAAY,aAIX;AAJD,WAAY,aAAa;IACvB,kCAAiB,CAAA;IACjB,wCAAuB,CAAA;IACvB,oCAAmB,CAAA;AACrB,CAAC,EAJW,aAAa,KAAb,aAAa,QAIxB"}
@@ -5,6 +5,15 @@
5
5
  */
6
6
  export declare function formatTokenAmount(amount: bigint | undefined, decimals: number): string;
7
7
  export declare function formatSlippage(slippage?: string, defaultValue?: string, returnInitial?: boolean): string;
8
+ /**
9
+ * Formats a user input amount string, normalizing it and optionally limiting decimal places.
10
+ * @param amount - The amount string to format (e.g., '123.45', '1,23', '0..')
11
+ * @param decimals - Maximum number of decimal places to allow. If null, no limit is applied.
12
+ * @param returnInitial - If true, preserves the input format during typing (e.g., keeps trailing dots,
13
+ * preserves leading zeros, keeps negative signs). If false (default), cleans up the
14
+ * format on blur (removes leading/trailing zeros, removes negative signs).
15
+ * @returns The formatted amount string, or empty string for invalid input.
16
+ */
8
17
  export declare function formatInputAmount(amount: string, decimals?: number | null, returnInitial?: boolean): string;
9
18
  export declare function formatTokenPrice(amount?: string | bigint, price?: string, decimals?: number): number;
10
19
  /**
@@ -34,34 +34,53 @@ export function formatSlippage(slippage = '', defaultValue = '', returnInitial =
34
34
  }
35
35
  return parsedSlippage.toString();
36
36
  }
37
+ /**
38
+ * Formats a user input amount string, normalizing it and optionally limiting decimal places.
39
+ * @param amount - The amount string to format (e.g., '123.45', '1,23', '0..')
40
+ * @param decimals - Maximum number of decimal places to allow. If null, no limit is applied.
41
+ * @param returnInitial - If true, preserves the input format during typing (e.g., keeps trailing dots,
42
+ * preserves leading zeros, keeps negative signs). If false (default), cleans up the
43
+ * format on blur (removes leading/trailing zeros, removes negative signs).
44
+ * @returns The formatted amount string, or empty string for invalid input.
45
+ */
37
46
  export function formatInputAmount(amount, decimals = null, returnInitial = false) {
38
47
  if (!amount) {
39
48
  return amount;
40
49
  }
50
+ // Replace commas with dots
41
51
  let formattedAmount = amount.trim().replaceAll(',', '.');
42
- if (returnInitial &&
43
- formattedAmount.startsWith('.') &&
44
- !Number.parseFloat(formattedAmount)) {
52
+ // Keep only the first dot, remove all subsequent dots
53
+ const dotIndex = formattedAmount.indexOf('.');
54
+ if (dotIndex !== -1) {
55
+ formattedAmount = `${formattedAmount.slice(0, dotIndex + 1)}${formattedAmount.slice(dotIndex + 1).replaceAll('.', '')}`;
56
+ }
57
+ // If the amount starts with a dot, prepend 0
58
+ if ((!returnInitial && formattedAmount.startsWith('.')) ||
59
+ formattedAmount === '.') {
45
60
  formattedAmount = `0${formattedAmount}`;
46
61
  }
62
+ // Parse the valid part of the amount
47
63
  const parsedAmount = Number.parseFloat(formattedAmount);
48
64
  if (Number.isNaN(Number(formattedAmount)) && !Number.isNaN(parsedAmount)) {
49
- return parsedAmount.toString();
65
+ formattedAmount = parsedAmount.toString();
50
66
  }
51
67
  if (Number.isNaN(Math.abs(Number(formattedAmount)))) {
52
68
  return '';
53
69
  }
54
- if (returnInitial) {
55
- return formattedAmount;
56
- }
57
- else if (formattedAmount.startsWith('.')) {
58
- formattedAmount = `0${formattedAmount}`;
59
- }
70
+ // Split and limit decimals
60
71
  let [integer, fraction = ''] = formattedAmount.split('.');
61
72
  if (decimals !== null && fraction.length > decimals) {
62
73
  fraction = fraction.slice(0, decimals);
63
74
  }
75
+ if (returnInitial) {
76
+ if (!fraction) {
77
+ return formattedAmount;
78
+ }
79
+ return `${integer}${fraction ? `.${fraction}` : ''}`;
80
+ }
81
+ // Remove leading zeros and minus sign
64
82
  integer = integer.replace(/^0+|-/, '');
83
+ // Remove trailing zeros
65
84
  fraction = fraction.replace(/(0+)$/, '');
66
85
  return `${integer || (fraction ? '0' : '')}${fraction ? `.${fraction}` : ''}`;
67
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/utils/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,47 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { formatInputAmount } from './format.js';
3
+ describe('formatInputAmount', () => {
4
+ it('should handle empty input', () => {
5
+ expect(formatInputAmount('')).toBe('');
6
+ });
7
+ it('should handle whitespace input', () => {
8
+ expect(formatInputAmount(' ')).toBe('');
9
+ });
10
+ it('should limit decimals', () => {
11
+ expect(formatInputAmount('123.456789', 2, true)).toBe('123.45');
12
+ expect(formatInputAmount('123.456789', 2, false)).toBe('123.45');
13
+ });
14
+ it('should handle leading and trailing zeros', () => {
15
+ expect(formatInputAmount('00123', 2, true)).toBe('00123');
16
+ expect(formatInputAmount('00123', 2, false)).toBe('123');
17
+ expect(formatInputAmount('123.45000', 6, true)).toBe('123.45000');
18
+ expect(formatInputAmount('123.45000', 6, false)).toBe('123.45');
19
+ });
20
+ it('should handle invalid input', () => {
21
+ expect(formatInputAmount('abc')).toBe('');
22
+ expect(formatInputAmount('-')).toBe('');
23
+ expect(formatInputAmount('123.456789abc', 2, true)).toBe('123.45');
24
+ expect(formatInputAmount('123.456789abc', 2, false)).toBe('123.45');
25
+ });
26
+ it('should normalize input (trim, commas, multiple dots)', () => {
27
+ expect(formatInputAmount(' 1,23 ', null, true)).toBe('1.23');
28
+ expect(formatInputAmount(' 1,23 ', null, false)).toBe('1.23');
29
+ expect(formatInputAmount('1.2.3', null, true)).toBe('1.23');
30
+ expect(formatInputAmount('1.2.3', null, false)).toBe('1.23');
31
+ expect(formatInputAmount('..5', null, true)).toBe('.5');
32
+ expect(formatInputAmount('..5', null, false)).toBe('0.5');
33
+ });
34
+ it('should handle zero input', () => {
35
+ expect(formatInputAmount('0', null, true)).toBe('0');
36
+ expect(formatInputAmount('00', null, true)).toBe('00');
37
+ expect(formatInputAmount('0.00', 2, true)).toBe('0.00');
38
+ expect(formatInputAmount('.0', 2, true)).toBe('.0');
39
+ expect(formatInputAmount('0..', 2, true)).toBe('0.');
40
+ expect(formatInputAmount('0', null, false)).toBe('');
41
+ expect(formatInputAmount('00', null, false)).toBe('');
42
+ expect(formatInputAmount('0.00', 2, false)).toBe('');
43
+ expect(formatInputAmount('.0', 2, false)).toBe('');
44
+ expect(formatInputAmount('0..', 2, false)).toBe('');
45
+ });
46
+ });
47
+ //# sourceMappingURL=format.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.test.js","sourceRoot":"","sources":["../../../src/utils/format.test.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.36.0",
3
+ "version": "3.37.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",
@@ -34,7 +34,7 @@
34
34
  "@bigmi/core": "^0.6.3",
35
35
  "@emotion/react": "^11.14.0",
36
36
  "@emotion/styled": "^11.14.1",
37
- "@lifi/sdk": "^3.13.6",
37
+ "@lifi/sdk": "^3.13.7",
38
38
  "@mui/icons-material": "^7.3.6",
39
39
  "@mui/material": "^7.3.6",
40
40
  "@mui/system": "^7.3.6",
@@ -52,7 +52,7 @@
52
52
  "react-transition-group": "^4.4.5",
53
53
  "viem": "^2.41.2",
54
54
  "zustand": "^5.0.9",
55
- "@lifi/wallet-management": "^3.20.0"
55
+ "@lifi/wallet-management": "^3.20.1"
56
56
  },
57
57
  "peerDependencies": {
58
58
  "@bigmi/react": ">=0.6.0",
package/package.json.tmp CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "3.36.0",
3
+ "version": "3.37.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",
@@ -53,7 +53,7 @@
53
53
  "@bigmi/core": "^0.6.3",
54
54
  "@emotion/react": "^11.14.0",
55
55
  "@emotion/styled": "^11.14.1",
56
- "@lifi/sdk": "^3.13.6",
56
+ "@lifi/sdk": "^3.13.7",
57
57
  "@lifi/wallet-management": "workspace:^",
58
58
  "@mui/icons-material": "^7.3.6",
59
59
  "@mui/material": "^7.3.6",
@@ -77,8 +77,8 @@
77
77
  "@types/react-transition-group": "^4.4.12",
78
78
  "cpy-cli": "^6.0.0",
79
79
  "madge": "^8.0.0",
80
- "react": "^19.2.0",
81
- "react-dom": "^19.2.0",
80
+ "react": "^19.2.1",
81
+ "react-dom": "^19.2.1",
82
82
  "typescript": "^5.9.3",
83
83
  "vitest": "^4.0.15"
84
84
  },
@@ -44,7 +44,8 @@ export const RouteCard: React.FC<
44
44
  ? { ...route.fromToken, amount: BigInt(route.fromAmount) }
45
45
  : { ...route.toToken, amount: BigInt(route.toAmount) }
46
46
  const impactToken: TokenAmount | undefined =
47
- subvariant !== 'custom'
47
+ subvariant !== 'custom' &&
48
+ !hiddenUI?.includes(HiddenUI.RouteCardPriceImpact)
48
49
  ? { ...route.fromToken, amount: BigInt(route.fromAmount) }
49
50
  : undefined
50
51
 
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '3.36.0'
2
+ export const version = '3.37.0'
@@ -1,6 +1,8 @@
1
1
  import { createInstance, type i18n } from 'i18next'
2
- import { useMemo, useRef } from 'react'
2
+ import { useEffect, useMemo, useRef } from 'react'
3
3
  import { I18nextProvider } from 'react-i18next'
4
+ import { useLanguages } from '../../hooks/useLanguages.js'
5
+ import { useSettingsStore } from '../../stores/settings/SettingsStore.js'
4
6
  import { useSettings } from '../../stores/settings/useSettings.js'
5
7
  import { compactNumberFormatter } from '../../utils/compactNumberFormatter.js'
6
8
  import { currencyExtendedFormatter } from '../../utils/currencyExtendedFormatter.js'
@@ -92,5 +94,40 @@ export const I18nProvider: React.FC<React.PropsWithChildren> = ({
92
94
  return i18n
93
95
  }, [language, languageResources, languages?.default, languageCache])
94
96
 
95
- return <I18nextProvider i18n={i18nInstance}>{children}</I18nextProvider>
97
+ return (
98
+ <I18nextProvider i18n={i18nInstance}>
99
+ {children}
100
+ <DefaultLanguageHandler />
101
+ </I18nextProvider>
102
+ )
103
+ }
104
+
105
+ // Sync language settings internally when config.languages.default changes externally
106
+ const DefaultLanguageHandler: React.FC = () => {
107
+ const { languages } = useWidgetConfig()
108
+ const [lastDefaultLanguage, setValue] = useSettingsStore((state) => [
109
+ state.lastDefaultLanguage,
110
+ state.setValue,
111
+ ])
112
+ const { setLanguageWithCode: setLanguage } = useLanguages()
113
+
114
+ useEffect(() => {
115
+ const currentDefaultLanguage = languages?.default
116
+
117
+ const defaultLanguageChanged =
118
+ currentDefaultLanguage && currentDefaultLanguage !== lastDefaultLanguage
119
+
120
+ if (!defaultLanguageChanged) {
121
+ return
122
+ }
123
+
124
+ const updateLanguage = async () => {
125
+ await setLanguage(currentDefaultLanguage)
126
+ setValue('lastDefaultLanguage', currentDefaultLanguage)
127
+ }
128
+
129
+ updateLanguage()
130
+ }, [languages?.default, setValue, lastDefaultLanguage, setLanguage])
131
+
132
+ return null
96
133
  }
@@ -19,6 +19,7 @@ export interface SettingsProps {
19
19
  gasPrice?: string
20
20
  language?: string
21
21
  languageCache?: LanguageResource
22
+ lastDefaultLanguage?: string
22
23
  routePriority?: Order
23
24
  enabledAutoRefuel: boolean
24
25
  slippage?: string
@@ -4,6 +4,7 @@ export const getStateValues = (state: SettingsState): SettingsProps => ({
4
4
  gasPrice: state.gasPrice,
5
5
  language: state.language,
6
6
  languageCache: state.languageCache,
7
+ lastDefaultLanguage: state.lastDefaultLanguage,
7
8
  routePriority: state.routePriority,
8
9
  enabledAutoRefuel: state.enabledAutoRefuel,
9
10
  slippage: state.slippage,
@@ -116,6 +116,7 @@ export enum HiddenUI {
116
116
  IntegratorStepDetails = 'integratorStepDetails',
117
117
  ReverseTokensButton = 'reverseTokensButton',
118
118
  RouteTokenDescription = 'routeTokenDescription',
119
+ RouteCardPriceImpact = 'routeCardPriceImpact',
119
120
  ChainSelect = 'chainSelect',
120
121
  BridgesSettings = 'bridgesSettings',
121
122
  AddressBookConnectedWallets = 'addressBookConnectedWallets',
@@ -0,0 +1,53 @@
1
+ import { describe, expect, it } from 'vitest'
2
+ import { formatInputAmount } from './format.js'
3
+
4
+ describe('formatInputAmount', () => {
5
+ it('should handle empty input', () => {
6
+ expect(formatInputAmount('')).toBe('')
7
+ })
8
+
9
+ it('should handle whitespace input', () => {
10
+ expect(formatInputAmount(' ')).toBe('')
11
+ })
12
+
13
+ it('should limit decimals', () => {
14
+ expect(formatInputAmount('123.456789', 2, true)).toBe('123.45')
15
+ expect(formatInputAmount('123.456789', 2, false)).toBe('123.45')
16
+ })
17
+
18
+ it('should handle leading and trailing zeros', () => {
19
+ expect(formatInputAmount('00123', 2, true)).toBe('00123')
20
+ expect(formatInputAmount('00123', 2, false)).toBe('123')
21
+ expect(formatInputAmount('123.45000', 6, true)).toBe('123.45000')
22
+ expect(formatInputAmount('123.45000', 6, false)).toBe('123.45')
23
+ })
24
+
25
+ it('should handle invalid input', () => {
26
+ expect(formatInputAmount('abc')).toBe('')
27
+ expect(formatInputAmount('-')).toBe('')
28
+ expect(formatInputAmount('123.456789abc', 2, true)).toBe('123.45')
29
+ expect(formatInputAmount('123.456789abc', 2, false)).toBe('123.45')
30
+ })
31
+
32
+ it('should normalize input (trim, commas, multiple dots)', () => {
33
+ expect(formatInputAmount(' 1,23 ', null, true)).toBe('1.23')
34
+ expect(formatInputAmount(' 1,23 ', null, false)).toBe('1.23')
35
+ expect(formatInputAmount('1.2.3', null, true)).toBe('1.23')
36
+ expect(formatInputAmount('1.2.3', null, false)).toBe('1.23')
37
+ expect(formatInputAmount('..5', null, true)).toBe('.5')
38
+ expect(formatInputAmount('..5', null, false)).toBe('0.5')
39
+ })
40
+
41
+ it('should handle zero input', () => {
42
+ expect(formatInputAmount('0', null, true)).toBe('0')
43
+ expect(formatInputAmount('00', null, true)).toBe('00')
44
+ expect(formatInputAmount('0.00', 2, true)).toBe('0.00')
45
+ expect(formatInputAmount('.0', 2, true)).toBe('.0')
46
+ expect(formatInputAmount('0..', 2, true)).toBe('0.')
47
+ expect(formatInputAmount('0', null, false)).toBe('')
48
+ expect(formatInputAmount('00', null, false)).toBe('')
49
+ expect(formatInputAmount('0.00', 2, false)).toBe('')
50
+ expect(formatInputAmount('.0', 2, false)).toBe('')
51
+ expect(formatInputAmount('0..', 2, false)).toBe('')
52
+ })
53
+ })
@@ -45,6 +45,15 @@ export function formatSlippage(
45
45
  return parsedSlippage.toString()
46
46
  }
47
47
 
48
+ /**
49
+ * Formats a user input amount string, normalizing it and optionally limiting decimal places.
50
+ * @param amount - The amount string to format (e.g., '123.45', '1,23', '0..')
51
+ * @param decimals - Maximum number of decimal places to allow. If null, no limit is applied.
52
+ * @param returnInitial - If true, preserves the input format during typing (e.g., keeps trailing dots,
53
+ * preserves leading zeros, keeps negative signs). If false (default), cleans up the
54
+ * format on blur (removes leading/trailing zeros, removes negative signs).
55
+ * @returns The formatted amount string, or empty string for invalid input.
56
+ */
48
57
  export function formatInputAmount(
49
58
  amount: string,
50
59
  decimals: number | null = null,
@@ -53,31 +62,49 @@ export function formatInputAmount(
53
62
  if (!amount) {
54
63
  return amount
55
64
  }
65
+
66
+ // Replace commas with dots
56
67
  let formattedAmount = amount.trim().replaceAll(',', '.')
68
+
69
+ // Keep only the first dot, remove all subsequent dots
70
+ const dotIndex = formattedAmount.indexOf('.')
71
+ if (dotIndex !== -1) {
72
+ formattedAmount = `${formattedAmount.slice(0, dotIndex + 1)}${formattedAmount.slice(dotIndex + 1).replaceAll('.', '')}`
73
+ }
74
+
75
+ // If the amount starts with a dot, prepend 0
57
76
  if (
58
- returnInitial &&
59
- formattedAmount.startsWith('.') &&
60
- !Number.parseFloat(formattedAmount)
77
+ (!returnInitial && formattedAmount.startsWith('.')) ||
78
+ formattedAmount === '.'
61
79
  ) {
62
80
  formattedAmount = `0${formattedAmount}`
63
81
  }
82
+
83
+ // Parse the valid part of the amount
64
84
  const parsedAmount = Number.parseFloat(formattedAmount)
65
85
  if (Number.isNaN(Number(formattedAmount)) && !Number.isNaN(parsedAmount)) {
66
- return parsedAmount.toString()
86
+ formattedAmount = parsedAmount.toString()
67
87
  }
68
88
  if (Number.isNaN(Math.abs(Number(formattedAmount)))) {
69
89
  return ''
70
90
  }
71
- if (returnInitial) {
72
- return formattedAmount
73
- } else if (formattedAmount.startsWith('.')) {
74
- formattedAmount = `0${formattedAmount}`
75
- }
91
+
92
+ // Split and limit decimals
76
93
  let [integer, fraction = ''] = formattedAmount.split('.')
77
94
  if (decimals !== null && fraction.length > decimals) {
78
95
  fraction = fraction.slice(0, decimals)
79
96
  }
97
+
98
+ if (returnInitial) {
99
+ if (!fraction) {
100
+ return formattedAmount
101
+ }
102
+ return `${integer}${fraction ? `.${fraction}` : ''}`
103
+ }
104
+
105
+ // Remove leading zeros and minus sign
80
106
  integer = integer.replace(/^0+|-/, '')
107
+ // Remove trailing zeros
81
108
  fraction = fraction.replace(/(0+)$/, '')
82
109
 
83
110
  return `${integer || (fraction ? '0' : '')}${fraction ? `.${fraction}` : ''}`