@rango-dev/widget-embedded 0.17.1-next.9 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (355) hide show
  1. package/CHANGELOG.md +116 -0
  2. package/dist/QueueManager.d.ts +3 -1
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts.map +1 -1
  6. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  7. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -1
  8. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  9. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +690 -61
  10. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  12. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  13. package/dist/components/Layout/Layout.d.ts.map +1 -1
  14. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  15. package/dist/components/Layout/Layout.types.d.ts +2 -2
  16. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  17. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -1
  18. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +1727 -0
  19. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  20. package/dist/components/NoResult/NoResult.d.ts.map +1 -1
  21. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  22. package/dist/components/Quote/Quote.d.ts.map +1 -1
  23. package/dist/components/Quote/Quote.styles.d.ts +793 -5
  24. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  25. package/dist/components/Quote/Quote.types.d.ts +0 -1
  26. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  27. package/dist/components/Quote/QuoteSummary.styles.d.ts +157 -0
  28. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -1
  29. package/dist/components/Quote/index.d.ts +0 -1
  30. package/dist/components/Quote/index.d.ts.map +1 -1
  31. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts.map +1 -0
  32. package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.styles.d.ts +314 -0
  33. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -0
  34. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts.map +1 -0
  35. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts +4 -0
  36. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +1 -0
  37. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +1571 -0
  38. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -0
  39. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts +6 -0
  40. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts.map +1 -0
  41. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts +4 -0
  42. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts.map +1 -0
  43. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +786 -0
  44. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -0
  45. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts +4 -0
  46. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts.map +1 -0
  47. package/dist/components/QuoteSkeleton/index.d.ts +4 -0
  48. package/dist/components/QuoteSkeleton/index.d.ts.map +1 -0
  49. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
  50. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -1
  51. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  52. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
  53. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
  54. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  55. package/dist/components/Slippage/Slippage.styles.d.ts +158 -0
  56. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  57. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  58. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  59. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  60. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  61. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +628 -0
  62. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  63. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  64. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  65. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  66. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  67. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  68. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  69. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  70. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +157 -0
  71. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  72. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  73. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  74. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  75. package/dist/components/TokenList/TokenList.styles.d.ts +1100 -1
  76. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  77. package/dist/components/TokenList/TokenList.types.d.ts +4 -9
  78. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  79. package/dist/components/TokenList/index.d.ts +0 -1
  80. package/dist/components/TokenList/index.d.ts.map +1 -1
  81. package/dist/components/UpdateUrl.d.ts.map +1 -1
  82. package/dist/constants/errors.d.ts.map +1 -1
  83. package/dist/constants/index.d.ts +1 -0
  84. package/dist/constants/index.d.ts.map +1 -1
  85. package/dist/constants/navigationRoutes.d.ts +1 -2
  86. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  87. package/dist/containers/App/App.d.ts +3 -0
  88. package/dist/containers/App/App.d.ts.map +1 -0
  89. package/dist/containers/App/App.styles.d.ts +158 -0
  90. package/dist/containers/App/App.styles.d.ts.map +1 -0
  91. package/dist/containers/App/index.d.ts +2 -0
  92. package/dist/containers/App/index.d.ts.map +1 -0
  93. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  94. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +316 -0
  95. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  96. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +3 -0
  97. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  98. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  99. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  100. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  101. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  102. package/dist/containers/Wallets/index.d.ts +2 -0
  103. package/dist/containers/Wallets/index.d.ts.map +1 -0
  104. package/dist/containers/Widget/Widget.d.ts +5 -0
  105. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  106. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  107. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  108. package/dist/containers/Widget/index.d.ts +3 -0
  109. package/dist/containers/Widget/index.d.ts.map +1 -0
  110. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  111. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  112. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
  113. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
  114. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
  115. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  116. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  117. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  118. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  119. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  120. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  121. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  122. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  123. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  124. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -1
  125. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +6 -3
  126. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -1
  127. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts +1 -1
  128. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -1
  129. package/dist/hooks/useLanguage.d.ts +1 -1
  130. package/dist/hooks/useLanguage.d.ts.map +1 -1
  131. package/dist/hooks/useNavigateBack.d.ts +1 -3
  132. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  133. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  134. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  135. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  136. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +3 -5
  137. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  138. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  139. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  140. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  141. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  142. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  143. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  144. package/dist/hooks/useTheme.d.ts +1 -1
  145. package/dist/hooks/useTheme.d.ts.map +1 -1
  146. package/dist/index.d.ts +20 -8
  147. package/dist/index.d.ts.map +1 -1
  148. package/dist/index.js +1 -1
  149. package/dist/index.js.map +4 -4
  150. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  151. package/dist/pages/HistoryPage.d.ts.map +1 -1
  152. package/dist/pages/Home.d.ts.map +1 -1
  153. package/dist/pages/LanguagePage.d.ts.map +1 -1
  154. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  155. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  156. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  157. package/dist/pages/SettingsPage.d.ts.map +1 -1
  158. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  159. package/dist/pages/ThemePage.d.ts.map +1 -1
  160. package/dist/pages/WalletsPage.d.ts.map +1 -1
  161. package/dist/store/AppStore.d.ts +37 -1
  162. package/dist/store/AppStore.d.ts.map +1 -1
  163. package/dist/store/app.d.ts +39 -2
  164. package/dist/store/app.d.ts.map +1 -1
  165. package/dist/store/notification.d.ts +4 -3
  166. package/dist/store/notification.d.ts.map +1 -1
  167. package/dist/store/quote.d.ts +9 -9
  168. package/dist/store/quote.d.ts.map +1 -1
  169. package/dist/store/slices/config.d.ts.map +1 -1
  170. package/dist/store/slices/data.d.ts +2 -2
  171. package/dist/store/slices/data.d.ts.map +1 -1
  172. package/dist/store/slices/settings.d.ts +39 -0
  173. package/dist/store/slices/settings.d.ts.map +1 -0
  174. package/dist/store/ui.d.ts +2 -1
  175. package/dist/store/ui.d.ts.map +1 -1
  176. package/dist/store/wallets.d.ts +9 -5
  177. package/dist/store/wallets.d.ts.map +1 -1
  178. package/dist/types/config.d.ts +36 -3
  179. package/dist/types/config.d.ts.map +1 -1
  180. package/dist/types/swap.d.ts +4 -14
  181. package/dist/types/swap.d.ts.map +1 -1
  182. package/dist/types/wallets.d.ts +15 -1
  183. package/dist/types/wallets.d.ts.map +1 -1
  184. package/dist/utils/colors.d.ts.map +1 -1
  185. package/dist/utils/configs.d.ts +1 -0
  186. package/dist/utils/configs.d.ts.map +1 -1
  187. package/dist/utils/meta.d.ts +2 -1
  188. package/dist/utils/meta.d.ts.map +1 -1
  189. package/dist/utils/providers.d.ts +2 -2
  190. package/dist/utils/providers.d.ts.map +1 -1
  191. package/dist/utils/queue.d.ts +2 -2
  192. package/dist/utils/queue.d.ts.map +1 -1
  193. package/dist/utils/quote.d.ts +1 -1
  194. package/dist/utils/quote.d.ts.map +1 -1
  195. package/dist/utils/settings.d.ts +4 -1
  196. package/dist/utils/settings.d.ts.map +1 -1
  197. package/dist/utils/swap.d.ts +13 -5
  198. package/dist/utils/swap.d.ts.map +1 -1
  199. package/dist/utils/time.d.ts +1 -1
  200. package/dist/utils/time.d.ts.map +1 -1
  201. package/dist/utils/wallets.d.ts +7 -8
  202. package/dist/utils/wallets.d.ts.map +1 -1
  203. package/package.json +12 -10
  204. package/src/QueueManager.tsx +4 -3
  205. package/src/components/AppRouter.tsx +2 -27
  206. package/src/components/AppRoutes.tsx +54 -33
  207. package/src/components/BlockchainList/BlockchainList.styles.ts +2 -2
  208. package/src/components/BlockchainsSection/BlockchainsSection.styles.ts +1 -1
  209. package/src/components/BlockchainsSection/BlockchainsSection.tsx +19 -10
  210. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +29 -10
  211. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +15 -7
  212. package/src/components/ConfirmWalletsModal/WalletList.tsx +3 -3
  213. package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
  214. package/src/components/Layout/Layout.styles.ts +2 -0
  215. package/src/components/Layout/Layout.tsx +20 -7
  216. package/src/components/Layout/Layout.types.ts +2 -2
  217. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +65 -61
  218. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +28 -34
  219. package/src/components/NoResult/NoResult.helpers.ts +12 -12
  220. package/src/components/NoResult/NoResult.tsx +2 -5
  221. package/src/components/NotificationContent/NotificationContent.tsx +2 -1
  222. package/src/components/Quote/Quote.styles.ts +49 -12
  223. package/src/components/Quote/Quote.tsx +107 -38
  224. package/src/components/Quote/Quote.types.ts +0 -1
  225. package/src/components/Quote/QuoteSummary.styles.ts +9 -8
  226. package/src/components/Quote/QuoteSummary.tsx +2 -2
  227. package/src/components/Quote/index.ts +0 -1
  228. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +42 -0
  229. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +30 -0
  230. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +57 -0
  231. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +76 -0
  232. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.types.ts +6 -0
  233. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +33 -0
  234. package/src/components/QuoteSkeleton/StepSkeleton.tsx +44 -0
  235. package/src/components/QuoteSkeleton/StepSkeleton.types.ts +1 -0
  236. package/src/components/QuoteSkeleton/index.ts +3 -0
  237. package/src/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx +1 -1
  238. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +11 -4
  239. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +8 -1
  240. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +13 -13
  241. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
  242. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -3
  243. package/src/components/Slippage/Slippage.styles.ts +15 -5
  244. package/src/components/Slippage/Slippage.tsx +11 -10
  245. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +5 -8
  246. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  247. package/src/components/SwapDetails/SwapDetails.styles.ts +36 -33
  248. package/src/components/SwapDetails/SwapDetails.tsx +28 -39
  249. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  250. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  251. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  252. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +14 -8
  253. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  254. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  255. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  256. package/src/components/SwapsGroup/SwapsGroup.styles.ts +10 -1
  257. package/src/components/SwapsGroup/SwapsGroup.tsx +3 -5
  258. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  259. package/src/components/TokenList/TokenList.styles.ts +74 -38
  260. package/src/components/TokenList/TokenList.tsx +30 -20
  261. package/src/components/TokenList/TokenList.types.ts +4 -10
  262. package/src/components/TokenList/index.ts +0 -1
  263. package/src/components/UpdateUrl.tsx +0 -5
  264. package/src/constants/errors.ts +9 -5
  265. package/src/constants/index.ts +1 -0
  266. package/src/constants/navigationRoutes.ts +7 -8
  267. package/src/containers/App/App.styles.ts +18 -0
  268. package/src/containers/App/App.tsx +52 -0
  269. package/src/containers/App/index.ts +1 -0
  270. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +17 -1
  271. package/src/containers/QuoteInfo/QuoteInfo.tsx +46 -44
  272. package/src/containers/QuoteInfo/QuoteInfo.types.ts +3 -0
  273. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +25 -31
  274. package/src/containers/Wallets/Wallets.types.ts +12 -0
  275. package/src/containers/Wallets/index.ts +1 -0
  276. package/src/containers/Widget/Widget.tsx +19 -0
  277. package/src/containers/Widget/Widget.types.ts +5 -0
  278. package/src/containers/Widget/index.ts +2 -0
  279. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
  280. package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
  281. package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
  282. package/src/containers/WidgetInfo/index.ts +1 -0
  283. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  284. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  285. package/src/containers/WidgetProvider/index.ts +1 -0
  286. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +15 -11
  287. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +21 -20
  288. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +1 -1
  289. package/src/hooks/useLanguage.ts +4 -5
  290. package/src/hooks/useNavigateBack.ts +3 -52
  291. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  292. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  293. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  294. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  295. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
  296. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  297. package/src/hooks/useSwapInput.ts +86 -28
  298. package/src/hooks/useSyncStoresWithConfig.ts +18 -5
  299. package/src/hooks/useTheme.ts +4 -5
  300. package/src/index.ts +53 -5
  301. package/src/pages/ConfirmSwapPage.tsx +61 -33
  302. package/src/pages/HistoryPage.tsx +2 -7
  303. package/src/pages/Home.tsx +55 -81
  304. package/src/pages/LanguagePage.tsx +0 -5
  305. package/src/pages/LiquiditySourcePage.tsx +3 -7
  306. package/src/pages/SelectBlockchainPage.tsx +26 -18
  307. package/src/pages/SelectSwapItemsPage.tsx +13 -26
  308. package/src/pages/SettingsPage.tsx +26 -17
  309. package/src/pages/SwapDetailsPage.tsx +3 -4
  310. package/src/pages/ThemePage.tsx +2 -7
  311. package/src/pages/WalletsPage.tsx +5 -8
  312. package/src/services/httpService.ts +1 -1
  313. package/src/store/AppStore.tsx +7 -1
  314. package/src/store/app.ts +31 -5
  315. package/src/store/quote.ts +3 -4
  316. package/src/store/slices/config.ts +1 -0
  317. package/src/store/slices/data.ts +10 -6
  318. package/src/store/slices/settings.ts +168 -0
  319. package/src/store/wallets.ts +57 -29
  320. package/src/types/config.ts +48 -3
  321. package/src/types/swap.ts +4 -13
  322. package/src/types/wallets.ts +18 -1
  323. package/src/utils/colors.ts +2 -1
  324. package/src/utils/configs.ts +2 -1
  325. package/src/utils/date.ts +1 -1
  326. package/src/utils/meta.ts +8 -1
  327. package/src/utils/providers.ts +8 -5
  328. package/src/utils/queue.ts +2 -2
  329. package/src/utils/quote.ts +7 -7
  330. package/src/utils/settings.ts +11 -5
  331. package/src/utils/swap.ts +46 -40
  332. package/src/utils/time.ts +1 -1
  333. package/src/utils/wallets.ts +127 -144
  334. package/dist/Wallets.d.ts +0 -18
  335. package/dist/Wallets.d.ts.map +0 -1
  336. package/dist/Widget.d.ts +0 -9
  337. package/dist/Widget.d.ts.map +0 -1
  338. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +0 -4
  339. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +0 -1
  340. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +0 -4
  341. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +0 -1
  342. package/dist/components/Quote/QuoteSkeleton.d.ts.map +0 -1
  343. package/dist/components/Quote/QuoteSkeleton.styles.d.ts.map +0 -1
  344. package/dist/components/Quote/QuoteSkeleton.types.d.ts.map +0 -1
  345. package/dist/store/settings.d.ts +0 -82
  346. package/dist/store/settings.d.ts.map +0 -1
  347. package/src/Widget.tsx +0 -106
  348. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +0 -41
  349. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +0 -3
  350. package/src/components/Quote/QuoteSkeleton.styles.ts +0 -110
  351. package/src/components/Quote/QuoteSkeleton.tsx +0 -108
  352. package/src/store/settings.ts +0 -161
  353. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.d.ts +0 -0
  354. /package/dist/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.d.ts +0 -0
  355. /package/src/components/{Quote → QuoteSkeleton}/QuoteSkeleton.types.ts +0 -0
@@ -1,11 +1,14 @@
1
1
  import { i18n } from '@lingui/core';
2
- import { Divider, SelectableCategoryList } from '@rango-dev/ui';
2
+ import {
3
+ Divider,
4
+ getCountCategories,
5
+ SelectableCategoryList
6
+ } from '@rango-dev/ui';
3
7
  import React, { useState } from 'react';
4
8
 
5
9
  import { BlockchainList } from '../components/BlockchainList';
6
10
  import { Layout } from '../components/Layout';
7
11
  import { SearchInput } from '../components/SearchInput';
8
- import { navigationRoutes } from '../constants/navigationRoutes';
9
12
  import { useNavigateBack } from '../hooks/useNavigateBack';
10
13
  import { useAppStore } from '../store/AppStore';
11
14
  import { useQuoteStore } from '../store/quote';
@@ -16,7 +19,7 @@ interface PropTypes {
16
19
 
17
20
  export function SelectBlockchainPage(props: PropTypes) {
18
21
  const { type } = props;
19
- const { navigateBackFrom } = useNavigateBack();
22
+ const navigateBack = useNavigateBack();
20
23
  const [searchedFor, setSearchedFor] = useState<string>('');
21
24
  const [blockchainCategory, setBlockchainCategory] = useState<string>('ALL');
22
25
  const setToBlockchain = useQuoteStore.use.setToBlockchain();
@@ -24,26 +27,32 @@ export function SelectBlockchainPage(props: PropTypes) {
24
27
  const fetchStatus = useAppStore().fetchStatus;
25
28
 
26
29
  const blockchains = useAppStore().blockchains({
27
- type: type,
30
+ type: type
28
31
  });
29
- const routeKey = type === 'source' ? 'fromBlockchain' : 'toBlockchain';
32
+
33
+ const countActiveCategories = getCountCategories(blockchains);
34
+
35
+ const showCategory = countActiveCategories !== 1;
30
36
 
31
37
  return (
32
38
  <Layout
33
39
  header={{
34
- onBack: () => {
35
- navigateBackFrom(navigationRoutes[routeKey]);
36
- },
37
- title: i18n.t(`Select Blockchain`),
40
+ title: i18n.t(`Select Blockchain`)
38
41
  }}>
39
42
  <Divider size={12} />
40
- <SelectableCategoryList
41
- setCategory={setBlockchainCategory}
42
- category={blockchainCategory}
43
- blockchains={blockchains}
44
- isLoading={fetchStatus === 'loading'}
45
- />
46
- <Divider size={24} />
43
+
44
+ {showCategory && (
45
+ <>
46
+ <SelectableCategoryList
47
+ setCategory={setBlockchainCategory}
48
+ category={blockchainCategory}
49
+ blockchains={blockchains}
50
+ isLoading={fetchStatus === 'loading'}
51
+ />
52
+ <Divider size={24} />
53
+ </>
54
+ )}
55
+
47
56
  <SearchInput
48
57
  value={searchedFor}
49
58
  autoFocus
@@ -66,8 +75,7 @@ export function SelectBlockchainPage(props: PropTypes) {
66
75
  } else {
67
76
  setToBlockchain(blockchain);
68
77
  }
69
-
70
- navigateBackFrom(navigationRoutes[routeKey]);
78
+ navigateBack();
71
79
  }}
72
80
  />
73
81
  </Layout>
@@ -14,7 +14,7 @@ import { useNavigateBack } from '../hooks/useNavigateBack';
14
14
  import { useAppStore } from '../store/AppStore';
15
15
  import { useQuoteStore } from '../store/quote';
16
16
  import { useWalletsStore } from '../store/wallets';
17
- import { getTokensBalanceFromWalletAndSort } from '../utils/wallets';
17
+ import { sortTokens } from '../utils/wallets';
18
18
 
19
19
  interface PropTypes {
20
20
  type: 'source' | 'destination';
@@ -23,7 +23,7 @@ interface PropTypes {
23
23
  export function SelectSwapItemsPage(props: PropTypes) {
24
24
  const { type } = props;
25
25
  const navigate = useNavigate();
26
- const { navigateBackFrom } = useNavigateBack();
26
+ const navigateBack = useNavigateBack();
27
27
  const {
28
28
  fromBlockchain,
29
29
  toBlockchain,
@@ -32,27 +32,27 @@ export function SelectSwapItemsPage(props: PropTypes) {
32
32
  setFromBlockchain,
33
33
  setToBlockchain,
34
34
  } = useQuoteStore();
35
- const { connectedWallets } = useWalletsStore();
35
+ const getBalanceFor = useWalletsStore.use.getBalanceFor();
36
36
  const [searchedFor, setSearchedFor] = useState<string>('');
37
+ const { isTokenPinned } = useAppStore();
37
38
 
38
39
  const selectedBlockchain = type === 'source' ? fromBlockchain : toBlockchain;
39
40
  const selectedBlockchainName = selectedBlockchain?.name ?? '';
40
41
 
41
42
  // Tokens & Blockchains list
42
43
  const blockchains = useAppStore().blockchains({
43
- type: type,
44
+ type,
44
45
  });
45
46
  const tokens = useAppStore().tokens({
46
47
  type,
47
48
  blockchain: selectedBlockchainName,
48
49
  searchFor: searchedFor,
49
50
  });
50
- const tokensList = getTokensBalanceFromWalletAndSort(
51
- tokens,
52
- connectedWallets
53
- );
54
51
 
55
- // Actions
52
+ const checkIsTokenPinned = (token: Token) => isTokenPinned(token, type);
53
+
54
+ const tokensList = sortTokens(tokens, getBalanceFor, checkIsTokenPinned);
55
+
56
56
  const updateBlockchain = (blockchain: BlockchainMeta) => {
57
57
  if (type === 'source') {
58
58
  setFromBlockchain(blockchain);
@@ -72,27 +72,13 @@ export function SelectSwapItemsPage(props: PropTypes) {
72
72
  return (
73
73
  <Layout
74
74
  header={{
75
- onBack: () =>
76
- navigateBackFrom(
77
- type === 'source'
78
- ? navigationRoutes.fromSwap
79
- : navigationRoutes.toSwap
80
- ),
81
- title: i18n.t('Swap {type}', {
82
- type: type === 'source' ? 'from' : 'to',
83
- }),
75
+ title: i18n.t('Swap {type}', { type }),
84
76
  }}>
85
77
  <BlockchainsSection
86
78
  blockchains={blockchains}
87
79
  type={type == 'source' ? 'from' : 'to'}
88
80
  blockchain={type === 'source' ? fromBlockchain : toBlockchain}
89
- onMoreClick={() =>
90
- navigate(
91
- type === 'source'
92
- ? navigationRoutes.fromBlockchain
93
- : navigationRoutes.toBlockchain
94
- )
95
- }
81
+ onMoreClick={() => navigate(navigationRoutes.blockchains)}
96
82
  onChange={(blockchain) => {
97
83
  updateBlockchain(blockchain);
98
84
  }}
@@ -113,6 +99,7 @@ export function SelectSwapItemsPage(props: PropTypes) {
113
99
  list={tokensList}
114
100
  selectedBlockchain={selectedBlockchainName}
115
101
  searchedFor={searchedFor}
102
+ type={type}
116
103
  onChange={(token) => {
117
104
  updateToken(token);
118
105
 
@@ -123,7 +110,7 @@ export function SelectSwapItemsPage(props: PropTypes) {
123
110
  updateBlockchain(tokenBlockchain);
124
111
  }
125
112
 
126
- navigateBackFrom(navigationRoutes.fromSwap);
113
+ navigateBack();
127
114
  }}
128
115
  />
129
116
  </Layout>
@@ -18,23 +18,32 @@ import { SettingsContainer } from '../components/SettingsContainer';
18
18
  import { Slippage } from '../components/Slippage';
19
19
  import { SlippageTooltipContainer as TooltipContainer } from '../components/Slippage/Slippage.styles';
20
20
  import { navigationRoutes } from '../constants/navigationRoutes';
21
- import { useNavigateBack } from '../hooks/useNavigateBack';
22
21
  import { useAppStore } from '../store/AppStore';
23
- import { useSettingsStore } from '../store/settings';
24
22
  import { getContainer } from '../utils/common';
25
- import { getUniqueSwappersGroups } from '../utils/settings';
23
+ import { getUniqueSwappersGroups, isFeatureHidden } from '../utils/settings';
26
24
 
27
25
  export function SettingsPage() {
28
26
  const navigate = useNavigate();
29
27
  const { theme } = useAppStore().config;
30
28
  const fetchStatus = useAppStore().fetchStatus;
31
29
  const swappers = useAppStore().swappers();
32
- const { navigateBackFrom } = useNavigateBack();
30
+ const disabledLiquiditySources = useAppStore().disabledLiquiditySources;
31
+ const {
32
+ config: { features },
33
+ } = useAppStore();
34
+ const isThemeHidden = isFeatureHidden('theme', features);
33
35
 
34
- const infiniteApprove = useSettingsStore.use.infiniteApprove();
35
- const toggleInfiniteApprove = useSettingsStore.use.toggleInfiniteApprove();
36
+ const isLiquidityHidden = isFeatureHidden('liquiditySource', features);
36
37
 
37
- const supportedUniqueSwappersGroups = getUniqueSwappersGroups(swappers);
38
+ const isLanguageHidden = isFeatureHidden('language', features);
39
+
40
+ const infiniteApprove = useAppStore().infiniteApprove;
41
+ const toggleInfiniteApprove = useAppStore().toggleInfiniteApprove;
42
+
43
+ const supportedUniqueSwappersGroups = getUniqueSwappersGroups(
44
+ swappers,
45
+ disabledLiquiditySources
46
+ );
38
47
 
39
48
  const bridgeSources = supportedUniqueSwappersGroups.filter(
40
49
  (uniqueItem) =>
@@ -135,17 +144,18 @@ export function SettingsPage() {
135
144
  title: (
136
145
  <>
137
146
  <Typography variant="title" size="xmedium">
138
- {i18n.t('Infinite Approval')}
147
+ {i18n.t('Infinite approval')}
139
148
  </Typography>
140
149
  <Divider direction="horizontal" size={4} />
141
150
  <Tooltip
142
151
  side="top"
152
+ sideOffset={4}
143
153
  container={getContainer()}
144
154
  content={
145
155
  <TooltipContainer>
146
156
  <Typography variant="label" size="medium" color="neutral700">
147
157
  {i18n.t(
148
- "Enabling the 'Infinite Approval' mode grants unrestricted access to smart contracts of DEXes/Bridges, allowing them to utilize the approved token amount without limitations."
158
+ "Enabling the 'Infinite approval' mode grants unrestricted access to smart contracts of DEXes/Bridges, allowing them to utilize the approved token amount without limitations."
149
159
  )}
150
160
  </Typography>
151
161
  </TooltipContainer>
@@ -158,12 +168,12 @@ export function SettingsPage() {
158
168
  onClick: toggleInfiniteApprove,
159
169
  };
160
170
 
161
- const settingItems = [
162
- bridgeItem,
163
- exchangeItem,
164
- // languageItem
165
- ];
166
- if (!theme?.singleTheme) {
171
+ const settingItems = isLiquidityHidden ? [] : [bridgeItem, exchangeItem];
172
+
173
+ if (!isLanguageHidden) {
174
+ // settingItems.push(languageItem);
175
+ }
176
+ if (!theme?.singleTheme && !isThemeHidden) {
167
177
  settingItems.push(themeItem);
168
178
  }
169
179
  settingItems.push(infiniteApprovalItem);
@@ -171,8 +181,7 @@ export function SettingsPage() {
171
181
  return (
172
182
  <Layout
173
183
  header={{
174
- onBack: () => navigateBackFrom(navigationRoutes.settings),
175
- title: i18n.t('Setting'),
184
+ title: i18n.t('Settings'),
176
185
  }}>
177
186
  <SettingsContainer>
178
187
  <Slippage />
@@ -4,7 +4,6 @@ import React from 'react';
4
4
 
5
5
  import { SwapDetails } from '../components/SwapDetails';
6
6
  import { SwapDetailsPlaceholder } from '../components/SwapDetails/SwapDetails.Placeholder';
7
- import { navigationRoutes } from '../constants/navigationRoutes';
8
7
  import { useNavigateBack } from '../hooks/useNavigateBack';
9
8
  import { useAppStore } from '../store/AppStore';
10
9
  import { useUiStore } from '../store/ui';
@@ -15,7 +14,7 @@ export function SwapDetailsPage() {
15
14
  const loading = !state.loadedFromPersistor;
16
15
  const pendingSwaps = getPendingSwaps(manager);
17
16
  const requestId = useUiStore.use.selectedSwapRequestId();
18
- const { navigateBackFrom } = useNavigateBack();
17
+ const navigateBack = useNavigateBack();
19
18
  const { fetchStatus: fetchMetaStatus } = useAppStore();
20
19
 
21
20
  const showSkeleton = loading || fetchMetaStatus === 'loading';
@@ -36,8 +35,8 @@ export function SwapDetailsPage() {
36
35
  const onDelete = async () => {
37
36
  if (selectedSwap?.id) {
38
37
  try {
39
- await manager?.deleteQueue(selectedSwap.id);
40
- navigateBackFrom(navigationRoutes.swapDetails);
38
+ manager?.deleteQueue(selectedSwap.id);
39
+ navigateBack();
41
40
  } catch (e) {
42
41
  console.log(e);
43
42
  }
@@ -13,9 +13,7 @@ import React from 'react';
13
13
 
14
14
  import { Layout } from '../components/Layout';
15
15
  import { SettingsContainer } from '../components/SettingsContainer';
16
- import { navigationRoutes } from '../constants/navigationRoutes';
17
- import { useNavigateBack } from '../hooks/useNavigateBack';
18
- import { useSettingsStore } from '../store/settings';
16
+ import { useAppStore } from '../store/AppStore';
19
17
 
20
18
  type Theme = 'dark' | 'light' | 'auto';
21
19
 
@@ -26,9 +24,7 @@ enum Mode {
26
24
  }
27
25
 
28
26
  export function ThemePage() {
29
- const { navigateBackFrom } = useNavigateBack();
30
- const theme = useSettingsStore.use.theme();
31
- const setTheme = useSettingsStore.use.setTheme();
27
+ const { setTheme, theme } = useAppStore();
32
28
 
33
29
  const themesList = [
34
30
  {
@@ -72,7 +68,6 @@ export function ThemePage() {
72
68
  return (
73
69
  <Layout
74
70
  header={{
75
- onBack: () => navigateBackFrom(navigationRoutes.settings),
76
71
  title: i18n.t('Theme'),
77
72
  }}>
78
73
  <SettingsContainer>
@@ -6,18 +6,17 @@ import React, { Fragment, useState } from 'react';
6
6
 
7
7
  import { Layout } from '../components/Layout';
8
8
  import { WalletModal } from '../components/WalletModal';
9
- import { navigationRoutes } from '../constants/navigationRoutes';
10
- import { useNavigateBack } from '../hooks/useNavigateBack';
11
9
  import { useWalletList } from '../hooks/useWalletList';
12
10
  import { useAppStore } from '../store/AppStore';
13
11
  import { getContainer } from '../utils/common';
14
12
 
15
13
  const ListContainer = styled('div', {
16
- display: 'grid',
14
+ display: 'flex',
15
+ justifyContent: 'space-evenly',
16
+ alignItems: 'center',
17
17
  gap: '$10',
18
- gridTemplateColumns: ' repeat(3, minmax(0, 1fr))',
19
- alignContent: 'baseline',
20
- paddingTop: '$15',
18
+ flexWrap: 'wrap',
19
+ paddingTop: '$5',
21
20
  height: '100%',
22
21
  });
23
22
 
@@ -30,7 +29,6 @@ export const TIME_TO_IGNORE_MODAL = 300;
30
29
 
31
30
  export function WalletsPage() {
32
31
  const { config, fetchStatus: fetchMetaStatus } = useAppStore();
33
- const { navigateBackFrom } = useNavigateBack();
34
32
  const [openModal, setOpenModal] = useState(false);
35
33
  const [selectedWalletType, setSelectedWalletType] = useState<WalletType>('');
36
34
  let modalTimerId: ReturnType<typeof setTimeout> | null = null;
@@ -64,7 +62,6 @@ export function WalletsPage() {
64
62
  <Layout
65
63
  header={{
66
64
  title: i18n.t('Connect Wallets'),
67
- onBack: () => navigateBackFrom(navigationRoutes.wallets),
68
65
  }}>
69
66
  <Container>
70
67
  <Typography variant="title" size="xmedium" align="center">
@@ -8,6 +8,6 @@ export const httpService = () => {
8
8
  if (rango) {
9
9
  return rango;
10
10
  }
11
- rango = new RangoClient(getConfig('API_KEY'));
11
+ rango = new RangoClient(getConfig('API_KEY'), getConfig('BASE_URL'));
12
12
  return rango;
13
13
  };
@@ -1,7 +1,7 @@
1
1
  import type { WidgetConfig } from '../types';
2
2
  import type { PropsWithChildren } from 'react';
3
3
 
4
- import React, { createContext, useContext, useRef } from 'react';
4
+ import React, { createContext, useContext, useEffect, useRef } from 'react';
5
5
 
6
6
  import { createAppStore } from './app';
7
7
 
@@ -13,6 +13,12 @@ export const AppStoreContext = createContext<AppStore | null>(null);
13
13
  export function useAppStore() {
14
14
  const store = useContext(AppStoreContext);
15
15
 
16
+ useEffect(() => {
17
+ if (store && !store.persist.hasHydrated()) {
18
+ void store.persist.rehydrate();
19
+ }
20
+ }, []);
21
+
16
22
  if (!store) {
17
23
  throw new Error('Missing AppStoreContext.Provider in the tree');
18
24
  }
package/src/store/app.ts CHANGED
@@ -1,12 +1,15 @@
1
1
  import type { ConfigSlice } from './slices/config';
2
2
  import type { DataSlice } from './slices/data';
3
+ import type { SettingsSlice } from './slices/settings';
3
4
  import type { WidgetConfig } from '../types';
4
5
  import type { StateCreator } from 'zustand';
5
6
 
6
7
  import { create } from 'zustand';
8
+ import { persist } from 'zustand/middleware';
7
9
 
8
10
  import { createConfigSlice } from './slices/config';
9
11
  import { createDataSlice } from './slices/data';
12
+ import { createSettingsSlice } from './slices/settings';
10
13
 
11
14
  export type StateCreatorWithInitialData<
12
15
  T extends Partial<WidgetConfig>,
@@ -17,11 +20,34 @@ export type StateCreatorWithInitialData<
17
20
  ...rest: Parameters<StateCreator<R, [], [], V>>
18
21
  ) => ReturnType<StateCreator<R, [], [], V>>;
19
22
 
20
- export type AppStoreState = DataSlice & ConfigSlice;
23
+ export type AppStoreState = DataSlice & ConfigSlice & SettingsSlice;
21
24
 
22
25
  export function createAppStore(initialData?: WidgetConfig) {
23
- return create<AppStoreState>()((...a) => ({
24
- ...createDataSlice(...a),
25
- ...createConfigSlice(initialData, ...a),
26
- }));
26
+ return create<AppStoreState>()(
27
+ persist(
28
+ (...a) => ({
29
+ ...createDataSlice(...a),
30
+ ...createSettingsSlice(...a),
31
+ ...createConfigSlice(initialData, ...a),
32
+ }),
33
+ {
34
+ name: 'user-settings',
35
+ skipHydration: true,
36
+ partialize: (state) => {
37
+ return {
38
+ theme: state.theme,
39
+ language: state.language,
40
+ affiliatePercent: state.affiliatePercent,
41
+ affiliateRef: state.affiliateRef,
42
+ affiliateWallets: state.affiliateWallets,
43
+ slippage: state.slippage,
44
+ customSlippage: state.customSlippage,
45
+ infiniteApprove: state.infiniteApprove,
46
+ preferredBlockchains: state.preferredBlockchains,
47
+ disabledLiquiditySources: state.disabledLiquiditySources,
48
+ };
49
+ },
50
+ }
51
+ )
52
+ );
27
53
  }
@@ -1,12 +1,11 @@
1
- import type { TokenWithBalance } from '../components/TokenList';
2
1
  import type { Wallet } from '../types';
3
- import type { PendingSwap } from '@rango-dev/queue-manager-rango-preset/dist/shared';
4
2
  import type {
5
3
  BestRouteResponse,
6
4
  BlockchainMeta,
7
5
  MetaResponse,
8
6
  Token,
9
7
  } from 'rango-sdk';
8
+ import type { PendingSwap } from 'rango-types';
10
9
 
11
10
  import BigNumber from 'bignumber.js';
12
11
  import { create } from 'zustand';
@@ -38,8 +37,8 @@ export interface QuoteState {
38
37
  inputUsdValue: BigNumber | null;
39
38
  outputAmount: BigNumber | null;
40
39
  outputUsdValue: BigNumber | null;
41
- fromToken: TokenWithBalance | null;
42
- toToken: TokenWithBalance | null;
40
+ fromToken: Token | null;
41
+ toToken: Token | null;
43
42
  quoteWalletsConfirmed: boolean;
44
43
  selectedWallets: Wallet[];
45
44
  quoteWarningsConfirmed: boolean;
@@ -5,6 +5,7 @@ export const DEFAULT_CONFIG: WidgetConfig = {
5
5
  apiKey: '',
6
6
  multiWallets: true,
7
7
  enableNewLiquiditySources: true,
8
+ customDestination: true,
8
9
  };
9
10
 
10
11
  export type ConfigSlice = {
@@ -14,7 +14,7 @@ type BlockchainOptions = {
14
14
  };
15
15
 
16
16
  type TokenOptions = {
17
- type?: 'source' | 'destination';
17
+ type: 'source' | 'destination';
18
18
  // filter by an specific blockchain
19
19
  blockchain?: string;
20
20
  searchFor?: string;
@@ -29,7 +29,7 @@ export interface DataSlice {
29
29
  blockchains: (options?: BlockchainOptions) => BlockchainMeta[];
30
30
  tokens: (options?: TokenOptions) => Token[];
31
31
  swappers: () => SwapperMeta[];
32
- isTokenPinned: (token: Token) => boolean;
32
+ isTokenPinned: (token: Token, type: 'source' | 'destination') => boolean;
33
33
 
34
34
  fetch: () => Promise<void>;
35
35
  }
@@ -131,10 +131,10 @@ export const createDataSlice: StateCreator<
131
131
  })
132
132
  .sort((a, b) => {
133
133
  // Check pinned tokens
134
- if (get().isTokenPinned(a)) {
134
+ if (get().isTokenPinned(a, options.type)) {
135
135
  return -1;
136
136
  }
137
- if (get().isTokenPinned(b)) {
137
+ if (get().isTokenPinned(b, options.type)) {
138
138
  return 1;
139
139
  }
140
140
 
@@ -159,8 +159,12 @@ export const createDataSlice: StateCreator<
159
159
 
160
160
  return list;
161
161
  },
162
- isTokenPinned: (token) => {
163
- const pinned = !!get().config.pinnedTokens?.some((pinnedToken) =>
162
+ isTokenPinned: (token, type) => {
163
+ const pinnedTokens =
164
+ type === 'source'
165
+ ? get().config.from?.pinnedTokens
166
+ : get().config.to?.pinnedTokens;
167
+ const pinned = !!pinnedTokens?.some((pinnedToken) =>
164
168
  tokensAreEqual(pinnedToken, token)
165
169
  );
166
170
  return pinned;