@lifi/widget 3.25.0-beta.5 → 3.26.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 (274) hide show
  1. package/CHANGELOG.md +43 -0
  2. package/dist/esm/components/AmountInput/AmountInput.js +75 -17
  3. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  4. package/dist/esm/components/AmountInput/AmountInput.style.d.ts +4 -0
  5. package/dist/esm/components/AmountInput/AmountInput.style.js +11 -0
  6. package/dist/esm/components/AmountInput/AmountInput.style.js.map +1 -1
  7. package/dist/esm/components/AmountInput/AmountInputAdornment.style.d.ts +1 -0
  8. package/dist/esm/components/AmountInput/AmountInputAdornment.style.js +64 -5
  9. package/dist/esm/components/AmountInput/AmountInputAdornment.style.js.map +1 -1
  10. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js +20 -7
  11. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
  12. package/dist/esm/components/AmountInput/PriceFormHelperText.js +41 -15
  13. package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
  14. package/dist/esm/components/AmountInput/PriceFormHelperText.style.d.ts +1 -0
  15. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js +29 -0
  16. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js.map +1 -0
  17. package/dist/esm/components/AppContainer.js +1 -0
  18. package/dist/esm/components/AppContainer.js.map +1 -1
  19. package/dist/esm/components/ChainSelect/useChainSelect.js +2 -4
  20. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  21. package/dist/esm/components/Chains/ChainList.d.ts +2 -3
  22. package/dist/esm/components/Chains/ChainList.js +4 -3
  23. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  24. package/dist/esm/components/Chains/ChainList.style.js +10 -3
  25. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  26. package/dist/esm/components/Chains/ChainListItem.d.ts +4 -1
  27. package/dist/esm/components/Chains/ChainListItem.js +14 -2
  28. package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
  29. package/dist/esm/components/Chains/PinChainButton.d.ts +7 -0
  30. package/dist/esm/components/Chains/PinChainButton.js +34 -0
  31. package/dist/esm/components/Chains/PinChainButton.js.map +1 -0
  32. package/dist/esm/components/Chains/SelectChainContent.js +15 -16
  33. package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
  34. package/dist/esm/components/Chains/VirtualizedChainList.d.ts +2 -1
  35. package/dist/esm/components/Chains/VirtualizedChainList.js +45 -9
  36. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  37. package/dist/esm/components/Header/NavigationHeader.js +5 -1
  38. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  39. package/dist/esm/components/Messages/MinFromAmountUSDMessage.d.ts +6 -0
  40. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js +15 -0
  41. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -0
  42. package/dist/esm/components/Messages/WarningMessages.js +3 -0
  43. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  44. package/dist/esm/components/Messages/useMessageQueue.js +15 -4
  45. package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
  46. package/dist/esm/components/Routes/RoutesContent.js +3 -2
  47. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  48. package/dist/esm/components/Routes/RoutesExpanded.style.js +3 -2
  49. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  50. package/dist/esm/components/SendToWallet/SendToWalletButton.js +1 -1
  51. package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
  52. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js +3 -3
  53. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
  54. package/dist/esm/components/Step/StepProcess.js +3 -8
  55. package/dist/esm/components/Step/StepProcess.js.map +1 -1
  56. package/dist/esm/components/TokenList/TokenDetailsSheet.js +0 -2
  57. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  58. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +27 -4
  59. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  60. package/dist/esm/components/TokenList/TokenList.js +10 -1
  61. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  62. package/dist/esm/components/TokenList/TokenListItem.js +3 -1
  63. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  64. package/dist/esm/components/TokenList/useTokenSelect.js +2 -4
  65. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  66. package/dist/esm/config/version.d.ts +1 -1
  67. package/dist/esm/config/version.js +1 -1
  68. package/dist/esm/config/version.js.map +1 -1
  69. package/dist/esm/hooks/useFromAmountThreshold.d.ts +4 -0
  70. package/dist/esm/hooks/useFromAmountThreshold.js +23 -0
  71. package/dist/esm/hooks/useFromAmountThreshold.js.map +1 -0
  72. package/dist/esm/hooks/useGasSufficiency.js +3 -3
  73. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  74. package/dist/esm/hooks/useLongPress.d.ts +7 -0
  75. package/dist/esm/hooks/useLongPress.js +41 -0
  76. package/dist/esm/hooks/useLongPress.js.map +1 -0
  77. package/dist/esm/hooks/useNavigateBack.d.ts +1 -1
  78. package/dist/esm/hooks/useNavigateBack.js +8 -2
  79. package/dist/esm/hooks/useNavigateBack.js.map +1 -1
  80. package/dist/esm/hooks/useRouteExecution.js +1 -2
  81. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  82. package/dist/esm/hooks/useRoutes.js +19 -4
  83. package/dist/esm/hooks/useRoutes.js.map +1 -1
  84. package/dist/esm/hooks/useSettingMonitor.js +1 -2
  85. package/dist/esm/hooks/useSettingMonitor.js.map +1 -1
  86. package/dist/esm/hooks/useTokenAddressBalance.js +4 -1
  87. package/dist/esm/hooks/useTokenAddressBalance.js.map +1 -1
  88. package/dist/esm/hooks/useTokenBalances.d.ts +1 -2
  89. package/dist/esm/hooks/useTokenBalances.js +2 -3
  90. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  91. package/dist/esm/hooks/useTokenSearch.d.ts +2 -2
  92. package/dist/esm/hooks/useTokenSearch.js +5 -2
  93. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  94. package/dist/esm/hooks/useTokens.d.ts +1 -2
  95. package/dist/esm/hooks/useTokens.js +3 -12
  96. package/dist/esm/hooks/useTokens.js.map +1 -1
  97. package/dist/esm/hooks/useTools.js +2 -2
  98. package/dist/esm/hooks/useTools.js.map +1 -1
  99. package/dist/esm/i18n/bn.json +5 -2
  100. package/dist/esm/i18n/de.json +5 -2
  101. package/dist/esm/i18n/en.json +5 -2
  102. package/dist/esm/i18n/es.json +5 -2
  103. package/dist/esm/i18n/fr.json +5 -2
  104. package/dist/esm/i18n/hi.json +5 -2
  105. package/dist/esm/i18n/id.json +5 -2
  106. package/dist/esm/i18n/it.json +5 -2
  107. package/dist/esm/i18n/ja.json +5 -2
  108. package/dist/esm/i18n/ko.json +5 -2
  109. package/dist/esm/i18n/pl.json +4 -1
  110. package/dist/esm/i18n/pt.json +5 -2
  111. package/dist/esm/i18n/th.json +5 -2
  112. package/dist/esm/i18n/tr.json +5 -2
  113. package/dist/esm/i18n/uk.json +5 -2
  114. package/dist/esm/i18n/vi.json +5 -2
  115. package/dist/esm/i18n/zh.json +5 -2
  116. package/dist/esm/pages/SelectEnabledToolsPage.js +4 -2
  117. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  118. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js +14 -7
  119. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js.map +1 -1
  120. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js +1 -2
  121. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  122. package/dist/esm/pages/TransactionPage/TransactionPage.js +5 -3
  123. package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
  124. package/dist/esm/stores/bookmarks/BookmarkStore.d.ts +1 -2
  125. package/dist/esm/stores/bookmarks/BookmarkStore.js +3 -3
  126. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  127. package/dist/esm/stores/bookmarks/useBookmarkActions.js +1 -2
  128. package/dist/esm/stores/bookmarks/useBookmarkActions.js.map +1 -1
  129. package/dist/esm/stores/bookmarks/useBookmarks.js +1 -2
  130. package/dist/esm/stores/bookmarks/useBookmarks.js.map +1 -1
  131. package/dist/esm/stores/chains/ChainOrderStore.d.ts +1 -1
  132. package/dist/esm/stores/chains/ChainOrderStore.js +20 -7
  133. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  134. package/dist/esm/stores/chains/createChainOrderStore.js +19 -1
  135. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  136. package/dist/esm/stores/chains/types.d.ts +2 -0
  137. package/dist/esm/stores/chains/useChainOrder.js +1 -2
  138. package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
  139. package/dist/esm/stores/form/useFieldActions.js +1 -2
  140. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  141. package/dist/esm/stores/form/useFieldValues.js +1 -2
  142. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  143. package/dist/esm/stores/form/useFormStore.d.ts +1 -2
  144. package/dist/esm/stores/form/useFormStore.js +3 -3
  145. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  146. package/dist/esm/stores/form/useTouchedFields.js +1 -2
  147. package/dist/esm/stores/form/useTouchedFields.js.map +1 -1
  148. package/dist/esm/stores/form/useValidation.js +5 -2
  149. package/dist/esm/stores/form/useValidation.js.map +1 -1
  150. package/dist/esm/stores/form/useValidationActions.js +1 -2
  151. package/dist/esm/stores/form/useValidationActions.js.map +1 -1
  152. package/dist/esm/stores/header/useHeaderStore.d.ts +1 -1
  153. package/dist/esm/stores/header/useHeaderStore.js +5 -5
  154. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  155. package/dist/esm/stores/inputMode/useInputModeStore.d.ts +9 -0
  156. package/dist/esm/stores/inputMode/useInputModeStore.js +19 -0
  157. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -0
  158. package/dist/esm/stores/routes/RouteExecutionStore.d.ts +1 -1
  159. package/dist/esm/stores/routes/RouteExecutionStore.js +3 -2
  160. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  161. package/dist/esm/stores/routes/useExecutingRoutesIds.js +1 -2
  162. package/dist/esm/stores/routes/useExecutingRoutesIds.js.map +1 -1
  163. package/dist/esm/stores/settings/useSendToWalletStore.d.ts +2 -1
  164. package/dist/esm/stores/settings/useSendToWalletStore.js +6 -3
  165. package/dist/esm/stores/settings/useSendToWalletStore.js.map +1 -1
  166. package/dist/esm/stores/settings/useSettings.js +1 -2
  167. package/dist/esm/stores/settings/useSettings.js.map +1 -1
  168. package/dist/esm/stores/settings/useSettingsActions.js +1 -2
  169. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  170. package/dist/esm/stores/settings/useSettingsStore.d.ts +2 -1
  171. package/dist/esm/stores/settings/useSettingsStore.js +5 -1
  172. package/dist/esm/stores/settings/useSettingsStore.js.map +1 -1
  173. package/dist/esm/stores/settings/useSplitSubvariantStore.js +2 -1
  174. package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
  175. package/dist/esm/themes/createTheme.js +5 -1
  176. package/dist/esm/themes/createTheme.js.map +1 -1
  177. package/dist/esm/types/widget.d.ts +3 -1
  178. package/dist/esm/types/widget.js +1 -0
  179. package/dist/esm/types/widget.js.map +1 -1
  180. package/dist/esm/utils/format.d.ts +4 -0
  181. package/dist/esm/utils/format.js +26 -0
  182. package/dist/esm/utils/format.js.map +1 -1
  183. package/dist/esm/utils/getPriceImpact.d.ts +2 -2
  184. package/dist/esm/utils/getPriceImpact.js.map +1 -1
  185. package/package.json +12 -12
  186. package/package.json.tmp +14 -14
  187. package/src/components/AmountInput/AmountInput.style.tsx +13 -0
  188. package/src/components/AmountInput/AmountInput.tsx +91 -18
  189. package/src/components/AmountInput/AmountInputAdornment.style.tsx +66 -5
  190. package/src/components/AmountInput/AmountInputEndAdornment.tsx +40 -10
  191. package/src/components/AmountInput/PriceFormHelperText.style.tsx +29 -0
  192. package/src/components/AmountInput/PriceFormHelperText.tsx +63 -19
  193. package/src/components/AppContainer.tsx +1 -0
  194. package/src/components/ChainSelect/useChainSelect.ts +2 -4
  195. package/src/components/Chains/ChainList.style.tsx +10 -2
  196. package/src/components/Chains/ChainList.tsx +6 -5
  197. package/src/components/Chains/ChainListItem.tsx +29 -0
  198. package/src/components/Chains/PinChainButton.tsx +51 -0
  199. package/src/components/Chains/SelectChainContent.tsx +18 -21
  200. package/src/components/Chains/VirtualizedChainList.tsx +67 -20
  201. package/src/components/Header/NavigationHeader.tsx +10 -1
  202. package/src/components/Messages/MinFromAmountUSDMessage.tsx +35 -0
  203. package/src/components/Messages/WarningMessages.tsx +8 -0
  204. package/src/components/Messages/useMessageQueue.ts +16 -4
  205. package/src/components/Routes/RoutesContent.tsx +6 -2
  206. package/src/components/Routes/RoutesExpanded.style.ts +3 -2
  207. package/src/components/SendToWallet/SendToWalletButton.tsx +1 -1
  208. package/src/components/SendToWallet/SendToWalletExpandButton.tsx +8 -3
  209. package/src/components/Step/StepProcess.tsx +3 -8
  210. package/src/components/TokenList/TokenDetailsSheet.tsx +0 -2
  211. package/src/components/TokenList/TokenDetailsSheetContent.tsx +50 -3
  212. package/src/components/TokenList/TokenList.tsx +24 -1
  213. package/src/components/TokenList/TokenListItem.tsx +6 -0
  214. package/src/components/TokenList/useTokenSelect.ts +2 -4
  215. package/src/config/version.ts +1 -1
  216. package/src/hooks/useFromAmountThreshold.ts +35 -0
  217. package/src/hooks/useGasSufficiency.ts +4 -4
  218. package/src/hooks/useLongPress.ts +51 -0
  219. package/src/hooks/useNavigateBack.ts +26 -17
  220. package/src/hooks/useRouteExecution.ts +1 -3
  221. package/src/hooks/useRoutes.ts +24 -4
  222. package/src/hooks/useSettingMonitor.ts +7 -11
  223. package/src/hooks/useTokenAddressBalance.ts +6 -1
  224. package/src/hooks/useTokenBalances.ts +3 -10
  225. package/src/hooks/useTokenSearch.ts +7 -4
  226. package/src/hooks/useTokens.ts +4 -31
  227. package/src/hooks/useTools.ts +2 -2
  228. package/src/i18n/bn.json +5 -2
  229. package/src/i18n/de.json +5 -2
  230. package/src/i18n/en.json +5 -2
  231. package/src/i18n/es.json +5 -2
  232. package/src/i18n/fr.json +5 -2
  233. package/src/i18n/hi.json +5 -2
  234. package/src/i18n/id.json +5 -2
  235. package/src/i18n/it.json +5 -2
  236. package/src/i18n/ja.json +5 -2
  237. package/src/i18n/ko.json +5 -2
  238. package/src/i18n/pl.json +4 -1
  239. package/src/i18n/pt.json +5 -2
  240. package/src/i18n/th.json +5 -2
  241. package/src/i18n/tr.json +5 -2
  242. package/src/i18n/uk.json +5 -2
  243. package/src/i18n/vi.json +5 -2
  244. package/src/i18n/zh.json +5 -2
  245. package/src/pages/SelectEnabledToolsPage.tsx +4 -5
  246. package/src/pages/SelectTokenPage/SearchTokenInput.tsx +19 -7
  247. package/src/pages/SettingsPage/BridgeAndExchangeSettings.tsx +1 -2
  248. package/src/pages/TransactionPage/TransactionPage.tsx +17 -9
  249. package/src/stores/bookmarks/BookmarkStore.tsx +3 -6
  250. package/src/stores/bookmarks/useBookmarkActions.ts +9 -13
  251. package/src/stores/bookmarks/useBookmarks.ts +1 -3
  252. package/src/stores/chains/ChainOrderStore.tsx +26 -8
  253. package/src/stores/chains/createChainOrderStore.ts +19 -1
  254. package/src/stores/chains/types.ts +2 -0
  255. package/src/stores/chains/useChainOrder.ts +1 -5
  256. package/src/stores/form/useFieldActions.ts +10 -14
  257. package/src/stores/form/useFieldValues.ts +1 -3
  258. package/src/stores/form/useFormStore.ts +3 -6
  259. package/src/stores/form/useTouchedFields.ts +1 -2
  260. package/src/stores/form/useValidation.ts +5 -5
  261. package/src/stores/form/useValidationActions.ts +5 -9
  262. package/src/stores/header/useHeaderStore.tsx +5 -14
  263. package/src/stores/inputMode/useInputModeStore.ts +29 -0
  264. package/src/stores/routes/RouteExecutionStore.tsx +3 -3
  265. package/src/stores/routes/useExecutingRoutesIds.ts +14 -17
  266. package/src/stores/settings/useSendToWalletStore.ts +11 -8
  267. package/src/stores/settings/useSettings.ts +8 -11
  268. package/src/stores/settings/useSettingsActions.ts +8 -12
  269. package/src/stores/settings/useSettingsStore.ts +8 -1
  270. package/src/stores/settings/useSplitSubvariantStore.tsx +2 -1
  271. package/src/themes/createTheme.ts +5 -1
  272. package/src/types/widget.ts +2 -0
  273. package/src/utils/format.ts +33 -0
  274. package/src/utils/getPriceImpact.ts +2 -2
@@ -1,5 +1,4 @@
1
1
  import { useAccount } from '@lifi/wallet-management'
2
- import { shallow } from 'zustand/shallow'
3
2
  import { useRouteExecutionStore } from './RouteExecutionStore.js'
4
3
  import type { RouteExecution } from './types.js'
5
4
  import { RouteExecutionStatus } from './types.js'
@@ -7,21 +6,19 @@ import { RouteExecutionStatus } from './types.js'
7
6
  export const useExecutingRoutesIds = () => {
8
7
  const { accounts } = useAccount()
9
8
  const accountAddresses = accounts.map((account) => account.address)
10
- return useRouteExecutionStore(
11
- (state) =>
12
- (Object.values(state.routes) as RouteExecution[])
13
- .filter(
14
- (item) =>
15
- accountAddresses.includes(item.route.fromAddress) &&
16
- (item.status === RouteExecutionStatus.Pending ||
17
- item.status === RouteExecutionStatus.Failed)
18
- )
19
- .sort(
20
- (a, b) =>
21
- (b?.route.steps[0].execution?.process[0]?.startedAt ?? 0) -
22
- (a?.route.steps[0].execution?.process[0]?.startedAt ?? 0)
23
- )
24
- .map(({ route }) => route.id),
25
- shallow
9
+ return useRouteExecutionStore((state) =>
10
+ (Object.values(state.routes) as RouteExecution[])
11
+ .filter(
12
+ (item) =>
13
+ accountAddresses.includes(item.route.fromAddress) &&
14
+ (item.status === RouteExecutionStatus.Pending ||
15
+ item.status === RouteExecutionStatus.Failed)
16
+ )
17
+ .sort(
18
+ (a, b) =>
19
+ (b?.route.steps[0].execution?.process[0]?.startedAt ?? 0) -
20
+ (a?.route.steps[0].execution?.process[0]?.startedAt ?? 0)
21
+ )
22
+ .map(({ route }) => route.id)
26
23
  )
27
24
  }
@@ -1,8 +1,8 @@
1
- import { shallow } from 'zustand/shallow'
1
+ import { useShallow } from 'zustand/shallow'
2
2
  import { createWithEqualityFn } from 'zustand/traditional'
3
3
  import type { SendToWalletStore } from './types.js'
4
4
 
5
- export const useSendToWalletStore = createWithEqualityFn<SendToWalletStore>(
5
+ export const sendToWalletStore = createWithEqualityFn<SendToWalletStore>(
6
6
  (set) => ({
7
7
  showSendToWallet: false,
8
8
  setSendToWallet: (value) =>
@@ -13,13 +13,16 @@ export const useSendToWalletStore = createWithEqualityFn<SendToWalletStore>(
13
13
  Object.is
14
14
  )
15
15
 
16
+ export const useSendToWalletStore = <T>(
17
+ selector: (state: SendToWalletStore) => T
18
+ ): T => {
19
+ return sendToWalletStore(useShallow(selector))
20
+ }
21
+
16
22
  export const useSendToWalletActions = () => {
17
- const actions = useSendToWalletStore(
18
- (store) => ({
19
- setSendToWallet: store.setSendToWallet,
20
- }),
21
- shallow
22
- )
23
+ const actions = useSendToWalletStore((store) => ({
24
+ setSendToWallet: store.setSendToWallet,
25
+ }))
23
26
 
24
27
  return actions
25
28
  }
@@ -1,19 +1,16 @@
1
- import { shallow } from 'zustand/shallow'
2
1
  import type { SettingsState } from './types.js'
3
2
  import { useSettingsStore } from './useSettingsStore.js'
4
3
 
5
4
  export const useSettings = <K extends keyof SettingsState>(
6
5
  keys: Array<K>
7
6
  ): Pick<SettingsState, (typeof keys)[number]> => {
8
- return useSettingsStore(
9
- (state) =>
10
- keys.reduce(
11
- (values, key) => {
12
- values[key] = state[key]
13
- return values
14
- },
15
- {} as Pick<SettingsState, (typeof keys)[number]>
16
- ),
17
- shallow
7
+ return useSettingsStore((state) =>
8
+ keys.reduce(
9
+ (values, key) => {
10
+ values[key] = state[key]
11
+ return values
12
+ },
13
+ {} as Pick<SettingsState, (typeof keys)[number]>
14
+ )
18
15
  )
19
16
  }
@@ -1,5 +1,4 @@
1
1
  import { useCallback } from 'react'
2
- import { shallow } from 'zustand/shallow'
3
2
  import type { widgetEvents } from '../../hooks/useWidgetEvents.js'
4
3
  import { useWidgetEvents } from '../../hooks/useWidgetEvents.js'
5
4
  import { WidgetEvent } from '../../types/events.js'
@@ -47,17 +46,14 @@ const emitEventOnChange = <T extends (...args: any[]) => any>(
47
46
 
48
47
  export const useSettingsActions = () => {
49
48
  const emitter = useWidgetEvents()
50
- const actions = useSettingsStore(
51
- (state) => ({
52
- setValue: state.setValue,
53
- getValue: state.getValue,
54
- getSettings: state.getSettings,
55
- reset: state.reset,
56
- setToolValue: state.setToolValue,
57
- toggleToolKeys: state.toggleToolKeys,
58
- }),
59
- shallow
60
- )
49
+ const actions = useSettingsStore((state) => ({
50
+ setValue: state.setValue,
51
+ getValue: state.getValue,
52
+ getSettings: state.getSettings,
53
+ reset: state.reset,
54
+ setToolValue: state.setToolValue,
55
+ toggleToolKeys: state.toggleToolKeys,
56
+ }))
61
57
 
62
58
  const setValueWithEmittedEvent = useCallback<ValueSetter<SettingsProps>>(
63
59
  (value, newValue) => {
@@ -1,6 +1,7 @@
1
1
  /** biome-ignore-all lint/correctness/noUnusedVariables: allowed in this store */
2
2
  import type { StateCreator } from 'zustand'
3
3
  import { persist } from 'zustand/middleware'
4
+ import { useShallow } from 'zustand/shallow'
4
5
  import { createWithEqualityFn } from 'zustand/traditional'
5
6
  import type { SettingsProps, SettingsState } from './types.js'
6
7
  import { SettingsToolTypes } from './types.js'
@@ -28,7 +29,7 @@ export const defaultSettings: SettingsProps = {
28
29
  _enabledExchanges: {},
29
30
  }
30
31
 
31
- export const useSettingsStore = createWithEqualityFn<SettingsState>(
32
+ export const settingsStore = createWithEqualityFn<SettingsState>(
32
33
  persist(
33
34
  (set, get) => ({
34
35
  ...defaultSettings,
@@ -176,3 +177,9 @@ export const useSettingsStore = createWithEqualityFn<SettingsState>(
176
177
  ) as StateCreator<SettingsState, [], [], SettingsState>,
177
178
  Object.is
178
179
  )
180
+
181
+ export const useSettingsStore = <T>(
182
+ selector: (state: SettingsState) => T
183
+ ): T => {
184
+ return settingsStore(useShallow(selector))
185
+ }
@@ -1,4 +1,5 @@
1
1
  import { createContext, useContext, useRef } from 'react'
2
+ import { useShallow } from 'zustand/shallow'
2
3
  import { createWithEqualityFn } from 'zustand/traditional'
3
4
  import type {
4
5
  SplitSubvariantProps,
@@ -47,7 +48,7 @@ export function useSplitSubvariantStore<T>(
47
48
  selector: (state: SplitSubvariantState) => T
48
49
  ): T {
49
50
  const useStore = useSplitSubvariantStoreContext()
50
- return useStore(selector)
51
+ return useStore(useShallow(selector))
51
52
  }
52
53
 
53
54
  export const createSplitSubvariantStore = ({ state }: SplitSubvariantProps) =>
@@ -76,7 +76,11 @@ export const createTheme = (widgetTheme: WidgetTheme = {}) => {
76
76
  : darken(secondaryMainColorDark, 0.2)
77
77
 
78
78
  const theme = createMuiTheme({
79
- cssVariables: { cssVarPrefix: 'lifi', colorSchemeSelector: 'class' },
79
+ cssVariables: {
80
+ cssVarPrefix: 'lifi',
81
+ colorSchemeSelector: 'class',
82
+ nativeColor: true,
83
+ },
80
84
  colorSchemes: {
81
85
  light: {
82
86
  palette: {
@@ -112,6 +112,7 @@ export enum HiddenUI {
112
112
  ChainSelect = 'chainSelect',
113
113
  BridgesSettings = 'bridgesSettings',
114
114
  AddressBookConnectedWallets = 'addressBookConnectedWallets',
115
+ LowAddressActivityConfirmation = 'lowAddressActivityConfirmation',
115
116
  }
116
117
  export type HiddenUIType = `${HiddenUI}`
117
118
 
@@ -280,6 +281,7 @@ export interface WidgetConfig {
280
281
  toAddress?: ToAddress
281
282
  toAddresses?: ToAddress[]
282
283
  fromAmount?: number | string
284
+ minFromAmountUSD?: number
283
285
  toAmount?: number | string
284
286
  formUpdateKey?: string
285
287
 
@@ -96,6 +96,39 @@ export function formatTokenPrice(
96
96
  return Number.parseFloat(formattedAmount) * Number.parseFloat(price)
97
97
  }
98
98
 
99
+ /**
100
+ * Formatter for price value to token amount
101
+ */
102
+ const formatter = new Intl.NumberFormat('en', {
103
+ notation: 'standard',
104
+ roundingPriority: 'morePrecision',
105
+ maximumSignificantDigits: 21,
106
+ maximumFractionDigits: 21,
107
+ useGrouping: false,
108
+ })
109
+
110
+ /**
111
+ * Convert price value to token amount
112
+ */
113
+ export function priceToTokenAmount(priceValue: string, priceUSD?: string) {
114
+ if (!priceValue || !priceUSD) {
115
+ return '0'
116
+ }
117
+
118
+ const numericPriceValue = Number.parseFloat(priceValue)
119
+ const numericPrice = Number.parseFloat(priceUSD)
120
+
121
+ if (
122
+ Number.isNaN(numericPriceValue) ||
123
+ Number.isNaN(numericPrice) ||
124
+ !numericPrice
125
+ ) {
126
+ return '0'
127
+ }
128
+
129
+ return formatter.format(numericPriceValue / numericPrice)
130
+ }
131
+
99
132
  const units = [
100
133
  ['day', 86400],
101
134
  ['hour', 3600],
@@ -1,7 +1,7 @@
1
1
  import type { Token } from '@lifi/sdk'
2
2
  import { formatTokenPrice } from './format.js'
3
3
 
4
- interface GetPriceImpractProps {
4
+ interface GetPriceImpactProps {
5
5
  fromToken: Token
6
6
  toToken: Token
7
7
  fromAmount?: bigint
@@ -13,7 +13,7 @@ export const getPriceImpact = ({
13
13
  toToken,
14
14
  fromAmount,
15
15
  toAmount,
16
- }: GetPriceImpractProps) => {
16
+ }: GetPriceImpactProps) => {
17
17
  const fromTokenPrice = formatTokenPrice(
18
18
  fromAmount,
19
19
  fromToken.priceUSD,