@rango-dev/widget-embedded 0.17.1-next.3 → 0.17.1-next.30

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 (312) hide show
  1. package/dist/QueueManager.d.ts +5 -2
  2. package/dist/QueueManager.d.ts.map +1 -1
  3. package/dist/components/AppRouter.d.ts +0 -2
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts +1 -6
  6. package/dist/components/AppRoutes.d.ts.map +1 -1
  7. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +56 -56
  8. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  9. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +0 -2
  10. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  12. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +1 -4
  13. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
  14. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  15. package/dist/components/Layout/Layout.d.ts.map +1 -1
  16. package/dist/components/Layout/Layout.types.d.ts +2 -2
  17. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  18. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  19. package/dist/components/Quote/Quote.d.ts.map +1 -1
  20. package/dist/components/Quote/Quote.styles.d.ts +159 -0
  21. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  22. package/dist/components/Quote/Quote.types.d.ts +0 -1
  23. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  24. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
  25. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -1
  26. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  27. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
  28. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
  29. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  30. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  31. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  32. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  33. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  34. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  35. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  36. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  37. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  38. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  39. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  40. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  41. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  42. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  43. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  44. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  45. package/dist/components/TokenList/TokenList.types.d.ts +3 -9
  46. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  47. package/dist/components/TokenList/index.d.ts +0 -1
  48. package/dist/components/TokenList/index.d.ts.map +1 -1
  49. package/dist/components/UpdateUrl.d.ts +1 -6
  50. package/dist/components/UpdateUrl.d.ts.map +1 -1
  51. package/dist/components/WidgetEvents.d.ts.map +1 -1
  52. package/dist/constants/errors.d.ts.map +1 -1
  53. package/dist/constants/index.d.ts +1 -0
  54. package/dist/constants/index.d.ts.map +1 -1
  55. package/dist/constants/navigationRoutes.d.ts +1 -2
  56. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  57. package/dist/constants/searchParams.d.ts +2 -1
  58. package/dist/constants/searchParams.d.ts.map +1 -1
  59. package/dist/containers/App/App.d.ts +3 -0
  60. package/dist/containers/App/App.d.ts.map +1 -0
  61. package/dist/containers/App/App.styles.d.ts +158 -0
  62. package/dist/containers/App/App.styles.d.ts.map +1 -0
  63. package/dist/containers/App/index.d.ts +2 -0
  64. package/dist/containers/App/index.d.ts.map +1 -0
  65. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  66. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +316 -0
  67. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  68. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +3 -0
  69. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  70. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  71. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  72. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  73. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  74. package/dist/containers/Wallets/index.d.ts +2 -0
  75. package/dist/containers/Wallets/index.d.ts.map +1 -0
  76. package/dist/containers/Widget/Widget.d.ts +5 -0
  77. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  78. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  79. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  80. package/dist/containers/Widget/index.d.ts +3 -0
  81. package/dist/containers/Widget/index.d.ts.map +1 -0
  82. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  83. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  84. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
  85. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
  86. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
  87. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  88. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  89. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  90. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  91. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  92. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  93. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  94. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  95. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  96. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -1
  97. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +6 -3
  98. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -1
  99. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts +1 -1
  100. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -1
  101. package/dist/hooks/useForceAutoConnect.d.ts +2 -0
  102. package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
  103. package/dist/hooks/useLanguage.d.ts +1 -1
  104. package/dist/hooks/useLanguage.d.ts.map +1 -1
  105. package/dist/hooks/useNavigateBack.d.ts +1 -3
  106. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  107. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  108. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  109. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  110. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +3 -5
  111. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  112. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  113. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  114. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  115. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  116. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  117. package/dist/hooks/useSyncStoresWithConfig.d.ts +1 -2
  118. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  119. package/dist/hooks/useTheme.d.ts +1 -1
  120. package/dist/hooks/useTheme.d.ts.map +1 -1
  121. package/dist/hooks/useWalletList.d.ts.map +1 -1
  122. package/dist/index.d.ts +20 -8
  123. package/dist/index.d.ts.map +1 -1
  124. package/dist/index.js +1 -1
  125. package/dist/index.js.map +4 -4
  126. package/dist/pages/ConfirmSwapPage.d.ts +1 -6
  127. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  128. package/dist/pages/HistoryPage.d.ts.map +1 -1
  129. package/dist/pages/Home.d.ts.map +1 -1
  130. package/dist/pages/LanguagePage.d.ts.map +1 -1
  131. package/dist/pages/LiquiditySourcePage.d.ts +1 -2
  132. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  133. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  134. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  135. package/dist/pages/SettingsPage.d.ts +1 -6
  136. package/dist/pages/SettingsPage.d.ts.map +1 -1
  137. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  138. package/dist/pages/ThemePage.d.ts.map +1 -1
  139. package/dist/pages/WalletsPage.d.ts +1 -8
  140. package/dist/pages/WalletsPage.d.ts.map +1 -1
  141. package/dist/store/AppStore.d.ts +47 -0
  142. package/dist/store/AppStore.d.ts.map +1 -0
  143. package/dist/store/app.d.ts +41 -22
  144. package/dist/store/app.d.ts.map +1 -1
  145. package/dist/store/notification.d.ts +4 -3
  146. package/dist/store/notification.d.ts.map +1 -1
  147. package/dist/store/quote.d.ts +23 -16
  148. package/dist/store/quote.d.ts.map +1 -1
  149. package/dist/store/slices/config.d.ts +3 -2
  150. package/dist/store/slices/config.d.ts.map +1 -1
  151. package/dist/store/slices/data.d.ts +3 -0
  152. package/dist/store/slices/data.d.ts.map +1 -1
  153. package/dist/store/slices/settings.d.ts +39 -0
  154. package/dist/store/slices/settings.d.ts.map +1 -0
  155. package/dist/store/ui.d.ts +2 -1
  156. package/dist/store/ui.d.ts.map +1 -1
  157. package/dist/store/wallets.d.ts +14 -9
  158. package/dist/store/wallets.d.ts.map +1 -1
  159. package/dist/types/config.d.ts +38 -5
  160. package/dist/types/config.d.ts.map +1 -1
  161. package/dist/types/swap.d.ts +4 -14
  162. package/dist/types/swap.d.ts.map +1 -1
  163. package/dist/types/wallets.d.ts +15 -1
  164. package/dist/types/wallets.d.ts.map +1 -1
  165. package/dist/utils/colors.d.ts.map +1 -1
  166. package/dist/utils/configs.d.ts +1 -0
  167. package/dist/utils/configs.d.ts.map +1 -1
  168. package/dist/utils/meta.d.ts +2 -1
  169. package/dist/utils/meta.d.ts.map +1 -1
  170. package/dist/utils/providers.d.ts +2 -2
  171. package/dist/utils/providers.d.ts.map +1 -1
  172. package/dist/utils/queue.d.ts +2 -2
  173. package/dist/utils/queue.d.ts.map +1 -1
  174. package/dist/utils/quote.d.ts +1 -1
  175. package/dist/utils/quote.d.ts.map +1 -1
  176. package/dist/utils/settings.d.ts +6 -2
  177. package/dist/utils/settings.d.ts.map +1 -1
  178. package/dist/utils/swap.d.ts +16 -7
  179. package/dist/utils/swap.d.ts.map +1 -1
  180. package/dist/utils/time.d.ts +1 -1
  181. package/dist/utils/time.d.ts.map +1 -1
  182. package/dist/utils/wallets.d.ts +7 -9
  183. package/dist/utils/wallets.d.ts.map +1 -1
  184. package/package.json +12 -10
  185. package/src/QueueManager.tsx +18 -17
  186. package/src/components/AppRouter.tsx +8 -32
  187. package/src/components/AppRoutes.tsx +57 -69
  188. package/src/components/BlockchainList/BlockchainList.tsx +4 -4
  189. package/src/components/BlockchainsSection/BlockchainsSection.tsx +4 -4
  190. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +16 -19
  191. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +0 -2
  192. package/src/components/ConfirmWalletsModal/WalletList.tsx +6 -5
  193. package/src/components/ConfirmWalletsModal/WalletList.type.ts +1 -4
  194. package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
  195. package/src/components/Layout/Layout.tsx +20 -7
  196. package/src/components/Layout/Layout.types.ts +2 -2
  197. package/src/components/NoResult/NoResult.helpers.ts +12 -12
  198. package/src/components/NoResult/NoResult.tsx +6 -6
  199. package/src/components/NotificationContent/NotificationContent.tsx +5 -3
  200. package/src/components/Quote/Quote.styles.ts +28 -1
  201. package/src/components/Quote/Quote.tsx +100 -34
  202. package/src/components/Quote/Quote.types.ts +0 -1
  203. package/src/components/Quote/QuoteSkeleton.tsx +1 -1
  204. package/src/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx +1 -1
  205. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +11 -4
  206. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +8 -1
  207. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +13 -13
  208. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
  209. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -3
  210. package/src/components/Slippage/Slippage.tsx +3 -5
  211. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +0 -4
  212. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  213. package/src/components/SwapDetails/SwapDetails.tsx +19 -39
  214. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  215. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  216. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  217. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  218. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  219. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  220. package/src/components/SwapsGroup/SwapsGroup.styles.ts +8 -1
  221. package/src/components/SwapsGroup/SwapsGroup.tsx +0 -2
  222. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  223. package/src/components/TokenList/TokenList.styles.ts +14 -2
  224. package/src/components/TokenList/TokenList.tsx +16 -19
  225. package/src/components/TokenList/TokenList.types.ts +3 -10
  226. package/src/components/TokenList/index.ts +0 -1
  227. package/src/components/UpdateUrl.tsx +23 -18
  228. package/src/components/WidgetEvents.tsx +4 -2
  229. package/src/constants/errors.ts +9 -5
  230. package/src/constants/index.ts +1 -0
  231. package/src/constants/navigationRoutes.ts +7 -8
  232. package/src/constants/searchParams.ts +1 -0
  233. package/src/containers/App/App.styles.ts +18 -0
  234. package/src/containers/App/App.tsx +52 -0
  235. package/src/containers/App/index.ts +1 -0
  236. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +17 -1
  237. package/src/containers/QuoteInfo/QuoteInfo.tsx +44 -43
  238. package/src/containers/QuoteInfo/QuoteInfo.types.ts +3 -0
  239. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +48 -34
  240. package/src/containers/Wallets/Wallets.types.ts +12 -0
  241. package/src/containers/Wallets/index.ts +1 -0
  242. package/src/containers/Widget/Widget.tsx +19 -0
  243. package/src/containers/Widget/Widget.types.ts +5 -0
  244. package/src/containers/Widget/index.ts +2 -0
  245. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
  246. package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
  247. package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
  248. package/src/containers/WidgetInfo/index.ts +1 -0
  249. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  250. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  251. package/src/containers/WidgetProvider/index.ts +1 -0
  252. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +15 -11
  253. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +25 -24
  254. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +1 -1
  255. package/src/hooks/useForceAutoConnect.ts +27 -0
  256. package/src/hooks/useLanguage.ts +4 -5
  257. package/src/hooks/useNavigateBack.ts +3 -52
  258. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  259. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  260. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  261. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  262. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
  263. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  264. package/src/hooks/useSwapInput.ts +89 -30
  265. package/src/hooks/useSyncStoresWithConfig.ts +38 -22
  266. package/src/hooks/useTheme.ts +4 -5
  267. package/src/hooks/useWalletList.ts +3 -5
  268. package/src/index.ts +53 -5
  269. package/src/pages/ConfirmSwapPage.tsx +39 -24
  270. package/src/pages/HistoryPage.tsx +2 -7
  271. package/src/pages/Home.tsx +58 -88
  272. package/src/pages/LanguagePage.tsx +0 -5
  273. package/src/pages/LiquiditySourcePage.tsx +24 -37
  274. package/src/pages/SelectBlockchainPage.tsx +28 -21
  275. package/src/pages/SelectSwapItemsPage.tsx +10 -27
  276. package/src/pages/SettingsPage.tsx +28 -24
  277. package/src/pages/SwapDetailsPage.tsx +6 -7
  278. package/src/pages/ThemePage.tsx +2 -7
  279. package/src/pages/WalletsPage.tsx +4 -15
  280. package/src/services/httpService.ts +1 -1
  281. package/src/store/AppStore.tsx +41 -0
  282. package/src/store/app.ts +44 -6
  283. package/src/store/quote.ts +29 -26
  284. package/src/store/slices/config.ts +25 -15
  285. package/src/store/slices/data.ts +64 -29
  286. package/src/store/slices/settings.ts +168 -0
  287. package/src/store/wallets.ts +68 -37
  288. package/src/types/config.ts +50 -5
  289. package/src/types/swap.ts +4 -13
  290. package/src/types/wallets.ts +18 -1
  291. package/src/utils/colors.ts +2 -1
  292. package/src/utils/configs.ts +2 -1
  293. package/src/utils/date.ts +1 -1
  294. package/src/utils/meta.ts +8 -1
  295. package/src/utils/providers.ts +8 -5
  296. package/src/utils/queue.ts +2 -2
  297. package/src/utils/quote.ts +7 -7
  298. package/src/utils/settings.ts +17 -10
  299. package/src/utils/swap.ts +59 -55
  300. package/src/utils/time.ts +1 -1
  301. package/src/utils/wallets.ts +107 -149
  302. package/dist/Wallets.d.ts +0 -17
  303. package/dist/Wallets.d.ts.map +0 -1
  304. package/dist/Widget.d.ts +0 -9
  305. package/dist/Widget.d.ts.map +0 -1
  306. package/dist/store/meta.d.ts +0 -23
  307. package/dist/store/meta.d.ts.map +0 -1
  308. package/dist/store/settings.d.ts +0 -81
  309. package/dist/store/settings.d.ts.map +0 -1
  310. package/src/Widget.tsx +0 -119
  311. package/src/store/meta.ts +0 -39
  312. package/src/store/settings.ts +0 -158
@@ -1,14 +1,15 @@
1
1
  import type { QuoteError, QuoteWarning } from '../types';
2
+ import type { Token } from 'rango-sdk';
2
3
 
3
- import { useEffect, useRef, useState } from 'react';
4
+ import { useCallback, useEffect, useState } from 'react';
4
5
 
5
- import { useMetaStore } from '../store/meta';
6
+ import { useAppStore } from '../store/AppStore';
6
7
  import { useQuoteStore } from '../store/quote';
7
- import { useSettingsStore } from '../store/settings';
8
8
  import { QuoteErrorType } from '../types';
9
9
  import { debounce } from '../utils/common';
10
10
  import { isPositiveNumber } from '../utils/numbers';
11
11
  import { generateQuoteWarnings } from '../utils/quote';
12
+ import { isFeatureEnabled } from '../utils/settings';
12
13
  import { createQuoteRequestBody } from '../utils/swap';
13
14
  import { tokensAreEqual } from '../utils/wallets';
14
15
 
@@ -19,6 +20,12 @@ import {
19
20
  import { useFetchQuote } from './useFetchQuote';
20
21
 
21
22
  const DEBOUNCE_DELAY = 600;
23
+ const FIRST_INDEX = 0;
24
+
25
+ type FetchQuoteParams = Omit<
26
+ Parameters<typeof createQuoteRequestBody>[typeof FIRST_INDEX],
27
+ 'fromToken' | 'toToken'
28
+ > & { fromToken: Token | null; toToken: Token | null };
22
29
 
23
30
  type UseSwapInput = {
24
31
  fetch: () => void;
@@ -33,6 +40,9 @@ type UseSwapInput = {
33
40
  */
34
41
  export function useSwapInput(): UseSwapInput {
35
42
  const { fetch: fetchQuote, cancelFetch } = useFetchQuote();
43
+ const { liquiditySources, enableNewLiquiditySources, features } =
44
+ useAppStore().config;
45
+ const tokens = useAppStore().tokens();
36
46
  const {
37
47
  fromToken,
38
48
  toToken,
@@ -41,9 +51,6 @@ export function useSwapInput(): UseSwapInput {
41
51
  resetQuote,
42
52
  setQuote,
43
53
  } = useQuoteStore();
44
- const {
45
- meta: { tokens },
46
- } = useMetaStore();
47
54
  const {
48
55
  slippage,
49
56
  customSlippage,
@@ -51,11 +58,10 @@ export function useSwapInput(): UseSwapInput {
51
58
  affiliateRef,
52
59
  affiliateWallets,
53
60
  disabledLiquiditySources,
54
- } = useSettingsStore();
61
+ } = useAppStore();
55
62
  const [loading, setLoading] = useState(false);
56
63
  const [error, setError] = useState<QuoteError | null>(null);
57
64
  const [warning, setWarning] = useState<QuoteWarning | null>(null);
58
- const prevDisabledLiquiditySources = useRef(disabledLiquiditySources);
59
65
  const userSlippage = customSlippage ?? slippage;
60
66
  const hasTokensValue = !fromToken || !toToken;
61
67
  const shouldSkipRequest =
@@ -69,22 +75,39 @@ export function useSwapInput(): UseSwapInput {
69
75
  setWarning(null);
70
76
  };
71
77
 
72
- const fetch: UseSwapInput['fetch'] = () => {
78
+ const fetch = (params: FetchQuoteParams) => {
79
+ const {
80
+ fromToken,
81
+ toToken,
82
+ inputAmount,
83
+ liquiditySources,
84
+ excludeLiquiditySources,
85
+ disabledLiquiditySources,
86
+ slippage,
87
+ affiliateRef,
88
+ affiliatePercent,
89
+ affiliateWallets,
90
+ } = params;
73
91
  if (!loading) {
74
92
  resetState(true);
75
93
  }
76
- if (!shouldSkipRequest) {
94
+ if (!shouldSkipRequest && fromToken && toToken) {
77
95
  resetQuote();
78
96
  const requestBody = createQuoteRequestBody({
79
97
  fromToken,
80
98
  toToken,
81
99
  inputAmount,
100
+ liquiditySources,
101
+ excludeLiquiditySources,
82
102
  disabledLiquiditySources,
83
- slippage: userSlippage,
103
+ slippage,
84
104
  affiliateRef,
85
105
  affiliatePercent,
86
106
  affiliateWallets,
87
107
  });
108
+ if (isFeatureEnabled('experimentalRoute', features)) {
109
+ requestBody.experimental = true;
110
+ }
88
111
  fetchQuote(requestBody)
89
112
  .then((res) => {
90
113
  setLoading(false);
@@ -114,11 +137,14 @@ export function useSwapInput(): UseSwapInput {
114
137
  }
115
138
  };
116
139
 
117
- const debouncedFetch = debounce(() => {
118
- if (!shouldSkipRequest) {
119
- fetch();
120
- }
121
- }, DEBOUNCE_DELAY);
140
+ const debouncedFetch = useCallback(
141
+ debounce((params: FetchQuoteParams) => {
142
+ if (!shouldSkipRequest) {
143
+ fetch(params);
144
+ }
145
+ }, DEBOUNCE_DELAY),
146
+ [shouldSkipRequest]
147
+ );
122
148
 
123
149
  useEffect(() => {
124
150
  if (!isPositiveNumber(inputAmount) || inputUsdValue?.eq(0)) {
@@ -131,20 +157,53 @@ export function useSwapInput(): UseSwapInput {
131
157
  }
132
158
  resetQuote();
133
159
  resetState(true);
134
- debouncedFetch();
135
- return cancelFetch;
136
- }, [inputAmount, shouldSkipRequest]);
137
-
138
- useEffect(() => {
139
- const disabledLiquiditySourceReset =
140
- !!prevDisabledLiquiditySources.current.length &&
141
- !disabledLiquiditySources.length;
142
- if (!shouldSkipRequest && disabledLiquiditySourceReset) {
143
- fetch();
144
- }
145
- prevDisabledLiquiditySources.current = disabledLiquiditySources;
160
+ debouncedFetch({
161
+ inputAmount,
162
+ fromToken,
163
+ toToken,
164
+ liquiditySources,
165
+ excludeLiquiditySources: enableNewLiquiditySources,
166
+ disabledLiquiditySources,
167
+ slippage: userSlippage,
168
+ affiliateRef,
169
+ affiliatePercent,
170
+ affiliateWallets,
171
+ });
146
172
  return cancelFetch;
147
- }, [disabledLiquiditySources.length]);
173
+ }, [
174
+ inputAmount,
175
+ fromToken?.symbol,
176
+ fromToken?.address,
177
+ fromToken?.blockchain,
178
+ toToken?.symbol,
179
+ toToken?.address,
180
+ toToken?.blockchain,
181
+ shouldSkipRequest,
182
+ liquiditySources?.length,
183
+ enableNewLiquiditySources,
184
+ disabledLiquiditySources.length,
185
+ userSlippage,
186
+ affiliateRef,
187
+ affiliatePercent,
188
+ JSON.stringify(affiliateWallets),
189
+ ]);
148
190
 
149
- return { fetch, loading, error, warning };
191
+ return {
192
+ fetch: () =>
193
+ fetch({
194
+ inputAmount,
195
+ fromToken,
196
+ toToken,
197
+ liquiditySources,
198
+ excludeLiquiditySources: enableNewLiquiditySources,
199
+ disabledLiquiditySources,
200
+ slippage: userSlippage,
201
+ affiliateRef,
202
+ affiliatePercent,
203
+ affiliateWallets,
204
+ }),
205
+ loading,
206
+ error,
207
+ warning,
208
+ };
150
209
  }
@@ -1,14 +1,12 @@
1
- import type { WidgetConfig } from '../types';
2
1
  import type { Asset } from 'rango-sdk';
3
2
 
4
- import { useEffect, useMemo, useRef } from 'react';
3
+ import { useEffect, useLayoutEffect, useMemo, useRef } from 'react';
5
4
 
6
- import { useMetaStore } from '../store/meta';
5
+ import { useAppStore } from '../store/AppStore';
7
6
  import { useQuoteStore } from '../store/quote';
8
- import { useSettingsStore } from '../store/settings';
9
7
  import { tokensAreEqual } from '../utils/wallets';
10
8
 
11
- export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
9
+ export function useSyncStoresWithConfig() {
12
10
  const {
13
11
  setInputAmount,
14
12
  setToToken,
@@ -21,13 +19,13 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
21
19
  toBlockchain,
22
20
  } = useQuoteStore();
23
21
 
24
- const {
25
- meta: { tokens, blockchains },
26
- loadingStatus: loadingMetaStatus,
27
- } = useMetaStore();
22
+ const config = useAppStore().config;
23
+ const fetchMetaStatus = useAppStore().fetchStatus;
24
+ const blockchains = useAppStore().blockchains();
25
+ const tokens = useAppStore().tokens();
28
26
 
29
27
  const { setAffiliateRef, setAffiliatePercent, setAffiliateWallets } =
30
- useSettingsStore();
28
+ useAppStore();
31
29
 
32
30
  const fromTokensConfig = useMemo(
33
31
  () => config?.from?.tokens,
@@ -54,8 +52,15 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
54
52
  setInputAmount(config?.amount?.toString() || '');
55
53
  }, [config?.amount]);
56
54
 
57
- useEffect(() => {
58
- if (loadingMetaStatus === 'success') {
55
+ /*
56
+ * We update quote tokens in two scenarios.
57
+ * If default values exist in widget config or search parameters exist in URL.
58
+ * The logic for updating quote store exists in two useEffect in two locations, and they run in order.If default tokens for quote exist in widget config and also exist in URL, widget config values take precedence over URL values, and URL search parameters don’t affect the widget.
59
+ * Using useLayoutEffect causes widget config values to apply first.
60
+ * We may consider replacing this with a better solution in the future.
61
+ */
62
+ useLayoutEffect(() => {
63
+ if (fetchMetaStatus === 'success') {
59
64
  const chain = blockchains.find(
60
65
  (chain) => chain.name === config?.from?.blockchain
61
66
  );
@@ -67,8 +72,10 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
67
72
  setFromBlockchain(chain ?? null);
68
73
  }
69
74
 
70
- if (token || (!token && prevConfigFromToken.current)) {
71
- setFromToken(token ?? null);
75
+ if (token) {
76
+ setFromToken({ token, meta: { blockchains, tokens } });
77
+ } else if (!token && prevConfigFromToken.current) {
78
+ setFromToken({ token: null });
72
79
  }
73
80
 
74
81
  prevConfigFromBlockchain.current = config?.from?.blockchain;
@@ -79,13 +86,13 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
79
86
  config?.from?.token?.address,
80
87
  config?.from?.token?.blockchain,
81
88
  config?.from?.blockchain,
82
- loadingMetaStatus,
89
+ fetchMetaStatus,
83
90
  ]);
84
91
 
85
92
  useEffect(() => {
86
93
  if (fromToken && fromTokensConfig) {
87
94
  if (!fromTokensConfig.some((token) => tokensAreEqual(token, fromToken))) {
88
- setFromToken(null);
95
+ setFromToken({ token: null });
89
96
  }
90
97
  }
91
98
 
@@ -99,7 +106,7 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
99
106
  useEffect(() => {
100
107
  if (toToken && toTokensConfig) {
101
108
  if (!toTokensConfig.some((token) => tokensAreEqual(token, toToken))) {
102
- setToToken(null);
109
+ setToToken({ token: null });
103
110
  }
104
111
  }
105
112
 
@@ -110,8 +117,15 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
110
117
  }
111
118
  }, [toTokensConfig, toBlockchainsConfig]);
112
119
 
113
- useEffect(() => {
114
- if (loadingMetaStatus === 'success') {
120
+ /*
121
+ * We update quote tokens in two scenarios.
122
+ * If default values exist in widget config or search parameters exist in URL.
123
+ * The logic for updating quote store exists in two useEffect in two locations, and they run in order.If default tokens for quote exist in widget config and also exist in URL, widget config values take precedence over URL values, and URL search parameters don’t affect the widget.
124
+ * Using useLayoutEffect causes widget config values to apply first.
125
+ * We may consider replacing this with a better solution in the future.
126
+ */
127
+ useLayoutEffect(() => {
128
+ if (fetchMetaStatus === 'success') {
115
129
  const chain = blockchains.find(
116
130
  (chain) => chain.name === config?.to?.blockchain
117
131
  );
@@ -123,8 +137,10 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
123
137
  setToBlockchain(chain ?? null);
124
138
  }
125
139
 
126
- if (token || (!token && prevConfigToToken.current)) {
127
- setToToken(token ?? null);
140
+ if (token) {
141
+ setToToken({ token, meta: { blockchains, tokens } });
142
+ } else if (!token && prevConfigToToken.current) {
143
+ setToToken({ token: null });
128
144
  }
129
145
 
130
146
  prevConfigToBlockchain.current = config?.to?.blockchain;
@@ -135,7 +151,7 @@ export function useSyncStoresWithConfig(config: WidgetConfig | undefined) {
135
151
  config?.to?.token?.address,
136
152
  config?.to?.token?.blockchain,
137
153
  config?.to?.blockchain,
138
- loadingMetaStatus,
154
+ fetchMetaStatus,
139
155
  ]);
140
156
 
141
157
  useEffect(() => {
@@ -1,6 +1,4 @@
1
1
  /* eslint-disable @typescript-eslint/no-magic-numbers */
2
- import type { WidgetTheme } from '../types';
3
-
4
2
  import {
5
3
  createTheme,
6
4
  darkTheme as defaultDarkTheme,
@@ -8,7 +6,8 @@ import {
8
6
  } from '@rango-dev/ui';
9
7
  import { useEffect, useState } from 'react';
10
8
 
11
- import { useSettingsStore } from '../store/settings';
9
+ import { useAppStore } from '../store/AppStore';
10
+ import { type WidgetTheme } from '../types';
12
11
  import {
13
12
  DEFAULT_FONT_FAMILY,
14
13
  DEFAULT_PRIMARY_RADIUS,
@@ -26,8 +25,8 @@ export function useTheme(props: WidgetTheme) {
26
25
  } = props;
27
26
 
28
27
  const [OSTheme, setOSTheme] = useState('light');
29
- const theme = useSettingsStore.use.theme();
30
- const setTheme = useSettingsStore.use.setTheme();
28
+
29
+ const { setTheme, theme } = useAppStore();
31
30
 
32
31
  const { dark, light } = customizedThemeTokens(colors);
33
32
 
@@ -10,7 +10,7 @@ import {
10
10
  } from '@rango-dev/wallets-shared';
11
11
  import { useEffect, useState } from 'react';
12
12
 
13
- import { useMetaStore } from '../store/meta';
13
+ import { useAppStore } from '../store/AppStore';
14
14
  import { useWalletsStore } from '../store/wallets';
15
15
  import { configWalletsToWalletName } from '../utils/providers';
16
16
  import {
@@ -37,9 +37,7 @@ export function useWalletList(params: Params) {
37
37
  const { config, chain, onBeforeConnect, onConnect } = params;
38
38
  const { state, disconnect, getWalletInfo, connect } = useWallets();
39
39
  const { connectedWallets } = useWalletsStore();
40
- const { blockchains } = useMetaStore().meta;
41
- const multiWallets =
42
- typeof config?.multiWallets === 'undefined' ? true : config.multiWallets;
40
+ const blockchains = useAppStore().blockchains();
43
41
 
44
42
  /** It can be what has been set by widget config or as a fallback we use all the supported wallets by our library */
45
43
  const listAvailableWalletTypes =
@@ -76,7 +74,7 @@ export function useWalletList(params: Params) {
76
74
  const atLeastOneWalletIsConnected = !!wallets.find(
77
75
  (w) => w.state === WalletState.CONNECTED
78
76
  );
79
- if (!multiWallets && atLeastOneWalletIsConnected) {
77
+ if (!config?.multiWallets && atLeastOneWalletIsConnected) {
80
78
  return;
81
79
  }
82
80
  onBeforeConnect?.(type);
package/src/index.ts CHANGED
@@ -1,3 +1,5 @@
1
+ import type { WidgetProps } from './containers/Widget';
2
+ import type { ConnectedWallet } from './store/wallets';
1
3
  import type {
2
4
  BlockchainAndTokenConfig,
3
5
  WidgetColors,
@@ -5,10 +7,12 @@ import type {
5
7
  WidgetConfig,
6
8
  WidgetTheme,
7
9
  } from './types';
8
- import type { WidgetProps } from './Widget';
9
10
  import type {
11
+ EventSeverity,
12
+ PendingSwapWithQueueID,
10
13
  Route,
11
14
  RouteEvent,
15
+ RouteExecutionEvents,
12
16
  RouteFailedEvent,
13
17
  RouteStartedEvent,
14
18
  RouteSucceededEvent,
@@ -27,7 +31,16 @@ import type {
27
31
  EventHandler as HandleWalletsUpdate,
28
32
  ProviderInterface,
29
33
  } from '@rango-dev/wallets-react';
30
- import type { WalletType } from '@rango-dev/wallets-shared';
34
+ import type {
35
+ WalletInfo,
36
+ WalletState,
37
+ WalletType,
38
+ } from '@rango-dev/wallets-shared';
39
+ import type {
40
+ PendingSwap,
41
+ PendingSwapNetworkStatus,
42
+ PendingSwapStep,
43
+ } from 'rango-types';
31
44
 
32
45
  import {
33
46
  MainEvents,
@@ -37,10 +50,18 @@ import {
37
50
  StepExecutionEventStatus,
38
51
  useEvents as useWidgetEvents,
39
52
  } from '@rango-dev/queue-manager-rango-preset';
40
- import { useWallets } from '@rango-dev/wallets-react';
53
+ import {
54
+ readAccountAddress,
55
+ useWallets,
56
+ Events as WalletEvents,
57
+ } from '@rango-dev/wallets-react';
58
+ import { Networks, WalletTypes } from '@rango-dev/wallets-shared';
41
59
 
42
- import { WidgetWallets } from './Wallets';
43
- import { Widget } from './Widget';
60
+ import { WidgetWallets } from './containers/Wallets';
61
+ import { Widget } from './containers/Widget';
62
+ import { useWidget } from './containers/WidgetInfo';
63
+ import { WidgetProvider } from './containers/WidgetProvider';
64
+ import { customizedThemeTokens } from './utils/ui';
44
65
 
45
66
  export type {
46
67
  WidgetConfig,
@@ -67,15 +88,42 @@ export type {
67
88
  StepApprovalTxSucceededEvent,
68
89
  StepOutputRevealedEvent,
69
90
  HandleWalletsUpdate,
91
+ ConnectedWallet,
70
92
  };
71
93
  export {
72
94
  Widget,
95
+ /**
96
+ * @deprecated Use `WidgetProvider` instead. This component will be removed in future versions.
97
+ */
73
98
  WidgetWallets,
99
+ WidgetProvider,
100
+ useWidget,
74
101
  useWallets,
75
102
  useWidgetEvents,
103
+ customizedThemeTokens,
76
104
  MainEvents,
77
105
  RouteEventType,
78
106
  StepEventType,
79
107
  StepExecutionEventStatus,
80
108
  StepExecutionBlockedEventStatus,
81
109
  };
110
+
111
+ // Internal type exports for Rango
112
+ export type {
113
+ WalletState,
114
+ WalletInfo,
115
+ PendingSwap,
116
+ PendingSwapWithQueueID,
117
+ PendingSwapStep,
118
+ RouteExecutionEvents,
119
+ EventSeverity,
120
+ };
121
+
122
+ // Internal function and enum exports for Rango
123
+ export {
124
+ readAccountAddress,
125
+ Networks,
126
+ WalletEvents,
127
+ WalletTypes,
128
+ PendingSwapNetworkStatus,
129
+ };
@@ -3,7 +3,6 @@ import type {
3
3
  ConfirmSwap,
4
4
  ConfirmSwapFetchResult,
5
5
  } from '../hooks/useConfirmSwap/useConfirmSwap.types';
6
- import type { WidgetConfig } from '../types';
7
6
 
8
7
  import { i18n } from '@lingui/core';
9
8
  import { useManager } from '@rango-dev/queue-manager-react';
@@ -19,7 +18,7 @@ import {
19
18
  Typography,
20
19
  WalletIcon,
21
20
  } from '@rango-dev/ui';
22
- import React, { useEffect, useState } from 'react';
21
+ import React, { useEffect, useLayoutEffect, useRef, useState } from 'react';
23
22
  import { flushSync } from 'react-dom';
24
23
  import { useNavigate } from 'react-router-dom';
25
24
 
@@ -31,6 +30,7 @@ import { navigationRoutes } from '../constants/navigationRoutes';
31
30
  import { getQuoteUpdateWarningMessage } from '../constants/warnings';
32
31
  import { QuoteInfo } from '../containers/QuoteInfo';
33
32
  import { useConfirmSwap } from '../hooks/useConfirmSwap';
33
+ import { useAppStore } from '../store/AppStore';
34
34
  import { useQuoteStore } from '../store/quote';
35
35
  import { useUiStore } from '../store/ui';
36
36
  import { useWalletsStore } from '../store/wallets';
@@ -44,7 +44,6 @@ const Container = styled('div', {
44
44
  display: 'flex',
45
45
  justifyContent: 'space-between',
46
46
  alignItems: 'center',
47
- paddingBottom: '$10',
48
47
  },
49
48
  '& .icon': {
50
49
  width: '$24',
@@ -53,6 +52,9 @@ const Container = styled('div', {
53
52
  justifyContent: 'center',
54
53
  alignItems: 'center',
55
54
  },
55
+ '& .quote-update__alert': {
56
+ paddingTop: '$10',
57
+ },
56
58
  });
57
59
 
58
60
  const Buttons = styled('div', {
@@ -69,13 +71,8 @@ const Buttons = styled('div', {
69
71
  },
70
72
  });
71
73
 
72
- type PropTypes = {
73
- config?: WidgetConfig;
74
- };
75
-
76
- export function ConfirmSwapPage(props: PropTypes) {
74
+ export function ConfirmSwapPage() {
77
75
  //TODO: move component's logics to a custom hook
78
- const { config } = props;
79
76
  const {
80
77
  quote,
81
78
  setInputAmount,
@@ -92,7 +89,8 @@ export function ConfirmSwapPage(props: PropTypes) {
92
89
  const showWalletsOnInit = !quoteWalletsConfirmed;
93
90
  const [showWallets, setShowWallets] = useState(false);
94
91
  const setSelectedSwap = useUiStore.use.setSelectedSwap();
95
-
92
+ const disabledLiquiditySources = useAppStore().disabledLiquiditySources;
93
+ const prevDisabledLiquiditySources = useRef(disabledLiquiditySources);
96
94
  const { manager } = useManager();
97
95
  const {
98
96
  fetch: confirmSwap,
@@ -126,12 +124,11 @@ export function ConfirmSwapPage(props: PropTypes) {
126
124
  { id: confirmSwapResult.swap.requestId }
127
125
  );
128
126
  setSelectedSwap(confirmSwapResult.swap.requestId);
129
- navigate(
130
- '/' + navigationRoutes.swaps + `/${confirmSwapResult.swap.requestId}`,
131
- {
132
- replace: true,
133
- }
134
- );
127
+
128
+ const swap_url = `../${navigationRoutes.swaps}/${confirmSwapResult.swap.requestId}`;
129
+ navigate(swap_url, {
130
+ replace: true,
131
+ });
135
132
  setTimeout(() => {
136
133
  setInputAmount('');
137
134
  }, 0);
@@ -159,13 +156,23 @@ export function ConfirmSwapPage(props: PropTypes) {
159
156
  swap: null,
160
157
  warnings: null,
161
158
  });
162
- confirmSwap({ selectedWallets })
159
+ confirmSwap({ selectedWallets, customDestination })
163
160
  .then((res) => {
164
161
  setConfirmSwapResult(res);
165
162
  })
166
163
  .catch((error) => console.error(error));
167
164
  };
168
165
 
166
+ useEffect(() => {
167
+ const disabledLiquiditySourceReset =
168
+ !!prevDisabledLiquiditySources.current.length &&
169
+ !disabledLiquiditySources.length;
170
+ if (disabledLiquiditySourceReset) {
171
+ void onRefresh();
172
+ }
173
+ prevDisabledLiquiditySources.current = disabledLiquiditySources;
174
+ }, [disabledLiquiditySources.length]);
175
+
169
176
  useEffect(() => {
170
177
  if (showWalletsOnInit) {
171
178
  cancelFetch();
@@ -245,12 +252,20 @@ export function ConfirmSwapPage(props: PropTypes) {
245
252
  connectedWallets.length,
246
253
  ]);
247
254
 
255
+ useLayoutEffect(() => {
256
+ if (!quote) {
257
+ navigate(`../`);
258
+ }
259
+ }, []);
260
+
248
261
  return (
249
262
  <Layout
250
263
  header={{
251
264
  title: i18n.t('Confirm Swap'),
252
- onBack: () => navigate(-1),
253
- hasConnectWallet: true,
265
+ onWallet: () => {
266
+ const wallets_url = `../${navigationRoutes.wallets}`;
267
+ navigate(wallets_url);
268
+ },
254
269
  suffix: (
255
270
  <Tooltip
256
271
  container={getContainer()}
@@ -259,7 +274,7 @@ export function ConfirmSwapPage(props: PropTypes) {
259
274
  <HeaderButton
260
275
  size="small"
261
276
  variant="ghost"
262
- onClick={() => navigate('/' + navigationRoutes.settings)}>
277
+ onClick={() => navigate('../' + navigationRoutes.settings)}>
263
278
  <SettingsIcon size={18} color="black" />
264
279
  </HeaderButton>
265
280
  </Tooltip>
@@ -296,7 +311,6 @@ export function ConfirmSwapPage(props: PropTypes) {
296
311
  onCancel={cancelFetch}
297
312
  loading={fetchingConfirmationQuote}
298
313
  onCheckBalance={onConfirmSwap}
299
- config={config}
300
314
  />
301
315
  )}
302
316
 
@@ -322,7 +336,7 @@ export function ConfirmSwapPage(props: PropTypes) {
322
336
  </>
323
337
  )}
324
338
  {confirmSwapResult.warnings?.quoteUpdate && (
325
- <>
339
+ <div className="quote-update__alert">
326
340
  <Alert
327
341
  variant="alarm"
328
342
  type="warning"
@@ -333,13 +347,13 @@ export function ConfirmSwapPage(props: PropTypes) {
333
347
  )
334
348
  }
335
349
  />
336
- <Divider size={12} />
337
- </>
350
+ </div>
338
351
  )}
339
352
  <QuoteInfo
340
353
  quote={quote}
341
354
  type="swap-preview"
342
355
  expanded={true}
356
+ alertPosition="top"
343
357
  error={confirmSwapResult.error}
344
358
  loading={fetchingConfirmationQuote}
345
359
  warning={confirmSwapResult.warnings?.quote ?? null}
@@ -351,6 +365,7 @@ export function ConfirmSwapPage(props: PropTypes) {
351
365
  setShowQuoteWarningModal(false);
352
366
  await addNewSwap();
353
367
  }}
368
+ onChangeSettings={() => navigate('../' + navigationRoutes.settings)}
354
369
  />
355
370
  </Container>
356
371
  </Layout>