@lifi/widget 4.0.0-beta.17 → 4.0.0-beta.19

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 (327) hide show
  1. package/dist/esm/App.js.map +1 -1
  2. package/dist/esm/AppDefault.js.map +1 -1
  3. package/dist/esm/AppDrawer.js.map +1 -1
  4. package/dist/esm/AppLayout.js.map +1 -1
  5. package/dist/esm/AppProvider.js.map +1 -1
  6. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  7. package/dist/esm/components/AmountInput/AmountInputEndAdornment.js.map +1 -1
  8. package/dist/esm/components/AmountInput/AmountInputStartAdornment.js.map +1 -1
  9. package/dist/esm/components/AmountInput/PriceFormHelperText.js.map +1 -1
  10. package/dist/esm/components/AppContainer.js.map +1 -1
  11. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  12. package/dist/esm/components/Avatar/Avatar.js.map +1 -1
  13. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  14. package/dist/esm/components/Avatar/ChainBadgeContent.js.map +1 -1
  15. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  16. package/dist/esm/components/Avatar/TokenAvatar.js.map +1 -1
  17. package/dist/esm/components/Avatar/utils.js.map +1 -1
  18. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  19. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  20. package/dist/esm/components/Card/Card.js.map +1 -1
  21. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  22. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  23. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  24. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  25. package/dist/esm/components/Chains/AllChainsAvatar.js +1 -1
  26. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  27. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  28. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  29. package/dist/esm/components/Chains/ChainListItem.js.map +1 -1
  30. package/dist/esm/components/Chains/ChainSearchInput.js.map +1 -1
  31. package/dist/esm/components/Chains/ChainsExpanded.js.map +1 -1
  32. package/dist/esm/components/Chains/PinChainButton.js.map +1 -1
  33. package/dist/esm/components/Chains/SelectChainContent.js.map +1 -1
  34. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  35. package/dist/esm/components/ContextMenu.js.map +1 -1
  36. package/dist/esm/components/ContractComponent/ContractComponent.js.map +1 -1
  37. package/dist/esm/components/ContractComponent/ItemPrice.js.map +1 -1
  38. package/dist/esm/components/ContractComponent/NFT/NFT.js.map +1 -1
  39. package/dist/esm/components/ContractComponent/NFT/NFTBase.js.map +1 -1
  40. package/dist/esm/components/Dialog/Dialog.js.map +1 -1
  41. package/dist/esm/components/Expansion/Expansion.js.map +1 -1
  42. package/dist/esm/components/Expansion/ExpansionTransition.js.map +1 -1
  43. package/dist/esm/components/FeeBreakdownTooltip.js.map +1 -1
  44. package/dist/esm/components/Header/ActivitiesButton.js.map +1 -1
  45. package/dist/esm/components/Header/BackButton.js.map +1 -1
  46. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  47. package/dist/esm/components/Header/DisconnectIconButton.js.map +1 -1
  48. package/dist/esm/components/Header/Header.js.map +1 -1
  49. package/dist/esm/components/Header/Header.style.js.map +1 -1
  50. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  51. package/dist/esm/components/Header/SettingsButton.js.map +1 -1
  52. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  53. package/dist/esm/components/Header/SplitNavigationTabs.js.map +1 -1
  54. package/dist/esm/components/Header/WalletHeader.js.map +1 -1
  55. package/dist/esm/components/Header/WalletMenu.js.map +1 -1
  56. package/dist/esm/components/IconCircle/IconCircle.js.map +1 -1
  57. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  58. package/dist/esm/components/Initializer.js.map +1 -1
  59. package/dist/esm/components/ListItemButton.js.map +1 -1
  60. package/dist/esm/components/Messages/AccountDeployedMessage.js.map +1 -1
  61. package/dist/esm/components/Messages/AccountNotDeployedMessage.js.map +1 -1
  62. package/dist/esm/components/Messages/FundsSufficiencyMessage.js.map +1 -1
  63. package/dist/esm/components/Messages/GasRefuelMessage.js.map +1 -1
  64. package/dist/esm/components/Messages/GasSufficiencyMessage.js.map +1 -1
  65. package/dist/esm/components/Messages/MinFromAmountUSDMessage.js.map +1 -1
  66. package/dist/esm/components/Messages/MissingRouteRequiredAccountMessage.js.map +1 -1
  67. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  68. package/dist/esm/components/Messages/useMessageQueue.js.map +1 -1
  69. package/dist/esm/components/NotFound.js.map +1 -1
  70. package/dist/esm/components/PageEntered.js.map +1 -1
  71. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  72. package/dist/esm/components/ProgressToNextUpdate.js.map +1 -1
  73. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  74. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  75. package/dist/esm/components/RouteCard/RouteCard.js.map +1 -1
  76. package/dist/esm/components/RouteCard/RouteCardEssentials.js.map +1 -1
  77. package/dist/esm/components/RouteCard/RouteCardSkeleton.js.map +1 -1
  78. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  79. package/dist/esm/components/RouteCard/RouteNotFoundCard.js.map +1 -1
  80. package/dist/esm/components/RouteCard/RouteToken.js.map +1 -1
  81. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  82. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  83. package/dist/esm/components/Routes/Routes.js.map +1 -1
  84. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  85. package/dist/esm/components/Routes/RoutesExpanded.js.map +1 -1
  86. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  87. package/dist/esm/components/Search/SearchInput.js.map +1 -1
  88. package/dist/esm/components/SelectChainAndToken.js.map +1 -1
  89. package/dist/esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  90. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  91. package/dist/esm/components/SendToWallet/SendToWalletButton.js +1 -1
  92. package/dist/esm/components/SendToWallet/SendToWalletButton.js.map +1 -1
  93. package/dist/esm/components/SendToWallet/SendToWalletExpandButton.js.map +1 -1
  94. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  95. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  96. package/dist/esm/components/Step/CircularProgress.js.map +1 -1
  97. package/dist/esm/components/Step/CircularProgress.style.js.map +1 -1
  98. package/dist/esm/components/Step/DestinationWalletAddress.js.map +1 -1
  99. package/dist/esm/components/Step/Step.js.map +1 -1
  100. package/dist/esm/components/Step/StepAction.js.map +1 -1
  101. package/dist/esm/components/Step/StepActions.js.map +1 -1
  102. package/dist/esm/components/Step/StepList.js.map +1 -1
  103. package/dist/esm/components/StepActions/StepActions.js.map +1 -1
  104. package/dist/esm/components/StepDivider/StepDivider.js.map +1 -1
  105. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  106. package/dist/esm/components/TextFitter/TextFitter.js.map +1 -1
  107. package/dist/esm/components/Timer/StepTimer.js.map +1 -1
  108. package/dist/esm/components/Timer/TimerContent.js.map +1 -1
  109. package/dist/esm/components/Token/Token.js.map +1 -1
  110. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  111. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  112. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  113. package/dist/esm/components/TokenList/TokenList.js.map +1 -1
  114. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  115. package/dist/esm/components/TokenList/TokenNotFound.js.map +1 -1
  116. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  117. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  118. package/dist/esm/components/TokenRate/TokenRate.js.map +1 -1
  119. package/dist/esm/components/Tools/ToolItem.js.map +1 -1
  120. package/dist/esm/components/Tools/Tools.js.map +1 -1
  121. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  122. package/dist/esm/components/TransactionCard/TransactionCard.js.map +1 -1
  123. package/dist/esm/components/TransactionCard/TransactionCardSkeleton.js.map +1 -1
  124. package/dist/esm/components/TransactionDetails.js.map +1 -1
  125. package/dist/esm/config/version.d.ts +1 -1
  126. package/dist/esm/config/version.js +1 -1
  127. package/dist/esm/config/version.js.map +1 -1
  128. package/dist/esm/hooks/timer/time.js.map +1 -1
  129. package/dist/esm/hooks/timer/useExecutionTimer.js.map +1 -1
  130. package/dist/esm/hooks/timer/useInterval.js.map +1 -1
  131. package/dist/esm/hooks/timer/useTimer.js.map +1 -1
  132. package/dist/esm/hooks/timer/validate.js.map +1 -1
  133. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  134. package/dist/esm/hooks/useActionMessage.js +2 -2
  135. package/dist/esm/hooks/useActionMessage.js.map +1 -1
  136. package/dist/esm/hooks/useAddressActivity.js.map +1 -1
  137. package/dist/esm/hooks/useAddressValidation.js.map +1 -1
  138. package/dist/esm/hooks/useAvailableChains.js.map +1 -1
  139. package/dist/esm/hooks/useChain.js.map +1 -1
  140. package/dist/esm/hooks/useChains.js.map +1 -1
  141. package/dist/esm/hooks/useContactSupport.js.map +1 -1
  142. package/dist/esm/hooks/useDebouncedWatch.js.map +1 -1
  143. package/dist/esm/hooks/useDefaultElementId.js.map +1 -1
  144. package/dist/esm/hooks/useExplorer.js.map +1 -1
  145. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  146. package/dist/esm/hooks/useFromAmountThreshold.js.map +1 -1
  147. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  148. package/dist/esm/hooks/useGasRecommendation.js.map +1 -1
  149. package/dist/esm/hooks/useGasRefuel.js.map +1 -1
  150. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  151. package/dist/esm/hooks/useHasChainExpansion.js.map +1 -1
  152. package/dist/esm/hooks/useHeader.js.map +1 -1
  153. package/dist/esm/hooks/useInitializeSDKProviders.js.map +1 -1
  154. package/dist/esm/hooks/useInitializer.js.map +1 -1
  155. package/dist/esm/hooks/useIsBatchingSupported.js.map +1 -1
  156. package/dist/esm/hooks/useIsContractAddress.js.map +1 -1
  157. package/dist/esm/hooks/useLanguages.js.map +1 -1
  158. package/dist/esm/hooks/useListHeight.js.map +1 -1
  159. package/dist/esm/hooks/useLongPress.js.map +1 -1
  160. package/dist/esm/hooks/useNavigateBack.js.map +1 -1
  161. package/dist/esm/hooks/useRouteExecution.js +0 -2
  162. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  163. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  164. package/dist/esm/hooks/useRoutes.js.map +1 -1
  165. package/dist/esm/hooks/useScrollableContainer.js.map +1 -1
  166. package/dist/esm/hooks/useSetContentHeight.js.map +1 -1
  167. package/dist/esm/hooks/useSettingMonitor.js.map +1 -1
  168. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  169. package/dist/esm/hooks/useToAddressAutoPopulate.js.map +1 -1
  170. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  171. package/dist/esm/hooks/useToAddressReset.js.map +1 -1
  172. package/dist/esm/hooks/useToken.js.map +1 -1
  173. package/dist/esm/hooks/useTokenAddressBalance.js.map +1 -1
  174. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  175. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  176. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  177. package/dist/esm/hooks/useTokenRateText.js.map +1 -1
  178. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  179. package/dist/esm/hooks/useTokens.js.map +1 -1
  180. package/dist/esm/hooks/useTools.js.map +1 -1
  181. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  182. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  183. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  184. package/dist/esm/hooks/useWideVariant.js.map +1 -1
  185. package/dist/esm/hooks/useWidgetChains.js.map +1 -1
  186. package/dist/esm/hooks/useWidgetEvents.js.map +1 -1
  187. package/dist/esm/i18n/bn.json +3 -0
  188. package/dist/esm/i18n/de.json +3 -0
  189. package/dist/esm/i18n/es.json +3 -0
  190. package/dist/esm/i18n/fr.json +3 -0
  191. package/dist/esm/i18n/hi.json +3 -0
  192. package/dist/esm/i18n/id.json +3 -0
  193. package/dist/esm/i18n/it.json +3 -0
  194. package/dist/esm/i18n/ja.json +3 -0
  195. package/dist/esm/i18n/ko.json +3 -0
  196. package/dist/esm/i18n/pl.json +3 -0
  197. package/dist/esm/i18n/pt.json +3 -0
  198. package/dist/esm/i18n/th.json +3 -0
  199. package/dist/esm/i18n/tr.json +3 -0
  200. package/dist/esm/i18n/uk.json +3 -0
  201. package/dist/esm/i18n/vi.json +3 -0
  202. package/dist/esm/i18n/zh.json +3 -0
  203. package/dist/esm/pages/ActivitiesPage/ActiveTransactionItem.js.map +1 -1
  204. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  205. package/dist/esm/pages/ActivitiesPage/ActivitiesPageMenuButton.js.map +1 -1
  206. package/dist/esm/pages/ActivitiesPage/TransactionHistoryEmpty.js.map +1 -1
  207. package/dist/esm/pages/ActivitiesPage/TransactionHistoryItem.js.map +1 -1
  208. package/dist/esm/pages/LanguagesPage.js.map +1 -1
  209. package/dist/esm/pages/MainPage/MainPage.js.map +1 -1
  210. package/dist/esm/pages/MainPage/MainWarningMessages.js.map +1 -1
  211. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  212. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  213. package/dist/esm/pages/SelectChainPage/SelectChainPage.js.map +1 -1
  214. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  215. package/dist/esm/pages/SelectTokenPage/SearchTokenInput.js.map +1 -1
  216. package/dist/esm/pages/SelectTokenPage/SelectTokenPage.js.map +1 -1
  217. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  218. package/dist/esm/pages/SendToWallet/BookmarksPage.js.map +1 -1
  219. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  220. package/dist/esm/pages/SendToWallet/ConnectedWalletsPage.js.map +1 -1
  221. package/dist/esm/pages/SendToWallet/RecentWalletsPage.js.map +1 -1
  222. package/dist/esm/pages/SendToWallet/SendToConfiguredWalletPage.js.map +1 -1
  223. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  224. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  225. package/dist/esm/pages/SettingsPage/GasPriceSettings.js.map +1 -1
  226. package/dist/esm/pages/SettingsPage/LanguageSetting.js.map +1 -1
  227. package/dist/esm/pages/SettingsPage/ResetSettingsButton.js.map +1 -1
  228. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js.map +1 -1
  229. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  230. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  231. package/dist/esm/pages/SettingsPage/SettingsPage.js.map +1 -1
  232. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  233. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  234. package/dist/esm/pages/SettingsPage/SmallBalanceFilterSettings.js.map +1 -1
  235. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  236. package/dist/esm/pages/TransactionDetailsPage/ActionRow.js.map +1 -1
  237. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.js.map +1 -1
  238. package/dist/esm/pages/TransactionDetailsPage/ReceiptsCard.js.map +1 -1
  239. package/dist/esm/pages/TransactionDetailsPage/SentToWalletRow.js.map +1 -1
  240. package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js +2 -2
  241. package/dist/esm/pages/TransactionDetailsPage/StepActionRow.js.map +1 -1
  242. package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js +11 -5
  243. package/dist/esm/pages/TransactionDetailsPage/StepActionsList.js.map +1 -1
  244. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  245. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  246. package/dist/esm/pages/TransactionDetailsPage/TransferIdCard.js.map +1 -1
  247. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  248. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  249. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  250. package/dist/esm/pages/TransactionPage/StartTransactionButton.js.map +1 -1
  251. package/dist/esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  252. package/dist/esm/pages/TransactionPage/StatusBottomSheet.style.js.map +1 -1
  253. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  254. package/dist/esm/pages/TransactionPage/TransactionPage.js.map +1 -1
  255. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  256. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  257. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  258. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  259. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  260. package/dist/esm/providers/ThemeProvider/ThemeProvider.js.map +1 -1
  261. package/dist/esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  262. package/dist/esm/providers/WalletProvider/useExternalWalletProvider.js.map +1 -1
  263. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  264. package/dist/esm/stores/StoreProvider.js.map +1 -1
  265. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  266. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  267. package/dist/esm/stores/bookmarks/useBookmarkActions.js.map +1 -1
  268. package/dist/esm/stores/bookmarks/useBookmarks.js.map +1 -1
  269. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  270. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  271. package/dist/esm/stores/chains/useChainOrder.js.map +1 -1
  272. package/dist/esm/stores/form/FormStore.js.map +1 -1
  273. package/dist/esm/stores/form/FormUpdater.js.map +1 -1
  274. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  275. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  276. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  277. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  278. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  279. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  280. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  281. package/dist/esm/stores/form/useTouchedFields.js.map +1 -1
  282. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  283. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  284. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  285. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  286. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  287. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  288. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  289. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  290. package/dist/esm/stores/routes/useSetExecutableRoute.js.map +1 -1
  291. package/dist/esm/stores/routes/utils.js.map +1 -1
  292. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  293. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  294. package/dist/esm/stores/settings/useSettings.js.map +1 -1
  295. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  296. package/dist/esm/stores/settings/useSplitSubvariantStore.js.map +1 -1
  297. package/dist/esm/themes/createTheme.js.map +1 -1
  298. package/dist/esm/themes/utils.js.map +1 -1
  299. package/dist/esm/types/events.js.map +1 -1
  300. package/dist/esm/types/widget.js.map +1 -1
  301. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  302. package/dist/esm/utils/converters.js.map +1 -1
  303. package/dist/esm/utils/currencyExtendedFormatter.js.map +1 -1
  304. package/dist/esm/utils/deepEqual.js.map +1 -1
  305. package/dist/esm/utils/deepMerge.js.map +1 -1
  306. package/dist/esm/utils/fees.js.map +1 -1
  307. package/dist/esm/utils/format.js.map +1 -1
  308. package/dist/esm/utils/getActionMessage.js.map +1 -1
  309. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  310. package/dist/esm/utils/getPriceImpact.js.map +1 -1
  311. package/dist/esm/utils/input.js.map +1 -1
  312. package/dist/esm/utils/item.js.map +1 -1
  313. package/dist/esm/utils/percentFormatter.js.map +1 -1
  314. package/dist/esm/utils/prepareActions.js.map +1 -1
  315. package/dist/esm/utils/timer.js.map +1 -1
  316. package/dist/esm/utils/token.js.map +1 -1
  317. package/dist/esm/utils/tokenList.js.map +1 -1
  318. package/dist/esm/utils/variant.js.map +1 -1
  319. package/dist/esm/utils/widgetSize.js.map +1 -1
  320. package/package.json +12 -12
  321. package/src/components/Chains/AllChainsAvatar.tsx +1 -1
  322. package/src/components/SendToWallet/SendToWalletButton.tsx +1 -1
  323. package/src/config/version.ts +1 -1
  324. package/src/hooks/useActionMessage.ts +4 -3
  325. package/src/hooks/useRouteExecution.ts +0 -2
  326. package/src/pages/TransactionDetailsPage/StepActionRow.tsx +3 -2
  327. package/src/pages/TransactionDetailsPage/StepActionsList.tsx +19 -12
@@ -1 +1 @@
1
- {"version":3,"file":"token.js","names":[],"sources":["../../../src/utils/token.ts"],"sourcesContent":["import type { BaseToken, Token, TokenExtended } from '@lifi/sdk'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport type { WidgetChains, WidgetTokens } from '../types/widget.js'\nimport { getConfigItemSets, isFormItemAllowed } from './item.js'\n\n/**\n * Merges verified tokens with search tokens.\n * Verified tokens take priority - search tokens are only added if they don't already exist.\n */\nexport const mergeVerifiedWithSearchTokens = (\n verifiedTokens?: TokensByChain,\n searchTokens?: TokensByChain\n): TokensByChain | undefined => {\n if (!verifiedTokens) {\n return searchTokens\n }\n if (!searchTokens) {\n return verifiedTokens\n }\n\n const result = { ...verifiedTokens }\n\n for (const [chainId, tokens] of Object.entries(searchTokens)) {\n const chainIdNum = Number(chainId)\n const existingTokens = result[chainIdNum] || []\n const existingAddresses = new Set(\n existingTokens.map((t) => t.address.toLowerCase())\n )\n\n const newTokens = tokens.filter(\n (t) => !existingAddresses.has(t.address.toLowerCase())\n )\n\n if (newTokens.length) {\n result[chainIdNum] = [...existingTokens, ...newTokens]\n }\n }\n\n return result\n}\n\n/**\n * Updates a token in the cache by chainId and address.\n * Returns a new cache object with the token updated, or the original if not found.\n */\nexport const updateTokenInCache = (\n data: TokensByChain | undefined,\n token: Token\n): TokensByChain | undefined => {\n if (!data) {\n return data\n }\n const chainTokens = data[token.chainId]\n if (!chainTokens) {\n return data\n }\n const index = chainTokens.findIndex((t) => t.address === token.address)\n if (index < 0) {\n return data\n }\n return {\n ...data,\n [token.chainId]: chainTokens.map((t, i) =>\n i === index ? { ...t, ...token } : t\n ),\n }\n}\n\nexport const filterAllowedTokens = (\n dataTokens: { [chainId: number]: TokenExtended[] } | undefined,\n configTokens?: WidgetTokens,\n chainsConfig?: WidgetChains,\n formType?: FormType\n): { [chainId: number]: TokenExtended[] } | undefined => {\n if (!dataTokens) {\n return\n }\n\n const includedTokens = configTokens?.include || []\n const allChainIds = Array.from(\n new Set([\n ...includedTokens.map((t) => t.chainId),\n ...Object.keys(dataTokens),\n ])\n ).map((chainId) => Number(chainId))\n\n const configChainIdsSet = getConfigItemSets(\n chainsConfig,\n (chainIds: number[]) => new Set(chainIds),\n formType\n )\n\n const allowedChainIds = configChainIdsSet\n ? allChainIds.filter((chainId) =>\n isFormItemAllowed(chainId, configChainIdsSet, formType)\n )\n : allChainIds\n\n const allowedTokensByChain: { [chainId: number]: TokenExtended[] } = {}\n for (const chainId of allowedChainIds) {\n const chainTokens = [\n ...dataTokens[chainId],\n ...includedTokens.filter((t) => Number(t.chainId) === chainId),\n ]\n\n const allowedAddresses = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => Number(t.chainId) === chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n const filtered = chainTokens.filter((token) =>\n isFormItemAllowed(token, allowedAddresses, formType, (t) =>\n t.address.toLowerCase()\n )\n )\n\n allowedTokensByChain[chainId] = filtered\n }\n\n return allowedTokensByChain\n}\n"],"mappings":";;;;;;AAUA,MAAa,iCACX,gBACA,iBAC8B;AAC9B,KAAI,CAAC,eACH,QAAO;AAET,KAAI,CAAC,aACH,QAAO;CAGT,MAAM,SAAS,EAAE,GAAG,gBAAgB;AAEpC,MAAK,MAAM,CAAC,SAAS,WAAW,OAAO,QAAQ,aAAa,EAAE;EAC5D,MAAM,aAAa,OAAO,QAAQ;EAClC,MAAM,iBAAiB,OAAO,eAAe,EAAE;EAC/C,MAAM,oBAAoB,IAAI,IAC5B,eAAe,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC,CACnD;EAED,MAAM,YAAY,OAAO,QACtB,MAAM,CAAC,kBAAkB,IAAI,EAAE,QAAQ,aAAa,CAAC,CACvD;AAED,MAAI,UAAU,OACZ,QAAO,cAAc,CAAC,GAAG,gBAAgB,GAAG,UAAU;;AAI1D,QAAO;;;;;;AAOT,MAAa,sBACX,MACA,UAC8B;AAC9B,KAAI,CAAC,KACH,QAAO;CAET,MAAM,cAAc,KAAK,MAAM;AAC/B,KAAI,CAAC,YACH,QAAO;CAET,MAAM,QAAQ,YAAY,WAAW,MAAM,EAAE,YAAY,MAAM,QAAQ;AACvE,KAAI,QAAQ,EACV,QAAO;AAET,QAAO;EACL,GAAG;GACF,MAAM,UAAU,YAAY,KAAK,GAAG,MACnC,MAAM,QAAQ;GAAE,GAAG;GAAG,GAAG;GAAO,GAAG,EACpC;EACF;;AAGH,MAAa,uBACX,YACA,cACA,cACA,aACuD;AACvD,KAAI,CAAC,WACH;CAGF,MAAM,iBAAiB,cAAc,WAAW,EAAE;CAClD,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,CACN,GAAG,eAAe,KAAK,MAAM,EAAE,QAAQ,EACvC,GAAG,OAAO,KAAK,WAAW,CAC3B,CAAC,CACH,CAAC,KAAK,YAAY,OAAO,QAAQ,CAAC;CAEnC,MAAM,oBAAoB,kBACxB,eACC,aAAuB,IAAI,IAAI,SAAS,EACzC,SACD;CAED,MAAM,kBAAkB,oBACpB,YAAY,QAAQ,YAClB,kBAAkB,SAAS,mBAAmB,SAAS,CACxD,GACD;CAEJ,MAAM,uBAA+D,EAAE;AACvE,MAAK,MAAM,WAAW,iBAAiB;EACrC,MAAM,cAAc,CAClB,GAAG,WAAW,UACd,GAAG,eAAe,QAAQ,MAAM,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAC/D;EAED,MAAM,mBAAmB,kBACvB,eACC,WACC,IAAI,IACF,OACG,QAAQ,MAAM,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAC5C,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC,CACvC,EACH,SACD;AAQD,uBAAqB,WANJ,YAAY,QAAQ,UACnC,kBAAkB,OAAO,kBAAkB,WAAW,MACpD,EAAE,QAAQ,aAAa,CACxB,CACF;;AAKH,QAAO"}
1
+ {"version":3,"file":"token.js","names":[],"sources":["../../../src/utils/token.ts"],"sourcesContent":["import type { BaseToken, Token, TokenExtended } from '@lifi/sdk'\nimport type { FormType } from '../stores/form/types.js'\nimport type { TokensByChain } from '../types/token.js'\nimport type { WidgetChains, WidgetTokens } from '../types/widget.js'\nimport { getConfigItemSets, isFormItemAllowed } from './item.js'\n\n/**\n * Merges verified tokens with search tokens.\n * Verified tokens take priority - search tokens are only added if they don't already exist.\n */\nexport const mergeVerifiedWithSearchTokens = (\n verifiedTokens?: TokensByChain,\n searchTokens?: TokensByChain\n): TokensByChain | undefined => {\n if (!verifiedTokens) {\n return searchTokens\n }\n if (!searchTokens) {\n return verifiedTokens\n }\n\n const result = { ...verifiedTokens }\n\n for (const [chainId, tokens] of Object.entries(searchTokens)) {\n const chainIdNum = Number(chainId)\n const existingTokens = result[chainIdNum] || []\n const existingAddresses = new Set(\n existingTokens.map((t) => t.address.toLowerCase())\n )\n\n const newTokens = tokens.filter(\n (t) => !existingAddresses.has(t.address.toLowerCase())\n )\n\n if (newTokens.length) {\n result[chainIdNum] = [...existingTokens, ...newTokens]\n }\n }\n\n return result\n}\n\n/**\n * Updates a token in the cache by chainId and address.\n * Returns a new cache object with the token updated, or the original if not found.\n */\nexport const updateTokenInCache = (\n data: TokensByChain | undefined,\n token: Token\n): TokensByChain | undefined => {\n if (!data) {\n return data\n }\n const chainTokens = data[token.chainId]\n if (!chainTokens) {\n return data\n }\n const index = chainTokens.findIndex((t) => t.address === token.address)\n if (index < 0) {\n return data\n }\n return {\n ...data,\n [token.chainId]: chainTokens.map((t, i) =>\n i === index ? { ...t, ...token } : t\n ),\n }\n}\n\nexport const filterAllowedTokens = (\n dataTokens: { [chainId: number]: TokenExtended[] } | undefined,\n configTokens?: WidgetTokens,\n chainsConfig?: WidgetChains,\n formType?: FormType\n): { [chainId: number]: TokenExtended[] } | undefined => {\n if (!dataTokens) {\n return\n }\n\n const includedTokens = configTokens?.include || []\n const allChainIds = Array.from(\n new Set([\n ...includedTokens.map((t) => t.chainId),\n ...Object.keys(dataTokens),\n ])\n ).map((chainId) => Number(chainId))\n\n const configChainIdsSet = getConfigItemSets(\n chainsConfig,\n (chainIds: number[]) => new Set(chainIds),\n formType\n )\n\n const allowedChainIds = configChainIdsSet\n ? allChainIds.filter((chainId) =>\n isFormItemAllowed(chainId, configChainIdsSet, formType)\n )\n : allChainIds\n\n const allowedTokensByChain: { [chainId: number]: TokenExtended[] } = {}\n for (const chainId of allowedChainIds) {\n const chainTokens = [\n ...dataTokens[chainId],\n ...includedTokens.filter((t) => Number(t.chainId) === chainId),\n ]\n\n const allowedAddresses = getConfigItemSets(\n configTokens,\n (tokens: BaseToken[]) =>\n new Set(\n tokens\n .filter((t) => Number(t.chainId) === chainId)\n .map((t) => t.address.toLowerCase())\n ),\n formType\n )\n\n const filtered = chainTokens.filter((token) =>\n isFormItemAllowed(token, allowedAddresses, formType, (t) =>\n t.address.toLowerCase()\n )\n )\n\n allowedTokensByChain[chainId] = filtered\n }\n\n return allowedTokensByChain\n}\n"],"mappings":";;;;;;AAUA,MAAa,iCACX,gBACA,iBAC8B;CAC9B,IAAI,CAAC,gBACH,OAAO;CAET,IAAI,CAAC,cACH,OAAO;CAGT,MAAM,SAAS,EAAE,GAAG,gBAAgB;CAEpC,KAAK,MAAM,CAAC,SAAS,WAAW,OAAO,QAAQ,aAAa,EAAE;EAC5D,MAAM,aAAa,OAAO,QAAQ;EAClC,MAAM,iBAAiB,OAAO,eAAe,EAAE;EAC/C,MAAM,oBAAoB,IAAI,IAC5B,eAAe,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC,CACnD;EAED,MAAM,YAAY,OAAO,QACtB,MAAM,CAAC,kBAAkB,IAAI,EAAE,QAAQ,aAAa,CAAC,CACvD;EAED,IAAI,UAAU,QACZ,OAAO,cAAc,CAAC,GAAG,gBAAgB,GAAG,UAAU;;CAI1D,OAAO;;;;;;AAOT,MAAa,sBACX,MACA,UAC8B;CAC9B,IAAI,CAAC,MACH,OAAO;CAET,MAAM,cAAc,KAAK,MAAM;CAC/B,IAAI,CAAC,aACH,OAAO;CAET,MAAM,QAAQ,YAAY,WAAW,MAAM,EAAE,YAAY,MAAM,QAAQ;CACvE,IAAI,QAAQ,GACV,OAAO;CAET,OAAO;EACL,GAAG;GACF,MAAM,UAAU,YAAY,KAAK,GAAG,MACnC,MAAM,QAAQ;GAAE,GAAG;GAAG,GAAG;GAAO,GAAG,EACpC;EACF;;AAGH,MAAa,uBACX,YACA,cACA,cACA,aACuD;CACvD,IAAI,CAAC,YACH;CAGF,MAAM,iBAAiB,cAAc,WAAW,EAAE;CAClD,MAAM,cAAc,MAAM,KACxB,IAAI,IAAI,CACN,GAAG,eAAe,KAAK,MAAM,EAAE,QAAQ,EACvC,GAAG,OAAO,KAAK,WAAW,CAC3B,CAAC,CACH,CAAC,KAAK,YAAY,OAAO,QAAQ,CAAC;CAEnC,MAAM,oBAAoB,kBACxB,eACC,aAAuB,IAAI,IAAI,SAAS,EACzC,SACD;CAED,MAAM,kBAAkB,oBACpB,YAAY,QAAQ,YAClB,kBAAkB,SAAS,mBAAmB,SAAS,CACxD,GACD;CAEJ,MAAM,uBAA+D,EAAE;CACvE,KAAK,MAAM,WAAW,iBAAiB;EACrC,MAAM,cAAc,CAClB,GAAG,WAAW,UACd,GAAG,eAAe,QAAQ,MAAM,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAC/D;EAED,MAAM,mBAAmB,kBACvB,eACC,WACC,IAAI,IACF,OACG,QAAQ,MAAM,OAAO,EAAE,QAAQ,KAAK,QAAQ,CAC5C,KAAK,MAAM,EAAE,QAAQ,aAAa,CAAC,CACvC,EACH,SACD;EAQD,qBAAqB,WANJ,YAAY,QAAQ,UACnC,kBAAkB,OAAO,kBAAkB,WAAW,MACpD,EAAE,QAAQ,aAAa,CACxB,CAGqC;;CAG1C,OAAO"}
@@ -1 +1 @@
1
- {"version":3,"file":"tokenList.js","names":[],"sources":["../../../src/utils/tokenList.ts"],"sourcesContent":["import {\n formatUnits,\n type TokenExtended,\n type WalletTokenExtended,\n} from '@lifi/sdk'\nimport type { TokenAmount, TokenAmountExtended } from '../types/token.js'\nimport type { WidgetTokens } from '../types/widget.js'\n\nconst sortByBalances = (a: TokenAmount, b: TokenAmount) =>\n Number.parseFloat(formatUnits(b.amount ?? 0n, b.decimals)) *\n Number.parseFloat(b.priceUSD ?? '0') -\n Number.parseFloat(formatUnits(a.amount ?? 0n, a.decimals)) *\n Number.parseFloat(a.priceUSD ?? '0')\n\nconst sortByVolume = (a: TokenExtended, b: TokenExtended) =>\n (b.volumeUSD24H ?? 0) - (a.volumeUSD24H ?? 0)\n\nexport const processTokenBalances = (\n isBalanceLoading: boolean,\n noCategories: boolean,\n configTokens?: WidgetTokens,\n selectedChainId?: number,\n tokens?: TokenExtended[],\n tokensWithBalances?: TokenAmount[],\n isPinnedToken?: (chainId: number, tokenAddress: string) => boolean\n): {\n processedTokens: TokenAmount[]\n withCategories: boolean\n withPinnedTokens: boolean\n} => {\n if (isBalanceLoading) {\n if (noCategories) {\n const sortedTokens = [...(tokens ?? [])].sort(sortByVolume)\n // Separate pinned tokens\n if (isPinnedToken) {\n const pinned: TokenAmount[] = []\n const notPinned: TokenAmount[] = []\n for (const token of sortedTokens) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinned.push(pinnedToken)\n } else {\n notPinned.push(token)\n }\n }\n return {\n processedTokens: [...pinned, ...notPinned],\n withCategories: false,\n withPinnedTokens: !!pinned.length,\n }\n }\n return {\n processedTokens: sortedTokens,\n withCategories: false,\n withPinnedTokens: false,\n }\n } else {\n return processedTypedTokens(\n tokens ?? [],\n [],\n selectedChainId,\n configTokens,\n isPinnedToken\n )\n }\n }\n\n const sortedTokensWithBalances = [...(tokensWithBalances ?? [])].sort(\n sortByBalances\n )\n\n const tokensWithBalancesSet = new Set(\n sortedTokensWithBalances.map(\n (token) => `${token.chainId}-${token.address.toLowerCase()}`\n )\n )\n const tokensWithoutBalances =\n tokens\n ?.filter((token) => {\n const tokenKey = `${token.chainId}-${token.address.toLowerCase()}`\n return !tokensWithBalancesSet.has(tokenKey)\n })\n .sort(sortByVolume) ?? []\n\n if (noCategories) {\n // Separate pinned tokens\n if (isPinnedToken) {\n const pinnedWithBalances: TokenAmount[] = []\n const notPinnedWithBalances: TokenAmount[] = []\n const pinnedWithoutBalances: TokenAmount[] = []\n const notPinnedWithoutBalances: TokenAmount[] = []\n\n for (const token of sortedTokensWithBalances) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedWithBalances.push(pinnedToken)\n } else {\n notPinnedWithBalances.push(token)\n }\n }\n\n for (const token of tokensWithoutBalances) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedWithoutBalances.push(pinnedToken)\n } else {\n notPinnedWithoutBalances.push(token)\n }\n }\n\n return {\n processedTokens: [\n ...pinnedWithBalances,\n ...pinnedWithoutBalances,\n ...notPinnedWithBalances,\n ...notPinnedWithoutBalances,\n ],\n withCategories: false,\n withPinnedTokens:\n !!pinnedWithBalances.length || !!pinnedWithoutBalances.length,\n }\n }\n return {\n processedTokens: [...sortedTokensWithBalances, ...tokensWithoutBalances],\n withCategories: false,\n withPinnedTokens: false,\n }\n } else {\n return processedTypedTokens(\n tokensWithoutBalances,\n sortedTokensWithBalances,\n selectedChainId,\n configTokens,\n isPinnedToken\n )\n }\n}\n\n// NB: only for non-all-networks\nconst processedTypedTokens = (\n tokens: TokenAmount[],\n tokensWithBalances: TokenAmount[],\n selectedChainId?: number,\n configTokens?: WidgetTokens,\n isPinnedToken?: (chainId: number, tokenAddress: string) => boolean\n) => {\n const filteredTokensMap = new Map(\n tokens.map((token) => [token.address, token])\n )\n\n const pinnedTokens: TokenAmount[] = []\n const featuredTokensFromConfig: TokenAmount[] = []\n const popularTokensFromConfig: TokenAmount[] = []\n\n ;(['popular', 'featured'] as const).forEach((tokenType) => {\n const typedTokens = configTokens?.[tokenType]?.filter(\n (token) => token.chainId === selectedChainId\n )\n\n typedTokens?.forEach((token) => {\n const tokenAmount = { ...token } as TokenAmount\n tokenAmount[tokenType] = true\n // Config tokens are explicitly set by integrator, mark as verified\n tokenAmount.verified = true\n\n const match = filteredTokensMap.get(token.address)\n if (match?.priceUSD) {\n tokenAmount.priceUSD = match.priceUSD\n }\n if (!token.logoURI && match?.logoURI) {\n tokenAmount.logoURI = match.logoURI\n }\n\n if (tokenType === 'popular') {\n popularTokensFromConfig.push(tokenAmount)\n } else {\n featuredTokensFromConfig.push(tokenAmount)\n }\n\n // Additionally add to pinned tokens if it is pinned\n const isPinned =\n isPinnedToken && selectedChainId\n ? isPinnedToken(selectedChainId, token.address)\n : false\n if (isPinned) {\n const pinnedToken = { ...tokenAmount, pinned: true } as TokenAmount\n pinnedTokens.push(pinnedToken)\n }\n })\n })\n\n // Filter out config-added tokens from main list\n const configTokenAddresses = new Set(\n [...popularTokensFromConfig, ...featuredTokensFromConfig].map((t) =>\n t.address.toLowerCase()\n )\n )\n\n const remainingTokens = tokens.filter(\n (token) => !configTokenAddresses.has(token.address.toLowerCase())\n )\n\n const otherTokens: TokenAmount[] = []\n\n // Separate pinned tokens and categorize remaining tokens\n for (const token of remainingTokens) {\n const isPinned =\n isPinnedToken && selectedChainId\n ? isPinnedToken(selectedChainId, token.address)\n : false\n\n if (isPinned) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedTokens.push(pinnedToken)\n } else if (token.featured) {\n featuredTokensFromConfig.push(token)\n } else if (token.popular) {\n popularTokensFromConfig.push(token)\n } else {\n otherTokens.push(token)\n }\n }\n\n // Also check tokens with balances for pinned status\n const pinnedTokensWithBalances: TokenAmount[] = []\n const nonPinnedTokensWithBalances: TokenAmount[] = []\n\n if (isPinnedToken && selectedChainId) {\n for (const token of tokensWithBalances) {\n if (isPinnedToken(selectedChainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedTokensWithBalances.push(pinnedToken)\n } else {\n nonPinnedTokensWithBalances.push(token)\n }\n }\n } else {\n nonPinnedTokensWithBalances.push(...tokensWithBalances)\n }\n\n const sortedPinnedTokens = [\n ...pinnedTokens,\n ...pinnedTokensWithBalances,\n ].sort(sortByVolume)\n const sortedFeaturedTokens = [...featuredTokensFromConfig].sort(sortByVolume)\n const sortedPopularTokens = [...popularTokensFromConfig].sort(sortByVolume)\n const sortedOtherTokens = [...otherTokens].sort(sortByVolume)\n\n return {\n processedTokens: [\n ...sortedPinnedTokens,\n ...sortedFeaturedTokens,\n ...nonPinnedTokensWithBalances,\n ...sortedPopularTokens,\n ...sortedOtherTokens,\n ],\n withCategories:\n !!featuredTokensFromConfig.length || !!popularTokensFromConfig.length,\n withPinnedTokens: !!sortedPinnedTokens.length,\n }\n}\n\nexport const isSearchMatch = (\n token: TokenExtended | TokenAmountExtended,\n search?: string\n): boolean => {\n if (!search) {\n return true\n }\n\n const searchLowerCase = search.toLowerCase()\n return (\n token.name?.toLowerCase().includes(searchLowerCase) ||\n token.symbol\n ?.replaceAll('₮', 'T')\n .toLowerCase()\n .includes(searchLowerCase) ||\n token.address?.toLowerCase().includes(searchLowerCase)\n )\n}\n\nexport const isSupportedToken = (token: WalletTokenExtended): boolean => {\n return Boolean(token.name && token.symbol && token.priceUSD && token.chainId)\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tokenList.js","names":[],"sources":["../../../src/utils/tokenList.ts"],"sourcesContent":["import {\n formatUnits,\n type TokenExtended,\n type WalletTokenExtended,\n} from '@lifi/sdk'\nimport type { TokenAmount, TokenAmountExtended } from '../types/token.js'\nimport type { WidgetTokens } from '../types/widget.js'\n\nconst sortByBalances = (a: TokenAmount, b: TokenAmount) =>\n Number.parseFloat(formatUnits(b.amount ?? 0n, b.decimals)) *\n Number.parseFloat(b.priceUSD ?? '0') -\n Number.parseFloat(formatUnits(a.amount ?? 0n, a.decimals)) *\n Number.parseFloat(a.priceUSD ?? '0')\n\nconst sortByVolume = (a: TokenExtended, b: TokenExtended) =>\n (b.volumeUSD24H ?? 0) - (a.volumeUSD24H ?? 0)\n\nexport const processTokenBalances = (\n isBalanceLoading: boolean,\n noCategories: boolean,\n configTokens?: WidgetTokens,\n selectedChainId?: number,\n tokens?: TokenExtended[],\n tokensWithBalances?: TokenAmount[],\n isPinnedToken?: (chainId: number, tokenAddress: string) => boolean\n): {\n processedTokens: TokenAmount[]\n withCategories: boolean\n withPinnedTokens: boolean\n} => {\n if (isBalanceLoading) {\n if (noCategories) {\n const sortedTokens = [...(tokens ?? [])].sort(sortByVolume)\n // Separate pinned tokens\n if (isPinnedToken) {\n const pinned: TokenAmount[] = []\n const notPinned: TokenAmount[] = []\n for (const token of sortedTokens) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinned.push(pinnedToken)\n } else {\n notPinned.push(token)\n }\n }\n return {\n processedTokens: [...pinned, ...notPinned],\n withCategories: false,\n withPinnedTokens: !!pinned.length,\n }\n }\n return {\n processedTokens: sortedTokens,\n withCategories: false,\n withPinnedTokens: false,\n }\n } else {\n return processedTypedTokens(\n tokens ?? [],\n [],\n selectedChainId,\n configTokens,\n isPinnedToken\n )\n }\n }\n\n const sortedTokensWithBalances = [...(tokensWithBalances ?? [])].sort(\n sortByBalances\n )\n\n const tokensWithBalancesSet = new Set(\n sortedTokensWithBalances.map(\n (token) => `${token.chainId}-${token.address.toLowerCase()}`\n )\n )\n const tokensWithoutBalances =\n tokens\n ?.filter((token) => {\n const tokenKey = `${token.chainId}-${token.address.toLowerCase()}`\n return !tokensWithBalancesSet.has(tokenKey)\n })\n .sort(sortByVolume) ?? []\n\n if (noCategories) {\n // Separate pinned tokens\n if (isPinnedToken) {\n const pinnedWithBalances: TokenAmount[] = []\n const notPinnedWithBalances: TokenAmount[] = []\n const pinnedWithoutBalances: TokenAmount[] = []\n const notPinnedWithoutBalances: TokenAmount[] = []\n\n for (const token of sortedTokensWithBalances) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedWithBalances.push(pinnedToken)\n } else {\n notPinnedWithBalances.push(token)\n }\n }\n\n for (const token of tokensWithoutBalances) {\n if (isPinnedToken(token.chainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedWithoutBalances.push(pinnedToken)\n } else {\n notPinnedWithoutBalances.push(token)\n }\n }\n\n return {\n processedTokens: [\n ...pinnedWithBalances,\n ...pinnedWithoutBalances,\n ...notPinnedWithBalances,\n ...notPinnedWithoutBalances,\n ],\n withCategories: false,\n withPinnedTokens:\n !!pinnedWithBalances.length || !!pinnedWithoutBalances.length,\n }\n }\n return {\n processedTokens: [...sortedTokensWithBalances, ...tokensWithoutBalances],\n withCategories: false,\n withPinnedTokens: false,\n }\n } else {\n return processedTypedTokens(\n tokensWithoutBalances,\n sortedTokensWithBalances,\n selectedChainId,\n configTokens,\n isPinnedToken\n )\n }\n}\n\n// NB: only for non-all-networks\nconst processedTypedTokens = (\n tokens: TokenAmount[],\n tokensWithBalances: TokenAmount[],\n selectedChainId?: number,\n configTokens?: WidgetTokens,\n isPinnedToken?: (chainId: number, tokenAddress: string) => boolean\n) => {\n const filteredTokensMap = new Map(\n tokens.map((token) => [token.address, token])\n )\n\n const pinnedTokens: TokenAmount[] = []\n const featuredTokensFromConfig: TokenAmount[] = []\n const popularTokensFromConfig: TokenAmount[] = []\n\n ;(['popular', 'featured'] as const).forEach((tokenType) => {\n const typedTokens = configTokens?.[tokenType]?.filter(\n (token) => token.chainId === selectedChainId\n )\n\n typedTokens?.forEach((token) => {\n const tokenAmount = { ...token } as TokenAmount\n tokenAmount[tokenType] = true\n // Config tokens are explicitly set by integrator, mark as verified\n tokenAmount.verified = true\n\n const match = filteredTokensMap.get(token.address)\n if (match?.priceUSD) {\n tokenAmount.priceUSD = match.priceUSD\n }\n if (!token.logoURI && match?.logoURI) {\n tokenAmount.logoURI = match.logoURI\n }\n\n if (tokenType === 'popular') {\n popularTokensFromConfig.push(tokenAmount)\n } else {\n featuredTokensFromConfig.push(tokenAmount)\n }\n\n // Additionally add to pinned tokens if it is pinned\n const isPinned =\n isPinnedToken && selectedChainId\n ? isPinnedToken(selectedChainId, token.address)\n : false\n if (isPinned) {\n const pinnedToken = { ...tokenAmount, pinned: true } as TokenAmount\n pinnedTokens.push(pinnedToken)\n }\n })\n })\n\n // Filter out config-added tokens from main list\n const configTokenAddresses = new Set(\n [...popularTokensFromConfig, ...featuredTokensFromConfig].map((t) =>\n t.address.toLowerCase()\n )\n )\n\n const remainingTokens = tokens.filter(\n (token) => !configTokenAddresses.has(token.address.toLowerCase())\n )\n\n const otherTokens: TokenAmount[] = []\n\n // Separate pinned tokens and categorize remaining tokens\n for (const token of remainingTokens) {\n const isPinned =\n isPinnedToken && selectedChainId\n ? isPinnedToken(selectedChainId, token.address)\n : false\n\n if (isPinned) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedTokens.push(pinnedToken)\n } else if (token.featured) {\n featuredTokensFromConfig.push(token)\n } else if (token.popular) {\n popularTokensFromConfig.push(token)\n } else {\n otherTokens.push(token)\n }\n }\n\n // Also check tokens with balances for pinned status\n const pinnedTokensWithBalances: TokenAmount[] = []\n const nonPinnedTokensWithBalances: TokenAmount[] = []\n\n if (isPinnedToken && selectedChainId) {\n for (const token of tokensWithBalances) {\n if (isPinnedToken(selectedChainId, token.address)) {\n const pinnedToken = { ...token, pinned: true } as TokenAmount\n pinnedTokensWithBalances.push(pinnedToken)\n } else {\n nonPinnedTokensWithBalances.push(token)\n }\n }\n } else {\n nonPinnedTokensWithBalances.push(...tokensWithBalances)\n }\n\n const sortedPinnedTokens = [\n ...pinnedTokens,\n ...pinnedTokensWithBalances,\n ].sort(sortByVolume)\n const sortedFeaturedTokens = [...featuredTokensFromConfig].sort(sortByVolume)\n const sortedPopularTokens = [...popularTokensFromConfig].sort(sortByVolume)\n const sortedOtherTokens = [...otherTokens].sort(sortByVolume)\n\n return {\n processedTokens: [\n ...sortedPinnedTokens,\n ...sortedFeaturedTokens,\n ...nonPinnedTokensWithBalances,\n ...sortedPopularTokens,\n ...sortedOtherTokens,\n ],\n withCategories:\n !!featuredTokensFromConfig.length || !!popularTokensFromConfig.length,\n withPinnedTokens: !!sortedPinnedTokens.length,\n }\n}\n\nexport const isSearchMatch = (\n token: TokenExtended | TokenAmountExtended,\n search?: string\n): boolean => {\n if (!search) {\n return true\n }\n\n const searchLowerCase = search.toLowerCase()\n return (\n token.name?.toLowerCase().includes(searchLowerCase) ||\n token.symbol\n ?.replaceAll('₮', 'T')\n .toLowerCase()\n .includes(searchLowerCase) ||\n token.address?.toLowerCase().includes(searchLowerCase)\n )\n}\n\nexport const isSupportedToken = (token: WalletTokenExtended): boolean => {\n return Boolean(token.name && token.symbol && token.priceUSD && token.chainId)\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"variant.js","names":[],"sources":["../../../src/utils/variant.ts"],"sourcesContent":["import type {\n SplitSubvariant,\n SplitSubvariantOptions,\n} from '../types/widget.js'\n\nexport const getSplitSubvariant = (\n split?: SplitSubvariant | SplitSubvariantOptions\n): SplitSubvariant => {\n if (!split) {\n return 'swap'\n }\n if (typeof split === 'string') {\n return split\n }\n return split.defaultTab\n}\n"],"mappings":";AAKA,MAAa,sBACX,UACoB;AACpB,KAAI,CAAC,MACH,QAAO;AAET,KAAI,OAAO,UAAU,SACnB,QAAO;AAET,QAAO,MAAM"}
1
+ {"version":3,"file":"variant.js","names":[],"sources":["../../../src/utils/variant.ts"],"sourcesContent":["import type {\n SplitSubvariant,\n SplitSubvariantOptions,\n} from '../types/widget.js'\n\nexport const getSplitSubvariant = (\n split?: SplitSubvariant | SplitSubvariantOptions\n): SplitSubvariant => {\n if (!split) {\n return 'swap'\n }\n if (typeof split === 'string') {\n return split\n }\n return split.defaultTab\n}\n"],"mappings":";AAKA,MAAa,sBACX,UACoB;CACpB,IAAI,CAAC,OACH,OAAO;CAET,IAAI,OAAO,UAAU,UACnB,OAAO;CAET,OAAO,MAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"widgetSize.js","names":[],"sources":["../../../src/utils/widgetSize.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { defaultMaxHeight } from '../config/constants.js'\nimport type { WidgetTheme } from '../types/widget.js'\n\nexport const getWidgetMaxHeight = (\n theme: Theme | WidgetTheme | undefined\n): number | string => {\n if (theme?.container?.maxHeight) {\n return theme?.container?.maxHeight\n }\n\n if (theme?.container?.height && theme?.container?.height !== 'fit-content') {\n return theme?.container?.height\n }\n\n return defaultMaxHeight\n}\n"],"mappings":";;AAIA,MAAa,sBACX,UACoB;AACpB,KAAI,OAAO,WAAW,UACpB,QAAO,OAAO,WAAW;AAG3B,KAAI,OAAO,WAAW,UAAU,OAAO,WAAW,WAAW,cAC3D,QAAO,OAAO,WAAW;AAG3B,QAAA"}
1
+ {"version":3,"file":"widgetSize.js","names":[],"sources":["../../../src/utils/widgetSize.ts"],"sourcesContent":["import type { Theme } from '@mui/material'\nimport { defaultMaxHeight } from '../config/constants.js'\nimport type { WidgetTheme } from '../types/widget.js'\n\nexport const getWidgetMaxHeight = (\n theme: Theme | WidgetTheme | undefined\n): number | string => {\n if (theme?.container?.maxHeight) {\n return theme?.container?.maxHeight\n }\n\n if (theme?.container?.height && theme?.container?.height !== 'fit-content') {\n return theme?.container?.height\n }\n\n return defaultMaxHeight\n}\n"],"mappings":";;AAIA,MAAa,sBACX,UACoB;CACpB,IAAI,OAAO,WAAW,WACpB,OAAO,OAAO,WAAW;CAG3B,IAAI,OAAO,WAAW,UAAU,OAAO,WAAW,WAAW,eAC3D,OAAO,OAAO,WAAW;CAG3B,OAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lifi/widget",
3
- "version": "4.0.0-beta.17",
3
+ "version": "4.0.0-beta.19",
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,21 +34,21 @@
34
34
  "dependencies": {
35
35
  "@emotion/react": "^11.14.0",
36
36
  "@emotion/styled": "^11.14.1",
37
- "@lifi/sdk": "4.0.0-beta.7",
38
- "@mui/icons-material": "^9.0.0",
39
- "@mui/material": "^9.0.0",
40
- "@mui/system": "^9.0.0",
41
- "@tanstack/react-router": "^1.168.10",
42
- "@tanstack/react-virtual": "^3.13.23",
43
- "i18next": "^26.0.4",
37
+ "@lifi/sdk": "^4.0.0-beta.10",
38
+ "@mui/icons-material": "^9.0.1",
39
+ "@mui/material": "^9.0.1",
40
+ "@mui/system": "^9.0.1",
41
+ "@tanstack/react-router": "^1.169.2",
42
+ "@tanstack/react-virtual": "^3.13.24",
43
+ "i18next": "^26.1.0",
44
44
  "microdiff": "^1.5.0",
45
45
  "mitt": "^3.0.1",
46
- "react-i18next": "^17.0.2",
46
+ "react-i18next": "^17.0.7",
47
47
  "react-intersection-observer": "^10.0.3",
48
48
  "react-transition-group": "^4.4.5",
49
- "zustand": "^5.0.12",
50
- "@lifi/wallet-management": "4.0.0-beta.17",
51
- "@lifi/widget-provider": "4.0.0-beta.17"
49
+ "zustand": "^5.0.13",
50
+ "@lifi/wallet-management": "4.0.0-beta.19",
51
+ "@lifi/widget-provider": "4.0.0-beta.19"
52
52
  },
53
53
  "peerDependencies": {
54
54
  "@tanstack/react-query": ">=5.90.0",
@@ -46,7 +46,7 @@ const chainTypeIcons = [
46
46
  },
47
47
  ]
48
48
 
49
- const maxChainAvatarsCount = chainTypeIcons.length
49
+ const maxChainAvatarsCount = 4
50
50
 
51
51
  export const AllChainsAvatar: React.NamedExoticComponent<AllChainsAvatarProps> =
52
52
  memo(({ chains, size }: AllChainsAvatarProps): JSX.Element => {
@@ -172,7 +172,7 @@ export const SendToWalletButton: React.FC<CardProps> = (props) => {
172
172
  subheader={headerSubheader}
173
173
  selected={!!toAddressFieldValue || disabledToAddress}
174
174
  action={
175
- !!toAddressFieldValue && !disabledForChanges ? (
175
+ toAddressFieldValue && !disabledForChanges ? (
176
176
  <CardIconButton onClick={clearSelectedBookmark} size="small">
177
177
  <CloseRounded fontSize="inherit" />
178
178
  </CardIconButton>
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '4.0.0-beta.17'
2
+ export const version = '4.0.0-beta.19'
@@ -7,7 +7,8 @@ import { useAvailableChains } from './useAvailableChains.js'
7
7
 
8
8
  export const useActionMessage = (
9
9
  step?: LiFiStepExtended,
10
- action?: ExecutionAction
10
+ action?: ExecutionAction,
11
+ defaultLabelsOnly?: boolean
11
12
  ): { title?: string; message?: string } => {
12
13
  const { subvariant, subvariantOptions } = useWidgetConfig()
13
14
  const { t } = useTranslation()
@@ -27,7 +28,7 @@ export const useActionMessage = (
27
28
  action.type,
28
29
  action.status,
29
30
  action.substatus,
30
- subvariant,
31
- subvariantOptions
31
+ defaultLabelsOnly ? undefined : subvariant,
32
+ defaultLabelsOnly ? undefined : subvariantOptions
32
33
  )
33
34
  }
@@ -139,7 +139,6 @@ export const useRouteExecution = ({
139
139
  return executeRoute(sdkClient, routeExecution.route, {
140
140
  updateRouteHook,
141
141
  acceptExchangeRateUpdateHook,
142
- infiniteApproval: false,
143
142
  executeInBackground,
144
143
  ...sdkClient.config?.executionOptions,
145
144
  })
@@ -164,7 +163,6 @@ export const useRouteExecution = ({
164
163
  return resumeRoute(sdkClient, resumedRoute ?? routeExecution.route, {
165
164
  updateRouteHook,
166
165
  acceptExchangeRateUpdateHook,
167
- infiniteApproval: false,
168
166
  executeInBackground,
169
167
  })
170
168
  },
@@ -10,8 +10,9 @@ export const StepActionRow: React.FC<{
10
10
  step: LiFiStepExtended
11
11
  action: ExecutionAction
12
12
  href: string
13
- }> = ({ step, action, href }) => {
14
- const { title } = useActionMessage(step, action)
13
+ defaultLabelsOnly?: boolean
14
+ }> = ({ step, action, href, defaultLabelsOnly }) => {
15
+ const { title } = useActionMessage(step, action, defaultLabelsOnly)
15
16
  const isFailed = action?.status === 'FAILED'
16
17
  return (
17
18
  <ActionRow
@@ -46,20 +46,27 @@ export const StepActionsList: React.FC<StepActionsListProps> = ({
46
46
  return null
47
47
  }
48
48
 
49
+ const lastStepIndex = stepRows.length - 1
50
+
49
51
  return (
50
52
  <TransactionList>
51
- {stepRows.map(({ step, rows }) => (
52
- <TransactionList key={step.id}>
53
- {rows.map(({ action, href }, index) => (
54
- <StepActionRow
55
- key={index}
56
- step={step}
57
- action={action!}
58
- href={href!}
59
- />
60
- ))}
61
- </TransactionList>
62
- ))}
53
+ {stepRows.map(({ step, rows }, stepIndex) => {
54
+ const lastRowIndex = rows.length - 1
55
+ const isLastStep = stepIndex === lastStepIndex
56
+ return (
57
+ <TransactionList key={step.id}>
58
+ {rows.map(({ action, href }, rowIndex) => (
59
+ <StepActionRow
60
+ key={rowIndex}
61
+ step={step}
62
+ action={action!}
63
+ href={href!}
64
+ defaultLabelsOnly={!(isLastStep && rowIndex === lastRowIndex)}
65
+ />
66
+ ))}
67
+ </TransactionList>
68
+ )
69
+ })}
63
70
  {toAddress ? (
64
71
  <SentToWalletRow toAddress={toAddress} toChainId={route.toChainId} />
65
72
  ) : null}