@lifi/widget 4.0.0 → 4.1.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 (324) hide show
  1. package/dist/esm/App.d.ts +4 -2
  2. package/dist/esm/App.d.ts.map +1 -1
  3. package/dist/esm/App.js +4 -4
  4. package/dist/esm/App.js.map +1 -1
  5. package/dist/esm/AppDrawer.d.ts +1 -1
  6. package/dist/esm/AppDrawer.d.ts.map +1 -1
  7. package/dist/esm/AppDrawer.js +5 -6
  8. package/dist/esm/AppDrawer.js.map +1 -1
  9. package/dist/esm/AppDrawerContext.js +2 -2
  10. package/dist/esm/AppDrawerContext.js.map +1 -1
  11. package/dist/esm/components/ActionRow/ActionRow.style.js.map +1 -1
  12. package/dist/esm/components/AmountInput/AmountInput.js.map +1 -1
  13. package/dist/esm/components/AmountInput/AmountInput.style.js.map +1 -1
  14. package/dist/esm/components/AmountInput/AmountInputEndAdornment.style.js.map +1 -1
  15. package/dist/esm/components/AmountInput/PriceFormHelperText.style.js.map +1 -1
  16. package/dist/esm/components/AppContainer.js.map +1 -1
  17. package/dist/esm/components/Avatar/AccountAvatar.js.map +1 -1
  18. package/dist/esm/components/Avatar/Avatar.style.js.map +1 -1
  19. package/dist/esm/components/Avatar/SmallAvatar.js.map +1 -1
  20. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js +1 -0
  21. package/dist/esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  22. package/dist/esm/components/BottomSheet/BottomSheet.js +3 -3
  23. package/dist/esm/components/BottomSheet/BottomSheet.js.map +1 -1
  24. package/dist/esm/components/ButtonTertiary.js.map +1 -1
  25. package/dist/esm/components/Card/Card.js.map +1 -1
  26. package/dist/esm/components/Card/CardButton.style.js.map +1 -1
  27. package/dist/esm/components/Card/CardHeader.js.map +1 -1
  28. package/dist/esm/components/Card/CardIconButton.js.map +1 -1
  29. package/dist/esm/components/Card/CardLabel.js.map +1 -1
  30. package/dist/esm/components/Card/CardTitle.js.map +1 -1
  31. package/dist/esm/components/Card/InputCard.js.map +1 -1
  32. package/dist/esm/components/ChainSelect/ChainSelect.js.map +1 -1
  33. package/dist/esm/components/ChainSelect/ChainSelect.style.js.map +1 -1
  34. package/dist/esm/components/ChainSelect/useChainSelect.js.map +1 -1
  35. package/dist/esm/components/Chains/AllChainsAvatar.js.map +1 -1
  36. package/dist/esm/components/Chains/ChainList.js.map +1 -1
  37. package/dist/esm/components/Chains/ChainList.style.js.map +1 -1
  38. package/dist/esm/components/Chains/ChainsExpanded.style.js.map +1 -1
  39. package/dist/esm/components/Chains/VirtualizedChainList.js.map +1 -1
  40. package/dist/esm/components/ContextMenu.style.js.map +1 -1
  41. package/dist/esm/components/ContractComponent/NFT/NFT.style.js.map +1 -1
  42. package/dist/esm/components/Dialog/Dialog.style.js.map +1 -1
  43. package/dist/esm/components/EmptyListIndicator/EmptyListIndicator.style.js.map +1 -1
  44. package/dist/esm/components/ExecutionStatusCard/StatusIcon.js.map +1 -1
  45. package/dist/esm/components/ExecutionStatusCard/StatusIcon.style.js.map +1 -1
  46. package/dist/esm/components/ExecutionStatusCard/iconKey.js.map +1 -1
  47. package/dist/esm/components/Expansion/Expansion.style.js.map +1 -1
  48. package/dist/esm/components/Header/ActivitiesButton.style.js.map +1 -1
  49. package/dist/esm/components/Header/CloseDrawerButton.js +1 -0
  50. package/dist/esm/components/Header/CloseDrawerButton.js.map +1 -1
  51. package/dist/esm/components/Header/Header.js +7 -10
  52. package/dist/esm/components/Header/Header.js.map +1 -1
  53. package/dist/esm/components/Header/Header.style.js.map +1 -1
  54. package/dist/esm/components/Header/HeaderNavigationTabs.js +26 -0
  55. package/dist/esm/components/Header/HeaderNavigationTabs.js.map +1 -0
  56. package/dist/esm/components/Header/HeaderTabs.js +33 -0
  57. package/dist/esm/components/Header/HeaderTabs.js.map +1 -0
  58. package/dist/esm/components/Header/NavigationHeader.js +7 -5
  59. package/dist/esm/components/Header/NavigationHeader.js.map +1 -1
  60. package/dist/esm/components/Header/SettingsButton.style.js.map +1 -1
  61. package/dist/esm/components/Header/WalletMenu.style.js.map +1 -1
  62. package/dist/esm/components/IconCircle/IconCircle.style.js.map +1 -1
  63. package/dist/esm/components/IconTypography.js.map +1 -1
  64. package/dist/esm/components/Input.js.map +1 -1
  65. package/dist/esm/components/ListItem/ListItem.js.map +1 -1
  66. package/dist/esm/components/ListItem/ListItemButton.js.map +1 -1
  67. package/dist/esm/components/ListItemButton.js.map +1 -1
  68. package/dist/esm/components/ListItemText.js.map +1 -1
  69. package/dist/esm/components/Menu.js.map +1 -1
  70. package/dist/esm/components/Messages/AlertMessage.style.js.map +1 -1
  71. package/dist/esm/components/Messages/GasRefuelMessage.style.js.map +1 -1
  72. package/dist/esm/components/Messages/WarningMessages.js.map +1 -1
  73. package/dist/esm/components/PageContainer.js.map +1 -1
  74. package/dist/esm/components/PoweredBy/PoweredBy.js.map +1 -1
  75. package/dist/esm/components/PoweredBy/PoweredBy.style.js.map +1 -1
  76. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js +1 -0
  77. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.js.map +1 -1
  78. package/dist/esm/components/ReverseTokensButton/ReverseTokensButton.style.js.map +1 -1
  79. package/dist/esm/components/RouteCard/RouteDetails.js.map +1 -1
  80. package/dist/esm/components/RouteCard/RouteDetails.style.js +2 -2
  81. package/dist/esm/components/RouteCard/RouteDetails.style.js.map +1 -1
  82. package/dist/esm/components/RouteCard/RouteToken.style.js.map +1 -1
  83. package/dist/esm/components/RouteCard/RouteTokens.js.map +1 -1
  84. package/dist/esm/components/RouteCard/getMatchingLabels.js.map +1 -1
  85. package/dist/esm/components/Routes/RoutesContent.js.map +1 -1
  86. package/dist/esm/components/Routes/RoutesExpanded.style.js.map +1 -1
  87. package/dist/esm/components/Search/SearchInput.style.js.map +1 -1
  88. package/dist/esm/components/Search/SearchNotFound.style.js.map +1 -1
  89. package/dist/esm/components/SelectTokenButton/SelectTokenButton.style.js.map +1 -1
  90. package/dist/esm/components/SendToWallet/SendToWalletButton.style.js.map +1 -1
  91. package/dist/esm/components/SettingsListItemButton.js.map +1 -1
  92. package/dist/esm/components/Skeleton/WidgetSkeleton.js +50 -47
  93. package/dist/esm/components/Skeleton/WidgetSkeleton.js.map +1 -1
  94. package/dist/esm/components/Skeleton/WidgetSkeleton.style.js.map +1 -1
  95. package/dist/esm/components/Step/StepActions.js.map +1 -1
  96. package/dist/esm/components/Step/StepActions.style.js.map +1 -1
  97. package/dist/esm/components/StepActions/SentToWalletRow.style.js.map +1 -1
  98. package/dist/esm/components/StepActions/StepActionRow.style.js.map +1 -1
  99. package/dist/esm/components/Switch.js.map +1 -1
  100. package/dist/esm/components/Tabs/NavigationTabs.js +3 -0
  101. package/dist/esm/components/Tabs/NavigationTabs.js.map +1 -1
  102. package/dist/esm/components/Tabs/Tabs.style.js.map +1 -1
  103. package/dist/esm/components/Timer/StepStatusTimer.style.js.map +1 -1
  104. package/dist/esm/components/Token/Token.style.js.map +1 -1
  105. package/dist/esm/components/TokenList/PinTokenButton.js.map +1 -1
  106. package/dist/esm/components/TokenList/TokenDetailsSheet.js +4 -4
  107. package/dist/esm/components/TokenList/TokenDetailsSheet.js.map +1 -1
  108. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js +4 -4
  109. package/dist/esm/components/TokenList/TokenDetailsSheetContent.js.map +1 -1
  110. package/dist/esm/components/TokenList/TokenDetailsSheetContent.style.js.map +1 -1
  111. package/dist/esm/components/TokenList/TokenList.style.js.map +1 -1
  112. package/dist/esm/components/TokenList/TokenListItem.js +2 -2
  113. package/dist/esm/components/TokenList/TokenListItem.js.map +1 -1
  114. package/dist/esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  115. package/dist/esm/components/TokenList/useTokenSelect.js +3 -3
  116. package/dist/esm/components/TokenList/useTokenSelect.js.map +1 -1
  117. package/dist/esm/components/TokenRate/TokenRate.style.js.map +1 -1
  118. package/dist/esm/components/TransactionCard/ActiveTransactionCard.js.map +1 -1
  119. package/dist/esm/components/TransactionCard/ActiveTransactionCard.style.js.map +1 -1
  120. package/dist/esm/components/TransactionCard/TransactionCard.style.js.map +1 -1
  121. package/dist/esm/config/version.d.ts +1 -1
  122. package/dist/esm/config/version.js +1 -1
  123. package/dist/esm/config/version.js.map +1 -1
  124. package/dist/esm/hooks/timer/validate.js.map +1 -1
  125. package/dist/esm/hooks/useAccountsBalancesData.js.map +1 -1
  126. package/dist/esm/hooks/useAvailableChains.js +1 -1
  127. package/dist/esm/hooks/useChainSearch.js.map +1 -1
  128. package/dist/esm/hooks/useChains.js +1 -1
  129. package/dist/esm/hooks/useExplorer.js.map +1 -1
  130. package/dist/esm/hooks/useFilteredByTokenBalances.js +1 -1
  131. package/dist/esm/hooks/useFilteredByTokenBalances.js.map +1 -1
  132. package/dist/esm/hooks/useFromTokenSufficiency.js.map +1 -1
  133. package/dist/esm/hooks/useGasSufficiency.js.map +1 -1
  134. package/dist/esm/hooks/useLanguages.js +2 -2
  135. package/dist/esm/hooks/useLanguages.js.map +1 -1
  136. package/dist/esm/hooks/useRouteExecution.js.map +1 -1
  137. package/dist/esm/hooks/useRouteExecutionMessage.js.map +1 -1
  138. package/dist/esm/hooks/useRouteRequiredAccountConnection.js.map +1 -1
  139. package/dist/esm/hooks/useRoutes.js.map +1 -1
  140. package/dist/esm/hooks/useSwapOnly.js +2 -4
  141. package/dist/esm/hooks/useSwapOnly.js.map +1 -1
  142. package/dist/esm/hooks/useToAddressRequirements.js +2 -2
  143. package/dist/esm/hooks/useToAddressRequirements.js.map +1 -1
  144. package/dist/esm/hooks/useToken.js.map +1 -1
  145. package/dist/esm/hooks/useTokenBalance.js.map +1 -1
  146. package/dist/esm/hooks/useTokenBalances.js.map +1 -1
  147. package/dist/esm/hooks/useTokenBalancesQueries.js.map +1 -1
  148. package/dist/esm/hooks/useTokenSearch.js +1 -1
  149. package/dist/esm/hooks/useTokenSearch.js.map +1 -1
  150. package/dist/esm/hooks/useTokens.js +1 -1
  151. package/dist/esm/hooks/useTokens.js.map +1 -1
  152. package/dist/esm/hooks/useTools.js +1 -1
  153. package/dist/esm/hooks/useTransactionDetails.js.map +1 -1
  154. package/dist/esm/hooks/useTransactionHistory.js.map +1 -1
  155. package/dist/esm/hooks/useTransactionList.js.map +1 -1
  156. package/dist/esm/i18n/en.json +3 -0
  157. package/dist/esm/index.d.ts +2 -2
  158. package/dist/esm/pages/ActivitiesPage/ActivitiesPage.js.map +1 -1
  159. package/dist/esm/pages/MainPage/ReviewButton.js +2 -2
  160. package/dist/esm/pages/MainPage/ReviewButton.js.map +1 -1
  161. package/dist/esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  162. package/dist/esm/pages/RoutesPage/RoutesPage.style.js.map +1 -1
  163. package/dist/esm/pages/SelectEnabledToolsPage.js.map +1 -1
  164. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js +3 -3
  165. package/dist/esm/pages/SendToWallet/BookmarkAddressSheet.js.map +1 -1
  166. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js +3 -3
  167. package/dist/esm/pages/SendToWallet/ConfirmAddressSheet.js.map +1 -1
  168. package/dist/esm/pages/SendToWallet/SendToWalletPage.js.map +1 -1
  169. package/dist/esm/pages/SendToWallet/SendToWalletPage.style.js.map +1 -1
  170. package/dist/esm/pages/SettingsPage/BridgeAndExchangeSettings.js.map +1 -1
  171. package/dist/esm/pages/SettingsPage/GasPriceSettings.js +1 -1
  172. package/dist/esm/pages/SettingsPage/ResetSettingsButton.style.js.map +1 -1
  173. package/dist/esm/pages/SettingsPage/RoutePrioritySettings.js +1 -1
  174. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  175. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js +3 -3
  176. package/dist/esm/pages/SettingsPage/SettingsCard/SettingCardExpandable.js.map +1 -1
  177. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js +3 -3
  178. package/dist/esm/pages/SettingsPage/SettingsCard/SettingsAccordian.js.map +1 -1
  179. package/dist/esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  180. package/dist/esm/pages/SettingsPage/ThemeSettings.js.map +1 -1
  181. package/dist/esm/pages/TransactionDetailsPage/ContactSupportButton.style.js.map +1 -1
  182. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsPage.js.map +1 -1
  183. package/dist/esm/pages/TransactionDetailsPage/TransactionDetailsSkeleton.js.map +1 -1
  184. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js +3 -3
  185. package/dist/esm/pages/TransactionPage/ConfirmToAddressSheet.js.map +1 -1
  186. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js +16 -15
  187. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.js.map +1 -1
  188. package/dist/esm/pages/TransactionPage/ExchangeRateBottomSheet.style.js.map +1 -1
  189. package/dist/esm/pages/TransactionPage/RouteTracker.js.map +1 -1
  190. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js +3 -3
  191. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.js.map +1 -1
  192. package/dist/esm/pages/TransactionPage/TokenValueBottomSheet.style.js.map +1 -1
  193. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js +27 -31
  194. package/dist/esm/pages/TransactionPage/TransactionExecutionContent.js.map +1 -1
  195. package/dist/esm/pages/TransactionPage/utils.js.map +1 -1
  196. package/dist/esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  197. package/dist/esm/providers/I18nProvider/i18n.js.map +1 -1
  198. package/dist/esm/providers/QueryClientProvider.js +2 -2
  199. package/dist/esm/providers/QueryClientProvider.js.map +1 -1
  200. package/dist/esm/providers/SDKClientProvider.js +26 -27
  201. package/dist/esm/providers/SDKClientProvider.js.map +1 -1
  202. package/dist/esm/providers/WidgetProvider/WidgetProvider.js +25 -27
  203. package/dist/esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  204. package/dist/esm/stores/StoreProvider.js +3 -4
  205. package/dist/esm/stores/StoreProvider.js.map +1 -1
  206. package/dist/esm/stores/bookmarks/BookmarkStore.js +3 -3
  207. package/dist/esm/stores/bookmarks/BookmarkStore.js.map +1 -1
  208. package/dist/esm/stores/bookmarks/createBookmarkStore.js.map +1 -1
  209. package/dist/esm/stores/chains/ChainOrderStore.js +4 -4
  210. package/dist/esm/stores/chains/ChainOrderStore.js.map +1 -1
  211. package/dist/esm/stores/chains/createChainOrderStore.js.map +1 -1
  212. package/dist/esm/stores/form/FormStore.js +1 -1
  213. package/dist/esm/stores/form/FormStore.js.map +1 -1
  214. package/dist/esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  215. package/dist/esm/stores/form/createFormStore.js.map +1 -1
  216. package/dist/esm/stores/form/getDefaultValuesFromQueryString.js.map +1 -1
  217. package/dist/esm/stores/form/useFieldActions.js.map +1 -1
  218. package/dist/esm/stores/form/useFieldValues.js.map +1 -1
  219. package/dist/esm/stores/form/useFormRef.js.map +1 -1
  220. package/dist/esm/stores/form/useFormStore.js +2 -2
  221. package/dist/esm/stores/form/useFormStore.js.map +1 -1
  222. package/dist/esm/stores/header/useHeaderStore.js +3 -3
  223. package/dist/esm/stores/header/useHeaderStore.js.map +1 -1
  224. package/dist/esm/stores/inputMode/useInputModeStore.js.map +1 -1
  225. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js +22 -0
  226. package/dist/esm/stores/navigationTabs/useNavigationTabLabel.js.map +1 -0
  227. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js +62 -0
  228. package/dist/esm/stores/navigationTabs/useNavigationTabsStore.js.map +1 -0
  229. package/dist/esm/stores/navigationTabs/utils.js +92 -0
  230. package/dist/esm/stores/navigationTabs/utils.js.map +1 -0
  231. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js +3 -3
  232. package/dist/esm/stores/pinnedTokens/PinnedTokensStore.js.map +1 -1
  233. package/dist/esm/stores/pinnedTokens/createPinnedTokensStore.js.map +1 -1
  234. package/dist/esm/stores/routes/RouteExecutionStore.js +3 -3
  235. package/dist/esm/stores/routes/RouteExecutionStore.js.map +1 -1
  236. package/dist/esm/stores/routes/createRouteExecutionStore.js.map +1 -1
  237. package/dist/esm/stores/routes/useIntermediateRoutesStore.js.map +1 -1
  238. package/dist/esm/stores/routes/useRouteExecutionIndicator.js.map +1 -1
  239. package/dist/esm/stores/routes/utils.js.map +1 -1
  240. package/dist/esm/stores/settings/SettingsStore.js +3 -3
  241. package/dist/esm/stores/settings/SettingsStore.js.map +1 -1
  242. package/dist/esm/stores/settings/createSettingsStore.js +122 -96
  243. package/dist/esm/stores/settings/createSettingsStore.js.map +1 -1
  244. package/dist/esm/stores/settings/types.d.ts +0 -2
  245. package/dist/esm/stores/settings/types.d.ts.map +1 -1
  246. package/dist/esm/stores/settings/types.js.map +1 -1
  247. package/dist/esm/stores/settings/useSettingsActions.js.map +1 -1
  248. package/dist/esm/themes/createTheme.js.map +1 -1
  249. package/dist/esm/themes/utils.js.map +1 -1
  250. package/dist/esm/types/widget.d.ts +19 -2
  251. package/dist/esm/types/widget.d.ts.map +1 -1
  252. package/dist/esm/types/widget.js.map +1 -1
  253. package/dist/esm/utils/compactNumberFormatter.js.map +1 -1
  254. package/dist/esm/utils/converters.js.map +1 -1
  255. package/dist/esm/utils/deepEqual.js.map +1 -1
  256. package/dist/esm/utils/fees.js.map +1 -1
  257. package/dist/esm/utils/format.js.map +1 -1
  258. package/dist/esm/utils/getActionMessage.js.map +1 -1
  259. package/dist/esm/utils/getErrorMessage.js.map +1 -1
  260. package/dist/esm/utils/item.js.map +1 -1
  261. package/dist/esm/utils/{variant.js → mode.js} +2 -2
  262. package/dist/esm/utils/mode.js.map +1 -0
  263. package/dist/esm/utils/prepareActions.js +1 -1
  264. package/dist/esm/utils/prepareActions.js.map +1 -1
  265. package/dist/esm/utils/timer.js.map +1 -1
  266. package/dist/esm/utils/token.js +1 -1
  267. package/dist/esm/utils/token.js.map +1 -1
  268. package/dist/esm/utils/tokenList.js.map +1 -1
  269. package/package.json +11 -11
  270. package/src/App.tsx +7 -7
  271. package/src/AppDrawer.tsx +77 -78
  272. package/src/AppDrawerContext.ts +2 -2
  273. package/src/components/BaseTransactionButton/BaseTransactionButton.tsx +1 -0
  274. package/src/components/BottomSheet/BottomSheet.tsx +56 -52
  275. package/src/components/Header/CloseDrawerButton.tsx +5 -1
  276. package/src/components/Header/Header.tsx +20 -18
  277. package/src/components/Header/HeaderNavigationTabs.tsx +25 -0
  278. package/src/components/Header/HeaderTabs.tsx +48 -0
  279. package/src/components/Header/NavigationHeader.tsx +11 -8
  280. package/src/components/ReverseTokensButton/ReverseTokensButton.tsx +4 -1
  281. package/src/components/Skeleton/WidgetSkeleton.tsx +1 -1
  282. package/src/components/Tabs/NavigationTabs.tsx +3 -0
  283. package/src/components/TokenList/TokenDetailsSheet.tsx +9 -7
  284. package/src/components/TokenList/TokenDetailsSheetContent.tsx +176 -177
  285. package/src/components/TokenList/useTokenSelect.ts +2 -2
  286. package/src/config/version.ts +1 -1
  287. package/src/hooks/useSwapOnly.ts +2 -5
  288. package/src/hooks/useToAddressRequirements.ts +2 -2
  289. package/src/pages/MainPage/ReviewButton.tsx +2 -2
  290. package/src/pages/SendToWallet/BookmarkAddressSheet.tsx +176 -185
  291. package/src/pages/SendToWallet/ConfirmAddressSheet.tsx +9 -6
  292. package/src/pages/SettingsPage/SettingsCard/SettingCardExpandable.tsx +58 -65
  293. package/src/pages/SettingsPage/SettingsCard/SettingsAccordian.tsx +4 -4
  294. package/src/pages/TransactionPage/ConfirmToAddressSheet.tsx +9 -6
  295. package/src/pages/TransactionPage/ExchangeRateBottomSheet.tsx +53 -58
  296. package/src/pages/TransactionPage/TokenValueBottomSheet.tsx +24 -21
  297. package/src/pages/TransactionPage/TransactionExecutionContent.tsx +8 -6
  298. package/src/providers/QueryClientProvider.tsx +2 -2
  299. package/src/providers/SDKClientProvider.tsx +3 -7
  300. package/src/providers/WidgetProvider/WidgetProvider.tsx +6 -7
  301. package/src/stores/StoreProvider.tsx +3 -10
  302. package/src/stores/bookmarks/BookmarkStore.tsx +4 -4
  303. package/src/stores/chains/ChainOrderStore.tsx +4 -4
  304. package/src/stores/form/FormStore.tsx +2 -2
  305. package/src/stores/form/useFormStore.ts +2 -2
  306. package/src/stores/header/useHeaderStore.tsx +3 -5
  307. package/src/stores/navigationTabs/types.ts +27 -0
  308. package/src/stores/navigationTabs/useNavigationTabLabel.ts +28 -0
  309. package/src/stores/navigationTabs/useNavigationTabsStore.tsx +108 -0
  310. package/src/stores/navigationTabs/utils.ts +134 -0
  311. package/src/stores/pinnedTokens/PinnedTokensStore.tsx +4 -4
  312. package/src/stores/routes/RouteExecutionStore.tsx +4 -4
  313. package/src/stores/settings/SettingsStore.tsx +4 -4
  314. package/src/stores/settings/createSettingsStore.ts +48 -12
  315. package/src/stores/settings/types.ts +1 -16
  316. package/src/types/widget.ts +31 -1
  317. package/dist/esm/components/Header/SplitNavigationTabs.js +0 -33
  318. package/dist/esm/components/Header/SplitNavigationTabs.js.map +0 -1
  319. package/dist/esm/stores/settings/useSplitModeStore.js +0 -36
  320. package/dist/esm/stores/settings/useSplitModeStore.js.map +0 -1
  321. package/dist/esm/utils/variant.js.map +0 -1
  322. package/src/components/Header/SplitNavigationTabs.tsx +0 -32
  323. package/src/stores/settings/useSplitModeStore.tsx +0 -58
  324. /package/src/utils/{variant.ts → mode.ts} +0 -0
@@ -3,7 +3,7 @@ import ContentCopyRounded from '@mui/icons-material/ContentCopyRounded'
3
3
  import OpenInNewRounded from '@mui/icons-material/OpenInNewRounded'
4
4
  import { Box, IconButton, Link, Skeleton, Typography } from '@mui/material'
5
5
  import type React from 'react'
6
- import { forwardRef, type PropsWithChildren, useMemo } from 'react'
6
+ import { type JSX, type PropsWithChildren, useMemo } from 'react'
7
7
  import { useTranslation } from 'react-i18next'
8
8
  import { useAvailableChains } from '../../hooks/useAvailableChains.js'
9
9
  import { useExplorer } from '../../hooks/useExplorer.js'
@@ -17,208 +17,207 @@ import {
17
17
  TokenDetailsSheetContainer,
18
18
  TokenDetailsSheetHeader,
19
19
  } from './TokenDetailsSheetContent.style.js'
20
- import type { TokenDetailsSheetBase } from './types.js'
21
20
 
22
21
  interface TokenDetailsSheetContentProps {
23
22
  tokenAddress: string | undefined
24
23
  chainId: number | undefined
25
24
  withoutContractAddress: boolean
25
+ onClose: () => void
26
26
  }
27
27
 
28
28
  const noDataLabel = '-'
29
29
 
30
- export const TokenDetailsSheetContent: React.ForwardRefExoticComponent<
31
- TokenDetailsSheetContentProps & React.RefAttributes<TokenDetailsSheetBase>
32
- > = forwardRef<TokenDetailsSheetBase, TokenDetailsSheetContentProps>(
33
- ({ tokenAddress, chainId, withoutContractAddress }, ref) => {
34
- const { t } = useTranslation()
35
- const { getAddressLink } = useExplorer()
36
- const { getChainById } = useAvailableChains()
30
+ export const TokenDetailsSheetContent = ({
31
+ tokenAddress,
32
+ chainId,
33
+ withoutContractAddress,
34
+ onClose,
35
+ }: TokenDetailsSheetContentProps): JSX.Element => {
36
+ const { t } = useTranslation()
37
+ const { getAddressLink } = useExplorer()
38
+ const { getChainById } = useAvailableChains()
37
39
 
38
- const { token, isLoading } = useToken(chainId, tokenAddress, true)
39
- const chain = useMemo(() => getChainById(chainId), [chainId, getChainById])
40
+ const { token, isLoading } = useToken(chainId, tokenAddress, true)
41
+ const chain = useMemo(() => getChainById(chainId), [chainId, getChainById])
40
42
 
41
- const copyContractAddress = async (e: React.MouseEvent) => {
42
- e.stopPropagation()
43
- try {
44
- // Clipboard API may throw if access is denied (e.g., in insecure contexts or older browsers)
45
- await navigator.clipboard.writeText(tokenAddress || '')
46
- } catch {
47
- // Silently fail to avoid crashing the UI if clipboard write fails
48
- }
43
+ const copyContractAddress = async (e: React.MouseEvent) => {
44
+ e.stopPropagation()
45
+ try {
46
+ // Clipboard API may throw if access is denied (e.g., in insecure contexts or older browsers)
47
+ await navigator.clipboard.writeText(tokenAddress || '')
48
+ } catch {
49
+ // Silently fail to avoid crashing the UI if clipboard write fails
49
50
  }
51
+ }
50
52
 
51
- return (
52
- <TokenDetailsSheetContainer>
53
- <TokenDetailsSheetHeader>
54
- <Box
55
- sx={{
56
- display: 'flex',
57
- flexDirection: 'row',
58
- alignItems: 'center',
59
- gap: 3,
60
- }}
61
- >
62
- <TokenAvatar
63
- token={token}
64
- chain={chain}
65
- tokenAvatarSize={72}
66
- chainAvatarSize={28}
67
- isLoading={isLoading}
68
- />
69
- <MetricContainer>
70
- {isLoading ? (
71
- <>
72
- <Skeleton variant="rounded" width={80} height={24} />
73
- <Skeleton variant="rounded" width={80} height={16} />
74
- </>
75
- ) : (
76
- <>
77
- <Typography
78
- sx={{
79
- fontWeight: 700,
80
- fontSize: '24px',
81
- lineHeight: '24px',
82
- color: 'text.primary',
83
- }}
84
- >
85
- {token?.symbol || noDataLabel}
86
- </Typography>
87
- <Label>{token?.name || noDataLabel}</Label>
88
- </>
89
- )}
90
- </MetricContainer>
91
- </Box>
92
- <IconButton
93
- onClick={(e) => {
94
- e.stopPropagation()
95
- if (ref && typeof ref !== 'function') {
96
- ref.current?.close()
97
- }
98
- }}
99
- sx={{ mt: '-8px', mr: '-8px' }}
100
- >
101
- <Close />
102
- </IconButton>
103
- </TokenDetailsSheetHeader>
104
- <MetricWithSkeleton
105
- isLoading={isLoading}
106
- label={t('tokenMetric.currentPrice')}
107
- width={200}
108
- height={40}
53
+ return (
54
+ <TokenDetailsSheetContainer>
55
+ <TokenDetailsSheetHeader>
56
+ <Box
57
+ sx={{
58
+ display: 'flex',
59
+ flexDirection: 'row',
60
+ alignItems: 'center',
61
+ gap: 3,
62
+ }}
109
63
  >
110
- <Typography
111
- sx={{
112
- fontWeight: 700,
113
- fontSize: '32px',
114
- lineHeight: '40px',
115
- color: 'text.primary',
116
- }}
117
- >
118
- {token?.priceUSD
119
- ? t('format.currency', {
120
- value: token.priceUSD,
121
- })
122
- : noDataLabel}
123
- </Typography>
124
- </MetricWithSkeleton>
125
- {!withoutContractAddress && (
126
- <MetricWithSkeleton
64
+ <TokenAvatar
65
+ token={token}
66
+ chain={chain}
67
+ tokenAvatarSize={72}
68
+ chainAvatarSize={28}
127
69
  isLoading={isLoading}
128
- label={t('tokenMetric.contractAddress')}
129
- width={200}
130
- height={24}
131
- >
132
- <Box
133
- sx={{
134
- display: 'flex',
135
- flexDirection: 'row',
136
- alignItems: 'center',
137
- gap: 1,
138
- }}
139
- >
140
- <Typography
141
- sx={{
142
- fontWeight: 700,
143
- fontSize: '18px',
144
- lineHeight: '24px',
145
- color: 'text.primary',
146
- }}
147
- >
148
- {shortenAddress(tokenAddress)}
149
- </Typography>
150
- {tokenAddress && (
151
- <CardIconButton size="small" onClick={copyContractAddress}>
152
- <ContentCopyRounded fontSize="inherit" />
153
- </CardIconButton>
154
- )}
155
- {tokenAddress && (
156
- <CardIconButton
157
- size="small"
158
- LinkComponent={Link}
159
- href={getAddressLink(tokenAddress, chainId)}
160
- target="_blank"
161
- rel="nofollow noreferrer"
162
- onClick={(e) => e.stopPropagation()}
70
+ />
71
+ <MetricContainer>
72
+ {isLoading ? (
73
+ <>
74
+ <Skeleton variant="rounded" width={80} height={24} />
75
+ <Skeleton variant="rounded" width={80} height={16} />
76
+ </>
77
+ ) : (
78
+ <>
79
+ <Typography
80
+ sx={{
81
+ fontWeight: 700,
82
+ fontSize: '24px',
83
+ lineHeight: '24px',
84
+ color: 'text.primary',
85
+ }}
163
86
  >
164
- <OpenInNewRounded fontSize="inherit" />
165
- </CardIconButton>
166
- )}
167
- </Box>
168
- </MetricWithSkeleton>
169
- )}
170
- <MetricWithSkeleton
171
- isLoading={isLoading}
172
- label={t('tokenMetric.marketCap')}
173
- width={200}
174
- height={24}
87
+ {token?.symbol || noDataLabel}
88
+ </Typography>
89
+ <Label>{token?.name || noDataLabel}</Label>
90
+ </>
91
+ )}
92
+ </MetricContainer>
93
+ </Box>
94
+ <IconButton
95
+ onClick={(e) => {
96
+ e.stopPropagation()
97
+ onClose()
98
+ }}
99
+ sx={{ mt: '-8px', mr: '-8px' }}
175
100
  >
176
- <Typography
177
- sx={{
178
- fontWeight: 700,
179
- fontSize: '18px',
180
- lineHeight: '24px',
181
- color: 'text.primary',
182
- }}
183
- >
184
- {token?.marketCapUSD
185
- ? t('format.currency', {
186
- value: token.marketCapUSD,
187
- notation: 'compact',
188
- compactDisplay: 'short',
189
- maximumFractionDigits: 2,
190
- })
191
- : noDataLabel}
192
- </Typography>
193
- </MetricWithSkeleton>
101
+ <Close />
102
+ </IconButton>
103
+ </TokenDetailsSheetHeader>
104
+ <MetricWithSkeleton
105
+ isLoading={isLoading}
106
+ label={t('tokenMetric.currentPrice')}
107
+ width={200}
108
+ height={40}
109
+ >
110
+ <Typography
111
+ sx={{
112
+ fontWeight: 700,
113
+ fontSize: '32px',
114
+ lineHeight: '40px',
115
+ color: 'text.primary',
116
+ }}
117
+ >
118
+ {token?.priceUSD
119
+ ? t('format.currency', {
120
+ value: token.priceUSD,
121
+ })
122
+ : noDataLabel}
123
+ </Typography>
124
+ </MetricWithSkeleton>
125
+ {!withoutContractAddress && (
194
126
  <MetricWithSkeleton
195
127
  isLoading={isLoading}
196
- label={t('tokenMetric.volume24h')}
128
+ label={t('tokenMetric.contractAddress')}
197
129
  width={200}
198
130
  height={24}
199
131
  >
200
- <Typography
132
+ <Box
201
133
  sx={{
202
- fontWeight: 700,
203
- fontSize: '18px',
204
- lineHeight: '24px',
205
- color: 'text.primary',
134
+ display: 'flex',
135
+ flexDirection: 'row',
136
+ alignItems: 'center',
137
+ gap: 1,
206
138
  }}
207
139
  >
208
- {token?.volumeUSD24H
209
- ? t('format.currency', {
210
- value: token.volumeUSD24H,
211
- notation: 'compact',
212
- compactDisplay: 'short',
213
- maximumFractionDigits: 2,
214
- })
215
- : noDataLabel}
216
- </Typography>
140
+ <Typography
141
+ sx={{
142
+ fontWeight: 700,
143
+ fontSize: '18px',
144
+ lineHeight: '24px',
145
+ color: 'text.primary',
146
+ }}
147
+ >
148
+ {shortenAddress(tokenAddress)}
149
+ </Typography>
150
+ {tokenAddress && (
151
+ <CardIconButton size="small" onClick={copyContractAddress}>
152
+ <ContentCopyRounded fontSize="inherit" />
153
+ </CardIconButton>
154
+ )}
155
+ {tokenAddress && (
156
+ <CardIconButton
157
+ size="small"
158
+ LinkComponent={Link}
159
+ href={getAddressLink(tokenAddress, chainId)}
160
+ target="_blank"
161
+ rel="nofollow noreferrer"
162
+ onClick={(e) => e.stopPropagation()}
163
+ >
164
+ <OpenInNewRounded fontSize="inherit" />
165
+ </CardIconButton>
166
+ )}
167
+ </Box>
217
168
  </MetricWithSkeleton>
218
- </TokenDetailsSheetContainer>
219
- )
220
- }
221
- )
169
+ )}
170
+ <MetricWithSkeleton
171
+ isLoading={isLoading}
172
+ label={t('tokenMetric.marketCap')}
173
+ width={200}
174
+ height={24}
175
+ >
176
+ <Typography
177
+ sx={{
178
+ fontWeight: 700,
179
+ fontSize: '18px',
180
+ lineHeight: '24px',
181
+ color: 'text.primary',
182
+ }}
183
+ >
184
+ {token?.marketCapUSD
185
+ ? t('format.currency', {
186
+ value: token.marketCapUSD,
187
+ notation: 'compact',
188
+ compactDisplay: 'short',
189
+ maximumFractionDigits: 2,
190
+ })
191
+ : noDataLabel}
192
+ </Typography>
193
+ </MetricWithSkeleton>
194
+ <MetricWithSkeleton
195
+ isLoading={isLoading}
196
+ label={t('tokenMetric.volume24h')}
197
+ width={200}
198
+ height={24}
199
+ >
200
+ <Typography
201
+ sx={{
202
+ fontWeight: 700,
203
+ fontSize: '18px',
204
+ lineHeight: '24px',
205
+ color: 'text.primary',
206
+ }}
207
+ >
208
+ {token?.volumeUSD24H
209
+ ? t('format.currency', {
210
+ value: token.volumeUSD24H,
211
+ notation: 'compact',
212
+ compactDisplay: 'short',
213
+ maximumFractionDigits: 2,
214
+ })
215
+ : noDataLabel}
216
+ </Typography>
217
+ </MetricWithSkeleton>
218
+ </TokenDetailsSheetContainer>
219
+ )
220
+ }
222
221
 
223
222
  interface MetricWithSkeletonProps {
224
223
  label: string
@@ -6,7 +6,7 @@ import { useChainOrderStore } from '../../stores/chains/ChainOrderStore.js'
6
6
  import type { FormType } from '../../stores/form/types.js'
7
7
  import { FormKeyHelper } from '../../stores/form/types.js'
8
8
  import { useFieldActions } from '../../stores/form/useFieldActions.js'
9
- import { useSplitModeStore } from '../../stores/settings/useSplitModeStore.js'
9
+ import { useSplitMode } from '../../stores/navigationTabs/useNavigationTabsStore.js'
10
10
  import { WidgetEvent } from '../../types/events.js'
11
11
  import type { DisabledUIConfig } from '../../types/widget.js'
12
12
  import { isItemAllowed } from '../../utils/item.js'
@@ -16,7 +16,7 @@ export const useTokenSelect = (
16
16
  onClick?: () => void
17
17
  ): ((tokenAddress: string, chainId?: number) => void) => {
18
18
  const { mode, disabledUI, chains: chainsConfig } = useWidgetConfig()
19
- const splitMode = useSplitModeStore((store) => store.state)
19
+ const splitMode = useSplitMode()
20
20
  const emitter = useWidgetEvents()
21
21
  const { setFieldValue, getFieldValues } = useFieldActions()
22
22
  const autoPopulateToAddress = useToAddressAutoPopulate()
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget'
2
- export const version = '4.0.0'
2
+ export const version = '4.1.0'
@@ -1,6 +1,3 @@
1
- import { useSplitModeStore } from '../stores/settings/useSplitModeStore.js'
1
+ import { useSplitMode } from '../stores/navigationTabs/useNavigationTabsStore.js'
2
2
 
3
- export const useSwapOnly = (): boolean => {
4
- const state = useSplitModeStore((state) => state.state)
5
- return state === 'swap'
6
- }
3
+ export const useSwapOnly = (): boolean => useSplitMode() === 'swap'
@@ -48,12 +48,12 @@ export const useToAddressRequirements = (
48
48
  contractCode: fromContractCode,
49
49
  isLoading: isFromContractLoading,
50
50
  isFetched: isFromContractFetched,
51
- } = useIsContractAddress(account.address, fromChainId, account.chainType)
51
+ } = useIsContractAddress(account.address, fromChain?.id, account.chainType)
52
52
  const {
53
53
  isContractAddress: isToContractAddress,
54
54
  isLoading: isToContractLoading,
55
55
  isFetched: isToContractFetched,
56
- } = useIsContractAddress(toAddress, toChainId, toChain?.chainType)
56
+ } = useIsContractAddress(toAddress, toChain?.id, toChain?.chainType)
57
57
 
58
58
  const isDifferentChainType =
59
59
  fromChain && toChain && fromChain.chainType !== toChain.chainType
@@ -5,7 +5,7 @@ import { useRoutes } from '../../hooks/useRoutes.js'
5
5
  import { useToAddressRequirements } from '../../hooks/useToAddressRequirements.js'
6
6
  import { useWidgetEvents } from '../../hooks/useWidgetEvents.js'
7
7
  import { useWidgetConfig } from '../../providers/WidgetProvider/WidgetProvider.js'
8
- import { useSplitModeStore } from '../../stores/settings/useSplitModeStore.js'
8
+ import { useSplitMode } from '../../stores/navigationTabs/useNavigationTabsStore.js'
9
9
  import { WidgetEvent } from '../../types/events.js'
10
10
  import { navigationRoutes } from '../../utils/navigationRoutes.js'
11
11
 
@@ -14,7 +14,7 @@ export const ReviewButton: React.FC = () => {
14
14
  const navigate = useNavigate()
15
15
  const emitter = useWidgetEvents()
16
16
  const { mode, modeOptions } = useWidgetConfig()
17
- const splitState = useSplitModeStore((state) => state.state)
17
+ const splitState = useSplitMode()
18
18
  const { toAddress, requiredToAddress } = useToAddressRequirements()
19
19
  const { routes, setReviewableRoute } = useRoutes()
20
20