@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
@@ -11,22 +11,22 @@ export const StoreProvider: React.FC<PropsWithChildren<WidgetConfigProps>> = ({
11
11
  config,
12
12
  }) => {
13
13
  return (
14
- <FormStoreProvider>
15
- <SplitSubvariantStoreProvider
16
- state={
17
- config.subvariant === 'split'
18
- ? config.subvariantOptions || 'swap'
19
- : undefined
20
- }
21
- >
22
- <HeaderStoreProvider namePrefix={config?.keyPrefix}>
14
+ <SplitSubvariantStoreProvider
15
+ state={
16
+ config.subvariant === 'split'
17
+ ? config.subvariantOptions || 'swap'
18
+ : undefined
19
+ }
20
+ >
21
+ <HeaderStoreProvider namePrefix={config?.keyPrefix}>
22
+ <FormStoreProvider>
23
23
  <ChainOrderStoreProvider namePrefix={config?.keyPrefix}>
24
24
  <RouteExecutionStoreProvider namePrefix={config?.keyPrefix}>
25
25
  {children}
26
26
  </RouteExecutionStoreProvider>
27
27
  </ChainOrderStoreProvider>
28
- </HeaderStoreProvider>
29
- </SplitSubvariantStoreProvider>
30
- </FormStoreProvider>
28
+ </FormStoreProvider>
29
+ </HeaderStoreProvider>
30
+ </SplitSubvariantStoreProvider>
31
31
  );
32
32
  };
@@ -2,10 +2,13 @@ import { createContext, useContext, useEffect, useRef } from 'react';
2
2
  import type { StoreApi } from 'zustand';
3
3
  import type { UseBoundStoreWithEqualityFn } from 'zustand/traditional';
4
4
  import { useChains } from '../../hooks';
5
+ import { useWidgetConfig } from '../../providers';
6
+ import { isItemAllowed } from '../../utils';
7
+ import type { FormType } from '../form';
8
+ import { useFieldActions } from '../form';
5
9
  import type { PersistStoreProviderProps } from '../types';
6
10
  import { createChainOrderStore } from './createChainOrderStore';
7
11
  import type { ChainOrderState } from './types';
8
- import { useFieldActions } from '../../stores';
9
12
 
10
13
  export type ChainOrderStore = UseBoundStoreWithEqualityFn<
11
14
  StoreApi<ChainOrderState>
@@ -19,8 +22,9 @@ export function ChainOrderStoreProvider({
19
22
  children,
20
23
  ...props
21
24
  }: PersistStoreProviderProps) {
25
+ const { chains: configChains } = useWidgetConfig();
22
26
  const storeRef = useRef<ChainOrderStore>();
23
- const { chains: filteredChains } = useChains();
27
+ const { chains } = useChains();
24
28
  const { setFieldValue, getFieldValues } = useFieldActions();
25
29
 
26
30
  if (!storeRef.current) {
@@ -28,24 +32,24 @@ export function ChainOrderStoreProvider({
28
32
  }
29
33
 
30
34
  useEffect(() => {
31
- if (filteredChains) {
32
- const chainOrder = storeRef.current
33
- ?.getState()
34
- .initializeChains(filteredChains.map((chain) => chain.id));
35
- if (chainOrder) {
36
- const [fromChainValue, toChainValue] = getFieldValues(
37
- 'fromChain',
38
- 'toChain',
35
+ if (chains) {
36
+ (['from', 'to'] as FormType[]).forEach((key) => {
37
+ const filteredChains = configChains?.[key]
38
+ ? chains.filter((chain) => isItemAllowed(chain.id, configChains[key]))
39
+ : chains;
40
+ const chainOrder = storeRef.current?.getState().initializeChains(
41
+ filteredChains.map((chain) => chain.id),
42
+ key,
39
43
  );
40
- if (!fromChainValue) {
41
- setFieldValue('fromChain', chainOrder[0]);
44
+ if (chainOrder) {
45
+ const [chainValue] = getFieldValues(`${key}Chain`);
46
+ if (!chainValue) {
47
+ setFieldValue(`${key}Chain`, chainOrder[0]);
48
+ }
42
49
  }
43
- if (!toChainValue) {
44
- setFieldValue('toChain', chainOrder[0]);
45
- }
46
- }
50
+ });
47
51
  }
48
- }, [filteredChains, getFieldValues, setFieldValue]);
52
+ }, [chains, configChains, getFieldValues, setFieldValue]);
49
53
 
50
54
  return (
51
55
  <ChainOrderStoreContext.Provider value={storeRef.current}>
@@ -5,16 +5,20 @@ import type { PersistStoreProps } from '../types';
5
5
  import type { ChainOrderState } from './types';
6
6
 
7
7
  export const maxChainToOrder = 9;
8
+ const defaultChainState = {
9
+ from: [],
10
+ to: [],
11
+ };
8
12
 
9
13
  export const createChainOrderStore = ({ namePrefix }: PersistStoreProps) =>
10
14
  createWithEqualityFn<ChainOrderState>(
11
15
  persist(
12
16
  (set, get) => ({
13
- chainOrder: [],
14
- availableChains: [],
15
- initializeChains: (chainIds: number[]) => {
17
+ chainOrder: defaultChainState,
18
+ availableChains: defaultChainState,
19
+ initializeChains: (chainIds, type) => {
16
20
  set((state: ChainOrderState) => {
17
- const chainOrder = state.chainOrder.filter((chainId) =>
21
+ const chainOrder = state.chainOrder[type].filter((chainId) =>
18
22
  chainIds.includes(chainId),
19
23
  );
20
24
  const chainsToAdd = chainIds.filter(
@@ -22,8 +26,14 @@ export const createChainOrderStore = ({ namePrefix }: PersistStoreProps) =>
22
26
  );
23
27
  if (chainOrder.length === maxChainToOrder || !chainsToAdd.length) {
24
28
  return {
25
- availableChains: chainIds,
26
- chainOrder,
29
+ availableChains: {
30
+ ...state.availableChains,
31
+ [type]: chainIds,
32
+ },
33
+ chainOrder: {
34
+ ...state.chainOrder,
35
+ [type]: chainOrder,
36
+ },
27
37
  };
28
38
  }
29
39
  const chainsToAddLength = maxChainToOrder - chainOrder.length;
@@ -31,35 +41,44 @@ export const createChainOrderStore = ({ namePrefix }: PersistStoreProps) =>
31
41
  chainOrder.push(chainsToAdd[index]);
32
42
  }
33
43
  return {
34
- availableChains: chainIds,
35
- chainOrder,
44
+ availableChains: {
45
+ ...state.availableChains,
46
+ [type]: chainIds,
47
+ },
48
+ chainOrder: {
49
+ ...state.chainOrder,
50
+ [type]: chainOrder,
51
+ },
36
52
  };
37
53
  });
38
- return get().chainOrder;
54
+ return get().chainOrder[type];
39
55
  },
40
- setChain: (chainId: number) => {
56
+ setChain: (chainId, type) => {
41
57
  const state = get();
42
58
  if (
43
- state.chainOrder.includes(chainId) ||
44
- !state.availableChains.includes(chainId)
59
+ state.chainOrder[type].includes(chainId) ||
60
+ !state.availableChains[type].includes(chainId)
45
61
  ) {
46
62
  return;
47
63
  }
48
64
  set((state: ChainOrderState) => {
49
- const chainOrder = state.chainOrder.slice();
65
+ const chainOrder = state.chainOrder[type].slice();
50
66
  chainOrder.unshift(chainId);
51
67
  if (chainOrder.length > maxChainToOrder) {
52
68
  chainOrder.pop();
53
69
  }
54
70
  return {
55
- chainOrder,
71
+ chainOrder: {
72
+ ...state.chainOrder,
73
+ [type]: chainOrder,
74
+ },
56
75
  };
57
76
  });
58
77
  },
59
78
  }),
60
79
  {
61
80
  name: `${namePrefix || 'li.fi'}-widget-chains-order`,
62
- version: 0,
81
+ version: 1,
63
82
  partialize: (state) => ({ chainOrder: state.chainOrder }),
64
83
  },
65
84
  ) as StateCreator<ChainOrderState, [], [], ChainOrderState>,
@@ -1,9 +1,17 @@
1
+ import type { FormType } from '../form';
2
+
1
3
  export interface ChainOrderProps {
2
- chainOrder: number[];
3
- availableChains: number[];
4
+ chainOrder: {
5
+ from: number[];
6
+ to: number[];
7
+ };
8
+ availableChains: {
9
+ from: number[];
10
+ to: number[];
11
+ };
4
12
  }
5
13
 
6
14
  export interface ChainOrderState extends ChainOrderProps {
7
- initializeChains(chainIds: number[]): number[];
8
- setChain(chainId: number): void;
15
+ initializeChains(chainIds: number[], type: FormType): number[];
16
+ setChain(chainId: number, type: FormType): void;
9
17
  }
@@ -1,9 +1,12 @@
1
1
  import { shallow } from 'zustand/shallow';
2
+ import type { FormType } from '../form';
2
3
  import { useChainOrderStore } from './ChainOrderStore';
3
4
 
4
- export const useChainOrder = (): [number[], (chainId: number) => void] => {
5
+ export const useChainOrder = (
6
+ type: FormType,
7
+ ): [number[], (chainId: number, type: FormType) => void] => {
5
8
  return useChainOrderStore(
6
- (state) => [state.chainOrder, state.setChain],
9
+ (state) => [state.chainOrder[type], state.setChain],
7
10
  shallow,
8
11
  );
9
12
  };
@@ -37,16 +37,15 @@ export const FormStoreProvider: React.FC<PropsWithChildren> = ({
37
37
 
38
38
  return (
39
39
  <FormStoreContext.Provider value={storeRef.current}>
40
- <FormUpdater defaultValues={defaultValues} />
41
- {children}
40
+ <FormUpdater defaultValues={defaultValues}>{children}</FormUpdater>
42
41
  </FormStoreContext.Provider>
43
42
  );
44
43
  };
45
44
 
46
- export const useFormStore = (
47
- selector: (store: FormValuesState) => any,
48
- equalityFunction = shallow,
49
- ) => {
45
+ export function useFormStore<T>(
46
+ selector: (state: FormValuesState) => T,
47
+ equalityFn = shallow,
48
+ ): T {
50
49
  const useStore = useContext(FormStoreContext);
51
50
 
52
51
  if (!useStore) {
@@ -55,5 +54,5 @@ export const useFormStore = (
55
54
  );
56
55
  }
57
56
 
58
- return useStore(selector, equalityFunction);
59
- };
57
+ return useStore(selector, equalityFn);
58
+ }
@@ -1,13 +1,17 @@
1
1
  /* eslint-disable @typescript-eslint/no-unused-vars */
2
+ import type { PropsWithChildren } from 'react';
2
3
  import { useEffect, useRef } from 'react';
3
4
  import { useAccount } from '../../hooks';
4
- import { isItemAllowed, useWidgetConfig } from '../../providers';
5
+ import { useWidgetConfig } from '../../providers';
6
+ import { isItemAllowed } from '../../utils';
5
7
  import type { DefaultValues, FormFieldNames } from './types';
6
8
  import { useFieldActions } from './useFieldActions';
7
9
 
8
- export const FormUpdater: React.FC<{
9
- defaultValues: Partial<DefaultValues>;
10
- }> = ({ defaultValues }) => {
10
+ export const FormUpdater: React.FC<
11
+ PropsWithChildren<{
12
+ defaultValues: Partial<DefaultValues>;
13
+ }>
14
+ > = ({ defaultValues, children }) => {
11
15
  const { fromChain, toChain, chains } = useWidgetConfig();
12
16
  const { account } = useAccount();
13
17
  const { isTouched, resetField, setFieldValue, getFieldValues } =
@@ -18,6 +22,7 @@ export const FormUpdater: React.FC<{
18
22
  useEffect(() => {
19
23
  const chainAllowed =
20
24
  account.chainId && isItemAllowed(account.chainId, chains);
25
+
21
26
  if (!account.isConnected || !account.chainId || !chainAllowed) {
22
27
  return;
23
28
  }
@@ -63,5 +68,5 @@ export const FormUpdater: React.FC<{
63
68
  // eslint-disable-next-line react-hooks/exhaustive-deps
64
69
  }, [defaultValues, getFieldValues, resetField, setFieldValue]);
65
70
 
66
- return null;
71
+ return children;
67
72
  };
@@ -20,8 +20,9 @@ export const URLSearchParamsBuilder = () => {
20
20
  useEffect(() => {
21
21
  const url = new URL(window.location as any);
22
22
  formValueKeys.forEach((key, index) => {
23
- if (touchedFields[key] && values[index]) {
24
- url.searchParams.set(key, values[index]);
23
+ const value = values[index];
24
+ if (touchedFields[key] && value) {
25
+ url.searchParams.set(key, value.toString());
25
26
  } else if (url.searchParams.has(key) && !values[index]) {
26
27
  url.searchParams.delete(key);
27
28
  }
@@ -2,6 +2,7 @@ import { createWithEqualityFn } from 'zustand/traditional';
2
2
 
3
3
  import type {
4
4
  DefaultValues,
5
+ FormFieldArray,
5
6
  FormFieldNames,
6
7
  FormValueControl,
7
8
  FormValues,
@@ -175,8 +176,8 @@ export const createFormStore = (defaultValues?: DefaultValues) =>
175
176
  touchedFields,
176
177
  }));
177
178
  },
178
- getFieldValues: (...names) =>
179
- names.map((name) => get().userValues[name]?.value),
179
+ getFieldValues: <T extends FormFieldNames[]>(...names: T) =>
180
+ names.map((name) => get().userValues[name]?.value) as FormFieldArray<T>,
180
181
  addFieldValidation: (name, validationFn) => {
181
182
  set((state) => ({
182
183
  validation: {
@@ -2,18 +2,18 @@ import type { StoreApi } from 'zustand';
2
2
  import type { UseBoundStoreWithEqualityFn } from 'zustand/traditional';
3
3
 
4
4
  export interface DefaultValues {
5
- toAddress: string;
6
- tokenSearchFilter: string;
7
5
  contractOutputsToken: string;
8
- toContractAddress: string;
9
- toContractCallData: string;
10
- toContractGasLimit: string;
11
- toAmount: string;
12
6
  fromAmount: string;
13
- toChain?: number;
14
7
  fromChain?: number;
15
8
  fromToken?: string;
16
- toToken?: string | undefined;
9
+ toAddress: string;
10
+ toAmount: string;
11
+ toChain?: number;
12
+ toContractAddress: string;
13
+ toContractCallData: string;
14
+ toContractGasLimit: string;
15
+ toToken?: string;
16
+ tokenSearchFilter: string;
17
17
  }
18
18
 
19
19
  export type GenericFormValue = string | number | undefined;
@@ -24,21 +24,27 @@ export interface FormValueControl<T> {
24
24
  }
25
25
 
26
26
  export interface FormValues {
27
- toAddress: FormValueControl<string>;
28
- tokenSearchFilter: FormValueControl<string>;
29
27
  contractOutputsToken: FormValueControl<string>;
28
+ fromAmount: FormValueControl<string>;
29
+ fromChain?: FormValueControl<number | undefined>;
30
+ fromToken?: FormValueControl<string | undefined>;
31
+ toAddress: FormValueControl<string>;
32
+ toAmount: FormValueControl<string>;
33
+ toChain?: FormValueControl<number | undefined>;
30
34
  toContractAddress: FormValueControl<string>;
31
35
  toContractCallData: FormValueControl<string>;
32
36
  toContractGasLimit: FormValueControl<string>;
33
- toAmount: FormValueControl<string>;
34
- fromAmount: FormValueControl<string>;
35
- fromToken?: FormValueControl<string | undefined>;
36
37
  toToken?: FormValueControl<string | undefined>;
37
- toChain?: FormValueControl<number | undefined>;
38
- fromChain?: FormValueControl<number | undefined>;
38
+ tokenSearchFilter: FormValueControl<string>;
39
39
  }
40
40
 
41
41
  export type FormFieldNames = keyof FormValues;
42
+ export type ExtractValueType<T> = T extends FormValueControl<infer U>
43
+ ? U
44
+ : never;
45
+ export type FormFieldArray<T extends FormFieldNames[]> = {
46
+ [K in keyof T]: ExtractValueType<FormValues[T[K]]>;
47
+ };
42
48
 
43
49
  export type TouchedFields = { [key in FormFieldNames]?: boolean };
44
50
 
@@ -62,10 +68,6 @@ export interface ValidationActions {
62
68
  triggerFieldValidation: (name: FormFieldNames) => Promise<boolean>;
63
69
  clearErrors: (name: FormFieldNames) => void;
64
70
  }
65
- export type ValidationActionNames = keyof ValidationActions;
66
- export type ValidationActionFunctions = Array<
67
- ValidationActions[ValidationActionNames]
68
- >;
69
71
 
70
72
  export interface FormProps {
71
73
  defaultValues: FormValues;
@@ -87,12 +89,11 @@ export interface FormActions {
87
89
  value: GenericFormValue,
88
90
  options?: SetOptions,
89
91
  ) => void;
90
- getFieldValues: (...names: FormFieldNames[]) => Array<any>;
92
+ getFieldValues: <T extends FormFieldNames[]>(
93
+ ...names: T
94
+ ) => FormFieldArray<T>;
91
95
  }
92
96
 
93
- export type FormActionNames = keyof FormActions;
94
- export type FormActionFunctions = Array<FormActions[FormActionNames]>;
95
-
96
97
  export type FormValuesState = FormProps &
97
98
  FormActions &
98
99
  ValidationProps &
@@ -1,28 +1,19 @@
1
1
  import { shallow } from 'zustand/shallow';
2
- import type {
3
- FormActions,
4
- FormActionNames,
5
- FormActionFunctions,
6
- } from './types';
7
2
  import { useFormStore } from './FormStore';
8
-
9
- const actionFunctions: FormActionNames[] = [
10
- 'setDefaultValues',
11
- 'isTouched',
12
- 'setAsTouched',
13
- 'resetField',
14
- 'setFieldValue',
15
- 'getFieldValues',
16
- ];
3
+ import type { FormActions } from './types';
17
4
 
18
5
  export const useFieldActions = () => {
19
- const actions: FormActionFunctions = useFormStore(
20
- (store) => actionFunctions.map((actionName) => store[actionName]),
6
+ const actions = useFormStore<FormActions>(
7
+ (store) => ({
8
+ getFieldValues: store.getFieldValues,
9
+ isTouched: store.isTouched,
10
+ resetField: store.resetField,
11
+ setAsTouched: store.setAsTouched,
12
+ setDefaultValues: store.setDefaultValues,
13
+ setFieldValue: store.setFieldValue,
14
+ }),
21
15
  shallow,
22
16
  );
23
17
 
24
- return actions.reduce(
25
- (accum, actionName, i) => ({ ...accum, [actionFunctions[i]]: actionName }),
26
- {},
27
- ) as FormActions;
18
+ return actions;
28
19
  };
@@ -1,10 +1,12 @@
1
- import type { FormFieldNames } from './types';
2
- import { useFormStore } from './FormStore';
3
1
  import { shallow } from 'zustand/shallow';
2
+ import { useFormStore } from './FormStore';
3
+ import type { FormFieldArray, FormFieldNames } from './types';
4
4
 
5
- export const useFieldValues = (...names: FormFieldNames[]) => {
5
+ // We should return a strongly-typed array based on the specific field names we pass to the function.
6
+ export const useFieldValues = <T extends FormFieldNames[]>(...names: T) => {
6
7
  const values = useFormStore(
7
- (store) => names.map((name) => store.userValues[name]?.value),
8
+ (store) =>
9
+ names.map((name) => store.userValues[name]!.value) as FormFieldArray<T>,
8
10
  shallow,
9
11
  );
10
12
 
@@ -1,24 +1,16 @@
1
- import type { ValidationActions } from './types';
2
- import { useFormStore } from './FormStore';
3
1
  import { shallow } from 'zustand/shallow';
4
- import type { ValidationActionFunctions, ValidationActionNames } from './types';
2
+ import { useFormStore } from './FormStore';
3
+ import type { ValidationActions } from './types';
5
4
 
6
- const validationFunctions: ValidationActionNames[] = [
7
- 'addFieldValidation',
8
- 'triggerFieldValidation',
9
- 'clearErrors',
10
- ];
11
5
  export const useValidationActions = () => {
12
- const actions: ValidationActionFunctions = useFormStore(
13
- (store) => validationFunctions.map((actionName) => store[actionName]),
6
+ const actions = useFormStore<ValidationActions>(
7
+ (store) => ({
8
+ addFieldValidation: store.addFieldValidation,
9
+ triggerFieldValidation: store.triggerFieldValidation,
10
+ clearErrors: store.clearErrors,
11
+ }),
14
12
  shallow,
15
13
  );
16
14
 
17
- return actions.reduce(
18
- (accum, actionName, i) => ({
19
- ...accum,
20
- [validationFunctions[i]]: actionName,
21
- }),
22
- {},
23
- ) as ValidationActions;
15
+ return actions;
24
16
  };
@@ -1,15 +1,18 @@
1
1
  import { shallow } from 'zustand/shallow';
2
+ import { useAccount } from '../../hooks/useAccount';
2
3
  import { useRouteExecutionStore } from './RouteExecutionStore';
3
4
  import type { RouteExecution } from './types';
4
5
  import { RouteExecutionStatus } from './types';
5
6
 
6
- export const useExecutingRoutesIds = (address?: string) => {
7
+ export const useExecutingRoutesIds = () => {
8
+ const { accounts } = useAccount();
9
+ const accountAddresses = accounts.map((account) => account.address);
7
10
  return useRouteExecutionStore(
8
11
  (state) =>
9
12
  (Object.values(state.routes) as RouteExecution[])
10
13
  .filter(
11
14
  (item) =>
12
- item.route.fromAddress === address &&
15
+ accountAddresses.includes(item.route.fromAddress) &&
13
16
  (item.status === RouteExecutionStatus.Pending ||
14
17
  item.status === RouteExecutionStatus.Failed),
15
18
  )
@@ -5,12 +5,14 @@ import type { WidgetConfig } from '../../types';
5
5
  import type { SettingsProps, SettingsState } from './types';
6
6
  import { SettingsToolTypes } from './types';
7
7
 
8
+ export const defaultSlippage = '0.5';
9
+
8
10
  export const defaultConfigurableSettings: Pick<
9
11
  SettingsState,
10
12
  'routePriority' | 'slippage' | 'gasPrice'
11
13
  > = {
12
14
  routePriority: 'RECOMMENDED',
13
- slippage: '0.5',
15
+ slippage: defaultSlippage,
14
16
  gasPrice: 'normal',
15
17
  };
16
18
 
package/types/widget.ts CHANGED
@@ -1,8 +1,9 @@
1
1
  import type {
2
2
  BaseToken,
3
+ ChainType,
3
4
  Order,
4
5
  RouteOptions,
5
- SDKOptions,
6
+ SDKConfig,
6
7
  StaticToken,
7
8
  Token,
8
9
  } from '@lifi/sdk';
@@ -14,6 +15,10 @@ import type {
14
15
  Theme,
15
16
  } from '@mui/material';
16
17
  import type { TypographyOptions } from '@mui/material/styles/createTypography';
18
+ import type {
19
+ CoinbaseWalletParameters,
20
+ WalletConnectParameters,
21
+ } from '@wagmi/connectors';
17
22
  import type { CSSProperties, ReactNode, RefObject } from 'react';
18
23
  import type { LanguageKey, LanguageResources } from '../providers';
19
24
  import type { SplitSubvariantOptions } from '../stores';
@@ -33,6 +38,7 @@ export type DisabledUIType = `${DisabledUI}`;
33
38
  export enum HiddenUI {
34
39
  Appearance = 'appearance',
35
40
  DrawerButton = 'drawerButton',
41
+ DrawerCloseButton = 'drawerCloseButton',
36
42
  History = 'history',
37
43
  Language = 'language',
38
44
  PoweredBy = 'poweredBy',
@@ -58,13 +64,20 @@ export type ThemeConfig = {
58
64
  components?: Pick<Components<Omit<Theme, 'components'>>, 'MuiAvatar'>;
59
65
  };
60
66
 
61
- export interface WidgetWalletManagement {
62
- connect(): Promise<void>;
67
+ export interface WidgetWalletConfig {
68
+ onConnect(): void;
69
+ walletConnect?: WalletConnectParameters;
70
+ coinbase?: CoinbaseWalletParameters;
71
+ }
72
+
73
+ export interface AllowDeny<T> {
74
+ allow?: T[];
75
+ deny?: T[];
63
76
  }
64
77
 
65
- export interface WidgetSDKOptions
78
+ export interface WidgetSDKConfig
66
79
  extends Omit<
67
- SDKOptions,
80
+ SDKConfig,
68
81
  | 'apiKey'
69
82
  | 'disableVersionCheck'
70
83
  | 'integrator'
@@ -125,41 +138,36 @@ export interface WidgetConfig {
125
138
  requiredUI?: RequiredUIType[];
126
139
  useRecommendedRoute?: boolean;
127
140
 
128
- walletManagement?: WidgetWalletManagement;
129
- sdkConfig?: WidgetSDKOptions;
141
+ walletConfig?: WidgetWalletConfig;
142
+ sdkConfig?: WidgetSDKConfig;
130
143
 
131
144
  buildUrl?: boolean;
132
145
  keyPrefix?: string;
133
146
 
134
- bridges?: {
135
- allow?: string[];
136
- deny?: string[];
137
- };
138
- exchanges?: {
139
- allow?: string[];
140
- deny?: string[];
141
- };
147
+ bridges?: AllowDeny<string>;
148
+ exchanges?: AllowDeny<string>;
142
149
  chains?: {
143
- allow?: number[];
144
- deny?: number[];
145
- };
150
+ from?: AllowDeny<number>;
151
+ to?: AllowDeny<number>;
152
+ types?: AllowDeny<ChainType>;
153
+ } & AllowDeny<number>;
146
154
  tokens?: {
147
155
  featured?: StaticToken[];
148
156
  include?: Token[];
149
- allow?: BaseToken[];
150
- deny?: BaseToken[];
151
- };
157
+ } & AllowDeny<BaseToken>;
152
158
  languages?: {
153
159
  default?: LanguageKey;
154
- allow?: LanguageKey[];
155
- deny?: LanguageKey[];
156
- };
160
+ } & AllowDeny<LanguageKey>;
157
161
  languageResources?: LanguageResources;
158
162
  }
159
163
 
160
164
  export type WidgetDrawerProps = {
161
165
  elementRef?: RefObject<HTMLDivElement>;
162
166
  open?: boolean;
167
+ /**
168
+ * Make sure to make the onClose callback stable (e.g. using useCallback) to avoid causing re-renders of the entire widget
169
+ */
170
+ onClose?(): void;
163
171
  };
164
172
 
165
173
  export interface WidgetConfigProps {
package/utils/index.ts CHANGED
@@ -5,6 +5,7 @@ export * from './enum';
5
5
  export * from './fees';
6
6
  export * from './format';
7
7
  export * from './input';
8
+ export * from './item';
8
9
  export * from './navigationRoutes';
9
10
  export * from './svm';
10
11
  export * from './wallet';