@lifi/widget 3.0.0-alpha.12 → 3.0.0-alpha.13

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 (476) hide show
  1. package/App.tsx +30 -14
  2. package/AppDrawer.tsx +82 -91
  3. package/AppDrawerContext.ts +9 -0
  4. package/_cjs/App.js +16 -3
  5. package/_cjs/App.js.map +1 -1
  6. package/_cjs/AppDrawer.d.ts +4 -2
  7. package/_cjs/AppDrawer.js +20 -18
  8. package/_cjs/AppDrawer.js.map +1 -1
  9. package/_cjs/AppDrawerContext.d.ts +6 -0
  10. package/_cjs/AppDrawerContext.js +8 -0
  11. package/_cjs/AppDrawerContext.js.map +1 -0
  12. package/_cjs/components/ActiveTransactions/ActiveTransactions.js +1 -3
  13. package/_cjs/components/ActiveTransactions/ActiveTransactions.js.map +1 -1
  14. package/_cjs/components/BaseTransactionButton/BaseTransactionButton.js +6 -6
  15. package/_cjs/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  16. package/_cjs/components/ChainSelect/ChainSelect.js +7 -5
  17. package/_cjs/components/ChainSelect/ChainSelect.js.map +1 -1
  18. package/_cjs/components/ChainSelect/useChainSelect.d.ts +1 -1
  19. package/_cjs/components/ChainSelect/useChainSelect.js +3 -3
  20. package/_cjs/components/ChainSelect/useChainSelect.js.map +1 -1
  21. package/_cjs/components/Header/CloseDrawerButton.d.ts +1 -0
  22. package/_cjs/components/Header/CloseDrawerButton.js +16 -0
  23. package/_cjs/components/Header/CloseDrawerButton.js.map +1 -0
  24. package/_cjs/components/Header/EVMDisconnectIconButton.d.ts +4 -0
  25. package/_cjs/components/Header/EVMDisconnectIconButton.js +16 -0
  26. package/_cjs/components/Header/EVMDisconnectIconButton.js.map +1 -0
  27. package/_cjs/components/Header/Header.js +1 -6
  28. package/_cjs/components/Header/Header.js.map +1 -1
  29. package/_cjs/components/Header/Header.style.js +10 -4
  30. package/_cjs/components/Header/Header.style.js.map +1 -1
  31. package/_cjs/components/Header/NavigationHeader.d.ts +0 -1
  32. package/_cjs/components/Header/NavigationHeader.js +7 -11
  33. package/_cjs/components/Header/NavigationHeader.js.map +1 -1
  34. package/_cjs/components/Header/SVMDisconnectIconButton.d.ts +1 -0
  35. package/_cjs/components/Header/SVMDisconnectIconButton.js +16 -0
  36. package/_cjs/components/Header/SVMDisconnectIconButton.js.map +1 -0
  37. package/_cjs/components/Header/SettingsButton.style.js +18 -21
  38. package/_cjs/components/Header/SettingsButton.style.js.map +1 -1
  39. package/_cjs/components/Header/TransactionHistoryButton.d.ts +1 -0
  40. package/_cjs/components/Header/TransactionHistoryButton.js +17 -0
  41. package/_cjs/components/Header/TransactionHistoryButton.js.map +1 -0
  42. package/_cjs/components/Header/WalletHeader.d.ts +1 -0
  43. package/_cjs/components/Header/WalletHeader.js +21 -7
  44. package/_cjs/components/Header/WalletHeader.js.map +1 -1
  45. package/_cjs/components/Header/WalletMenu.js +5 -21
  46. package/_cjs/components/Header/WalletMenu.js.map +1 -1
  47. package/_cjs/components/SelectTokenButton/SelectTokenButton.js +7 -1
  48. package/_cjs/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  49. package/_cjs/components/SelectTokenButton/SelectTokenButton.style.js +4 -4
  50. package/_cjs/components/StepActions/StepFeeBreakdown.js +2 -2
  51. package/_cjs/components/StepActions/StepFeeBreakdown.js.map +1 -1
  52. package/_cjs/components/TokenList/TokenList.js +3 -4
  53. package/_cjs/components/TokenList/TokenList.js.map +1 -1
  54. package/_cjs/components/TokenList/VirtualizedTokenList.js +4 -2
  55. package/_cjs/components/TokenList/VirtualizedTokenList.js.map +1 -1
  56. package/_cjs/components/TokenList/types.d.ts +1 -2
  57. package/_cjs/components/TokenList/useTokenSelect.js +6 -4
  58. package/_cjs/components/TokenList/useTokenSelect.js.map +1 -1
  59. package/_cjs/config/queryClient.js +0 -1
  60. package/_cjs/config/queryClient.js.map +1 -1
  61. package/_cjs/config/version.d.ts +1 -1
  62. package/_cjs/config/version.js +1 -1
  63. package/_cjs/config/walletConnect.d.ts +1 -0
  64. package/_cjs/config/walletConnect.js +5 -0
  65. package/_cjs/config/walletConnect.js.map +1 -0
  66. package/_cjs/hooks/useAccount.d.ts +4 -1
  67. package/_cjs/hooks/useAccount.js +5 -16
  68. package/_cjs/hooks/useAccount.js.map +1 -1
  69. package/_cjs/hooks/useAvailableChains.js +12 -6
  70. package/_cjs/hooks/useAvailableChains.js.map +1 -1
  71. package/_cjs/hooks/useChains.d.ts +2 -1
  72. package/_cjs/hooks/useChains.js +7 -3
  73. package/_cjs/hooks/useChains.js.map +1 -1
  74. package/_cjs/hooks/useDebouncedWatch.d.ts +1 -2
  75. package/_cjs/hooks/useDebouncedWatch.js +1 -1
  76. package/_cjs/hooks/useDebouncedWatch.js.map +1 -1
  77. package/_cjs/hooks/useFromTokenSufficiency.js +8 -7
  78. package/_cjs/hooks/useFromTokenSufficiency.js.map +1 -1
  79. package/_cjs/hooks/useGasRecommendation.d.ts +1 -1
  80. package/_cjs/hooks/useGasRecommendation.js.map +1 -1
  81. package/_cjs/hooks/useGasRefuel.js +2 -2
  82. package/_cjs/hooks/useGasRefuel.js.map +1 -1
  83. package/_cjs/hooks/useGasSufficiency.js +7 -6
  84. package/_cjs/hooks/useGasSufficiency.js.map +1 -1
  85. package/_cjs/hooks/useRouteExecution.js +5 -5
  86. package/_cjs/hooks/useRouteExecution.js.map +1 -1
  87. package/_cjs/hooks/useRoutes.d.ts +1 -1
  88. package/_cjs/hooks/useRoutes.js +22 -15
  89. package/_cjs/hooks/useRoutes.js.map +1 -1
  90. package/_cjs/hooks/useTokenAddressBalance.d.ts +2 -1
  91. package/_cjs/hooks/useTokenAddressBalance.js +2 -1
  92. package/_cjs/hooks/useTokenAddressBalance.js.map +1 -1
  93. package/_cjs/hooks/useTokenBalance.d.ts +1 -1
  94. package/_cjs/hooks/useTokenBalance.js +8 -19
  95. package/_cjs/hooks/useTokenBalance.js.map +1 -1
  96. package/_cjs/hooks/useTokenBalances.d.ts +2 -1
  97. package/_cjs/hooks/useTokenBalances.js +1 -0
  98. package/_cjs/hooks/useTokenBalances.js.map +1 -1
  99. package/_cjs/hooks/useTools.js +3 -2
  100. package/_cjs/hooks/useTools.js.map +1 -1
  101. package/_cjs/hooks/useTransactionHistory.d.ts +2 -2
  102. package/_cjs/hooks/useTransactionHistory.js +32 -23
  103. package/_cjs/hooks/useTransactionHistory.js.map +1 -1
  104. package/_cjs/i18n/en.json +4 -3
  105. package/_cjs/pages/ActiveTransactionsPage/ActiveTransactionsPage.js +1 -3
  106. package/_cjs/pages/ActiveTransactionsPage/ActiveTransactionsPage.js.map +1 -1
  107. package/_cjs/pages/RoutesPage/RoutesPage.js +1 -1
  108. package/_cjs/pages/RoutesPage/RoutesPage.js.map +1 -1
  109. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.js +1 -1
  110. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.style.js +6 -5
  111. package/_cjs/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  112. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.js +6 -7
  113. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  114. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js +1 -1
  115. package/_cjs/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  116. package/_cjs/pages/TransactionPage/StatusBottomSheet.js +13 -9
  117. package/_cjs/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  118. package/_cjs/providers/I18nProvider/I18nProvider.js +2 -1
  119. package/_cjs/providers/I18nProvider/I18nProvider.js.map +1 -1
  120. package/_cjs/providers/WalletProvider/EVMBaseProvider.d.ts +2 -0
  121. package/_cjs/providers/WalletProvider/EVMBaseProvider.js +91 -0
  122. package/_cjs/providers/WalletProvider/EVMBaseProvider.js.map +1 -0
  123. package/_cjs/providers/WalletProvider/EVMExternalContext.d.ts +2 -0
  124. package/_cjs/providers/WalletProvider/EVMExternalContext.js +6 -0
  125. package/_cjs/providers/WalletProvider/EVMExternalContext.js.map +1 -0
  126. package/_cjs/providers/WalletProvider/EVMProvider.d.ts +1 -1
  127. package/_cjs/providers/WalletProvider/EVMProvider.js +13 -70
  128. package/_cjs/providers/WalletProvider/EVMProvider.js.map +1 -1
  129. package/_cjs/providers/WalletProvider/SDKProviders.js +13 -5
  130. package/_cjs/providers/WalletProvider/SDKProviders.js.map +1 -1
  131. package/_cjs/providers/WalletProvider/SVMBaseProvider.d.ts +2 -0
  132. package/_cjs/providers/WalletProvider/{SolanaProvider.js → SVMBaseProvider.js} +4 -14
  133. package/_cjs/providers/WalletProvider/SVMBaseProvider.js.map +1 -0
  134. package/_cjs/providers/WalletProvider/SVMExternalContext.d.ts +2 -0
  135. package/_cjs/providers/WalletProvider/SVMExternalContext.js +6 -0
  136. package/_cjs/providers/WalletProvider/SVMExternalContext.js.map +1 -0
  137. package/_cjs/providers/WalletProvider/SVMProvider.d.ts +3 -0
  138. package/_cjs/providers/WalletProvider/SVMProvider.js +23 -0
  139. package/_cjs/providers/WalletProvider/SVMProvider.js.map +1 -0
  140. package/_cjs/providers/WalletProvider/WalletProvider.js +2 -2
  141. package/_cjs/providers/WalletProvider/WalletProvider.js.map +1 -1
  142. package/_cjs/providers/WalletProvider/index.d.ts +1 -0
  143. package/_cjs/providers/WalletProvider/index.js +1 -0
  144. package/_cjs/providers/WalletProvider/index.js.map +1 -1
  145. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.d.ts +7 -0
  146. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.js +27 -0
  147. package/_cjs/providers/WalletProvider/useHasExternalWalletProvider.js.map +1 -0
  148. package/_cjs/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  149. package/_cjs/providers/WidgetProvider/index.d.ts +1 -2
  150. package/_cjs/providers/WidgetProvider/index.js +1 -2
  151. package/_cjs/providers/WidgetProvider/index.js.map +1 -1
  152. package/_cjs/stores/StoreProvider.js +3 -3
  153. package/_cjs/stores/StoreProvider.js.map +1 -1
  154. package/_cjs/stores/chains/ChainOrderStore.js +19 -16
  155. package/_cjs/stores/chains/ChainOrderStore.js.map +1 -1
  156. package/_cjs/stores/chains/createChainOrderStore.js +34 -15
  157. package/_cjs/stores/chains/createChainOrderStore.js.map +1 -1
  158. package/_cjs/stores/chains/types.d.ts +11 -4
  159. package/_cjs/stores/chains/useChainOrder.d.ts +2 -1
  160. package/_cjs/stores/chains/useChainOrder.js +2 -2
  161. package/_cjs/stores/chains/useChainOrder.js.map +1 -1
  162. package/_cjs/stores/form/FormStore.d.ts +1 -1
  163. package/_cjs/stores/form/FormStore.js +4 -4
  164. package/_cjs/stores/form/FormStore.js.map +1 -1
  165. package/_cjs/stores/form/FormUpdater.d.ts +3 -3
  166. package/_cjs/stores/form/FormUpdater.js +4 -4
  167. package/_cjs/stores/form/FormUpdater.js.map +1 -1
  168. package/_cjs/stores/form/URLSearchParamsBuilder.js +3 -2
  169. package/_cjs/stores/form/URLSearchParamsBuilder.js.map +1 -1
  170. package/_cjs/stores/form/createFormStore.js.map +1 -1
  171. package/_cjs/stores/form/types.d.ts +20 -20
  172. package/_cjs/stores/form/types.js.map +1 -1
  173. package/_cjs/stores/form/useFieldActions.js +9 -10
  174. package/_cjs/stores/form/useFieldActions.js.map +1 -1
  175. package/_cjs/stores/form/useFieldController.d.ts +1 -1
  176. package/_cjs/stores/form/useFieldValues.d.ts +2 -2
  177. package/_cjs/stores/form/useFieldValues.js +3 -2
  178. package/_cjs/stores/form/useFieldValues.js.map +1 -1
  179. package/_cjs/stores/form/useTouchedFields.d.ts +14 -1
  180. package/_cjs/stores/form/useValidationActions.js +7 -11
  181. package/_cjs/stores/form/useValidationActions.js.map +1 -1
  182. package/_cjs/stores/routes/useExecutingRoutesIds.d.ts +1 -1
  183. package/_cjs/stores/routes/useExecutingRoutesIds.js +5 -2
  184. package/_cjs/stores/routes/useExecutingRoutesIds.js.map +1 -1
  185. package/_cjs/stores/settings/useSettingsStore.d.ts +1 -0
  186. package/_cjs/stores/settings/useSettingsStore.js +3 -2
  187. package/_cjs/stores/settings/useSettingsStore.js.map +1 -1
  188. package/_cjs/types/widget.d.ts +26 -23
  189. package/_cjs/types/widget.js +1 -0
  190. package/_cjs/types/widget.js.map +1 -1
  191. package/_cjs/utils/index.d.ts +1 -0
  192. package/_cjs/utils/index.js +1 -0
  193. package/_cjs/utils/index.js.map +1 -1
  194. package/_cjs/utils/item.d.ts +2 -0
  195. package/_cjs/{providers/WidgetProvider/utils.js → utils/item.js} +1 -1
  196. package/_cjs/utils/item.js.map +1 -0
  197. package/_esm/App.js +16 -3
  198. package/_esm/App.js.map +1 -1
  199. package/_esm/AppDrawer.d.ts +4 -2
  200. package/_esm/AppDrawer.js +21 -19
  201. package/_esm/AppDrawer.js.map +1 -1
  202. package/_esm/AppDrawerContext.d.ts +6 -0
  203. package/_esm/AppDrawerContext.js +4 -0
  204. package/_esm/AppDrawerContext.js.map +1 -0
  205. package/_esm/components/ActiveTransactions/ActiveTransactions.js +1 -3
  206. package/_esm/components/ActiveTransactions/ActiveTransactions.js.map +1 -1
  207. package/_esm/components/BaseTransactionButton/BaseTransactionButton.js +6 -6
  208. package/_esm/components/BaseTransactionButton/BaseTransactionButton.js.map +1 -1
  209. package/_esm/components/ChainSelect/ChainSelect.js +8 -6
  210. package/_esm/components/ChainSelect/ChainSelect.js.map +1 -1
  211. package/_esm/components/ChainSelect/useChainSelect.d.ts +1 -1
  212. package/_esm/components/ChainSelect/useChainSelect.js +4 -4
  213. package/_esm/components/ChainSelect/useChainSelect.js.map +1 -1
  214. package/_esm/components/Header/CloseDrawerButton.d.ts +1 -0
  215. package/_esm/components/Header/CloseDrawerButton.js +12 -0
  216. package/_esm/components/Header/CloseDrawerButton.js.map +1 -0
  217. package/_esm/components/Header/EVMDisconnectIconButton.d.ts +4 -0
  218. package/_esm/components/Header/EVMDisconnectIconButton.js +12 -0
  219. package/_esm/components/Header/EVMDisconnectIconButton.js.map +1 -0
  220. package/_esm/components/Header/Header.js +1 -6
  221. package/_esm/components/Header/Header.js.map +1 -1
  222. package/_esm/components/Header/Header.style.js +10 -4
  223. package/_esm/components/Header/Header.style.js.map +1 -1
  224. package/_esm/components/Header/NavigationHeader.d.ts +0 -1
  225. package/_esm/components/Header/NavigationHeader.js +8 -11
  226. package/_esm/components/Header/NavigationHeader.js.map +1 -1
  227. package/_esm/components/Header/SVMDisconnectIconButton.d.ts +1 -0
  228. package/_esm/components/Header/SVMDisconnectIconButton.js +12 -0
  229. package/_esm/components/Header/SVMDisconnectIconButton.js.map +1 -0
  230. package/_esm/components/Header/SettingsButton.style.js +18 -21
  231. package/_esm/components/Header/SettingsButton.style.js.map +1 -1
  232. package/_esm/components/Header/TransactionHistoryButton.d.ts +1 -0
  233. package/_esm/components/Header/TransactionHistoryButton.js +13 -0
  234. package/_esm/components/Header/TransactionHistoryButton.js.map +1 -0
  235. package/_esm/components/Header/WalletHeader.d.ts +1 -0
  236. package/_esm/components/Header/WalletHeader.js +20 -7
  237. package/_esm/components/Header/WalletHeader.js.map +1 -1
  238. package/_esm/components/Header/WalletMenu.js +4 -20
  239. package/_esm/components/Header/WalletMenu.js.map +1 -1
  240. package/_esm/components/SelectTokenButton/SelectTokenButton.js +7 -1
  241. package/_esm/components/SelectTokenButton/SelectTokenButton.js.map +1 -1
  242. package/_esm/components/SelectTokenButton/SelectTokenButton.style.js +4 -4
  243. package/_esm/components/StepActions/StepFeeBreakdown.js +2 -2
  244. package/_esm/components/StepActions/StepFeeBreakdown.js.map +1 -1
  245. package/_esm/components/TokenList/TokenList.js +4 -5
  246. package/_esm/components/TokenList/TokenList.js.map +1 -1
  247. package/_esm/components/TokenList/VirtualizedTokenList.js +4 -2
  248. package/_esm/components/TokenList/VirtualizedTokenList.js.map +1 -1
  249. package/_esm/components/TokenList/types.d.ts +1 -2
  250. package/_esm/components/TokenList/useTokenSelect.js +7 -5
  251. package/_esm/components/TokenList/useTokenSelect.js.map +1 -1
  252. package/_esm/config/queryClient.js +0 -1
  253. package/_esm/config/queryClient.js.map +1 -1
  254. package/_esm/config/version.d.ts +1 -1
  255. package/_esm/config/version.js +1 -1
  256. package/_esm/config/walletConnect.d.ts +1 -0
  257. package/_esm/config/walletConnect.js +2 -0
  258. package/_esm/config/walletConnect.js.map +1 -0
  259. package/_esm/hooks/useAccount.d.ts +4 -1
  260. package/_esm/hooks/useAccount.js +5 -15
  261. package/_esm/hooks/useAccount.js.map +1 -1
  262. package/_esm/hooks/useAvailableChains.js +12 -6
  263. package/_esm/hooks/useAvailableChains.js.map +1 -1
  264. package/_esm/hooks/useChains.d.ts +2 -1
  265. package/_esm/hooks/useChains.js +8 -4
  266. package/_esm/hooks/useChains.js.map +1 -1
  267. package/_esm/hooks/useDebouncedWatch.d.ts +1 -2
  268. package/_esm/hooks/useDebouncedWatch.js +1 -1
  269. package/_esm/hooks/useDebouncedWatch.js.map +1 -1
  270. package/_esm/hooks/useFromTokenSufficiency.js +8 -7
  271. package/_esm/hooks/useFromTokenSufficiency.js.map +1 -1
  272. package/_esm/hooks/useGasRecommendation.d.ts +1 -1
  273. package/_esm/hooks/useGasRecommendation.js.map +1 -1
  274. package/_esm/hooks/useGasRefuel.js +2 -2
  275. package/_esm/hooks/useGasRefuel.js.map +1 -1
  276. package/_esm/hooks/useGasSufficiency.js +7 -6
  277. package/_esm/hooks/useGasSufficiency.js.map +1 -1
  278. package/_esm/hooks/useRouteExecution.js +5 -5
  279. package/_esm/hooks/useRouteExecution.js.map +1 -1
  280. package/_esm/hooks/useRoutes.d.ts +1 -1
  281. package/_esm/hooks/useRoutes.js +23 -16
  282. package/_esm/hooks/useRoutes.js.map +1 -1
  283. package/_esm/hooks/useTokenAddressBalance.d.ts +2 -1
  284. package/_esm/hooks/useTokenAddressBalance.js +2 -1
  285. package/_esm/hooks/useTokenAddressBalance.js.map +1 -1
  286. package/_esm/hooks/useTokenBalance.d.ts +1 -1
  287. package/_esm/hooks/useTokenBalance.js +8 -19
  288. package/_esm/hooks/useTokenBalance.js.map +1 -1
  289. package/_esm/hooks/useTokenBalances.d.ts +2 -1
  290. package/_esm/hooks/useTokenBalances.js +1 -0
  291. package/_esm/hooks/useTokenBalances.js.map +1 -1
  292. package/_esm/hooks/useTools.js +2 -1
  293. package/_esm/hooks/useTools.js.map +1 -1
  294. package/_esm/hooks/useTransactionHistory.d.ts +2 -2
  295. package/_esm/hooks/useTransactionHistory.js +33 -24
  296. package/_esm/hooks/useTransactionHistory.js.map +1 -1
  297. package/_esm/i18n/en.json +4 -3
  298. package/_esm/pages/ActiveTransactionsPage/ActiveTransactionsPage.js +1 -3
  299. package/_esm/pages/ActiveTransactionsPage/ActiveTransactionsPage.js.map +1 -1
  300. package/_esm/pages/RoutesPage/RoutesPage.js +1 -1
  301. package/_esm/pages/RoutesPage/RoutesPage.js.map +1 -1
  302. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.js +1 -1
  303. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.style.js +6 -5
  304. package/_esm/pages/SettingsPage/SettingsCard/SettingCard.style.js.map +1 -1
  305. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js +7 -8
  306. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.js.map +1 -1
  307. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js +1 -1
  308. package/_esm/pages/SettingsPage/SlippageSettings/SlippageSettings.style.js.map +1 -1
  309. package/_esm/pages/TransactionPage/StatusBottomSheet.js +13 -9
  310. package/_esm/pages/TransactionPage/StatusBottomSheet.js.map +1 -1
  311. package/_esm/providers/I18nProvider/I18nProvider.js +3 -2
  312. package/_esm/providers/I18nProvider/I18nProvider.js.map +1 -1
  313. package/_esm/providers/WalletProvider/EVMBaseProvider.d.ts +2 -0
  314. package/_esm/providers/WalletProvider/EVMBaseProvider.js +87 -0
  315. package/_esm/providers/WalletProvider/EVMBaseProvider.js.map +1 -0
  316. package/_esm/providers/WalletProvider/EVMExternalContext.d.ts +2 -0
  317. package/_esm/providers/WalletProvider/EVMExternalContext.js +3 -0
  318. package/_esm/providers/WalletProvider/EVMExternalContext.js.map +1 -0
  319. package/_esm/providers/WalletProvider/EVMProvider.d.ts +1 -1
  320. package/_esm/providers/WalletProvider/EVMProvider.js +13 -70
  321. package/_esm/providers/WalletProvider/EVMProvider.js.map +1 -1
  322. package/_esm/providers/WalletProvider/SDKProviders.js +13 -5
  323. package/_esm/providers/WalletProvider/SDKProviders.js.map +1 -1
  324. package/_esm/providers/WalletProvider/SVMBaseProvider.d.ts +2 -0
  325. package/_esm/providers/WalletProvider/{SolanaProvider.js → SVMBaseProvider.js} +3 -12
  326. package/_esm/providers/WalletProvider/SVMBaseProvider.js.map +1 -0
  327. package/_esm/providers/WalletProvider/SVMExternalContext.d.ts +2 -0
  328. package/_esm/providers/WalletProvider/SVMExternalContext.js +3 -0
  329. package/_esm/providers/WalletProvider/SVMExternalContext.js.map +1 -0
  330. package/_esm/providers/WalletProvider/SVMProvider.d.ts +3 -0
  331. package/_esm/providers/WalletProvider/SVMProvider.js +18 -0
  332. package/_esm/providers/WalletProvider/SVMProvider.js.map +1 -0
  333. package/_esm/providers/WalletProvider/WalletProvider.js +2 -2
  334. package/_esm/providers/WalletProvider/WalletProvider.js.map +1 -1
  335. package/_esm/providers/WalletProvider/index.d.ts +1 -0
  336. package/_esm/providers/WalletProvider/index.js +1 -0
  337. package/_esm/providers/WalletProvider/index.js.map +1 -1
  338. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.d.ts +7 -0
  339. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.js +23 -0
  340. package/_esm/providers/WalletProvider/useHasExternalWalletProvider.js.map +1 -0
  341. package/_esm/providers/WidgetProvider/WidgetProvider.js.map +1 -1
  342. package/_esm/providers/WidgetProvider/index.d.ts +1 -2
  343. package/_esm/providers/WidgetProvider/index.js +1 -2
  344. package/_esm/providers/WidgetProvider/index.js.map +1 -1
  345. package/_esm/stores/StoreProvider.js +3 -3
  346. package/_esm/stores/StoreProvider.js.map +1 -1
  347. package/_esm/stores/chains/ChainOrderStore.js +18 -15
  348. package/_esm/stores/chains/ChainOrderStore.js.map +1 -1
  349. package/_esm/stores/chains/createChainOrderStore.js +34 -15
  350. package/_esm/stores/chains/createChainOrderStore.js.map +1 -1
  351. package/_esm/stores/chains/types.d.ts +11 -4
  352. package/_esm/stores/chains/useChainOrder.d.ts +2 -1
  353. package/_esm/stores/chains/useChainOrder.js +2 -2
  354. package/_esm/stores/chains/useChainOrder.js.map +1 -1
  355. package/_esm/stores/form/FormStore.d.ts +1 -1
  356. package/_esm/stores/form/FormStore.js +5 -5
  357. package/_esm/stores/form/FormStore.js.map +1 -1
  358. package/_esm/stores/form/FormUpdater.d.ts +3 -3
  359. package/_esm/stores/form/FormUpdater.js +4 -4
  360. package/_esm/stores/form/FormUpdater.js.map +1 -1
  361. package/_esm/stores/form/URLSearchParamsBuilder.js +3 -2
  362. package/_esm/stores/form/URLSearchParamsBuilder.js.map +1 -1
  363. package/_esm/stores/form/createFormStore.js.map +1 -1
  364. package/_esm/stores/form/types.d.ts +20 -20
  365. package/_esm/stores/form/types.js.map +1 -1
  366. package/_esm/stores/form/useFieldActions.js +9 -10
  367. package/_esm/stores/form/useFieldActions.js.map +1 -1
  368. package/_esm/stores/form/useFieldController.d.ts +1 -1
  369. package/_esm/stores/form/useFieldValues.d.ts +2 -2
  370. package/_esm/stores/form/useFieldValues.js +3 -2
  371. package/_esm/stores/form/useFieldValues.js.map +1 -1
  372. package/_esm/stores/form/useTouchedFields.d.ts +14 -1
  373. package/_esm/stores/form/useValidationActions.js +7 -11
  374. package/_esm/stores/form/useValidationActions.js.map +1 -1
  375. package/_esm/stores/routes/useExecutingRoutesIds.d.ts +1 -1
  376. package/_esm/stores/routes/useExecutingRoutesIds.js +5 -2
  377. package/_esm/stores/routes/useExecutingRoutesIds.js.map +1 -1
  378. package/_esm/stores/settings/useSettingsStore.d.ts +1 -0
  379. package/_esm/stores/settings/useSettingsStore.js +2 -1
  380. package/_esm/stores/settings/useSettingsStore.js.map +1 -1
  381. package/_esm/types/widget.d.ts +26 -23
  382. package/_esm/types/widget.js +1 -0
  383. package/_esm/types/widget.js.map +1 -1
  384. package/_esm/utils/index.d.ts +1 -0
  385. package/_esm/utils/index.js +1 -0
  386. package/_esm/utils/index.js.map +1 -1
  387. package/_esm/utils/item.d.ts +2 -0
  388. package/_esm/{providers/WidgetProvider/utils.js → utils/item.js} +1 -1
  389. package/_esm/utils/item.js.map +1 -0
  390. package/components/ActiveTransactions/ActiveTransactions.tsx +1 -3
  391. package/components/BaseTransactionButton/BaseTransactionButton.tsx +6 -6
  392. package/components/ChainSelect/ChainSelect.tsx +8 -6
  393. package/components/ChainSelect/useChainSelect.ts +5 -5
  394. package/components/Header/CloseDrawerButton.tsx +18 -0
  395. package/components/Header/EVMDisconnectIconButton.tsx +24 -0
  396. package/components/Header/Header.style.ts +10 -4
  397. package/components/Header/Header.tsx +1 -8
  398. package/components/Header/NavigationHeader.tsx +13 -30
  399. package/components/Header/SVMDisconnectIconButton.tsx +19 -0
  400. package/components/Header/SettingsButton.style.tsx +18 -22
  401. package/components/Header/TransactionHistoryButton.tsx +23 -0
  402. package/components/Header/WalletHeader.tsx +25 -6
  403. package/components/Header/WalletMenu.tsx +66 -100
  404. package/components/SelectTokenButton/SelectTokenButton.style.tsx +4 -4
  405. package/components/SelectTokenButton/SelectTokenButton.tsx +10 -2
  406. package/components/StepActions/StepFeeBreakdown.tsx +2 -2
  407. package/components/TokenList/TokenList.tsx +2 -5
  408. package/components/TokenList/VirtualizedTokenList.tsx +3 -2
  409. package/components/TokenList/types.ts +1 -2
  410. package/components/TokenList/useTokenSelect.ts +8 -6
  411. package/config/queryClient.ts +0 -1
  412. package/config/version.ts +1 -1
  413. package/config/walletConnect.ts +1 -0
  414. package/hooks/useAccount.ts +9 -17
  415. package/hooks/useAvailableChains.ts +13 -6
  416. package/hooks/useChains.ts +12 -6
  417. package/hooks/useDebouncedWatch.ts +6 -5
  418. package/hooks/useFromTokenSufficiency.ts +18 -9
  419. package/hooks/useGasRecommendation.ts +1 -1
  420. package/hooks/useGasRefuel.ts +2 -2
  421. package/hooks/useGasSufficiency.ts +11 -6
  422. package/hooks/useRouteExecution.ts +5 -5
  423. package/hooks/useRoutes.ts +31 -24
  424. package/hooks/useTokenAddressBalance.ts +2 -1
  425. package/hooks/useTokenBalance.ts +12 -22
  426. package/hooks/useTokenBalances.ts +1 -0
  427. package/hooks/useTools.ts +2 -1
  428. package/hooks/useTransactionHistory.ts +39 -29
  429. package/i18n/en.json +4 -3
  430. package/package.json +13 -13
  431. package/pages/ActiveTransactionsPage/ActiveTransactionsPage.tsx +1 -3
  432. package/pages/RoutesPage/RoutesPage.tsx +0 -1
  433. package/pages/SettingsPage/SettingsCard/SettingCard.style.tsx +6 -5
  434. package/pages/SettingsPage/SettingsCard/SettingCard.tsx +1 -1
  435. package/pages/SettingsPage/SlippageSettings/SlippageSettings.style.tsx +3 -2
  436. package/pages/SettingsPage/SlippageSettings/SlippageSettings.tsx +12 -10
  437. package/pages/TransactionPage/StatusBottomSheet.tsx +14 -9
  438. package/providers/I18nProvider/I18nProvider.tsx +3 -2
  439. package/providers/WalletProvider/EVMBaseProvider.tsx +130 -0
  440. package/providers/WalletProvider/EVMExternalContext.ts +3 -0
  441. package/providers/WalletProvider/EVMProvider.tsx +17 -110
  442. package/providers/WalletProvider/SDKProviders.tsx +19 -9
  443. package/providers/WalletProvider/{SolanaProvider.tsx → SVMBaseProvider.tsx} +2 -17
  444. package/providers/WalletProvider/SVMExternalContext.ts +3 -0
  445. package/providers/WalletProvider/SVMProvider.tsx +27 -0
  446. package/providers/WalletProvider/WalletProvider.tsx +5 -5
  447. package/providers/WalletProvider/index.ts +1 -0
  448. package/providers/WalletProvider/useHasExternalWalletProvider.ts +30 -0
  449. package/providers/WidgetProvider/WidgetProvider.tsx +2 -2
  450. package/providers/WidgetProvider/index.ts +1 -2
  451. package/stores/StoreProvider.tsx +12 -12
  452. package/stores/chains/ChainOrderStore.tsx +21 -17
  453. package/stores/chains/createChainOrderStore.ts +34 -15
  454. package/stores/chains/types.ts +12 -4
  455. package/stores/chains/useChainOrder.ts +5 -2
  456. package/stores/form/FormStore.tsx +7 -8
  457. package/stores/form/FormUpdater.tsx +10 -5
  458. package/stores/form/URLSearchParamsBuilder.tsx +3 -2
  459. package/stores/form/createFormStore.ts +3 -2
  460. package/stores/form/types.ts +24 -23
  461. package/stores/form/useFieldActions.ts +11 -20
  462. package/stores/form/useFieldValues.ts +6 -4
  463. package/stores/form/useValidationActions.ts +9 -17
  464. package/stores/routes/useExecutingRoutesIds.ts +5 -2
  465. package/stores/settings/useSettingsStore.ts +3 -1
  466. package/types/widget.ts +32 -24
  467. package/utils/index.ts +1 -0
  468. package/{providers/WidgetProvider/utils.ts → utils/item.ts} +3 -7
  469. package/_cjs/providers/WalletProvider/SolanaProvider.d.ts +0 -3
  470. package/_cjs/providers/WalletProvider/SolanaProvider.js.map +0 -1
  471. package/_cjs/providers/WidgetProvider/utils.d.ts +0 -4
  472. package/_cjs/providers/WidgetProvider/utils.js.map +0 -1
  473. package/_esm/providers/WalletProvider/SolanaProvider.d.ts +0 -3
  474. package/_esm/providers/WalletProvider/SolanaProvider.js.map +0 -1
  475. package/_esm/providers/WidgetProvider/utils.d.ts +0 -4
  476. package/_esm/providers/WidgetProvider/utils.js.map +0 -1
@@ -9,8 +9,11 @@ import type { Connector } from 'wagmi';
9
9
  import type { Account } from '../../hooks';
10
10
  import { useAccount, useChain } from '../../hooks';
11
11
  import { useWidgetConfig } from '../../providers';
12
+ import { useHasExternalWalletProvider } from '../../providers/WalletProvider';
13
+ import { HiddenUI } from '../../types';
12
14
  import { navigationRoutes, shortenAddress } from '../../utils';
13
15
  import { SmallAvatar } from '../SmallAvatar';
16
+ import { CloseDrawerButton } from './CloseDrawerButton';
14
17
  import {
15
18
  DrawerWalletContainer,
16
19
  HeaderAppBar,
@@ -20,16 +23,28 @@ import { WalletMenu } from './WalletMenu';
20
23
  import { WalletMenuContainer } from './WalletMenu.style';
21
24
 
22
25
  export const WalletHeader: React.FC = () => {
23
- return (
26
+ const { subvariant, hiddenUI } = useWidgetConfig();
27
+ const { hasExternalProvider } = useHasExternalWalletProvider();
28
+ return !hasExternalProvider &&
29
+ subvariant !== 'split' &&
30
+ !hiddenUI?.includes(HiddenUI.WalletMenu) ? (
24
31
  <HeaderAppBar elevation={0} sx={{ justifyContent: 'flex-end' }}>
25
32
  <WalletMenuButton />
26
33
  </HeaderAppBar>
27
- );
34
+ ) : null;
35
+ };
36
+
37
+ export const SplitWalletMenuButton: React.FC = () => {
38
+ const { hiddenUI } = useWidgetConfig();
39
+ const { hasExternalProvider } = useHasExternalWalletProvider();
40
+ return !hasExternalProvider && !hiddenUI?.includes(HiddenUI.WalletMenu) ? (
41
+ <WalletMenuButton />
42
+ ) : null;
28
43
  };
29
44
 
30
45
  export const WalletMenuButton: React.FC = () => {
31
46
  const { account } = useAccount();
32
- const { variant } = useWidgetConfig();
47
+ const { variant, subvariant, hiddenUI } = useWidgetConfig();
33
48
 
34
49
  if (variant === 'drawer') {
35
50
  return (
@@ -39,6 +54,10 @@ export const WalletMenuButton: React.FC = () => {
39
54
  ) : (
40
55
  <ConnectButton />
41
56
  )}
57
+ {subvariant !== 'split' &&
58
+ !hiddenUI?.includes(HiddenUI.DrawerCloseButton) ? (
59
+ <CloseDrawerButton />
60
+ ) : null}
42
61
  </DrawerWalletContainer>
43
62
  );
44
63
  }
@@ -52,11 +71,11 @@ export const WalletMenuButton: React.FC = () => {
52
71
  const ConnectButton = () => {
53
72
  const { t } = useTranslation();
54
73
  const { pathname } = useLocation();
55
- const { walletManagement, subvariant, variant } = useWidgetConfig();
74
+ const { walletConfig, subvariant, variant } = useWidgetConfig();
56
75
  const navigate = useNavigate();
57
76
  const connect = async () => {
58
- if (walletManagement) {
59
- await walletManagement.connect();
77
+ if (walletConfig?.onConnect) {
78
+ walletConfig.onConnect();
60
79
  return;
61
80
  }
62
81
  navigate(navigationRoutes.selectWallet);
@@ -11,14 +11,14 @@ import {
11
11
  IconButton,
12
12
  MenuItem,
13
13
  } from '@mui/material';
14
- import { useWallet } from '@solana/wallet-adapter-react';
15
14
  import { useTranslation } from 'react-i18next';
16
15
  import { useLocation, useNavigate } from 'react-router-dom';
17
16
  import type { Connector } from 'wagmi';
18
- import { useDisconnect } from 'wagmi';
19
17
  import { useAccount, useAvailableChains } from '../../hooks';
20
18
  import { navigationRoutes, shortenAddress } from '../../utils';
21
19
  import { SmallAvatar } from '../SmallAvatar';
20
+ import { EVMDisconnectIconButton } from './EVMDisconnectIconButton.js';
21
+ import { SVMDisconnectIconButton } from './SVMDisconnectIconButton.js';
22
22
 
23
23
  export const WalletMenu = ({ onClose }: { onClose: () => void }) => {
24
24
  const { t } = useTranslation();
@@ -34,72 +34,70 @@ export const WalletMenu = ({ onClose }: { onClose: () => void }) => {
34
34
  return (
35
35
  <Box>
36
36
  <Box display="flex" flexDirection="column">
37
- {accounts
38
- .filter((account) => account.isConnected)
39
- .map((account) => {
40
- const chain = getChainById(account.chainId);
41
- const walletAddress = shortenAddress(account.address);
42
- const handleCopyAddress = async () => {
43
- await navigator.clipboard.writeText(account.address ?? '');
44
- onClose();
45
- };
46
- const avatar = (
47
- <Avatar
48
- src={
49
- account.connector?.icon ||
50
- getWalletIcon((account.connector as Connector)?.id)
51
- }
52
- alt={account.connector?.name}
53
- sx={{
54
- marginRight: chain?.logoURI ? 0 : 1.5,
55
- }}
56
- >
57
- {account.connector?.name[0]}
58
- </Avatar>
59
- );
60
- return (
61
- <MenuItem key={account.address}>
62
- <Box flex={1} display="flex" alignItems="center">
63
- {chain?.logoURI ? (
64
- <Badge
65
- overlap="circular"
66
- anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
67
- badgeContent={
68
- <SmallAvatar src={chain?.logoURI} alt={chain?.name}>
69
- {chain?.name[0]}
70
- </SmallAvatar>
71
- }
72
- sx={{ marginRight: 1.5 }}
73
- >
74
- {avatar}
75
- </Badge>
76
- ) : (
77
- avatar
78
- )}
79
- {walletAddress}
80
- </Box>
81
- <Box ml={1}>
82
- <IconButton size="medium" onClick={handleCopyAddress}>
83
- <ContentCopyIcon />
84
- </IconButton>
85
- <IconButton
86
- size="medium"
87
- component="a"
88
- onClick={onClose}
89
- href={`${chain?.metamask.blockExplorerUrls[0]}address/${account.address}`}
90
- target="_blank"
37
+ {accounts.map((account) => {
38
+ const chain = getChainById(account.chainId);
39
+ const walletAddress = shortenAddress(account.address);
40
+ const handleCopyAddress = async () => {
41
+ await navigator.clipboard.writeText(account.address ?? '');
42
+ onClose();
43
+ };
44
+ const avatar = (
45
+ <Avatar
46
+ src={
47
+ account.connector?.icon ||
48
+ getWalletIcon((account.connector as Connector)?.id)
49
+ }
50
+ alt={account.connector?.name}
51
+ sx={{
52
+ marginRight: chain?.logoURI ? 0 : 1.5,
53
+ }}
54
+ >
55
+ {account.connector?.name[0]}
56
+ </Avatar>
57
+ );
58
+ return (
59
+ <MenuItem key={account.address}>
60
+ <Box flex={1} display="flex" alignItems="center">
61
+ {chain?.logoURI ? (
62
+ <Badge
63
+ overlap="circular"
64
+ anchorOrigin={{ vertical: 'bottom', horizontal: 'right' }}
65
+ badgeContent={
66
+ <SmallAvatar src={chain?.logoURI} alt={chain?.name}>
67
+ {chain?.name[0]}
68
+ </SmallAvatar>
69
+ }
70
+ sx={{ marginRight: 1.5 }}
91
71
  >
92
- <OpenInNewIcon />
93
- </IconButton>
94
- {account.chainType === ChainType.EVM ? (
95
- <EVMDisconnectIconButton connector={account.connector} />
96
- ) : account.chainType === ChainType.SVM ? (
97
- <SVMDisconnectIconButton />
98
- ) : null}
99
- </Box>
100
- </MenuItem>
101
- );
102
- })}
72
+ {avatar}
73
+ </Badge>
74
+ ) : (
75
+ avatar
76
+ )}
77
+ {walletAddress}
78
+ </Box>
79
+ <Box ml={1}>
80
+ <IconButton size="medium" onClick={handleCopyAddress}>
81
+ <ContentCopyIcon />
82
+ </IconButton>
83
+ <IconButton
84
+ size="medium"
85
+ component="a"
86
+ onClick={onClose}
87
+ href={`${chain?.metamask.blockExplorerUrls[0]}address/${account.address}`}
88
+ target="_blank"
89
+ >
90
+ <OpenInNewIcon />
91
+ </IconButton>
92
+ {account.chainType === ChainType.EVM ? (
93
+ <EVMDisconnectIconButton connector={account.connector} />
94
+ ) : account.chainType === ChainType.SVM ? (
95
+ <SVMDisconnectIconButton />
96
+ ) : null}
97
+ </Box>
98
+ </MenuItem>
99
+ );
100
+ })}
103
101
  </Box>
104
102
  {!pathname.includes(navigationRoutes.selectWallet) ? (
105
103
  <Button
@@ -110,7 +108,7 @@ export const WalletMenu = ({ onClose }: { onClose: () => void }) => {
110
108
  marginTop: 1,
111
109
  }}
112
110
  >
113
- {accounts.filter((account) => account.isConnected).length > 1
111
+ {accounts.length > 1
114
112
  ? t(`button.changeWallet`)
115
113
  : t(`button.connectWallet`)}
116
114
  </Button>
@@ -118,35 +116,3 @@ export const WalletMenu = ({ onClose }: { onClose: () => void }) => {
118
116
  </Box>
119
117
  );
120
118
  };
121
-
122
- const EVMDisconnectIconButton = ({ connector }: { connector?: Connector }) => {
123
- const { disconnect } = useDisconnect();
124
-
125
- return (
126
- <IconButton
127
- size="medium"
128
- onClick={(e) => {
129
- e.stopPropagation();
130
- disconnect({ connector });
131
- }}
132
- >
133
- <PowerSettingsNewIcon />
134
- </IconButton>
135
- );
136
- };
137
-
138
- const SVMDisconnectIconButton = () => {
139
- const { disconnect } = useWallet();
140
-
141
- return (
142
- <IconButton
143
- size="medium"
144
- onClick={(e) => {
145
- e.stopPropagation();
146
- disconnect();
147
- }}
148
- >
149
- <PowerSettingsNewIcon />
150
- </IconButton>
151
- );
152
- };
@@ -15,19 +15,19 @@ export const SelectTokenCardHeader = styled(CardHeader, {
15
15
  textOverflow: 'ellipsis',
16
16
  whiteSpace: 'nowrap',
17
17
  overflow: 'hidden',
18
- width: compact ? 92 : 256,
18
+ width: compact ? 88 : 256,
19
19
  fontSize: compact && !selected ? 16 : 18,
20
20
  [theme.breakpoints.down(392)]: {
21
- width: compact ? 92 : 224,
21
+ width: compact ? 88 : 224,
22
22
  },
23
23
  },
24
24
  [`.${cardHeaderClasses.subheader}`]: {
25
25
  textOverflow: 'ellipsis',
26
26
  whiteSpace: 'nowrap',
27
27
  overflow: 'hidden',
28
- width: compact ? 92 : 256,
28
+ width: compact ? 88 : 256,
29
29
  [theme.breakpoints.down(392)]: {
30
- width: compact ? 92 : 224,
30
+ width: compact ? 88 : 224,
31
31
  },
32
32
  },
33
33
  }),
@@ -73,8 +73,16 @@ export const SelectTokenButton: React.FC<
73
73
  )
74
74
  }
75
75
  title={isSelected ? token.symbol : defaultPlaceholder}
76
- subheader={
77
- isSelected ? t(`main.onChain`, { chainName: chain.name }) : null
76
+ titleTypographyProps={{
77
+ title: isSelected ? token.symbol : defaultPlaceholder,
78
+ }}
79
+ subheader={isSelected ? chain.name : null}
80
+ subheaderTypographyProps={
81
+ isSelected
82
+ ? {
83
+ title: chain.name,
84
+ }
85
+ : undefined
78
86
  }
79
87
  selected={isSelected}
80
88
  compact={compact}
@@ -25,7 +25,7 @@ export const StepFeeBreakdown: React.FC<{
25
25
  : 0;
26
26
  fees += amountUSD;
27
27
  feeComponents.push(
28
- <Box mt={0.5} ml={7} key="network">
28
+ <Box ml={7} key="network">
29
29
  <Typography
30
30
  fontSize={12}
31
31
  lineHeight={2}
@@ -59,7 +59,7 @@ export const StepFeeBreakdown: React.FC<{
59
59
  : 0;
60
60
  fees += amountUSD;
61
61
  feeComponents.push(
62
- <Box mt={0.5} ml={7} key="bridge">
62
+ <Box mt={feeComponents.length ? 0.5 : 0} ml={7} key="bridge">
63
63
  <Typography
64
64
  fontSize={12}
65
65
  lineHeight={2}
@@ -2,18 +2,17 @@ import { Box } from '@mui/material';
2
2
  import type { FC } from 'react';
3
3
  import { useRef } from 'react';
4
4
  import {
5
- useAccount,
6
5
  useChain,
7
6
  useDebouncedWatch,
8
7
  useTokenBalances,
9
8
  useTokenSearch,
10
9
  } from '../../hooks';
10
+ import { FormKeyHelper, useFieldValues } from '../../stores';
11
11
  import type { TokenAmount } from '../../types';
12
12
  import { TokenNotFound } from './TokenNotFound';
13
13
  import { VirtualizedTokenList } from './VirtualizedTokenList';
14
14
  import type { TokenListProps } from './types';
15
15
  import { useTokenSelect } from './useTokenSelect';
16
- import { useFieldValues, FormKeyHelper } from '../../stores';
17
16
 
18
17
  export const TokenList: FC<TokenListProps> = ({
19
18
  formType,
@@ -21,11 +20,10 @@ export const TokenList: FC<TokenListProps> = ({
21
20
  onClick,
22
21
  }) => {
23
22
  const parentRef = useRef<HTMLUListElement | null>(null);
24
- const { account } = useAccount();
25
23
  const [selectedChainId] = useFieldValues(FormKeyHelper.getChainKey(formType));
26
24
  const [tokenSearchFilter]: string[] = useDebouncedWatch(
27
- ['tokenSearchFilter'],
28
25
  320,
26
+ 'tokenSearchFilter',
29
27
  );
30
28
 
31
29
  const { chain, isLoading: isChainLoading } = useChain(selectedChainId);
@@ -86,7 +84,6 @@ export const TokenList: FC<TokenListProps> = ({
86
84
  chain={chain}
87
85
  isLoading={isLoading}
88
86
  isBalanceLoading={isBalanceLoading}
89
- showBalance={account.isConnected}
90
87
  showFeatured={!tokenSearchFilter}
91
88
  onClick={handleTokenClick}
92
89
  />
@@ -3,6 +3,7 @@ import { useVirtualizer } from '@tanstack/react-virtual';
3
3
  import type { FC } from 'react';
4
4
  import { useEffect } from 'react';
5
5
  import { useTranslation } from 'react-i18next';
6
+ import { useAccount } from '../../hooks';
6
7
  import { TokenListItem, TokenListItemSkeleton } from './TokenListItem';
7
8
  import type { VirtualizedTokenListProps } from './types';
8
9
 
@@ -14,10 +15,10 @@ export const VirtualizedTokenList: FC<VirtualizedTokenListProps> = ({
14
15
  chain,
15
16
  isLoading,
16
17
  isBalanceLoading,
17
- showBalance,
18
18
  showFeatured,
19
19
  onClick,
20
20
  }) => {
21
+ const { isConnected } = useAccount();
21
22
  const { t } = useTranslation();
22
23
 
23
24
  const hasFeaturedTokens = !!featuredTokensLength && showFeatured;
@@ -83,7 +84,7 @@ export const VirtualizedTokenList: FC<VirtualizedTokenListProps> = ({
83
84
  token={token}
84
85
  chain={chain}
85
86
  isBalanceLoading={isBalanceLoading}
86
- showBalance={showBalance}
87
+ showBalance={isConnected}
87
88
  startAdornment={
88
89
  hasFeaturedTokens && token.featured && item.index === 0 ? (
89
90
  <Typography
@@ -15,9 +15,8 @@ export interface VirtualizedTokenListProps {
15
15
  scrollElementRef: MutableRefObject<HTMLElement | null>;
16
16
  isLoading: boolean;
17
17
  isBalanceLoading: boolean;
18
- chainId: number;
18
+ chainId?: number;
19
19
  chain?: ExtendedChain;
20
- showBalance?: boolean;
21
20
  showFeatured?: boolean;
22
21
  onClick(tokenAddress: string): void;
23
22
  }
@@ -1,11 +1,11 @@
1
1
  import { WidgetEvent, useWidgetEvents } from '@lifi/widget';
2
2
  import { useCallback } from 'react';
3
- import type { FormType } from '../../stores';
4
3
  import { useWidgetConfig } from '../../providers';
4
+ import type { FormType } from '../../stores';
5
5
  import {
6
+ FormKeyHelper,
6
7
  useFieldActions,
7
8
  useFieldController,
8
- FormKeyHelper,
9
9
  } from '../../stores';
10
10
 
11
11
  export const useTokenSelect = (formType: FormType, onClick?: () => void) => {
@@ -48,10 +48,12 @@ export const useTokenSelect = (formType: FormType, onClick?: () => void) => {
48
48
  ? WidgetEvent.SourceChainTokenSelected
49
49
  : WidgetEvent.DestinationChainTokenSelected;
50
50
 
51
- emitter.emit(eventToEmit, {
52
- chainId: selectedChainId,
53
- tokenAddress,
54
- });
51
+ if (selectedChainId) {
52
+ emitter.emit(eventToEmit, {
53
+ chainId: selectedChainId,
54
+ tokenAddress,
55
+ });
56
+ }
55
57
 
56
58
  onClick?.();
57
59
  },
@@ -4,7 +4,6 @@ export const queryClient = new QueryClient({
4
4
  defaultOptions: {
5
5
  queries: {
6
6
  enabled: true,
7
- staleTime: 3_600_000,
8
7
  refetchInterval: false,
9
8
  refetchIntervalInBackground: false,
10
9
  refetchOnWindowFocus: true,
package/config/version.ts CHANGED
@@ -1,2 +1,2 @@
1
1
  export const name = '@lifi/widget';
2
- export const version = '3.0.0-alpha.12';
2
+ export const version = '3.0.0-alpha.13';
@@ -0,0 +1 @@
1
+ export const defaultWalletConnectProjectId = '5432e3507d41270bee46b7b85bbc2ef8';
@@ -4,7 +4,7 @@ import { useWallet } from '@solana/wallet-adapter-react';
4
4
  import { useMemo } from 'react';
5
5
  import type { Chain } from 'viem';
6
6
  import type { Connector } from 'wagmi';
7
- import { useDisconnect, useAccount as useWagmiAccount } from 'wagmi';
7
+ import { useAccount as useWagmiAccount } from 'wagmi';
8
8
 
9
9
  export interface AccountBase {
10
10
  address?: string;
@@ -33,7 +33,11 @@ export type Account = EVMAccount | SVMAccount;
33
33
 
34
34
  export interface AccountResult {
35
35
  account: Account;
36
+ /**
37
+ * Connected accounts
38
+ */
36
39
  accounts: Account[];
40
+ isConnected: boolean;
37
41
  }
38
42
 
39
43
  export const useAccount = (): AccountResult => {
@@ -63,24 +67,12 @@ export const useAccount = (): AccountResult => {
63
67
  };
64
68
  const evm: Account = { ...account, chainType: ChainType.EVM };
65
69
 
70
+ const accounts = [evm, svm].filter((account) => account.isConnected);
66
71
  return {
67
72
  account: account.isConnected ? evm : svm,
68
- accounts: [evm, svm],
73
+ // We need to return only connected account list
74
+ accounts,
75
+ isConnected: accounts.length > 0,
69
76
  };
70
77
  }, [account, wallet]);
71
78
  };
72
-
73
- export const useAccountDisconnect = () => {
74
- const account = useWagmiAccount();
75
- const { disconnect: wagmiDisconnect } = useDisconnect();
76
- const { wallet, disconnect } = useWallet();
77
-
78
- return () => {
79
- if (account.isConnected) {
80
- wagmiDisconnect();
81
- }
82
- if (wallet) {
83
- disconnect();
84
- }
85
- };
86
- };
@@ -2,16 +2,23 @@ import type { ExtendedChain } from '@lifi/sdk';
2
2
  import { ChainType, config, getChains } from '@lifi/sdk';
3
3
  import { useQuery } from '@tanstack/react-query';
4
4
  import { useCallback } from 'react';
5
+ import { useHasExternalWalletProvider, useWidgetConfig } from '../providers';
6
+ import { isItemAllowed } from '../utils';
5
7
 
6
8
  export const useAvailableChains = () => {
9
+ const { chains } = useWidgetConfig();
10
+ const { providers } = useHasExternalWalletProvider();
7
11
  const { data, isLoading } = useQuery({
8
- queryKey: ['chains'],
9
- queryFn: async () => {
10
- const chains = await getChains({
11
- chainTypes: [ChainType.EVM, ChainType.SVM],
12
+ queryKey: ['chains', providers, chains?.types] as const,
13
+ queryFn: async ({ queryKey: [, providers, chainTypes] }) => {
14
+ const availableChains = await getChains({
15
+ chainTypes: (providers.length > 0
16
+ ? providers
17
+ : Object.values(ChainType)
18
+ ).filter((chainType) => isItemAllowed(chainType, chainTypes)),
12
19
  });
13
- config.setChains(chains);
14
- return chains;
20
+ config.setChains(availableChains);
21
+ return availableChains;
15
22
  },
16
23
  refetchInterval: 300000,
17
24
  staleTime: 300000,
@@ -1,8 +1,10 @@
1
1
  import { useMemo } from 'react';
2
- import { isItemAllowed, useWidgetConfig } from '../providers';
2
+ import { useWidgetConfig } from '../providers';
3
+ import type { FormType } from '../stores';
4
+ import { isItemAllowed } from '../utils';
3
5
  import { useAvailableChains } from './useAvailableChains';
4
6
 
5
- export const useChains = () => {
7
+ export const useChains = (type?: FormType) => {
6
8
  const { chains } = useWidgetConfig();
7
9
  const {
8
10
  chains: availableChains,
@@ -11,11 +13,15 @@ export const useChains = () => {
11
13
  } = useAvailableChains();
12
14
 
13
15
  const filteredChains = useMemo(() => {
14
- const filteredChains = availableChains?.filter((chain) =>
15
- isItemAllowed(chain.id, chains),
16
- );
16
+ const filteredChains = type
17
+ ? availableChains?.filter(
18
+ (chain) =>
19
+ isItemAllowed(chain.id, chains) &&
20
+ isItemAllowed(chain.id, chains?.[type]),
21
+ )
22
+ : availableChains?.filter((chain) => isItemAllowed(chain.id, chains));
17
23
  return filteredChains;
18
- }, [availableChains, chains]);
24
+ }, [availableChains, chains, type]);
19
25
 
20
26
  return {
21
27
  chains: filteredChains,
@@ -2,17 +2,18 @@ import { useEffect, useRef, useState } from 'react';
2
2
  import type { FormFieldNames } from '../stores';
3
3
  import { useFieldValues } from '../stores';
4
4
 
5
- export const useDebouncedWatch = (name: FormFieldNames[], delay: number) => {
5
+ export const useDebouncedWatch = <T extends FormFieldNames[]>(
6
+ delay: number,
7
+ ...name: T
8
+ ) => {
6
9
  const watchedValue = useFieldValues(...name);
7
10
  const [debouncedValue, setDebouncedValue] = useState(watchedValue);
8
- const debouncedValueRef = useRef<any>();
11
+ const debouncedValueRef = useRef<typeof watchedValue>();
9
12
  const isMounted = useRef(false);
10
13
 
11
14
  useEffect(() => {
12
15
  if (isMounted.current) {
13
- const hasWatchedValue = watchedValue.some(
14
- (value: FormFieldNames) => value,
15
- );
16
+ const hasWatchedValue = watchedValue.some((value) => value);
16
17
  if (hasWatchedValue) {
17
18
  const handler = setTimeout(() => {
18
19
  setDebouncedValue(watchedValue);
@@ -9,7 +9,7 @@ import { getTokenBalancesWithRetry } from './useTokenBalance';
9
9
  const refetchInterval = 30_000;
10
10
 
11
11
  export const useFromTokenSufficiency = (route?: RouteExtended) => {
12
- const { account } = useAccount();
12
+ const { accounts } = useAccount();
13
13
  const [fromChainId, fromTokenAddress, fromAmount] = useFieldValues(
14
14
  'fromChain',
15
15
  'fromToken',
@@ -23,19 +23,26 @@ export const useFromTokenSufficiency = (route?: RouteExtended) => {
23
23
  tokenAddress = route.fromToken.address;
24
24
  }
25
25
 
26
- const { token, isLoading: isTokenAddressBalanceLoading } =
27
- useTokenAddressBalance(chainId, tokenAddress);
26
+ const {
27
+ token,
28
+ chain,
29
+ isLoading: isTokenAddressBalanceLoading,
30
+ } = useTokenAddressBalance(chainId, tokenAddress);
31
+
32
+ const account = accounts.find(
33
+ (account) => account.chainType === chain?.chainType,
34
+ );
28
35
 
29
36
  const { data: insufficientFromToken, isLoading } = useQuery({
30
37
  queryKey: [
31
38
  'from-token-sufficiency-check',
32
- account.address,
39
+ account?.address,
33
40
  chainId,
34
41
  tokenAddress,
35
42
  route?.id ?? fromAmount,
36
- ],
37
- queryFn: async () => {
38
- if (!account.address || !token) {
43
+ ] as const,
44
+ queryFn: async ({ queryKey: [, accountAddress] }) => {
45
+ if (!accountAddress || !token) {
39
46
  return;
40
47
  }
41
48
  const parsedFromAmount = parseUnits(fromAmount, token.decimals);
@@ -60,7 +67,7 @@ export const useFromTokenSufficiency = (route?: RouteExtended) => {
60
67
  return insufficientFunds;
61
68
  }
62
69
 
63
- const tokenBalances = await getTokenBalancesWithRetry(account.address, [
70
+ const tokenBalances = await getTokenBalancesWithRetry(accountAddress, [
64
71
  currentAction.fromToken,
65
72
  ]);
66
73
 
@@ -70,7 +77,9 @@ export const useFromTokenSufficiency = (route?: RouteExtended) => {
70
77
  return insufficientFunds;
71
78
  },
72
79
 
73
- enabled: Boolean(account.address && token && !isTokenAddressBalanceLoading),
80
+ enabled: Boolean(
81
+ account?.address && token && !isTokenAddressBalanceLoading,
82
+ ),
74
83
  refetchInterval,
75
84
  staleTime: refetchInterval,
76
85
  placeholderData: keepPreviousData,
@@ -5,7 +5,7 @@ import { useAvailableChains } from './useAvailableChains';
5
5
  const refetchInterval = 60_000;
6
6
 
7
7
  export const useGasRecommendation = (
8
- toChainId: ChainId,
8
+ toChainId?: ChainId,
9
9
  fromChain?: ChainId,
10
10
  fromToken?: string,
11
11
  ) => {