@rabbitio/ui-kit 1.0.0-beta.6 → 1.0.0-beta.61

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 (317) hide show
  1. package/.gitlab-ci.yml +29 -0
  2. package/.husky/commit-msg +14 -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 +17210 -0
  9. package/coverage/coverage-final.json +160 -0
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +1241 -0
  12. package/coverage/prettify.css +1 -0
  13. package/coverage/prettify.js +2 -0
  14. package/coverage/sort-arrow-sprite.png +0 -0
  15. package/coverage/sorter.js +196 -0
  16. package/coverage/ui-kit/index.html +116 -0
  17. package/coverage/ui-kit/index.js.html +88 -0
  18. package/coverage/ui-kit/src/assets/wrappedImages/arrowIcon.jsx.html +142 -0
  19. package/coverage/ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html +145 -0
  20. package/coverage/ui-kit/src/assets/wrappedImages/arrowWhite.jsx.html +145 -0
  21. package/coverage/ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html +139 -0
  22. package/coverage/ui-kit/src/assets/wrappedImages/determinedError.jsx.html +472 -0
  23. package/coverage/ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html +244 -0
  24. package/coverage/ui-kit/src/assets/wrappedImages/index.html +251 -0
  25. package/coverage/ui-kit/src/assets/wrappedImages/infoIcon.jsx.html +151 -0
  26. package/coverage/ui-kit/src/assets/wrappedImages/noticeQuestionIcon.jsx.html +265 -0
  27. package/coverage/ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html +205 -0
  28. package/coverage/ui-kit/src/assets/wrappedImages/walletIcon.jsx.html +199 -0
  29. package/coverage/ui-kit/src/common/adapters/axiosAdapter.js.html +190 -0
  30. package/coverage/ui-kit/src/common/adapters/index.html +131 -0
  31. package/coverage/ui-kit/src/common/adapters/qrUtils.js.html +139 -0
  32. package/coverage/ui-kit/src/common/amountUtils.js.html +1393 -0
  33. package/coverage/ui-kit/src/common/errorUtils.js.html +211 -0
  34. package/coverage/ui-kit/src/common/external-apis/apiGroups.js.html +250 -0
  35. package/coverage/ui-kit/src/common/external-apis/index.html +131 -0
  36. package/coverage/ui-kit/src/common/external-apis/ipAddressProviders.js.html +499 -0
  37. package/coverage/ui-kit/src/common/fiatCurrenciesService.js.html +568 -0
  38. package/coverage/ui-kit/src/common/index.html +146 -0
  39. package/coverage/ui-kit/src/common/models/blockchain.js.html +115 -0
  40. package/coverage/ui-kit/src/common/models/coin.js.html +556 -0
  41. package/coverage/ui-kit/src/common/models/index.html +146 -0
  42. package/coverage/ui-kit/src/common/models/protocol.js.html +100 -0
  43. package/coverage/ui-kit/src/common/utils/cache.js.html +889 -0
  44. package/coverage/ui-kit/src/common/utils/emailAPI.js.html +139 -0
  45. package/coverage/ui-kit/src/common/utils/index.html +161 -0
  46. package/coverage/ui-kit/src/common/utils/logging/index.html +131 -0
  47. package/coverage/ui-kit/src/common/utils/logging/logger.js.html +229 -0
  48. package/coverage/ui-kit/src/common/utils/logging/logsStorage.js.html +268 -0
  49. package/coverage/ui-kit/src/common/utils/postponeExecution.js.html +118 -0
  50. package/coverage/ui-kit/src/common/utils/safeStringify.js.html +235 -0
  51. package/coverage/ui-kit/src/components/atoms/AssetIcon/AssetIcon.jsx.html +277 -0
  52. package/coverage/ui-kit/src/components/atoms/AssetIcon/index.html +116 -0
  53. package/coverage/ui-kit/src/components/atoms/AssetSelection/AssetSelection.jsx.html +310 -0
  54. package/coverage/ui-kit/src/components/atoms/AssetSelection/index.html +116 -0
  55. package/coverage/ui-kit/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +217 -0
  56. package/coverage/ui-kit/src/components/atoms/BackgroundTitle/index.html +116 -0
  57. package/coverage/ui-kit/src/components/atoms/InformationMessage/InformationMessage.jsx.html +265 -0
  58. package/coverage/ui-kit/src/components/atoms/InformationMessage/index.html +116 -0
  59. package/coverage/ui-kit/src/components/atoms/Input/Input.jsx.html +679 -0
  60. package/coverage/ui-kit/src/components/atoms/Input/index.html +116 -0
  61. package/coverage/ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +256 -0
  62. package/coverage/ui-kit/src/components/atoms/LoadingDots/index.html +116 -0
  63. package/coverage/ui-kit/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +298 -0
  64. package/coverage/ui-kit/src/components/atoms/NoticeIcon/index.html +116 -0
  65. package/coverage/ui-kit/src/components/atoms/QrCode/QrCode.jsx.html +187 -0
  66. package/coverage/ui-kit/src/components/atoms/QrCode/index.html +116 -0
  67. package/coverage/ui-kit/src/components/atoms/RateSelector/RateSelector.jsx.html +196 -0
  68. package/coverage/ui-kit/src/components/atoms/RateSelector/index.html +116 -0
  69. package/coverage/ui-kit/src/components/atoms/SupportChat/SupportChat.jsx.html +229 -0
  70. package/coverage/ui-kit/src/components/atoms/SupportChat/index.html +116 -0
  71. package/coverage/ui-kit/src/components/atoms/Textarea/Textarea.jsx.html +559 -0
  72. package/coverage/ui-kit/src/components/atoms/Textarea/index.html +116 -0
  73. package/coverage/ui-kit/src/components/atoms/TitleBox/TitleBox.jsx.html +577 -0
  74. package/coverage/ui-kit/src/components/atoms/TitleBox/index.html +116 -0
  75. package/coverage/ui-kit/src/components/atoms/Tooltip/Tooltip.jsx.html +295 -0
  76. package/coverage/ui-kit/src/components/atoms/Tooltip/index.html +116 -0
  77. package/coverage/ui-kit/src/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +325 -0
  78. package/coverage/ui-kit/src/components/atoms/TwoLinesOfText/index.html +116 -0
  79. package/coverage/ui-kit/src/components/atoms/Validation/Validation.jsx.html +202 -0
  80. package/coverage/ui-kit/src/components/atoms/Validation/index.html +116 -0
  81. package/coverage/ui-kit/src/components/atoms/buttons/Button/Button.jsx.html +802 -0
  82. package/coverage/ui-kit/src/components/atoms/buttons/Button/index.html +116 -0
  83. package/coverage/ui-kit/src/components/atoms/buttons/Close/Close.jsx.html +262 -0
  84. package/coverage/ui-kit/src/components/atoms/buttons/Close/index.html +116 -0
  85. package/coverage/ui-kit/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +430 -0
  86. package/coverage/ui-kit/src/components/atoms/buttons/LinkButton/index.html +116 -0
  87. package/coverage/ui-kit/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +469 -0
  88. package/coverage/ui-kit/src/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
  89. package/coverage/ui-kit/src/components/hooks/index.html +131 -0
  90. package/coverage/ui-kit/src/components/hooks/useCallHandlingErrors.js.html +163 -0
  91. package/coverage/ui-kit/src/components/hooks/useReferredState.js.html +157 -0
  92. package/coverage/ui-kit/src/components/molecules/AmountInput/AmountInput.jsx.html +1348 -0
  93. package/coverage/ui-kit/src/components/molecules/AmountInput/index.html +116 -0
  94. package/coverage/ui-kit/src/components/molecules/CoinPicker/CoinPicker.jsx.html +2011 -0
  95. package/coverage/ui-kit/src/components/molecules/CoinPicker/index.html +116 -0
  96. package/coverage/ui-kit/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +205 -0
  97. package/coverage/ui-kit/src/components/molecules/LineWithIconLink/index.html +116 -0
  98. package/coverage/ui-kit/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +175 -0
  99. package/coverage/ui-kit/src/components/molecules/TitledLineWithIconLink/index.html +116 -0
  100. package/coverage/ui-kit/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +283 -0
  101. package/coverage/ui-kit/src/components/organisms/CoinPickerDialogStep/index.html +116 -0
  102. package/coverage/ui-kit/src/components/organisms/Dialog/Dialog.jsx.html +1630 -0
  103. package/coverage/ui-kit/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +451 -0
  104. package/coverage/ui-kit/src/components/organisms/Dialog/DialogButtons/index.html +116 -0
  105. package/coverage/ui-kit/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +2146 -0
  106. package/coverage/ui-kit/src/components/organisms/Dialog/DialogStep/index.html +116 -0
  107. package/coverage/ui-kit/src/components/organisms/Dialog/index.html +116 -0
  108. package/coverage/ui-kit/src/components/organisms/SwapForm/SwapForm.jsx.html +3883 -0
  109. package/coverage/ui-kit/src/components/organisms/SwapForm/index.html +116 -0
  110. package/coverage/ui-kit/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +316 -0
  111. package/coverage/ui-kit/src/components/templates/DeterminedErrorDialogStep/index.html +116 -0
  112. package/coverage/ui-kit/src/components/utils/index.html +161 -0
  113. package/coverage/ui-kit/src/components/utils/inputValueProviders.js.html +259 -0
  114. package/coverage/ui-kit/src/components/utils/textUtils.js.html +139 -0
  115. package/coverage/ui-kit/src/components/utils/uiUtils.js.html +127 -0
  116. package/coverage/ui-kit/src/components/utils/urlQueryUtils.js.html +346 -0
  117. package/coverage/ui-kit/src/constants/atoms/Close/close.jsx.html +100 -0
  118. package/coverage/ui-kit/src/constants/atoms/Close/index.html +116 -0
  119. package/coverage/ui-kit/src/constants/atoms/LinkButton/index.html +116 -0
  120. package/coverage/ui-kit/src/constants/atoms/LinkButton/linkButton.jsx.html +103 -0
  121. package/coverage/ui-kit/src/constants/atoms/Tooltip/index.html +116 -0
  122. package/coverage/ui-kit/src/constants/atoms/Tooltip/tooltip.jsx.html +109 -0
  123. package/coverage/ui-kit/src/constants/globalConstants.jsx.html +97 -0
  124. package/coverage/ui-kit/src/constants/index.html +116 -0
  125. package/coverage/ui-kit/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +88 -0
  126. package/coverage/ui-kit/src/constants/organisms/dialog/DialogStep/index.html +116 -0
  127. package/coverage/ui-kit/src/constants/organisms/dialog/dialog.js.html +172 -0
  128. package/coverage/ui-kit/src/constants/organisms/dialog/index.html +116 -0
  129. package/coverage/ui-kit/src/index.html +116 -0
  130. package/coverage/ui-kit/src/index.js.html +367 -0
  131. package/coverage/ui-kit/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +1762 -0
  132. package/coverage/ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +649 -0
  133. package/coverage/ui-kit/src/robustExteranlApiCallerService/cancelProcessing.js.html +172 -0
  134. package/coverage/ui-kit/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +394 -0
  135. package/coverage/ui-kit/src/robustExteranlApiCallerService/externalApiProvider.js.html +553 -0
  136. package/coverage/ui-kit/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +331 -0
  137. package/coverage/ui-kit/src/robustExteranlApiCallerService/index.html +206 -0
  138. package/coverage/ui-kit/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +1249 -0
  139. package/coverage/ui-kit/src/swaps-lib/external-apis/index.html +131 -0
  140. package/coverage/ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +727 -0
  141. package/coverage/ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +2899 -0
  142. package/coverage/ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +214 -0
  143. package/coverage/ui-kit/src/swaps-lib/models/existingSwap.js.html +304 -0
  144. package/coverage/ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +487 -0
  145. package/coverage/ui-kit/src/swaps-lib/models/index.html +146 -0
  146. package/coverage/ui-kit/src/swaps-lib/services/index.html +116 -0
  147. package/coverage/ui-kit/src/swaps-lib/services/publicSwapService.js.html +2191 -0
  148. package/coverage/ui-kit/src/swaps-lib/utils/index.html +116 -0
  149. package/coverage/ui-kit/src/swaps-lib/utils/swapUtils.js.html +742 -0
  150. package/coverage/ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
  151. package/coverage/ui-kit/stories/atoms/LinesOfText.stories.jsx.html +283 -0
  152. package/coverage/ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
  153. package/coverage/ui-kit/stories/atoms/QrCode.stories.jsx.html +175 -0
  154. package/coverage/ui-kit/stories/atoms/RateSelector.stories.jsx.html +136 -0
  155. package/coverage/ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
  156. package/coverage/ui-kit/stories/atoms/buttons/Button.stories.jsx.html +946 -0
  157. package/coverage/ui-kit/stories/atoms/buttons/Close.stories.jsx.html +214 -0
  158. package/coverage/ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +295 -0
  159. package/coverage/ui-kit/stories/atoms/buttons/index.html +146 -0
  160. package/coverage/ui-kit/stories/atoms/index.html +191 -0
  161. package/coverage/ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +154 -0
  162. package/coverage/ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +160 -0
  163. package/coverage/ui-kit/stories/molecules/index.html +131 -0
  164. package/coverage/ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +589 -0
  165. package/coverage/ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
  166. package/coverage/ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
  167. package/coverage/ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +337 -0
  168. package/coverage/ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
  169. package/coverage/ui-kit/stories/organisms/Dialog/index.html +116 -0
  170. package/coverage/ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
  171. package/coverage/ui-kit/stories/stubs/index.html +116 -0
  172. package/coverage/ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +193 -0
  173. package/coverage/ui-kit/stories/templates/index.html +116 -0
  174. package/dist/index.cjs +9963 -9
  175. package/dist/index.cjs.map +1 -1
  176. package/dist/index.css +71409 -1641
  177. package/dist/index.css.map +1 -1
  178. package/dist/index.modern.js +7672 -11
  179. package/dist/index.modern.js.map +1 -1
  180. package/dist/index.module.js +9883 -11
  181. package/dist/index.module.js.map +1 -1
  182. package/dist/index.umd.js +9954 -12
  183. package/dist/index.umd.js.map +1 -1
  184. package/index.js +1 -1
  185. package/package.json +27 -5
  186. package/src/assets/image/icons/arrow-tosca.svg +3 -0
  187. package/src/assets/wrappedImages/arrowIcon.jsx +19 -0
  188. package/src/assets/wrappedImages/arrowTosca.jsx +20 -0
  189. package/src/assets/wrappedImages/arrowWhite.jsx +20 -0
  190. package/src/assets/wrappedImages/darkRectangle.jsx +18 -0
  191. package/src/assets/wrappedImages/determinedError.jsx +129 -0
  192. package/src/assets/wrappedImages/failedValidationIcon.jsx +53 -0
  193. package/src/assets/wrappedImages/infoIcon.jsx +22 -0
  194. package/src/assets/wrappedImages/noticeQuestionIcon.jsx +60 -0
  195. package/src/assets/wrappedImages/successfulValidationIcon.jsx +40 -0
  196. package/src/assets/wrappedImages/walletIcon.jsx +38 -0
  197. package/src/common/adapters/axiosAdapter.js +35 -0
  198. package/src/common/adapters/qrUtils.js +18 -0
  199. package/src/common/amountUtils.js +436 -0
  200. package/src/common/errorUtils.js +42 -0
  201. package/src/common/external-apis/apiGroups.js +55 -0
  202. package/src/common/external-apis/ipAddressProviders.js +138 -0
  203. package/src/common/fiatCurrenciesService.js +161 -0
  204. package/src/common/models/blockchain.js +10 -0
  205. package/src/common/models/coin.js +157 -0
  206. package/src/common/models/protocol.js +5 -0
  207. package/src/common/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +14 -0
  208. package/src/common/utils/cache.js +268 -0
  209. package/src/common/utils/emailAPI.js +18 -0
  210. package/src/common/utils/logging/logger.js +48 -0
  211. package/src/common/utils/logging/logsStorage.js +61 -0
  212. package/src/common/utils/postponeExecution.js +11 -0
  213. package/src/common/utils/safeStringify.js +50 -0
  214. package/src/components/atoms/AssetIcon/AssetIcon.jsx +64 -0
  215. package/src/components/atoms/AssetIcon/asset-icon.module.scss +42 -0
  216. package/src/components/atoms/AssetSelection/AssetSelection.jsx +75 -0
  217. package/src/components/atoms/AssetSelection/asset-selection.module.scss +55 -0
  218. package/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx +44 -0
  219. package/src/components/atoms/BackgroundTitle/background-title.module.scss +52 -0
  220. package/src/components/atoms/InformationMessage/InformationMessage.jsx +60 -0
  221. package/src/components/atoms/InformationMessage/information-message.module.scss +36 -0
  222. package/src/components/atoms/Input/Input.jsx +198 -0
  223. package/src/components/atoms/Input/input.module.scss +107 -0
  224. package/{stories → src/components}/atoms/LoadingDots/LoadingDots.module.scss +1 -1
  225. package/src/components/atoms/NoticeIcon/NoticeIcon.jsx +71 -0
  226. package/src/components/atoms/NoticeIcon/notice-icon.module.scss +14 -0
  227. package/src/components/atoms/QrCode/QrCode.jsx +34 -0
  228. package/src/components/atoms/QrCode/qr-code.module.scss +9 -0
  229. package/src/components/atoms/RateSelector/RateSelector.jsx +37 -0
  230. package/src/components/atoms/RateSelector/rate-selector.module.scss +47 -0
  231. package/src/components/atoms/SupportChat/SupportChat.jsx +48 -0
  232. package/src/components/atoms/Textarea/Textarea.jsx +158 -0
  233. package/src/components/atoms/Textarea/textarea.module.scss +71 -0
  234. package/src/components/atoms/TitleBox/TitleBox.jsx +164 -0
  235. package/src/components/atoms/TitleBox/title-box.module.scss +30 -0
  236. package/src/components/atoms/Tooltip/Tooltip.jsx +70 -0
  237. package/src/components/atoms/Tooltip/tooltip.module.scss +237 -0
  238. package/src/components/atoms/TwoLinesOfText/LinesOfText.jsx +80 -0
  239. package/src/components/atoms/TwoLinesOfText/lines-of-text.module.scss +65 -0
  240. package/src/components/atoms/Validation/Validation.jsx +39 -0
  241. package/src/components/atoms/Validation/validation.module.scss +15 -0
  242. package/{stories → src/components}/atoms/buttons/Button/Button.jsx +5 -1
  243. package/{stories → src/components}/atoms/buttons/Button/Button.module.scss +1 -1
  244. package/src/components/atoms/buttons/Close/Close.jsx +59 -0
  245. package/src/components/atoms/buttons/Close/close.module.scss +75 -0
  246. package/src/components/atoms/buttons/LinkButton/LinkButton.jsx +115 -0
  247. package/src/components/atoms/buttons/LinkButton/link-button.module.scss +49 -0
  248. package/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +128 -0
  249. package/src/components/atoms/buttons/RadioButtonWithText/radio-button-with-text.module.scss +86 -0
  250. package/src/components/hooks/useCallHandlingErrors.js +26 -0
  251. package/src/components/hooks/useReferredState.js +24 -0
  252. package/src/components/molecules/AmountInput/AmountInput.jsx +421 -0
  253. package/src/components/molecules/AmountInput/amount-input.module.scss +189 -0
  254. package/src/components/molecules/CoinPicker/CoinPicker.jsx +642 -0
  255. package/src/components/molecules/CoinPicker/coin-picker.module.scss +210 -0
  256. package/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx +40 -0
  257. package/src/components/molecules/LineWithIconLink/line-with-icon-link.module.scss +25 -0
  258. package/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx +30 -0
  259. package/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +66 -0
  260. package/src/components/organisms/Dialog/Dialog.jsx +515 -0
  261. package/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +122 -0
  262. package/src/components/organisms/Dialog/DialogButtons/dialog-buttons.module.scss +25 -0
  263. package/src/components/organisms/Dialog/DialogStep/DialogStep.jsx +687 -0
  264. package/src/components/organisms/Dialog/DialogStep/dialog-step.module.scss +383 -0
  265. package/src/components/organisms/Dialog/dialog.module.scss +226 -0
  266. package/src/components/organisms/SwapForm/SwapForm.jsx +1266 -0
  267. package/src/components/organisms/SwapForm/swap-form.module.scss +134 -0
  268. package/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx +77 -0
  269. package/src/components/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +139 -0
  270. package/src/components/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +71 -0
  271. package/src/components/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +144 -0
  272. package/src/components/utils/inputValueProviders.js +58 -0
  273. package/src/components/utils/textUtils.js +18 -0
  274. package/src/components/utils/uiUtils.js +14 -0
  275. package/src/components/utils/urlQueryUtils.js +87 -0
  276. package/src/constants/atoms/Close/close.jsx +5 -0
  277. package/src/constants/atoms/LinkButton/linkButton.jsx +6 -0
  278. package/src/constants/atoms/Tooltip/tooltip.jsx +8 -0
  279. package/src/constants/globalConstants.jsx +4 -0
  280. package/src/constants/organisms/dialog/DialogStep/dialogStep.js +1 -0
  281. package/src/constants/organisms/dialog/dialog.js +29 -0
  282. package/src/index.js +94 -0
  283. package/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js +559 -0
  284. package/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js +188 -0
  285. package/src/robustExteranlApiCallerService/cancelProcessing.js +29 -0
  286. package/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js +103 -0
  287. package/src/robustExteranlApiCallerService/externalApiProvider.js +156 -0
  288. package/src/robustExteranlApiCallerService/externalServicesStatsCollector.js +82 -0
  289. package/src/robustExteranlApiCallerService/robustExternalAPICallerService.js +388 -0
  290. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +787 -0
  291. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +745 -0
  292. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +31 -0
  293. package/src/swaps-lib/external-apis/swapProvider.js +214 -0
  294. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +938 -0
  295. package/src/swaps-lib/models/baseSwapCreationInfo.js +43 -0
  296. package/src/swaps-lib/models/existingSwap.js +73 -0
  297. package/src/swaps-lib/models/existingSwapWithFiatData.js +134 -0
  298. package/src/swaps-lib/services/publicSwapService.js +702 -0
  299. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +506 -0
  300. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +1311 -0
  301. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getAllSupportedCurrencies.test.js +76 -0
  302. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getDepositCurrencies.test.js +82 -0
  303. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +1892 -0
  304. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getWithdrawalCurrencies.test.js +111 -0
  305. package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +88 -0
  306. package/src/swaps-lib/utils/swapUtils.js +219 -0
  307. package/stories/stubs/exampleContent.jsx +20 -0
  308. package/styles/_placeholder.scss +1 -1
  309. package/styles/fonts/NunitoSans-Bold.ttf +0 -0
  310. package/styles/fonts/NunitoSans-ExtraBold.ttf +0 -0
  311. package/styles/fonts/NunitoSans-Light.ttf +0 -0
  312. package/styles/fonts/NunitoSans-Regular.ttf +0 -0
  313. package/styles/fonts/NunitoSans-SemiBold.ttf +0 -0
  314. package/styles/global-styles-index.scss +1 -1
  315. package/styles/index.scss +5 -3
  316. package/stories/index.js +0 -2
  317. /package/{stories → src/components}/atoms/LoadingDots/LoadingDots.jsx +0 -0
@@ -0,0 +1,687 @@
1
+ import React, { useEffect, useRef, useState } from "react";
2
+ import PropTypes from "prop-types";
3
+
4
+ import { logErrorOrOutputToConsole } from "../../../../common/errorUtils";
5
+ import { DIALOG_STEP_CLASS } from "../../../../constants/organisms/dialog/DialogStep/dialogStep";
6
+ import { DIALOG_TRANSITION_STEP_DURATION } from "../../../../constants/organisms/dialog/dialog";
7
+
8
+ import arrowTosca from "../../../../assets/wrappedImages/arrowTosca";
9
+ import arrowWhite from "../../../../assets/wrappedImages/arrowWhite";
10
+
11
+ import s from "./dialog-step.module.scss";
12
+ import { AssetIcon } from "../../../atoms/AssetIcon/AssetIcon";
13
+ import { LinkButton } from "../../../atoms/buttons/LinkButton/LinkButton";
14
+ import { BackgroundTitle } from "../../../atoms/BackgroundTitle/BackgroundTitle";
15
+ import { DialogButtons } from "../DialogButtons/DialogButtons";
16
+ import { LoadingDots } from "../../../atoms/LoadingDots/LoadingDots";
17
+ import { ICON_ROTATE_OPTIONS } from "../../../../constants/atoms/LinkButton/linkButton";
18
+
19
+ /**
20
+ * Step component, part of the DialogWithSteps modal component. This component should be used inside the primary dialog component.
21
+ * @component
22
+ * @param {string} stepName - Step name, specified on the root dialog level, used as an ID for dialog navigation.
23
+ * @param {Object} children - Content of the dialog step. Supports both raw content and components.
24
+ * @param {string} image - Illustration/icon at the top, path to an image. The content is the path to the image.
25
+ * @param {React.ComponentType} ImageRaw - Illustration/icon at the top, path to an image. The content is the image component to be inserted.
26
+ * @param {string} title - Step title.
27
+ * @param {string} titleIcon - Icon next to the step title, path to an image.
28
+ * @param {Coin} titleIconCoin - Coin to be shown as an AssetIcon next to the step title.
29
+ * @param {function} coinToIconPaths - Function returning icons paths by Coin
30
+ * @param {boolean} titleLoadingDots - Show loading dots next to the title or not.
31
+ * @param {string} subtitle - Step subtitle.
32
+ * @param {string} backButtonText - Secondary button title.
33
+ * @param {function} backButtonClick - Secondary button click handler.
34
+ * @param {string} backButtonTo - Secondary button link.
35
+ * @param {string} confirmButtonText - Primary button title.
36
+ * @param {function} confirmButtonClick - Primary button click handler.
37
+ * @param {string} confirmButtonLink - Primary button link.
38
+ * @param {boolean} primaryButtonLoader - Enable loader for the primary button.
39
+ * @param {boolean} fixedButtons - Enable fixed buttons in the bottom for mobile devices.
40
+ * @param {boolean} showCornerBackButton - Forcefully enable or disable blue corner back button.
41
+ * @param {string} cornerBackButtonTitle - Blue corner back button title.
42
+ * @param {function} cornerBackButtonClick - Blue corner back button click handler.
43
+ * @param {boolean} bigButtonMargins - Increase button margins.
44
+ * @param {boolean} noButtonMargins - Decrease button margins.
45
+ * @param {boolean} headerTitleLeft - Align header title to the left. Default: false.
46
+ * @param {boolean} subtitleSmallMargin - Reduce the margin under the subtitle.
47
+ * @param {boolean} subtitleNoMargin - Disable the margin under the subtitle.
48
+ * @param {boolean} showBackgroundTitle - Enable the semi-transparent secondary background title.
49
+ * @param {function} setClickTrigger - Function to setup an external trigger for the primary button.
50
+ * @param {boolean} breakSubtitleWords - Enable word-break for subtitles. Default: false.
51
+ * @param {string} contentAlign - Receives "left", "center", "right". Controls the step content container alignment.
52
+ * @param {Object} controls - Dialog-to-step connection object, required for multi-step dialog windows.
53
+ * @param {string} width - Width in pixels, formatted as "1000px" and passed a string. Values should be used from constants.
54
+ * @param {string} height - Height in pixels, formatted as "1000px" and passed a string. Values should be used from constants.
55
+ * @param {string} backgroundImage - Background image, path to an image.
56
+ * @param {string} backgroundImageMobile - Background image for mobiles, path to an image.
57
+ * @param {boolean} isSecondaryButtonBig - Changes the secondary button style from link to a secondary-button. Default: false.
58
+ * @returns {JSX.Element} React component
59
+ */
60
+ export const DialogStep = ({
61
+ stepName = "",
62
+ children = "",
63
+ image = "",
64
+ ImageRaw,
65
+ title = "",
66
+ titleIcon = "",
67
+ titleIconCoin,
68
+ coinToIconPaths = () => {},
69
+ titleLoadingDots = false,
70
+ subtitle = "",
71
+ backButtonText = "",
72
+ backButtonClick = () => {},
73
+ backButtonTo = "",
74
+ confirmButtonText = "",
75
+ confirmButtonClick = () => {},
76
+ confirmButtonLink = "",
77
+ primaryButtonLoader = false,
78
+ fixedButtons = false,
79
+ showCornerBackButton = null,
80
+ cornerBackButtonTitle = null,
81
+ cornerBackButtonClick = null,
82
+ bigButtonMargins = false,
83
+ noButtonMargins = false,
84
+ headerTitleLeft = false,
85
+ subtitleSmallMargin = false,
86
+ subtitleNoMargin = false,
87
+ showBackgroundTitle = true,
88
+ setClickTrigger = () => {},
89
+ breakSubtitleWords = false,
90
+ contentAlign = "left",
91
+ controls = {},
92
+ width = "",
93
+ height,
94
+ backgroundImage,
95
+ backgroundImageMobile,
96
+ isSecondaryButtonBig = false,
97
+ }) => {
98
+ const {
99
+ currentStep = null,
100
+ isCurrentStep = () => {},
101
+ previousStep,
102
+ getStepClass = () => {},
103
+ updateDialogConfiguration,
104
+ provideCurrentStepRef,
105
+ animationConfiguration,
106
+ disableAnimation,
107
+ showCornerButtonForStep,
108
+ scrollDialogToTop = () => {},
109
+ updateButtonsConfiguration = () => {},
110
+ clearButtonsConfiguration = () => {},
111
+ buttonControllingStep,
112
+ updateButtonControllingStep = () => {},
113
+ updateAnimationConfiguration = () => {},
114
+ inline,
115
+ } = controls;
116
+
117
+ const [isMultiStep, setIsMultiStep] = useState(false);
118
+ const [stepClass, setStepClass] = useState("");
119
+ const [wrapperDirectionSubclass, setWrapperDirectionSubclass] =
120
+ useState("");
121
+ const [unmountOnAnimationEndTrigger, setUnmountOnAnimationEndTrigger] =
122
+ useState(0);
123
+ const [stepMounted, setStepMounted] = useState(false);
124
+ const [isTopImagePassed, setIsTopImagePassed] = useState(false);
125
+
126
+ const currentStepRef = useRef();
127
+ // const { t } = useTranslation();
128
+
129
+ useEffect(
130
+ () => setIsTopImagePassed(!!image || !!ImageRaw),
131
+ [image, ImageRaw]
132
+ );
133
+
134
+ useEffect(() => {
135
+ if (controls !== {} && stepName !== "") setIsMultiStep(true);
136
+ // eslint-disable-next-line react-hooks/exhaustive-deps
137
+ }, []);
138
+
139
+ const handleTransitionEnd = (event) => {
140
+ if (
141
+ isMultiStep &&
142
+ isCurrentStep(stepName) &&
143
+ event.propertyName === "opacity" &&
144
+ event.target.classList[0] === DIALOG_STEP_CLASS
145
+ ) {
146
+ disableAnimation(
147
+ animationConfiguration.animateHeightTransitionEnabled
148
+ );
149
+ }
150
+
151
+ if (
152
+ isMultiStep &&
153
+ unmountOnAnimationEndTrigger &&
154
+ event.propertyName === "opacity" &&
155
+ event.target.classList[0] === DIALOG_STEP_CLASS
156
+ ) {
157
+ clearButtonsConfiguration();
158
+ scrollDialogToTop();
159
+ setStepMounted(false);
160
+ setUnmountOnAnimationEndTrigger(0);
161
+ }
162
+ };
163
+
164
+ useEffect(() => {
165
+ var multiStep = false;
166
+ if (controls !== {} && stepName !== "") {
167
+ setIsMultiStep(true);
168
+ multiStep = true;
169
+ }
170
+
171
+ if (!multiStep && fixedButtons) {
172
+ logErrorOrOutputToConsole(
173
+ new Error(
174
+ "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."
175
+ )
176
+ );
177
+ }
178
+
179
+ if (multiStep) {
180
+ if (getStepClass(stepName) === "current") setStepMounted(true);
181
+
182
+ if (stepClass === "current" && getStepClass(stepName) !== "current")
183
+ setUnmountOnAnimationEndTrigger((prev) => prev + 1);
184
+
185
+ setWrapperDirectionSubclass(
186
+ getStepClass(stepName) === "current" &&
187
+ animationConfiguration.currentStepAnimationEnabled
188
+ ? stepClass === "prev"
189
+ ? "appear-from-left"
190
+ : "appear-from-right"
191
+ : ""
192
+ );
193
+ } else {
194
+ if (width !== "")
195
+ logErrorOrOutputToConsole(
196
+ new Error(
197
+ "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."
198
+ )
199
+ );
200
+ setStepMounted(true);
201
+ }
202
+
203
+ setStepClass(multiStep ? getStepClass(stepName) : "current");
204
+ if (multiStep && isCurrentStep(stepName)) {
205
+ setTimeout(
206
+ () => updateButtonControllingStep(stepName),
207
+ buttonControllingStep === ""
208
+ ? 0
209
+ : DIALOG_TRANSITION_STEP_DURATION
210
+ );
211
+
212
+ setTimeout(() => {
213
+ updateButtonsConfiguration(
214
+ {
215
+ primaryButtonTitle: confirmButtonText,
216
+ primaryButtonOnClick: (resetButtonLoader) =>
217
+ confirmButtonClick(resetButtonLoader),
218
+ primaryButtonLoader: primaryButtonLoader,
219
+ primaryButtonTo: confirmButtonLink,
220
+ primaryButtonSetClickTrigger: setClickTrigger,
221
+ secondaryButtonTitle: backButtonText,
222
+ secondaryButtonOnClick: backButtonClick,
223
+ secondaryButtonTo: backButtonTo,
224
+ fixedButtonsEnabled: fixedButtons,
225
+ },
226
+ stepName
227
+ );
228
+
229
+ updateAnimationConfiguration((prev) => {
230
+ return {
231
+ ...prev,
232
+ hideMobileBottomButtonSection: false,
233
+ };
234
+ });
235
+ }, DIALOG_TRANSITION_STEP_DURATION * 3);
236
+
237
+ updateDialogConfiguration((prev) => {
238
+ return {
239
+ ...prev,
240
+ cornerBackButtonTitle: cornerBackButtonTitle,
241
+ customWidth: width,
242
+ };
243
+ });
244
+ provideCurrentStepRef(currentStepRef);
245
+ }
246
+ // eslint-disable-next-line react-hooks/exhaustive-deps
247
+ }, [currentStep]);
248
+
249
+ useEffect(() => {
250
+ if (
251
+ isMultiStep &&
252
+ isCurrentStep(stepName) &&
253
+ fixedButtons &&
254
+ (confirmButtonText || backButtonText)
255
+ ) {
256
+ updateButtonsConfiguration(
257
+ {
258
+ primaryButtonTitle: confirmButtonText,
259
+ primaryButtonOnClick: (resetButtonLoader) =>
260
+ confirmButtonClick(resetButtonLoader),
261
+ primaryButtonLoader: primaryButtonLoader,
262
+ primaryButtonTo: confirmButtonLink,
263
+ primaryButtonSetClickTrigger: setClickTrigger,
264
+ secondaryButtonTitle: backButtonText,
265
+ secondaryButtonOnClick: backButtonClick,
266
+ secondaryButtonTo: backButtonTo,
267
+ fixedButtonsEnabled: fixedButtons,
268
+ },
269
+ stepName
270
+ );
271
+ }
272
+ // eslint-disable-next-line react-hooks/exhaustive-deps
273
+ }, [
274
+ confirmButtonText,
275
+ confirmButtonClick,
276
+ primaryButtonLoader,
277
+ confirmButtonLink,
278
+ setClickTrigger,
279
+ backButtonText,
280
+ backButtonClick,
281
+ backButtonTo,
282
+ currentStep,
283
+ ]);
284
+
285
+ const { assetIconSrc, assetIconProtocolSrc, fallbackSrc } =
286
+ titleIconCoin && coinToIconPaths ? coinToIconPaths(titleIconCoin) : {};
287
+
288
+ return (
289
+ <div
290
+ className={
291
+ s[DIALOG_STEP_CLASS] +
292
+ " " +
293
+ s[stepClass] +
294
+ (!isMultiStep ||
295
+ !animationConfiguration?.currentStepAnimationEnabled
296
+ ? " " + s["animation-disabled"]
297
+ : "") +
298
+ (!isMultiStep ? " " + s["single-step"] : "") +
299
+ (backgroundImage || backgroundImageMobile
300
+ ? " " + s["with-background"]
301
+ : "") +
302
+ (inline ? " " + s["inline"] : "")
303
+ }
304
+ ref={currentStepRef}
305
+ onTransitionEnd={handleTransitionEnd}
306
+ style={height ? { height: height } : null}
307
+ >
308
+ {stepMounted ? (
309
+ <>
310
+ {backgroundImage || backgroundImageMobile ? (
311
+ <div
312
+ className={
313
+ s["dialog-step-background-image"] +
314
+ " " +
315
+ s[stepClass]
316
+ }
317
+ >
318
+ {backgroundImage ? (
319
+ <img
320
+ src={backgroundImage}
321
+ className={
322
+ s[
323
+ "dialog-step-background-image-desktop"
324
+ ] +
325
+ " " +
326
+ stepClass +
327
+ (!backgroundImageMobile
328
+ ? " " + s["primary"]
329
+ : "")
330
+ }
331
+ alt={"dialog step background"}
332
+ />
333
+ ) : null}
334
+ {backgroundImageMobile ? (
335
+ <img
336
+ src={backgroundImageMobile}
337
+ className={
338
+ s[
339
+ "dialog-step-background-image-mobile"
340
+ ] +
341
+ " " +
342
+ stepClass +
343
+ (!backgroundImage
344
+ ? " " + s["primary"]
345
+ : "")
346
+ }
347
+ alt={"dialog step background"}
348
+ />
349
+ ) : null}
350
+ </div>
351
+ ) : null}
352
+ <div
353
+ className={
354
+ s["dialog-step-wrapper"] +
355
+ " " +
356
+ s[stepClass] +
357
+ " " +
358
+ s[wrapperDirectionSubclass] +
359
+ (inline ? " " + s["inline"] : "")
360
+ }
361
+ >
362
+ {isMultiStep &&
363
+ showCornerButtonForStep(
364
+ stepName,
365
+ showCornerBackButton
366
+ ) ? (
367
+ <div
368
+ className={s["dialog-step-wrapper-back-button"]}
369
+ >
370
+ <LinkButton
371
+ onClick={
372
+ cornerBackButtonClick
373
+ ? cornerBackButtonClick
374
+ : previousStep
375
+ }
376
+ content={
377
+ cornerBackButtonTitle
378
+ ? cornerBackButtonTitle
379
+ : // : t("organisms.DialogWithSteps.DialogStep.default-back-button-title")
380
+ "Back"
381
+ }
382
+ IconComponent={
383
+ backgroundImage || backgroundImageMobile
384
+ ? arrowWhite
385
+ : arrowTosca
386
+ }
387
+ iconRotate={ICON_ROTATE_OPTIONS.rotate90}
388
+ isColored={
389
+ backgroundImage || backgroundImageMobile
390
+ ? false
391
+ : undefined
392
+ }
393
+ />
394
+ </div>
395
+ ) : null}
396
+
397
+ <div
398
+ className={
399
+ s["dialog-step-wrapper-header"] +
400
+ (headerTitleLeft ? " " + s["text-left"] : "") +
401
+ (backgroundImage || backgroundImageMobile
402
+ ? " " + s["with-background-image"]
403
+ : "")
404
+ }
405
+ >
406
+ {image ? (
407
+ <img
408
+ src={image}
409
+ alt="dialog popup logo"
410
+ className={
411
+ s["dialog-step-wrapper-header-logo"]
412
+ }
413
+ />
414
+ ) : ImageRaw ? (
415
+ <div
416
+ className={
417
+ s["dialog-step-wrapper-header-logo"]
418
+ }
419
+ >
420
+ <ImageRaw />
421
+ </div>
422
+ ) : null}
423
+
424
+ <div
425
+ className={
426
+ s["dialog-step-wrapper-header-title"] +
427
+ (!isTopImagePassed
428
+ ? " " + s["without-logo"]
429
+ : "") +
430
+ (!isTopImagePassed && headerTitleLeft
431
+ ? " " + s["close-button-padding"]
432
+ : "") +
433
+ (inline
434
+ ? " " + s["no-close-button-padding"]
435
+ : "")
436
+ }
437
+ >
438
+ {titleIconCoin ? (
439
+ <div
440
+ className={
441
+ s[
442
+ "dialog-step-wrapper-header-title-coin-icon"
443
+ ]
444
+ }
445
+ >
446
+ <AssetIcon
447
+ assetIconSrc={assetIconSrc}
448
+ assetIconProtocolSrc={
449
+ assetIconProtocolSrc
450
+ }
451
+ fallbackSrc={fallbackSrc}
452
+ />
453
+ </div>
454
+ ) : titleIcon ? (
455
+ <div
456
+ className={
457
+ s[
458
+ "dialog-step-wrapper-header-title-icon"
459
+ ]
460
+ }
461
+ >
462
+ <img
463
+ src={titleIcon}
464
+ alt="coin icon to send"
465
+ />
466
+ </div>
467
+ ) : null}
468
+ {titleLoadingDots ? (
469
+ <div
470
+ className={
471
+ s[
472
+ "dialog-step-wrapper-header-title-loading"
473
+ ]
474
+ }
475
+ >
476
+ <LoadingDots isColored />
477
+ </div>
478
+ ) : (
479
+ ""
480
+ )}
481
+ <div
482
+ className={
483
+ s[
484
+ "dialog-step-wrapper-header-title-text"
485
+ ]
486
+ }
487
+ >
488
+ {!isTopImagePassed &&
489
+ showBackgroundTitle ? (
490
+ <BackgroundTitle text={title} />
491
+ ) : null}
492
+ <h5
493
+ className={
494
+ s[
495
+ "dialog-step-wrapper-header-title-text-content"
496
+ ] +
497
+ (!isTopImagePassed
498
+ ? " " + s["without-logo"]
499
+ : "") +
500
+ (backgroundImage ||
501
+ backgroundImageMobile
502
+ ? " " + s["white"]
503
+ : "")
504
+ }
505
+ >
506
+ {title}
507
+ </h5>
508
+ </div>
509
+ </div>
510
+
511
+ {subtitle ? (
512
+ <p
513
+ className={
514
+ s["dialog-step-wrapper-header-text"] +
515
+ ` ${
516
+ !isTopImagePassed
517
+ ? s["without-logo"]
518
+ : ""
519
+ } ${
520
+ subtitleSmallMargin
521
+ ? s["small-margin"]
522
+ : ""
523
+ }${
524
+ subtitleNoMargin
525
+ ? s["no-margin"]
526
+ : ""
527
+ } ${
528
+ headerTitleLeft
529
+ ? s["text-left"]
530
+ : ""
531
+ } ${
532
+ breakSubtitleWords
533
+ ? s["break-words"]
534
+ : ""
535
+ } ${
536
+ backgroundImage ||
537
+ backgroundImageMobile
538
+ ? s["white"]
539
+ : ""
540
+ }`
541
+ }
542
+ >
543
+ {subtitle}
544
+ </p>
545
+ ) : null}
546
+ </div>
547
+ <div
548
+ className={
549
+ s["dialog-step-wrapper-content"] +
550
+ " " +
551
+ s["align-" + contentAlign]
552
+ }
553
+ >
554
+ {children}
555
+ </div>
556
+
557
+ {backButtonText || confirmButtonText ? (
558
+ <div
559
+ className={
560
+ s["dialog-step-wrapper-buttons"] +
561
+ ` ${
562
+ bigButtonMargins ? s["big-margin"] : ""
563
+ } ${
564
+ noButtonMargins ? s["no-margin"] : ""
565
+ } ${
566
+ isSecondaryButtonBig
567
+ ? s["space-between-layout"]
568
+ : ""
569
+ }`
570
+ }
571
+ >
572
+ <DialogButtons
573
+ primaryButtonTitle={confirmButtonText}
574
+ primaryButtonOnClick={(resetButtonLoader) =>
575
+ confirmButtonClick(resetButtonLoader)
576
+ }
577
+ primaryButtonLoader={primaryButtonLoader}
578
+ primaryButtonTo={confirmButtonLink}
579
+ primaryButtonSetClickTrigger={
580
+ setClickTrigger
581
+ }
582
+ secondaryButtonTitle={backButtonText}
583
+ secondaryButtonOnClick={backButtonClick}
584
+ secondaryButtonTo={backButtonTo}
585
+ secondaryButtonBig={isSecondaryButtonBig}
586
+ withBackgroundImage={
587
+ !!backgroundImage ||
588
+ !!backgroundImageMobile
589
+ }
590
+ hideOnMobiles={
591
+ isMultiStep &&
592
+ fixedButtons &&
593
+ (backButtonText || confirmButtonText)
594
+ }
595
+ />
596
+ </div>
597
+ ) : (
598
+ ""
599
+ )}
600
+ </div>
601
+ </>
602
+ ) : null}
603
+ </div>
604
+ );
605
+ };
606
+
607
+ DialogStep.propTypes = {
608
+ stepName: PropTypes.string,
609
+ children: PropTypes.node,
610
+ image: PropTypes.string,
611
+ title: PropTypes.string,
612
+ ImageRaw: PropTypes.func,
613
+ titleIcon: PropTypes.string,
614
+ titleIconCoin: PropTypes.object,
615
+ coinToIconPaths: PropTypes.func,
616
+ titleLoadingDots: PropTypes.bool,
617
+ subtitle: PropTypes.string,
618
+ backButtonText: PropTypes.string,
619
+ backButtonClick: PropTypes.func,
620
+ backButtonTo: PropTypes.string,
621
+ confirmButtonText: PropTypes.string,
622
+ confirmButtonClick: PropTypes.func,
623
+ confirmButtonLink: PropTypes.string,
624
+ primaryButtonLoader: PropTypes.bool,
625
+ fixedButtons: PropTypes.bool,
626
+ showCornerBackButton: PropTypes.bool,
627
+ cornerBackButtonTitle: PropTypes.string,
628
+ cornerBackButtonClick: PropTypes.func,
629
+ bigButtonMargins: PropTypes.bool,
630
+ noButtonMargins: PropTypes.bool,
631
+ headerTitleLeft: PropTypes.bool,
632
+ subtitleSmallMargin: PropTypes.bool,
633
+ subtitleNoMargin: PropTypes.bool,
634
+ showBackgroundTitle: PropTypes.bool,
635
+ setClickTrigger: PropTypes.func,
636
+ breakSubtitleWords: PropTypes.bool,
637
+ contentAlign: PropTypes.string,
638
+ controls: PropTypes.object,
639
+ width: PropTypes.oneOf([
640
+ "550px",
641
+ "600px",
642
+ "700px",
643
+ "750px",
644
+ "800px",
645
+ "1000px",
646
+ ]),
647
+ height: PropTypes.string,
648
+ backgroundImage: PropTypes.string,
649
+ backgroundImageMobile: PropTypes.string,
650
+ isSecondaryButtonBig: PropTypes.bool,
651
+ };
652
+
653
+ DialogStep.defaultProps = {
654
+ stepName: "",
655
+ children: null,
656
+ image: "",
657
+ title: "",
658
+ titleIcon: "",
659
+ coinToIconPaths: () => ({}),
660
+ titleLoadingDots: false,
661
+ subtitle: "",
662
+ backButtonText: "",
663
+ backButtonClick: () => {},
664
+ backButtonTo: "",
665
+ confirmButtonText: "",
666
+ confirmButtonClick: () => {},
667
+ confirmButtonLink: "",
668
+ primaryButtonLoader: false,
669
+ fixedButtons: false,
670
+ showCornerBackButton: null,
671
+ cornerBackButtonTitle: null,
672
+ cornerBackButtonClick: null,
673
+ bigButtonMargins: false,
674
+ noButtonMargins: false,
675
+ headerTitleLeft: false,
676
+ subtitleSmallMargin: false,
677
+ subtitleNoMargin: false,
678
+ showBackgroundTitle: true,
679
+ setClickTrigger: () => {},
680
+ breakSubtitleWords: false,
681
+ contentAlign: "left",
682
+ controls: {},
683
+ height: null,
684
+ backgroundImage: "",
685
+ backgroundImageMobile: "",
686
+ isSecondaryButtonBig: false,
687
+ };