@rango-dev/widget-embedded 0.12.1-next.9 → 0.13.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 (279) hide show
  1. package/CHANGELOG.md +55 -0
  2. package/dist/Widget.d.ts.map +1 -1
  3. package/dist/components/AppRouter.d.ts +5 -2
  4. package/dist/components/AppRouter.d.ts.map +1 -1
  5. package/dist/components/AppRoutes.d.ts.map +1 -1
  6. package/dist/components/BlockchainList/BlockchainList.d.ts.map +1 -1
  7. package/dist/components/BlockchainList/BlockchainList.helpers.d.ts.map +1 -1
  8. package/dist/components/BlockchainList/BlockchainList.styles.d.ts +14 -4
  9. package/dist/components/BlockchainList/BlockchainList.styles.d.ts.map +1 -1
  10. package/dist/components/BlockchainsSection/BlockchainsSection.d.ts.map +1 -1
  11. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +6 -1
  12. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  13. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts +1 -1
  14. package/dist/components/ConfirmWalletsModal/ConfirmWallets.helpers.d.ts.map +1 -1
  15. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +94 -17
  16. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  17. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  18. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  19. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts +18 -3
  20. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts.map +1 -1
  21. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +25 -284
  22. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  23. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts +1 -0
  24. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts.map +1 -1
  25. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  26. package/dist/components/HeaderButtons/UnreadNotificationsBadge.d.ts.map +1 -1
  27. package/dist/components/HeaderButtons/WalletButton.d.ts.map +1 -1
  28. package/dist/components/Layout/Layout.d.ts.map +1 -1
  29. package/dist/components/Layout/Layout.styles.d.ts +18 -3
  30. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  31. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts +6 -1
  32. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts.map +1 -1
  33. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts +4 -0
  34. package/dist/components/LoadingSwapDetails/LoadingSwapDetailStep.d.ts.map +1 -0
  35. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts +3 -0
  36. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.d.ts.map +1 -0
  37. package/dist/components/{SelectableCategoryList/SelectableCategoryList.styles.d.ts → LoadingSwapDetails/LoadingSwapDetails.styles.d.ts} +21 -6
  38. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -0
  39. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts +4 -0
  40. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.types.d.ts.map +1 -0
  41. package/dist/components/LoadingSwapDetails/index.d.ts +2 -0
  42. package/dist/components/LoadingSwapDetails/index.d.ts.map +1 -0
  43. package/dist/components/NoRoutes/NoRoutes.helper.d.ts.map +1 -1
  44. package/dist/components/NoRoutes/NoRoutes.styles.d.ts +18 -3
  45. package/dist/components/NoRoutes/NoRoutes.styles.d.ts.map +1 -1
  46. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  47. package/dist/components/NotificationContent/NotificationContent.styles.d.ts +24 -4
  48. package/dist/components/NotificationContent/NotificationContent.styles.d.ts.map +1 -1
  49. package/dist/components/RouteErrors/RouteErrors.d.ts.map +1 -1
  50. package/dist/components/RouteErrors/RouteErrors.styles.d.ts +24 -4
  51. package/dist/components/RouteErrors/RouteErrors.styles.d.ts.map +1 -1
  52. package/dist/components/RouteErrors/RouteErrors.types.d.ts +3 -1
  53. package/dist/components/RouteErrors/RouteErrors.types.d.ts.map +1 -1
  54. package/dist/components/RouteErrors/RouteErrorsModal.d.ts.map +1 -1
  55. package/dist/components/SearchInput/SearchInput.styles.d.ts +6 -1
  56. package/dist/components/SearchInput/SearchInput.styles.d.ts.map +1 -1
  57. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts +23 -151
  58. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts.map +1 -1
  59. package/dist/components/SettingsContainer/index.d.ts +1 -1
  60. package/dist/components/SettingsContainer/index.d.ts.map +1 -1
  61. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  62. package/dist/components/Slippage/Slippage.styles.d.ts +24 -4
  63. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  64. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  65. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  66. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +2 -9
  67. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  68. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +35 -153
  69. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  70. package/dist/components/SwapDetails/SwapDetails.types.d.ts +1 -1
  71. package/dist/components/SwapDetails/SwapDetails.types.d.ts.map +1 -1
  72. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts +6 -1
  73. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts.map +1 -1
  74. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.types.d.ts +2 -1
  75. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.types.d.ts.map +1 -1
  76. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts +1 -1
  77. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  78. package/dist/components/SwapDetailsModal/SwapDetailsModal.d.ts.map +1 -1
  79. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts +6 -1
  80. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts.map +1 -1
  81. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +2 -1
  82. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  83. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  84. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +24 -4
  85. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  86. package/dist/components/SwitchFromAndTo.d.ts.map +1 -1
  87. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  88. package/dist/components/TokenList/TokenList.helpers.d.ts.map +1 -1
  89. package/dist/components/TokenList/TokenList.styles.d.ts +207 -9
  90. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  91. package/dist/components/TokenList/TokenList.types.d.ts +1 -1
  92. package/dist/components/TokenList/TokenList.types.d.ts.map +1 -1
  93. package/dist/components/UpdateUrl.d.ts +6 -1
  94. package/dist/components/UpdateUrl.d.ts.map +1 -1
  95. package/dist/components/WalletModal/WalletModalContent.styles.d.ts +24 -4
  96. package/dist/components/WalletModal/WalletModalContent.styles.d.ts.map +1 -1
  97. package/dist/components/WidgetEvents.d.ts.map +1 -1
  98. package/dist/constants/errors.d.ts +2 -2
  99. package/dist/constants/routing.d.ts +12 -2
  100. package/dist/constants/routing.d.ts.map +1 -1
  101. package/dist/constants.d.ts +2 -0
  102. package/dist/constants.d.ts.map +1 -0
  103. package/dist/globalStyles.d.ts +1 -1
  104. package/dist/globalStyles.d.ts.map +1 -1
  105. package/dist/hooks/useNavigateBack.d.ts.map +1 -1
  106. package/dist/hooks/usePrepareBlockchainList.d.ts +18 -0
  107. package/dist/hooks/usePrepareBlockchainList.d.ts.map +1 -0
  108. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  109. package/dist/hooks/useSyncStoresWithConfig.d.ts +3 -0
  110. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -0
  111. package/dist/hooks/useTheme.d.ts +3 -6
  112. package/dist/hooks/useTheme.d.ts.map +1 -1
  113. package/dist/hooks/useWalletProviders.d.ts +3 -3
  114. package/dist/hooks/useWalletProviders.d.ts.map +1 -1
  115. package/dist/index.js +1 -1
  116. package/dist/index.js.map +4 -4
  117. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  118. package/dist/pages/Home.d.ts.map +1 -1
  119. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  120. package/dist/pages/SelectBlockchainPage.d.ts +1 -2
  121. package/dist/pages/SelectBlockchainPage.d.ts.map +1 -1
  122. package/dist/pages/SelectSwapItemsPage.d.ts +1 -5
  123. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  124. package/dist/pages/SettingsPage.d.ts.map +1 -1
  125. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  126. package/dist/pages/WalletsPage.d.ts.map +1 -1
  127. package/dist/services/httpService.d.ts +0 -1
  128. package/dist/services/httpService.d.ts.map +1 -1
  129. package/dist/store/app.d.ts +26 -0
  130. package/dist/store/app.d.ts.map +1 -0
  131. package/dist/store/bestRoute.d.ts +4 -8
  132. package/dist/store/bestRoute.d.ts.map +1 -1
  133. package/dist/store/meta.d.ts +0 -2
  134. package/dist/store/meta.d.ts.map +1 -1
  135. package/dist/store/slices/config.d.ts +8 -0
  136. package/dist/store/slices/config.d.ts.map +1 -0
  137. package/dist/store/slices/data.d.ts +26 -0
  138. package/dist/store/slices/data.d.ts.map +1 -0
  139. package/dist/store/wallets.d.ts.map +1 -1
  140. package/dist/types/config.d.ts +3 -0
  141. package/dist/types/config.d.ts.map +1 -1
  142. package/dist/utils/common.d.ts +1 -0
  143. package/dist/utils/common.d.ts.map +1 -1
  144. package/dist/utils/configs.d.ts +5 -0
  145. package/dist/utils/configs.d.ts.map +1 -1
  146. package/dist/utils/meta.d.ts +1 -0
  147. package/dist/utils/meta.d.ts.map +1 -1
  148. package/dist/utils/numbers.d.ts +3 -1
  149. package/dist/utils/numbers.d.ts.map +1 -1
  150. package/dist/utils/routing.d.ts +6 -3
  151. package/dist/utils/routing.d.ts.map +1 -1
  152. package/dist/utils/settings.d.ts +1 -0
  153. package/dist/utils/settings.d.ts.map +1 -1
  154. package/dist/utils/swap.d.ts +1 -1
  155. package/dist/utils/swap.d.ts.map +1 -1
  156. package/dist/utils/time.d.ts +2 -2
  157. package/dist/utils/time.d.ts.map +1 -1
  158. package/dist/utils/wallets.d.ts +1 -1
  159. package/dist/utils/wallets.d.ts.map +1 -1
  160. package/package.json +8 -8
  161. package/readme.md +3 -1
  162. package/src/Widget.tsx +22 -3
  163. package/src/components/AppRouter.tsx +38 -7
  164. package/src/components/AppRoutes.tsx +4 -28
  165. package/src/components/BlockchainList/BlockchainList.helpers.ts +1 -1
  166. package/src/components/BlockchainList/BlockchainList.styles.ts +6 -5
  167. package/src/components/BlockchainList/BlockchainList.tsx +6 -9
  168. package/src/components/BlockchainsSection/BlockchainsSection.tsx +29 -42
  169. package/src/components/ConfirmWalletsModal/ConfirmWallets.helpers.ts +33 -7
  170. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +48 -7
  171. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +59 -16
  172. package/src/components/ConfirmWalletsModal/WalletList.tsx +66 -22
  173. package/src/components/HeaderButtons/HeaderButtons.styles.ts +2 -2
  174. package/src/components/HeaderButtons/HeaderButtons.types.ts +1 -0
  175. package/src/components/HeaderButtons/HomeButtons.tsx +18 -5
  176. package/src/components/HeaderButtons/UnreadNotificationsBadge.tsx +1 -2
  177. package/src/components/HeaderButtons/WalletButton.tsx +4 -1
  178. package/src/components/Layout/Layout.styles.ts +5 -3
  179. package/src/components/Layout/Layout.tsx +5 -20
  180. package/src/components/LoadingSwapDetails/LoadingSwapDetailStep.tsx +41 -0
  181. package/src/components/LoadingSwapDetails/LoadingSwapDetails.styles.ts +78 -0
  182. package/src/components/LoadingSwapDetails/LoadingSwapDetails.tsx +53 -0
  183. package/src/components/LoadingSwapDetails/LoadingSwapDetails.types.ts +3 -0
  184. package/src/components/LoadingSwapDetails/index.ts +1 -0
  185. package/src/components/NoRoutes/NoRoutes.helper.ts +4 -2
  186. package/src/components/NotificationContent/NotificationContent.tsx +3 -7
  187. package/src/components/RouteErrors/RouteErrors.styles.ts +2 -1
  188. package/src/components/RouteErrors/RouteErrors.tsx +37 -26
  189. package/src/components/RouteErrors/RouteErrors.types.ts +3 -1
  190. package/src/components/RouteErrors/RouteErrorsModal.tsx +42 -14
  191. package/src/components/SettingsContainer/SettingsContainer.style.ts +2 -7
  192. package/src/components/SettingsContainer/index.ts +0 -1
  193. package/src/components/Slippage/Slippage.tsx +6 -2
  194. package/src/components/Slippage/SlippageTooltipContent.tsx +1 -1
  195. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +52 -16
  196. package/src/components/SwapDetails/SwapDetails.helpers.tsx +19 -33
  197. package/src/components/SwapDetails/SwapDetails.styles.ts +10 -14
  198. package/src/components/SwapDetails/SwapDetails.tsx +143 -101
  199. package/src/components/SwapDetails/SwapDetails.types.ts +1 -1
  200. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.types.ts +5 -4
  201. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +6 -7
  202. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +3 -0
  203. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +2 -1
  204. package/src/components/SwapsGroup/SwapsGroup.tsx +3 -2
  205. package/src/components/SwitchFromAndTo.tsx +1 -35
  206. package/src/components/TokenList/TokenList.helpers.ts +6 -8
  207. package/src/components/TokenList/TokenList.styles.ts +7 -1
  208. package/src/components/TokenList/TokenList.tsx +29 -23
  209. package/src/components/TokenList/TokenList.types.ts +1 -1
  210. package/src/components/UpdateUrl.tsx +7 -1
  211. package/src/components/WidgetEvents.tsx +9 -3
  212. package/src/constants/errors.ts +2 -2
  213. package/src/constants/routing.ts +17 -2
  214. package/src/constants.ts +1 -0
  215. package/src/globalStyles.ts +1 -4
  216. package/src/hooks/useFetchBestRoute.ts +2 -2
  217. package/src/hooks/useNavigateBack.ts +10 -0
  218. package/src/hooks/usePrepareBlockchainList.ts +125 -0
  219. package/src/hooks/useSwapInput.ts +17 -3
  220. package/src/hooks/useSyncStoresWithConfig.ts +102 -0
  221. package/src/hooks/useTheme.ts +37 -75
  222. package/src/hooks/useWalletProviders.ts +7 -7
  223. package/src/pages/ConfirmSwapPage.tsx +65 -36
  224. package/src/pages/HistoryPage.tsx +2 -2
  225. package/src/pages/Home.tsx +114 -50
  226. package/src/pages/LanguagePage.tsx +1 -1
  227. package/src/pages/LiquiditySourcePage.tsx +22 -18
  228. package/src/pages/SelectBlockchainPage.tsx +19 -20
  229. package/src/pages/SelectSwapItemsPage.tsx +66 -88
  230. package/src/pages/SettingsPage.tsx +42 -15
  231. package/src/pages/SwapDetailsPage.tsx +9 -2
  232. package/src/pages/ThemePage.tsx +1 -1
  233. package/src/pages/WalletsPage.tsx +11 -5
  234. package/src/services/httpService.ts +4 -5
  235. package/src/store/app.ts +15 -0
  236. package/src/store/bestRoute.ts +45 -71
  237. package/src/store/meta.ts +11 -29
  238. package/src/store/slices/config.ts +26 -0
  239. package/src/store/slices/data.ts +203 -0
  240. package/src/store/wallets.ts +0 -27
  241. package/src/types/config.ts +3 -0
  242. package/src/utils/common.ts +3 -0
  243. package/src/utils/configs.ts +8 -2
  244. package/src/utils/meta.ts +7 -0
  245. package/src/utils/numbers.ts +3 -2
  246. package/src/utils/routing.ts +76 -14
  247. package/src/utils/settings.ts +15 -0
  248. package/src/utils/swap.ts +82 -26
  249. package/src/utils/time.ts +69 -36
  250. package/src/utils/wallets.ts +49 -29
  251. package/dist/components/BlockchainsChip/BlockchainsChip.d.ts +0 -5
  252. package/dist/components/BlockchainsChip/BlockchainsChip.d.ts.map +0 -1
  253. package/dist/components/BlockchainsChip/BlockchainsChip.styles.d.ts +0 -151
  254. package/dist/components/BlockchainsChip/BlockchainsChip.styles.d.ts.map +0 -1
  255. package/dist/components/BlockchainsChip/BlockchainsChip.types.d.ts +0 -6
  256. package/dist/components/BlockchainsChip/BlockchainsChip.types.d.ts.map +0 -1
  257. package/dist/components/BlockchainsChip/index.d.ts +0 -2
  258. package/dist/components/BlockchainsChip/index.d.ts.map +0 -1
  259. package/dist/components/BlockchainsSection/BlockchainSection.helpers.d.ts +0 -3
  260. package/dist/components/BlockchainsSection/BlockchainSection.helpers.d.ts.map +0 -1
  261. package/dist/components/SelectableCategoryList/SelectableCategoryList.d.ts +0 -4
  262. package/dist/components/SelectableCategoryList/SelectableCategoryList.d.ts.map +0 -1
  263. package/dist/components/SelectableCategoryList/SelectableCategoryList.helpers.d.ts +0 -4
  264. package/dist/components/SelectableCategoryList/SelectableCategoryList.helpers.d.ts.map +0 -1
  265. package/dist/components/SelectableCategoryList/SelectableCategoryList.styles.d.ts.map +0 -1
  266. package/dist/components/SelectableCategoryList/SelectableCategoryList.types.d.ts +0 -12
  267. package/dist/components/SelectableCategoryList/SelectableCategoryList.types.d.ts.map +0 -1
  268. package/dist/components/SelectableCategoryList/index.d.ts +0 -2
  269. package/dist/components/SelectableCategoryList/index.d.ts.map +0 -1
  270. package/src/components/BlockchainsChip/BlockchainsChip.styles.ts +0 -30
  271. package/src/components/BlockchainsChip/BlockchainsChip.tsx +0 -15
  272. package/src/components/BlockchainsChip/BlockchainsChip.types.ts +0 -4
  273. package/src/components/BlockchainsChip/index.ts +0 -1
  274. package/src/components/BlockchainsSection/BlockchainSection.helpers.ts +0 -20
  275. package/src/components/SelectableCategoryList/SelectableCategoryList.helpers.ts +0 -20
  276. package/src/components/SelectableCategoryList/SelectableCategoryList.styles.ts +0 -21
  277. package/src/components/SelectableCategoryList/SelectableCategoryList.tsx +0 -79
  278. package/src/components/SelectableCategoryList/SelectableCategoryList.types.ts +0 -12
  279. package/src/components/SelectableCategoryList/index.ts +0 -1
@@ -2,10 +2,12 @@ import { i18n } from '@lingui/core';
2
2
  import {
3
3
  ChevronRightIcon,
4
4
  Divider,
5
+ InfoIcon,
5
6
  List,
6
7
  ListItemButton,
7
8
  Skeleton,
8
9
  Switch,
10
+ Tooltip,
9
11
  Typography,
10
12
  } from '@rango-dev/ui';
11
13
  import React from 'react';
@@ -14,10 +16,12 @@ import { useNavigate } from 'react-router-dom';
14
16
  import { Layout } from '../components/Layout';
15
17
  import { SettingsContainer } from '../components/SettingsContainer';
16
18
  import { Slippage } from '../components/Slippage';
19
+ import { SlippageTooltipContainer as TooltipContainer } from '../components/Slippage/Slippage.styles';
17
20
  import { navigationRoutes } from '../constants/navigationRoutes';
18
21
  import { useNavigateBack } from '../hooks/useNavigateBack';
19
22
  import { useMetaStore } from '../store/meta';
20
23
  import { useSettingsStore } from '../store/settings';
24
+ import { getContainer } from '../utils/common';
21
25
  import { getUniqueSwappersGroups } from '../utils/settings';
22
26
 
23
27
  interface PropTypes {
@@ -60,7 +64,7 @@ export function SettingsPage({ supportedSwappers, singleTheme }: PropTypes) {
60
64
  case 'failed':
61
65
  return (
62
66
  <Typography variant="body" size="medium" color="$error500">
63
- Loading failed
67
+ {i18n.t('Loading failed')}
64
68
  </Typography>
65
69
  );
66
70
  default:
@@ -106,16 +110,18 @@ export function SettingsPage({ supportedSwappers, singleTheme }: PropTypes) {
106
110
  onClick: () => navigate(navigationRoutes.exchanges),
107
111
  };
108
112
 
109
- const languageItem = {
110
- id: 'language-item',
111
- title: (
112
- <Typography variant="title" size="xmedium">
113
- {i18n.t('Language')}
114
- </Typography>
115
- ),
116
- end: <ChevronRightIcon color="gray" />,
117
- onClick: () => navigate(navigationRoutes.languages),
118
- };
113
+ /*
114
+ * const languageItem = {
115
+ * id: 'language-item',
116
+ * title: (
117
+ * <Typography variant="title" size="xmedium">
118
+ * {i18n.t('Language')}
119
+ * </Typography>
120
+ * ),
121
+ * end: <ChevronRightIcon color="gray" />,
122
+ * onClick: () => navigate(navigationRoutes.languages),
123
+ * };
124
+ */
119
125
 
120
126
  const themeItem = {
121
127
  id: 'theme-item',
@@ -131,15 +137,36 @@ export function SettingsPage({ supportedSwappers, singleTheme }: PropTypes) {
131
137
  const infiniteApprovalItem = {
132
138
  id: 'infinite-approval-item',
133
139
  title: (
134
- <Typography variant="title" size="xmedium">
135
- {i18n.t('Infinite Approval')}
136
- </Typography>
140
+ <>
141
+ <Typography variant="title" size="xmedium">
142
+ {i18n.t('Infinite Approval')}
143
+ </Typography>
144
+ <Divider direction="horizontal" size={4} />
145
+ <Tooltip
146
+ side="top"
147
+ container={getContainer()}
148
+ content={
149
+ <TooltipContainer>
150
+ <Typography variant="label" size="medium" color="neutral900">
151
+ {i18n.t(
152
+ "Enabling the 'Infinite Approval' mode grants unrestricted access to smart contracts of DEXes/Bridges, allowing them to utilize the approved token amount without limitations."
153
+ )}
154
+ </Typography>
155
+ </TooltipContainer>
156
+ }>
157
+ <InfoIcon color="gray" />
158
+ </Tooltip>
159
+ </>
137
160
  ),
138
161
  end: <Switch checked={infiniteApprove} />,
139
162
  onClick: toggleInfiniteApprove,
140
163
  };
141
164
 
142
- const settingItems = [bridgeItem, exchangeItem, languageItem];
165
+ const settingItems = [
166
+ bridgeItem,
167
+ exchangeItem,
168
+ // languageItem
169
+ ];
143
170
  if (!singleTheme) {
144
171
  settingItems.push(themeItem);
145
172
  }
@@ -6,6 +6,7 @@ import { SwapDetails } from '../components/SwapDetails';
6
6
  import { SwapDetailsPlaceholder } from '../components/SwapDetails/SwapDetails.Placeholder';
7
7
  import { navigationRoutes } from '../constants/navigationRoutes';
8
8
  import { useNavigateBack } from '../hooks/useNavigateBack';
9
+ import { useMetaStore } from '../store/meta';
9
10
  import { useUiStore } from '../store/ui';
10
11
  import { getPendingSwaps } from '../utils/queue';
11
12
 
@@ -15,6 +16,9 @@ export function SwapDetailsPage() {
15
16
  const pendingSwaps = getPendingSwaps(manager);
16
17
  const requestId = useUiStore.use.selectedSwapRequestId();
17
18
  const { navigateBackFrom } = useNavigateBack();
19
+ const { loadingStatus } = useMetaStore();
20
+
21
+ const showSkeleton = loading || loadingStatus === 'loading';
18
22
 
19
23
  const selectedSwap = pendingSwaps.find(
20
24
  ({ swap }) => swap.requestId === requestId
@@ -41,9 +45,12 @@ export function SwapDetailsPage() {
41
45
  };
42
46
  const swap = selectedSwap?.swap;
43
47
 
44
- if (!swap) {
48
+ if (!swap || showSkeleton) {
45
49
  return (
46
- <SwapDetailsPlaceholder requestId={requestId || ''} loading={loading} />
50
+ <SwapDetailsPlaceholder
51
+ requestId={requestId || ''}
52
+ showSkeleton={showSkeleton}
53
+ />
47
54
  );
48
55
  }
49
56
 
@@ -82,7 +82,7 @@ export function ThemePage() {
82
82
  <List
83
83
  type={
84
84
  <ListItemButton
85
- title="Theme"
85
+ title={i18n.t('Theme')}
86
86
  id="_"
87
87
  onClick={() => console.log()}
88
88
  />
@@ -11,6 +11,7 @@ import { navigationRoutes } from '../constants/navigationRoutes';
11
11
  import { useNavigateBack } from '../hooks/useNavigateBack';
12
12
  import { useWalletList } from '../hooks/useWalletList';
13
13
  import { useMetaStore } from '../store/meta';
14
+ import { getContainer } from '../utils/common';
14
15
 
15
16
  interface PropTypes {
16
17
  supportedWallets: WidgetConfig['wallets'];
@@ -36,14 +37,16 @@ export const TIME_TO_IGNORE_MODAL = 300;
36
37
 
37
38
  export function WalletsPage({ config }: PropTypes) {
38
39
  const { navigateBackFrom } = useNavigateBack();
39
- const [openModal, setOpenModal] = useState<WalletType>('');
40
+ const [openModal, setOpenModal] = useState(false);
41
+ const [selectedWalletType, setSelectedWalletType] = useState<WalletType>('');
40
42
  let modalTimerId: ReturnType<typeof setTimeout> | null = null;
41
43
 
42
44
  const { list, handleClick, error } = useWalletList({
43
45
  config,
44
46
  onBeforeConnect: (type) => {
45
47
  modalTimerId = setTimeout(() => {
46
- setOpenModal(type);
48
+ setOpenModal(true);
49
+ setSelectedWalletType(type);
47
50
  }, TIME_TO_IGNORE_MODAL);
48
51
  },
49
52
  onConnect: () => {
@@ -51,13 +54,15 @@ export function WalletsPage({ config }: PropTypes) {
51
54
  clearTimeout(modalTimerId);
52
55
  }
53
56
  setTimeout(() => {
54
- setOpenModal('');
57
+ setOpenModal(false);
55
58
  }, TIME_TO_CLOSE_MODAL);
56
59
  },
57
60
  });
58
61
 
59
62
  const loadingMetaStatus = useMetaStore.use.loadingStatus();
60
- const selectedWallet = list.find((wallet) => wallet.type === openModal);
63
+ const selectedWallet = list.find(
64
+ (wallet) => wallet.type === selectedWalletType
65
+ );
61
66
  const selectedWalletImage = selectedWallet?.image || '';
62
67
  const selectedWalletState =
63
68
  selectedWallet?.state || WalletState.NOT_INSTALLED;
@@ -79,6 +84,7 @@ export function WalletsPage({ config }: PropTypes) {
79
84
  <Fragment key={key}>
80
85
  <Wallet
81
86
  {...wallet}
87
+ container={getContainer()}
82
88
  onClick={(type) => {
83
89
  void handleClick(type);
84
90
  }}
@@ -89,7 +95,7 @@ export function WalletsPage({ config }: PropTypes) {
89
95
  })}
90
96
  <WalletModal
91
97
  open={!!openModal}
92
- onClose={() => setOpenModal('')}
98
+ onClose={() => setOpenModal(false)}
93
99
  image={selectedWalletImage}
94
100
  state={selectedWalletState}
95
101
  error={error}
@@ -1,14 +1,13 @@
1
1
  import { RangoClient } from 'rango-sdk';
2
- import { getConfig } from '../utils/configs';
3
2
 
4
- // this API key is limited and
5
- // it is only for test purpose
6
- export const RANGO_PUBLIC_API_KEY = 'c6381a79-2817-4602-83bf-6a641a409e32';
3
+ import { getConfig } from '../utils/configs';
7
4
 
8
5
  let rango: RangoClient | undefined = undefined;
9
6
 
10
7
  export const httpService = () => {
11
- if (rango) return rango;
8
+ if (rango) {
9
+ return rango;
10
+ }
12
11
  rango = new RangoClient(getConfig('API_KEY'));
13
12
  return rango;
14
13
  };
@@ -0,0 +1,15 @@
1
+ import type { ConfigSlice } from './slices/config';
2
+ import type { DataSlice } from './slices/data';
3
+
4
+ import { create } from 'zustand';
5
+
6
+ import createSelectors from './selectors';
7
+ import { createConfigSlice } from './slices/config';
8
+ import { createDataSlice } from './slices/data';
9
+
10
+ const store = create<DataSlice & ConfigSlice>()((...a) => ({
11
+ ...createDataSlice(...a),
12
+ ...createConfigSlice(...a),
13
+ }));
14
+
15
+ export const useAppStore = createSelectors(store);
@@ -11,15 +11,10 @@ import { ZERO } from '../constants/numbers';
11
11
  import { isPositiveNumber } from '../utils/numbers';
12
12
  import { getBestRouteToTokenUsdPrice } from '../utils/routing';
13
13
  import { calcOutputUsdValue } from '../utils/swap';
14
- import {
15
- getDefaultToken,
16
- getSortedTokens,
17
- tokensAreEqual,
18
- } from '../utils/wallets';
14
+ import { tokensAreEqual } from '../utils/wallets';
19
15
 
20
16
  import { useMetaStore } from './meta';
21
17
  import createSelectors from './selectors';
22
- import { useWalletsStore } from './wallets';
23
18
 
24
19
  const getUsdValue = (token: Token | null, amount: string): BigNumber | null =>
25
20
  token?.usdPrice
@@ -36,20 +31,12 @@ export interface RouteState {
36
31
  fromToken: TokenWithBalance | null;
37
32
  toToken: TokenWithBalance | null;
38
33
  routeWalletsConfirmed: boolean;
39
- sourceTokens: Token[];
40
- destinationTokens: Token[];
41
34
  selectedWallets: Wallet[];
42
35
  resetRoute: () => void;
43
36
  resetToBlockchain: () => void;
44
37
  resetFromBlockchain: () => void;
45
- setFromBlockchain: (
46
- chain: BlockchainMeta | null,
47
- setDefaultToken?: boolean
48
- ) => void;
49
- setToBlockchain: (
50
- chian: BlockchainMeta | null,
51
- setDefaultToken?: boolean
52
- ) => void;
38
+ setFromBlockchain: (chain: BlockchainMeta | null) => void;
39
+ setToBlockchain: (chian: BlockchainMeta | null) => void;
53
40
 
54
41
  setFromToken: (token: Token | null) => void;
55
42
  setToToken: (token: Token | null) => void;
@@ -78,8 +65,6 @@ export const useBestRouteStore = createSelectors(
78
65
  toToken: null,
79
66
  bestRoute: null,
80
67
  routeWalletsConfirmed: false,
81
- sourceTokens: [],
82
- destinationTokens: [],
83
68
  selectedWallets: [],
84
69
  customDestination: '',
85
70
  setRoute: (bestRoute) =>
@@ -112,66 +97,65 @@ export const useBestRouteStore = createSelectors(
112
97
  outputAmount: null,
113
98
  outputUsdValue: new BigNumber(0),
114
99
  })),
115
- setFromBlockchain: (chain, setDefaultToken) => {
100
+ setFromBlockchain: (chain) => {
116
101
  set((state) => {
117
102
  if (state.fromBlockchain?.name === chain?.name) {
118
103
  return {};
119
104
  }
120
- const tokens = useMetaStore.getState().meta.tokens;
121
- const connectedWallets = useWalletsStore.getState().connectedWallets;
122
- const sortedTokens = getSortedTokens(
123
- chain,
124
- tokens,
125
- connectedWallets,
126
- state.destinationTokens
127
- );
128
- const fromToken = getDefaultToken(sortedTokens, state.toToken);
105
+
129
106
  return {
130
107
  fromBlockchain: chain,
131
- sourceTokens: sortedTokens,
132
- ...(setDefaultToken && {
133
- fromToken,
134
- }),
135
- ...(!!state.inputAmount && {
136
- inputUsdValue: getUsdValue(fromToken, state.inputAmount),
108
+ ...(state.fromToken && {
109
+ bestRoute: null,
110
+ fromToken: null,
111
+ outputAmount: null,
112
+ outputUsdValue: null,
137
113
  }),
138
114
  };
139
115
  });
140
116
  },
141
- setFromToken: (token) =>
142
- set((state) => ({
117
+ setFromToken: (token) => {
118
+ const { blockchains } = useMetaStore.getState().meta;
119
+ const fromBlockchain =
120
+ blockchains.find(
121
+ (blockchain) => blockchain.name === token?.blockchain
122
+ ) ?? null;
123
+ return set((state) => ({
143
124
  fromToken: token,
125
+ fromBlockchain,
144
126
  ...(!!state.inputAmount && {
145
127
  inputUsdValue: getUsdValue(token, state.inputAmount),
146
128
  }),
147
- })),
148
- setToBlockchain: (chain, setDefaultToken) => {
129
+ }));
130
+ },
131
+ setToBlockchain: (chain) => {
149
132
  set((state) => {
150
133
  if (state.toBlockchain?.name === chain?.name) {
151
134
  return {};
152
135
  }
153
- const tokens = useMetaStore.getState().meta.tokens;
154
- const connectedWallets = useWalletsStore.getState().connectedWallets;
155
- const sortedTokens = getSortedTokens(
156
- chain,
157
- tokens,
158
- connectedWallets,
159
- state.destinationTokens
160
- );
161
136
 
162
137
  return {
163
138
  toBlockchain: chain,
164
- destinationTokens: sortedTokens,
165
- ...(setDefaultToken && {
166
- toToken: getDefaultToken(sortedTokens, state.fromToken),
139
+ ...(state.toToken && {
140
+ bestRoute: null,
141
+ toToken: null,
142
+ outputAmount: null,
143
+ outputUsdValue: null,
167
144
  }),
168
145
  };
169
146
  });
170
147
  },
171
- setToToken: (token) =>
172
- set(() => ({
148
+ setToToken: (token) => {
149
+ const { blockchains } = useMetaStore.getState().meta;
150
+ const toBlockchain =
151
+ blockchains.find(
152
+ (blockchain) => blockchain.name === token?.blockchain
153
+ ) ?? null;
154
+ return set(() => ({
173
155
  toToken: token,
174
- })),
156
+ toBlockchain,
157
+ }));
158
+ },
175
159
  setInputAmount: (amount) => {
176
160
  set((state) => ({
177
161
  inputAmount: amount,
@@ -187,7 +171,6 @@ export const useBestRouteStore = createSelectors(
187
171
  },
188
172
  retry: (pendingSwap) => {
189
173
  const { tokens, blockchains } = useMetaStore.getState().meta;
190
- const connectedWallets = useWalletsStore.getState().connectedWallets;
191
174
  const failedIndex =
192
175
  pendingSwap.status === 'failed'
193
176
  ? pendingSwap.steps.findIndex((s) => s.status === 'failed')
@@ -223,18 +206,7 @@ export const useBestRouteStore = createSelectors(
223
206
  address: lastStep.toSymbolAddress,
224
207
  })
225
208
  );
226
- const sortedSourceTokens = getSortedTokens(
227
- fromBlockchain,
228
- tokens,
229
- connectedWallets,
230
- []
231
- );
232
- const sortedDestinationTokens = getSortedTokens(
233
- toBlockchain,
234
- tokens,
235
- connectedWallets,
236
- []
237
- );
209
+
238
210
  const inputAmount = pendingSwap.inputAmount;
239
211
  set({
240
212
  fromBlockchain,
@@ -246,8 +218,6 @@ export const useBestRouteStore = createSelectors(
246
218
  toBlockchain,
247
219
  toToken,
248
220
  bestRoute: null,
249
- sourceTokens: sortedSourceTokens,
250
- destinationTokens: sortedDestinationTokens,
251
221
  });
252
222
  },
253
223
  switchFromAndTo: () =>
@@ -256,8 +226,6 @@ export const useBestRouteStore = createSelectors(
256
226
  fromToken: state.toToken,
257
227
  toBlockchain: state.fromBlockchain,
258
228
  toToken: state.fromToken,
259
- sourceTokens: state.destinationTokens,
260
- destinationTokens: state.sourceTokens,
261
229
  inputAmount: state.outputAmount?.toString() || '',
262
230
  inputUsdValue: getUsdValue(
263
231
  state.toToken,
@@ -267,13 +235,19 @@ export const useBestRouteStore = createSelectors(
267
235
 
268
236
  resetFromBlockchain: () =>
269
237
  set(() => ({
238
+ fromToken: null,
270
239
  fromBlockchain: null,
271
- sourceTokens: [],
240
+ outputAmount: null,
241
+ outputUsdValue: null,
242
+ bestRoute: null,
272
243
  })),
273
244
  resetToBlockchain: () =>
274
245
  set(() => ({
246
+ toToken: null,
275
247
  toBlockchain: null,
276
- destinationTokens: [],
248
+ outputAmount: null,
249
+ outputUsdValue: null,
250
+ bestRoute: null,
277
251
  })),
278
252
  setRouteWalletConfirmed: (flag) =>
279
253
  set({
package/src/store/meta.ts CHANGED
@@ -3,12 +3,8 @@ import type { MetaResponse } from 'rango-sdk';
3
3
 
4
4
  import { create } from 'zustand';
5
5
 
6
- import { httpService } from '../services/httpService';
7
- import { removeDuplicateFrom } from '../utils/common';
8
- import { getTokensWithBalance, sortTokens } from '../utils/wallets';
9
-
6
+ import { useAppStore } from './app';
10
7
  import createSelectors from './selectors';
11
- import { useWalletsStore } from './wallets';
12
8
 
13
9
  export type LoadingStatus = 'loading' | 'success' | 'failed';
14
10
 
@@ -16,38 +12,24 @@ export interface MetaState {
16
12
  meta: MetaResponse & { tokens: TokenWithBalance[] };
17
13
  loadingStatus: LoadingStatus;
18
14
  fetchMeta: () => Promise<void>;
19
- setTokensWithBalance: () => void;
20
15
  }
21
16
 
22
17
  export const useMetaStore = createSelectors(
23
18
  create<MetaState>()((set) => ({
24
19
  meta: { blockchains: [], popularTokens: [], swappers: [], tokens: [] },
25
20
  loadingStatus: 'loading',
26
- setTokensWithBalance: () => {
27
- const connectedWallets = useWalletsStore.getState().connectedWallets;
28
-
29
- set((state) => ({
30
- ...state,
31
- meta: {
32
- ...state.meta,
33
- tokens: sortTokens(
34
- getTokensWithBalance(state.meta.tokens, connectedWallets)
35
- ),
36
- },
37
- }));
38
- },
39
21
  fetchMeta: async () => {
40
22
  try {
41
- const response = await httpService().getAllMetadata();
42
- const chainThatHasTokenInMetaResponse = removeDuplicateFrom(
43
- response.tokens.map((t) => t.blockchain)
44
- );
45
- const enabledChains = response.blockchains.filter(
46
- (chain) =>
47
- chain.enabled &&
48
- chainThatHasTokenInMetaResponse.includes(chain.name)
49
- );
50
- response.blockchains = enabledChains.sort((a, b) => a.sort - b.sort);
23
+ await useAppStore.getState().fetch();
24
+
25
+ const state = useAppStore.getState();
26
+ const response: MetaResponse = {
27
+ blockchains: state.blockchains(),
28
+ tokens: state.tokens(),
29
+ popularTokens: state._popularTokens,
30
+ swappers: state._swappers,
31
+ };
32
+
51
33
  set({ meta: response, loadingStatus: 'success' });
52
34
  } catch (error) {
53
35
  set({ loadingStatus: 'failed' });
@@ -0,0 +1,26 @@
1
+ import type { WidgetConfig } from '../../types';
2
+ import type { StateCreator } from 'zustand';
3
+
4
+ const initConfig: WidgetConfig = { apiKey: '' };
5
+
6
+ export type ConfigSlice = {
7
+ config: WidgetConfig;
8
+
9
+ updateConfig: (config: WidgetConfig) => void;
10
+ };
11
+
12
+ export const createConfigSlice: StateCreator<ConfigSlice> = (set, get) => ({
13
+ config: initConfig,
14
+
15
+ // Actions
16
+ updateConfig: (nextConfig: WidgetConfig) => {
17
+ const currentConfig = get().config;
18
+
19
+ set({
20
+ config: {
21
+ ...currentConfig,
22
+ ...nextConfig,
23
+ },
24
+ });
25
+ },
26
+ });