@rabbitio/ui-kit 1.0.0-beta.7 → 1.0.0-beta.70

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 (319) 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 +11536 -0
  9. package/coverage/coverage-final.json +100 -0
  10. package/coverage/favicon.png +0 -0
  11. package/coverage/index.html +986 -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/assets/wrappedImages/arrowIcon.jsx.html +124 -0
  17. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/arrowTosca.jsx.html +127 -0
  18. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/arrowWhite.jsx.html +127 -0
  19. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/darkRectangle.jsx.html +106 -0
  20. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/determinedError.jsx.html +439 -0
  21. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/failedValidationIcon.jsx.html +202 -0
  22. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/index.html +251 -0
  23. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/infoIcon.jsx.html +133 -0
  24. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/noticeQuestionIcon.jsx.html +247 -0
  25. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/successfulValidationIcon.jsx.html +163 -0
  26. package/coverage/rabbit-ui-kit/src/assets/wrappedImages/walletIcon.jsx.html +151 -0
  27. package/coverage/rabbit-ui-kit/src/common/adapters/axiosAdapter.js.html +190 -0
  28. package/coverage/rabbit-ui-kit/src/common/adapters/index.html +131 -0
  29. package/coverage/rabbit-ui-kit/src/common/adapters/qrUtils.js.html +139 -0
  30. package/coverage/rabbit-ui-kit/src/common/amountUtils.js.html +1162 -0
  31. package/coverage/rabbit-ui-kit/src/common/errorUtils.js.html +211 -0
  32. package/coverage/rabbit-ui-kit/src/common/external-apis/apiGroups.js.html +250 -0
  33. package/coverage/rabbit-ui-kit/src/common/external-apis/index.html +131 -0
  34. package/coverage/rabbit-ui-kit/src/common/external-apis/ipAddressProviders.js.html +352 -0
  35. package/coverage/rabbit-ui-kit/src/common/fiatCurrenciesService.js.html +544 -0
  36. package/coverage/rabbit-ui-kit/src/common/index.html +146 -0
  37. package/coverage/rabbit-ui-kit/src/common/models/blockchain.js.html +115 -0
  38. package/coverage/rabbit-ui-kit/src/common/models/coin.js.html +544 -0
  39. package/coverage/rabbit-ui-kit/src/common/models/index.html +146 -0
  40. package/coverage/rabbit-ui-kit/src/common/models/protocol.js.html +100 -0
  41. package/coverage/rabbit-ui-kit/src/common/utils/cache.js.html +811 -0
  42. package/coverage/rabbit-ui-kit/src/common/utils/emailAPI.js.html +133 -0
  43. package/coverage/rabbit-ui-kit/src/common/utils/index.html +161 -0
  44. package/coverage/rabbit-ui-kit/src/common/utils/logging/index.html +131 -0
  45. package/coverage/rabbit-ui-kit/src/common/utils/logging/logger.js.html +208 -0
  46. package/coverage/rabbit-ui-kit/src/common/utils/logging/logsStorage.js.html +268 -0
  47. package/coverage/rabbit-ui-kit/src/common/utils/postponeExecution.js.html +118 -0
  48. package/coverage/rabbit-ui-kit/src/common/utils/safeStringify.js.html +235 -0
  49. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/AssetIcon.jsx.html +247 -0
  50. package/coverage/rabbit-ui-kit/src/components/atoms/AssetIcon/index.html +116 -0
  51. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/AssetSelection.jsx.html +286 -0
  52. package/coverage/rabbit-ui-kit/src/components/atoms/AssetSelection/index.html +116 -0
  53. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx.html +187 -0
  54. package/coverage/rabbit-ui-kit/src/components/atoms/BackgroundTitle/index.html +116 -0
  55. package/coverage/rabbit-ui-kit/src/components/atoms/InformationMessage/InformationMessage.jsx.html +235 -0
  56. package/coverage/rabbit-ui-kit/src/components/atoms/InformationMessage/index.html +116 -0
  57. package/coverage/rabbit-ui-kit/src/components/atoms/Input/Input.jsx.html +631 -0
  58. package/coverage/rabbit-ui-kit/src/components/atoms/Input/index.html +116 -0
  59. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/LoadingDots.jsx.html +196 -0
  60. package/coverage/rabbit-ui-kit/src/components/atoms/LoadingDots/index.html +116 -0
  61. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/NoticeIcon.jsx.html +277 -0
  62. package/coverage/rabbit-ui-kit/src/components/atoms/NoticeIcon/index.html +116 -0
  63. package/coverage/rabbit-ui-kit/src/components/atoms/QrCode/QrCode.jsx.html +187 -0
  64. package/coverage/rabbit-ui-kit/src/components/atoms/QrCode/index.html +116 -0
  65. package/coverage/rabbit-ui-kit/src/components/atoms/RateSelector/RateSelector.jsx.html +172 -0
  66. package/coverage/rabbit-ui-kit/src/components/atoms/RateSelector/index.html +116 -0
  67. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/SupportChat.jsx.html +214 -0
  68. package/coverage/rabbit-ui-kit/src/components/atoms/SupportChat/index.html +116 -0
  69. package/coverage/rabbit-ui-kit/src/components/atoms/Textarea/Textarea.jsx.html +523 -0
  70. package/coverage/rabbit-ui-kit/src/components/atoms/Textarea/index.html +116 -0
  71. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/TitleBox.jsx.html +508 -0
  72. package/coverage/rabbit-ui-kit/src/components/atoms/TitleBox/index.html +116 -0
  73. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/Tooltip.jsx.html +289 -0
  74. package/coverage/rabbit-ui-kit/src/components/atoms/Tooltip/index.html +116 -0
  75. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/LinesOfText.jsx.html +307 -0
  76. package/coverage/rabbit-ui-kit/src/components/atoms/TwoLinesOfText/index.html +116 -0
  77. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/Validation.jsx.html +208 -0
  78. package/coverage/rabbit-ui-kit/src/components/atoms/Validation/index.html +116 -0
  79. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/Button.jsx.html +712 -0
  80. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Button/index.html +116 -0
  81. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/Close.jsx.html +244 -0
  82. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/Close/index.html +116 -0
  83. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/LinkButton.jsx.html +403 -0
  84. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/LinkButton/index.html +116 -0
  85. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx.html +415 -0
  86. package/coverage/rabbit-ui-kit/src/components/atoms/buttons/RadioButtonWithText/index.html +116 -0
  87. package/coverage/rabbit-ui-kit/src/components/hooks/index.html +131 -0
  88. package/coverage/rabbit-ui-kit/src/components/hooks/useCallHandlingErrors.js.html +151 -0
  89. package/coverage/rabbit-ui-kit/src/components/hooks/useReferredState.js.html +157 -0
  90. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/AmountInput.jsx.html +997 -0
  91. package/coverage/rabbit-ui-kit/src/components/molecules/AmountInput/index.html +116 -0
  92. package/coverage/rabbit-ui-kit/src/components/molecules/CoinPicker/CoinPicker.jsx.html +1612 -0
  93. package/coverage/rabbit-ui-kit/src/components/molecules/CoinPicker/index.html +116 -0
  94. package/coverage/rabbit-ui-kit/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx.html +190 -0
  95. package/coverage/rabbit-ui-kit/src/components/molecules/LineWithIconLink/index.html +116 -0
  96. package/coverage/rabbit-ui-kit/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx.html +175 -0
  97. package/coverage/rabbit-ui-kit/src/components/molecules/TitledLineWithIconLink/index.html +116 -0
  98. package/coverage/rabbit-ui-kit/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx.html +277 -0
  99. package/coverage/rabbit-ui-kit/src/components/organisms/CoinPickerDialogStep/index.html +116 -0
  100. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/Dialog.jsx.html +1480 -0
  101. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx.html +451 -0
  102. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogButtons/index.html +116 -0
  103. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/DialogStep.jsx.html +1684 -0
  104. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/DialogStep/index.html +116 -0
  105. package/coverage/rabbit-ui-kit/src/components/organisms/Dialog/index.html +116 -0
  106. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/SwapForm.jsx.html +3400 -0
  107. package/coverage/rabbit-ui-kit/src/components/organisms/SwapForm/index.html +116 -0
  108. package/coverage/rabbit-ui-kit/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx.html +316 -0
  109. package/coverage/rabbit-ui-kit/src/components/templates/DeterminedErrorDialogStep/index.html +116 -0
  110. package/coverage/rabbit-ui-kit/src/components/utils/index.html +161 -0
  111. package/coverage/rabbit-ui-kit/src/components/utils/inputValueProviders.js.html +235 -0
  112. package/coverage/rabbit-ui-kit/src/components/utils/textUtils.js.html +139 -0
  113. package/coverage/rabbit-ui-kit/src/components/utils/uiUtils.js.html +121 -0
  114. package/coverage/rabbit-ui-kit/src/components/utils/urlQueryUtils.js.html +271 -0
  115. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/close.jsx.html +100 -0
  116. package/coverage/rabbit-ui-kit/src/constants/atoms/Close/index.html +116 -0
  117. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/index.html +116 -0
  118. package/coverage/rabbit-ui-kit/src/constants/atoms/LinkButton/linkButton.jsx.html +103 -0
  119. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/index.html +116 -0
  120. package/coverage/rabbit-ui-kit/src/constants/atoms/Tooltip/tooltip.jsx.html +109 -0
  121. package/coverage/rabbit-ui-kit/src/constants/globalConstants.jsx.html +94 -0
  122. package/coverage/rabbit-ui-kit/src/constants/index.html +116 -0
  123. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/dialogStep.js.html +88 -0
  124. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/DialogStep/index.html +116 -0
  125. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/dialog.js.html +172 -0
  126. package/coverage/rabbit-ui-kit/src/constants/organisms/dialog/index.html +116 -0
  127. package/coverage/rabbit-ui-kit/src/index.html +116 -0
  128. package/coverage/rabbit-ui-kit/src/index.js.html +349 -0
  129. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js.html +1570 -0
  130. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js.html +526 -0
  131. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/cancelProcessing.js.html +172 -0
  132. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js.html +310 -0
  133. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalApiProvider.js.html +553 -0
  134. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/externalServicesStatsCollector.js.html +319 -0
  135. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/index.html +206 -0
  136. package/coverage/rabbit-ui-kit/src/robustExteranlApiCallerService/robustExternalAPICallerService.js.html +997 -0
  137. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/index.html +131 -0
  138. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapProvider.js.html +709 -0
  139. package/coverage/rabbit-ui-kit/src/swaps-lib/external-apis/swapspaceSwapProvider.js.html +2197 -0
  140. package/coverage/rabbit-ui-kit/src/swaps-lib/models/baseSwapCreationInfo.js.html +214 -0
  141. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwap.js.html +304 -0
  142. package/coverage/rabbit-ui-kit/src/swaps-lib/models/existingSwapWithFiatData.js.html +469 -0
  143. package/coverage/rabbit-ui-kit/src/swaps-lib/models/index.html +146 -0
  144. package/coverage/rabbit-ui-kit/src/swaps-lib/services/index.html +116 -0
  145. package/coverage/rabbit-ui-kit/src/swaps-lib/services/publicSwapService.js.html +1888 -0
  146. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/index.html +116 -0
  147. package/coverage/rabbit-ui-kit/src/swaps-lib/utils/swapUtils.js.html +595 -0
  148. package/coverage/rabbit-ui-kit/stories/atoms/BackgroundTitle.stories.jsx.html +202 -0
  149. package/coverage/rabbit-ui-kit/stories/atoms/LinesOfText.stories.jsx.html +283 -0
  150. package/coverage/rabbit-ui-kit/stories/atoms/LoadingDots.stories.jsx.html +226 -0
  151. package/coverage/rabbit-ui-kit/stories/atoms/QrCode.stories.jsx.html +175 -0
  152. package/coverage/rabbit-ui-kit/stories/atoms/RateSelector.stories.jsx.html +136 -0
  153. package/coverage/rabbit-ui-kit/stories/atoms/Validation.stories.jsx.html +178 -0
  154. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Button.stories.jsx.html +946 -0
  155. package/coverage/rabbit-ui-kit/stories/atoms/buttons/Close.stories.jsx.html +214 -0
  156. package/coverage/rabbit-ui-kit/stories/atoms/buttons/LinkButton.stories.jsx.html +295 -0
  157. package/coverage/rabbit-ui-kit/stories/atoms/buttons/index.html +146 -0
  158. package/coverage/rabbit-ui-kit/stories/atoms/index.html +191 -0
  159. package/coverage/rabbit-ui-kit/stories/molecules/LineWithIconLink.stories.jsx.html +154 -0
  160. package/coverage/rabbit-ui-kit/stories/molecules/TitledLineWithIconLink.stories.jsx.html +160 -0
  161. package/coverage/rabbit-ui-kit/stories/molecules/index.html +131 -0
  162. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/Dialog.stories.jsx.html +589 -0
  163. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/DialogButtons.stories.jsx.html +328 -0
  164. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogButtons/index.html +116 -0
  165. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/DialogStep.stories.jsx.html +337 -0
  166. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/DialogStep/index.html +116 -0
  167. package/coverage/rabbit-ui-kit/stories/organisms/Dialog/index.html +116 -0
  168. package/coverage/rabbit-ui-kit/stories/stubs/exampleContent.jsx.html +145 -0
  169. package/coverage/rabbit-ui-kit/stories/stubs/index.html +116 -0
  170. package/coverage/rabbit-ui-kit/stories/templates/DeterminedErrorDialogStep.stories.jsx.html +193 -0
  171. package/coverage/rabbit-ui-kit/stories/templates/index.html +116 -0
  172. package/coverage/sort-arrow-sprite.png +0 -0
  173. package/coverage/sorter.js +196 -0
  174. package/dist/index.cjs +10019 -9
  175. package/dist/index.cjs.map +1 -1
  176. package/dist/index.css +71418 -1641
  177. package/dist/index.css.map +1 -1
  178. package/dist/index.modern.js +7716 -11
  179. package/dist/index.modern.js.map +1 -1
  180. package/dist/index.module.js +9939 -11
  181. package/dist/index.module.js.map +1 -1
  182. package/dist/index.umd.js +10010 -12
  183. package/dist/index.umd.js.map +1 -1
  184. package/index.js +1 -1
  185. package/package.json +29 -5
  186. package/src/assets/image/icons/arrow-tosca.svg +3 -0
  187. package/src/assets/wrappedImages/arrowIcon.jsx +13 -0
  188. package/src/assets/wrappedImages/arrowTosca.jsx +14 -0
  189. package/src/assets/wrappedImages/arrowWhite.jsx +14 -0
  190. package/src/assets/wrappedImages/darkRectangle.jsx +7 -0
  191. package/src/assets/wrappedImages/determinedError.jsx +118 -0
  192. package/src/assets/wrappedImages/failedValidationIcon.jsx +39 -0
  193. package/src/assets/wrappedImages/infoIcon.jsx +16 -0
  194. package/src/assets/wrappedImages/noticeQuestionIcon.jsx +54 -0
  195. package/src/assets/wrappedImages/successfulValidationIcon.jsx +26 -0
  196. package/src/assets/wrappedImages/walletIcon.jsx +22 -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 +359 -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 +89 -0
  203. package/src/common/fiatCurrenciesService.js +153 -0
  204. package/src/common/models/blockchain.js +10 -0
  205. package/src/common/models/coin.js +153 -0
  206. package/src/common/models/protocol.js +5 -0
  207. package/src/common/tests/amountUtils/composeRateText.test.js +152 -0
  208. package/src/common/tests/integration/external-apis/ipAddressProviders/getClientIpAddress.test.js +12 -0
  209. package/src/common/utils/cache.js +242 -0
  210. package/src/common/utils/emailAPI.js +16 -0
  211. package/src/common/utils/logging/logger.js +41 -0
  212. package/src/common/utils/logging/logsStorage.js +61 -0
  213. package/src/common/utils/postponeExecution.js +11 -0
  214. package/src/common/utils/safeStringify.js +50 -0
  215. package/src/components/atoms/AssetIcon/AssetIcon.jsx +54 -0
  216. package/{stories → src/components}/atoms/AssetIcon/asset-icon.module.scss +1 -1
  217. package/src/components/atoms/AssetSelection/AssetSelection.jsx +67 -0
  218. package/src/components/atoms/AssetSelection/asset-selection.module.scss +56 -0
  219. package/src/components/atoms/BackgroundTitle/BackgroundTitle.jsx +34 -0
  220. package/src/components/atoms/BackgroundTitle/background-title.module.scss +52 -0
  221. package/src/components/atoms/InformationMessage/InformationMessage.jsx +50 -0
  222. package/src/components/atoms/InformationMessage/information-message.module.scss +38 -0
  223. package/src/components/atoms/Input/Input.jsx +182 -0
  224. package/src/components/atoms/Input/input.module.scss +107 -0
  225. package/{stories → src/components}/atoms/LoadingDots/LoadingDots.jsx +8 -28
  226. package/{stories → src/components}/atoms/LoadingDots/LoadingDots.module.scss +1 -1
  227. package/src/components/atoms/NoticeIcon/NoticeIcon.jsx +64 -0
  228. package/src/components/atoms/NoticeIcon/notice-icon.module.scss +14 -0
  229. package/src/components/atoms/QrCode/QrCode.jsx +34 -0
  230. package/src/components/atoms/QrCode/qr-code.module.scss +15 -0
  231. package/src/components/atoms/RateSelector/RateSelector.jsx +29 -0
  232. package/src/components/atoms/RateSelector/rate-selector.module.scss +47 -0
  233. package/{stories/atoms/SupportChat/SupportChat.js → src/components/atoms/SupportChat/SupportChat.jsx} +4 -1
  234. package/src/components/atoms/Textarea/Textarea.jsx +146 -0
  235. package/src/components/atoms/Textarea/textarea.module.scss +71 -0
  236. package/src/components/atoms/TitleBox/TitleBox.jsx +141 -0
  237. package/src/components/atoms/TitleBox/title-box.module.scss +32 -0
  238. package/src/components/atoms/Tooltip/Tooltip.jsx +68 -0
  239. package/src/components/atoms/Tooltip/tooltip.module.scss +237 -0
  240. package/src/components/atoms/TwoLinesOfText/LinesOfText.jsx +74 -0
  241. package/src/components/atoms/TwoLinesOfText/lines-of-text.module.scss +65 -0
  242. package/src/components/atoms/Validation/Validation.jsx +41 -0
  243. package/src/components/atoms/Validation/validation.module.scss +15 -0
  244. package/{stories → src/components}/atoms/buttons/Button/Button.jsx +22 -48
  245. package/{stories → src/components}/atoms/buttons/Button/Button.module.scss +1 -1
  246. package/src/components/atoms/buttons/Close/Close.jsx +53 -0
  247. package/src/components/atoms/buttons/Close/close.module.scss +75 -0
  248. package/src/components/atoms/buttons/LinkButton/LinkButton.jsx +106 -0
  249. package/src/components/atoms/buttons/LinkButton/link-button.module.scss +49 -0
  250. package/src/components/atoms/buttons/RadioButtonWithText/RadioButtonWithText.jsx +110 -0
  251. package/src/components/atoms/buttons/RadioButtonWithText/radio-button-with-text.module.scss +86 -0
  252. package/src/components/hooks/useCallHandlingErrors.js +22 -0
  253. package/src/components/hooks/useReferredState.js +24 -0
  254. package/src/components/molecules/AmountInput/AmountInput.jsx +304 -0
  255. package/src/components/molecules/AmountInput/amount-input.module.scss +189 -0
  256. package/src/components/molecules/CoinPicker/CoinPicker.jsx +509 -0
  257. package/src/components/molecules/CoinPicker/coin-picker.module.scss +207 -0
  258. package/src/components/molecules/LineWithIconLink/LineWithIconLink.jsx +35 -0
  259. package/src/components/molecules/LineWithIconLink/line-with-icon-link.module.scss +25 -0
  260. package/src/components/molecules/TitledLineWithIconLink/TitledLineWithIconLink.jsx +30 -0
  261. package/src/components/organisms/CoinPickerDialogStep/CoinPickerDialogStep.jsx +64 -0
  262. package/src/components/organisms/Dialog/Dialog.jsx +465 -0
  263. package/src/components/organisms/Dialog/DialogButtons/DialogButtons.jsx +122 -0
  264. package/src/components/organisms/Dialog/DialogButtons/dialog-buttons.module.scss +25 -0
  265. package/src/components/organisms/Dialog/DialogStep/DialogStep.jsx +533 -0
  266. package/src/components/organisms/Dialog/DialogStep/dialog-step.module.scss +381 -0
  267. package/src/components/organisms/Dialog/dialog.module.scss +226 -0
  268. package/src/components/organisms/SwapForm/SwapForm.jsx +1105 -0
  269. package/src/components/organisms/SwapForm/swap-form.module.scss +134 -0
  270. package/src/components/templates/DeterminedErrorDialogStep/DeterminedErrorDialogStep.jsx +77 -0
  271. package/src/components/tests/utils/inputValueProviders/provideFormatOfFloatValueByInputString.test.js +132 -0
  272. package/src/components/tests/utils/urlQueryUtils/getQueryParameterValues.test.js +65 -0
  273. package/src/components/tests/utils/urlQueryUtils/saveQueryParameterAndValues.test.js +104 -0
  274. package/src/components/utils/inputValueProviders.js +50 -0
  275. package/src/components/utils/textUtils.js +18 -0
  276. package/src/components/utils/uiUtils.js +12 -0
  277. package/src/components/utils/urlQueryUtils.js +62 -0
  278. package/src/constants/atoms/Close/close.jsx +5 -0
  279. package/src/constants/atoms/LinkButton/linkButton.jsx +6 -0
  280. package/src/constants/atoms/Tooltip/tooltip.jsx +8 -0
  281. package/src/constants/globalConstants.jsx +3 -0
  282. package/src/constants/organisms/dialog/DialogStep/dialogStep.js +1 -0
  283. package/src/constants/organisms/dialog/dialog.js +29 -0
  284. package/src/index.js +88 -0
  285. package/src/robustExteranlApiCallerService/cacheAndConcurrentRequestsResolver.js +495 -0
  286. package/src/robustExteranlApiCallerService/cachedRobustExternalApiCallerService.js +147 -0
  287. package/src/robustExteranlApiCallerService/cancelProcessing.js +29 -0
  288. package/src/robustExteranlApiCallerService/concurrentCalculationsMetadataHolder.js +75 -0
  289. package/src/robustExteranlApiCallerService/externalApiProvider.js +156 -0
  290. package/src/robustExteranlApiCallerService/externalServicesStatsCollector.js +78 -0
  291. package/src/robustExteranlApiCallerService/robustExternalAPICallerService.js +304 -0
  292. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/_performCallAttempt.test.js +533 -0
  293. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/callExternalAPI/callExternalAPI.test.js +532 -0
  294. package/src/robustExteranlApiCallerService/tests/robustExternalAPICallerService/robustExternalAPICallerService/constructor.test.js +19 -0
  295. package/src/swaps-lib/external-apis/swapProvider.js +208 -0
  296. package/src/swaps-lib/external-apis/swapspaceSwapProvider.js +704 -0
  297. package/src/swaps-lib/models/baseSwapCreationInfo.js +43 -0
  298. package/src/swaps-lib/models/existingSwap.js +73 -0
  299. package/src/swaps-lib/models/existingSwapWithFiatData.js +128 -0
  300. package/src/swaps-lib/services/publicSwapService.js +601 -0
  301. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/_fetchSupportedCurrenciesIfNeeded.test.js +538 -0
  302. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/createSwap.test.js +1249 -0
  303. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getAllSupportedCurrencies.test.js +66 -0
  304. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getDepositCurrencies.test.js +76 -0
  305. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getSwapInfo.test.js +1580 -0
  306. package/src/swaps-lib/test/external-apis/swapspaceSwapProvider/getWithdrawalCurrencies.test.js +105 -0
  307. package/src/swaps-lib/test/utils/swapUtils/safeHandleRequestsLimitExceeding.test.js +80 -0
  308. package/src/swaps-lib/utils/swapUtils.js +170 -0
  309. package/stories/stubs/exampleContent.jsx +20 -0
  310. package/styles/_placeholder.scss +1 -1
  311. package/styles/fonts/NunitoSans-Bold.ttf +0 -0
  312. package/styles/fonts/NunitoSans-ExtraBold.ttf +0 -0
  313. package/styles/fonts/NunitoSans-Light.ttf +0 -0
  314. package/styles/fonts/NunitoSans-Regular.ttf +0 -0
  315. package/styles/fonts/NunitoSans-SemiBold.ttf +0 -0
  316. package/styles/global-styles-index.scss +1 -1
  317. package/styles/index.scss +5 -3
  318. package/stories/atoms/AssetIcon/AssetIcon.js +0 -55
  319. package/stories/index.js +0 -4
@@ -0,0 +1,533 @@
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] = useState("");
120
+ const [unmountOnAnimationEndTrigger, setUnmountOnAnimationEndTrigger] = useState(0);
121
+ const [stepMounted, setStepMounted] = useState(false);
122
+ const [isTopImagePassed, setIsTopImagePassed] = useState(false);
123
+
124
+ const currentStepRef = useRef();
125
+ // const { t } = useTranslation();
126
+
127
+ useEffect(() => setIsTopImagePassed(!!image || !!ImageRaw), [image, ImageRaw]);
128
+
129
+ useEffect(() => {
130
+ if (controls !== {} && stepName !== "") setIsMultiStep(true);
131
+ // eslint-disable-next-line react-hooks/exhaustive-deps
132
+ }, []);
133
+
134
+ const handleTransitionEnd = event => {
135
+ if (
136
+ isMultiStep &&
137
+ isCurrentStep(stepName) &&
138
+ event.propertyName === "opacity" &&
139
+ event.target.classList[0] === s[DIALOG_STEP_CLASS]
140
+ ) {
141
+ disableAnimation(animationConfiguration.animateHeightTransitionEnabled);
142
+ }
143
+
144
+ if (
145
+ isMultiStep &&
146
+ unmountOnAnimationEndTrigger &&
147
+ event.propertyName === "opacity" &&
148
+ event.target.classList[0] === s[DIALOG_STEP_CLASS]
149
+ ) {
150
+ clearButtonsConfiguration();
151
+ scrollDialogToTop();
152
+ setStepMounted(false);
153
+ setUnmountOnAnimationEndTrigger(0);
154
+ }
155
+ };
156
+
157
+ useEffect(() => {
158
+ var multiStep = false;
159
+ if (controls !== {} && stepName !== "") {
160
+ setIsMultiStep(true);
161
+ multiStep = true;
162
+ }
163
+
164
+ if (!multiStep && fixedButtons) {
165
+ logErrorOrOutputToConsole(
166
+ new Error(
167
+ "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."
168
+ )
169
+ );
170
+ }
171
+
172
+ if (multiStep) {
173
+ if (getStepClass(stepName) === "current") setStepMounted(true);
174
+
175
+ if (stepClass === "current" && getStepClass(stepName) !== "current")
176
+ setUnmountOnAnimationEndTrigger(prev => prev + 1);
177
+
178
+ setWrapperDirectionSubclass(
179
+ getStepClass(stepName) === "current" && animationConfiguration.currentStepAnimationEnabled
180
+ ? stepClass === "prev"
181
+ ? "appear-from-left"
182
+ : "appear-from-right"
183
+ : ""
184
+ );
185
+ } else {
186
+ if (width !== "")
187
+ logErrorOrOutputToConsole(
188
+ new Error(
189
+ "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."
190
+ )
191
+ );
192
+ setStepMounted(true);
193
+ }
194
+
195
+ setStepClass(multiStep ? getStepClass(stepName) : "current");
196
+ if (multiStep && isCurrentStep(stepName)) {
197
+ setTimeout(
198
+ () => updateButtonControllingStep(stepName),
199
+ buttonControllingStep === "" ? 0 : DIALOG_TRANSITION_STEP_DURATION
200
+ );
201
+
202
+ setTimeout(() => {
203
+ updateButtonsConfiguration(
204
+ {
205
+ primaryButtonTitle: confirmButtonText,
206
+ primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),
207
+ primaryButtonLoader: primaryButtonLoader,
208
+ primaryButtonTo: confirmButtonLink,
209
+ primaryButtonSetClickTrigger: setClickTrigger,
210
+ secondaryButtonTitle: backButtonText,
211
+ secondaryButtonOnClick: backButtonClick,
212
+ secondaryButtonTo: backButtonTo,
213
+ fixedButtonsEnabled: fixedButtons,
214
+ },
215
+ stepName
216
+ );
217
+
218
+ updateAnimationConfiguration(prev => {
219
+ return {
220
+ ...prev,
221
+ hideMobileBottomButtonSection: false,
222
+ };
223
+ });
224
+ }, DIALOG_TRANSITION_STEP_DURATION * 3);
225
+
226
+ updateDialogConfiguration(prev => {
227
+ return {
228
+ ...prev,
229
+ cornerBackButtonTitle: cornerBackButtonTitle,
230
+ customWidth: width,
231
+ };
232
+ });
233
+ provideCurrentStepRef(currentStepRef);
234
+ }
235
+ // eslint-disable-next-line react-hooks/exhaustive-deps
236
+ }, [currentStep]);
237
+
238
+ useEffect(() => {
239
+ if (isMultiStep && isCurrentStep(stepName) && fixedButtons && (confirmButtonText || backButtonText)) {
240
+ updateButtonsConfiguration(
241
+ {
242
+ primaryButtonTitle: confirmButtonText,
243
+ primaryButtonOnClick: resetButtonLoader => confirmButtonClick(resetButtonLoader),
244
+ primaryButtonLoader: primaryButtonLoader,
245
+ primaryButtonTo: confirmButtonLink,
246
+ primaryButtonSetClickTrigger: setClickTrigger,
247
+ secondaryButtonTitle: backButtonText,
248
+ secondaryButtonOnClick: backButtonClick,
249
+ secondaryButtonTo: backButtonTo,
250
+ fixedButtonsEnabled: fixedButtons,
251
+ },
252
+ stepName
253
+ );
254
+ }
255
+ // eslint-disable-next-line react-hooks/exhaustive-deps
256
+ }, [
257
+ confirmButtonText,
258
+ confirmButtonClick,
259
+ primaryButtonLoader,
260
+ confirmButtonLink,
261
+ setClickTrigger,
262
+ backButtonText,
263
+ backButtonClick,
264
+ backButtonTo,
265
+ currentStep,
266
+ ]);
267
+
268
+ const { assetIconSrc, assetIconProtocolSrc, fallbackSrc } =
269
+ titleIconCoin && coinToIconPaths ? coinToIconPaths(titleIconCoin) : {};
270
+
271
+ return (
272
+ <div
273
+ className={
274
+ s[DIALOG_STEP_CLASS] +
275
+ " " +
276
+ s[stepClass] +
277
+ (!isMultiStep || !animationConfiguration?.currentStepAnimationEnabled
278
+ ? " " + s["animation-disabled"]
279
+ : "") +
280
+ (!isMultiStep ? " " + s["single-step"] : "") +
281
+ (backgroundImage || backgroundImageMobile ? " " + s["with-background"] : "") +
282
+ (inline ? " " + s["inline"] : "")
283
+ }
284
+ ref={currentStepRef}
285
+ onTransitionEnd={handleTransitionEnd}
286
+ style={height ? { height: height } : null}
287
+ >
288
+ {stepMounted ? (
289
+ <>
290
+ {backgroundImage || backgroundImageMobile ? (
291
+ <div className={s["dialog-step-background-image"] + " " + s[stepClass]}>
292
+ {backgroundImage ? (
293
+ <img
294
+ src={backgroundImage}
295
+ className={
296
+ s["dialog-step-background-image-desktop"] +
297
+ " " +
298
+ stepClass +
299
+ (!backgroundImageMobile ? " " + s["primary"] : "")
300
+ }
301
+ alt={"dialog step background"}
302
+ />
303
+ ) : null}
304
+ {backgroundImageMobile ? (
305
+ <img
306
+ src={backgroundImageMobile}
307
+ className={
308
+ s["dialog-step-background-image-mobile"] +
309
+ " " +
310
+ stepClass +
311
+ (!backgroundImage ? " " + s["primary"] : "")
312
+ }
313
+ alt={"dialog step background"}
314
+ />
315
+ ) : null}
316
+ </div>
317
+ ) : null}
318
+ <div
319
+ className={
320
+ s["dialog-step-wrapper"] +
321
+ " " +
322
+ s[stepClass] +
323
+ " " +
324
+ s[wrapperDirectionSubclass] +
325
+ (inline ? " " + s["inline"] : "")
326
+ }
327
+ >
328
+ {isMultiStep && showCornerButtonForStep(stepName, showCornerBackButton) ? (
329
+ <div className={s["dialog-step-wrapper-back-button"]}>
330
+ <LinkButton
331
+ onClick={cornerBackButtonClick ? cornerBackButtonClick : previousStep}
332
+ content={
333
+ cornerBackButtonTitle
334
+ ? cornerBackButtonTitle
335
+ : // : t("organisms.DialogWithSteps.DialogStep.default-back-button-title")
336
+ "Back"
337
+ }
338
+ IconComponent={backgroundImage || backgroundImageMobile ? arrowWhite : arrowTosca}
339
+ iconRotate={ICON_ROTATE_OPTIONS.rotate90}
340
+ isColored={backgroundImage || backgroundImageMobile ? false : undefined}
341
+ />
342
+ </div>
343
+ ) : null}
344
+
345
+ <div
346
+ className={
347
+ s["dialog-step-wrapper-header"] +
348
+ (headerTitleLeft ? " " + s["text-left"] : "") +
349
+ (backgroundImage || backgroundImageMobile ? " " + s["with-background-image"] : "")
350
+ }
351
+ >
352
+ {image ? (
353
+ <img
354
+ src={image}
355
+ alt="dialog popup logo"
356
+ className={s["dialog-step-wrapper-header-logo"]}
357
+ />
358
+ ) : ImageRaw ? (
359
+ <div className={s["dialog-step-wrapper-header-logo"]}>
360
+ <ImageRaw />
361
+ </div>
362
+ ) : null}
363
+
364
+ <div
365
+ className={
366
+ s["dialog-step-wrapper-header-title"] +
367
+ (!isTopImagePassed ? " " + s["without-logo"] : "") +
368
+ (!isTopImagePassed && headerTitleLeft ? " " + s["close-button-padding"] : "") +
369
+ (inline ? " " + s["no-close-button-padding"] : "")
370
+ }
371
+ >
372
+ {titleIconCoin ? (
373
+ <div className={s["dialog-step-wrapper-header-title-coin-icon"]}>
374
+ <AssetIcon
375
+ assetIconSrc={assetIconSrc}
376
+ assetIconProtocolSrc={assetIconProtocolSrc}
377
+ fallbackSrc={fallbackSrc}
378
+ />
379
+ </div>
380
+ ) : titleIcon ? (
381
+ <div className={s["dialog-step-wrapper-header-title-icon"]}>
382
+ <img src={titleIcon} alt="coin icon to send" />
383
+ </div>
384
+ ) : null}
385
+ {titleLoadingDots ? (
386
+ <div className={s["dialog-step-wrapper-header-title-loading"]}>
387
+ <LoadingDots isColored />
388
+ </div>
389
+ ) : (
390
+ ""
391
+ )}
392
+ <div className={s["dialog-step-wrapper-header-title-text"]}>
393
+ {!isTopImagePassed && showBackgroundTitle ? <BackgroundTitle text={title} /> : null}
394
+ <h5
395
+ className={
396
+ s["dialog-step-wrapper-header-title-text-content"] +
397
+ (!isTopImagePassed ? " " + s["without-logo"] : "") +
398
+ (backgroundImage || backgroundImageMobile ? " " + s["white"] : "")
399
+ }
400
+ >
401
+ {title}
402
+ </h5>
403
+ </div>
404
+ </div>
405
+
406
+ {subtitle ? (
407
+ <p
408
+ className={
409
+ s["dialog-step-wrapper-header-text"] +
410
+ ` ${!isTopImagePassed ? s["without-logo"] : ""} ${
411
+ subtitleSmallMargin ? s["small-margin"] : ""
412
+ }${subtitleNoMargin ? s["no-margin"] : ""} ${
413
+ headerTitleLeft ? s["text-left"] : ""
414
+ } ${breakSubtitleWords ? s["break-words"] : ""} ${
415
+ backgroundImage || backgroundImageMobile ? s["white"] : ""
416
+ }`
417
+ }
418
+ >
419
+ {subtitle}
420
+ </p>
421
+ ) : null}
422
+ </div>
423
+ <div className={s["dialog-step-wrapper-content"] + " " + s["align-" + contentAlign]}>
424
+ {children}
425
+ </div>
426
+
427
+ {backButtonText || confirmButtonText ? (
428
+ <div
429
+ className={
430
+ s["dialog-step-wrapper-buttons"] +
431
+ ` ${bigButtonMargins ? s["big-margin"] : ""} ${
432
+ noButtonMargins ? s["no-margin"] : ""
433
+ } ${isSecondaryButtonBig ? s["space-between-layout"] : ""}`
434
+ }
435
+ >
436
+ <DialogButtons
437
+ primaryButtonTitle={confirmButtonText}
438
+ primaryButtonOnClick={resetButtonLoader => confirmButtonClick(resetButtonLoader)}
439
+ primaryButtonLoader={primaryButtonLoader}
440
+ primaryButtonTo={confirmButtonLink}
441
+ primaryButtonSetClickTrigger={setClickTrigger}
442
+ secondaryButtonTitle={backButtonText}
443
+ secondaryButtonOnClick={backButtonClick}
444
+ secondaryButtonTo={backButtonTo}
445
+ secondaryButtonBig={isSecondaryButtonBig}
446
+ withBackgroundImage={!!backgroundImage || !!backgroundImageMobile}
447
+ hideOnMobiles={isMultiStep && fixedButtons && (backButtonText || confirmButtonText)}
448
+ />
449
+ </div>
450
+ ) : (
451
+ ""
452
+ )}
453
+ </div>
454
+ </>
455
+ ) : null}
456
+ </div>
457
+ );
458
+ };
459
+
460
+ DialogStep.propTypes = {
461
+ stepName: PropTypes.string,
462
+ children: PropTypes.node,
463
+ image: PropTypes.string,
464
+ title: PropTypes.string,
465
+ ImageRaw: PropTypes.func,
466
+ titleIcon: PropTypes.string,
467
+ titleIconCoin: PropTypes.object,
468
+ coinToIconPaths: PropTypes.func,
469
+ titleLoadingDots: PropTypes.bool,
470
+ subtitle: PropTypes.string,
471
+ backButtonText: PropTypes.string,
472
+ backButtonClick: PropTypes.func,
473
+ backButtonTo: PropTypes.string,
474
+ confirmButtonText: PropTypes.string,
475
+ confirmButtonClick: PropTypes.func,
476
+ confirmButtonLink: PropTypes.string,
477
+ primaryButtonLoader: PropTypes.bool,
478
+ fixedButtons: PropTypes.bool,
479
+ showCornerBackButton: PropTypes.bool,
480
+ cornerBackButtonTitle: PropTypes.string,
481
+ cornerBackButtonClick: PropTypes.func,
482
+ bigButtonMargins: PropTypes.bool,
483
+ noButtonMargins: PropTypes.bool,
484
+ headerTitleLeft: PropTypes.bool,
485
+ subtitleSmallMargin: PropTypes.bool,
486
+ subtitleNoMargin: PropTypes.bool,
487
+ showBackgroundTitle: PropTypes.bool,
488
+ setClickTrigger: PropTypes.func,
489
+ breakSubtitleWords: PropTypes.bool,
490
+ contentAlign: PropTypes.string,
491
+ controls: PropTypes.object,
492
+ width: PropTypes.oneOf(["550px", "600px", "700px", "750px", "800px", "1000px"]),
493
+ height: PropTypes.string,
494
+ backgroundImage: PropTypes.string,
495
+ backgroundImageMobile: PropTypes.string,
496
+ isSecondaryButtonBig: PropTypes.bool,
497
+ };
498
+
499
+ DialogStep.defaultProps = {
500
+ stepName: "",
501
+ children: null,
502
+ image: "",
503
+ title: "",
504
+ titleIcon: "",
505
+ coinToIconPaths: () => ({}),
506
+ titleLoadingDots: false,
507
+ subtitle: "",
508
+ backButtonText: "",
509
+ backButtonClick: () => {},
510
+ backButtonTo: "",
511
+ confirmButtonText: "",
512
+ confirmButtonClick: () => {},
513
+ confirmButtonLink: "",
514
+ primaryButtonLoader: false,
515
+ fixedButtons: false,
516
+ showCornerBackButton: null,
517
+ cornerBackButtonTitle: null,
518
+ cornerBackButtonClick: null,
519
+ bigButtonMargins: false,
520
+ noButtonMargins: false,
521
+ headerTitleLeft: false,
522
+ subtitleSmallMargin: false,
523
+ subtitleNoMargin: false,
524
+ showBackgroundTitle: true,
525
+ setClickTrigger: () => {},
526
+ breakSubtitleWords: false,
527
+ contentAlign: "left",
528
+ controls: {},
529
+ height: null,
530
+ backgroundImage: "",
531
+ backgroundImageMobile: "",
532
+ isSecondaryButtonBig: false,
533
+ };