@rango-dev/widget-embedded 0.23.1-next.8 → 0.24.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 (187) hide show
  1. package/dist/components/AppRouter.d.ts +1 -6
  2. package/dist/components/AppRouter.d.ts.map +1 -1
  3. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts +1 -283
  4. package/dist/components/ConfirmWalletsModal/ConfirmWallets.styles.d.ts.map +1 -1
  5. package/dist/components/ConfirmWalletsModal/ConfirmWalletsModal.d.ts.map +1 -1
  6. package/dist/components/HeaderButtons/HeaderButtons.d.ts.map +1 -1
  7. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts +489 -1
  8. package/dist/components/HeaderButtons/HeaderButtons.styles.d.ts.map +1 -1
  9. package/dist/components/HeaderButtons/InProgressTransactionBadge.d.ts +4 -0
  10. package/dist/components/HeaderButtons/InProgressTransactionBadge.d.ts.map +1 -0
  11. package/dist/components/HeaderButtons/RefreshButton.d.ts.map +1 -1
  12. package/dist/components/HeaderButtons/UnreadNotificationsBadge.d.ts.map +1 -1
  13. package/dist/components/HeaderButtons/WalletButton.d.ts.map +1 -1
  14. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts +1 -1
  15. package/dist/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.d.ts.map +1 -1
  16. package/dist/components/NoResult/NoResult.d.ts.map +1 -1
  17. package/dist/components/NoResult/NoResult.helpers.d.ts +8 -0
  18. package/dist/components/NoResult/NoResult.helpers.d.ts.map +1 -1
  19. package/dist/components/NoResult/NoResult.styles.d.ts +167 -1
  20. package/dist/components/NoResult/NoResult.styles.d.ts.map +1 -1
  21. package/dist/components/NoResult/NoResult.types.d.ts +1 -0
  22. package/dist/components/NoResult/NoResult.types.d.ts.map +1 -1
  23. package/dist/components/NotificationContent/NotificationContent.d.ts.map +1 -1
  24. package/dist/components/NotificationContent/NotificationContent.styles.d.ts +165 -0
  25. package/dist/components/NotificationContent/NotificationContent.styles.d.ts.map +1 -1
  26. package/dist/components/Quote/Quote.d.ts.map +1 -1
  27. package/dist/components/Quote/Quote.styles.d.ts.map +1 -1
  28. package/dist/components/Quote/Quote.types.d.ts +1 -0
  29. package/dist/components/Quote/Quote.types.d.ts.map +1 -1
  30. package/dist/components/Quote/QuoteTrigger.d.ts.map +1 -1
  31. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts +1 -0
  32. package/dist/components/QuoteSkeleton/QuoteSkeleton.styles.d.ts.map +1 -1
  33. package/dist/components/QuoteSkeleton/QuoteSummarySkeleton.d.ts.map +1 -1
  34. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts +3 -1
  35. package/dist/components/QuoteSkeleton/StepSkeleton.styles.d.ts.map +1 -1
  36. package/dist/components/Quotes/Quotes.d.ts.map +1 -1
  37. package/dist/components/Quotes/Quotes.types.d.ts +1 -0
  38. package/dist/components/Quotes/Quotes.types.d.ts.map +1 -1
  39. package/dist/components/Quotes/SelectStrategy.d.ts.map +1 -1
  40. package/dist/components/Slippage/Slippage.d.ts.map +1 -1
  41. package/dist/components/SwapDetails/SwapDetails.d.ts.map +1 -1
  42. package/dist/components/SwapDetailsModal/SwapDetailsModal.WalletState.d.ts.map +1 -1
  43. package/dist/components/TokenList/TokenList.d.ts.map +1 -1
  44. package/dist/constants/index.d.ts +1 -1
  45. package/dist/constants/index.d.ts.map +1 -1
  46. package/dist/constants/languages.d.ts.map +1 -1
  47. package/dist/constants/quote.d.ts +1 -5
  48. package/dist/constants/quote.d.ts.map +1 -1
  49. package/dist/constants/searchFor.d.ts +7 -0
  50. package/dist/constants/searchFor.d.ts.map +1 -0
  51. package/dist/containers/App/App.d.ts.map +1 -1
  52. package/dist/containers/App/App.styles.d.ts.map +1 -1
  53. package/dist/containers/ExpandedQuotes/ExpandedQuotes.d.ts.map +1 -1
  54. package/dist/containers/ExpandedQuotes/ExpandedQuotes.styles.d.ts +3 -1
  55. package/dist/containers/ExpandedQuotes/ExpandedQuotes.styles.d.ts.map +1 -1
  56. package/dist/containers/Inputs/Inputs.d.ts.map +1 -1
  57. package/dist/containers/Inputs/Inputs.types.d.ts +1 -0
  58. package/dist/containers/Inputs/Inputs.types.d.ts.map +1 -1
  59. package/dist/containers/QuoteInfo/QuoteInfo.d.ts.map +1 -1
  60. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts +1 -0
  61. package/dist/containers/QuoteInfo/QuoteInfo.types.d.ts.map +1 -1
  62. package/dist/containers/Settings/Lists.d.ts.map +1 -1
  63. package/dist/containers/Wallets/Wallets.d.ts.map +1 -1
  64. package/dist/containers/Wallets/Wallets.types.d.ts +13 -2
  65. package/dist/containers/Wallets/Wallets.types.d.ts.map +1 -1
  66. package/dist/containers/Widget/Widget.d.ts.map +1 -1
  67. package/dist/hooks/useBootstrap/index.d.ts +2 -0
  68. package/dist/hooks/useBootstrap/index.d.ts.map +1 -0
  69. package/dist/hooks/useBootstrap/useBootstrap.d.ts +2 -0
  70. package/dist/hooks/useBootstrap/useBootstrap.d.ts.map +1 -0
  71. package/dist/hooks/useScreenDetect.d.ts +9 -0
  72. package/dist/hooks/useScreenDetect.d.ts.map +1 -0
  73. package/dist/hooks/useSwapInput.d.ts.map +1 -1
  74. package/dist/hooks/useTheme.d.ts.map +1 -1
  75. package/dist/hooks/useWalletList.d.ts.map +1 -1
  76. package/dist/index.js +2 -2
  77. package/dist/index.js.map +4 -4
  78. package/dist/pages/ConfirmSwapPage.d.ts.map +1 -1
  79. package/dist/pages/Home.d.ts.map +1 -1
  80. package/dist/pages/LanguagePage.d.ts.map +1 -1
  81. package/dist/pages/LiquiditySourcePage.d.ts.map +1 -1
  82. package/dist/pages/SelectSwapItemsPage.d.ts.map +1 -1
  83. package/dist/pages/SettingsPage.d.ts.map +1 -1
  84. package/dist/store/AppStore.d.ts +2 -2
  85. package/dist/store/app.d.ts +2 -2
  86. package/dist/store/slices/config.d.ts.map +1 -1
  87. package/dist/store/slices/data.d.ts +3 -1
  88. package/dist/store/slices/data.d.ts.map +1 -1
  89. package/dist/store/slices/settings.d.ts.map +1 -1
  90. package/dist/types/config.d.ts +9 -5
  91. package/dist/types/config.d.ts.map +1 -1
  92. package/dist/utils/colors.d.ts +5 -3
  93. package/dist/utils/colors.d.ts.map +1 -1
  94. package/dist/utils/common.d.ts +4 -0
  95. package/dist/utils/common.d.ts.map +1 -1
  96. package/dist/utils/configs.d.ts +2 -1
  97. package/dist/utils/configs.d.ts.map +1 -1
  98. package/dist/utils/meta.d.ts +1 -0
  99. package/dist/utils/meta.d.ts.map +1 -1
  100. package/dist/utils/swap.d.ts +2 -0
  101. package/dist/utils/swap.d.ts.map +1 -1
  102. package/dist/utils/ui.d.ts +5 -2
  103. package/dist/utils/ui.d.ts.map +1 -1
  104. package/dist/utils/wallets.d.ts +1 -1
  105. package/dist/utils/wallets.d.ts.map +1 -1
  106. package/package.json +8 -7
  107. package/src/components/AppRouter.tsx +1 -29
  108. package/src/components/ConfirmWalletsModal/ConfirmWallets.styles.ts +6 -12
  109. package/src/components/ConfirmWalletsModal/ConfirmWalletsModal.tsx +7 -11
  110. package/src/components/ConfirmWalletsModal/WalletList.tsx +2 -2
  111. package/src/components/HeaderButtons/HeaderButtons.styles.ts +43 -2
  112. package/src/components/HeaderButtons/HeaderButtons.tsx +2 -0
  113. package/src/components/HeaderButtons/InProgressTransactionBadge.tsx +26 -0
  114. package/src/components/HeaderButtons/RefreshButton.tsx +2 -1
  115. package/src/components/HeaderButtons/UnreadNotificationsBadge.tsx +10 -2
  116. package/src/components/HeaderButtons/WalletButton.tsx +26 -6
  117. package/src/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.styles.ts +1 -1
  118. package/src/components/LoadingLiquiditySourceList/LoadingLiquiditySourceList.tsx +4 -4
  119. package/src/components/NoResult/NoResult.helpers.ts +13 -0
  120. package/src/components/NoResult/NoResult.styles.ts +19 -1
  121. package/src/components/NoResult/NoResult.tsx +27 -16
  122. package/src/components/NoResult/NoResult.types.ts +1 -0
  123. package/src/components/NotificationContent/NotificationContent.styles.ts +14 -1
  124. package/src/components/NotificationContent/NotificationContent.tsx +49 -39
  125. package/src/components/Quote/Quote.styles.ts +13 -14
  126. package/src/components/Quote/Quote.tsx +166 -145
  127. package/src/components/Quote/Quote.types.ts +1 -0
  128. package/src/components/Quote/QuoteTrigger.tsx +19 -14
  129. package/src/components/QuoteSkeleton/QuoteSkeleton.styles.ts +10 -2
  130. package/src/components/QuoteSkeleton/QuoteSkeleton.tsx +2 -2
  131. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.styles.ts +2 -2
  132. package/src/components/QuoteSkeleton/QuoteSummarySkeleton.tsx +5 -4
  133. package/src/components/QuoteSkeleton/StepSkeleton.styles.ts +7 -0
  134. package/src/components/QuoteSkeleton/StepSkeleton.tsx +1 -1
  135. package/src/components/QuoteWarningsAndErrors/HighValueLossWarningModal.tsx +1 -1
  136. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.helpers.ts +3 -3
  137. package/src/components/QuoteWarningsAndErrors/QuoteWarningsAndErrors.styles.ts +1 -1
  138. package/src/components/Quotes/Quotes.tsx +33 -21
  139. package/src/components/Quotes/Quotes.types.ts +1 -0
  140. package/src/components/Quotes/SelectStrategy.tsx +27 -10
  141. package/src/components/Slippage/Slippage.tsx +11 -13
  142. package/src/components/SwapDetails/SwapDetails.tsx +3 -1
  143. package/src/components/SwapDetailsModal/SwapDetailsModal.WalletState.tsx +5 -1
  144. package/src/components/TokenList/TokenList.tsx +9 -8
  145. package/src/constants/errors.ts +1 -1
  146. package/src/constants/index.ts +1 -1
  147. package/src/constants/languages.ts +27 -1
  148. package/src/constants/quote.ts +1 -24
  149. package/src/constants/searchFor.ts +6 -0
  150. package/src/containers/App/App.styles.ts +0 -4
  151. package/src/containers/App/App.tsx +4 -28
  152. package/src/containers/ExpandedQuotes/ExpandedQuotes.styles.ts +13 -0
  153. package/src/containers/ExpandedQuotes/ExpandedQuotes.tsx +5 -0
  154. package/src/containers/Inputs/Inputs.tsx +2 -3
  155. package/src/containers/Inputs/Inputs.types.ts +1 -0
  156. package/src/containers/QuoteInfo/QuoteInfo.tsx +2 -0
  157. package/src/containers/QuoteInfo/QuoteInfo.types.ts +1 -0
  158. package/src/containers/Settings/Lists.tsx +28 -13
  159. package/src/containers/Wallets/Wallets.tsx +27 -10
  160. package/src/containers/Wallets/Wallets.types.ts +13 -2
  161. package/src/containers/Widget/Widget.tsx +13 -13
  162. package/src/hooks/useBootstrap/index.ts +1 -0
  163. package/src/hooks/useBootstrap/useBootstrap.ts +72 -0
  164. package/src/hooks/useScreenDetect.ts +49 -0
  165. package/src/hooks/useSwapInput.ts +7 -2
  166. package/src/hooks/useTheme.ts +1 -8
  167. package/src/hooks/useWalletList.ts +12 -0
  168. package/src/pages/ConfirmSwapPage.tsx +14 -5
  169. package/src/pages/Home.tsx +29 -7
  170. package/src/pages/LanguagePage.tsx +14 -1
  171. package/src/pages/LiquiditySourcePage.tsx +4 -3
  172. package/src/pages/SelectSwapItemsPage.tsx +2 -7
  173. package/src/pages/SettingsPage.tsx +0 -1
  174. package/src/store/slices/config.ts +3 -2
  175. package/src/store/slices/data.ts +82 -34
  176. package/src/store/slices/settings.ts +10 -4
  177. package/src/types/config.ts +9 -5
  178. package/src/utils/colors.ts +106 -75
  179. package/src/utils/common.ts +181 -0
  180. package/src/utils/configs.ts +12 -1
  181. package/src/utils/meta.ts +21 -0
  182. package/src/utils/swap.ts +12 -5
  183. package/src/utils/ui.ts +7 -5
  184. package/src/utils/wallets.ts +5 -47
  185. package/dist/hooks/useMobileDetect.d.ts +0 -3
  186. package/dist/hooks/useMobileDetect.d.ts.map +0 -1
  187. package/src/hooks/useMobileDetect.ts +0 -21
@@ -6,6 +6,7 @@ import { i18n } from '@lingui/core';
6
6
  import {
7
7
  Alert,
8
8
  Divider,
9
+ FullExpandedQuote,
9
10
  InfoIcon,
10
11
  QuoteTag,
11
12
  StepDetails,
@@ -33,7 +34,7 @@ import {
33
34
  } from '../../containers/QuoteInfo/QuoteInfo.styles';
34
35
  import { useAppStore } from '../../store/AppStore';
35
36
  import { QuoteErrorType, QuoteWarningType } from '../../types';
36
- import { getContainer } from '../../utils/common';
37
+ import { getContainer, getExpanded } from '../../utils/common';
37
38
  import {
38
39
  getBlockchainShortNameFor,
39
40
  getSwapperDisplayName,
@@ -83,6 +84,7 @@ export function Quote(props: QuoteProps) {
83
84
  tagHidden = true,
84
85
  showModalFee = true,
85
86
  onClickAllRoutes,
87
+ fullExpandedMode = false,
86
88
  } = props;
87
89
  const blockchains = useAppStore().blockchains();
88
90
  const tokens = useAppStore().tokens();
@@ -298,157 +300,176 @@ export function Quote(props: QuoteProps) {
298
300
  GAS_FEE_MAX_DECIMALS
299
301
  );
300
302
 
301
- return (
302
- <>
303
- <SummaryContainer
304
- selected={selected}
305
- listItem={type === 'list-item'}
306
- basic={type === 'basic'}>
307
- <div className={summaryStyles()}>
308
- {!tagHidden && sortedQuoteTags.length ? (
309
- <>
310
- <TagContainer>
311
- {sortedQuoteTags.map((tag, index) => {
312
- const key = `${tag.value}_${index}`;
313
- return (
314
- <>
315
- <QuoteTag label={tag.label} key={key} value={tag.value} />
316
- <Divider size={4} direction="horizontal" />
317
- </>
318
- );
319
- })}
320
- </TagContainer>
321
- <Line />
322
- {!showAllRoutesButton && <Divider size={4} />}
323
- </>
324
- ) : null}
325
- <div id="portal-root" className={summaryHeaderStyles()}>
326
- <QuoteCostDetails
327
- quote={quote}
328
- time={totalTime}
329
- fee={fee}
330
- feeWarning={totalFee.gte(new BigNumber(GAS_FEE_MAX))}
331
- showModalFee={showModalFee}
332
- steps={numberOfSteps}
333
- />
303
+ const feeWarning = totalFee.gte(new BigNumber(GAS_FEE_MAX));
334
304
 
335
- {showAllRoutesButton && (
336
- <AllRoutesButton
337
- onClick={(e) => {
338
- e.stopPropagation();
339
- onClickAllRoutes();
340
- }}
341
- size="xxsmall"
342
- type="secondary"
343
- variant="default">
344
- <Typography color="secondary" variant="label" size="medium">
345
- {i18n.t('See All Routes')}
346
- </Typography>
347
- </AllRoutesButton>
348
- )}
349
- </div>
350
- {type === 'basic' && (
351
- <div className={basicInfoStyles()}>
352
- <FrameIcon>
353
- <InfoIcon size={12} color="gray" />
354
- </FrameIcon>
355
- <ContainerInfoOutput>
356
- <BasicInfoOutput size="small" variant="body">
357
- {`${roundedInput} ${steps[0].from.token.displayName} = `}
358
- </BasicInfoOutput>
359
- <Tooltip
360
- content={formatTooltipNumbers(output.value)}
361
- container={container}
362
- open={!output.value ? false : undefined}>
363
- <BasicInfoOutput size="small" variant="body">
364
- &nbsp;
365
- {`${roundedOutput} ${
366
- steps[steps.length - 1].to.token.displayName
367
- }`}
368
- </BasicInfoOutput>
369
- </Tooltip>
370
- </ContainerInfoOutput>
305
+ return fullExpandedMode ? (
306
+ <FullExpandedQuote
307
+ selected={selected}
308
+ fee={fee}
309
+ time={totalTime}
310
+ tooltipContainer={getExpanded()}
311
+ steps={steps}
312
+ tags={sortedQuoteTags}
313
+ feeWarning={feeWarning}
314
+ percentageChange={percentageChange}
315
+ warningLevel={priceImpactWarningLevel}
316
+ outputPrice={{
317
+ value: roundedOutput,
318
+ usdValue: roundedOutputUsdValue,
319
+ realValue: formatTooltipNumbers(output.value),
320
+ realUsdValue: formatTooltipNumbers(output.usdValue),
321
+ }}
322
+ />
323
+ ) : (
324
+ <SummaryContainer
325
+ selected={selected}
326
+ listItem={type === 'list-item'}
327
+ basic={type === 'basic'}>
328
+ <div className={summaryStyles()}>
329
+ {!tagHidden && sortedQuoteTags.length ? (
330
+ <>
331
+ <TagContainer>
332
+ {sortedQuoteTags.map((tag, index) => {
333
+ const key = `${tag.value}_${index}`;
334
+ return (
335
+ <React.Fragment key={key}>
336
+ <QuoteTag label={tag.label} value={tag.value} />
337
+ <Divider size={4} direction="horizontal" />
338
+ </React.Fragment>
339
+ );
340
+ })}
341
+ </TagContainer>
342
+ <Line />
343
+ {!showAllRoutesButton && <Divider size={4} />}
344
+ </>
345
+ ) : null}
346
+ <div id="portal-root" className={summaryHeaderStyles()}>
347
+ <QuoteCostDetails
348
+ quote={quote}
349
+ time={totalTime}
350
+ fee={fee}
351
+ feeWarning={feeWarning}
352
+ showModalFee={showModalFee}
353
+ steps={numberOfSteps}
354
+ />
355
+
356
+ {showAllRoutesButton && (
357
+ <AllRoutesButton
358
+ onClick={(e) => {
359
+ e.stopPropagation();
360
+ onClickAllRoutes();
361
+ }}
362
+ size="xxsmall"
363
+ type="secondary"
364
+ variant="default">
365
+ <Typography color="secondary" variant="label" size="medium">
366
+ {i18n.t('See All Routes')}
367
+ </Typography>
368
+ </AllRoutesButton>
369
+ )}
370
+ </div>
371
+ {type === 'basic' && (
372
+ <div className={basicInfoStyles()}>
373
+ <FrameIcon>
374
+ <InfoIcon size={12} color="gray" />
375
+ </FrameIcon>
376
+ <ContainerInfoOutput>
377
+ <BasicInfoOutput size="small" variant="body">
378
+ {`${roundedInput} ${steps[0].from.token.displayName} = `}
379
+ </BasicInfoOutput>
371
380
  <Tooltip
372
- content={formatTooltipNumbers(output.usdValue)}
381
+ content={formatTooltipNumbers(output.value)}
373
382
  container={container}
374
- style={{
375
- display: 'flex',
376
- }}>
377
- <Typography
378
- color="$neutral600"
379
- ml={2}
380
- size="xsmall"
381
- variant="body">
382
- {`($${roundedOutputUsdValue})`}
383
- </Typography>
383
+ open={!output.value ? false : undefined}>
384
+ <BasicInfoOutput size="small" variant="body">
385
+ &nbsp;
386
+ {`${roundedOutput} ${
387
+ steps[steps.length - 1].to.token.displayName
388
+ }`}
389
+ </BasicInfoOutput>
384
390
  </Tooltip>
385
- </div>
386
- )}
387
- {type === 'list-item' && (
388
- <TokenAmount
389
- tooltipContainer={container}
390
- type="output"
391
- direction="vertical"
392
- price={{
393
- value: roundedOutput,
394
- usdValue: roundedOutputUsdValue,
395
- realValue: formatTooltipNumbers(output.value),
396
- realUsdValue: formatTooltipNumbers(output.usdValue),
397
- }}
398
- token={{
399
- displayName: steps[numberOfSteps - 1].to.token.displayName,
400
- image: steps[numberOfSteps - 1].to.token.image,
401
- }}
402
- chain={{ image: steps[numberOfSteps - 1].to.chain.image }}
391
+ </ContainerInfoOutput>
392
+ <Tooltip
393
+ content={formatTooltipNumbers(output.usdValue)}
394
+ container={container}
395
+ style={{
396
+ display: 'flex',
397
+ }}>
398
+ <Typography
399
+ color="$neutral600"
400
+ ml={2}
401
+ size="xsmall"
402
+ variant="body">
403
+ {`($${roundedOutputUsdValue})`}
404
+ </Typography>
405
+ </Tooltip>
406
+ </div>
407
+ )}
408
+ {type === 'list-item' && (
409
+ <TokenAmount
410
+ tooltipContainer={container}
411
+ type="output"
412
+ direction="vertical"
413
+ price={{
414
+ value: roundedOutput,
415
+ usdValue: roundedOutputUsdValue,
416
+ realValue: formatTooltipNumbers(output.value),
417
+ realUsdValue: formatTooltipNumbers(output.usdValue),
418
+ }}
419
+ token={{
420
+ displayName: steps[numberOfSteps - 1].to.token.displayName,
421
+ image: steps[numberOfSteps - 1].to.token.image,
422
+ }}
423
+ chain={{ image: steps[numberOfSteps - 1].to.chain.image }}
424
+ percentageChange={percentageChange}
425
+ warningLevel={priceImpactWarningLevel}
426
+ />
427
+ )}
428
+ {type === 'swap-preview' && (
429
+ <>
430
+ <QuoteSummary
431
+ from={steps[0].from}
432
+ to={steps[numberOfSteps - 1].to}
403
433
  percentageChange={percentageChange}
404
434
  warningLevel={priceImpactWarningLevel}
405
435
  />
406
- )}
407
- {type === 'swap-preview' && (
408
- <>
409
- <QuoteSummary
410
- from={steps[0].from}
411
- to={steps[numberOfSteps - 1].to}
412
- percentageChange={percentageChange}
413
- warningLevel={priceImpactWarningLevel}
414
- />
415
- <Divider size={4} />
416
- </>
417
- )}
418
- </div>
419
- <QuoteContainer
436
+ <Divider size={4} />
437
+ </>
438
+ )}
439
+ </div>
440
+ <QuoteContainer
441
+ selected={selected}
442
+ listItem={type === 'list-item'}
443
+ open={expanded}
444
+ className="quote_container"
445
+ onOpenChange={setExpanded}>
446
+ <QuoteTrigger
447
+ type={type}
448
+ quoteRef={quoteRef}
420
449
  selected={selected}
421
- listItem={type === 'list-item'}
422
- open={expanded}
423
- onOpenChange={setExpanded}>
424
- <QuoteTrigger
425
- type={type}
426
- quoteRef={quoteRef}
427
- selected={selected}
428
- setExpanded={setExpanded}
429
- expanded={expanded}
430
- steps={steps}
431
- />
432
- <Content open={expanded}>
433
- <HorizontalSeparator />
434
- <div className={stepsDetailsStyles()}>
435
- {steps.map((step, index) => {
436
- const key = `item-${index}`;
437
- return (
438
- <StepDetails
439
- type="quote-details"
440
- key={key}
441
- tooltipContainer={container}
442
- step={step}
443
- hasSeparator={index !== steps.length - 1}
444
- state={step.state}
445
- />
446
- );
447
- })}
448
- </div>
449
- </Content>
450
- </QuoteContainer>
451
- </SummaryContainer>
452
- </>
450
+ setExpanded={setExpanded}
451
+ expanded={expanded}
452
+ steps={steps}
453
+ />
454
+ <Content open={expanded}>
455
+ <HorizontalSeparator />
456
+ <div className={stepsDetailsStyles()}>
457
+ {steps.map((step, index) => {
458
+ const key = `item-${index}`;
459
+ return (
460
+ <StepDetails
461
+ type="quote-details"
462
+ key={key}
463
+ tooltipContainer={container}
464
+ step={step}
465
+ hasSeparator={index !== steps.length - 1}
466
+ state={step.state}
467
+ />
468
+ );
469
+ })}
470
+ </div>
471
+ </Content>
472
+ </QuoteContainer>
473
+ </SummaryContainer>
453
474
  );
454
475
  }
@@ -14,6 +14,7 @@ export type QuoteProps = {
14
14
  selected?: boolean;
15
15
  showModalFee?: boolean;
16
16
  onClickAllRoutes?: () => void;
17
+ fullExpandedMode?: boolean;
17
18
  };
18
19
 
19
20
  export type optionProps = {
@@ -11,7 +11,7 @@ import {
11
11
  } from '@rango-dev/ui';
12
12
  import React from 'react';
13
13
 
14
- import useMobileDetect from '../../hooks/useMobileDetect';
14
+ import useScreenDetect from '../../hooks/useScreenDetect';
15
15
  import { getContainer } from '../../utils/common';
16
16
  import { getUniqueBlockchains } from '../../utils/quote';
17
17
 
@@ -48,7 +48,7 @@ export function QuoteTrigger(props: QuoteTriggerProps) {
48
48
  const tooltipContainer = getContainer();
49
49
  const numberOfSteps = steps.length;
50
50
  const blockchains = getUniqueBlockchains(steps);
51
- const isMobile = useMobileDetect();
51
+ const { isTablet, isMobile } = useScreenDetect();
52
52
 
53
53
  return (
54
54
  <Trigger
@@ -72,15 +72,15 @@ export function QuoteTrigger(props: QuoteTriggerProps) {
72
72
  </IconContainer>
73
73
  );
74
74
 
75
- return isMobile ? (
76
- <>
75
+ return isMobile || isTablet ? (
76
+ <React.Fragment key={key}>
77
77
  <ImageComponent
78
78
  content={step.swapper.displayName}
79
79
  src={step.swapper.image}
80
80
  state={step.state}
81
81
  />
82
82
  {index !== numberOfSteps - 1 && <>{arrow}</>}
83
- </>
83
+ </React.Fragment>
84
84
  ) : (
85
85
  <React.Fragment key={key}>
86
86
  {numberOfSteps <= MAX_STEPS ||
@@ -148,17 +148,22 @@ export function QuoteTrigger(props: QuoteTriggerProps) {
148
148
  </Typography>
149
149
  <Divider direction="horizontal" size={4} />
150
150
  {blockchains.map((blockchain, index) => (
151
- <>
151
+ <React.Fragment key={blockchain.displayName}>
152
152
  {blockchains.length <= MAX_BLOCKCHAINS ||
153
153
  (blockchains.length > MAX_BLOCKCHAINS &&
154
154
  index < MAX_BLOCKCHAINS - 1) ? (
155
- <ImageComponent
156
- key={blockchain.displayName}
157
- content={''}
158
- src={blockchain.image}
159
- open={false}
160
- className={index !== 0 ? 'blockchainImage' : ''}
161
- />
155
+ <Tooltip
156
+ container={tooltipContainer}
157
+ side="bottom"
158
+ content={blockchain.displayName}
159
+ sideOffset={4}>
160
+ <ImageComponent
161
+ content={''}
162
+ src={blockchain.image}
163
+ open={false}
164
+ className={index !== 0 ? 'blockchainImage' : ''}
165
+ />
166
+ </Tooltip>
162
167
  ) : (
163
168
  index === MAX_BLOCKCHAINS - 1 && (
164
169
  <Tooltip
@@ -190,7 +195,7 @@ export function QuoteTrigger(props: QuoteTriggerProps) {
190
195
  </Tooltip>
191
196
  )
192
197
  )}
193
- </>
198
+ </React.Fragment>
194
199
  ))}
195
200
 
196
201
  <Divider direction="horizontal" size={32} />
@@ -8,13 +8,21 @@ export const Container = styled('div', {
8
8
  backgroundColor: '$$color',
9
9
  borderBottomLeftRadius: '$xm',
10
10
  borderBottomRightRadius: '$xm',
11
- padding: '$15 ',
11
+ padding: '$15',
12
12
  variants: {
13
13
  rounded: {
14
14
  true: {
15
15
  borderRadius: '$xm',
16
16
  },
17
17
  },
18
+ expanded: {
19
+ true: {
20
+ paddingBottom: '3px',
21
+ },
22
+ false: {
23
+ paddingBottom: '$12',
24
+ },
25
+ },
18
26
  },
19
27
  });
20
28
 
@@ -27,7 +35,7 @@ export const Steps = styled('div', {
27
35
  });
28
36
 
29
37
  export const StepSeparator = styled('div', {
30
- borderLeft: '1px dashed black',
38
+ borderLeft: '1px dashed $foreground',
31
39
  minHeight: ' 0',
32
40
  margin: '0px 11.5px',
33
41
  alignSelf: 'stretch',
@@ -11,7 +11,7 @@ export function QuoteSkeleton(props: PropTypes) {
11
11
  const { type, expanded, tagHidden = false } = props;
12
12
 
13
13
  return (
14
- <Container rounded={type !== 'basic'}>
14
+ <Container expanded={expanded} rounded={type !== 'basic'}>
15
15
  <QuoteSummarySkeleton type={type} tagHidden={tagHidden} />
16
16
  <Chains>
17
17
  <Skeleton height={15} variant="rounded" />
@@ -19,7 +19,7 @@ export function QuoteSkeleton(props: PropTypes) {
19
19
 
20
20
  {expanded && (
21
21
  <Steps>
22
- <Divider size={20} />
22
+ <Divider size={24} />
23
23
  <StepSkeleton />
24
24
  <StepSkeleton />
25
25
  <StepSkeleton separator={false} />
@@ -9,7 +9,7 @@ export const BasicSummary = styled('div', {
9
9
  });
10
10
 
11
11
  export const Output = styled('div', {
12
- padding: '$12 $0 $20 $0',
12
+ padding: '14px $0 $20 $0',
13
13
  display: 'flex',
14
14
  flexDirection: 'column',
15
15
  });
@@ -27,7 +27,7 @@ export const QuoteSummary = styled('div', {
27
27
  });
28
28
 
29
29
  export const QuoteSummarySeparator = styled('div', {
30
- height: '$28',
30
+ height: '$24',
31
31
  marginLeft: '13px',
32
32
  borderLeft: '1px solid $neutral700',
33
33
  });
@@ -41,11 +41,11 @@ export function QuoteSummarySkeleton(props: PropTypes) {
41
41
  {!tagHidden && (
42
42
  <>
43
43
  <FlexContent>
44
- <Skeleton width={65} height={14} variant="rounded" />
44
+ <Skeleton width={65} height={20} variant="rounded" />
45
45
  <Divider size={4} direction="horizontal" />
46
- <Skeleton width={65} height={14} variant="rounded" />
46
+ <Skeleton width={65} height={20} variant="rounded" />
47
47
  <Divider size={4} direction="horizontal" />
48
- <Skeleton width={65} height={14} variant="rounded" />
48
+ <Skeleton width={65} height={20} variant="rounded" />
49
49
  </FlexContent>
50
50
  <Line />
51
51
  {!showAllRoutesSkeleton && <Divider size={4} />}
@@ -60,7 +60,7 @@ export function QuoteSummarySkeleton(props: PropTypes) {
60
60
  <Skeleton width={60} height={10} variant="rounded" />
61
61
  </FlexContent>
62
62
  {showAllRoutesSkeleton && (
63
- <Skeleton width={100} height={22} variant="rounded" />
63
+ <Skeleton width={85} height={24} variant="rounded" />
64
64
  )}
65
65
  </div>
66
66
 
@@ -88,6 +88,7 @@ export function QuoteSummarySkeleton(props: PropTypes) {
88
88
  <QuoteSummarySeparator />
89
89
  {quotePreview}
90
90
  </SwapPreview>
91
+ <Divider size={12} />
91
92
  </>
92
93
  )}
93
94
  </div>
@@ -11,6 +11,13 @@ export const StepTokens = styled('div', {
11
11
  paddingBottom: '$10',
12
12
  display: 'flex',
13
13
  alignItems: 'center',
14
+ variants: {
15
+ extraSpace: {
16
+ true: {
17
+ paddingBottom: '$40',
18
+ },
19
+ },
20
+ },
14
21
  });
15
22
 
16
23
  export const StepTokenInfo = styled('div', {
@@ -23,7 +23,7 @@ export function StepSkeleton(props: PropTypes) {
23
23
  </StepTitle>
24
24
  <StepContent>
25
25
  <StepSeparator hideSeparator={!separator} />
26
- <StepTokens>
26
+ <StepTokens extraSpace={separator}>
27
27
  <StepTokenInfo>
28
28
  <ChainToken size="small" loading chainImage="" tokenImage="" />
29
29
  <Divider direction="horizontal" size={8} />
@@ -97,7 +97,7 @@ export function HighValueLossWarningModal(props: Props) {
97
97
  />
98
98
 
99
99
  <Flex>
100
- <Divider size={20} />
100
+ <Divider size="4" />
101
101
  <Typography size="small" variant="title">
102
102
  {i18n.t('Details')}
103
103
  </Typography>
@@ -23,13 +23,12 @@ export function makeAlerts(
23
23
  const alertInfo: AlertInfo = {
24
24
  alertType: 'warning',
25
25
  title: '',
26
- action: 'show-info',
26
+ action: null,
27
27
  };
28
28
  if (error) {
29
29
  alertInfo.alertType = 'error';
30
30
  if (error.type === QuoteErrorType.BRIDGE_LIMIT) {
31
31
  alertInfo.title = error.recommendation;
32
- alertInfo.action = 'show-info';
33
32
  }
34
33
 
35
34
  if (error.type === QuoteErrorType.INSUFFICIENT_SLIPPAGE) {
@@ -50,7 +49,7 @@ export function makeAlerts(
50
49
  if (warningLevel === 'high') {
51
50
  alertInfo.alertType = 'error';
52
51
  }
53
- alertInfo.action = null;
52
+ alertInfo.action = 'show-info';
54
53
  alertInfo.title = errorMessages().highValueLossError.title;
55
54
  }
56
55
  if (warning.type === QuoteWarningType.UNKNOWN_PRICE) {
@@ -67,6 +66,7 @@ export function makeAlerts(
67
66
  }
68
67
  if (warning.type === QuoteWarningType.HIGH_SLIPPAGE) {
69
68
  alertInfo.title = i18n.t('Caution, your slippage is high.');
69
+ alertInfo.action = 'change-settings';
70
70
  }
71
71
  return alertInfo;
72
72
  }
@@ -8,7 +8,7 @@ export const Flex = styled('div', {
8
8
  display: 'flex',
9
9
  flexDirection: 'column',
10
10
  alignItems: 'flex-start',
11
- gap: 10,
11
+ gap: '$5',
12
12
  width: '100%',
13
13
  });
14
14