@rango-dev/widget-embedded 0.20.1-next.8 → 0.21.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 (294) hide show
  1. package/dist/QueueManager.d.ts.map +1 -1
  2. package/dist/components/AppRouter.d.ts.map +1 -1
  3. package/dist/components/AppRoutes.d.ts.map +1 -1
  4. package/dist/components/BlockchainList/BlockchainList.styles.d.ts +169 -1
  5. package/dist/components/BlockchainList/BlockchainList.styles.d.ts.map +1 -1
  6. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts +4 -0
  7. package/dist/components/BlockchainsSection/BlockchainsSection.styles.d.ts.map +1 -1
  8. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +514 -1089
  9. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  10. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  11. package/dist/components/ConfirmWalletsModal/WalletList.d.ts.map +1 -1
  12. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts +12 -0
  13. package/dist/components/ConfirmWalletsModal/WalletList.styles.d.ts.map +1 -1
  14. package/dist/components/CustomCollapsible/CustomCollapsible.d.ts +5 -0
  15. package/dist/components/CustomCollapsible/CustomCollapsible.d.ts.map +1 -0
  16. package/dist/components/CustomCollapsible/CustomCollapsible.styles.d.ts +654 -0
  17. package/dist/components/CustomCollapsible/CustomCollapsible.styles.d.ts.map +1 -0
  18. package/dist/components/CustomCollapsible/CustomCollapsible.types.d.ts +10 -0
  19. package/dist/components/CustomCollapsible/CustomCollapsible.types.d.ts.map +1 -0
  20. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +20 -0
  21. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  22. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts +0 -1
  23. package/dist/components/HeaderButtons/HeaderButtons.types.d.ts.map +1 -1
  24. package/dist/components/HeaderButtons/HomeButtons.d.ts.map +1 -1
  25. package/dist/components/Layout/Layout.d.ts +2 -3
  26. package/dist/components/Layout/Layout.d.ts.map +1 -1
  27. package/dist/components/Layout/Layout.helpers.d.ts +2 -0
  28. package/dist/components/Layout/Layout.helpers.d.ts.map +1 -0
  29. package/dist/components/Layout/Layout.styles.d.ts +14 -4
  30. package/dist/components/Layout/Layout.styles.d.ts.map +1 -1
  31. package/dist/components/Layout/Layout.types.d.ts +6 -3
  32. package/dist/components/Layout/Layout.types.d.ts.map +1 -1
  33. package/dist/components/Layout/PageContainer.d.ts +166 -0
  34. package/dist/components/Layout/PageContainer.d.ts.map +1 -0
  35. package/dist/components/Layout/ScrollableArea.d.ts +164 -0
  36. package/dist/components/Layout/ScrollableArea.d.ts.map +1 -0
  37. package/dist/components/Layout/index.d.ts +2 -0
  38. package/dist/components/Layout/index.d.ts.map +1 -1
  39. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts +4 -0
  40. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts.map +1 -1
  41. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts +56 -0
  42. package/dist/components/LoadingSwapDetails/LoadingSwapDetails.styles.d.ts.map +1 -1
  43. package/dist/components/NoResult/NoResult.styles.d.ts +12 -0
  44. package/dist/components/NoResult/NoResult.styles.d.ts.map +1 -1
  45. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  46. package/dist/components/NotificationContent/NotificationContent.styles.d.ts +16 -0
  47. package/dist/components/NotificationContent/NotificationContent.styles.d.ts.map +1 -1
  48. package/dist/components/Quote/Quote.d.ts.map +1 -1
  49. package/dist/components/Quote/Quote.styles.d.ts +387 -3
  50. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  51. package/dist/components/Quote/Quote.types.d.ts +19 -0
  52. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  53. package/dist/components/Quote/QuoteCostDetails.d.ts +4 -0
  54. package/dist/components/Quote/QuoteCostDetails.d.ts.map +1 -0
  55. package/dist/components/Quote/QuoteCostDetails.styles.d.ts +806 -0
  56. package/dist/components/Quote/QuoteCostDetails.styles.d.ts.map +1 -0
  57. package/dist/components/Quote/QuoteSummary.d.ts.map +1 -1
  58. package/dist/components/Quote/QuoteSummary.styles.d.ts +8 -0
  59. package/dist/components/Quote/QuoteSummary.styles.d.ts.map +1 -1
  60. package/dist/components/Quote/QuoteTrigger .d.ts +4 -0
  61. package/dist/components/Quote/QuoteTrigger .d.ts.map +1 -0
  62. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts +16 -0
  63. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -1
  64. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts +40 -0
  65. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.styles.d.ts.map +1 -1
  66. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +20 -0
  67. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -1
  68. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts +1 -0
  69. package/dist/components/QuoteWarningsAndErrors/HighValueLossWarningModal.d.ts.map +1 -1
  70. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.d.ts.map +1 -1
  71. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts +16 -0
  72. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.d.ts.map +1 -1
  73. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts +1 -0
  74. package/dist/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.d.ts.map +1 -1
  75. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts +1 -0
  76. package/dist/components/QuoteWarningsAndErrors/SlippageWariningModal.d.ts.map +1 -1
  77. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts +1 -0
  78. package/dist/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.d.ts.map +1 -1
  79. package/dist/components/SearchInput/SearchInput.styles.d.ts +4 -0
  80. package/dist/components/SearchInput/SearchInput.styles.d.ts.map +1 -1
  81. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts +11 -156
  82. package/dist/components/SettingsContainer/SettingsContainer.style.d.ts.map +1 -1
  83. package/dist/components/SettingsContainer/index.d.ts +1 -1
  84. package/dist/components/SettingsContainer/index.d.ts.map +1 -1
  85. package/dist/components/Slippage/Slippage.styles.d.ts +20 -0
  86. package/dist/components/Slippage/Slippage.styles.d.ts.map +1 -1
  87. package/dist/components/SwapDetails/SwapDetails.Placeholder.d.ts.map +1 -1
  88. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  89. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts +1 -1
  90. package/dist/components/SwapDetails/SwapDetails.helpers.d.ts.map +1 -1
  91. package/dist/components/SwapDetails/SwapDetails.styles.d.ts +523 -1
  92. package/dist/components/SwapDetails/SwapDetails.styles.d.ts.map +1 -1
  93. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.d.ts.map +1 -1
  94. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts +4 -0
  95. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.styles.d.ts.map +1 -1
  96. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.types.d.ts +2 -1
  97. package/dist/components/SwapDetailsAlerts/SwapDetailsAlerts.types.d.ts.map +1 -1
  98. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  99. package/dist/components/SwapDetailsModal/SwapDetailsModal.d.ts.map +1 -1
  100. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts +4 -0
  101. package/dist/components/SwapDetailsModal/SwapDetailsModal.styles.d.ts.map +1 -1
  102. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts +2 -0
  103. package/dist/components/SwapDetailsModal/SwapDetailsModal.types.d.ts.map +1 -1
  104. package/dist/components/SwapsGroup/SwapsGroup.d.ts.map +1 -1
  105. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts +20 -0
  106. package/dist/components/SwapsGroup/SwapsGroup.styles.d.ts.map +1 -1
  107. package/dist/components/TokenList/TokenList.styles.d.ts +68 -0
  108. package/dist/components/TokenList/TokenList.styles.d.ts.map +1 -1
  109. package/dist/components/WalletModal/WalletModalContent.styles.d.ts +16 -0
  110. package/dist/components/WalletModal/WalletModalContent.styles.d.ts.map +1 -1
  111. package/dist/components/WidgetEvents.d.ts.map +1 -1
  112. package/dist/components/common/ActivateTabAlert/ActivateTabAlert.d.ts +4 -0
  113. package/dist/components/common/ActivateTabAlert/ActivateTabAlert.d.ts.map +1 -0
  114. package/dist/components/common/ActivateTabAlert/ActivateTabAlert.types.d.ts +4 -0
  115. package/dist/components/common/ActivateTabAlert/ActivateTabAlert.types.d.ts.map +1 -0
  116. package/dist/components/common/ActivateTabAlert/index.d.ts +2 -0
  117. package/dist/components/common/ActivateTabAlert/index.d.ts.map +1 -0
  118. package/dist/components/common/ActivateTabModal/ActivateTabModal.d.ts +4 -0
  119. package/dist/components/common/ActivateTabModal/ActivateTabModal.d.ts.map +1 -0
  120. package/dist/components/common/ActivateTabModal/ActivateTabModal.types.d.ts +6 -0
  121. package/dist/components/common/ActivateTabModal/ActivateTabModal.types.d.ts.map +1 -0
  122. package/dist/components/common/ActivateTabModal/index.d.ts +2 -0
  123. package/dist/components/common/ActivateTabModal/index.d.ts.map +1 -0
  124. package/dist/constants/index.d.ts +1 -0
  125. package/dist/constants/index.d.ts.map +1 -1
  126. package/dist/constants/quote.d.ts +12 -0
  127. package/dist/constants/quote.d.ts.map +1 -0
  128. package/dist/constants/searchParams.d.ts +6 -6
  129. package/dist/constants/searchParams.d.ts.map +1 -1
  130. package/dist/containers/App/App.d.ts.map +1 -1
  131. package/dist/containers/App/App.styles.d.ts +4 -0
  132. package/dist/containers/App/App.styles.d.ts.map +1 -1
  133. package/dist/containers/QuoteInfo/QuoteInfo.d.ts +1 -1
  134. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  135. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts +10 -314
  136. package/dist/containers/QuoteInfo/QuoteInfo.styles.d.ts.map +1 -1
  137. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +0 -7
  138. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  139. package/dist/containers/Widget/Widget.d.ts.map +1 -1
  140. package/dist/containers/WidgetInfo/WidgetInfo.d.ts.map +1 -1
  141. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts +7 -0
  142. package/dist/containers/WidgetInfo/WidgetInfo.types.d.ts.map +1 -1
  143. package/dist/containers/WidgetProvider/WidgetProvider.d.ts.map +1 -1
  144. package/dist/hooks/useLanguage.d.ts +2 -1
  145. package/dist/hooks/useLanguage.d.ts.map +1 -1
  146. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  147. package/dist/hooks/useSyncStoresWithConfig.d.ts.map +1 -1
  148. package/dist/hooks/useSyncUrlAndStore/index.d.ts +2 -0
  149. package/dist/hooks/useSyncUrlAndStore/index.d.ts.map +1 -0
  150. package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.d.ts +2 -0
  151. package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.d.ts.map +1 -0
  152. package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.d.ts +4 -0
  153. package/dist/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.d.ts.map +1 -0
  154. package/dist/index.d.ts +4 -4
  155. package/dist/index.d.ts.map +1 -1
  156. package/dist/index.js +2 -1
  157. package/dist/index.js.map +4 -4
  158. package/dist/libs/tabManager/index.d.ts +3 -0
  159. package/dist/libs/tabManager/index.d.ts.map +1 -0
  160. package/dist/libs/tabManager/tabManager.constants.d.ts +4 -0
  161. package/dist/libs/tabManager/tabManager.constants.d.ts.map +1 -0
  162. package/dist/libs/tabManager/tabManager.d.ts +63 -0
  163. package/dist/libs/tabManager/tabManager.d.ts.map +1 -0
  164. package/dist/libs/tabManager/tabManager.types.d.ts +29 -0
  165. package/dist/libs/tabManager/tabManager.types.d.ts.map +1 -0
  166. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  167. package/dist/pages/HistoryPage.d.ts.map +1 -1
  168. package/dist/pages/Home.d.ts.map +1 -1
  169. package/dist/pages/LanguagePage.d.ts.map +1 -1
  170. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  171. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  172. package/dist/pages/SettingsPage.d.ts.map +1 -1
  173. package/dist/pages/SwapDetailsPage.d.ts.map +1 -1
  174. package/dist/pages/ThemePage.d.ts.map +1 -1
  175. package/dist/pages/WalletsPage.d.ts.map +1 -1
  176. package/dist/store/AppStore.d.ts +2 -2
  177. package/dist/store/app.d.ts +2 -2
  178. package/dist/store/slices/settings.d.ts +2 -2
  179. package/dist/store/slices/settings.d.ts.map +1 -1
  180. package/dist/store/ui.d.ts +12 -10
  181. package/dist/store/ui.d.ts.map +1 -1
  182. package/dist/types/notification.d.ts +1 -2
  183. package/dist/types/notification.d.ts.map +1 -1
  184. package/dist/utils/date.d.ts.map +1 -1
  185. package/dist/utils/quote.d.ts +5 -2
  186. package/dist/utils/quote.d.ts.map +1 -1
  187. package/dist/utils/swap.d.ts +5 -1
  188. package/dist/utils/swap.d.ts.map +1 -1
  189. package/dist/utils/ui.d.ts +2 -0
  190. package/dist/utils/ui.d.ts.map +1 -1
  191. package/package.json +7 -7
  192. package/src/QueueManager.tsx +4 -1
  193. package/src/components/AppRouter.tsx +1 -8
  194. package/src/components/AppRoutes.tsx +11 -0
  195. package/src/components/BlockchainList/BlockchainList.styles.ts +4 -3
  196. package/src/components/BlockchainList/BlockchainList.tsx +1 -1
  197. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +27 -96
  198. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +25 -40
  199. package/src/components/ConfirmWalletsModal/WalletList.tsx +3 -0
  200. package/src/components/CustomCollapsible/CustomCollapsible.styles.ts +75 -0
  201. package/src/components/CustomCollapsible/CustomCollapsible.tsx +55 -0
  202. package/src/components/CustomCollapsible/CustomCollapsible.types.ts +10 -0
  203. package/src/components/HeaderButtons/HeaderButtons.styles.ts +4 -1
  204. package/src/components/HeaderButtons/HeaderButtons.types.ts +0 -1
  205. package/src/components/HeaderButtons/HomeButtons.tsx +1 -2
  206. package/src/components/Layout/Layout.helpers.ts +16 -0
  207. package/src/components/Layout/Layout.styles.ts +17 -31
  208. package/src/components/Layout/Layout.tsx +60 -29
  209. package/src/components/Layout/Layout.types.ts +9 -8
  210. package/src/components/Layout/PageContainer.tsx +24 -0
  211. package/src/components/Layout/ScrollableArea.tsx +11 -0
  212. package/src/components/Layout/index.ts +2 -0
  213. package/src/components/NotificationContent/NotificationContent.tsx +10 -4
  214. package/src/components/Quote/Quote.styles.ts +44 -5
  215. package/src/components/Quote/Quote.tsx +10 -77
  216. package/src/components/Quote/Quote.types.ts +22 -0
  217. package/src/components/Quote/QuoteCostDetails.styles.ts +50 -0
  218. package/src/components/Quote/QuoteCostDetails.tsx +218 -0
  219. package/src/components/Quote/QuoteSummary.tsx +3 -2
  220. package/src/components/Quote/QuoteTrigger .tsx +215 -0
  221. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +3 -1
  222. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +0 -1
  223. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.tsx +3 -1
  224. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.types.ts +1 -0
  225. package/src/components/QuoteWarningsAndErrors/SlippageWariningModal.tsx +3 -1
  226. package/src/components/QuoteWarningsAndErrors/UnknownPriceWarningModal.tsx +3 -1
  227. package/src/components/SettingsContainer/SettingsContainer.style.ts +0 -5
  228. package/src/components/SettingsContainer/index.ts +0 -1
  229. package/src/components/Slippage/Slippage.tsx +5 -5
  230. package/src/components/Slippage/SlippageTooltipContent.tsx +1 -1
  231. package/src/components/SwapDetails/SwapDetails.Placeholder.tsx +12 -13
  232. package/src/components/SwapDetails/SwapDetails.helpers.tsx +43 -3
  233. package/src/components/SwapDetails/SwapDetails.styles.ts +18 -6
  234. package/src/components/SwapDetails/SwapDetails.tsx +16 -5
  235. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.tsx +13 -7
  236. package/src/components/SwapDetailsAlerts/SwapDetailsAlerts.types.ts +2 -0
  237. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +9 -1
  238. package/src/components/SwapDetailsModal/SwapDetailsModal.tsx +10 -2
  239. package/src/components/SwapDetailsModal/SwapDetailsModal.types.ts +2 -0
  240. package/src/components/SwapsGroup/SwapsGroup.tsx +18 -7
  241. package/src/components/TokenList/TokenList.styles.ts +2 -0
  242. package/src/components/TokenList/TokenList.tsx +1 -1
  243. package/src/components/WidgetEvents.tsx +2 -14
  244. package/src/components/common/ActivateTabAlert/ActivateTabAlert.tsx +26 -0
  245. package/src/components/common/ActivateTabAlert/ActivateTabAlert.types.ts +3 -0
  246. package/src/components/common/ActivateTabAlert/index.ts +1 -0
  247. package/src/components/common/ActivateTabModal/ActivateTabModal.tsx +31 -0
  248. package/src/components/common/ActivateTabModal/ActivateTabModal.types.ts +5 -0
  249. package/src/components/common/ActivateTabModal/index.ts +1 -0
  250. package/src/constants/index.ts +1 -0
  251. package/src/constants/quote.ts +23 -0
  252. package/src/constants/searchParams.ts +6 -6
  253. package/src/containers/App/App.styles.ts +2 -0
  254. package/src/containers/App/App.tsx +1 -4
  255. package/src/containers/QuoteInfo/QuoteInfo.styles.ts +0 -15
  256. package/src/containers/QuoteInfo/QuoteInfo.tsx +30 -77
  257. package/src/containers/QuoteInfo/QuoteInfo.types.ts +0 -7
  258. package/src/containers/Wallets/Wallets.tsx +3 -3
  259. package/src/containers/Widget/Widget.tsx +6 -1
  260. package/src/containers/WidgetInfo/WidgetInfo.tsx +13 -1
  261. package/src/containers/WidgetInfo/WidgetInfo.types.ts +7 -0
  262. package/src/containers/WidgetProvider/WidgetProvider.tsx +2 -1
  263. package/src/hooks/useLanguage.ts +6 -4
  264. package/src/hooks/useSwapInput.ts +6 -1
  265. package/src/hooks/useSyncStoresWithConfig.ts +3 -17
  266. package/src/hooks/useSyncUrlAndStore/index.ts +1 -0
  267. package/src/hooks/useSyncUrlAndStore/useSyncUrlAndStore.helpers.ts +35 -0
  268. package/src/hooks/useSyncUrlAndStore/useSyncUrlAndStore.ts +135 -0
  269. package/src/index.ts +2 -2
  270. package/src/libs/tabManager/index.ts +2 -0
  271. package/src/libs/tabManager/tabManager.constants.ts +3 -0
  272. package/src/libs/tabManager/tabManager.ts +222 -0
  273. package/src/libs/tabManager/tabManager.types.ts +28 -0
  274. package/src/pages/ConfirmSwapPage.tsx +55 -47
  275. package/src/pages/HistoryPage.tsx +5 -17
  276. package/src/pages/Home.tsx +47 -43
  277. package/src/pages/LanguagePage.tsx +3 -4
  278. package/src/pages/LiquiditySourcePage.tsx +8 -6
  279. package/src/pages/SelectBlockchainPage.tsx +41 -41
  280. package/src/pages/SelectSwapItemsPage.tsx +45 -39
  281. package/src/pages/SettingsPage.tsx +3 -4
  282. package/src/pages/SwapDetailsPage.tsx +21 -7
  283. package/src/pages/ThemePage.tsx +3 -4
  284. package/src/pages/WalletsPage.tsx +15 -13
  285. package/src/store/slices/settings.ts +3 -3
  286. package/src/store/ui.ts +39 -11
  287. package/src/types/notification.ts +0 -7
  288. package/src/utils/date.ts +5 -4
  289. package/src/utils/quote.ts +18 -28
  290. package/src/utils/swap.ts +35 -0
  291. package/src/utils/ui.ts +20 -0
  292. package/dist/components/UpdateUrl.d.ts +0 -2
  293. package/dist/components/UpdateUrl.d.ts.map +0 -1
  294. package/src/components/UpdateUrl.tsx +0 -158
@@ -0,0 +1,218 @@
1
+ import type { QuoteCostDetailsProps } from './Quote.types';
2
+ import type { NameOfFees } from '../../constants/quote';
3
+
4
+ import { i18n } from '@lingui/core';
5
+ import {
6
+ ChevronDownIcon,
7
+ CloseIcon,
8
+ Divider,
9
+ IconButton,
10
+ Modal,
11
+ QuoteCost,
12
+ Tooltip,
13
+ Typography,
14
+ } from '@rango-dev/ui';
15
+ import BigNumber from 'bignumber.js';
16
+ import React, { useState } from 'react';
17
+
18
+ import { NAME_OF_FEES } from '../../constants/quote';
19
+ import {
20
+ GAS_FEE_MAX_DECIMALS,
21
+ GAS_FEE_MIN_DECIMALS,
22
+ USD_VALUE_MAX_DECIMALS,
23
+ USD_VALUE_MIN_DECIMALS,
24
+ } from '../../constants/routing';
25
+ import { useAppStore } from '../../store/AppStore';
26
+ import { getContainer } from '../../utils/common';
27
+ import {
28
+ formatTooltipNumbers,
29
+ numberToString,
30
+ secondsToString,
31
+ totalArrivalTime,
32
+ } from '../../utils/numbers';
33
+ import {
34
+ getFeesGroup,
35
+ getTotalFeeInUsd,
36
+ getTotalFeesInUsd,
37
+ getUsdFee,
38
+ } from '../../utils/swap';
39
+ import { CustomCollapsible } from '../CustomCollapsible/CustomCollapsible';
40
+ import { ExpandedIcon } from '../CustomCollapsible/CustomCollapsible.styles';
41
+
42
+ import {
43
+ FeeSection,
44
+ Line,
45
+ ModalContainer,
46
+ ModalHeader,
47
+ trigger,
48
+ } from './QuoteCostDetails.styles';
49
+
50
+ const GAS_FEE_MAX = 30;
51
+
52
+ const NonPayableFee = (props: { fee: BigNumber; label: string }) => {
53
+ return !props.fee.isZero() ? (
54
+ <FeeSection>
55
+ <Typography variant="label" size="medium" color="neutral600">
56
+ {props.label}
57
+ </Typography>
58
+ <Typography variant="label" size="medium">
59
+ $
60
+ {numberToString(
61
+ props.fee,
62
+ USD_VALUE_MIN_DECIMALS,
63
+ USD_VALUE_MAX_DECIMALS
64
+ )}
65
+ </Typography>
66
+ </FeeSection>
67
+ ) : null;
68
+ };
69
+
70
+ export function QuoteCostDetails(props: QuoteCostDetailsProps) {
71
+ const [open, setOpen] = useState<boolean>(false);
72
+ const [openCollapse, setOpenCollapse] = useState<boolean>(false);
73
+ const { steps, quote } = props;
74
+ const tokens = useAppStore().tokens();
75
+ const totalTime = secondsToString(totalArrivalTime(quote.result?.swaps));
76
+ const swaps = quote.result?.swaps ?? [];
77
+ const container = getContainer();
78
+
79
+ const totalFee = getTotalFeeInUsd(swaps, tokens);
80
+
81
+ const feesGroup = getFeesGroup(swaps);
82
+
83
+ return (
84
+ <>
85
+ <QuoteCost
86
+ onClickFee={() => setOpen(!open)}
87
+ fee={numberToString(
88
+ totalFee,
89
+ GAS_FEE_MIN_DECIMALS,
90
+ GAS_FEE_MAX_DECIMALS
91
+ )}
92
+ feeWarning={totalFee.gte(new BigNumber(GAS_FEE_MAX))}
93
+ time={totalTime}
94
+ steps={steps}
95
+ tooltipGas={i18n.t('View more info')}
96
+ tooltipContainer={container}
97
+ />
98
+
99
+ <Modal
100
+ container={container}
101
+ open={open}
102
+ header={
103
+ <ModalHeader>
104
+ <Typography variant="title" size="medium">
105
+ {i18n.t('Gas & Fee Explanation')}
106
+ </Typography>
107
+
108
+ <IconButton onClick={() => setOpen(false)} variant="ghost">
109
+ <CloseIcon color="gray" size={14} />
110
+ </IconButton>
111
+ </ModalHeader>
112
+ }
113
+ onClose={() => setOpen(false)}>
114
+ <ModalContainer>
115
+ <Typography variant="title" size="small">
116
+ {i18n.t('Details')}
117
+ </Typography>
118
+ <Divider size={10} />
119
+ {Object.entries(feesGroup.payable).flatMap(
120
+ ([payableFeesKey, feeArray]) =>
121
+ feeArray.map((fee, index) => {
122
+ const key = `payable-fee-${index}`;
123
+ const usdValue = getUsdFee(fee);
124
+ return (
125
+ <FeeSection key={key}>
126
+ <Typography
127
+ variant="label"
128
+ size="medium"
129
+ color="neutral600">
130
+ {NAME_OF_FEES[payableFeesKey as NameOfFees]}
131
+ </Typography>
132
+ <Tooltip
133
+ content={formatTooltipNumbers(fee.amount)}
134
+ container={container}>
135
+ <Typography variant="label" size="medium">
136
+ {numberToString(
137
+ fee.amount,
138
+ GAS_FEE_MIN_DECIMALS,
139
+ GAS_FEE_MAX_DECIMALS
140
+ )}{' '}
141
+ {fee.asset.symbol} ($
142
+ {numberToString(
143
+ usdValue,
144
+ USD_VALUE_MIN_DECIMALS,
145
+ USD_VALUE_MAX_DECIMALS
146
+ )}
147
+ )
148
+ </Typography>
149
+ </Tooltip>
150
+ </FeeSection>
151
+ );
152
+ })
153
+ )}
154
+
155
+ <FeeSection className="total_payable_fee">
156
+ <Typography variant="label" size="medium">
157
+ {i18n.t('Total Payable Fee')}
158
+ </Typography>
159
+ <Typography variant="label" size="medium">
160
+ $
161
+ {numberToString(
162
+ totalFee,
163
+ USD_VALUE_MIN_DECIMALS,
164
+ USD_VALUE_MAX_DECIMALS
165
+ )}
166
+ </Typography>
167
+ </FeeSection>
168
+ <Line />
169
+ {Object.keys(feesGroup.nonePayable).length && (
170
+ <CustomCollapsible
171
+ triggerAnchor="bottom"
172
+ onClickTrigger={() => setOpenCollapse((prev) => !prev)}
173
+ trigger={
174
+ <div className={trigger()}>
175
+ <Typography size="small" variant="body" color="neutral700">
176
+ {openCollapse
177
+ ? i18n.t('Hide non-payable fees')
178
+ : i18n.t('Show non-payable fees')}
179
+ </Typography>
180
+ <Divider size={4} direction="horizontal" />
181
+ <ExpandedIcon orientation={openCollapse ? 'up' : 'down'}>
182
+ <ChevronDownIcon size={12} color="gray" />
183
+ </ExpandedIcon>
184
+ </div>
185
+ }
186
+ open={openCollapse}>
187
+ <Typography size="small" variant="title">
188
+ {i18n.t('Description')}
189
+ </Typography>
190
+ <Divider size={4} />
191
+ <Typography size="small" variant="body" color="neutral700">
192
+ {i18n.t(`The following fees are considered in the transaction output and
193
+ you won’t need to pay extra gas for them.`)}
194
+ </Typography>
195
+ <Divider size={10} />
196
+ {Object.entries(feesGroup.nonePayable).map(
197
+ ([nonPayableFeesKey, fees], index) => {
198
+ const totalFeeInUsd = getTotalFeesInUsd(fees);
199
+ const label = NAME_OF_FEES[nonPayableFeesKey as NameOfFees];
200
+ const key = `non-payable-fee-${index}`;
201
+ return (
202
+ <NonPayableFee
203
+ key={key}
204
+ fee={totalFeeInUsd}
205
+ label={label}
206
+ />
207
+ );
208
+ }
209
+ )}
210
+
211
+ <Line />
212
+ </CustomCollapsible>
213
+ )}
214
+ </ModalContainer>
215
+ </Modal>
216
+ </>
217
+ );
218
+ }
@@ -1,5 +1,6 @@
1
1
  import type { PriceImpactWarningLevel, Step } from '@rango-dev/ui';
2
2
 
3
+ import { i18n } from '@lingui/core';
3
4
  import { TokenAmount } from '@rango-dev/ui';
4
5
  import React from 'react';
5
6
 
@@ -21,7 +22,7 @@ export function QuoteSummary(props: PropTypes) {
21
22
  <Container>
22
23
  <TokenAmount
23
24
  direction="horizontal"
24
- label="Swap input"
25
+ label={i18n.t('Swap input')}
25
26
  type="input"
26
27
  tooltipContainer={getContainer()}
27
28
  price={{
@@ -39,8 +40,8 @@ export function QuoteSummary(props: PropTypes) {
39
40
  <div className={separatorStyles()} />
40
41
  <TokenAmount
41
42
  direction="horizontal"
42
- label="Estimated output"
43
43
  tooltipContainer={getContainer()}
44
+ label={i18n.t('Estimated output')}
44
45
  type="output"
45
46
  price={{
46
47
  value: to.price.value,
@@ -0,0 +1,215 @@
1
+ import type { QuoteTriggerImagesProps, QuoteTriggerProps } from './Quote.types';
2
+
3
+ import { i18n } from '@lingui/core';
4
+ import {
5
+ ChevronDownIcon,
6
+ ChevronRightIcon,
7
+ Divider,
8
+ Image,
9
+ Tooltip,
10
+ Typography,
11
+ } from '@rango-dev/ui';
12
+ import React, { useEffect, useState } from 'react';
13
+
14
+ import { getContainer } from '../../utils/common';
15
+ import { getUniqueBlockchains } from '../../utils/quote';
16
+
17
+ import {
18
+ IconContainer,
19
+ ImageContainer,
20
+ MoreStep,
21
+ rowStyles,
22
+ Trigger,
23
+ } from './Quote.styles';
24
+
25
+ const MAX_STEPS = 4;
26
+ const MAX_BLOCKCHAINS = 6;
27
+ const MIN_WIDTH_WINDOW = 375;
28
+
29
+ const ImageComponent = (props: QuoteTriggerImagesProps) => {
30
+ const tooltipContainer = getContainer();
31
+ const { content, src, className, open, state } = props;
32
+ return (
33
+ <Tooltip
34
+ container={tooltipContainer}
35
+ side="bottom"
36
+ sideOffset={4}
37
+ open={open}
38
+ content={content}>
39
+ <ImageContainer className={className} state={state}>
40
+ <Image src={src} size={16} />
41
+ </ImageContainer>
42
+ </Tooltip>
43
+ );
44
+ };
45
+
46
+ export function QuoteTrigger(props: QuoteTriggerProps) {
47
+ const { quoteRef, recommended, setExpanded, steps, expanded } = props;
48
+ const tooltipContainer = getContainer();
49
+ const numberOfSteps = steps.length;
50
+ const blockchains = getUniqueBlockchains(steps);
51
+ const [isMobile, setIsMobile] = useState(false);
52
+
53
+ //choose the screen size
54
+ const handleResize = () => {
55
+ if (window.innerWidth < MIN_WIDTH_WINDOW) {
56
+ setIsMobile(true);
57
+ } else {
58
+ setIsMobile(false);
59
+ }
60
+ };
61
+
62
+ useEffect(() => {
63
+ window.addEventListener('resize', handleResize);
64
+ });
65
+
66
+ return (
67
+ <Trigger
68
+ ref={(ref) => (quoteRef.current = ref)}
69
+ recommended={recommended}
70
+ onClick={() => setExpanded((prevState) => !prevState)}>
71
+ <div className={rowStyles()}>
72
+ <Typography variant="body" size="xsmall">
73
+ {i18n.t('Via:')}
74
+ </Typography>
75
+ <Divider direction="horizontal" size={4} />
76
+ {steps.map((step, index) => {
77
+ const key = `item-${index}`;
78
+ const arrow = (
79
+ <IconContainer>
80
+ <ChevronRightIcon size={12} color="black" />
81
+ </IconContainer>
82
+ );
83
+
84
+ return isMobile ? (
85
+ <>
86
+ <ImageComponent
87
+ content={step.swapper.displayName}
88
+ src={step.swapper.image}
89
+ state={step.state}
90
+ />
91
+ {index !== numberOfSteps - 1 && <>{arrow}</>}
92
+ </>
93
+ ) : (
94
+ <React.Fragment key={key}>
95
+ {numberOfSteps <= MAX_STEPS ||
96
+ (numberOfSteps > MAX_STEPS && index < MAX_STEPS - 1) ? (
97
+ <>
98
+ <ImageComponent
99
+ content={step.swapper.displayName}
100
+ src={step.swapper.image}
101
+ state={step.state}
102
+ />
103
+ {index !== numberOfSteps - 1 && <>{arrow}</>}
104
+ </>
105
+ ) : (
106
+ index === MAX_STEPS - 1 && (
107
+ <Tooltip
108
+ container={tooltipContainer}
109
+ side="bottom"
110
+ align="right"
111
+ sideOffset={4}
112
+ content={
113
+ <div className={rowStyles()}>
114
+ {arrow}
115
+ {steps.map((step, i) => {
116
+ const key = `image-${i}`;
117
+ return (
118
+ i >= index && (
119
+ <React.Fragment key={key}>
120
+ <ImageComponent
121
+ content={step.swapper.displayName}
122
+ src={step.swapper.image}
123
+ state={step.state}
124
+ open={false}
125
+ />
126
+ {i !== numberOfSteps - 1 && <>{arrow}</>}
127
+ </React.Fragment>
128
+ )
129
+ );
130
+ })}
131
+ </div>
132
+ }>
133
+ <MoreStep
134
+ state={
135
+ steps.find(
136
+ (step, i) =>
137
+ i >= index &&
138
+ (step.state === 'error' || step.state === 'warning')
139
+ )?.state
140
+ }>
141
+ <Typography size="xsmall" variant="body">
142
+ +{numberOfSteps - index}
143
+ </Typography>
144
+ </MoreStep>
145
+ </Tooltip>
146
+ )
147
+ )}
148
+ </React.Fragment>
149
+ );
150
+ })}
151
+ </div>
152
+ <div className={rowStyles()}>
153
+ <div className="blockchains_section">
154
+ <div className={rowStyles()}>
155
+ <Typography variant="body" size="xsmall">
156
+ {i18n.t('Chains:')}
157
+ </Typography>
158
+ <Divider direction="horizontal" size={4} />
159
+ {blockchains.map((blockchain, index) => (
160
+ <>
161
+ {blockchains.length <= MAX_BLOCKCHAINS ||
162
+ (blockchains.length > MAX_BLOCKCHAINS &&
163
+ index < MAX_BLOCKCHAINS - 1) ? (
164
+ <ImageComponent
165
+ key={blockchain.displayName}
166
+ content={''}
167
+ src={blockchain.image}
168
+ open={false}
169
+ className={index !== 0 ? 'blockchainImage' : ''}
170
+ />
171
+ ) : (
172
+ index === MAX_BLOCKCHAINS - 1 && (
173
+ <Tooltip
174
+ container={tooltipContainer}
175
+ side="bottom"
176
+ align="right"
177
+ sideOffset={4}
178
+ content={
179
+ <div className={rowStyles()}>
180
+ {blockchains.map(
181
+ (chain, i) =>
182
+ i >= index && (
183
+ <ImageComponent
184
+ key={chain.displayName}
185
+ content={''}
186
+ src={chain.image}
187
+ open={false}
188
+ className={i > index ? 'blockchainImage' : ''}
189
+ />
190
+ )
191
+ )}
192
+ </div>
193
+ }>
194
+ <MoreStep className={'blockchainImage'}>
195
+ <Typography size="xsmall" variant="body">
196
+ +{blockchains.length - index}
197
+ </Typography>
198
+ </MoreStep>
199
+ </Tooltip>
200
+ )
201
+ )}
202
+ </>
203
+ ))}
204
+
205
+ <Divider direction="horizontal" size={32} />
206
+ </div>
207
+ </div>
208
+
209
+ <IconContainer orientation={expanded ? 'up' : 'down'}>
210
+ <ChevronDownIcon size={12} color="black" />
211
+ </IconContainer>
212
+ </div>
213
+ </Trigger>
214
+ );
215
+ }
@@ -28,13 +28,14 @@ import { Flex } from './QuoteWarningsAndErrors.styles';
28
28
 
29
29
  type Props = {
30
30
  open: boolean;
31
+ confirmationDisabled: boolean;
31
32
  onClose: () => void;
32
33
  onConfirm: () => void;
33
34
  warning: HighValueLossWarning;
34
35
  };
35
36
 
36
37
  export function HighValueLossWarningModal(props: Props) {
37
- const { open, onClose, onConfirm, warning } = props;
38
+ const { open, onClose, onConfirm, warning, confirmationDisabled } = props;
38
39
  const type = warning.warningLevel === 'high' ? 'error' : 'warning';
39
40
  const highValueLossData = [
40
41
  {
@@ -99,6 +100,7 @@ export function HighValueLossWarningModal(props: Props) {
99
100
  size="large"
100
101
  prefix={<WarningIcon />}
101
102
  fullWidth
103
+ disabled={confirmationDisabled}
102
104
  onClick={onConfirm}>
103
105
  {errorMessages().highValueLossError.confirmMessage}
104
106
  </Button>
@@ -2,7 +2,6 @@ import { darkTheme, styled } from '@rango-dev/ui';
2
2
 
3
3
  export const Alerts = styled('div', {
4
4
  width: '100%',
5
- paddingTop: '$10',
6
5
  });
7
6
 
8
7
  export const Flex = styled('div', {
@@ -17,8 +17,9 @@ export function QuoteWarningsAndErrors(props: PropTypes) {
17
17
  const {
18
18
  warning,
19
19
  error,
20
- refetchQuote,
21
20
  showWarningModal,
21
+ confirmationDisabled,
22
+ refetchQuote,
22
23
  onOpenWarningModal,
23
24
  onCloseWarningModal,
24
25
  onConfirmWarningModal,
@@ -26,6 +27,7 @@ export function QuoteWarningsAndErrors(props: PropTypes) {
26
27
  } = props;
27
28
 
28
29
  const warningModalHandlers = {
30
+ confirmationDisabled,
29
31
  open: showWarningModal,
30
32
  onClose: onCloseWarningModal,
31
33
  onConfirm: onConfirmWarningModal,
@@ -5,6 +5,7 @@ export interface PropTypes {
5
5
  error: QuoteError | null;
6
6
  warning: QuoteWarning | null;
7
7
  showWarningModal: boolean;
8
+ confirmationDisabled: boolean;
8
9
  refetchQuote: () => void;
9
10
  onOpenWarningModal: () => void;
10
11
  onCloseWarningModal: () => void;
@@ -15,6 +15,7 @@ import { getContainer } from '../../utils/common';
15
15
 
16
16
  type PropsTypes = {
17
17
  open: boolean;
18
+ confirmationDisabled: boolean;
18
19
  onClose: () => void;
19
20
  onConfirm: () => void;
20
21
  warning: InsufficientSlippageWarning | HighSlippageWarning;
@@ -22,7 +23,7 @@ type PropsTypes = {
22
23
 
23
24
  export function SlippageWarningModal(props: PropsTypes) {
24
25
  const { customSlippage, slippage } = useAppStore();
25
- const { open, onClose, onConfirm, warning } = props;
26
+ const { open, onClose, onConfirm, warning, confirmationDisabled } = props;
26
27
  const navigate = useNavigate();
27
28
  const userSlippage = customSlippage ?? slippage;
28
29
  return (
@@ -68,6 +69,7 @@ export function SlippageWarningModal(props: PropsTypes) {
68
69
  type="primary"
69
70
  variant="contained"
70
71
  fullWidth
72
+ disabled={confirmationDisabled}
71
73
  onClick={onConfirm}>
72
74
  {i18n.t('Confirm anyway')}
73
75
  </Button>
@@ -8,13 +8,14 @@ import { getContainer } from '../../utils/common';
8
8
 
9
9
  type Props = {
10
10
  open: boolean;
11
+ confirmationDisabled: boolean;
11
12
  onClose: () => void;
12
13
  onConfirm: () => void;
13
14
  warning: UnknownPriceWarning;
14
15
  };
15
16
 
16
17
  export function UnknownPriceWarningModal(props: Props) {
17
- const { open, onClose, onConfirm } = props;
18
+ const { open, onClose, onConfirm, confirmationDisabled } = props;
18
19
 
19
20
  return (
20
21
  <Modal open={open} onClose={onClose} container={getContainer()}>
@@ -30,6 +31,7 @@ export function UnknownPriceWarningModal(props: Props) {
30
31
  size="large"
31
32
  prefix={<WarningIcon />}
32
33
  fullWidth
34
+ disabled={confirmationDisabled}
33
35
  onClick={onConfirm}>
34
36
  {errorMessages().unknownPriceError.confirmMessage}
35
37
  </Button>
@@ -1,10 +1,5 @@
1
1
  import { styled } from '@rango-dev/ui';
2
2
 
3
- export const SettingsContainer = styled('div', {
4
- height: '100%',
5
- overflow: 'hidden',
6
- });
7
-
8
3
  export const LiquiditySourceList = styled('ul', {
9
4
  padding: '$15 $5 0',
10
5
  margin: 0,
@@ -1,5 +1,4 @@
1
1
  export {
2
- SettingsContainer,
3
2
  LiquiditySourceList,
4
3
  LiquiditySourceSuffix,
5
4
  NotFoundContainer,
@@ -72,12 +72,12 @@ export function Slippage() {
72
72
  value={customSlippage || ''}
73
73
  color="dark"
74
74
  onChange={(event) => {
75
- const parsedValue = parseFloat(event.target.value);
76
- if (
77
- !parsedValue ||
78
- (parsedValue >= MIN_SLIPPGAE && parsedValue <= MAX_SLIPPAGE)
79
- ) {
75
+ const value = event.target.value;
76
+ const parsedValue = parseFloat(value);
77
+ if (parsedValue >= MIN_SLIPPGAE && parsedValue <= MAX_SLIPPAGE) {
80
78
  setCustomSlippage(parsedValue);
79
+ } else {
80
+ setCustomSlippage(null);
81
81
  }
82
82
  }}
83
83
  suffix={
@@ -15,7 +15,7 @@ export function SlippageTooltipContent() {
15
15
  <br />
16
16
  <b>{i18n.t('Warning')}</b>:
17
17
  {i18n.t(
18
- 'This setting is applied per step, e.g. 1Inch, Thorchain, etc. and only that step will be reverted, not the whole transaction'
18
+ 'This setting is applied per step (e.g. 1Inch, Thorchain, etc) which means only the step will be reverted, not the whole transaction.'
19
19
  )}
20
20
  </Typography>
21
21
  </SlippageTooltipContainer>
@@ -1,13 +1,7 @@
1
1
  import type { SwapDetailsPlaceholderPropTypes } from './SwapDetails.types';
2
2
 
3
3
  import { i18n } from '@lingui/core';
4
- import {
5
- CopyIcon,
6
- IconButton,
7
- NotFound,
8
- Skeleton,
9
- Typography,
10
- } from '@rango-dev/ui';
4
+ import { Divider, NotFound, Skeleton, Typography } from '@rango-dev/ui';
11
5
  import React from 'react';
12
6
 
13
7
  import { SuffixContainer } from '../HeaderButtons/HeaderButtons.styles';
@@ -16,6 +10,7 @@ import { LoadingSwapDetails } from '../LoadingSwapDetails';
16
10
 
17
11
  import {
18
12
  Container,
13
+ datePlaceholderStyles,
19
14
  HeaderDetails,
20
15
  PlaceholderContainer,
21
16
  requestIdStyles,
@@ -26,7 +21,6 @@ export function SwapDetailsPlaceholder(props: SwapDetailsPlaceholderPropTypes) {
26
21
  const { requestId, showSkeleton } = props;
27
22
  return (
28
23
  <Layout
29
- noPadding
30
24
  header={{
31
25
  title: i18n.t('Swap and Bridge'),
32
26
  suffix: <SuffixContainer />,
@@ -42,14 +36,19 @@ export function SwapDetailsPlaceholder(props: SwapDetailsPlaceholderPropTypes) {
42
36
  <Typography variant="label" size="small" color="neutral700">
43
37
  <Skeleton width={60} height={10} variant="rounded" />
44
38
  </Typography>
45
- <IconButton variant="ghost">
46
- <CopyIcon size={16} color="gray" />
47
- </IconButton>
39
+ <Divider direction="horizontal" size={4} />
40
+ <Skeleton width={16} height={16} variant="rectangular" />
41
+ <Divider direction="horizontal" size={4} />
42
+ <Skeleton width={16} height={16} variant="rectangular" />
48
43
  </div>
49
44
  </div>
50
45
  <div className={rowStyles()}>
51
- <Typography variant="label" size="large" color="neutral700">
52
- {`${i18n.t('Created at')}:`}
46
+ <Typography
47
+ className={datePlaceholderStyles()}
48
+ variant="label"
49
+ size="large"
50
+ color="neutral700">
51
+ <Skeleton width={60} height={10} variant="rounded" />
53
52
  </Typography>
54
53
  <Typography variant="label" size="small" color="neutral700">
55
54
  <Skeleton width={60} height={10} variant="rounded" />