@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
@@ -0,0 +1,52 @@
1
+ import type { WalletType } from '@rango-dev/wallets-shared';
2
+
3
+ import { I18nManager } from '@rango-dev/ui';
4
+ import React, { useContext, useEffect, useState } from 'react';
5
+
6
+ import { AppRouter } from '../../components/AppRouter';
7
+ import { AppRoutes } from '../../components/AppRoutes';
8
+ import { WidgetEvents } from '../../components/WidgetEvents';
9
+ import { globalFont } from '../../globalStyles';
10
+ import { useLanguage } from '../../hooks/useLanguage';
11
+ import { useTheme } from '../../hooks/useTheme';
12
+ import { useAppStore } from '../../store/AppStore';
13
+ import { useNotificationStore } from '../../store/notification';
14
+ import { WidgetContext } from '../Wallets';
15
+
16
+ import { MainContainer } from './App.styles';
17
+
18
+ export function Main() {
19
+ globalFont();
20
+
21
+ const { config } = useAppStore();
22
+ const { activeTheme } = useTheme(config?.theme || {});
23
+ const { activeLanguage, changeLanguage } = useLanguage();
24
+ const [lastConnectedWalletWithNetwork, setLastConnectedWalletWithNetwork] =
25
+ useState<string>('');
26
+ const [disconnectedWallet, setDisconnectedWallet] = useState<WalletType>();
27
+ const widgetContext = useContext(WidgetContext);
28
+
29
+ useEffect(() => {
30
+ void useNotificationStore.persist.rehydrate();
31
+ widgetContext.onConnectWallet(setLastConnectedWalletWithNetwork);
32
+ }, []);
33
+ useEffect(() => {
34
+ changeLanguage(config?.language);
35
+ }, [config?.language]);
36
+
37
+ return (
38
+ <I18nManager language={activeLanguage}>
39
+ <MainContainer id="swap-container" className={activeTheme()}>
40
+ <WidgetEvents />
41
+ <AppRouter
42
+ lastConnectedWallet={lastConnectedWalletWithNetwork}
43
+ disconnectedWallet={disconnectedWallet}
44
+ clearDisconnectedWallet={() => {
45
+ setDisconnectedWallet(undefined);
46
+ }}>
47
+ <AppRoutes />
48
+ </AppRouter>
49
+ </MainContainer>
50
+ </I18nManager>
51
+ );
52
+ }
@@ -0,0 +1 @@
1
+ export { Main } from './App';
@@ -1,8 +1,24 @@
1
1
  import { styled } from '@rango-dev/ui';
2
2
 
3
+ export const PositionTopAlerts = styled('div', {
4
+ paddingBottom: '$10',
5
+ });
6
+
3
7
  export const QuoteContainer = styled('div', {
4
8
  width: '100%',
5
- paddingTop: '$2',
9
+ '& .position-top__skeleton': {
10
+ paddingTop: '$10',
11
+ },
12
+ });
13
+
14
+ export const SkeletonContainer = styled('div', {
15
+ variants: {
16
+ paddingTop: {
17
+ true: {
18
+ paddingTop: '$10',
19
+ },
20
+ },
21
+ },
6
22
  });
7
23
 
8
24
  export const FooterStepAlarm = styled('div', {
@@ -5,16 +5,14 @@ import React from 'react';
5
5
 
6
6
  import { Quote, QuoteSkeleton } from '../../components/Quote';
7
7
  import { QuoteWarningsAndErrors } from '../../components/QuoteWarningsAndErrors';
8
- import {
9
- TOKEN_AMOUNT_MAX_DECIMALS,
10
- TOKEN_AMOUNT_MIN_DECIMALS,
11
- USD_VALUE_MAX_DECIMALS,
12
- USD_VALUE_MIN_DECIMALS,
13
- } from '../../constants/routing';
14
8
  import { useQuoteStore } from '../../store/quote';
15
- import { numberToString } from '../../utils/numbers';
9
+ import { QuoteErrorType } from '../../types';
16
10
 
17
- import { QuoteContainer } from './QuoteInfo.styles';
11
+ import {
12
+ PositionTopAlerts,
13
+ QuoteContainer,
14
+ SkeletonContainer,
15
+ } from './QuoteInfo.styles';
18
16
 
19
17
  export function QuoteInfo(props: PropTypes) {
20
18
  const {
@@ -28,19 +26,46 @@ export function QuoteInfo(props: PropTypes) {
28
26
  onOpenWarningModal,
29
27
  onCloseWarningModal,
30
28
  onConfirmWarningModal,
29
+ onChangeSettings,
31
30
  expanded = false,
31
+ alertPosition = 'bottom',
32
32
  } = props;
33
33
  const { inputAmount, inputUsdValue, outputUsdValue, outputAmount } =
34
34
  useQuoteStore();
35
35
 
36
- const showQuote = quote && quote.result && !loading;
36
+ const noResult =
37
+ error &&
38
+ (error.type === QuoteErrorType.NO_RESULT ||
39
+ error.type === QuoteErrorType.REQUEST_FAILED);
40
+
41
+ const showQuote = !noResult && quote && quote.result && !loading;
42
+
43
+ const quoteWarningsAndErrors = (warning || error) && (
44
+ <QuoteWarningsAndErrors
45
+ warning={warning}
46
+ error={error}
47
+ loading={loading}
48
+ refetchQuote={refetchQuote}
49
+ showWarningModal={showWarningModal}
50
+ onOpenWarningModal={onOpenWarningModal}
51
+ onCloseWarningModal={onCloseWarningModal}
52
+ onConfirmWarningModal={onConfirmWarningModal}
53
+ onChangeSettings={onChangeSettings}
54
+ />
55
+ );
37
56
  return (
38
57
  <>
39
58
  {loading && (
40
59
  <QuoteContainer>
41
- <QuoteSkeleton type={type} expanded={expanded} />
60
+ <SkeletonContainer paddingTop={alertPosition === 'top'}>
61
+ <QuoteSkeleton type={type} expanded={expanded} />
62
+ </SkeletonContainer>
42
63
  </QuoteContainer>
43
64
  )}
65
+
66
+ {alertPosition === 'top' && (
67
+ <PositionTopAlerts>{quoteWarningsAndErrors}</PositionTopAlerts>
68
+ )}
44
69
  {showQuote ? (
45
70
  <QuoteContainer>
46
71
  <Quote
@@ -51,46 +76,22 @@ export function QuoteInfo(props: PropTypes) {
51
76
  expanded={expanded}
52
77
  recommended={true}
53
78
  input={{
54
- value: numberToString(
55
- inputAmount,
56
- TOKEN_AMOUNT_MIN_DECIMALS,
57
- TOKEN_AMOUNT_MAX_DECIMALS
58
- ),
59
- usdValue: numberToString(
60
- inputUsdValue,
61
- USD_VALUE_MIN_DECIMALS,
62
- USD_VALUE_MAX_DECIMALS
63
- ),
79
+ value: inputAmount,
80
+ usdValue: inputUsdValue?.toString() ?? '',
64
81
  }}
65
82
  output={{
66
- value: numberToString(
67
- outputAmount,
68
- TOKEN_AMOUNT_MIN_DECIMALS,
69
- TOKEN_AMOUNT_MAX_DECIMALS
70
- ),
71
- usdValue: numberToString(
72
- outputUsdValue,
73
- USD_VALUE_MIN_DECIMALS,
74
- USD_VALUE_MAX_DECIMALS
75
- ),
83
+ value: outputAmount?.toString() ?? '',
84
+ usdValue: outputUsdValue?.toString() ?? '',
76
85
  }}
77
86
  />
78
87
  </QuoteContainer>
79
88
  ) : null}
80
89
 
81
- {!warning && !error && <Divider size={16} />}
82
-
83
- {(warning || error) && (
84
- <QuoteWarningsAndErrors
85
- warning={warning}
86
- error={error}
87
- loading={loading}
88
- refetchQuote={refetchQuote}
89
- showWarningModal={showWarningModal}
90
- onOpenWarningModal={onOpenWarningModal}
91
- onCloseWarningModal={onCloseWarningModal}
92
- onConfirmWarningModal={onConfirmWarningModal}
93
- />
90
+ {alertPosition === 'bottom' && (
91
+ <>
92
+ {!warning && !error && <Divider size={16} />}
93
+ {quoteWarningsAndErrors}
94
+ </>
94
95
  )}
95
96
  </>
96
97
  );
@@ -8,10 +8,13 @@ export type PropTypes = {
8
8
  loading: boolean;
9
9
  error: QuoteError | null;
10
10
  warning: QuoteWarning | null;
11
+ autoScrollOnExpanding?: boolean;
11
12
  expanded?: boolean;
13
+ alertPosition?: 'top' | 'bottom';
12
14
  refetchQuote: () => void;
13
15
  showWarningModal: boolean;
14
16
  onOpenWarningModal: () => void;
15
17
  onCloseWarningModal: () => void;
16
18
  onConfirmWarningModal: () => void;
19
+ onChangeSettings: () => void;
17
20
  };
@@ -1,25 +1,25 @@
1
- import type { WidgetConfig } from './types';
2
- import type { ProvidersOptions } from './utils/providers';
1
+ import type {
2
+ OnConnectHandler,
3
+ PropTypes,
4
+ WidgetContextInterface,
5
+ } from './Wallets.types';
6
+ import type { ProvidersOptions } from '../../utils/providers';
3
7
  import type { EventHandler } from '@rango-dev/wallets-react';
4
8
  import type { Network } from '@rango-dev/wallets-shared';
5
9
  import type { PropsWithChildren } from 'react';
6
10
 
7
11
  import { Events, Provider } from '@rango-dev/wallets-react';
8
12
  import { isEvmBlockchain } from 'rango-sdk';
9
- import React, { createContext, useRef } from 'react';
13
+ import React, { createContext, useEffect, useRef } from 'react';
10
14
 
11
- import { useWalletProviders } from './hooks/useWalletProviders';
12
- import { useMetaStore } from './store/meta';
13
- import { useWalletsStore } from './store/wallets';
15
+ import { useSyncStoresWithConfig } from '../../hooks/useSyncStoresWithConfig';
16
+ import { useWalletProviders } from '../../hooks/useWalletProviders';
17
+ import { AppStoreProvider, useAppStore } from '../../store/AppStore';
18
+ import { useWalletsStore } from '../../store/wallets';
14
19
  import {
15
20
  prepareAccountsForWalletStore,
16
21
  walletAndSupportedChainsNames,
17
- } from './utils/wallets';
18
-
19
- type OnConnectHandler = (key: string) => void;
20
- interface WidgetContextInterface {
21
- onConnectWallet(handler: OnConnectHandler): void;
22
- }
22
+ } from '../../utils/wallets';
23
23
 
24
24
  export const WidgetContext = createContext<WidgetContextInterface>({
25
25
  onConnectWallet: () => {
@@ -27,41 +27,46 @@ export const WidgetContext = createContext<WidgetContextInterface>({
27
27
  },
28
28
  });
29
29
 
30
- export function WidgetWallets(
31
- props: PropsWithChildren<{
32
- providers: WidgetConfig['wallets'];
33
- options?: ProvidersOptions;
34
- onUpdateState?: EventHandler;
35
- }>
36
- ) {
37
- const { blockchains } = useMetaStore.use.meta();
38
- const { providers } = useWalletProviders(props.providers, props?.options);
39
- const disconnectWallet = useWalletsStore.use.disconnectWallet();
40
- const connectWallet = useWalletsStore.use.connectWallet();
30
+ function Main(props: PropsWithChildren<PropTypes>) {
31
+ const { updateConfig, updateSettings, fetch: fetchMeta } = useAppStore();
32
+ const blockchains = useAppStore().blockchains();
33
+ const tokens = useAppStore().tokens();
34
+ const walletOptions: ProvidersOptions = {
35
+ walletConnectProjectId: props.config?.walletConnectProjectId,
36
+ };
37
+ const { providers } = useWalletProviders(props.config.wallets, walletOptions);
38
+ const { connectWallet, disconnectWallet } = useWalletsStore();
41
39
  const onConnectWalletHandler = useRef<OnConnectHandler>();
40
+ useSyncStoresWithConfig();
41
+
42
+ useEffect(() => {
43
+ void fetchMeta().catch(console.log);
44
+ }, []);
45
+
46
+ useEffect(() => {
47
+ if (props.config) {
48
+ updateConfig(props.config);
49
+ updateSettings(props.config);
50
+ }
51
+ }, [props.config]);
42
52
 
43
53
  const evmBasedChainNames = blockchains
44
54
  .filter(isEvmBlockchain)
45
55
  .map((chain) => chain.name);
46
56
 
47
- const onUpdateState: EventHandler = (
48
- type,
49
- event,
50
- value,
51
- state,
52
- supportedBlockchains
53
- ) => {
57
+ const onUpdateState: EventHandler = (type, event, value, state, meta) => {
54
58
  if (event === Events.ACCOUNTS) {
55
59
  if (value) {
56
60
  const supportedChainNames: Network[] | null =
57
- walletAndSupportedChainsNames(supportedBlockchains);
61
+ walletAndSupportedChainsNames(meta.supportedBlockchains);
58
62
  const data = prepareAccountsForWalletStore(
59
63
  type,
60
64
  value,
61
65
  evmBasedChainNames,
62
- supportedChainNames
66
+ supportedChainNames,
67
+ meta.isContractWallet
63
68
  );
64
- connectWallet(data);
69
+ connectWallet(data, tokens);
65
70
  } else {
66
71
  disconnectWallet(type);
67
72
  }
@@ -91,7 +96,7 @@ export function WidgetWallets(
91
96
 
92
97
  // propagate updates for Dapps using external wallets
93
98
  if (props.onUpdateState) {
94
- props.onUpdateState(type, event, value, state, supportedBlockchains);
99
+ props.onUpdateState(type, event, value, state, meta);
95
100
  }
96
101
  };
97
102
  return (
@@ -112,3 +117,12 @@ export function WidgetWallets(
112
117
  </WidgetContext.Provider>
113
118
  );
114
119
  }
120
+
121
+ export function WidgetWallets(props: PropsWithChildren<PropTypes>) {
122
+ const { config, ...otherProps } = props;
123
+ return (
124
+ <AppStoreProvider config={config}>
125
+ <Main {...otherProps} config={config} />
126
+ </AppStoreProvider>
127
+ );
128
+ }
@@ -0,0 +1,12 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { EventHandler } from '@rango-dev/wallets-react';
3
+
4
+ export type OnConnectHandler = (key: string) => void;
5
+ export interface WidgetContextInterface {
6
+ onConnectWallet(handler: OnConnectHandler): void;
7
+ }
8
+
9
+ export interface PropTypes {
10
+ onUpdateState?: EventHandler;
11
+ config: WidgetConfig;
12
+ }
@@ -0,0 +1 @@
1
+ export { WidgetWallets, WidgetContext } from './Wallets';
@@ -0,0 +1,19 @@
1
+ import type { WidgetProps } from './Widget.types';
2
+ import type { PropsWithChildren } from 'react';
3
+
4
+ import React from 'react';
5
+
6
+ import { DEFAULT_CONFIG } from '../../store/slices/config';
7
+ import { Main } from '../App';
8
+ import { WidgetProvider } from '../WidgetProvider';
9
+
10
+ export function Widget(props: PropsWithChildren<WidgetProps>) {
11
+ if (!props.config?.externalWallets) {
12
+ return (
13
+ <WidgetProvider config={props.config ?? DEFAULT_CONFIG}>
14
+ <Main />
15
+ </WidgetProvider>
16
+ );
17
+ }
18
+ return <Main />;
19
+ }
@@ -0,0 +1,5 @@
1
+ import type { WidgetConfig } from '../../types';
2
+
3
+ export type WidgetProps = {
4
+ config?: WidgetConfig;
5
+ };
@@ -0,0 +1,2 @@
1
+ export { Widget } from './Widget';
2
+ export type { WidgetProps } from './Widget.types';
@@ -0,0 +1,64 @@
1
+ import type { Meta } from '../../store/quote';
2
+ import type { Manager } from '@rango-dev/queue-manager-core';
3
+ import type { PendingSwap } from 'rango-types/lib';
4
+
5
+ import {
6
+ cancelSwap,
7
+ getCurrentBlockchainOfOrNull,
8
+ getCurrentStep,
9
+ getRelatedWalletOrNull,
10
+ } from '@rango-dev/queue-manager-rango-preset';
11
+
12
+ import { getPendingSwaps } from '../../utils/queue';
13
+
14
+ interface WidgetHistoryActions {
15
+ retrySwap: (pendingSwap: PendingSwap, meta: Meta) => void;
16
+ }
17
+
18
+ export class WidgetHistory {
19
+ private manager: Manager | undefined;
20
+ private actions: WidgetHistoryActions;
21
+
22
+ constructor(manager: Manager | undefined, actions: WidgetHistoryActions) {
23
+ this.manager = manager;
24
+ this.actions = actions;
25
+ }
26
+
27
+ public getAllSwaps() {
28
+ return getPendingSwaps(this.manager);
29
+ }
30
+
31
+ public getCurrentStep(swap: PendingSwap) {
32
+ return this.getCurrentStepInfo(swap).step;
33
+ }
34
+
35
+ public getCurrentStepWallet(swap: PendingSwap) {
36
+ return this.getCurrentStepInfo(swap).wallet;
37
+ }
38
+
39
+ public getCurrentStepNetwork(swap: PendingSwap) {
40
+ return this.getCurrentStepInfo(swap).network;
41
+ }
42
+
43
+ public retry(swap: PendingSwap, meta: Meta) {
44
+ return this.actions.retrySwap(swap, meta);
45
+ }
46
+
47
+ public cancel(id: string) {
48
+ const queue = this.manager?.get(id);
49
+ if (queue) {
50
+ cancelSwap(queue);
51
+ }
52
+ }
53
+
54
+ private getCurrentStepInfo(swap: PendingSwap) {
55
+ const currentStep = getCurrentStep(swap);
56
+ return {
57
+ step: currentStep,
58
+ wallet: currentStep ? getRelatedWalletOrNull(swap, currentStep) : null,
59
+ network: currentStep
60
+ ? getCurrentBlockchainOfOrNull(swap, currentStep)
61
+ : null,
62
+ };
63
+ }
64
+ }
@@ -0,0 +1,62 @@
1
+ import type { WidgetInfoContextInterface } from './WidgetInfo.types';
2
+
3
+ import { useManager } from '@rango-dev/queue-manager-react';
4
+ import React, { createContext, useContext } from 'react';
5
+
6
+ import { useAppStore } from '../../store/AppStore';
7
+ import { useQuoteStore } from '../../store/quote';
8
+ import { useWalletsStore } from '../../store/wallets';
9
+ import { calculateWalletUsdValue } from '../../utils/wallets';
10
+
11
+ import { WidgetHistory } from './WidgetInfo.helpers';
12
+
13
+ export const WidgetInfoContext = createContext<
14
+ WidgetInfoContextInterface | undefined
15
+ >(undefined);
16
+
17
+ export function WidgetInfo(props: React.PropsWithChildren) {
18
+ const { manager } = useManager();
19
+ const retrySwap = useQuoteStore.use.retry();
20
+ const history = new WidgetHistory(manager, { retrySwap });
21
+ const details = useWalletsStore.use.connectedWallets();
22
+ const isLoading = useWalletsStore.use.loading();
23
+ const totalBalance = calculateWalletUsdValue(details);
24
+ const refetch = useWalletsStore.use.getWalletsDetails();
25
+ const blockchains = useAppStore().blockchains();
26
+ const tokens = useAppStore().tokens();
27
+ const swappers = useAppStore().swappers();
28
+ const loadingStatus = useAppStore().fetchStatus;
29
+
30
+ // eslint-disable-next-line react/jsx-no-constructed-context-values
31
+ const value = {
32
+ history,
33
+ wallets: {
34
+ isLoading,
35
+ details,
36
+ totalBalance,
37
+ refetch,
38
+ },
39
+ meta: {
40
+ blockchains,
41
+ tokens,
42
+ swappers,
43
+ loadingStatus,
44
+ },
45
+ };
46
+
47
+ return (
48
+ <WidgetInfoContext.Provider value={value}>
49
+ {props.children}
50
+ </WidgetInfoContext.Provider>
51
+ );
52
+ }
53
+
54
+ export function useWidget(): WidgetInfoContextInterface {
55
+ const context = useContext(WidgetInfoContext);
56
+ if (!context) {
57
+ throw new Error(
58
+ 'useWidget can only be used within the WidgetProvider component'
59
+ );
60
+ }
61
+ return context;
62
+ }
@@ -0,0 +1,21 @@
1
+ import type { WidgetHistory } from './WidgetInfo.helpers';
2
+ import type { FetchStatus } from '../../store/slices/data';
3
+ import type { ConnectedWallet } from '../../store/wallets';
4
+ import type { Wallet } from '../../types';
5
+ import type { BlockchainMeta, SwapperMeta, Token } from 'rango-sdk';
6
+
7
+ export interface WidgetInfoContextInterface {
8
+ history: WidgetHistory;
9
+ wallets: {
10
+ details: ConnectedWallet[];
11
+ totalBalance: string;
12
+ isLoading: boolean;
13
+ refetch: (accounts: Wallet[], tokens: Token[]) => void;
14
+ };
15
+ meta: {
16
+ blockchains: BlockchainMeta[];
17
+ tokens: Token[];
18
+ swappers: SwapperMeta[];
19
+ loadingStatus: FetchStatus;
20
+ };
21
+ }
@@ -0,0 +1 @@
1
+ export { WidgetInfo, useWidget } from './WidgetInfo';
@@ -0,0 +1,28 @@
1
+ import type { PropTypes } from './WidgetProvider.types';
2
+ import type { PropsWithChildren } from 'react';
3
+
4
+ import React, { useMemo } from 'react';
5
+
6
+ import { DEFAULT_BASE_URL, RANGO_PUBLIC_API_KEY } from '../../constants';
7
+ import QueueManager from '../../QueueManager';
8
+ import { initConfig } from '../../utils/configs';
9
+ import { WidgetWallets } from '../Wallets';
10
+ import { WidgetInfo } from '../WidgetInfo';
11
+
12
+ export function WidgetProvider(props: PropsWithChildren<PropTypes>) {
13
+ const { onUpdateState, config } = props;
14
+
15
+ useMemo(() => {
16
+ initConfig({
17
+ API_KEY: config?.apiKey || RANGO_PUBLIC_API_KEY,
18
+ BASE_URL: config?.apiUrl || DEFAULT_BASE_URL,
19
+ });
20
+ }, [config]);
21
+ return (
22
+ <WidgetWallets config={config} onUpdateState={onUpdateState}>
23
+ <QueueManager apiKey={config.apiKey}>
24
+ <WidgetInfo>{props.children}</WidgetInfo>
25
+ </QueueManager>
26
+ </WidgetWallets>
27
+ );
28
+ }
@@ -0,0 +1,7 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { EventHandler } from '@rango-dev/wallets-react';
3
+
4
+ export type PropTypes = {
5
+ onUpdateState?: EventHandler;
6
+ config: WidgetConfig;
7
+ };
@@ -0,0 +1 @@
1
+ export { WidgetProvider } from './WidgetProvider';