@rabbitio/ui-kit 1.0.0-beta.9 → 1.0.0-beta.91

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 (369) hide show
  1. package/.gitlab-ci.yml +29 -0
  2. package/.husky/commit-msg +19 -0
  3. package/.husky/pre-push +1 -0
  4. package/CHANGELOG.md +0 -0
  5. package/README.md +27 -18
  6. package/coverage/base.css +224 -0
  7. package/coverage/block-navigation.js +87 -0
  8. package/coverage/clover.xml +16765 -0
  9. package/coverage/coverage-final.json +116 -0
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +1001 -0
  12. package/coverage/prettify.css +1 -0
  13. package/coverage/prettify.js +2 -0
  14. package/coverage/rabbit-ui-kit/index.html +116 -0
  15. package/coverage/rabbit-ui-kit/index.js.html +88 -0
  16. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js.html +148 -0
  17. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/index.html +146 -0
  18. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js.html +169 -0
  19. package/coverage/rabbit-ui-kit/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js.html +199 -0
  20. package/coverage/rabbit-ui-kit/src/common-apis/adapters/axiosAdapter.js.html +190 -0
  21. package/coverage/rabbit-ui-kit/src/common-apis/adapters/index.html +131 -0
  22. package/coverage/rabbit-ui-kit/src/common-apis/adapters/qrUtils.js.html +139 -0
  23. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/apiGroups.js.html +250 -0
  24. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/emailAPI.js.html +133 -0
  25. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/index.html +146 -0
  26. package/coverage/rabbit-ui-kit/src/common-apis/external-apis/ipAddressProviders.js.html +352 -0
  27. package/coverage/rabbit-ui-kit/src/common-apis/globalConstants.jsx.html +94 -0
  28. package/coverage/rabbit-ui-kit/src/common-apis/index.html +116 -0
  29. package/coverage/rabbit-ui-kit/src/common-apis/models/blockchain.js.html +115 -0
  30. package/coverage/rabbit-ui-kit/src/common-apis/models/coin.js.html +829 -0
  31. package/coverage/rabbit-ui-kit/src/common-apis/models/index.html +146 -0
  32. package/coverage/rabbit-ui-kit/src/common-apis/models/protocol.js.html +100 -0
  33. package/coverage/rabbit-ui-kit/src/common-apis/services/fiatCurrenciesService.js.html +544 -0
  34. package/coverage/rabbit-ui-kit/src/common-apis/services/index.html +116 -0
  35. package/coverage/rabbit-ui-kit/src/common-apis/utils/amountUtils.js.html +1162 -0
  36. package/coverage/rabbit-ui-kit/src/common-apis/utils/cache.js.html +811 -0
  37. package/coverage/rabbit-ui-kit/src/common-apis/utils/errorUtils.js.html +211 -0
  38. package/coverage/rabbit-ui-kit/src/common-apis/utils/index.html +191 -0
  39. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/index.html +131 -0
  40. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logger.js.html +208 -0
  41. package/coverage/rabbit-ui-kit/src/common-apis/utils/logging/logsStorage.js.html +268 -0
  42. package/coverage/rabbit-ui-kit/src/common-apis/utils/postponeExecution.js.html +118 -0
  43. package/coverage/rabbit-ui-kit/src/common-apis/utils/rabbitTicker.js.html +157 -0
  44. package/coverage/rabbit-ui-kit/src/common-apis/utils/safeStringify.js.html +235 -0
  45. package/coverage/rabbit-ui-kit/src/index.html +116 -0
  46. package/coverage/rabbit-ui-kit/src/index.js.html +376 -0
  47. package/coverage/rabbit-ui-kit/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js.html +1570 -0
  48. package/coverage/rabbit-ui-kit/src/robust-api-caller/cachedRobustExternalApiCallerService.js.html +526 -0
  49. package/coverage/rabbit-ui-kit/src/robust-api-caller/cancelProcessing.js.html +172 -0
  50. package/coverage/rabbit-ui-kit/src/robust-api-caller/concurrentCalculationsMetadataHolder.js.html +310 -0
  51. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalApiProvider.js.html +553 -0
  52. package/coverage/rabbit-ui-kit/src/robust-api-caller/externalServicesStatsCollector.js.html +319 -0
  53. package/coverage/rabbit-ui-kit/src/robust-api-caller/index.html +206 -0
  54. package/coverage/rabbit-ui-kit/src/robust-api-caller/robustExternalAPICallerService.js.html +997 -0
  55. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/exolixSwapProvider.js.html +1825 -0
  56. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +161 -0
  57. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/letsExchangeSwapProvider.js.html +1618 -0
  58. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +1819 -0
  59. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +1861 -0
  60. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +319 -0
  61. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +514 -0
  62. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +529 -0
  63. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +176 -0
  64. package/coverage/rabbit-ui-kit/src/swaps-lib/models/partner.js.html +166 -0
  65. package/coverage/rabbit-ui-kit/src/swaps-lib/models/swapProviderCoinInfo.js.html +331 -0
  66. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +116 -0
  67. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +1555 -0
  68. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +116 -0
  69. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +670 -0
  70. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowIcon.jsx.html +124 -0
  71. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowTosca.jsx.html +127 -0
  72. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/arrowWhite.jsx.html +127 -0
  73. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/darkRectangle.jsx.html +106 -0
  74. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/determinedError.jsx.html +439 -0
  75. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx.html +202 -0
  76. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/index.html +281 -0
  77. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/infoIcon.jsx.html +133 -0
  78. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/messageIcon.jsx.html +346 -0
  79. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx.html +247 -0
  80. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx.html +163 -0
  81. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx.html +268 -0
  82. package/coverage/rabbit-ui-kit/src/ui-kit/assets/wrappedImages/walletIcon.jsx.html +151 -0
  83. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx.html +256 -0
  84. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetIcon/index.html +116 -0
  85. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx.html +289 -0
  86. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/AssetSelection/index.html +116 -0
  87. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +187 -0
  88. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/BackgroundTitle/index.html +116 -0
  89. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx.html +238 -0
  90. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/InformationMessage/index.html +116 -0
  91. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/Input.jsx.html +634 -0
  92. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Input/index.html +116 -0
  93. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
  94. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/LoadingDots/index.html +116 -0
  95. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx.html +277 -0
  96. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/NoticeIcon/index.html +116 -0
  97. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/QrCode.jsx.html +217 -0
  98. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/QrCode/index.html +116 -0
  99. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx.html +175 -0
  100. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/RateSelector/index.html +116 -0
  101. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/SupportChat.jsx.html +217 -0
  102. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/SupportChat/index.html +116 -0
  103. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/Textarea.jsx.html +529 -0
  104. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Textarea/index.html +116 -0
  105. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx.html +508 -0
  106. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TitleBox/index.html +116 -0
  107. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx.html +316 -0
  108. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Tooltip/index.html +116 -0
  109. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +313 -0
  110. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/TwoLinesOfText/index.html +116 -0
  111. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/Validation.jsx.html +202 -0
  112. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/Validation/index.html +116 -0
  113. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/Button.jsx.html +712 -0
  114. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Button/index.html +116 -0
  115. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/Close.jsx.html +259 -0
  116. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/Close/index.html +116 -0
  117. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx.html +421 -0
  118. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/LinkButton/index.html +116 -0
  119. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +415 -0
  120. package/coverage/rabbit-ui-kit/src/ui-kit/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
  121. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx.html +1429 -0
  122. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/AmountInput/index.html +116 -0
  123. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx.html +1474 -0
  124. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/CoinPicker/index.html +116 -0
  125. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx.html +211 -0
  126. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/ColoredNotice/index.html +116 -0
  127. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +190 -0
  128. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LineWithIconLink/index.html +116 -0
  129. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx.html +307 -0
  130. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/LogoCarousel/index.html +116 -0
  131. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx.html +496 -0
  132. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/SearchableCoinsList/index.html +116 -0
  133. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +181 -0
  134. package/coverage/rabbit-ui-kit/src/ui-kit/components/molecules/TitledLineWithIconLink/index.html +116 -0
  135. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +283 -0
  136. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/CoinPickerDialogStep/index.html +116 -0
  137. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/Dialog.jsx.html +1567 -0
  138. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +481 -0
  139. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogButtons/index.html +116 -0
  140. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1747 -0
  141. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/DialogStep/index.html +116 -0
  142. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/Dialog/index.html +116 -0
  143. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx.html +4207 -0
  144. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/SwapForm/index.html +116 -0
  145. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx.html +559 -0
  146. package/coverage/rabbit-ui-kit/src/ui-kit/components/organisms/WaitlistSubscription/index.html +116 -0
  147. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +316 -0
  148. package/coverage/rabbit-ui-kit/src/ui-kit/components/templates/DeterminedErrorDialogStep/index.html +116 -0
  149. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/index.html +146 -0
  150. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useCallHandlingErrors.js.html +151 -0
  151. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useIsHydrated.js.html +121 -0
  152. package/coverage/rabbit-ui-kit/src/ui-kit/hooks/useReferredState.js.html +157 -0
  153. package/coverage/rabbit-ui-kit/src/ui-kit/utils/index.html +161 -0
  154. package/coverage/rabbit-ui-kit/src/ui-kit/utils/inputValueProviders.js.html +235 -0
  155. package/coverage/rabbit-ui-kit/src/ui-kit/utils/textUtils.js.html +139 -0
  156. package/coverage/rabbit-ui-kit/src/ui-kit/utils/uiUtils.js.html +121 -0
  157. package/coverage/rabbit-ui-kit/src/ui-kit/utils/urlQueryUtils.js.html +271 -0
  158. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
  159. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +283 -0
  160. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
  161. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +175 -0
  162. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +136 -0
  163. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
  164. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +883 -0
  165. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +211 -0
  166. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +301 -0
  167. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +146 -0
  168. package/coverage/rabbit-ui-kit/stories/atoms/index.html +191 -0
  169. package/coverage/rabbit-ui-kit/stories/molecules/AmountInput.stories.jsx.html +289 -0
  170. package/coverage/rabbit-ui-kit/stories/molecules/CoinPicker.stories.jsx.html +322 -0
  171. package/coverage/rabbit-ui-kit/stories/molecules/ColoredNotice.stories.jsx.html +178 -0
  172. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +154 -0
  173. package/coverage/rabbit-ui-kit/stories/molecules/LogoCarousel.stories.jsx.html +235 -0
  174. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +160 -0
  175. package/coverage/rabbit-ui-kit/stories/molecules/index.html +191 -0
  176. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +523 -0
  177. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
  178. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
  179. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +337 -0
  180. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
  181. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +116 -0
  182. package/coverage/rabbit-ui-kit/stories/organisms/WaitlistSubscription.stories.jsx.html +151 -0
  183. package/coverage/rabbit-ui-kit/stories/organisms/index.html +116 -0
  184. package/coverage/rabbit-ui-kit/stories/stubs/coins.jsx.html +6880 -0
  185. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
  186. package/coverage/rabbit-ui-kit/stories/stubs/index.html +131 -0
  187. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +190 -0
  188. package/coverage/rabbit-ui-kit/stories/templates/index.html +116 -0
  189. package/coverage/sort-arrow-sprite.png +0 -0
  190. package/coverage/sorter.js +196 -0
  191. package/dist/global.css +197 -0
  192. package/dist/global.css.map +1 -0
  193. package/dist/index.cjs +12451 -25
  194. package/dist/index.cjs.map +1 -1
  195. package/dist/index.css +2339 -8491
  196. package/dist/index.css.map +1 -1
  197. package/dist/index.modern.js +9597 -26
  198. package/dist/index.modern.js.map +1 -1
  199. package/dist/index.module.js +12357 -27
  200. package/dist/index.module.js.map +1 -1
  201. package/dist/index.umd.js +12442 -29
  202. package/dist/index.umd.js.map +1 -1
  203. package/package.json +35 -9
  204. package/raw +1000 -0
  205. package/src/common-apis/adapters/analyticsAdapters/googleAnalyticsAdapter.js +21 -0
  206. package/src/common-apis/adapters/analyticsAdapters/metrikaAdapter.js +28 -0
  207. package/src/common-apis/adapters/analyticsAdapters/mixpanelAdapter.js +38 -0
  208. package/src/common-apis/adapters/axiosAdapter.js +35 -0
  209. package/src/common-apis/adapters/qrUtils.js +18 -0
  210. package/src/common-apis/external-apis/apiGroups.js +55 -0
  211. package/src/common-apis/external-apis/emailAPI.js +16 -0
  212. package/src/common-apis/external-apis/ipAddressProviders.js +89 -0
  213. package/src/common-apis/globalConstants.jsx +3 -0
  214. package/src/common-apis/models/blockchain.js +10 -0
  215. package/src/common-apis/models/coin.js +248 -0
  216. package/src/common-apis/models/protocol.js +5 -0
  217. package/src/{common → common-apis/services}/fiatCurrenciesService.js +4 -12
  218. package/src/common-apis/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +12 -0
  219. package/src/common-apis/tests/units/utils/amountUtils/composeRateText.test.js +152 -0
  220. package/src/{common → common-apis/utils}/amountUtils.js +72 -136
  221. package/src/common-apis/utils/cache.js +242 -0
  222. package/src/{common → common-apis/utils}/errorUtils.js +15 -0
  223. package/src/common-apis/utils/logging/logger.js +41 -0
  224. package/src/common-apis/utils/logging/logsStorage.js +61 -0
  225. package/src/common-apis/utils/postponeExecution.js +11 -0
  226. package/src/common-apis/utils/rabbitTicker.js +24 -0
  227. package/src/common-apis/utils/safeStringify.js +50 -0
  228. package/src/index.js +96 -9
  229. package/src/robust-api-caller/cacheAndConcurrentRequestsResolver.js +495 -0
  230. package/src/robust-api-caller/cachedRobustExternalApiCallerService.js +147 -0
  231. package/src/robust-api-caller/cancelProcessing.js +29 -0
  232. package/src/robust-api-caller/concurrentCalculationsMetadataHolder.js +75 -0
  233. package/src/robust-api-caller/externalApiProvider.js +156 -0
  234. package/src/robust-api-caller/externalServicesStatsCollector.js +78 -0
  235. package/src/robust-api-caller/robustExternalAPICallerService.js +304 -0
  236. package/src/robust-api-caller/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +533 -0
  237. package/src/robust-api-caller/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +532 -0
  238. package/src/robust-api-caller/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +19 -0
  239. package/src/swaps-lib/external-apis/exolixSwapProvider.js +580 -0
  240. package/src/swaps-lib/external-apis/letsExchangeSwapProvider.js +511 -0
  241. package/src/swaps-lib/external-apis/swapProvider.js +578 -0
  242. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +592 -0
  243. package/src/swaps-lib/models/baseSwapCreationInfo.js +78 -0
  244. package/src/swaps-lib/models/existingSwap.js +143 -0
  245. package/src/swaps-lib/models/existingSwapWithFiatData.js +148 -0
  246. package/src/swaps-lib/models/partner.js +27 -0
  247. package/src/swaps-lib/models/swapProviderCoinInfo.js +82 -0
  248. package/src/swaps-lib/services/publicSwapService.js +490 -0
  249. package/src/swaps-lib/test/external-apis/exolixSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +34 -0
  250. package/src/swaps-lib/test/external-apis/exolixSwapProvider/createSwap.test.js +1043 -0
  251. package/src/swaps-lib/test/external-apis/exolixSwapProvider/getSwapInfo.test.js +611 -0
  252. package/src/swaps-lib/test/external-apis/swapProvider/getAllSupportedCurrencies.test.js +63 -0
  253. package/src/swaps-lib/test/external-apis/swapProvider/getDepositCurrencies.test.js +73 -0
  254. package/src/swaps-lib/test/external-apis/swapProvider/getWithdrawalCurrencies.test.js +102 -0
  255. package/src/swaps-lib/test/external-apis/swapProvider/removeProtocolNameFromCoinName.test.js +152 -0
  256. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +536 -0
  257. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +1214 -0
  258. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +1707 -0
  259. package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +80 -0
  260. package/src/swaps-lib/utils/swapUtils.js +195 -0
  261. package/{styles → src/ui-kit/assets/styles}/_functions.scss +5 -0
  262. package/{styles → src/ui-kit/assets/styles}/_mixins.scss +2 -2
  263. package/{styles → src/ui-kit/assets/styles}/_placeholder.scss +3 -3
  264. package/{styles → src/ui-kit/assets/styles}/_variables.scss +17 -15
  265. package/src/ui-kit/assets/styles/fonts/NunitoSans-Bold.ttf +0 -0
  266. package/src/ui-kit/assets/styles/fonts/NunitoSans-ExtraBold.ttf +0 -0
  267. package/src/ui-kit/assets/styles/fonts/NunitoSans-Light.ttf +0 -0
  268. package/src/ui-kit/assets/styles/fonts/NunitoSans-Regular.ttf +0 -0
  269. package/src/ui-kit/assets/styles/fonts/NunitoSans-SemiBold.ttf +0 -0
  270. package/src/ui-kit/assets/styles/global.scss +171 -0
  271. package/src/ui-kit/assets/styles/index.scss +10 -0
  272. package/src/ui-kit/assets/wrappedImages/arrowIcon.jsx +13 -0
  273. package/src/ui-kit/assets/wrappedImages/arrowTosca.jsx +14 -0
  274. package/src/ui-kit/assets/wrappedImages/arrowWhite.jsx +14 -0
  275. package/src/ui-kit/assets/wrappedImages/darkRectangle.jsx +7 -0
  276. package/src/ui-kit/assets/wrappedImages/determinedError.jsx +118 -0
  277. package/src/ui-kit/assets/wrappedImages/failedValidationIcon.jsx +39 -0
  278. package/src/ui-kit/assets/wrappedImages/infoIcon.jsx +16 -0
  279. package/src/ui-kit/assets/wrappedImages/messageIcon.jsx +87 -0
  280. package/src/ui-kit/assets/wrappedImages/noticeQuestionIcon.jsx +54 -0
  281. package/src/ui-kit/assets/wrappedImages/successfulValidationIcon.jsx +26 -0
  282. package/src/ui-kit/assets/wrappedImages/supportDialogImage.jsx +61 -0
  283. package/src/ui-kit/assets/wrappedImages/walletIcon.jsx +22 -0
  284. package/src/ui-kit/components/atoms/AssetIcon/AssetIcon.jsx +57 -0
  285. package/src/{components → ui-kit/components}/atoms/AssetIcon/asset-icon.module.scss +1 -1
  286. package/src/ui-kit/components/atoms/AssetSelection/AssetSelection.jsx +68 -0
  287. package/src/ui-kit/components/atoms/AssetSelection/asset-selection.module.scss +56 -0
  288. package/src/ui-kit/components/atoms/BackgroundTitle/BackgroundTitle.jsx +34 -0
  289. package/src/ui-kit/components/atoms/BackgroundTitle/background-title.module.scss +52 -0
  290. package/src/ui-kit/components/atoms/InformationMessage/InformationMessage.jsx +51 -0
  291. package/src/ui-kit/components/atoms/InformationMessage/information-message.module.scss +38 -0
  292. package/src/ui-kit/components/atoms/Input/Input.jsx +183 -0
  293. package/src/ui-kit/components/atoms/Input/input.module.scss +107 -0
  294. package/src/{components → ui-kit/components}/atoms/LoadingDots/LoadingDots.jsx +8 -28
  295. package/src/{components → ui-kit/components}/atoms/LoadingDots/LoadingDots.module.scss +3 -2
  296. package/src/ui-kit/components/atoms/NoticeIcon/NoticeIcon.jsx +64 -0
  297. package/src/ui-kit/components/atoms/NoticeIcon/notice-icon.module.scss +14 -0
  298. package/src/ui-kit/components/atoms/QrCode/QrCode.jsx +44 -0
  299. package/src/ui-kit/components/atoms/QrCode/qr-code.module.scss +15 -0
  300. package/src/ui-kit/components/atoms/RateSelector/RateSelector.jsx +30 -0
  301. package/src/ui-kit/components/atoms/RateSelector/rate-selector.module.scss +47 -0
  302. package/src/{components → ui-kit/components}/atoms/SupportChat/SupportChat.jsx +5 -1
  303. package/src/ui-kit/components/atoms/Textarea/Textarea.jsx +148 -0
  304. package/src/ui-kit/components/atoms/Textarea/textarea.module.scss +71 -0
  305. package/src/ui-kit/components/atoms/TitleBox/TitleBox.jsx +141 -0
  306. package/src/ui-kit/components/atoms/TitleBox/title-box.module.scss +32 -0
  307. package/src/ui-kit/components/atoms/Tooltip/Tooltip.jsx +77 -0
  308. package/src/ui-kit/components/atoms/Tooltip/tooltip.module.scss +237 -0
  309. package/src/ui-kit/components/atoms/TwoLinesOfText/LinesOfText.jsx +76 -0
  310. package/src/ui-kit/components/atoms/TwoLinesOfText/lines-of-text.module.scss +65 -0
  311. package/src/ui-kit/components/atoms/Validation/Validation.jsx +39 -0
  312. package/src/ui-kit/components/atoms/Validation/validation.module.scss +19 -0
  313. package/src/{components → ui-kit/components}/atoms/buttons/Button/Button.jsx +24 -50
  314. package/src/{components → ui-kit/components}/atoms/buttons/Button/Button.module.scss +1 -1
  315. package/src/ui-kit/components/atoms/buttons/Close/Close.jsx +58 -0
  316. package/src/ui-kit/components/atoms/buttons/Close/close.module.scss +75 -0
  317. package/src/ui-kit/components/atoms/buttons/LinkButton/LinkButton.jsx +112 -0
  318. package/src/ui-kit/components/atoms/buttons/LinkButton/link-button.module.scss +49 -0
  319. package/src/ui-kit/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +110 -0
  320. package/src/ui-kit/components/atoms/buttons/RadioButtonWithText/radio-button-with-text.module.scss +86 -0
  321. package/src/ui-kit/components/molecules/AmountInput/AmountInput.jsx +448 -0
  322. package/src/ui-kit/components/molecules/AmountInput/amount-input.module.scss +233 -0
  323. package/src/ui-kit/components/molecules/CoinPicker/CoinPicker.jsx +463 -0
  324. package/src/ui-kit/components/molecules/CoinPicker/coin-picker.module.scss +207 -0
  325. package/src/ui-kit/components/molecules/ColoredNotice/ColoredNotice.jsx +42 -0
  326. package/src/ui-kit/components/molecules/ColoredNotice/colored-notice.module.scss +20 -0
  327. package/src/ui-kit/components/molecules/LineWithIconLink/LineWithIconLink.jsx +35 -0
  328. package/src/ui-kit/components/molecules/LineWithIconLink/line-with-icon-link.module.scss +25 -0
  329. package/src/ui-kit/components/molecules/LogoCarousel/LogoCarousel.jsx +74 -0
  330. package/src/ui-kit/components/molecules/LogoCarousel/logo-carousel.module.scss +106 -0
  331. package/src/ui-kit/components/molecules/SearchableCoinsList/SearchableCoinsList.jsx +137 -0
  332. package/src/ui-kit/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx +32 -0
  333. package/src/ui-kit/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +66 -0
  334. package/src/ui-kit/components/organisms/Dialog/Dialog.jsx +494 -0
  335. package/src/ui-kit/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +132 -0
  336. package/src/ui-kit/components/organisms/Dialog/DialogButtons/dialog-buttons.module.scss +25 -0
  337. package/src/ui-kit/components/organisms/Dialog/DialogStep/DialogStep.jsx +554 -0
  338. package/src/ui-kit/components/organisms/Dialog/DialogStep/dialog-step.module.scss +381 -0
  339. package/src/ui-kit/components/organisms/Dialog/dialog.module.scss +226 -0
  340. package/src/ui-kit/components/organisms/SwapForm/SwapForm.jsx +1374 -0
  341. package/src/ui-kit/components/organisms/SwapForm/swap-form.module.scss +134 -0
  342. package/src/ui-kit/components/organisms/WaitlistSubscription/WaitlistSubscription.jsx +158 -0
  343. package/src/ui-kit/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx +77 -0
  344. package/src/ui-kit/hooks/useCallHandlingErrors.js +22 -0
  345. package/src/ui-kit/hooks/useIsHydrated.js +12 -0
  346. package/src/ui-kit/hooks/useReferredState.js +24 -0
  347. package/src/ui-kit/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +146 -0
  348. package/src/ui-kit/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +65 -0
  349. package/src/ui-kit/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +104 -0
  350. package/src/ui-kit/utils/inputValueProviders.js +50 -0
  351. package/src/ui-kit/utils/textUtils.js +18 -0
  352. package/src/ui-kit/utils/uiUtils.js +12 -0
  353. package/src/ui-kit/utils/urlQueryUtils.js +62 -0
  354. package/stories/font.scss +40 -0
  355. package/stories/stubs/coins.jsx +2266 -0
  356. package/stories/stubs/exampleContent.jsx +20 -0
  357. package/src/components/atoms/AssetIcon/AssetIcon.jsx +0 -55
  358. package/styles/_global-classes.scss +0 -433
  359. package/styles/fonts/NunitoSans-Bold.ttf +0 -0
  360. package/styles/fonts/NunitoSans-ExtraBold.ttf +0 -0
  361. package/styles/fonts/NunitoSans-Light.ttf +0 -0
  362. package/styles/fonts/NunitoSans-Regular.ttf +0 -0
  363. package/styles/fonts/NunitoSans-SemiBold.ttf +0 -0
  364. package/styles/global-styles-index.scss +0 -74
  365. package/styles/index.scss +0 -33
  366. /package/{styles → src/ui-kit/assets/styles}/colors/_light-colors.scss +0 -0
  367. /package/{styles → src/ui-kit/assets/styles}/colors/_solid-colors.scss +0 -0
  368. /package/{styles → src/ui-kit/assets/styles}/size/_margin-size.scss +0 -0
  369. /package/{styles → src/ui-kit/assets/styles}/size/_padding-size.scss +0 -0
@@ -0,0 +1,554 @@
1
+ import React, { useEffect, useRef, useState } from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ import { logErrorOrOutputToConsole } from "../../../../../common-apis/utils/errorUtils.js";
5
+
6
+ import arrowTosca from "../../../../assets/wrappedImages/arrowTosca.jsx";
7
+ import arrowWhite from "../../../../assets/wrappedImages/arrowWhite.jsx";
8
+
9
+ import s from "./dialog-step.module.scss";
10
+ import { AssetIcon } from "../../../atoms/AssetIcon/AssetIcon.jsx";
11
+ import { ICON_ROTATE_OPTIONS, LinkButton } from "../../../atoms/buttons/LinkButton/LinkButton.jsx";
12
+ import { BackgroundTitle } from "../../../atoms/BackgroundTitle/BackgroundTitle.jsx";
13
+ import { DialogButtons } from "../DialogButtons/DialogButtons.jsx";
14
+ import { LoadingDots } from "../../../atoms/LoadingDots/LoadingDots.jsx";
15
+ import { DIALOG_TRANSITION_STEP_DURATION } from "../Dialog.jsx";
16
+
17
+ export const DIALOG_STEP_CLASS = "dialog-step";
18
+
19
+ /**
20
+ * Step component, part of the DialogWithSteps modal component. This component should be used inside the primary dialog component.
21
+ *
22
+ * @component
23
+ * @param {Object} props - The props object.
24
+ * @param {string} props.stepName - Step name, specified on the root dialog level, used as an ID for dialog navigation.
25
+ * @param {React.ReactNode} props.children - Content of the dialog step. Supports both raw content and components.
26
+ * @param {string} props.image - Illustration/icon at the top, path to an image.
27
+ * @param {React.ComponentType} props.ImageRaw - Illustration/icon at the top, the image component to be inserted.
28
+ * @param {string} props.title - Step title.
29
+ * @param {string} props.titleIcon - Icon next to the step title, path to an image.
30
+ * @param {Coin} props.titleIconCoin - Coin to be shown as an AssetIcon next to the step title.
31
+ * @param {function} props.coinToIconPaths - Function returning icon paths by Coin.
32
+ * @param {boolean} props.titleLoadingDots - Show loading dots next to the title or not.
33
+ * @param {string} props.subtitle - Step subtitle.
34
+ * @param {string} props.backButtonText - Secondary button title.
35
+ * @param {function} props.backButtonClick - Secondary button click handler.
36
+ * @param {boolean} props.backButtonEnabled - Determines whether the secondary button is enabled.
37
+ * @param {string} props.backButtonTo - Secondary button link.
38
+ * @param {string} props.confirmButtonText - Primary button title.
39
+ * @param {function} props.confirmButtonClick - Primary button click handler.
40
+ * @param {boolean} props.confirmButtonEnabled - Determines whether the primary button is enabled.
41
+ * @param {string} props.confirmButtonLink - Primary button link.
42
+ * @param {boolean} props.primaryButtonLoader - Enable loader for the primary button.
43
+ * @param {boolean} props.fixedButtons - Enable fixed buttons in the bottom for mobile devices.
44
+ * @param {boolean} props.showCornerBackButton - Forcefully enable or disable blue corner back button.
45
+ * @param {string} props.cornerBackButtonTitle - Blue corner back button title.
46
+ * @param {function} props.cornerBackButtonClick - Blue corner back button click handler.
47
+ * @param {boolean} props.bigButtonMargins - Increase button margins.
48
+ * @param {boolean} props.noButtonMargins - Decrease button margins.
49
+ * @param {boolean} props.headerTitleLeft - Align header title to the left. Default: false.
50
+ * @param {boolean} props.subtitleSmallMargin - Reduce the margin under the subtitle.
51
+ * @param {boolean} props.subtitleNoMargin - Disable the margin under the subtitle.
52
+ * @param {boolean} props.showBackgroundTitle - Enable the semi-transparent secondary background title.
53
+ * @param {function} props.setClickTrigger - Function to set up an external trigger for the primary button.
54
+ * @param {boolean} props.breakSubtitleWords - Enable word-break for subtitles. Default: false.
55
+ * @param {string} props.contentAlign - Receives "left", "center", "right". Controls the step content container alignment.
56
+ * @param {Object} props.controls - Dialog-to-step connection object, required for multi-step dialog windows.
57
+ * @param {string} props.width - Width in pixels, formatted as "1000px" and passed as a string. Values should be used from constants.
58
+ * @param {string} props.height - Height in pixels, formatted as "1000px" and passed as a string. Values should be used from constants.
59
+ * @param {string} props.backgroundImage - Background image, path to an image.
60
+ * @param {string} props.backgroundImageMobile - Background image for mobiles, path to an image.
61
+ * @param {boolean} props.isSecondaryButtonBig - Changes the secondary button style from link to a secondary-button. Default: false.
62
+ * @returns {JSX.Element} React component
63
+ */
64
+ export const DialogStep = ({
65
+ stepName = "",
66
+ children = "",
67
+ image = "",
68
+ ImageRaw,
69
+ title = "",
70
+ titleIcon = "",
71
+ titleIconCoin,
72
+ coinToIconPaths = () => {},
73
+ titleLoadingDots = false,
74
+ subtitle = "",
75
+ backButtonText = "",
76
+ backButtonClick = () => {},
77
+ backButtonEnabled = true,
78
+ backButtonTo = "",
79
+ confirmButtonText = "",
80
+ confirmButtonClick = () => {},
81
+ confirmButtonEnabled = true,
82
+ confirmButtonLink = "",
83
+ primaryButtonLoader = false,
84
+ fixedButtons = false,
85
+ showCornerBackButton = null,
86
+ cornerBackButtonTitle = null,
87
+ cornerBackButtonClick = null,
88
+ bigButtonMargins = false,
89
+ noButtonMargins = false,
90
+ headerTitleLeft = false,
91
+ subtitleSmallMargin = false,
92
+ subtitleNoMargin = false,
93
+ showBackgroundTitle = true,
94
+ setClickTrigger = () => {},
95
+ breakSubtitleWords = false,
96
+ contentAlign = "left",
97
+ controls = {},
98
+ width = "",
99
+ height,
100
+ backgroundImage,
101
+ backgroundImageMobile,
102
+ isSecondaryButtonBig = false,
103
+ }) => {
104
+ const {
105
+ currentStep = null,
106
+ isCurrentStep = () => {},
107
+ previousStep,
108
+ getStepClass = () => {},
109
+ updateDialogConfiguration,
110
+ provideCurrentStepRef,
111
+ animationConfiguration,
112
+ disableAnimation,
113
+ showCornerButtonForStep,
114
+ scrollDialogToTop = () => {},
115
+ updateButtonsConfiguration = () => {},
116
+ clearButtonsConfiguration = () => {},
117
+ buttonControllingStep,
118
+ updateButtonControllingStep = () => {},
119
+ updateAnimationConfiguration = () => {},
120
+ inline,
121
+ } = controls;
122
+
123
+ const [isMultiStep, setIsMultiStep] = useState(false);
124
+ const [stepClass, setStepClass] = useState("");
125
+ const [wrapperDirectionSubclass, setWrapperDirectionSubclass] = useState("");
126
+ const [unmountOnAnimationEndTrigger, setUnmountOnAnimationEndTrigger] = useState(0);
127
+ const [stepMounted, setStepMounted] = useState(false);
128
+ const [isTopImagePassed, setIsTopImagePassed] = useState(false);
129
+
130
+ const currentStepRef = useRef();
131
+ // const { t } = useTranslation();
132
+
133
+ useEffect(() => setIsTopImagePassed(!!image || !!ImageRaw), [image, ImageRaw]);
134
+
135
+ useEffect(() => {
136
+ if (controls !== {} && stepName !== "") setIsMultiStep(true);
137
+ // eslint-disable-next-line react-hooks/exhaustive-deps
138
+ }, []);
139
+
140
+ const handleTransitionEnd = event => {
141
+ if (
142
+ isMultiStep &&
143
+ isCurrentStep(stepName) &&
144
+ event.propertyName === "opacity" &&
145
+ event.target.classList[0] === s[DIALOG_STEP_CLASS]
146
+ ) {
147
+ disableAnimation(animationConfiguration.animateHeightTransitionEnabled);
148
+ }
149
+
150
+ if (
151
+ isMultiStep &&
152
+ unmountOnAnimationEndTrigger &&
153
+ event.propertyName === "opacity" &&
154
+ event.target.classList[0] === s[DIALOG_STEP_CLASS]
155
+ ) {
156
+ clearButtonsConfiguration();
157
+ scrollDialogToTop();
158
+ setStepMounted(false);
159
+ setUnmountOnAnimationEndTrigger(0);
160
+ }
161
+ };
162
+
163
+ useEffect(() => {
164
+ var multiStep = false;
165
+ if (controls !== {} && stepName !== "") {
166
+ setIsMultiStep(true);
167
+ multiStep = true;
168
+ }
169
+
170
+ if (!multiStep && fixedButtons) {
171
+ logErrorOrOutputToConsole(
172
+ new Error(
173
+ "DialogStep parameter 'fixedButtons' works only with controls connected between the DialogWithSteps and DialogStep components. Unless the controls are configured the 'fixedButtons' parameter will be ignored."
174
+ )
175
+ );
176
+ }
177
+
178
+ if (multiStep) {
179
+ if (getStepClass(stepName) === "current") setStepMounted(true);
180
+
181
+ if (stepClass === "current" && getStepClass(stepName) !== "current")
182
+ setUnmountOnAnimationEndTrigger(prev => prev + 1);
183
+
184
+ setWrapperDirectionSubclass(
185
+ getStepClass(stepName) === "current" && animationConfiguration.currentStepAnimationEnabled
186
+ ? stepClass === "prev"
187
+ ? "appear-from-left"
188
+ : "appear-from-right"
189
+ : ""
190
+ );
191
+ } else {
192
+ if (width !== "")
193
+ logErrorOrOutputToConsole(
194
+ new Error(
195
+ "Single DialogStep does not support 'width' parameter, since it requires controls to be connected. Pass 'width' to the Dialog component to set the width of the modal window."
196
+ )
197
+ );
198
+ setStepMounted(true);
199
+ }
200
+
201
+ setStepClass(multiStep ? getStepClass(stepName) : "current");
202
+ if (multiStep && isCurrentStep(stepName)) {
203
+ setTimeout(
204
+ () => updateButtonControllingStep(stepName),
205
+ buttonControllingStep === "" ? 0 : DIALOG_TRANSITION_STEP_DURATION
206
+ );
207
+
208
+ setTimeout(() => {
209
+ updateButtonsConfiguration(
210
+ {
211
+ primaryButtonTitle: confirmButtonText,
212
+ primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),
213
+ primaryButtonEnabled: confirmButtonEnabled,
214
+ primaryButtonLoader: primaryButtonLoader,
215
+ primaryButtonTo: confirmButtonLink,
216
+ primaryButtonSetClickTrigger: setClickTrigger,
217
+ secondaryButtonTitle: backButtonText,
218
+ secondaryButtonOnClick: backButtonClick,
219
+ secondaryButtonEnabled: backButtonEnabled,
220
+ secondaryButtonTo: backButtonTo,
221
+ fixedButtonsEnabled: fixedButtons,
222
+ },
223
+ stepName
224
+ );
225
+
226
+ updateAnimationConfiguration(prev => {
227
+ return {
228
+ ...prev,
229
+ hideMobileBottomButtonSection: false,
230
+ };
231
+ });
232
+ }, DIALOG_TRANSITION_STEP_DURATION * 3);
233
+
234
+ updateDialogConfiguration(prev => {
235
+ return {
236
+ ...prev,
237
+ cornerBackButtonTitle: cornerBackButtonTitle,
238
+ customWidth: width,
239
+ };
240
+ });
241
+ provideCurrentStepRef(currentStepRef);
242
+ }
243
+ // eslint-disable-next-line react-hooks/exhaustive-deps
244
+ }, [currentStep]);
245
+
246
+ useEffect(() => {
247
+ if (isMultiStep && isCurrentStep(stepName) && fixedButtons && (confirmButtonText || backButtonText)) {
248
+ updateButtonsConfiguration(
249
+ {
250
+ primaryButtonTitle: confirmButtonText,
251
+ primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),
252
+ primaryButtonEnabled: confirmButtonEnabled,
253
+ primaryButtonLoader: primaryButtonLoader,
254
+ primaryButtonTo: confirmButtonLink,
255
+ primaryButtonSetClickTrigger: setClickTrigger,
256
+ secondaryButtonTitle: backButtonText,
257
+ secondaryButtonOnClick: backButtonClick,
258
+ secondaryButtonEnabled: backButtonEnabled,
259
+ secondaryButtonTo: backButtonTo,
260
+ fixedButtonsEnabled: fixedButtons,
261
+ },
262
+ stepName
263
+ );
264
+ }
265
+ // eslint-disable-next-line react-hooks/exhaustive-deps
266
+ }, [
267
+ confirmButtonText,
268
+ confirmButtonClick,
269
+ confirmButtonEnabled,
270
+ primaryButtonLoader,
271
+ confirmButtonLink,
272
+ setClickTrigger,
273
+ backButtonText,
274
+ backButtonClick,
275
+ backButtonEnabled,
276
+ backButtonTo,
277
+ currentStep,
278
+ ]);
279
+
280
+ const { assetIconSrc, assetIconProtocolSrc, fallbackSrc } =
281
+ titleIconCoin && coinToIconPaths ? coinToIconPaths(titleIconCoin) : {};
282
+
283
+ return (
284
+ <div
285
+ className={
286
+ s[DIALOG_STEP_CLASS] +
287
+ " " +
288
+ s[stepClass] +
289
+ (!isMultiStep || !animationConfiguration?.currentStepAnimationEnabled
290
+ ? " " + s["animation-disabled"]
291
+ : "") +
292
+ (!isMultiStep ? " " + s["single-step"] : "") +
293
+ (backgroundImage || backgroundImageMobile ? " " + s["with-background"] : "") +
294
+ (inline ? " " + s["inline"] : "")
295
+ }
296
+ ref={currentStepRef}
297
+ onTransitionEnd={handleTransitionEnd}
298
+ style={height ? { height: height } : null}
299
+ >
300
+ {stepMounted ? (
301
+ <>
302
+ {backgroundImage || backgroundImageMobile ? (
303
+ <div className={s["dialog-step-background-image"] + " " + s[stepClass]}>
304
+ {backgroundImage ? (
305
+ <img
306
+ src={backgroundImage}
307
+ className={
308
+ s["dialog-step-background-image-desktop"] +
309
+ " " +
310
+ stepClass +
311
+ (!backgroundImageMobile ? " " + s["primary"] : "")
312
+ }
313
+ alt={"dialog step background"}
314
+ loading="lazy"
315
+ />
316
+ ) : null}
317
+ {backgroundImageMobile ? (
318
+ <img
319
+ src={backgroundImageMobile}
320
+ className={
321
+ s["dialog-step-background-image-mobile"] +
322
+ " " +
323
+ stepClass +
324
+ (!backgroundImage ? " " + s["primary"] : "")
325
+ }
326
+ alt={"dialog step background"}
327
+ loading="lazy"
328
+ />
329
+ ) : null}
330
+ </div>
331
+ ) : null}
332
+ <div
333
+ className={
334
+ s["dialog-step-wrapper"] +
335
+ " " +
336
+ s[stepClass] +
337
+ " " +
338
+ s[wrapperDirectionSubclass] +
339
+ (inline ? " " + s["inline"] : "")
340
+ }
341
+ >
342
+ {isMultiStep && showCornerButtonForStep(stepName, showCornerBackButton) ? (
343
+ <div className={s["dialog-step-wrapper-back-button"]}>
344
+ <LinkButton
345
+ onClick={cornerBackButtonClick ? cornerBackButtonClick : previousStep}
346
+ content={
347
+ cornerBackButtonTitle
348
+ ? cornerBackButtonTitle
349
+ : // : t("organisms.DialogWithSteps.DialogStep.default-back-button-title")
350
+ "Back"
351
+ }
352
+ IconComponent={backgroundImage || backgroundImageMobile ? arrowWhite : arrowTosca}
353
+ iconRotate={ICON_ROTATE_OPTIONS.rotate90}
354
+ isColored={backgroundImage || backgroundImageMobile ? false : undefined}
355
+ />
356
+ </div>
357
+ ) : null}
358
+
359
+ <div
360
+ className={
361
+ s["dialog-step-wrapper-header"] +
362
+ (headerTitleLeft ? " " + s["text-left"] : "") +
363
+ (backgroundImage || backgroundImageMobile ? " " + s["with-background-image"] : "")
364
+ }
365
+ >
366
+ {image ? (
367
+ <img
368
+ src={image}
369
+ alt="dialog popup logo"
370
+ className={s["dialog-step-wrapper-header-logo"]}
371
+ loading="lazy"
372
+ />
373
+ ) : ImageRaw ? (
374
+ <div className={s["dialog-step-wrapper-header-logo"]}>
375
+ <ImageRaw />
376
+ </div>
377
+ ) : null}
378
+
379
+ <div
380
+ className={
381
+ s["dialog-step-wrapper-header-title"] +
382
+ (!isTopImagePassed ? " " + s["without-logo"] : "") +
383
+ (!isTopImagePassed && headerTitleLeft ? " " + s["close-button-padding"] : "") +
384
+ (inline ? " " + s["no-close-button-padding"] : "")
385
+ }
386
+ >
387
+ {titleIconCoin ? (
388
+ <div className={s["dialog-step-wrapper-header-title-coin-icon"]}>
389
+ <AssetIcon
390
+ assetIconSrc={assetIconSrc}
391
+ assetIconProtocolSrc={assetIconProtocolSrc}
392
+ fallbackSrc={fallbackSrc}
393
+ />
394
+ </div>
395
+ ) : titleIcon ? (
396
+ <div className={s["dialog-step-wrapper-header-title-icon"]}>
397
+ <img src={titleIcon} alt="coin icon to send" loading="lazy" />
398
+ </div>
399
+ ) : null}
400
+ {titleLoadingDots ? (
401
+ <div className={s["dialog-step-wrapper-header-title-loading"]}>
402
+ <LoadingDots isColored />
403
+ </div>
404
+ ) : (
405
+ ""
406
+ )}
407
+ <div className={s["dialog-step-wrapper-header-title-text"]}>
408
+ {!isTopImagePassed && showBackgroundTitle ? <BackgroundTitle text={title} /> : null}
409
+ <h5
410
+ className={
411
+ s["dialog-step-wrapper-header-title-text-content"] +
412
+ (!isTopImagePassed ? " " + s["without-logo"] : "") +
413
+ (backgroundImage || backgroundImageMobile ? " " + s["white"] : "")
414
+ }
415
+ >
416
+ {title}
417
+ </h5>
418
+ </div>
419
+ </div>
420
+
421
+ {subtitle ? (
422
+ <p
423
+ className={
424
+ s["dialog-step-wrapper-header-text"] +
425
+ ` ${!isTopImagePassed ? s["without-logo"] : ""} ${
426
+ subtitleSmallMargin ? s["small-margin"] : ""
427
+ }${subtitleNoMargin ? s["no-margin"] : ""} ${
428
+ headerTitleLeft ? s["text-left"] : ""
429
+ } ${breakSubtitleWords ? s["break-words"] : ""} ${
430
+ backgroundImage || backgroundImageMobile ? s["white"] : ""
431
+ }`
432
+ }
433
+ >
434
+ {subtitle}
435
+ </p>
436
+ ) : null}
437
+ </div>
438
+ <div className={s["dialog-step-wrapper-content"] + " " + s["align-" + contentAlign]}>
439
+ {children}
440
+ </div>
441
+
442
+ {backButtonText || confirmButtonText ? (
443
+ <div
444
+ className={
445
+ s["dialog-step-wrapper-buttons"] +
446
+ ` ${bigButtonMargins ? s["big-margin"] : ""} ${
447
+ noButtonMargins ? s["no-margin"] : ""
448
+ } ${isSecondaryButtonBig ? s["space-between-layout"] : ""}`
449
+ }
450
+ >
451
+ <DialogButtons
452
+ primaryButtonTitle={confirmButtonText}
453
+ primaryButtonOnClick={resetButtonLoader => confirmButtonClick(resetButtonLoader)}
454
+ primaryButtonEnabled={confirmButtonEnabled}
455
+ primaryButtonLoader={primaryButtonLoader}
456
+ primaryButtonTo={confirmButtonLink}
457
+ primaryButtonSetClickTrigger={setClickTrigger}
458
+ secondaryButtonTitle={backButtonText}
459
+ secondaryButtonOnClick={backButtonClick}
460
+ secondaryButtonEnabled={backButtonEnabled}
461
+ secondaryButtonTo={backButtonTo}
462
+ secondaryButtonBig={isSecondaryButtonBig}
463
+ withBackgroundImage={!!backgroundImage || !!backgroundImageMobile}
464
+ hideOnMobiles={isMultiStep && fixedButtons && (backButtonText || confirmButtonText)}
465
+ />
466
+ </div>
467
+ ) : (
468
+ ""
469
+ )}
470
+ </div>
471
+ </>
472
+ ) : null}
473
+ </div>
474
+ );
475
+ };
476
+
477
+ DialogStep.propTypes = {
478
+ stepName: PropTypes.string,
479
+ children: PropTypes.node,
480
+ image: PropTypes.string,
481
+ title: PropTypes.string,
482
+ ImageRaw: PropTypes.func,
483
+ titleIcon: PropTypes.string,
484
+ titleIconCoin: PropTypes.object,
485
+ coinToIconPaths: PropTypes.func,
486
+ titleLoadingDots: PropTypes.bool,
487
+ subtitle: PropTypes.string,
488
+ backButtonText: PropTypes.string,
489
+ backButtonClick: PropTypes.func,
490
+ backButtonEnabled: PropTypes.bool,
491
+ backButtonTo: PropTypes.string,
492
+ confirmButtonText: PropTypes.string,
493
+ confirmButtonClick: PropTypes.func,
494
+ confirmButtonEnabled: PropTypes.bool,
495
+ confirmButtonLink: PropTypes.string,
496
+ primaryButtonLoader: PropTypes.bool,
497
+ fixedButtons: PropTypes.bool,
498
+ showCornerBackButton: PropTypes.bool,
499
+ cornerBackButtonTitle: PropTypes.string,
500
+ cornerBackButtonClick: PropTypes.func,
501
+ bigButtonMargins: PropTypes.bool,
502
+ noButtonMargins: PropTypes.bool,
503
+ headerTitleLeft: PropTypes.bool,
504
+ subtitleSmallMargin: PropTypes.bool,
505
+ subtitleNoMargin: PropTypes.bool,
506
+ showBackgroundTitle: PropTypes.bool,
507
+ setClickTrigger: PropTypes.func,
508
+ breakSubtitleWords: PropTypes.bool,
509
+ contentAlign: PropTypes.string,
510
+ controls: PropTypes.object,
511
+ width: PropTypes.oneOf(["550px", "600px", "700px", "750px", "800px", "1000px"]),
512
+ height: PropTypes.string,
513
+ backgroundImage: PropTypes.string,
514
+ backgroundImageMobile: PropTypes.string,
515
+ isSecondaryButtonBig: PropTypes.bool,
516
+ };
517
+
518
+ DialogStep.defaultProps = {
519
+ stepName: "",
520
+ children: null,
521
+ image: "",
522
+ title: "",
523
+ titleIcon: "",
524
+ coinToIconPaths: () => ({}),
525
+ titleLoadingDots: false,
526
+ subtitle: "",
527
+ backButtonText: "",
528
+ backButtonClick: () => {},
529
+ backButtonEnabled: true,
530
+ backButtonTo: "",
531
+ confirmButtonText: "",
532
+ confirmButtonClick: () => {},
533
+ confirmButtonEnabled: true,
534
+ confirmButtonLink: "",
535
+ primaryButtonLoader: false,
536
+ fixedButtons: false,
537
+ showCornerBackButton: null,
538
+ cornerBackButtonTitle: null,
539
+ cornerBackButtonClick: null,
540
+ bigButtonMargins: false,
541
+ noButtonMargins: false,
542
+ headerTitleLeft: false,
543
+ subtitleSmallMargin: false,
544
+ subtitleNoMargin: false,
545
+ showBackgroundTitle: true,
546
+ setClickTrigger: () => {},
547
+ breakSubtitleWords: false,
548
+ contentAlign: "left",
549
+ controls: {},
550
+ height: null,
551
+ backgroundImage: "",
552
+ backgroundImageMobile: "",
553
+ isSecondaryButtonBig: false,
554
+ };