@alfalab/core-components-confirmation 9.0.5 → 10.0.1

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 (233) hide show
  1. package/CHANGELOG.md +62 -0
  2. package/dist/component.d.ts +4 -164
  3. package/dist/component.js +113 -101
  4. package/dist/components/countdown-loader/component.d.ts +1 -1
  5. package/dist/components/countdown-loader/component.js +1 -1
  6. package/dist/components/countdown-loader/index.css +2 -2
  7. package/dist/components/index.d.ts +1 -3
  8. package/dist/components/index.js +15 -14
  9. package/dist/components/screens/fatal-error/component.d.ts +3 -0
  10. package/dist/components/screens/fatal-error/component.js +25 -0
  11. package/dist/components/screens/fatal-error/index.css +61 -0
  12. package/dist/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  13. package/dist/components/screens/fatal-error/index.js +13 -0
  14. package/dist/components/screens/hint/component.d.ts +3 -0
  15. package/dist/components/screens/hint/component.js +45 -0
  16. package/dist/components/screens/hint/index.css +103 -0
  17. package/dist/components/{countdown → screens/hint}/index.d.ts +0 -0
  18. package/dist/components/screens/hint/index.js +15 -0
  19. package/dist/components/screens/index.d.ts +4 -0
  20. package/dist/components/screens/index.js +26 -0
  21. package/dist/components/screens/initial/component.d.ts +3 -0
  22. package/dist/components/screens/initial/component.js +95 -0
  23. package/dist/components/screens/initial/countdown-section.d.ts +0 -0
  24. package/dist/components/screens/initial/countdown-section.js +15 -0
  25. package/dist/components/screens/initial/index.css +98 -0
  26. package/dist/components/{overlimit → screens/initial}/index.d.ts +0 -0
  27. package/dist/components/screens/initial/index.js +19 -0
  28. package/dist/components/screens/temp-block/component.d.ts +3 -0
  29. package/dist/components/screens/temp-block/component.js +36 -0
  30. package/dist/components/{overlimit → screens/temp-block}/index.css +9 -31
  31. package/dist/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  32. package/dist/components/screens/temp-block/index.js +13 -0
  33. package/dist/context.d.ts +4 -0
  34. package/dist/context.js +27 -0
  35. package/dist/countdown-section-d3286597.d.ts +9 -0
  36. package/dist/countdown-section-d3286597.js +41 -0
  37. package/dist/cssm/component.d.ts +4 -164
  38. package/dist/cssm/component.js +115 -103
  39. package/dist/cssm/components/countdown-loader/component.d.ts +1 -1
  40. package/dist/cssm/components/index.d.ts +1 -3
  41. package/dist/cssm/components/index.js +19 -18
  42. package/dist/cssm/components/screens/fatal-error/component.d.ts +3 -0
  43. package/dist/cssm/components/screens/fatal-error/component.js +24 -0
  44. package/dist/cssm/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  45. package/dist/cssm/components/screens/fatal-error/index.js +14 -0
  46. package/dist/cssm/components/screens/fatal-error/index.module.css +60 -0
  47. package/dist/cssm/components/screens/hint/component.d.ts +3 -0
  48. package/dist/cssm/components/screens/hint/component.js +44 -0
  49. package/dist/cssm/components/{countdown → screens/hint}/index.d.ts +0 -0
  50. package/dist/cssm/components/screens/hint/index.js +16 -0
  51. package/dist/cssm/components/screens/hint/index.module.css +102 -0
  52. package/dist/cssm/components/screens/index.d.ts +4 -0
  53. package/dist/cssm/components/screens/index.js +31 -0
  54. package/dist/cssm/components/screens/initial/component.d.ts +3 -0
  55. package/dist/cssm/components/screens/initial/component.js +97 -0
  56. package/dist/cssm/components/screens/initial/countdown-section.d.ts +9 -0
  57. package/dist/cssm/components/screens/initial/countdown-section.js +41 -0
  58. package/dist/cssm/components/{overlimit → screens/initial}/index.d.ts +0 -0
  59. package/dist/cssm/components/screens/initial/index.js +20 -0
  60. package/dist/cssm/components/{sign-confirmation → screens/initial}/index.module.css +40 -50
  61. package/dist/cssm/components/screens/temp-block/component.d.ts +3 -0
  62. package/dist/cssm/components/screens/temp-block/component.js +36 -0
  63. package/dist/cssm/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  64. package/dist/cssm/components/screens/temp-block/index.js +15 -0
  65. package/dist/cssm/components/{overlimit → screens/temp-block}/index.module.css +6 -28
  66. package/dist/cssm/context.d.ts +4 -0
  67. package/dist/cssm/context.js +27 -0
  68. package/dist/cssm/index.d.ts +3 -0
  69. package/dist/cssm/index.js +29 -20
  70. package/dist/cssm/index.module.css +5 -77
  71. package/dist/cssm/types.d.ts +130 -0
  72. package/dist/cssm/types.js +23 -0
  73. package/dist/cssm/utils.d.ts +30 -0
  74. package/dist/cssm/utils.js +84 -0
  75. package/dist/esm/component.d.ts +4 -164
  76. package/dist/esm/component.js +114 -102
  77. package/dist/esm/components/countdown-loader/component.d.ts +1 -1
  78. package/dist/esm/components/countdown-loader/component.js +1 -1
  79. package/dist/esm/components/countdown-loader/index.css +2 -2
  80. package/dist/esm/components/index.d.ts +1 -3
  81. package/dist/esm/components/index.js +11 -10
  82. package/dist/esm/components/screens/fatal-error/component.d.ts +3 -0
  83. package/dist/esm/components/screens/fatal-error/component.js +17 -0
  84. package/dist/esm/components/screens/fatal-error/index.css +61 -0
  85. package/dist/esm/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  86. package/dist/esm/components/screens/fatal-error/index.js +5 -0
  87. package/dist/esm/components/screens/hint/component.d.ts +3 -0
  88. package/dist/esm/components/screens/hint/component.js +36 -0
  89. package/dist/esm/components/screens/hint/index.css +103 -0
  90. package/dist/esm/components/{countdown → screens/hint}/index.d.ts +0 -0
  91. package/dist/esm/components/screens/hint/index.js +7 -0
  92. package/dist/esm/components/screens/index.d.ts +4 -0
  93. package/dist/esm/components/screens/index.js +15 -0
  94. package/dist/esm/components/screens/initial/component.d.ts +3 -0
  95. package/dist/esm/components/screens/initial/component.js +86 -0
  96. package/dist/esm/components/screens/initial/countdown-section.d.ts +0 -0
  97. package/dist/esm/components/screens/initial/countdown-section.js +7 -0
  98. package/dist/esm/components/screens/initial/index.css +98 -0
  99. package/dist/esm/components/{overlimit → screens/initial}/index.d.ts +0 -0
  100. package/dist/esm/components/screens/initial/index.js +11 -0
  101. package/dist/esm/components/screens/temp-block/component.d.ts +3 -0
  102. package/dist/esm/components/screens/temp-block/component.js +28 -0
  103. package/dist/{modern/components/overlimit → esm/components/screens/temp-block}/index.css +9 -31
  104. package/dist/esm/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  105. package/dist/esm/components/screens/temp-block/index.js +5 -0
  106. package/dist/esm/context.d.ts +4 -0
  107. package/dist/esm/context.js +23 -0
  108. package/dist/esm/countdown-section-e14e0785.d.ts +9 -0
  109. package/dist/esm/countdown-section-e14e0785.js +33 -0
  110. package/dist/esm/index.css +7 -79
  111. package/dist/esm/index.d.ts +3 -0
  112. package/dist/esm/index.js +13 -11
  113. package/dist/esm/types.d.ts +130 -0
  114. package/dist/esm/types.js +19 -0
  115. package/dist/esm/utils.d.ts +30 -0
  116. package/dist/esm/utils.js +76 -0
  117. package/dist/index.css +7 -79
  118. package/dist/index.d.ts +3 -0
  119. package/dist/index.js +25 -16
  120. package/dist/modern/component.d.ts +4 -164
  121. package/dist/modern/component.js +75 -102
  122. package/dist/modern/components/countdown-loader/component.d.ts +1 -1
  123. package/dist/modern/components/countdown-loader/component.js +1 -1
  124. package/dist/modern/components/countdown-loader/index.css +2 -2
  125. package/dist/modern/components/index.d.ts +1 -3
  126. package/dist/modern/components/index.js +11 -10
  127. package/dist/modern/components/screens/fatal-error/component.d.ts +3 -0
  128. package/dist/modern/components/screens/fatal-error/component.js +17 -0
  129. package/dist/modern/components/screens/fatal-error/index.css +61 -0
  130. package/dist/modern/components/{code-input → screens/fatal-error}/index.d.ts +0 -0
  131. package/dist/modern/components/screens/fatal-error/index.js +5 -0
  132. package/dist/modern/components/screens/hint/component.d.ts +3 -0
  133. package/dist/modern/components/screens/hint/component.js +36 -0
  134. package/dist/modern/components/screens/hint/index.css +103 -0
  135. package/dist/modern/components/{countdown → screens/hint}/index.d.ts +0 -0
  136. package/dist/modern/components/screens/hint/index.js +7 -0
  137. package/dist/modern/components/screens/index.d.ts +4 -0
  138. package/dist/modern/components/screens/index.js +15 -0
  139. package/dist/modern/components/screens/initial/component.d.ts +3 -0
  140. package/dist/modern/components/screens/initial/component.js +86 -0
  141. package/dist/modern/components/screens/initial/countdown-section.d.ts +0 -0
  142. package/dist/modern/components/screens/initial/countdown-section.js +7 -0
  143. package/dist/modern/components/screens/initial/index.css +98 -0
  144. package/dist/modern/components/{overlimit → screens/initial}/index.d.ts +0 -0
  145. package/dist/modern/components/screens/initial/index.js +11 -0
  146. package/dist/modern/components/screens/temp-block/component.d.ts +3 -0
  147. package/dist/modern/components/screens/temp-block/component.js +28 -0
  148. package/dist/{esm/components/overlimit → modern/components/screens/temp-block}/index.css +9 -31
  149. package/dist/modern/components/{sign-confirmation → screens/temp-block}/index.d.ts +0 -0
  150. package/dist/modern/components/screens/temp-block/index.js +5 -0
  151. package/dist/modern/context.d.ts +4 -0
  152. package/dist/modern/context.js +23 -0
  153. package/dist/modern/countdown-section-93a6df14.d.ts +9 -0
  154. package/dist/modern/countdown-section-93a6df14.js +32 -0
  155. package/dist/modern/index.css +7 -79
  156. package/dist/modern/index.d.ts +3 -0
  157. package/dist/modern/index.js +12 -10
  158. package/dist/modern/types.d.ts +130 -0
  159. package/dist/modern/types.js +19 -0
  160. package/dist/modern/utils.d.ts +30 -0
  161. package/dist/modern/utils.js +74 -0
  162. package/dist/types.d.ts +130 -0
  163. package/dist/types.js +23 -0
  164. package/dist/utils.d.ts +30 -0
  165. package/dist/utils.js +84 -0
  166. package/package.json +5 -4
  167. package/dist/components/code-input/component.d.ts +0 -16
  168. package/dist/components/code-input/component.js +0 -160
  169. package/dist/components/code-input/index.css +0 -99
  170. package/dist/components/code-input/index.js +0 -13
  171. package/dist/components/code-input/utils.d.ts +0 -10
  172. package/dist/components/code-input/utils.js +0 -21
  173. package/dist/components/countdown/component.d.ts +0 -23
  174. package/dist/components/countdown/component.js +0 -117
  175. package/dist/components/countdown/index.css +0 -85
  176. package/dist/components/countdown/index.js +0 -16
  177. package/dist/components/overlimit/component.d.ts +0 -12
  178. package/dist/components/overlimit/component.js +0 -73
  179. package/dist/components/overlimit/index.js +0 -17
  180. package/dist/components/sign-confirmation/component.d.ts +0 -37
  181. package/dist/components/sign-confirmation/component.js +0 -62
  182. package/dist/components/sign-confirmation/index.css +0 -108
  183. package/dist/components/sign-confirmation/index.js +0 -20
  184. package/dist/cssm/components/code-input/component.d.ts +0 -16
  185. package/dist/cssm/components/code-input/component.js +0 -159
  186. package/dist/cssm/components/code-input/index.js +0 -14
  187. package/dist/cssm/components/code-input/index.module.css +0 -98
  188. package/dist/cssm/components/code-input/utils.d.ts +0 -10
  189. package/dist/cssm/components/code-input/utils.js +0 -21
  190. package/dist/cssm/components/countdown/component.d.ts +0 -23
  191. package/dist/cssm/components/countdown/component.js +0 -117
  192. package/dist/cssm/components/countdown/index.js +0 -18
  193. package/dist/cssm/components/countdown/index.module.css +0 -84
  194. package/dist/cssm/components/overlimit/component.d.ts +0 -12
  195. package/dist/cssm/components/overlimit/component.js +0 -74
  196. package/dist/cssm/components/overlimit/index.js +0 -20
  197. package/dist/cssm/components/sign-confirmation/component.d.ts +0 -37
  198. package/dist/cssm/components/sign-confirmation/component.js +0 -64
  199. package/dist/cssm/components/sign-confirmation/index.js +0 -24
  200. package/dist/esm/components/code-input/component.d.ts +0 -16
  201. package/dist/esm/components/code-input/component.js +0 -151
  202. package/dist/esm/components/code-input/index.css +0 -99
  203. package/dist/esm/components/code-input/index.js +0 -5
  204. package/dist/esm/components/code-input/utils.d.ts +0 -10
  205. package/dist/esm/components/code-input/utils.js +0 -17
  206. package/dist/esm/components/countdown/component.d.ts +0 -23
  207. package/dist/esm/components/countdown/component.js +0 -107
  208. package/dist/esm/components/countdown/index.css +0 -85
  209. package/dist/esm/components/countdown/index.js +0 -7
  210. package/dist/esm/components/overlimit/component.d.ts +0 -12
  211. package/dist/esm/components/overlimit/component.js +0 -65
  212. package/dist/esm/components/overlimit/index.js +0 -9
  213. package/dist/esm/components/sign-confirmation/component.d.ts +0 -37
  214. package/dist/esm/components/sign-confirmation/component.js +0 -53
  215. package/dist/esm/components/sign-confirmation/index.css +0 -108
  216. package/dist/esm/components/sign-confirmation/index.js +0 -12
  217. package/dist/modern/components/code-input/component.d.ts +0 -16
  218. package/dist/modern/components/code-input/component.js +0 -123
  219. package/dist/modern/components/code-input/index.css +0 -99
  220. package/dist/modern/components/code-input/index.js +0 -5
  221. package/dist/modern/components/code-input/utils.d.ts +0 -10
  222. package/dist/modern/components/code-input/utils.js +0 -16
  223. package/dist/modern/components/countdown/component.d.ts +0 -23
  224. package/dist/modern/components/countdown/component.js +0 -102
  225. package/dist/modern/components/countdown/index.css +0 -85
  226. package/dist/modern/components/countdown/index.js +0 -7
  227. package/dist/modern/components/overlimit/component.d.ts +0 -12
  228. package/dist/modern/components/overlimit/component.js +0 -64
  229. package/dist/modern/components/overlimit/index.js +0 -9
  230. package/dist/modern/components/sign-confirmation/component.d.ts +0 -37
  231. package/dist/modern/components/sign-confirmation/component.js +0 -51
  232. package/dist/modern/components/sign-confirmation/index.css +0 -108
  233. package/dist/modern/components/sign-confirmation/index.js +0 -12
@@ -1,6 +1,3 @@
1
- :root {
2
- --color-static-status-red: #d91d0b;
3
- }
4
1
  :root {
5
2
  --color-light-text-primary: #0b1f35;
6
3
  --color-light-text-secondary: #546272;
@@ -14,11 +11,9 @@
14
11
  /* Hard up */
15
12
  }
16
13
  :root {
17
- --gap-2xs: 4px;
18
14
  --gap-xs: 8px;
19
15
  --gap-xl: 24px;
20
16
  --gap-2xl: 32px;
21
- --gap-3xl: 40px;
22
17
  }
23
18
  :root {
24
19
  --font-family-system: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica,
@@ -44,20 +39,15 @@
44
39
 
45
40
  /* input */
46
41
  }
47
- .component {
48
- display: flex;
49
- flex-direction: column;
50
- align-items: center;
51
- }
52
- .title {
42
+ .header {
43
+ margin: 0;
44
+ margin-bottom: var(--gap-xl);
53
45
  font-size: var(--confirmation-title-font-size);
54
46
  line-height: var(--confirmation-title-line-height);
55
47
  font-weight: var(--confirmation-title-font-weight);
56
48
  font-family: var(--confirmation-title-font-family);
57
49
  color: var(--confirmation-title-color);
58
50
  font-feature-settings: var(--confirmation-title-font-feature-settings);
59
-
60
- margin-bottom: var(--gap-3xl);
61
51
  }
62
52
  .description {
63
53
  font-size: var(--confirmation-text-font-size);
@@ -65,25 +55,13 @@
65
55
  font-weight: var(--confirmation-text-font-weight);
66
56
  font-family: var(--confirmation-text-font-family);
67
57
  color: var(--confirmation-text-color);
58
+
59
+ margin-bottom: var(--gap-2xl);
68
60
  }
69
- .countdown {
61
+ .countdownWrap {
70
62
  display: flex;
71
63
  align-items: center;
72
- justify-content: center;
73
- margin-top: var(--gap-2xs);
74
64
  }
75
65
  .loader {
76
66
  margin-right: var(--gap-xs);
77
67
  }
78
- .timePassed {
79
- display: flex;
80
- min-width: 3em;
81
- }
82
- .getCodeButton {
83
- margin-top: var(--gap-2xl);
84
- }
85
- .alertIcon {
86
- text-align: center;
87
- margin-bottom: var(--gap-xl);
88
- color: var(--color-static-status-red);
89
- }
@@ -0,0 +1,4 @@
1
+ /// <reference types="react" />
2
+ import { TConfirmationContext } from "./types";
3
+ declare const ConfirmationContext: import("react").Context<TConfirmationContext>;
4
+ export { ConfirmationContext };
@@ -0,0 +1,27 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+ var utils = require('./utils.js');
7
+
8
+ var mockFn = function () { return undefined; };
9
+ var ConfirmationContext = React.createContext({
10
+ alignContent: 'left',
11
+ texts: {},
12
+ state: 'INITIAL',
13
+ screen: 'INITIAL',
14
+ requiredCharAmount: 5,
15
+ countdownDuration: utils.ONE_MINUTE,
16
+ timeLeft: utils.ONE_MINUTE,
17
+ tempBlockDuration: utils.ONE_DAY,
18
+ phone: '',
19
+ onTempBlockFinished: mockFn,
20
+ onInputFinished: mockFn,
21
+ onChangeState: mockFn,
22
+ onSmsRetryClick: mockFn,
23
+ onChangeScreen: mockFn,
24
+ onFatalErrorOkButtonClick: mockFn,
25
+ });
26
+
27
+ exports.ConfirmationContext = ConfirmationContext;
@@ -1,2 +1,5 @@
1
1
  export * from "./component";
2
2
  export * from "./components/index";
3
+ export * from "./context";
4
+ export * from "./types";
5
+ export * from "./utils";
@@ -2,33 +2,42 @@
2
2
 
3
3
  Object.defineProperty(exports, '__esModule', { value: true });
4
4
 
5
+ var component = require('./component.js');
5
6
  require('react');
6
7
  require('classnames');
7
- require('@alfalab/core-components-button/dist/cssm');
8
- require('@alfalab/core-components-link/dist/cssm');
9
- require('@alfalab/utils');
10
8
  require('@alfalab/hooks');
9
+ var utils = require('./utils.js');
10
+ var context = require('./context.js');
11
+ var types = require('./types.js');
12
+ require('@alfalab/core-components-code-input/dist/cssm');
13
+ require('@alfalab/core-components-link/dist/cssm');
14
+ require('./components/screens/initial/index.module.css');
15
+ require('@alfalab/core-components-loader/dist/cssm');
16
+ require('@alfalab/core-components-button/dist/cssm');
17
+ require('./components/screens/initial/countdown-section.js');
18
+ var components_screens_initial_component = require('./components/screens/initial/component.js');
19
+ require('./components/screens/hint/index.module.css');
20
+ var components_screens_hint_component = require('./components/screens/hint/component.js');
21
+ require('./components/screens/fatal-error/index.module.css');
22
+ var components_screens_fatalError_component = require('./components/screens/fatal-error/component.js');
11
23
  require('./components/countdown-loader/index.module.css');
12
24
  var components_countdownLoader_component = require('./components/countdown-loader/component.js');
13
- require('./components/countdown/index.module.css');
14
- var components_countdown_component = require('./components/countdown/component.js');
15
- require('@alfalab/core-components-loader/dist/cssm');
16
- require('./components/code-input/component.js');
17
- require('./components/code-input/utils.js');
18
- require('./components/code-input/index.module.css');
19
- require('./components/sign-confirmation/index.module.css');
20
- var components_signConfirmation_component = require('./components/sign-confirmation/component.js');
21
- require('@alfalab/icons-glyph');
22
- require('./components/overlimit/index.module.css');
23
- var components_overlimit_component = require('./components/overlimit/component.js');
25
+ require('./components/screens/temp-block/index.module.css');
26
+ var components_screens_tempBlock_component = require('./components/screens/temp-block/component.js');
24
27
  require('./index.module.css');
25
- var component = require('./component.js');
26
28
 
27
29
 
28
30
 
29
- exports.CountdownLoader = components_countdownLoader_component.CountdownLoader;
30
- exports.Countdown = components_countdown_component.Countdown;
31
- exports.formatMsAsMinutes = components_countdown_component.formatMsAsMinutes;
32
- exports.SignConfirmation = components_signConfirmation_component.SignConfirmation;
33
- exports.Overlimit = components_overlimit_component.Overlimit;
34
31
  exports.Confirmation = component.Confirmation;
32
+ exports.ONE_DAY = utils.ONE_DAY;
33
+ exports.ONE_MINUTE = utils.ONE_MINUTE;
34
+ exports.formatMsAsMinutes = utils.formatMsAsMinutes;
35
+ exports.useConfirmation = utils.useConfirmation;
36
+ exports.useCountdown = utils.useCountdown;
37
+ exports.ConfirmationContext = context.ConfirmationContext;
38
+ exports.defaultTexts = types.defaultTexts;
39
+ exports.Initial = components_screens_initial_component.Initial;
40
+ exports.Hint = components_screens_hint_component.Hint;
41
+ exports.FatalError = components_screens_fatalError_component.FatalError;
42
+ exports.CountdownLoader = components_countdownLoader_component.CountdownLoader;
43
+ exports.TempBlock = components_screens_tempBlock_component.TempBlock;
@@ -1,5 +1,4 @@
1
1
  :root {
2
- --color-light-text-primary: #0b1f35;
3
2
  --color-light-text-secondary: #546272;
4
3
  }
5
4
  :root {
@@ -10,24 +9,12 @@
10
9
 
11
10
  /* Hard up */
12
11
  }
13
- :root {
14
- --gap-xs: 8px;
15
- --gap-xl: 24px;
16
- --gap-2xl: 32px;
17
- --gap-4xl: 48px;
18
- }
19
12
  :root {
20
13
  --font-family-system: system-ui, -apple-system, 'Segoe UI', Roboto, 'Helvetica Neue', Helvetica,
21
14
  sans-serif;
22
15
  }
23
16
  :root {
24
17
  /* title */
25
- --confirmation-title-font-size: 22px;
26
- --confirmation-title-line-height: 26px;
27
- --confirmation-title-font-weight: 700;
28
- --confirmation-title-font-family: var(--font-family-system);
29
- --confirmation-title-color: var(--color-light-text-primary);
30
- --confirmation-title-font-feature-settings: normal;
31
18
 
32
19
  /* text */
33
20
  --confirmation-text-font-size: 16px;
@@ -41,53 +28,6 @@
41
28
  /* input */
42
29
  }
43
30
  .component {
44
- display: flex;
45
- flex-direction: column;
46
- width: 100%;
47
- font-family: var(--confirmation-font-family);
48
- }
49
- .error {
50
- display: flex;
51
- flex-direction: column;
52
- align-items: flex-start;
53
- }
54
- .errorHeader {
55
- font-size: var(--confirmation-title-font-size);
56
- line-height: var(--confirmation-title-line-height);
57
- font-weight: var(--confirmation-title-font-weight);
58
- font-family: var(--confirmation-title-font-family);
59
- color: var(--confirmation-title-color);
60
- font-feature-settings: var(--confirmation-title-font-feature-settings);
61
-
62
- margin-bottom: var(--gap-2xl);
63
- color: var(--confirmation-title-color);
64
- }
65
- .errorText {
66
- font-size: var(--confirmation-text-font-size);
67
- line-height: var(--confirmation-text-line-height);
68
- font-weight: var(--confirmation-text-font-weight);
69
- font-family: var(--confirmation-text-font-family);
70
- color: var(--confirmation-text-color);
71
-
72
- margin-bottom: var(--gap-2xl);
73
- color: var(--confirmation-text-color);
74
- }
75
- .phoneHintWrap {
76
- display: flex;
77
- flex-direction: column;
78
- align-items: flex-start;
79
- }
80
- .phoneHintText {
81
- font-size: var(--confirmation-text-font-size);
82
- line-height: var(--confirmation-text-line-height);
83
- font-weight: var(--confirmation-text-font-weight);
84
- font-family: var(--confirmation-text-font-family);
85
- color: var(--confirmation-text-color);
86
-
87
- margin-bottom: var(--gap-xl);
88
- color: var(--confirmation-text-color);
89
- }
90
- .phonesWrap {
91
31
  font-size: var(--confirmation-text-font-size);
92
32
  line-height: var(--confirmation-text-line-height);
93
33
  font-weight: var(--confirmation-text-font-weight);
@@ -96,23 +36,11 @@
96
36
 
97
37
  display: flex;
98
38
  flex-direction: column;
99
- margin-bottom: var(--gap-4xl);
100
- }
101
- .phoneWrap {
102
- margin-bottom: var(--gap-xs)
103
- }
104
- .phoneWrap:last-child {
105
- margin-bottom: 0;
106
- }
107
- .phoneDescription {
108
- color: var(--confirmation-text-color);
39
+ width: 100%;
40
+ max-width: 400px;
41
+ margin: 0 auto;
109
42
  }
110
- .component.center {
43
+ .center {
44
+ align-items: center;
111
45
  text-align: center;
112
46
  }
113
- .center .phoneHintWrap {
114
- align-items: center;
115
- }
116
- .center .error {
117
- align-items: center;
118
- }
@@ -0,0 +1,130 @@
1
+ import { ComponentType, ReactNode } from 'react';
2
+ type ConfirmationProps = {
3
+ /**
4
+ * Экран компонента
5
+ */
6
+ screen: ConfirmationScreen | string;
7
+ /**
8
+ * Состояние компонента
9
+ */
10
+ state: ConfirmationState | string;
11
+ /**
12
+ * Позиционирование контента
13
+ */
14
+ alignContent?: 'left' | 'center';
15
+ /**
16
+ * Объект с текстами
17
+ */
18
+ texts?: ConfirmationTexts;
19
+ /**
20
+ * Количество символов, которое можно ввести в поле ввода подписания до того, как произойдет автоотправка
21
+ */
22
+ requiredCharAmount?: number;
23
+ /**
24
+ * Длительность обратного отсчета на кнопке повторного запроса сообщения, в милисекундах
25
+ */
26
+ countdownDuration?: number;
27
+ /**
28
+ * Продолжительность блокировки формы (ms)
29
+ */
30
+ tempBlockDuration?: number;
31
+ /**
32
+ * Номер телефона, на который отправлен код
33
+ */
34
+ phone?: string;
35
+ /**
36
+ * Не осталось попыток ввода кода
37
+ */
38
+ blockSmsRetry?: boolean;
39
+ /**
40
+ * Идентификатор для систем автоматизированного тестирования
41
+ */
42
+ dataTestId?: string;
43
+ /**
44
+ * Сss класс для стилизации общей обёртки
45
+ */
46
+ className?: string;
47
+ /**
48
+ * Функция обновления состояния компонента
49
+ */
50
+ onChangeState: (state: ConfirmationState | string) => void;
51
+ /**
52
+ * Функция обновления состояния компонента
53
+ */
54
+ onChangeScreen: (state: ConfirmationScreen | string) => void;
55
+ /**
56
+ * Обработчик события завершения ввода кода подписания
57
+ */
58
+ onInputFinished: (code: string) => void;
59
+ /**
60
+ * Обработчик события нажатия на кнопку "Запросить код"
61
+ */
62
+ onSmsRetryClick: () => void;
63
+ /**
64
+ * Клик по кнопке "Понятно" на экране фатальной ошибки
65
+ */
66
+ onFatalErrorOkButtonClick?: () => void;
67
+ /**
68
+ * Временная блокировка формы закончилась
69
+ */
70
+ onTempBlockFinished?: () => void;
71
+ /**
72
+ * Возввращает объект, где ключ - название экрана (screen), значение - компонент для экрана
73
+ */
74
+ getScreensMap?: (defaulScreensMap: ScreensMap) => ScreensMap;
75
+ };
76
+ type TConfirmationContext = Required<Pick<ConfirmationProps, 'alignContent' | 'texts' | 'state' | 'screen' | 'requiredCharAmount' | 'onInputFinished' | 'countdownDuration' | 'onChangeState' | 'onSmsRetryClick' | 'onChangeScreen' | 'onFatalErrorOkButtonClick' | 'tempBlockDuration'>> & Pick<ConfirmationProps, 'phone' | 'blockSmsRetry' | 'onTempBlockFinished'> & {
77
+ timeLeft: number;
78
+ };
79
+ type ConfirmationTexts = {
80
+ /**
81
+ * Экран INITIAL
82
+ */
83
+ title?: ReactNode;
84
+ codeError?: string;
85
+ codeChecking?: string;
86
+ codeSending?: string;
87
+ codeSended?: string;
88
+ buttonRetry?: string;
89
+ linkToHint?: string;
90
+ noAttemptsLeft?: string;
91
+ countdown?: string;
92
+ /**
93
+ * Экран HINT
94
+ */
95
+ hintButton?: string;
96
+ /**
97
+ * Экран FATAL_ERROR
98
+ */
99
+ fatalErrorTitle?: ReactNode;
100
+ fatalErrorDescription?: ReactNode;
101
+ fatalErrorButton?: string;
102
+ /**
103
+ * Экран TEMP_BLOCK
104
+ */
105
+ tempBlockTitle?: ReactNode;
106
+ tempBlockDescription?: ReactNode;
107
+ };
108
+ type ConfirmationScreen = 'INITIAL' | 'HINT' | 'FATAL_ERROR' | 'TEMP_BLOCK';
109
+ type ConfirmationState = 'INITIAL' | 'CODE_CHECKING' | 'CODE_SENDING' | 'CODE_ERROR';
110
+ type ScreensMap = {
111
+ [key: string]: ComponentType;
112
+ };
113
+ declare const defaultTexts: {
114
+ title: string;
115
+ codeError: string;
116
+ codeChecking: string;
117
+ codeSending: string;
118
+ buttonRetry: string;
119
+ linkToHint: string;
120
+ hintButton: string;
121
+ noAttemptsLeft: string;
122
+ fatalErrorTitle: string;
123
+ fatalErrorDescription: string;
124
+ fatalErrorButton: string;
125
+ tempBlockTitle: string;
126
+ tempBlockDescription: string;
127
+ codeSended: string;
128
+ countdown: string;
129
+ };
130
+ export { ConfirmationProps, TConfirmationContext, ConfirmationTexts, ConfirmationScreen, ConfirmationState, ScreensMap, defaultTexts };
@@ -0,0 +1,23 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var defaultTexts = {
6
+ title: 'Введите код из\xa0сообщения',
7
+ codeError: 'Код введён неверно',
8
+ codeChecking: '',
9
+ codeSending: '',
10
+ buttonRetry: 'Запросить код повторно',
11
+ linkToHint: 'Не\xa0приходит сообщение?',
12
+ hintButton: 'Вернуться к\xa0вводу кода',
13
+ noAttemptsLeft: 'Не\xa0осталось попыток запроса кода',
14
+ fatalErrorTitle: 'Ввести код больше нельзя',
15
+ fatalErrorDescription: 'Вы\xa0ввели код неверно более 5\xa0раз. В\xa0целях безопасности мы\xa0ограничили дальнейший ввод.',
16
+ fatalErrorButton: 'Понятно',
17
+ tempBlockTitle: 'Превышено количество попыток запроса кода',
18
+ tempBlockDescription: 'Повторное подтверждение кодом будет возможно через 24\xa0часа',
19
+ codeSended: 'Код выслан',
20
+ countdown: 'Запросить повторно можно через',
21
+ };
22
+
23
+ exports.defaultTexts = defaultTexts;
@@ -0,0 +1,30 @@
1
+ /// <reference types="react" />
2
+ import { ConfirmationProps } from "./types";
3
+ /**
4
+ * Форматирование миллисекунд в hh:mm:ss.
5
+ *
6
+ * @param {Number} ms миллисекунды
7
+ * @returns {String} время в формате mm:ss
8
+ */
9
+ declare function formatMsAsMinutes(ms: number): string;
10
+ type UseCountdown = (countdownDuration: number, tick?: number) => [number, () => void, () => void];
11
+ /**
12
+ * Возвращает время, которое осталось до истечения таймера в ms
13
+ */
14
+ declare const useCountdown: UseCountdown;
15
+ declare const ONE_DAY: number;
16
+ declare const ONE_MINUTE: number;
17
+ type UseConfirmationParams = {
18
+ state?: ConfirmationProps['state'];
19
+ screen?: ConfirmationProps['screen'];
20
+ blockSmsRetry?: ConfirmationProps['blockSmsRetry'];
21
+ };
22
+ declare const useConfirmation: ({ state, screen, blockSmsRetry }?: UseConfirmationParams) => {
23
+ confirmationState: string;
24
+ confirmationScreen: string;
25
+ confirmationBlockSmsRetry: boolean;
26
+ setConfirmationState: import("react").Dispatch<import("react").SetStateAction<string>>;
27
+ setConfirmationScreen: import("react").Dispatch<import("react").SetStateAction<string>>;
28
+ setConfirmationBlockSmsRetry: import("react").Dispatch<import("react").SetStateAction<boolean>>;
29
+ };
30
+ export { formatMsAsMinutes, useCountdown, ONE_DAY, ONE_MINUTE, useConfirmation };
@@ -0,0 +1,84 @@
1
+ 'use strict';
2
+
3
+ Object.defineProperty(exports, '__esModule', { value: true });
4
+
5
+ var React = require('react');
6
+
7
+ /**
8
+ * Форматирование миллисекунд в hh:mm:ss.
9
+ *
10
+ * @param {Number} ms миллисекунды
11
+ * @returns {String} время в формате mm:ss
12
+ */
13
+ function formatMsAsMinutes(ms) {
14
+ var totalSeconds = Math.ceil(ms / 1000);
15
+ var totalMinutes = Math.floor(totalSeconds / 60);
16
+ var totalHours = Math.floor(totalMinutes / 60);
17
+ var seconds = totalSeconds % 60;
18
+ var paddedSeconds = ("00" + seconds).slice(-2);
19
+ if (totalHours > 0) {
20
+ var minutes = totalMinutes % 60;
21
+ var paddedMinutes_1 = ("00" + minutes).slice(-2);
22
+ var paddedHours = ("00" + totalHours).slice(-2);
23
+ return paddedHours + ":" + paddedMinutes_1 + ":" + paddedSeconds;
24
+ }
25
+ var paddedMinutes = ("00" + totalMinutes).slice(-2);
26
+ return paddedMinutes + ":" + paddedSeconds;
27
+ }
28
+ /**
29
+ * Возвращает время, которое осталось до истечения таймера в ms
30
+ */
31
+ var useCountdown = function (countdownDuration, tick) {
32
+ if (tick === void 0) { tick = 1000; }
33
+ var timerId = React.useRef(0);
34
+ var start = React.useRef(0);
35
+ var _a = React.useState(0), timePassed = _a[0], setTimePassed = _a[1];
36
+ var stopTimer = React.useCallback(function () {
37
+ window.clearInterval(timerId.current);
38
+ }, []);
39
+ var updateProgress = React.useCallback(function () {
40
+ var passed = Date.now() - start.current;
41
+ if (passed >= countdownDuration) {
42
+ stopTimer();
43
+ setTimePassed(countdownDuration);
44
+ }
45
+ else {
46
+ setTimePassed(passed);
47
+ }
48
+ }, [countdownDuration, stopTimer]);
49
+ var startTimer = React.useCallback(function () {
50
+ stopTimer();
51
+ start.current = Date.now();
52
+ updateProgress();
53
+ timerId.current = window.setInterval(updateProgress, tick);
54
+ }, [stopTimer, updateProgress, tick]);
55
+ var timeLeft = countdownDuration - timePassed;
56
+ React.useEffect(function () {
57
+ return function () {
58
+ stopTimer();
59
+ };
60
+ }, [stopTimer]);
61
+ return [timeLeft, startTimer, stopTimer];
62
+ };
63
+ var ONE_DAY = 24 * 60 * 60 * 1000;
64
+ var ONE_MINUTE = 60 * 1000;
65
+ var useConfirmation = function (_a) {
66
+ var _b = _a === void 0 ? {} : _a, state = _b.state, screen = _b.screen, blockSmsRetry = _b.blockSmsRetry;
67
+ var _c = React.useState(state !== null && state !== void 0 ? state : 'INITIAL'), confirmationState = _c[0], setConfirmationState = _c[1];
68
+ var _d = React.useState(screen !== null && screen !== void 0 ? screen : 'INITIAL'), confirmationScreen = _d[0], setConfirmationScreen = _d[1];
69
+ var _e = React.useState(blockSmsRetry !== null && blockSmsRetry !== void 0 ? blockSmsRetry : false), confirmationBlockSmsRetry = _e[0], setConfirmationBlockSmsRetry = _e[1];
70
+ return {
71
+ confirmationState: confirmationState,
72
+ confirmationScreen: confirmationScreen,
73
+ confirmationBlockSmsRetry: confirmationBlockSmsRetry,
74
+ setConfirmationState: setConfirmationState,
75
+ setConfirmationScreen: setConfirmationScreen,
76
+ setConfirmationBlockSmsRetry: setConfirmationBlockSmsRetry,
77
+ };
78
+ };
79
+
80
+ exports.ONE_DAY = ONE_DAY;
81
+ exports.ONE_MINUTE = ONE_MINUTE;
82
+ exports.formatMsAsMinutes = formatMsAsMinutes;
83
+ exports.useConfirmation = useConfirmation;
84
+ exports.useCountdown = useCountdown;