@rango-dev/widget-embedded 0.19.0 → 0.19.1-next.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 (476) hide show
  1. package/CHANGELOG.md +0 -4
  2. package/dist/QueueManager.d.ts +5 -2
  3. package/dist/QueueManager.d.ts.map +1 -1
  4. package/dist/components/AppRouter.d.ts +0 -2
  5. package/dist/components/AppRouter.d.ts.map +1 -1
  6. package/dist/components/AppRoutes.d.ts +1 -6
  7. package/dist/components/AppRoutes.d.ts.map +1 -1
  8. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  9. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +1 -1
  10. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +1 -3
  12. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  13. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +690 -61
  14. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  15. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  16. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts +1 -3
  17. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.types.d.ts.map +1 -1
  18. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  19. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts +1 -4
  20. package/dist/components/ConfirmWalletsModal/WalletList.type.d.ts.map +1 -1
  21. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  22. package/dist/components/Layout/Layout.d.ts.map +1 -1
  23. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  24. package/dist/components/Layout/Layout.types.d.ts +2 -2
  25. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  26. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -1
  27. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +1727 -0
  28. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  29. package/dist/components/NoResult/NoResult.d.ts +4 -0
  30. package/dist/components/NoResult/NoResult.d.ts.map +1 -0
  31. package/dist/components/NoResult/NoResult.helpers.d.ts +4 -0
  32. package/dist/components/NoResult/NoResult.helpers.d.ts.map +1 -0
  33. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts → NoResult/NoResult.styles.d.ts} +1 -1
  34. package/dist/components/{NoRoutes/NoRoutes.styles.d.ts.map → NoResult/NoResult.styles.d.ts.map} +1 -1
  35. package/dist/components/{NoRoutes/NoRoutes.types.d.ts → NoResult/NoResult.types.d.ts} +3 -3
  36. package/dist/components/NoResult/NoResult.types.d.ts.map +1 -0
  37. package/dist/components/NoResult/index.d.ts +2 -0
  38. package/dist/components/NoResult/index.d.ts.map +1 -0
  39. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  40. package/dist/components/Quote/Quote.d.ts +4 -0
  41. package/dist/components/Quote/Quote.d.ts.map +1 -0
  42. package/dist/components/Quote/Quote.styles.d.ts +2217 -0
  43. package/dist/components/Quote/Quote.styles.d.ts.map +1 -0
  44. package/dist/components/Quote/Quote.types.d.ts +21 -0
  45. package/dist/components/Quote/Quote.types.d.ts.map +1 -0
  46. package/dist/components/Quote/QuoteSummary.d.ts +11 -0
  47. package/dist/components/Quote/QuoteSummary.d.ts.map +1 -0
  48. package/dist/components/Quote/QuoteSummary.styles.d.ts +315 -0
  49. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -0
  50. package/dist/components/Quote/index.d.ts +3 -0
  51. package/dist/components/Quote/index.d.ts.map +1 -0
  52. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts +4 -0
  53. package/dist/components/QuoteSkeleton/QuoteSkeleton.d.ts.map +1 -0
  54. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts +633 -0
  55. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -0
  56. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts +6 -0
  57. package/dist/components/QuoteSkeleton/QuoteSkeleton.types.d.ts.map +1 -0
  58. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts +4 -0
  59. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +1 -0
  60. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +1571 -0
  61. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -0
  62. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts +6 -0
  63. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.types.d.ts.map +1 -0
  64. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts +4 -0
  65. package/dist/components/QuoteSkeleton/StepSkeleton.d.ts.map +1 -0
  66. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +786 -0
  67. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -0
  68. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts +4 -0
  69. package/dist/components/QuoteSkeleton/StepSkeleton.types.d.ts.map +1 -0
  70. package/dist/components/QuoteSkeleton/index.d.ts +4 -0
  71. package/dist/components/QuoteSkeleton/index.d.ts.map +1 -0
  72. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +11 -0
  73. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +1 -0
  74. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts +4 -0
  75. package/dist/components/QuoteWarningsAndErrors/QuoteErrorsModalItem.d.ts.map +1 -0
  76. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts +4 -0
  77. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -0
  78. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts +9 -0
  79. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.d.ts.map +1 -0
  80. package/dist/components/{RouteErrors/RouteErrors.styles.d.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts} +1 -1
  81. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -0
  82. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +23 -0
  83. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -0
  84. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +11 -0
  85. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +1 -0
  86. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +11 -0
  87. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +1 -0
  88. package/dist/components/QuoteWarningsAndErrors/index.d.ts +2 -0
  89. package/dist/components/QuoteWarningsAndErrors/index.d.ts.map +1 -0
  90. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  91. package/dist/components/Slippage/Slippage.styles.d.ts +158 -0
  92. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  93. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  94. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  95. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  96. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  97. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +628 -0
  98. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  99. package/dist/components/SwapDetailsModal/SwapDetailsCompleteModal.d.ts.map +1 -1
  100. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  101. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts +1 -1
  102. package/dist/components/SwapDetailsModal/SwapDetailsModal.helpers.d.ts.map +1 -1
  103. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +1 -1
  104. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  105. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  106. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +157 -0
  107. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  108. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  109. package/dist/components/TokenList/TokenList.helpers.d.ts +2 -2
  110. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  111. package/dist/components/TokenList/TokenList.styles.d.ts +1100 -1
  112. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  113. package/dist/components/TokenList/TokenList.types.d.ts +4 -9
  114. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  115. package/dist/components/TokenList/index.d.ts +0 -1
  116. package/dist/components/TokenList/index.d.ts.map +1 -1
  117. package/dist/components/UpdateUrl.d.ts +1 -6
  118. package/dist/components/UpdateUrl.d.ts.map +1 -1
  119. package/dist/components/WidgetEvents.d.ts.map +1 -1
  120. package/dist/constants/errors.d.ts +4 -4
  121. package/dist/constants/errors.d.ts.map +1 -1
  122. package/dist/constants/index.d.ts +1 -0
  123. package/dist/constants/index.d.ts.map +1 -1
  124. package/dist/constants/messages.d.ts +1 -1
  125. package/dist/constants/navigationRoutes.d.ts +1 -2
  126. package/dist/constants/navigationRoutes.d.ts.map +1 -1
  127. package/dist/constants/searchParams.d.ts +2 -1
  128. package/dist/constants/searchParams.d.ts.map +1 -1
  129. package/dist/constants/warnings.d.ts +2 -2
  130. package/dist/constants/warnings.d.ts.map +1 -1
  131. package/dist/containers/App/App.d.ts +3 -0
  132. package/dist/containers/App/App.d.ts.map +1 -0
  133. package/dist/containers/App/App.styles.d.ts +158 -0
  134. package/dist/containers/App/App.styles.d.ts.map +1 -0
  135. package/dist/containers/App/index.d.ts +2 -0
  136. package/dist/containers/App/index.d.ts.map +1 -0
  137. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +4 -0
  138. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -0
  139. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +788 -0
  140. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -0
  141. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +20 -0
  142. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -0
  143. package/dist/containers/QuoteInfo/index.d.ts +2 -0
  144. package/dist/containers/QuoteInfo/index.d.ts.map +1 -0
  145. package/dist/containers/Wallets/Wallets.d.ts +6 -0
  146. package/dist/containers/Wallets/Wallets.d.ts.map +1 -0
  147. package/dist/containers/Wallets/Wallets.types.d.ts +11 -0
  148. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -0
  149. package/dist/containers/Wallets/index.d.ts +2 -0
  150. package/dist/containers/Wallets/index.d.ts.map +1 -0
  151. package/dist/containers/Widget/Widget.d.ts +5 -0
  152. package/dist/containers/Widget/Widget.d.ts.map +1 -0
  153. package/dist/containers/Widget/Widget.types.d.ts +5 -0
  154. package/dist/containers/Widget/Widget.types.d.ts.map +1 -0
  155. package/dist/containers/Widget/index.d.ts +3 -0
  156. package/dist/containers/Widget/index.d.ts.map +1 -0
  157. package/dist/containers/WidgetInfo/WidgetInfo.d.ts +6 -0
  158. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -0
  159. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts +20 -0
  160. package/dist/containers/WidgetInfo/WidgetInfo.helpers.d.ts.map +1 -0
  161. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +21 -0
  162. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -0
  163. package/dist/containers/WidgetInfo/index.d.ts +2 -0
  164. package/dist/containers/WidgetInfo/index.d.ts.map +1 -0
  165. package/dist/containers/WidgetProvider/WidgetProvider.d.ts +5 -0
  166. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -0
  167. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts +7 -0
  168. package/dist/containers/WidgetProvider/WidgetProvider.types.d.ts.map +1 -0
  169. package/dist/containers/WidgetProvider/index.d.ts +2 -0
  170. package/dist/containers/WidgetProvider/index.d.ts.map +1 -0
  171. package/dist/hooks/useConfirmSwap/index.d.ts +2 -0
  172. package/dist/hooks/useConfirmSwap/index.d.ts.map +1 -0
  173. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts +3 -0
  174. package/dist/hooks/useConfirmSwap/useConfirmSwap.d.ts.map +1 -0
  175. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts +19 -0
  176. package/dist/hooks/useConfirmSwap/useConfirmSwap.helpers.d.ts.map +1 -0
  177. package/dist/hooks/{useConfirmSwap.d.ts → useConfirmSwap/useConfirmSwap.types.d.ts} +5 -7
  178. package/dist/hooks/useConfirmSwap/useConfirmSwap.types.d.ts.map +1 -0
  179. package/dist/hooks/{useFetchBestRoute.d.ts → useFetchQuote.d.ts} +3 -3
  180. package/dist/hooks/useFetchQuote.d.ts.map +1 -0
  181. package/dist/hooks/useForceAutoConnect.d.ts +2 -0
  182. package/dist/hooks/useForceAutoConnect.d.ts.map +1 -0
  183. package/dist/hooks/useLanguage.d.ts +1 -1
  184. package/dist/hooks/useLanguage.d.ts.map +1 -1
  185. package/dist/hooks/useNavigateBack.d.ts +1 -3
  186. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  187. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.d.ts +1 -1
  188. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts +2 -2
  189. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.d.ts.map +1 -1
  190. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts +5 -7
  191. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.d.ts.map +1 -1
  192. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts +1 -0
  193. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.d.ts.map +1 -1
  194. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts +5 -1
  195. package/dist/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.d.ts.map +1 -1
  196. package/dist/hooks/useSwapInput.d.ts +4 -2
  197. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  198. package/dist/hooks/useSyncStoresWithConfig.d.ts +1 -2
  199. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  200. package/dist/hooks/useTheme.d.ts +1 -1
  201. package/dist/hooks/useTheme.d.ts.map +1 -1
  202. package/dist/hooks/useWalletList.d.ts.map +1 -1
  203. package/dist/index.d.ts +20 -8
  204. package/dist/index.d.ts.map +1 -1
  205. package/dist/index.js +1 -1
  206. package/dist/index.js.map +4 -4
  207. package/dist/pages/ConfirmSwapPage.d.ts +1 -6
  208. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  209. package/dist/pages/HistoryPage.d.ts.map +1 -1
  210. package/dist/pages/Home.d.ts.map +1 -1
  211. package/dist/pages/LanguagePage.d.ts.map +1 -1
  212. package/dist/pages/LiquiditySourcePage.d.ts +1 -2
  213. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  214. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  215. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  216. package/dist/pages/SettingsPage.d.ts +1 -6
  217. package/dist/pages/SettingsPage.d.ts.map +1 -1
  218. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  219. package/dist/pages/ThemePage.d.ts.map +1 -1
  220. package/dist/pages/WalletsPage.d.ts +1 -8
  221. package/dist/pages/WalletsPage.d.ts.map +1 -1
  222. package/dist/store/AppStore.d.ts +47 -0
  223. package/dist/store/AppStore.d.ts.map +1 -0
  224. package/dist/store/app.d.ts +41 -22
  225. package/dist/store/app.d.ts.map +1 -1
  226. package/dist/store/notification.d.ts +4 -3
  227. package/dist/store/notification.d.ts.map +1 -1
  228. package/dist/store/quote.d.ts +89 -0
  229. package/dist/store/quote.d.ts.map +1 -0
  230. package/dist/store/slices/config.d.ts +3 -2
  231. package/dist/store/slices/config.d.ts.map +1 -1
  232. package/dist/store/slices/data.d.ts +5 -2
  233. package/dist/store/slices/data.d.ts.map +1 -1
  234. package/dist/store/slices/settings.d.ts +39 -0
  235. package/dist/store/slices/settings.d.ts.map +1 -0
  236. package/dist/store/ui.d.ts +2 -1
  237. package/dist/store/ui.d.ts.map +1 -1
  238. package/dist/store/wallets.d.ts +14 -9
  239. package/dist/store/wallets.d.ts.map +1 -1
  240. package/dist/types/config.d.ts +41 -8
  241. package/dist/types/config.d.ts.map +1 -1
  242. package/dist/types/index.d.ts +1 -1
  243. package/dist/types/index.d.ts.map +1 -1
  244. package/dist/types/quote.d.ts +82 -0
  245. package/dist/types/quote.d.ts.map +1 -0
  246. package/dist/types/swap.d.ts +4 -14
  247. package/dist/types/swap.d.ts.map +1 -1
  248. package/dist/types/wallets.d.ts +15 -1
  249. package/dist/types/wallets.d.ts.map +1 -1
  250. package/dist/utils/colors.d.ts.map +1 -1
  251. package/dist/utils/configs.d.ts +1 -0
  252. package/dist/utils/configs.d.ts.map +1 -1
  253. package/dist/utils/meta.d.ts +2 -1
  254. package/dist/utils/meta.d.ts.map +1 -1
  255. package/dist/utils/numbers.d.ts +1 -1
  256. package/dist/utils/numbers.d.ts.map +1 -1
  257. package/dist/utils/providers.d.ts +2 -2
  258. package/dist/utils/providers.d.ts.map +1 -1
  259. package/dist/utils/queue.d.ts +2 -2
  260. package/dist/utils/queue.d.ts.map +1 -1
  261. package/dist/utils/quote.d.ts +32 -0
  262. package/dist/utils/quote.d.ts.map +1 -0
  263. package/dist/utils/settings.d.ts +6 -2
  264. package/dist/utils/settings.d.ts.map +1 -1
  265. package/dist/utils/swap.d.ts +35 -24
  266. package/dist/utils/swap.d.ts.map +1 -1
  267. package/dist/utils/time.d.ts +1 -1
  268. package/dist/utils/time.d.ts.map +1 -1
  269. package/dist/utils/wallets.d.ts +9 -10
  270. package/dist/utils/wallets.d.ts.map +1 -1
  271. package/package.json +13 -11
  272. package/src/QueueManager.tsx +18 -17
  273. package/src/components/AppRouter.tsx +8 -32
  274. package/src/components/AppRoutes.tsx +57 -69
  275. package/src/components/BlockchainList/BlockchainList.styles.ts +2 -2
  276. package/src/components/BlockchainList/BlockchainList.tsx +4 -4
  277. package/src/components/BlockchainsSection/BlockchainsSection.styles.ts +1 -1
  278. package/src/components/BlockchainsSection/BlockchainsSection.tsx +26 -17
  279. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +2 -64
  280. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +29 -10
  281. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +43 -47
  282. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.types.ts +1 -3
  283. package/src/components/ConfirmWalletsModal/WalletList.tsx +9 -8
  284. package/src/components/ConfirmWalletsModal/WalletList.type.ts +1 -4
  285. package/src/components/HeaderButtons/HomeButtons.tsx +28 -18
  286. package/src/components/Layout/Layout.styles.ts +2 -0
  287. package/src/components/Layout/Layout.tsx +20 -7
  288. package/src/components/Layout/Layout.types.ts +2 -2
  289. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +65 -61
  290. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +28 -34
  291. package/src/components/{NoRoutes/NoRoutes.helper.ts → NoResult/NoResult.helpers.ts} +23 -16
  292. package/src/components/{NoRoutes/NoRoutes.styles.ts → NoResult/NoResult.styles.ts} +2 -0
  293. package/src/components/{NoRoutes/NoRoutes.tsx → NoResult/NoResult.tsx} +12 -17
  294. package/src/components/{NoRoutes/NoRoutes.types.ts → NoResult/NoResult.types.ts} +3 -2
  295. package/src/components/NoResult/index.ts +1 -0
  296. package/src/components/NotificationContent/NotificationContent.tsx +5 -3
  297. package/src/components/Quote/Quote.styles.ts +249 -0
  298. package/src/components/Quote/Quote.tsx +414 -0
  299. package/src/components/Quote/Quote.types.ts +15 -0
  300. package/src/components/Quote/QuoteSummary.styles.ts +16 -0
  301. package/src/components/Quote/QuoteSummary.tsx +46 -0
  302. package/src/components/Quote/index.ts +2 -0
  303. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +42 -0
  304. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +30 -0
  305. package/src/components/QuoteSkeleton/QuoteSkeleton.types.ts +5 -0
  306. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +57 -0
  307. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +76 -0
  308. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.types.ts +6 -0
  309. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +33 -0
  310. package/src/components/QuoteSkeleton/StepSkeleton.tsx +44 -0
  311. package/src/components/QuoteSkeleton/StepSkeleton.types.ts +1 -0
  312. package/src/components/QuoteSkeleton/index.ts +3 -0
  313. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +107 -0
  314. package/src/components/{RouteErrors/RouteErrorsModalItem.tsx → QuoteWarningsAndErrors/QuoteErrorsModalItem.tsx} +4 -4
  315. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +74 -0
  316. package/src/components/{RouteErrors/RouteErrors.styles.ts → QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts} +8 -1
  317. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +103 -0
  318. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +25 -0
  319. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +77 -0
  320. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +38 -0
  321. package/src/components/QuoteWarningsAndErrors/index.ts +1 -0
  322. package/src/components/Slippage/Slippage.styles.ts +15 -5
  323. package/src/components/Slippage/Slippage.tsx +11 -10
  324. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +5 -8
  325. package/src/components/SwapDetails/SwapDetails.helpers.tsx +1 -1
  326. package/src/components/SwapDetails/SwapDetails.styles.ts +36 -33
  327. package/src/components/SwapDetails/SwapDetails.tsx +41 -56
  328. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.Warning.tsx +1 -1
  329. package/src/components/SwapDetailsModal/SwapDetailsCompleteModal.tsx +4 -3
  330. package/src/components/SwapDetailsModal/SwapDetailsModal.Cancel.tsx +2 -2
  331. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +14 -8
  332. package/src/components/SwapDetailsModal/SwapDetailsModal.helpers.tsx +1 -1
  333. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +1 -1
  334. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +1 -1
  335. package/src/components/SwapsGroup/SwapsGroup.styles.ts +10 -1
  336. package/src/components/SwapsGroup/SwapsGroup.tsx +3 -5
  337. package/src/components/SwitchFromAndTo.tsx +2 -2
  338. package/src/components/TokenList/TokenList.helpers.ts +2 -2
  339. package/src/components/TokenList/TokenList.styles.ts +74 -38
  340. package/src/components/TokenList/TokenList.tsx +35 -26
  341. package/src/components/TokenList/TokenList.types.ts +4 -10
  342. package/src/components/TokenList/index.ts +0 -1
  343. package/src/components/UpdateUrl.tsx +35 -30
  344. package/src/components/WidgetEvents.tsx +4 -2
  345. package/src/constants/errors.ts +17 -15
  346. package/src/constants/index.ts +1 -0
  347. package/src/constants/messages.ts +1 -1
  348. package/src/constants/navigationRoutes.ts +7 -8
  349. package/src/constants/searchParams.ts +1 -0
  350. package/src/constants/warnings.ts +7 -7
  351. package/src/containers/App/App.styles.ts +18 -0
  352. package/src/containers/App/App.tsx +52 -0
  353. package/src/containers/App/index.ts +1 -0
  354. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +31 -0
  355. package/src/containers/QuoteInfo/QuoteInfo.tsx +99 -0
  356. package/src/containers/QuoteInfo/QuoteInfo.types.ts +20 -0
  357. package/src/containers/QuoteInfo/index.ts +1 -0
  358. package/src/{Wallets.tsx → containers/Wallets/Wallets.tsx} +48 -34
  359. package/src/containers/Wallets/Wallets.types.ts +12 -0
  360. package/src/containers/Wallets/index.ts +1 -0
  361. package/src/containers/Widget/Widget.tsx +19 -0
  362. package/src/containers/Widget/Widget.types.ts +5 -0
  363. package/src/containers/Widget/index.ts +2 -0
  364. package/src/containers/WidgetInfo/WidgetInfo.helpers.ts +64 -0
  365. package/src/containers/WidgetInfo/WidgetInfo.tsx +62 -0
  366. package/src/containers/WidgetInfo/WidgetInfo.types.ts +21 -0
  367. package/src/containers/WidgetInfo/index.ts +1 -0
  368. package/src/containers/WidgetProvider/WidgetProvider.tsx +28 -0
  369. package/src/containers/WidgetProvider/WidgetProvider.types.ts +7 -0
  370. package/src/containers/WidgetProvider/index.ts +1 -0
  371. package/src/hooks/useConfirmSwap/index.ts +1 -0
  372. package/src/hooks/useConfirmSwap/useConfirmSwap.helpers.ts +172 -0
  373. package/src/hooks/useConfirmSwap/useConfirmSwap.ts +137 -0
  374. package/src/hooks/useConfirmSwap/useConfirmSwap.types.ts +19 -0
  375. package/src/hooks/{useFetchBestRoute.ts → useFetchQuote.ts} +3 -3
  376. package/src/hooks/useForceAutoConnect.ts +27 -0
  377. package/src/hooks/useLanguage.ts +4 -5
  378. package/src/hooks/useNavigateBack.ts +3 -52
  379. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.constants.ts +1 -1
  380. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.helpers.ts +37 -7
  381. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.mock.ts +60 -0
  382. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.test.ts +78 -3
  383. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.ts +15 -6
  384. package/src/hooks/usePrepareBlockchainList/usePrepareBlockchainList.types.ts +6 -1
  385. package/src/hooks/useSwapInput.ts +141 -48
  386. package/src/hooks/useSyncStoresWithConfig.ts +40 -24
  387. package/src/hooks/useTheme.ts +4 -5
  388. package/src/hooks/useWalletList.ts +3 -5
  389. package/src/index.ts +53 -5
  390. package/src/pages/ConfirmSwapPage.tsx +117 -266
  391. package/src/pages/HistoryPage.tsx +2 -7
  392. package/src/pages/Home.tsx +88 -303
  393. package/src/pages/LanguagePage.tsx +0 -5
  394. package/src/pages/LiquiditySourcePage.tsx +24 -37
  395. package/src/pages/SelectBlockchainPage.tsx +31 -24
  396. package/src/pages/SelectSwapItemsPage.tsx +18 -31
  397. package/src/pages/SettingsPage.tsx +32 -27
  398. package/src/pages/SwapDetailsPage.tsx +6 -7
  399. package/src/pages/ThemePage.tsx +2 -7
  400. package/src/pages/WalletsPage.tsx +9 -19
  401. package/src/services/httpService.ts +1 -1
  402. package/src/store/AppStore.tsx +41 -0
  403. package/src/store/app.ts +44 -6
  404. package/src/store/{bestRoute.ts → quote.ts} +71 -64
  405. package/src/store/slices/config.ts +26 -15
  406. package/src/store/slices/data.ts +74 -35
  407. package/src/store/slices/settings.ts +168 -0
  408. package/src/store/wallets.ts +68 -37
  409. package/src/types/config.ts +53 -8
  410. package/src/types/index.ts +1 -1
  411. package/src/types/quote.ts +107 -0
  412. package/src/types/swap.ts +4 -13
  413. package/src/types/wallets.ts +18 -1
  414. package/src/utils/colors.ts +2 -1
  415. package/src/utils/configs.ts +2 -1
  416. package/src/utils/date.ts +1 -1
  417. package/src/utils/meta.ts +8 -1
  418. package/src/utils/numbers.ts +1 -1
  419. package/src/utils/providers.ts +8 -5
  420. package/src/utils/queue.ts +2 -2
  421. package/src/utils/quote.ts +338 -0
  422. package/src/utils/settings.ts +17 -10
  423. package/src/utils/swap.ts +154 -120
  424. package/src/utils/time.ts +1 -1
  425. package/src/utils/wallets.ts +156 -161
  426. package/dist/Wallets.d.ts +0 -17
  427. package/dist/Wallets.d.ts.map +0 -1
  428. package/dist/Widget.d.ts +0 -9
  429. package/dist/Widget.d.ts.map +0 -1
  430. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +0 -4
  431. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +0 -1
  432. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +0 -4
  433. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +0 -1
  434. package/dist/components/NoRoutes/NoRoutes.d.ts +0 -4
  435. package/dist/components/NoRoutes/NoRoutes.d.ts.map +0 -1
  436. package/dist/components/NoRoutes/NoRoutes.helper.d.ts +0 -3
  437. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +0 -1
  438. package/dist/components/NoRoutes/NoRoutes.types.d.ts.map +0 -1
  439. package/dist/components/NoRoutes/index.d.ts +0 -2
  440. package/dist/components/NoRoutes/index.d.ts.map +0 -1
  441. package/dist/components/RouteErrors/RouteErrors.d.ts +0 -4
  442. package/dist/components/RouteErrors/RouteErrors.d.ts.map +0 -1
  443. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +0 -1
  444. package/dist/components/RouteErrors/RouteErrors.types.d.ts +0 -24
  445. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +0 -1
  446. package/dist/components/RouteErrors/RouteErrorsModal.d.ts +0 -4
  447. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +0 -1
  448. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts +0 -4
  449. package/dist/components/RouteErrors/RouteErrorsModalItem.d.ts.map +0 -1
  450. package/dist/components/RouteErrors/index.d.ts +0 -2
  451. package/dist/components/RouteErrors/index.d.ts.map +0 -1
  452. package/dist/hooks/useConfirmSwap.d.ts.map +0 -1
  453. package/dist/hooks/useFetchBestRoute.d.ts.map +0 -1
  454. package/dist/store/bestRoute.d.ts +0 -77
  455. package/dist/store/bestRoute.d.ts.map +0 -1
  456. package/dist/store/meta.d.ts +0 -23
  457. package/dist/store/meta.d.ts.map +0 -1
  458. package/dist/store/settings.d.ts +0 -81
  459. package/dist/store/settings.d.ts.map +0 -1
  460. package/dist/types/routing.d.ts +0 -65
  461. package/dist/types/routing.d.ts.map +0 -1
  462. package/dist/utils/routing.d.ts +0 -28
  463. package/dist/utils/routing.d.ts.map +0 -1
  464. package/src/Widget.tsx +0 -119
  465. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +0 -41
  466. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +0 -3
  467. package/src/components/NoRoutes/index.ts +0 -1
  468. package/src/components/RouteErrors/RouteErrors.tsx +0 -79
  469. package/src/components/RouteErrors/RouteErrors.types.ts +0 -29
  470. package/src/components/RouteErrors/RouteErrorsModal.tsx +0 -129
  471. package/src/components/RouteErrors/index.ts +0 -1
  472. package/src/hooks/useConfirmSwap.ts +0 -303
  473. package/src/store/meta.ts +0 -39
  474. package/src/store/settings.ts +0 -158
  475. package/src/types/routing.ts +0 -77
  476. package/src/utils/routing.ts +0 -321
@@ -0,0 +1,414 @@
1
+ import type { QuoteProps } from './Quote.types';
2
+ import type { Step } from '@rango-dev/ui';
3
+ import type { SwapResult } from 'rango-sdk';
4
+
5
+ import { i18n } from '@lingui/core';
6
+ import {
7
+ Alert,
8
+ ChevronDownIcon,
9
+ ChevronRightIcon,
10
+ Divider,
11
+ Image,
12
+ InfoIcon,
13
+ QuoteCost,
14
+ StepDetails,
15
+ TokenAmount,
16
+ Tooltip,
17
+ Typography,
18
+ } from '@rango-dev/ui';
19
+ import React, { useLayoutEffect, useRef, useState } from 'react';
20
+
21
+ import {
22
+ GAS_FEE_MAX_DECIMALS,
23
+ GAS_FEE_MIN_DECIMALS,
24
+ PERCENTAGE_CHANGE_MAX_DECIMALS,
25
+ PERCENTAGE_CHANGE_MIN_DECIMALS,
26
+ TOKEN_AMOUNT_MAX_DECIMALS,
27
+ TOKEN_AMOUNT_MIN_DECIMALS,
28
+ USD_VALUE_MAX_DECIMALS,
29
+ USD_VALUE_MIN_DECIMALS,
30
+ } from '../../constants/routing';
31
+ import {
32
+ FooterAlert,
33
+ FooterStepAlarm,
34
+ } from '../../containers/QuoteInfo/QuoteInfo.styles';
35
+ import { useAppStore } from '../../store/AppStore';
36
+ import { QuoteErrorType, QuoteWarningType } from '../../types';
37
+ import { getContainer } from '../../utils/common';
38
+ import {
39
+ getBlockchainShortNameFor,
40
+ getSwapperDisplayName,
41
+ } from '../../utils/meta';
42
+ import {
43
+ numberToString,
44
+ secondsToString,
45
+ totalArrivalTime,
46
+ } from '../../utils/numbers';
47
+ import { getPriceImpact, getPriceImpactLevel } from '../../utils/quote';
48
+ import { getTotalFeeInUsd } from '../../utils/swap';
49
+
50
+ import {
51
+ BasicInfoOutput,
52
+ basicInfoStyles,
53
+ ChainImageContainer,
54
+ Chains,
55
+ Content,
56
+ EXPANDABLE_QUOTE_TRANSITION_DURATION,
57
+ FrameIcon,
58
+ HorizontalSeparator,
59
+ IconContainer,
60
+ QuoteContainer,
61
+ stepsDetailsStyles,
62
+ SummaryContainer,
63
+ summaryStyles,
64
+ } from './Quote.styles';
65
+ import { QuoteSummary } from './QuoteSummary';
66
+
67
+ export function Quote(props: QuoteProps) {
68
+ const {
69
+ quote,
70
+ input,
71
+ output,
72
+ error,
73
+ warning,
74
+ type,
75
+ recommended = true,
76
+ } = props;
77
+ const tokens = useAppStore().tokens();
78
+ const blockchains = useAppStore().blockchains();
79
+ const swappers = useAppStore().swappers();
80
+
81
+ const [expanded, setExpanded] = useState(props.expanded);
82
+ const quoteRef = useRef<HTMLButtonElement | null>(null);
83
+ const prevExpanded = useRef(expanded);
84
+ const totalFee = numberToString(
85
+ getTotalFeeInUsd(quote.result?.swaps ?? [], tokens),
86
+ GAS_FEE_MIN_DECIMALS,
87
+ GAS_FEE_MAX_DECIMALS
88
+ );
89
+ const totalTime = secondsToString(totalArrivalTime(quote.result?.swaps));
90
+ const roundedInput = numberToString(
91
+ input.value,
92
+ TOKEN_AMOUNT_MIN_DECIMALS,
93
+ TOKEN_AMOUNT_MAX_DECIMALS
94
+ );
95
+ const roundedOutput = numberToString(
96
+ output.value,
97
+ TOKEN_AMOUNT_MIN_DECIMALS,
98
+ TOKEN_AMOUNT_MAX_DECIMALS
99
+ );
100
+ const roundedOutputUsdValue = output.usdValue
101
+ ? numberToString(
102
+ output.usdValue,
103
+ USD_VALUE_MIN_DECIMALS,
104
+ USD_VALUE_MAX_DECIMALS
105
+ )
106
+ : '';
107
+ const priceImpact = getPriceImpact(input.usdValue, output.usdValue ?? null);
108
+ const percentageChange = numberToString(
109
+ priceImpact,
110
+ PERCENTAGE_CHANGE_MIN_DECIMALS,
111
+ PERCENTAGE_CHANGE_MAX_DECIMALS
112
+ );
113
+ const priceImpactWarningLevel = getPriceImpactLevel(priceImpact ?? 0);
114
+
115
+ const getQuoteSteps = (swaps: SwapResult[]): Step[] => {
116
+ return swaps.map((swap, index) => {
117
+ let stepState: 'error' | 'warning' | undefined = undefined;
118
+ const stepHasError =
119
+ (error?.type === QuoteErrorType.BRIDGE_LIMIT &&
120
+ error.swap.swapperId === swap.swapperId) ||
121
+ (error?.type === QuoteErrorType.INSUFFICIENT_SLIPPAGE &&
122
+ error.recommendedSlippages?.has(index));
123
+ const stepHasWarning =
124
+ warning?.type === QuoteWarningType.INSUFFICIENT_SLIPPAGE &&
125
+ warning.recommendedSlippages?.has(index);
126
+
127
+ if (stepHasError) {
128
+ stepState = 'error';
129
+ } else if (stepHasWarning) {
130
+ stepState = 'warning';
131
+ }
132
+
133
+ return {
134
+ swapper: {
135
+ displayName: getSwapperDisplayName(swap.swapperId, swappers),
136
+ image: swap.swapperLogo,
137
+ },
138
+ from: {
139
+ token: { displayName: swap.from.symbol, image: swap.from.logo },
140
+ chain: {
141
+ displayName: getBlockchainShortNameFor(
142
+ swap.from.blockchain,
143
+ blockchains
144
+ ),
145
+ image: swap.from.blockchainLogo,
146
+ },
147
+ price: {
148
+ value:
149
+ index === 0
150
+ ? numberToString(
151
+ input.value,
152
+ TOKEN_AMOUNT_MIN_DECIMALS,
153
+ TOKEN_AMOUNT_MAX_DECIMALS
154
+ )
155
+ : numberToString(
156
+ swap.fromAmount,
157
+ TOKEN_AMOUNT_MIN_DECIMALS,
158
+ TOKEN_AMOUNT_MAX_DECIMALS
159
+ ),
160
+ usdValue: numberToString(
161
+ (swap.from.usdPrice ?? 0) * parseFloat(swap.fromAmount),
162
+ USD_VALUE_MIN_DECIMALS,
163
+ USD_VALUE_MAX_DECIMALS
164
+ ),
165
+ },
166
+ },
167
+ to: {
168
+ token: { displayName: swap.to.symbol, image: swap.to.logo },
169
+ chain: {
170
+ displayName: getBlockchainShortNameFor(
171
+ swap.to.blockchain,
172
+ blockchains
173
+ ),
174
+ image: swap.to.blockchainLogo,
175
+ },
176
+ price: {
177
+ value: numberToString(
178
+ swap.toAmount,
179
+ TOKEN_AMOUNT_MIN_DECIMALS,
180
+ TOKEN_AMOUNT_MAX_DECIMALS
181
+ ),
182
+ usdValue: numberToString(
183
+ (swap.to.usdPrice ?? 0) * parseFloat(swap.toAmount),
184
+ USD_VALUE_MIN_DECIMALS,
185
+ USD_VALUE_MAX_DECIMALS
186
+ ),
187
+ },
188
+ },
189
+ state: stepState,
190
+ alerts:
191
+ stepHasError || stepHasWarning ? (
192
+ <FooterStepAlarm>
193
+ <Alert
194
+ type={stepHasError ? 'error' : 'warning'}
195
+ title={
196
+ error?.type === QuoteErrorType.BRIDGE_LIMIT
197
+ ? error?.recommendation
198
+ : i18n.t('Slippage Error:')
199
+ }
200
+ footer={
201
+ <FooterAlert>
202
+ {error?.type === QuoteErrorType.BRIDGE_LIMIT && (
203
+ <>
204
+ <Typography
205
+ size="xsmall"
206
+ variant="body"
207
+ color="neutral900">
208
+ {error.fromAmountRangeError}
209
+ </Typography>
210
+ <Divider direction="horizontal" size={8} />
211
+ <Typography
212
+ size="xsmall"
213
+ variant="body"
214
+ color="neutral900">
215
+ |
216
+ </Typography>
217
+ <Divider direction="horizontal" size={8} />
218
+ <Typography
219
+ size="xsmall"
220
+ variant="body"
221
+ color="neutral900">
222
+ {i18n.t({
223
+ id: 'Yours: {amount} {symbol}',
224
+ values: {
225
+ amount: numberToString(
226
+ swap.fromAmount,
227
+ TOKEN_AMOUNT_MIN_DECIMALS,
228
+ TOKEN_AMOUNT_MAX_DECIMALS
229
+ ),
230
+ symbol: swap?.from.symbol,
231
+ },
232
+ })}
233
+ </Typography>
234
+ </>
235
+ )}
236
+ {(error?.type === QuoteErrorType.INSUFFICIENT_SLIPPAGE ||
237
+ warning?.type ===
238
+ QuoteWarningType.INSUFFICIENT_SLIPPAGE) && (
239
+ <Typography
240
+ size="xsmall"
241
+ variant="body"
242
+ color="neutral900">
243
+ {i18n.t({
244
+ id: 'Minimum required slippage is {minRequiredSlippage}',
245
+ values: {
246
+ ...(error?.type ===
247
+ QuoteErrorType.INSUFFICIENT_SLIPPAGE && {
248
+ minRequiredSlippage:
249
+ error.recommendedSlippages?.get(index),
250
+ }),
251
+ ...(warning?.type ===
252
+ QuoteWarningType.INSUFFICIENT_SLIPPAGE && {
253
+ minRequiredSlippage:
254
+ warning.recommendedSlippages?.get(index),
255
+ }),
256
+ },
257
+ })}
258
+ </Typography>
259
+ )}
260
+ </FooterAlert>
261
+ }
262
+ />
263
+ </FooterStepAlarm>
264
+ ) : undefined,
265
+ };
266
+ });
267
+ };
268
+ const steps = getQuoteSteps(quote.result?.swaps ?? []);
269
+ const numberOfSteps = steps.length;
270
+ const tooltipContainer = getContainer();
271
+
272
+ useLayoutEffect(() => {
273
+ if (expanded && !prevExpanded.current && quoteRef.current) {
274
+ setTimeout(() => {
275
+ quoteRef?.current?.scrollIntoView({ behavior: 'smooth' });
276
+ }, EXPANDABLE_QUOTE_TRANSITION_DURATION);
277
+ }
278
+ prevExpanded.current = expanded;
279
+ }, [expanded, prevExpanded]);
280
+
281
+ return (
282
+ <>
283
+ <SummaryContainer
284
+ recommended={recommended}
285
+ listItem={type === 'list-item'}
286
+ basic={type === 'basic'}>
287
+ <div className={summaryStyles()}>
288
+ <QuoteCost fee={totalFee} time={totalTime} steps={numberOfSteps} />
289
+ {type === 'basic' && (
290
+ <div className={basicInfoStyles()}>
291
+ <FrameIcon>
292
+ <InfoIcon size={12} color="gray" />
293
+ </FrameIcon>
294
+ <BasicInfoOutput size="small" variant="body">
295
+ {`${roundedInput} ${
296
+ steps[0].from.token.displayName
297
+ } = ${roundedOutput} ${
298
+ steps[steps.length - 1].to.token.displayName
299
+ }`}
300
+ </BasicInfoOutput>
301
+ <Typography
302
+ color="$neutral600"
303
+ ml={2}
304
+ size="xsmall"
305
+ variant="body">
306
+ {`($${roundedOutputUsdValue})`}
307
+ </Typography>
308
+ </div>
309
+ )}
310
+ {type === 'list-item' && (
311
+ <TokenAmount
312
+ type="output"
313
+ direction="vertical"
314
+ price={{ value: roundedOutput, usdValue: roundedOutputUsdValue }}
315
+ token={{
316
+ displayName: steps[numberOfSteps - 1].to.token.displayName,
317
+ image: steps[numberOfSteps - 1].to.token.image,
318
+ }}
319
+ chain={{ image: steps[numberOfSteps - 1].to.chain.image }}
320
+ percentageChange={percentageChange}
321
+ warningLevel={priceImpactWarningLevel}
322
+ />
323
+ )}
324
+ {type === 'swap-preview' && (
325
+ <>
326
+ <QuoteSummary
327
+ from={steps[0].from}
328
+ to={steps[numberOfSteps - 1].to}
329
+ percentageChange={percentageChange}
330
+ warningLevel={priceImpactWarningLevel}
331
+ />
332
+ <Divider size={4} />
333
+ </>
334
+ )}
335
+ </div>
336
+ <QuoteContainer
337
+ recommended={recommended}
338
+ open={expanded}
339
+ onOpenChange={setExpanded}>
340
+ <Chains
341
+ ref={(ref) => (quoteRef.current = ref)}
342
+ recommended={recommended}
343
+ onClick={() => setExpanded((prevState) => !prevState)}>
344
+ <div>
345
+ {steps.map((step, index) => {
346
+ const key = `item-${index}`;
347
+ const arrow = (
348
+ <IconContainer>
349
+ <ChevronRightIcon
350
+ size={12}
351
+ color="black"
352
+ {...(step.state && {
353
+ color: step.state === 'error' ? 'error' : 'warning',
354
+ })}
355
+ />
356
+ </IconContainer>
357
+ );
358
+ return (
359
+ <React.Fragment key={key}>
360
+ <Tooltip
361
+ container={tooltipContainer}
362
+ side="bottom"
363
+ sideOffset={4}
364
+ content={step.from.chain.displayName}>
365
+ <ChainImageContainer
366
+ state={step.state || steps[index - 1]?.state}>
367
+ <Image src={step.from.chain.image} size={16} />
368
+ </ChainImageContainer>
369
+ </Tooltip>
370
+ {index === numberOfSteps - 1 && (
371
+ <>
372
+ {arrow}
373
+ <Tooltip
374
+ container={tooltipContainer}
375
+ side="bottom"
376
+ sideOffset={4}
377
+ content={step.to.chain.displayName}>
378
+ <ChainImageContainer state={step.state}>
379
+ <Image src={step.to.chain.image} size={16} />
380
+ </ChainImageContainer>
381
+ </Tooltip>
382
+ </>
383
+ )}
384
+ {index !== numberOfSteps - 1 && <>{arrow}</>}
385
+ </React.Fragment>
386
+ );
387
+ })}
388
+ </div>
389
+ <IconContainer orientation={expanded ? 'up' : 'down'}>
390
+ <ChevronDownIcon size={12} color="black" />
391
+ </IconContainer>
392
+ </Chains>
393
+ <Content open={expanded}>
394
+ <HorizontalSeparator />
395
+ <div className={stepsDetailsStyles()}>
396
+ {steps.map((step, index) => {
397
+ const key = `item-${index}`;
398
+ return (
399
+ <StepDetails
400
+ type="quote-details"
401
+ key={key}
402
+ step={step}
403
+ hasSeparator={index !== steps.length - 1}
404
+ state={step.state}
405
+ />
406
+ );
407
+ })}
408
+ </div>
409
+ </Content>
410
+ </QuoteContainer>
411
+ </SummaryContainer>
412
+ </>
413
+ );
414
+ }
@@ -0,0 +1,15 @@
1
+ import type { QuoteError, QuoteWarning } from '../../types';
2
+ import type { BestRouteResponse } from 'rango-sdk';
3
+ import type { ReactNode } from 'react';
4
+
5
+ export type QuoteProps = {
6
+ type: 'basic' | 'list-item' | 'swap-preview';
7
+ error: QuoteError | null;
8
+ warning: QuoteWarning | null;
9
+ recommended: boolean;
10
+ tag?: ReactNode;
11
+ quote: BestRouteResponse;
12
+ input: { value: string; usdValue: string };
13
+ output: { value: string; usdValue?: string };
14
+ expanded?: boolean;
15
+ };
@@ -0,0 +1,16 @@
1
+ import { css, styled } from '@rango-dev/ui';
2
+
3
+ export const Container = styled('div', {
4
+ position: 'relative',
5
+ display: 'flex',
6
+ flexDirection: 'column',
7
+ width: '100%',
8
+ });
9
+
10
+ export const separatorStyles = css({
11
+ height: '14px',
12
+ marginLeft: '14px',
13
+ position: 'absolute',
14
+ borderLeft: '1px solid $foreground',
15
+ top: '42%',
16
+ });
@@ -0,0 +1,46 @@
1
+ import type { PriceImpactWarningLevel, Step } from '@rango-dev/ui';
2
+
3
+ import { TokenAmount } from '@rango-dev/ui';
4
+ import React from 'react';
5
+
6
+ import { Container, separatorStyles } from './QuoteSummary.styles';
7
+
8
+ type PropTypes = {
9
+ from: Step['from'];
10
+ to: Step['to'];
11
+ percentageChange?: string | null;
12
+ warningLevel: PriceImpactWarningLevel;
13
+ };
14
+
15
+ export function QuoteSummary(props: PropTypes) {
16
+ const { from, to, percentageChange, warningLevel } = props;
17
+ return (
18
+ <Container>
19
+ <TokenAmount
20
+ direction="horizontal"
21
+ label="Swap input"
22
+ type="input"
23
+ price={{ value: from.price.value, usdValue: from.price.usdValue }}
24
+ token={{
25
+ displayName: from.token.displayName,
26
+ image: from.token.image,
27
+ }}
28
+ chain={{ image: from.chain.image }}
29
+ />
30
+ <div className={separatorStyles()} />
31
+ <TokenAmount
32
+ direction="horizontal"
33
+ label="Estimated output"
34
+ type="output"
35
+ price={{ value: to.price.value, usdValue: to.price.usdValue }}
36
+ token={{
37
+ displayName: to.token.displayName,
38
+ image: to.token.image,
39
+ }}
40
+ chain={{ image: to.chain.image }}
41
+ percentageChange={percentageChange}
42
+ warningLevel={warningLevel}
43
+ />
44
+ </Container>
45
+ );
46
+ }
@@ -0,0 +1,2 @@
1
+ export { Quote } from './Quote';
2
+ export { QuoteSummary } from './QuoteSummary';
@@ -0,0 +1,42 @@
1
+ import { darkTheme, styled } from '@rango-dev/ui';
2
+
3
+ export const Container = styled('div', {
4
+ $$color: '$colors$neutral100',
5
+ [`.${darkTheme} &`]: {
6
+ $$color: '$colors$neutral300',
7
+ },
8
+ backgroundColor: '$$color',
9
+ borderBottomLeftRadius: '$xm',
10
+ borderBottomRightRadius: '$xm',
11
+ padding: '$15 ',
12
+ variants: {
13
+ rounded: {
14
+ true: {
15
+ borderRadius: '$xm',
16
+ },
17
+ },
18
+ },
19
+ });
20
+
21
+ export const Chains = styled('div', {
22
+ paddingTop: '$2',
23
+ });
24
+
25
+ export const Steps = styled('div', {
26
+ paddingLeft: '$8',
27
+ });
28
+
29
+ export const StepSeparator = styled('div', {
30
+ borderLeft: '1px dashed black',
31
+ minHeight: ' 0',
32
+ margin: '0px 11.5px',
33
+ alignSelf: 'stretch',
34
+ variants: {
35
+ hideSeparator: {
36
+ true: {
37
+ minHeight: 'unset',
38
+ height: '0',
39
+ },
40
+ },
41
+ },
42
+ });
@@ -0,0 +1,30 @@
1
+ import type { PropTypes } from './QuoteSkeleton.types';
2
+
3
+ import { Divider, Skeleton } from '@rango-dev/ui';
4
+ import React from 'react';
5
+
6
+ import { Chains, Container, Steps } from './QuoteSkeleton.styles';
7
+ import { QuoteSummarySkeleton } from './QuoteSummarySkeleton';
8
+ import { StepSkeleton } from './StepSkeleton';
9
+
10
+ export function QuoteSkeleton(props: PropTypes) {
11
+ const { type, expanded, tag = false } = props;
12
+
13
+ return (
14
+ <Container rounded={type !== 'basic'}>
15
+ <QuoteSummarySkeleton type={type} tag={tag} />
16
+ <Chains>
17
+ <Skeleton height={15} variant="rounded" />
18
+ </Chains>
19
+
20
+ {expanded && (
21
+ <Steps>
22
+ <Divider size={20} />
23
+ <StepSkeleton />
24
+ <StepSkeleton />
25
+ <StepSkeleton separator={false} />
26
+ </Steps>
27
+ )}
28
+ </Container>
29
+ );
30
+ }
@@ -0,0 +1,5 @@
1
+ export type PropTypes = {
2
+ type: 'basic' | 'list-item' | 'swap-preview';
3
+ expanded?: boolean;
4
+ tag?: boolean;
5
+ };
@@ -0,0 +1,57 @@
1
+ import { styled } from '@rango-dev/ui';
2
+
3
+ export const CostAndTag = styled('div', {
4
+ display: 'flex',
5
+ justifyContent: 'space-between',
6
+ alignItems: 'center',
7
+ height: '22px',
8
+ });
9
+
10
+ export const Cost = styled('div', {
11
+ display: 'flex',
12
+ });
13
+
14
+ export const BasicSummary = styled('div', {
15
+ padding: '$15 $0 14px $0',
16
+ });
17
+
18
+ export const Output = styled('div', {
19
+ padding: '$6 $0 $15 $0',
20
+ display: 'flex',
21
+ flexDirection: 'column',
22
+ });
23
+
24
+ export const OutputTokenInfo = styled('div', {
25
+ display: 'flex',
26
+ justifyContent: 'start',
27
+ alignItems: 'center',
28
+ paddingBottom: '$5',
29
+ });
30
+
31
+ export const QuoteSummary = styled('div', {
32
+ display: 'flex',
33
+ justifyContent: 'space-between',
34
+ alignItems: 'end',
35
+ });
36
+
37
+ export const QuoteSummarySeparator = styled('div', {
38
+ height: '$28',
39
+ marginLeft: '13px',
40
+ borderLeft: '1px solid $neutral700',
41
+ });
42
+
43
+ export const TokenAmount = styled('div', {
44
+ width: '65%',
45
+ display: 'flex',
46
+ justifyContent: 'start',
47
+ });
48
+
49
+ export const TokenAmountLabel = styled('div', {
50
+ display: 'flex',
51
+ flexDirection: 'column',
52
+ alignItems: 'start',
53
+ flexGrow: 1,
54
+ maxWidth: '148px',
55
+ });
56
+
57
+ export const SwapPreview = styled('div', { padding: '$15 $0 $15 $0' });