@alfalab/core-components-confirmation 14.0.1 → 14.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (284) hide show
  1. package/component.responsive.d.ts +2 -2
  2. package/component.responsive.js.map +1 -1
  3. package/components/base-confirmation/component.d.ts +2 -2
  4. package/components/base-confirmation/component.js +4 -3
  5. package/components/base-confirmation/component.js.map +1 -1
  6. package/components/base-confirmation/index.css +3 -3
  7. package/components/base-confirmation/index.module.css.js +1 -1
  8. package/components/base-confirmation/index.module.css.js.map +1 -1
  9. package/components/countdown-loader/component.d.ts +1 -1
  10. package/components/countdown-loader/component.js.map +1 -1
  11. package/components/countdown-loader/index.css +1 -1
  12. package/components/countdown-loader/index.module.css.js +1 -1
  13. package/components/countdown-loader/index.module.css.js.map +1 -1
  14. package/components/header/component.d.ts +6 -1
  15. package/components/header/component.js +2 -2
  16. package/components/header/component.js.map +1 -1
  17. package/components/header/index.css +5 -5
  18. package/components/header/index.module.css.js +1 -1
  19. package/components/screens/fatal-error/component.d.ts +1 -1
  20. package/components/screens/fatal-error/component.js +2 -2
  21. package/components/screens/fatal-error/component.js.map +1 -1
  22. package/components/screens/fatal-error/index.css +8 -10
  23. package/components/screens/fatal-error/index.module.css.js +1 -1
  24. package/components/screens/hint/component.d.ts +1 -1
  25. package/components/screens/hint/component.js +2 -2
  26. package/components/screens/hint/component.js.map +1 -1
  27. package/components/screens/hint/index.css +16 -18
  28. package/components/screens/hint/index.module.css.js +1 -1
  29. package/components/screens/initial/component.d.ts +1 -1
  30. package/components/screens/initial/component.js +2 -2
  31. package/components/screens/initial/component.js.map +1 -1
  32. package/components/screens/initial/countdown-section.d.ts +1 -1
  33. package/components/screens/initial/countdown-section.js.map +1 -1
  34. package/components/screens/initial/index.css +22 -24
  35. package/components/screens/initial/index.module.css.js +1 -1
  36. package/components/screens/temp-block/component.d.ts +1 -1
  37. package/components/screens/temp-block/component.js +2 -2
  38. package/components/screens/temp-block/component.js.map +1 -1
  39. package/components/screens/temp-block/index.css +10 -12
  40. package/components/screens/temp-block/index.module.css.js +1 -1
  41. package/components/screens/temp-block-over/component.d.ts +1 -1
  42. package/components/screens/temp-block-over/component.js +2 -2
  43. package/components/screens/temp-block-over/component.js.map +1 -1
  44. package/components/screens/temp-block-over/index.css +7 -9
  45. package/components/screens/temp-block-over/index.module.css.js +1 -1
  46. package/context.d.ts +1 -1
  47. package/context.js +1 -0
  48. package/context.js.map +1 -1
  49. package/cssm/component.responsive.d.ts +2 -2
  50. package/cssm/component.responsive.js.map +1 -1
  51. package/cssm/components/base-confirmation/component.d.ts +2 -2
  52. package/cssm/components/base-confirmation/component.js +4 -3
  53. package/cssm/components/base-confirmation/component.js.map +1 -1
  54. package/cssm/components/base-confirmation/index.module.css +1 -1
  55. package/cssm/components/countdown-loader/component.d.ts +1 -1
  56. package/cssm/components/countdown-loader/component.js.map +1 -1
  57. package/cssm/components/header/component.d.ts +6 -1
  58. package/cssm/components/header/component.js +2 -2
  59. package/cssm/components/header/component.js.map +1 -1
  60. package/cssm/components/header/index.module.css +2 -2
  61. package/cssm/components/screens/fatal-error/component.d.ts +1 -1
  62. package/cssm/components/screens/fatal-error/component.js +2 -2
  63. package/cssm/components/screens/fatal-error/component.js.map +1 -1
  64. package/cssm/components/screens/fatal-error/index.module.css +2 -4
  65. package/cssm/components/screens/hint/component.d.ts +1 -1
  66. package/cssm/components/screens/hint/component.js +2 -2
  67. package/cssm/components/screens/hint/component.js.map +1 -1
  68. package/cssm/components/screens/hint/index.module.css +4 -6
  69. package/cssm/components/screens/initial/component.d.ts +1 -1
  70. package/cssm/components/screens/initial/component.js +2 -2
  71. package/cssm/components/screens/initial/component.js.map +1 -1
  72. package/cssm/components/screens/initial/countdown-section.d.ts +1 -1
  73. package/cssm/components/screens/initial/countdown-section.js.map +1 -1
  74. package/cssm/components/screens/initial/index.module.css +3 -5
  75. package/cssm/components/screens/temp-block/component.d.ts +1 -1
  76. package/cssm/components/screens/temp-block/component.js +2 -2
  77. package/cssm/components/screens/temp-block/component.js.map +1 -1
  78. package/cssm/components/screens/temp-block/index.module.css +2 -4
  79. package/cssm/components/screens/temp-block-over/component.d.ts +1 -1
  80. package/cssm/components/screens/temp-block-over/component.js +2 -2
  81. package/cssm/components/screens/temp-block-over/component.js.map +1 -1
  82. package/cssm/components/screens/temp-block-over/index.module.css +2 -4
  83. package/cssm/context.d.ts +1 -1
  84. package/cssm/context.js +1 -0
  85. package/cssm/context.js.map +1 -1
  86. package/cssm/desktop/component.desktop.d.ts +2 -2
  87. package/cssm/desktop/component.desktop.js.map +1 -1
  88. package/cssm/mobile/component.mobile.d.ts +2 -2
  89. package/cssm/mobile/component.mobile.js.map +1 -1
  90. package/cssm/types.d.ts +13 -8
  91. package/cssm/types.js.map +1 -1
  92. package/cssm/utils.d.ts +1 -1
  93. package/cssm/utils.js.map +1 -1
  94. package/desktop/component.desktop.d.ts +2 -2
  95. package/desktop/component.desktop.js.map +1 -1
  96. package/esm/component.responsive.d.ts +2 -2
  97. package/esm/component.responsive.js.map +1 -1
  98. package/esm/components/base-confirmation/component.d.ts +2 -2
  99. package/esm/components/base-confirmation/component.js +4 -3
  100. package/esm/components/base-confirmation/component.js.map +1 -1
  101. package/esm/components/base-confirmation/index.css +3 -3
  102. package/esm/components/base-confirmation/index.module.css.js +1 -1
  103. package/esm/components/base-confirmation/index.module.css.js.map +1 -1
  104. package/esm/components/countdown-loader/component.d.ts +1 -1
  105. package/esm/components/countdown-loader/component.js.map +1 -1
  106. package/esm/components/countdown-loader/index.css +1 -1
  107. package/esm/components/countdown-loader/index.module.css.js +1 -1
  108. package/esm/components/countdown-loader/index.module.css.js.map +1 -1
  109. package/esm/components/header/component.d.ts +6 -1
  110. package/esm/components/header/component.js +2 -2
  111. package/esm/components/header/component.js.map +1 -1
  112. package/esm/components/header/index.css +5 -5
  113. package/esm/components/header/index.module.css.js +1 -1
  114. package/esm/components/screens/fatal-error/component.d.ts +1 -1
  115. package/esm/components/screens/fatal-error/component.js +2 -2
  116. package/esm/components/screens/fatal-error/component.js.map +1 -1
  117. package/esm/components/screens/fatal-error/index.css +8 -10
  118. package/esm/components/screens/fatal-error/index.module.css.js +1 -1
  119. package/esm/components/screens/hint/component.d.ts +1 -1
  120. package/esm/components/screens/hint/component.js +2 -2
  121. package/esm/components/screens/hint/component.js.map +1 -1
  122. package/esm/components/screens/hint/index.css +16 -18
  123. package/esm/components/screens/hint/index.module.css.js +1 -1
  124. package/esm/components/screens/initial/component.d.ts +1 -1
  125. package/esm/components/screens/initial/component.js +2 -2
  126. package/esm/components/screens/initial/component.js.map +1 -1
  127. package/esm/components/screens/initial/countdown-section.d.ts +1 -1
  128. package/esm/components/screens/initial/countdown-section.js.map +1 -1
  129. package/esm/components/screens/initial/index.css +22 -24
  130. package/esm/components/screens/initial/index.module.css.js +1 -1
  131. package/esm/components/screens/temp-block/component.d.ts +1 -1
  132. package/esm/components/screens/temp-block/component.js +2 -2
  133. package/esm/components/screens/temp-block/component.js.map +1 -1
  134. package/esm/components/screens/temp-block/index.css +10 -12
  135. package/esm/components/screens/temp-block/index.module.css.js +1 -1
  136. package/esm/components/screens/temp-block-over/component.d.ts +1 -1
  137. package/esm/components/screens/temp-block-over/component.js +2 -2
  138. package/esm/components/screens/temp-block-over/component.js.map +1 -1
  139. package/esm/components/screens/temp-block-over/index.css +7 -9
  140. package/esm/components/screens/temp-block-over/index.module.css.js +1 -1
  141. package/esm/context.d.ts +1 -1
  142. package/esm/context.js +1 -0
  143. package/esm/context.js.map +1 -1
  144. package/esm/desktop/component.desktop.d.ts +2 -2
  145. package/esm/desktop/component.desktop.js.map +1 -1
  146. package/esm/mobile/component.mobile.d.ts +2 -2
  147. package/esm/mobile/component.mobile.js.map +1 -1
  148. package/esm/mobile/mobile.css +1 -1
  149. package/esm/mobile/mobile.module.css.js +1 -1
  150. package/esm/types.d.ts +13 -8
  151. package/esm/types.js.map +1 -1
  152. package/esm/utils.d.ts +1 -1
  153. package/esm/utils.js.map +1 -1
  154. package/mobile/component.mobile.d.ts +2 -2
  155. package/mobile/component.mobile.js.map +1 -1
  156. package/mobile/mobile.css +1 -1
  157. package/mobile/mobile.module.css.js +1 -1
  158. package/modern/component.responsive.d.ts +2 -2
  159. package/modern/component.responsive.js.map +1 -1
  160. package/modern/components/base-confirmation/component.d.ts +2 -2
  161. package/modern/components/base-confirmation/component.js +3 -2
  162. package/modern/components/base-confirmation/component.js.map +1 -1
  163. package/modern/components/base-confirmation/index.css +3 -3
  164. package/modern/components/base-confirmation/index.module.css.js +1 -1
  165. package/modern/components/base-confirmation/index.module.css.js.map +1 -1
  166. package/modern/components/countdown-loader/component.d.ts +1 -1
  167. package/modern/components/countdown-loader/component.js.map +1 -1
  168. package/modern/components/countdown-loader/index.css +1 -1
  169. package/modern/components/countdown-loader/index.module.css.js +1 -1
  170. package/modern/components/countdown-loader/index.module.css.js.map +1 -1
  171. package/modern/components/header/component.d.ts +6 -1
  172. package/modern/components/header/component.js +1 -1
  173. package/modern/components/header/component.js.map +1 -1
  174. package/modern/components/header/index.css +5 -5
  175. package/modern/components/header/index.module.css.js +1 -1
  176. package/modern/components/screens/fatal-error/component.d.ts +1 -1
  177. package/modern/components/screens/fatal-error/component.js +2 -2
  178. package/modern/components/screens/fatal-error/component.js.map +1 -1
  179. package/modern/components/screens/fatal-error/index.css +8 -10
  180. package/modern/components/screens/fatal-error/index.module.css.js +1 -1
  181. package/modern/components/screens/hint/component.d.ts +1 -1
  182. package/modern/components/screens/hint/component.js +2 -2
  183. package/modern/components/screens/hint/component.js.map +1 -1
  184. package/modern/components/screens/hint/index.css +16 -18
  185. package/modern/components/screens/hint/index.module.css.js +1 -1
  186. package/modern/components/screens/initial/component.d.ts +1 -1
  187. package/modern/components/screens/initial/component.js +2 -2
  188. package/modern/components/screens/initial/component.js.map +1 -1
  189. package/modern/components/screens/initial/countdown-section.d.ts +1 -1
  190. package/modern/components/screens/initial/countdown-section.js.map +1 -1
  191. package/modern/components/screens/initial/index.css +22 -24
  192. package/modern/components/screens/initial/index.module.css.js +1 -1
  193. package/modern/components/screens/temp-block/component.d.ts +1 -1
  194. package/modern/components/screens/temp-block/component.js +2 -2
  195. package/modern/components/screens/temp-block/component.js.map +1 -1
  196. package/modern/components/screens/temp-block/index.css +10 -12
  197. package/modern/components/screens/temp-block/index.module.css.js +1 -1
  198. package/modern/components/screens/temp-block-over/component.d.ts +1 -1
  199. package/modern/components/screens/temp-block-over/component.js +2 -2
  200. package/modern/components/screens/temp-block-over/component.js.map +1 -1
  201. package/modern/components/screens/temp-block-over/index.css +7 -9
  202. package/modern/components/screens/temp-block-over/index.module.css.js +1 -1
  203. package/modern/context.d.ts +1 -1
  204. package/modern/context.js +1 -0
  205. package/modern/context.js.map +1 -1
  206. package/modern/desktop/component.desktop.d.ts +2 -2
  207. package/modern/desktop/component.desktop.js.map +1 -1
  208. package/modern/mobile/component.mobile.d.ts +2 -2
  209. package/modern/mobile/component.mobile.js.map +1 -1
  210. package/modern/mobile/mobile.css +1 -1
  211. package/modern/mobile/mobile.module.css.js +1 -1
  212. package/modern/types.d.ts +13 -8
  213. package/modern/types.js.map +1 -1
  214. package/modern/utils.d.ts +1 -1
  215. package/modern/utils.js.map +1 -1
  216. package/moderncssm/component.responsive.d.ts +2 -2
  217. package/moderncssm/component.responsive.js.map +1 -1
  218. package/moderncssm/components/base-confirmation/component.d.ts +2 -2
  219. package/moderncssm/components/base-confirmation/component.js +3 -2
  220. package/moderncssm/components/base-confirmation/component.js.map +1 -1
  221. package/moderncssm/components/base-confirmation/index.module.css +3 -2
  222. package/moderncssm/components/countdown-loader/component.d.ts +1 -1
  223. package/moderncssm/components/countdown-loader/component.js.map +1 -1
  224. package/moderncssm/components/countdown-loader/index.module.css +2 -0
  225. package/moderncssm/components/header/component.d.ts +6 -1
  226. package/moderncssm/components/header/component.js +1 -1
  227. package/moderncssm/components/header/component.js.map +1 -1
  228. package/moderncssm/components/header/index.module.css +2 -0
  229. package/moderncssm/components/screens/fatal-error/component.d.ts +1 -1
  230. package/moderncssm/components/screens/fatal-error/component.js +2 -2
  231. package/moderncssm/components/screens/fatal-error/component.js.map +1 -1
  232. package/moderncssm/components/screens/fatal-error/index.module.css +2 -2
  233. package/moderncssm/components/screens/hint/component.d.ts +1 -1
  234. package/moderncssm/components/screens/hint/component.js +2 -2
  235. package/moderncssm/components/screens/hint/component.js.map +1 -1
  236. package/moderncssm/components/screens/hint/index.module.css +4 -4
  237. package/moderncssm/components/screens/initial/component.d.ts +1 -1
  238. package/moderncssm/components/screens/initial/component.js +2 -2
  239. package/moderncssm/components/screens/initial/component.js.map +1 -1
  240. package/moderncssm/components/screens/initial/countdown-section.d.ts +1 -1
  241. package/moderncssm/components/screens/initial/countdown-section.js.map +1 -1
  242. package/moderncssm/components/screens/initial/index.module.css +3 -3
  243. package/moderncssm/components/screens/temp-block/component.d.ts +1 -1
  244. package/moderncssm/components/screens/temp-block/component.js +2 -2
  245. package/moderncssm/components/screens/temp-block/component.js.map +1 -1
  246. package/moderncssm/components/screens/temp-block/index.module.css +2 -2
  247. package/moderncssm/components/screens/temp-block-over/component.d.ts +1 -1
  248. package/moderncssm/components/screens/temp-block-over/component.js +2 -2
  249. package/moderncssm/components/screens/temp-block-over/component.js.map +1 -1
  250. package/moderncssm/components/screens/temp-block-over/index.module.css +2 -2
  251. package/moderncssm/context.d.ts +1 -1
  252. package/moderncssm/context.js +1 -0
  253. package/moderncssm/context.js.map +1 -1
  254. package/moderncssm/desktop/component.desktop.d.ts +2 -2
  255. package/moderncssm/desktop/component.desktop.js.map +1 -1
  256. package/moderncssm/mobile/component.mobile.d.ts +2 -2
  257. package/moderncssm/mobile/component.mobile.js.map +1 -1
  258. package/moderncssm/types.d.ts +13 -8
  259. package/moderncssm/types.js.map +1 -1
  260. package/moderncssm/utils.d.ts +1 -1
  261. package/moderncssm/utils.js.map +1 -1
  262. package/package.json +3 -3
  263. package/src/component.responsive.tsx +2 -2
  264. package/src/components/base-confirmation/component.tsx +5 -6
  265. package/src/components/base-confirmation/index.module.css +1 -1
  266. package/src/components/countdown-loader/component.tsx +1 -1
  267. package/src/components/countdown-loader/index.module.css +1 -1
  268. package/src/components/header/component.tsx +9 -3
  269. package/src/components/screens/fatal-error/component.tsx +5 -3
  270. package/src/components/screens/hint/component.tsx +5 -3
  271. package/src/components/screens/initial/component.tsx +9 -3
  272. package/src/components/screens/initial/countdown-section.tsx +1 -1
  273. package/src/components/screens/temp-block/component.tsx +12 -4
  274. package/src/components/screens/temp-block-over/component.tsx +5 -3
  275. package/src/context.ts +2 -1
  276. package/src/desktop/component.desktop.tsx +2 -2
  277. package/src/mobile/component.mobile.tsx +2 -2
  278. package/src/types.ts +14 -7
  279. package/src/utils.ts +1 -1
  280. package/src/vars.css +1 -1
  281. package/types.d.ts +13 -8
  282. package/types.js.map +1 -1
  283. package/utils.d.ts +1 -1
  284. package/utils.js.map +1 -1
@@ -1,11 +1,11 @@
1
+
2
+
1
3
  :root {
2
4
  --confirmation-text-font-size: 16px;
3
5
  --confirmation-text-line-height: 24px;
4
6
  --confirmation-text-font-weight: 400;
5
7
  --confirmation-text-font-family: var(--font-family-system);
6
8
  --confirmation-text-color: var(--color-light-text-primary)
7
-
8
- /* header */
9
9
  }
10
10
 
11
11
  .component {
@@ -45,7 +45,7 @@
45
45
 
46
46
  .center {
47
47
  align-items: center;
48
- text-align: center
48
+ text-align: center;
49
49
  }
50
50
 
51
51
  .center .loaderWrap {
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
1
+ import { type FC } from 'react';
2
2
  export declare type TempBlockProps = {
3
3
  /**
4
4
  * Отображать в мобильной версии экран компонента
@@ -8,7 +8,7 @@ import { Header } from '../../header/component.js';
8
8
  import styles from './index.module.css';
9
9
 
10
10
  const TempBlock = ({ mobile }) => {
11
- const { alignContent, texts, tempBlockDuration, onChangeScreen, onTempBlockFinished } = useContext(ConfirmationContext);
11
+ const { alignContent, titleTag, texts, tempBlockDuration, onChangeScreen, onTempBlockFinished, } = useContext(ConfirmationContext);
12
12
  const [timeLeft, startTimer] = useCountdown(tempBlockDuration);
13
13
  useEffect(() => {
14
14
  startTimer();
@@ -19,7 +19,7 @@ const TempBlock = ({ mobile }) => {
19
19
  }
20
20
  }, [timeLeft, onChangeScreen, onTempBlockFinished]);
21
21
  return (React.createElement("div", { className: cn(styles.component, styles[alignContent]) },
22
- React.createElement(Header, { mobile: mobile }, texts.tempBlockTitle),
22
+ React.createElement(Header, { mobile: mobile, titleTag: titleTag }, texts.tempBlockTitle),
23
23
  React.createElement(Text, { view: 'primary-medium', color: 'primary', className: cn(styles.description, {
24
24
  [styles.typographyTheme]: !mobile,
25
25
  [styles.typographyThemeMobile]: mobile,
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../../src/components/screens/temp-block/component.tsx"],"sourcesContent":["import React, { FC, useContext, useEffect } from 'react';\nimport cn from 'classnames';\n\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { ConfirmationContext } from '../../../context';\nimport { formatMsAsMinutes, useCountdown } from '../../../utils';\nimport { CountdownLoader } from '../../countdown-loader';\nimport { Header } from '../../header';\n\nimport styles from './index.module.css';\n\nexport type TempBlockProps = {\n /**\n * Отображать в мобильной версии экран компонента\n */\n mobile?: boolean;\n};\n\nexport const TempBlock: FC<TempBlockProps> = ({ mobile }) => {\n const { alignContent, texts, tempBlockDuration, onChangeScreen, onTempBlockFinished } =\n useContext(ConfirmationContext);\n\n const [timeLeft, startTimer] = useCountdown(tempBlockDuration);\n\n useEffect(() => {\n startTimer();\n }, [startTimer]);\n\n useEffect(() => {\n if (timeLeft === 0 && onTempBlockFinished) {\n onTempBlockFinished();\n }\n }, [timeLeft, onChangeScreen, onTempBlockFinished]);\n\n return (\n <div className={cn(styles.component, styles[alignContent])}>\n <Header mobile={mobile}>{texts.tempBlockTitle}</Header>\n\n <Text\n view='primary-medium'\n color='primary'\n className={cn(styles.description, {\n [styles.typographyTheme]: !mobile,\n [styles.typographyThemeMobile]: mobile,\n })}\n >\n {texts.tempBlockDescription}\n </Text>\n\n <div className={cn(styles.countdownWrap, { [styles.typographyTheme]: !mobile })}>\n <CountdownLoader\n progress={1 - timeLeft / tempBlockDuration}\n className={styles.loader}\n />\n <time className={styles.timeCounter}>{formatMsAsMinutes(timeLeft)}</time>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;MAmBa,SAAS,GAAuB,CAAC,EAAE,MAAM,EAAE,KAAI;AACxD,IAAA,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,iBAAiB,EAAE,cAAc,EAAE,mBAAmB,EAAE,GACjF,UAAU,CAAC,mBAAmB,CAAC;IAEnC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAE9D,SAAS,CAAC,MAAK;AACX,QAAA,UAAU,EAAE;AAChB,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,QAAQ,KAAK,CAAC,IAAI,mBAAmB,EAAE;AACvC,YAAA,mBAAmB,EAAE;AACxB;KACJ,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAEnD,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAA;QACtD,KAAC,CAAA,aAAA,CAAA,MAAM,IAAC,MAAM,EAAE,MAAM,EAAG,EAAA,KAAK,CAAC,cAAc,CAAU;AAEvD,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EACD,EAAA,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9B,gBAAA,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM;AACjC,gBAAA,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM;AACzC,aAAA,CAAC,EAED,EAAA,KAAK,CAAC,oBAAoB,CACxB;AAEP,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,EAAA;AAC3E,YAAA,KAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EACZ,QAAQ,EAAE,CAAC,GAAG,QAAQ,GAAG,iBAAiB,EAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAC1B,CAAA;AACF,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,WAAW,EAAG,EAAA,iBAAiB,CAAC,QAAQ,CAAC,CAAQ,CACvE,CACJ;AAEd;;;;"}
1
+ {"version":3,"file":"component.js","sources":["../../../../src/components/screens/temp-block/component.tsx"],"sourcesContent":["import React, { type FC, useContext, useEffect } from 'react';\nimport cn from 'classnames';\n\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { ConfirmationContext } from '../../../context';\nimport { formatMsAsMinutes, useCountdown } from '../../../utils';\nimport { CountdownLoader } from '../../countdown-loader';\nimport { Header } from '../../header';\n\nimport styles from './index.module.css';\n\nexport type TempBlockProps = {\n /**\n * Отображать в мобильной версии экран компонента\n */\n mobile?: boolean;\n};\n\nexport const TempBlock: FC<TempBlockProps> = ({ mobile }) => {\n const {\n alignContent,\n titleTag,\n texts,\n tempBlockDuration,\n onChangeScreen,\n onTempBlockFinished,\n } = useContext(ConfirmationContext);\n\n const [timeLeft, startTimer] = useCountdown(tempBlockDuration);\n\n useEffect(() => {\n startTimer();\n }, [startTimer]);\n\n useEffect(() => {\n if (timeLeft === 0 && onTempBlockFinished) {\n onTempBlockFinished();\n }\n }, [timeLeft, onChangeScreen, onTempBlockFinished]);\n\n return (\n <div className={cn(styles.component, styles[alignContent])}>\n <Header mobile={mobile} titleTag={titleTag}>\n {texts.tempBlockTitle}\n </Header>\n\n <Text\n view='primary-medium'\n color='primary'\n className={cn(styles.description, {\n [styles.typographyTheme]: !mobile,\n [styles.typographyThemeMobile]: mobile,\n })}\n >\n {texts.tempBlockDescription}\n </Text>\n\n <div className={cn(styles.countdownWrap, { [styles.typographyTheme]: !mobile })}>\n <CountdownLoader\n progress={1 - timeLeft / tempBlockDuration}\n className={styles.loader}\n />\n <time className={styles.timeCounter}>{formatMsAsMinutes(timeLeft)}</time>\n </div>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;MAmBa,SAAS,GAAuB,CAAC,EAAE,MAAM,EAAE,KAAI;AACxD,IAAA,MAAM,EACF,YAAY,EACZ,QAAQ,EACR,KAAK,EACL,iBAAiB,EACjB,cAAc,EACd,mBAAmB,GACtB,GAAG,UAAU,CAAC,mBAAmB,CAAC;IAEnC,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,GAAG,YAAY,CAAC,iBAAiB,CAAC;IAE9D,SAAS,CAAC,MAAK;AACX,QAAA,UAAU,EAAE;AAChB,KAAC,EAAE,CAAC,UAAU,CAAC,CAAC;IAEhB,SAAS,CAAC,MAAK;AACX,QAAA,IAAI,QAAQ,KAAK,CAAC,IAAI,mBAAmB,EAAE;AACvC,YAAA,mBAAmB,EAAE;AACxB;KACJ,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,mBAAmB,CAAC,CAAC;AAEnD,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAA;AACtD,QAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAA,EACrC,KAAK,CAAC,cAAc,CAChB;AAET,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EACD,EAAA,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9B,gBAAA,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM;AACjC,gBAAA,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM;AACzC,aAAA,CAAC,EAED,EAAA,KAAK,CAAC,oBAAoB,CACxB;AAEP,QAAA,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,EAAE,EAAE,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM,EAAE,CAAC,EAAA;AAC3E,YAAA,KAAA,CAAA,aAAA,CAAC,eAAe,EAAA,EACZ,QAAQ,EAAE,CAAC,GAAG,QAAQ,GAAG,iBAAiB,EAC1C,SAAS,EAAE,MAAM,CAAC,MAAM,EAC1B,CAAA;AACF,YAAA,KAAA,CAAA,aAAA,CAAA,MAAA,EAAA,EAAM,SAAS,EAAE,MAAM,CAAC,WAAW,EAAG,EAAA,iBAAiB,CAAC,QAAQ,CAAC,CAAQ,CACvE,CACJ;AAEd;;;;"}
@@ -1,11 +1,11 @@
1
+
2
+
1
3
  :root {
2
4
  --confirmation-text-font-size: 16px;
3
5
  --confirmation-text-line-height: 24px;
4
6
  --confirmation-text-font-weight: 400;
5
7
  --confirmation-text-font-family: var(--font-family-system);
6
8
  --confirmation-text-color: var(--color-light-text-primary)
7
-
8
- /* header */
9
9
  }
10
10
 
11
11
  .component {
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
1
+ import { type FC } from 'react';
2
2
  export declare type TempBlockOverProps = {
3
3
  /**
4
4
  * Отображать в мобильной версии экран компонента
@@ -7,13 +7,13 @@ import { Header } from '../../header/component.js';
7
7
  import styles from './index.module.css';
8
8
 
9
9
  const TempBlockOver = ({ mobile }) => {
10
- const { alignContent, texts, breakpoint, client, onChangeScreen, onChangeState } = useContext(ConfirmationContext);
10
+ const { alignContent, titleTag, texts, breakpoint, client, onChangeScreen, onChangeState } = useContext(ConfirmationContext);
11
11
  const handleReturnButtonClick = () => {
12
12
  onChangeScreen('INITIAL');
13
13
  onChangeState('INITIAL');
14
14
  };
15
15
  return (React.createElement("div", { className: cn(styles.component, styles[alignContent]) },
16
- React.createElement(Header, { mobile: mobile }, texts.tempBlockOverTitle),
16
+ React.createElement(Header, { mobile: mobile, titleTag: titleTag }, texts.tempBlockOverTitle),
17
17
  React.createElement(Text, { view: 'primary-medium', color: 'primary', className: cn(styles.description, {
18
18
  [styles.typographyTheme]: !mobile,
19
19
  [styles.typographyThemeMobile]: mobile,
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sources":["../../../../src/components/screens/temp-block-over/component.tsx"],"sourcesContent":["import React, { FC, useContext } from 'react';\nimport cn from 'classnames';\n\nimport { Button } from '@alfalab/core-components-button';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { ConfirmationContext } from '../../../context';\nimport { Header } from '../../header';\n\nimport styles from './index.module.css';\n\nexport type TempBlockOverProps = {\n /**\n * Отображать в мобильной версии экран компонента\n */\n mobile?: boolean;\n};\n\nexport const TempBlockOver: FC<TempBlockOverProps> = ({ mobile }) => {\n const { alignContent, texts, breakpoint, client, onChangeScreen, onChangeState } =\n useContext(ConfirmationContext);\n\n const handleReturnButtonClick = () => {\n onChangeScreen('INITIAL');\n onChangeState('INITIAL');\n };\n\n return (\n <div className={cn(styles.component, styles[alignContent])}>\n <Header mobile={mobile}>{texts.tempBlockOverTitle}</Header>\n\n <Text\n view='primary-medium'\n color='primary'\n className={cn(styles.description, {\n [styles.typographyTheme]: !mobile,\n [styles.typographyThemeMobile]: mobile,\n })}\n >\n {texts.tempBlockOverDescription}\n </Text>\n\n <Button\n size={mobile ? 'xs' : 's'}\n view='secondary'\n onClick={handleReturnButtonClick}\n className={styles.button}\n breakpoint={breakpoint}\n client={client}\n >\n {texts.tempBlockOverButton}\n </Button>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;MAkBa,aAAa,GAA2B,CAAC,EAAE,MAAM,EAAE,KAAI;AAChE,IAAA,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GAC5E,UAAU,CAAC,mBAAmB,CAAC;IAEnC,MAAM,uBAAuB,GAAG,MAAK;QACjC,cAAc,CAAC,SAAS,CAAC;QACzB,aAAa,CAAC,SAAS,CAAC;AAC5B,KAAC;AAED,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAA;QACtD,KAAC,CAAA,aAAA,CAAA,MAAM,IAAC,MAAM,EAAE,MAAM,EAAG,EAAA,KAAK,CAAC,kBAAkB,CAAU;AAE3D,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EACD,EAAA,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9B,gBAAA,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM;AACjC,gBAAA,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM;AACzC,aAAA,CAAC,EAED,EAAA,KAAK,CAAC,wBAAwB,CAC5B;AAEP,QAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EACH,EAAA,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,EACzB,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,IAEb,KAAK,CAAC,mBAAmB,CACrB,CACP;AAEd;;;;"}
1
+ {"version":3,"file":"component.js","sources":["../../../../src/components/screens/temp-block-over/component.tsx"],"sourcesContent":["import React, { type FC, useContext } from 'react';\nimport cn from 'classnames';\n\nimport { Button } from '@alfalab/core-components-button';\nimport { Text } from '@alfalab/core-components-typography';\n\nimport { ConfirmationContext } from '../../../context';\nimport { Header } from '../../header';\n\nimport styles from './index.module.css';\n\nexport type TempBlockOverProps = {\n /**\n * Отображать в мобильной версии экран компонента\n */\n mobile?: boolean;\n};\n\nexport const TempBlockOver: FC<TempBlockOverProps> = ({ mobile }) => {\n const { alignContent, titleTag, texts, breakpoint, client, onChangeScreen, onChangeState } =\n useContext(ConfirmationContext);\n\n const handleReturnButtonClick = () => {\n onChangeScreen('INITIAL');\n onChangeState('INITIAL');\n };\n\n return (\n <div className={cn(styles.component, styles[alignContent])}>\n <Header mobile={mobile} titleTag={titleTag}>\n {texts.tempBlockOverTitle}\n </Header>\n\n <Text\n view='primary-medium'\n color='primary'\n className={cn(styles.description, {\n [styles.typographyTheme]: !mobile,\n [styles.typographyThemeMobile]: mobile,\n })}\n >\n {texts.tempBlockOverDescription}\n </Text>\n\n <Button\n size={mobile ? 'xs' : 's'}\n view='secondary'\n onClick={handleReturnButtonClick}\n className={styles.button}\n breakpoint={breakpoint}\n client={client}\n >\n {texts.tempBlockOverButton}\n </Button>\n </div>\n );\n};\n"],"names":[],"mappings":";;;;;;;;MAkBa,aAAa,GAA2B,CAAC,EAAE,MAAM,EAAE,KAAI;IAChE,MAAM,EAAE,YAAY,EAAE,QAAQ,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,aAAa,EAAE,GACtF,UAAU,CAAC,mBAAmB,CAAC;IAEnC,MAAM,uBAAuB,GAAG,MAAK;QACjC,cAAc,CAAC,SAAS,CAAC;QACzB,aAAa,CAAC,SAAS,CAAC;AAC5B,KAAC;AAED,IAAA,QACI,KAAA,CAAA,aAAA,CAAA,KAAA,EAAA,EAAK,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC,EAAA;AACtD,QAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EAAA,EAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAA,EACrC,KAAK,CAAC,kBAAkB,CACpB;AAET,QAAA,KAAA,CAAA,aAAA,CAAC,IAAI,EACD,EAAA,IAAI,EAAC,gBAAgB,EACrB,KAAK,EAAC,SAAS,EACf,SAAS,EAAE,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE;AAC9B,gBAAA,CAAC,MAAM,CAAC,eAAe,GAAG,CAAC,MAAM;AACjC,gBAAA,CAAC,MAAM,CAAC,qBAAqB,GAAG,MAAM;AACzC,aAAA,CAAC,EAED,EAAA,KAAK,CAAC,wBAAwB,CAC5B;AAEP,QAAA,KAAA,CAAA,aAAA,CAAC,MAAM,EACH,EAAA,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,GAAG,EACzB,IAAI,EAAC,WAAW,EAChB,OAAO,EAAE,uBAAuB,EAChC,SAAS,EAAE,MAAM,CAAC,MAAM,EACxB,UAAU,EAAE,UAAU,EACtB,MAAM,EAAE,MAAM,IAEb,KAAK,CAAC,mBAAmB,CACrB,CACP;AAEd;;;;"}
@@ -1,11 +1,11 @@
1
+
2
+
1
3
  :root {
2
4
  --confirmation-text-font-size: 16px;
3
5
  --confirmation-text-line-height: 24px;
4
6
  --confirmation-text-font-weight: 400;
5
7
  --confirmation-text-font-family: var(--font-family-system);
6
8
  --confirmation-text-color: var(--color-light-text-primary)
7
-
8
- /* header */
9
9
  }
10
10
 
11
11
  .component {
@@ -1,3 +1,3 @@
1
1
  /// <reference types="react" />
2
- import { TConfirmationContext } from './types';
2
+ import { type TConfirmationContext } from './types';
3
3
  export declare const ConfirmationContext: import("react").Context<TConfirmationContext>;
@@ -4,6 +4,7 @@ import { ONE_DAY, ONE_MINUTE } from './utils.js';
4
4
  const mockFn = () => undefined;
5
5
  const ConfirmationContext = createContext({
6
6
  alignContent: 'left',
7
+ titleTag: 'h3',
7
8
  texts: {},
8
9
  state: 'INITIAL',
9
10
  screen: 'INITIAL',
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sources":["../src/context.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport { TConfirmationContext } from './types';\nimport { ONE_DAY, ONE_MINUTE } from './utils';\n\nconst mockFn = () => undefined;\n\nexport const ConfirmationContext = createContext<TConfirmationContext>({\n alignContent: 'left',\n texts: {},\n state: 'INITIAL',\n screen: 'INITIAL',\n requiredCharAmount: 5,\n countdownDuration: ONE_MINUTE,\n timeLeft: ONE_MINUTE,\n tempBlockDuration: ONE_DAY,\n phone: '',\n hideCountdownSection: false,\n breakpoint: 1024,\n client: 'desktop',\n initialScreenHintSlot: null,\n onTempBlockFinished: mockFn,\n onInputFinished: mockFn,\n onChangeState: mockFn,\n onSmsRetryClick: mockFn,\n onChangeScreen: mockFn,\n onFatalErrorOkButtonClick: mockFn,\n});\n"],"names":[],"mappings":";;;AAKA,MAAM,MAAM,GAAG,MAAM,SAAS;AAEvB,MAAM,mBAAmB,GAAG,aAAa,CAAuB;AACnE,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,kBAAkB,EAAE,CAAC;AACrB,IAAA,iBAAiB,EAAE,UAAU;AAC7B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,oBAAoB,EAAE,KAAK;AAC3B,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,mBAAmB,EAAE,MAAM;AAC3B,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,cAAc,EAAE,MAAM;AACtB,IAAA,yBAAyB,EAAE,MAAM;AACpC,CAAA;;;;"}
1
+ {"version":3,"file":"context.js","sources":["../src/context.ts"],"sourcesContent":["import { createContext } from 'react';\n\nimport { type TConfirmationContext } from './types';\nimport { ONE_DAY, ONE_MINUTE } from './utils';\n\nconst mockFn = () => undefined;\n\nexport const ConfirmationContext = createContext<TConfirmationContext>({\n alignContent: 'left',\n titleTag: 'h3',\n texts: {},\n state: 'INITIAL',\n screen: 'INITIAL',\n requiredCharAmount: 5,\n countdownDuration: ONE_MINUTE,\n timeLeft: ONE_MINUTE,\n tempBlockDuration: ONE_DAY,\n phone: '',\n hideCountdownSection: false,\n breakpoint: 1024,\n client: 'desktop',\n initialScreenHintSlot: null,\n onTempBlockFinished: mockFn,\n onInputFinished: mockFn,\n onChangeState: mockFn,\n onSmsRetryClick: mockFn,\n onChangeScreen: mockFn,\n onFatalErrorOkButtonClick: mockFn,\n});\n"],"names":[],"mappings":";;;AAKA,MAAM,MAAM,GAAG,MAAM,SAAS;AAEvB,MAAM,mBAAmB,GAAG,aAAa,CAAuB;AACnE,IAAA,YAAY,EAAE,MAAM;AACpB,IAAA,QAAQ,EAAE,IAAI;AACd,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,KAAK,EAAE,SAAS;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,kBAAkB,EAAE,CAAC;AACrB,IAAA,iBAAiB,EAAE,UAAU;AAC7B,IAAA,QAAQ,EAAE,UAAU;AACpB,IAAA,iBAAiB,EAAE,OAAO;AAC1B,IAAA,KAAK,EAAE,EAAE;AACT,IAAA,oBAAoB,EAAE,KAAK;AAC3B,IAAA,UAAU,EAAE,IAAI;AAChB,IAAA,MAAM,EAAE,SAAS;AACjB,IAAA,qBAAqB,EAAE,IAAI;AAC3B,IAAA,mBAAmB,EAAE,MAAM;AAC3B,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,aAAa,EAAE,MAAM;AACrB,IAAA,eAAe,EAAE,MAAM;AACvB,IAAA,cAAc,EAAE,MAAM;AACtB,IAAA,yBAAyB,EAAE,MAAM;AACpC,CAAA;;;;"}
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
2
- import { ConfirmationProps } from '../types';
1
+ import { type FC } from 'react';
2
+ import { type ConfirmationProps } from '../types';
3
3
  export declare type DesktopConfirmationProps = Omit<ConfirmationProps, 'mobile' | 'breakpoint'>;
4
4
  export declare const ConfirmationDesktop: FC<DesktopConfirmationProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"component.desktop.js","sources":["../../src/desktop/component.desktop.tsx"],"sourcesContent":["import React, { FC } from 'react';\n\nimport { BaseConfirmation } from '../components/base-confirmation';\nimport { ConfirmationProps } from '../types';\n\nexport type DesktopConfirmationProps = Omit<ConfirmationProps, 'mobile' | 'breakpoint'>;\n\nexport const ConfirmationDesktop: FC<DesktopConfirmationProps> = (props) => (\n <BaseConfirmation {...props} />\n);\n"],"names":[],"mappings":";;;AAOa,MAAA,mBAAmB,GAAiC,CAAC,KAAK,MACnE,oBAAC,gBAAgB,EAAA,EAAA,GAAK,KAAK,EAAA,CAAI;;;;"}
1
+ {"version":3,"file":"component.desktop.js","sources":["../../src/desktop/component.desktop.tsx"],"sourcesContent":["import React, { type FC } from 'react';\n\nimport { BaseConfirmation } from '../components/base-confirmation';\nimport { type ConfirmationProps } from '../types';\n\nexport type DesktopConfirmationProps = Omit<ConfirmationProps, 'mobile' | 'breakpoint'>;\n\nexport const ConfirmationDesktop: FC<DesktopConfirmationProps> = (props) => (\n <BaseConfirmation {...props} />\n);\n"],"names":[],"mappings":";;;AAOa,MAAA,mBAAmB,GAAiC,CAAC,KAAK,MACnE,oBAAC,gBAAgB,EAAA,EAAA,GAAK,KAAK,EAAA,CAAI;;;;"}
@@ -1,4 +1,4 @@
1
- import { FC } from 'react';
2
- import { ConfirmationProps } from '../types';
1
+ import { type FC } from 'react';
2
+ import { type ConfirmationProps } from '../types';
3
3
  export declare type MobileConfirmationProps = Omit<ConfirmationProps, 'mobile'>;
4
4
  export declare const ConfirmationMobile: FC<MobileConfirmationProps>;
@@ -1 +1 @@
1
- {"version":3,"file":"component.mobile.js","sources":["../../src/mobile/component.mobile.tsx"],"sourcesContent":["import React, { FC } from 'react';\nimport cn from 'classnames';\n\nimport { BaseConfirmation } from '../components/base-confirmation';\nimport { ConfirmationProps } from '../types';\n\nimport styles from './mobile.module.css';\n\nexport type MobileConfirmationProps = Omit<ConfirmationProps, 'mobile'>;\n\nexport const ConfirmationMobile: FC<MobileConfirmationProps> = ({ className, ...resProps }) => (\n <BaseConfirmation mobile={true} className={cn(className, styles.container)} {...resProps} />\n);\n"],"names":[],"mappings":";;;;;AAUa,MAAA,kBAAkB,GAAgC,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,MACtF,oBAAC,gBAAgB,EAAA,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAA,GAAM,QAAQ,EAAA,CAAI;;;;"}
1
+ {"version":3,"file":"component.mobile.js","sources":["../../src/mobile/component.mobile.tsx"],"sourcesContent":["import React, { type FC } from 'react';\nimport cn from 'classnames';\n\nimport { BaseConfirmation } from '../components/base-confirmation';\nimport { type ConfirmationProps } from '../types';\n\nimport styles from './mobile.module.css';\n\nexport type MobileConfirmationProps = Omit<ConfirmationProps, 'mobile'>;\n\nexport const ConfirmationMobile: FC<MobileConfirmationProps> = ({ className, ...resProps }) => (\n <BaseConfirmation mobile={true} className={cn(className, styles.container)} {...resProps} />\n);\n"],"names":[],"mappings":";;;;;AAUa,MAAA,kBAAkB,GAAgC,CAAC,EAAE,SAAS,EAAE,GAAG,QAAQ,EAAE,MACtF,oBAAC,gBAAgB,EAAA,EAAC,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,EAAA,GAAM,QAAQ,EAAA,CAAI;;;;"}
@@ -1,5 +1,5 @@
1
- import { ComponentType, ReactNode } from 'react';
2
- export declare type ConfirmationProps = {
1
+ import { type ComponentType, type ReactNode } from 'react';
2
+ export interface ConfirmationProps {
3
3
  /**
4
4
  * Экран компонента
5
5
  */
@@ -16,6 +16,11 @@ export declare type ConfirmationProps = {
16
16
  * Позиционирование контента
17
17
  */
18
18
  alignContent?: 'left' | 'center';
19
+ /**
20
+ * HTML тег для заголовка
21
+ * @default 'h3'
22
+ */
23
+ titleTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
19
24
  /**
20
25
  * Объект с текстами
21
26
  */
@@ -107,11 +112,11 @@ export declare type ConfirmationProps = {
107
112
  * @default 1300
108
113
  */
109
114
  errorVisibleDuration?: number;
110
- };
111
- export declare type TConfirmationContext = Required<Pick<ConfirmationProps, 'alignContent' | 'texts' | 'state' | 'screen' | 'requiredCharAmount' | 'onInputFinished' | 'countdownDuration' | 'onChangeState' | 'onSmsRetryClick' | 'onChangeScreen' | 'onFatalErrorOkButtonClick' | 'tempBlockDuration' | 'hideCountdownSection'>> & Pick<ConfirmationProps, 'phone' | 'blockSmsRetry' | 'onTempBlockFinished' | 'clearCodeOnError' | 'initialScreenHintSlot' | 'errorVisibleDuration' | 'breakpoint' | 'client'> & {
115
+ }
116
+ export declare type TConfirmationContext = Required<Pick<ConfirmationProps, 'alignContent' | 'titleTag' | 'texts' | 'state' | 'screen' | 'requiredCharAmount' | 'onInputFinished' | 'countdownDuration' | 'onChangeState' | 'onSmsRetryClick' | 'onChangeScreen' | 'onFatalErrorOkButtonClick' | 'tempBlockDuration' | 'hideCountdownSection'>> & Pick<ConfirmationProps, 'phone' | 'blockSmsRetry' | 'onTempBlockFinished' | 'clearCodeOnError' | 'initialScreenHintSlot' | 'errorVisibleDuration' | 'breakpoint' | 'client'> & {
112
117
  timeLeft: number;
113
118
  };
114
- export declare type ConfirmationTexts = {
119
+ export interface ConfirmationTexts {
115
120
  /**
116
121
  * Экран INITIAL
117
122
  */
@@ -152,10 +157,10 @@ export declare type ConfirmationTexts = {
152
157
  tempBlockOverTitle?: ReactNode;
153
158
  tempBlockOverDescription?: ReactNode;
154
159
  tempBlockOverButton?: string;
155
- };
160
+ }
156
161
  export declare type ConfirmationScreen = 'INITIAL' | 'HINT' | 'FATAL_ERROR' | 'TEMP_BLOCK' | 'TEMP_BLOCK_OVER';
157
162
  export declare type ConfirmationState = 'INITIAL' | 'CODE_CHECKING' | 'CODE_SENDING' | 'CODE_ERROR' | 'CODE_EXPIRED' | 'CODE_EXPIRED_ENDED';
158
- export declare type ScreensMap = {
163
+ export interface ScreensMap {
159
164
  [key: string]: ComponentType;
160
- };
165
+ }
161
166
  export declare const defaultTexts: ConfirmationTexts;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import { ComponentType, ReactNode } from 'react';\n\nexport type ConfirmationProps = {\n /**\n * Экран компонента\n */\n screen: ConfirmationScreen | string;\n\n /**\n * Состояние компонента\n */\n state: ConfirmationState | string;\n\n /**\n * Мобильная версия компонента для экрана\n */\n mobile?: boolean;\n\n /**\n * Позиционирование контента\n */\n alignContent?: 'left' | 'center';\n\n /**\n * Объект с текстами\n */\n texts?: ConfirmationTexts;\n\n /**\n * Количество символов, которое можно ввести в поле ввода подписания до того, как произойдет автоотправка\n */\n requiredCharAmount?: number;\n\n /**\n * Длительность обратного отсчета на кнопке повторного запроса сообщения, в милисекундах\n */\n countdownDuration?: number;\n\n /**\n * Продолжительность блокировки формы (ms)\n */\n tempBlockDuration?: number;\n\n /**\n * Номер телефона, на который отправлен код\n */\n phone?: string;\n\n /**\n * Не осталось попыток ввода кода\n */\n blockSmsRetry?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Сss класс для стилизации общей обёртки\n */\n className?: string;\n\n /**\n * Флаг - нужно ли очищать код при возникновении ошибки\n */\n clearCodeOnError?: boolean;\n\n /**\n * Функция обновления состояния компонента\n */\n onChangeState: (state: ConfirmationState | string) => void;\n\n /**\n * Функция обновления состояния компонента\n */\n onChangeScreen: (state: ConfirmationScreen | string) => void;\n\n /**\n * Обработчик события завершения ввода кода подписания\n */\n onInputFinished: (code: string) => void;\n\n /**\n * Обработчик события нажатия на кнопку \"Запросить код\"\n */\n onSmsRetryClick: () => void;\n\n /**\n * Клик по кнопке \"Понятно\" на экране фатальной ошибки\n */\n onFatalErrorOkButtonClick?: () => void;\n\n /**\n * Временная блокировка формы закончилась\n */\n onTempBlockFinished?: () => void;\n\n /**\n * Возвращает объект, где ключ - название экрана (screen), значение - компонент для экрана\n */\n getScreensMap?: (defaultScreensMap: ScreensMap) => ScreensMap;\n\n /**\n * Дочерние элементы\n */\n children?: ReactNode;\n\n /**\n * Скрыть секцию с повторной отправкой кода\n * @default false\n */\n hideCountdownSection?: boolean;\n\n /**\n * Слот для контента с подсказкой на главном экране\n */\n initialScreenHintSlot?: ReactNode;\n\n /**\n * Контрольная точка для кнопки, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n\n /**\n * Продолжительность отображения ошибки\n * @default 1300\n */\n errorVisibleDuration?: number;\n};\n\nexport type TConfirmationContext = Required<\n Pick<\n ConfirmationProps,\n | 'alignContent'\n | 'texts'\n | 'state'\n | 'screen'\n | 'requiredCharAmount'\n | 'onInputFinished'\n | 'countdownDuration'\n | 'onChangeState'\n | 'onSmsRetryClick'\n | 'onChangeScreen'\n | 'onFatalErrorOkButtonClick'\n | 'tempBlockDuration'\n | 'hideCountdownSection'\n >\n> &\n Pick<\n ConfirmationProps,\n | 'phone'\n | 'blockSmsRetry'\n | 'onTempBlockFinished'\n | 'clearCodeOnError'\n | 'initialScreenHintSlot'\n | 'errorVisibleDuration'\n | 'breakpoint'\n | 'client'\n > & {\n timeLeft: number;\n };\n\nexport type ConfirmationTexts = {\n /**\n * Экран INITIAL\n */\n title?: ReactNode; // заголовок\n codeError?: string; // ошибка проверки кода\n codeErrorExpired?: string; // код устарел, запросите новый\n codeErrorExpiredEnded?: string; // код устарел\n codeChecking?: string; // код проверяется\n codeSending?: string; // код отправляется\n codeSended?: string; // код отправлен\n buttonRetry?: string; // кнопка повторной отправки кода\n linkToHint?: string; // ссылка на экран HINT\n noAttemptsLeft?: string; // не осталось попыток запроса кода\n countdown?: string; // 'запросить повторно можно через'\n\n /**\n * Экран HINT\n */\n hintTitle?: string; // заголовок\n hintDescription?: string; // описание\n hintNotification?: string; // уведомление\n hintButton?: string; // кнопка 'Вернуться'\n domesticPhone?: string; // номер телефона для звонков по России\n internationalPhone?: string; // номер телефона для звонков из-за границы\n\n /**\n * Экран FATAL_ERROR\n */\n fatalErrorTitle?: ReactNode; // заголовок\n fatalErrorDescription?: ReactNode; // описание\n fatalErrorButton?: string; // кнопка\n\n /**\n * Экран TEMP_BLOCK\n */\n tempBlockTitle?: ReactNode; // заголовок\n tempBlockDescription?: ReactNode; // описание\n\n /**\n * Экран TEMP_BLOCK_OVER\n */\n tempBlockOverTitle?: ReactNode; // заголовок\n tempBlockOverDescription?: ReactNode; // описание\n tempBlockOverButton?: string; // кнопка\n};\n\nexport type ConfirmationScreen =\n | 'INITIAL' // начальный экран\n | 'HINT' // экран \"Не приходит смс?\"\n | 'FATAL_ERROR' // экран критической ошибки\n | 'TEMP_BLOCK' // экран временной блокировки\n | 'TEMP_BLOCK_OVER'; // экран todo\n\nexport type ConfirmationState =\n | 'INITIAL' // начальное состояние\n | 'CODE_CHECKING' // проверка кода\n | 'CODE_SENDING' // повторная отправка кода\n | 'CODE_ERROR' // ошибка, когда ввели неверный код\n | 'CODE_EXPIRED' // ошибка, когда код устарел, но можно запросить новый\n | 'CODE_EXPIRED_ENDED'; // ошибка, когда код устарел\n\nexport type ScreensMap = {\n [key: string]: ComponentType;\n};\n\nexport const defaultTexts: ConfirmationTexts = {\n title: 'Введите код из\\xa0уведомления',\n codeError: 'Код не подходит, проверьте его',\n codeErrorExpired: 'Код устарел, запросите новый',\n codeErrorExpiredEnded: 'Код устарел',\n codeChecking: '',\n codeSending: '',\n buttonRetry: 'Запросить код',\n hintTitle: 'Не\\xa0приходит код?',\n hintDescription: 'Если\\xa0сменили номер, позвоните нам или обратитесь в\\xa0любой офис банка.',\n hintNotification:\n 'Если номер не\\xa0меняли, попробуйте запросить код позже — возможно, перегружен сервис отправки уведомлений.',\n linkToHint: 'Не\\xa0приходит код?',\n hintButton: 'Вернуться к\\xa0вводу кода',\n noAttemptsLeft: 'Не\\xa0осталось попыток запроса кода',\n fatalErrorTitle: 'Ввести код больше нельзя',\n fatalErrorDescription:\n 'Мы ограничили следующие попытки ввода, потому\\xa0что код был введён неверно больше 5 раз.',\n fatalErrorButton: 'Понятно',\n tempBlockTitle: 'Ввести код пока нельзя',\n tempBlockDescription: 'Слишком много неверных попыток. Запросите новый позже',\n tempBlockOverTitle: 'Ввод разблокирован',\n tempBlockOverDescription: 'Теперь можно запросить новый код',\n tempBlockOverButton: 'Запросить новый код',\n codeSended: 'Код отправлен',\n countdown: 'Запросить новый можно через',\n domesticPhone: '8 800 200 00 00',\n internationalPhone: '+7 495 78 888 78',\n};\n"],"names":[],"mappings":"AA2Oa,MAAA,YAAY,GAAsB;AAC3C,IAAA,KAAK,EAAE,+BAA+B;AACtC,IAAA,SAAS,EAAE,gCAAgC;AAC3C,IAAA,gBAAgB,EAAE,8BAA8B;AAChD,IAAA,qBAAqB,EAAE,aAAa;AACpC,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,eAAe,EAAE,4EAA4E;AAC7F,IAAA,gBAAgB,EACZ,6GAA6G;AACjH,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,UAAU,EAAE,2BAA2B;AACvC,IAAA,cAAc,EAAE,qCAAqC;AACrD,IAAA,eAAe,EAAE,0BAA0B;AAC3C,IAAA,qBAAqB,EACjB,2FAA2F;AAC/F,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,cAAc,EAAE,wBAAwB;AACxC,IAAA,oBAAoB,EAAE,uDAAuD;AAC7E,IAAA,kBAAkB,EAAE,oBAAoB;AACxC,IAAA,wBAAwB,EAAE,kCAAkC;AAC5D,IAAA,mBAAmB,EAAE,qBAAqB;AAC1C,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,SAAS,EAAE,6BAA6B;AACxC,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,kBAAkB,EAAE,kBAAkB;;;;;"}
1
+ {"version":3,"file":"types.js","sources":["../src/types.ts"],"sourcesContent":["import { type ComponentType, type ReactNode } from 'react';\n\nexport interface ConfirmationProps {\n /**\n * Экран компонента\n */\n screen: ConfirmationScreen | string;\n\n /**\n * Состояние компонента\n */\n state: ConfirmationState | string;\n\n /**\n * Мобильная версия компонента для экрана\n */\n mobile?: boolean;\n\n /**\n * Позиционирование контента\n */\n alignContent?: 'left' | 'center';\n\n /**\n * HTML тег для заголовка\n * @default 'h3'\n */\n titleTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';\n\n /**\n * Объект с текстами\n */\n texts?: ConfirmationTexts;\n\n /**\n * Количество символов, которое можно ввести в поле ввода подписания до того, как произойдет автоотправка\n */\n requiredCharAmount?: number;\n\n /**\n * Длительность обратного отсчета на кнопке повторного запроса сообщения, в милисекундах\n */\n countdownDuration?: number;\n\n /**\n * Продолжительность блокировки формы (ms)\n */\n tempBlockDuration?: number;\n\n /**\n * Номер телефона, на который отправлен код\n */\n phone?: string;\n\n /**\n * Не осталось попыток ввода кода\n */\n blockSmsRetry?: boolean;\n\n /**\n * Идентификатор для систем автоматизированного тестирования\n */\n dataTestId?: string;\n\n /**\n * Сss класс для стилизации общей обёртки\n */\n className?: string;\n\n /**\n * Флаг - нужно ли очищать код при возникновении ошибки\n */\n clearCodeOnError?: boolean;\n\n /**\n * Функция обновления состояния компонента\n */\n onChangeState: (state: ConfirmationState | string) => void;\n\n /**\n * Функция обновления состояния компонента\n */\n onChangeScreen: (state: ConfirmationScreen | string) => void;\n\n /**\n * Обработчик события завершения ввода кода подписания\n */\n onInputFinished: (code: string) => void;\n\n /**\n * Обработчик события нажатия на кнопку \"Запросить код\"\n */\n onSmsRetryClick: () => void;\n\n /**\n * Клик по кнопке \"Понятно\" на экране фатальной ошибки\n */\n onFatalErrorOkButtonClick?: () => void;\n\n /**\n * Временная блокировка формы закончилась\n */\n onTempBlockFinished?: () => void;\n\n /**\n * Возвращает объект, где ключ - название экрана (screen), значение - компонент для экрана\n */\n getScreensMap?: (defaultScreensMap: ScreensMap) => ScreensMap;\n\n /**\n * Дочерние элементы\n */\n children?: ReactNode;\n\n /**\n * Скрыть секцию с повторной отправкой кода\n * @default false\n */\n hideCountdownSection?: boolean;\n\n /**\n * Слот для контента с подсказкой на главном экране\n */\n initialScreenHintSlot?: ReactNode;\n\n /**\n * Контрольная точка для кнопки, с нее начинается desktop версия\n * @default 1024\n */\n breakpoint?: number;\n\n /**\n * Версия, которая будет использоваться при серверном рендеринге\n */\n client?: 'desktop' | 'mobile';\n\n /**\n * Продолжительность отображения ошибки\n * @default 1300\n */\n errorVisibleDuration?: number;\n}\n\nexport type TConfirmationContext = Required<\n Pick<\n ConfirmationProps,\n | 'alignContent'\n | 'titleTag'\n | 'texts'\n | 'state'\n | 'screen'\n | 'requiredCharAmount'\n | 'onInputFinished'\n | 'countdownDuration'\n | 'onChangeState'\n | 'onSmsRetryClick'\n | 'onChangeScreen'\n | 'onFatalErrorOkButtonClick'\n | 'tempBlockDuration'\n | 'hideCountdownSection'\n >\n> &\n Pick<\n ConfirmationProps,\n | 'phone'\n | 'blockSmsRetry'\n | 'onTempBlockFinished'\n | 'clearCodeOnError'\n | 'initialScreenHintSlot'\n | 'errorVisibleDuration'\n | 'breakpoint'\n | 'client'\n > & {\n timeLeft: number;\n };\n\nexport interface ConfirmationTexts {\n /**\n * Экран INITIAL\n */\n title?: ReactNode; // заголовок\n codeError?: string; // ошибка проверки кода\n codeErrorExpired?: string; // код устарел, запросите новый\n codeErrorExpiredEnded?: string; // код устарел\n codeChecking?: string; // код проверяется\n codeSending?: string; // код отправляется\n codeSended?: string; // код отправлен\n buttonRetry?: string; // кнопка повторной отправки кода\n linkToHint?: string; // ссылка на экран HINT\n noAttemptsLeft?: string; // не осталось попыток запроса кода\n countdown?: string; // 'запросить повторно можно через'\n\n /**\n * Экран HINT\n */\n hintTitle?: string; // заголовок\n hintDescription?: string; // описание\n hintNotification?: string; // уведомление\n hintButton?: string; // кнопка 'Вернуться'\n domesticPhone?: string; // номер телефона для звонков по России\n internationalPhone?: string; // номер телефона для звонков из-за границы\n\n /**\n * Экран FATAL_ERROR\n */\n fatalErrorTitle?: ReactNode; // заголовок\n fatalErrorDescription?: ReactNode; // описание\n fatalErrorButton?: string; // кнопка\n\n /**\n * Экран TEMP_BLOCK\n */\n tempBlockTitle?: ReactNode; // заголовок\n tempBlockDescription?: ReactNode; // описание\n\n /**\n * Экран TEMP_BLOCK_OVER\n */\n tempBlockOverTitle?: ReactNode; // заголовок\n tempBlockOverDescription?: ReactNode; // описание\n tempBlockOverButton?: string; // кнопка\n}\n\nexport type ConfirmationScreen =\n | 'INITIAL' // начальный экран\n | 'HINT' // экран \"Не приходит смс?\"\n | 'FATAL_ERROR' // экран критической ошибки\n | 'TEMP_BLOCK' // экран временной блокировки\n | 'TEMP_BLOCK_OVER'; // экран todo\n\nexport type ConfirmationState =\n | 'INITIAL' // начальное состояние\n | 'CODE_CHECKING' // проверка кода\n | 'CODE_SENDING' // повторная отправка кода\n | 'CODE_ERROR' // ошибка, когда ввели неверный код\n | 'CODE_EXPIRED' // ошибка, когда код устарел, но можно запросить новый\n | 'CODE_EXPIRED_ENDED'; // ошибка, когда код устарел\n\nexport interface ScreensMap {\n [key: string]: ComponentType;\n}\n\nexport const defaultTexts: ConfirmationTexts = {\n title: 'Введите код из\\xa0уведомления',\n codeError: 'Код не подходит, проверьте его',\n codeErrorExpired: 'Код устарел, запросите новый',\n codeErrorExpiredEnded: 'Код устарел',\n codeChecking: '',\n codeSending: '',\n buttonRetry: 'Запросить код',\n hintTitle: 'Не\\xa0приходит код?',\n hintDescription: 'Если\\xa0сменили номер, позвоните нам или обратитесь в\\xa0любой офис банка.',\n hintNotification:\n 'Если номер не\\xa0меняли, попробуйте запросить код позже — возможно, перегружен сервис отправки уведомлений.',\n linkToHint: 'Не\\xa0приходит код?',\n hintButton: 'Вернуться к\\xa0вводу кода',\n noAttemptsLeft: 'Не\\xa0осталось попыток запроса кода',\n fatalErrorTitle: 'Ввести код больше нельзя',\n fatalErrorDescription:\n 'Мы ограничили следующие попытки ввода, потому\\xa0что код был введён неверно больше 5 раз.',\n fatalErrorButton: 'Понятно',\n tempBlockTitle: 'Ввести код пока нельзя',\n tempBlockDescription: 'Слишком много неверных попыток. Запросите новый позже',\n tempBlockOverTitle: 'Ввод разблокирован',\n tempBlockOverDescription: 'Теперь можно запросить новый код',\n tempBlockOverButton: 'Запросить новый код',\n codeSended: 'Код отправлен',\n countdown: 'Запросить новый можно через',\n domesticPhone: '8 800 200 00 00',\n internationalPhone: '+7 495 78 888 78',\n};\n"],"names":[],"mappings":"AAkPa,MAAA,YAAY,GAAsB;AAC3C,IAAA,KAAK,EAAE,+BAA+B;AACtC,IAAA,SAAS,EAAE,gCAAgC;AAC3C,IAAA,gBAAgB,EAAE,8BAA8B;AAChD,IAAA,qBAAqB,EAAE,aAAa;AACpC,IAAA,YAAY,EAAE,EAAE;AAChB,IAAA,WAAW,EAAE,EAAE;AACf,IAAA,WAAW,EAAE,eAAe;AAC5B,IAAA,SAAS,EAAE,qBAAqB;AAChC,IAAA,eAAe,EAAE,4EAA4E;AAC7F,IAAA,gBAAgB,EACZ,6GAA6G;AACjH,IAAA,UAAU,EAAE,qBAAqB;AACjC,IAAA,UAAU,EAAE,2BAA2B;AACvC,IAAA,cAAc,EAAE,qCAAqC;AACrD,IAAA,eAAe,EAAE,0BAA0B;AAC3C,IAAA,qBAAqB,EACjB,2FAA2F;AAC/F,IAAA,gBAAgB,EAAE,SAAS;AAC3B,IAAA,cAAc,EAAE,wBAAwB;AACxC,IAAA,oBAAoB,EAAE,uDAAuD;AAC7E,IAAA,kBAAkB,EAAE,oBAAoB;AACxC,IAAA,wBAAwB,EAAE,kCAAkC;AAC5D,IAAA,mBAAmB,EAAE,qBAAqB;AAC1C,IAAA,UAAU,EAAE,eAAe;AAC3B,IAAA,SAAS,EAAE,6BAA6B;AACxC,IAAA,aAAa,EAAE,iBAAiB;AAChC,IAAA,kBAAkB,EAAE,kBAAkB;;;;;"}
@@ -1,5 +1,5 @@
1
1
  /// <reference types="react" />
2
- import { ConfirmationProps } from './types';
2
+ import { type ConfirmationProps } from './types';
3
3
  /**
4
4
  * Форматирование миллисекунд в hh:mm:ss.
5
5
  *
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { ConfirmationProps } from './types';\n\n/**\n * Форматирование миллисекунд в hh:mm:ss.\n *\n * @param {Number} ms миллисекунды\n * @returns {String} время в формате mm:ss\n */\nexport function formatMsAsMinutes(ms: number) {\n const totalSeconds = Math.ceil(ms / 1000);\n const totalMinutes = Math.floor(totalSeconds / 60);\n const totalHours = Math.floor(totalMinutes / 60);\n\n const seconds = totalSeconds % 60;\n const paddedSeconds = `00${seconds}`.slice(-2);\n\n if (totalHours > 0) {\n const minutes = totalMinutes % 60;\n\n const paddedMinutes = `00${minutes}`.slice(-2);\n const paddedHours = `00${totalHours}`.slice(-2);\n\n return `${paddedHours}:${paddedMinutes}:${paddedSeconds}`;\n }\n\n const paddedMinutes = `00${totalMinutes}`.slice(-2);\n\n return `${paddedMinutes}:${paddedSeconds}`;\n}\n\ntype UseCountdown = (countdownDuration: number, tick?: number) => [number, () => void, () => void];\n\n/**\n * Возвращает время, которое осталось до истечения таймера в ms\n */\nexport const useCountdown: UseCountdown = (countdownDuration, tick = 1000) => {\n const timerId = useRef(0);\n\n const start = useRef(0);\n\n const [timePassed, setTimePassed] = useState(0);\n\n const stopTimer = useCallback(() => {\n window.clearInterval(timerId.current);\n }, []);\n\n const updateProgress = useCallback(() => {\n const passed = Date.now() - start.current;\n\n if (passed >= countdownDuration) {\n stopTimer();\n\n setTimePassed(countdownDuration);\n } else {\n setTimePassed(passed);\n }\n }, [countdownDuration, stopTimer]);\n\n const startTimer = useCallback(() => {\n stopTimer();\n\n start.current = Date.now();\n\n updateProgress();\n\n timerId.current = window.setInterval(updateProgress, tick);\n }, [stopTimer, updateProgress, tick]);\n\n const timeLeft = countdownDuration - timePassed;\n\n useEffect(\n () => () => {\n stopTimer();\n },\n [stopTimer],\n );\n\n return [timeLeft, startTimer, stopTimer];\n};\n\nexport const ONE_DAY = 24 * 60 * 60 * 1000;\nexport const ONE_MINUTE = 60 * 1000;\n\ntype UseConfirmationParams = {\n state?: ConfirmationProps['state'];\n screen?: ConfirmationProps['screen'];\n blockSmsRetry?: ConfirmationProps['blockSmsRetry'];\n};\n\nexport const useConfirmation = ({ state, screen, blockSmsRetry }: UseConfirmationParams = {}) => {\n const [confirmationState, setConfirmationState] = useState(state ?? 'INITIAL');\n const [confirmationScreen, setConfirmationScreen] = useState(screen ?? 'INITIAL');\n const [confirmationBlockSmsRetry, setConfirmationBlockSmsRetry] = useState(\n blockSmsRetry ?? false,\n );\n\n return {\n confirmationState,\n confirmationScreen,\n confirmationBlockSmsRetry,\n setConfirmationState,\n setConfirmationScreen,\n setConfirmationBlockSmsRetry,\n };\n};\n\nconst NON_NUMBER_OR_PLUS_REGEXP = new RegExp(/[^\\d+]/g);\n\n/**\n * @returns ссылку для набора номера\n */\nexport function getPhoneHref(phone: string): string {\n return `tel:${phone.replace(NON_NUMBER_OR_PLUS_REGEXP, '')}`;\n}\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sources":["../src/utils.ts"],"sourcesContent":["import { useCallback, useEffect, useRef, useState } from 'react';\n\nimport { type ConfirmationProps } from './types';\n\n/**\n * Форматирование миллисекунд в hh:mm:ss.\n *\n * @param {Number} ms миллисекунды\n * @returns {String} время в формате mm:ss\n */\nexport function formatMsAsMinutes(ms: number) {\n const totalSeconds = Math.ceil(ms / 1000);\n const totalMinutes = Math.floor(totalSeconds / 60);\n const totalHours = Math.floor(totalMinutes / 60);\n\n const seconds = totalSeconds % 60;\n const paddedSeconds = `00${seconds}`.slice(-2);\n\n if (totalHours > 0) {\n const minutes = totalMinutes % 60;\n\n const paddedMinutes = `00${minutes}`.slice(-2);\n const paddedHours = `00${totalHours}`.slice(-2);\n\n return `${paddedHours}:${paddedMinutes}:${paddedSeconds}`;\n }\n\n const paddedMinutes = `00${totalMinutes}`.slice(-2);\n\n return `${paddedMinutes}:${paddedSeconds}`;\n}\n\ntype UseCountdown = (countdownDuration: number, tick?: number) => [number, () => void, () => void];\n\n/**\n * Возвращает время, которое осталось до истечения таймера в ms\n */\nexport const useCountdown: UseCountdown = (countdownDuration, tick = 1000) => {\n const timerId = useRef(0);\n\n const start = useRef(0);\n\n const [timePassed, setTimePassed] = useState(0);\n\n const stopTimer = useCallback(() => {\n window.clearInterval(timerId.current);\n }, []);\n\n const updateProgress = useCallback(() => {\n const passed = Date.now() - start.current;\n\n if (passed >= countdownDuration) {\n stopTimer();\n\n setTimePassed(countdownDuration);\n } else {\n setTimePassed(passed);\n }\n }, [countdownDuration, stopTimer]);\n\n const startTimer = useCallback(() => {\n stopTimer();\n\n start.current = Date.now();\n\n updateProgress();\n\n timerId.current = window.setInterval(updateProgress, tick);\n }, [stopTimer, updateProgress, tick]);\n\n const timeLeft = countdownDuration - timePassed;\n\n useEffect(\n () => () => {\n stopTimer();\n },\n [stopTimer],\n );\n\n return [timeLeft, startTimer, stopTimer];\n};\n\nexport const ONE_DAY = 24 * 60 * 60 * 1000;\nexport const ONE_MINUTE = 60 * 1000;\n\ntype UseConfirmationParams = {\n state?: ConfirmationProps['state'];\n screen?: ConfirmationProps['screen'];\n blockSmsRetry?: ConfirmationProps['blockSmsRetry'];\n};\n\nexport const useConfirmation = ({ state, screen, blockSmsRetry }: UseConfirmationParams = {}) => {\n const [confirmationState, setConfirmationState] = useState(state ?? 'INITIAL');\n const [confirmationScreen, setConfirmationScreen] = useState(screen ?? 'INITIAL');\n const [confirmationBlockSmsRetry, setConfirmationBlockSmsRetry] = useState(\n blockSmsRetry ?? false,\n );\n\n return {\n confirmationState,\n confirmationScreen,\n confirmationBlockSmsRetry,\n setConfirmationState,\n setConfirmationScreen,\n setConfirmationBlockSmsRetry,\n };\n};\n\nconst NON_NUMBER_OR_PLUS_REGEXP = new RegExp(/[^\\d+]/g);\n\n/**\n * @returns ссылку для набора номера\n */\nexport function getPhoneHref(phone: string): string {\n return `tel:${phone.replace(NON_NUMBER_OR_PLUS_REGEXP, '')}`;\n}\n"],"names":[],"mappings":";;AAIA;;;;;AAKG;AACG,SAAU,iBAAiB,CAAC,EAAU,EAAA;IACxC,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;IACzC,MAAM,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;IAClD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,EAAE,CAAC;AAEhD,IAAA,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE;IACjC,MAAM,aAAa,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC;IAE9C,IAAI,UAAU,GAAG,CAAC,EAAE;AAChB,QAAA,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE;QAEjC,MAAM,aAAa,GAAG,CAAA,EAAA,EAAK,OAAO,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9C,MAAM,WAAW,GAAG,CAAA,EAAA,EAAK,UAAU,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAE/C,QAAA,OAAO,GAAG,WAAW,CAAA,CAAA,EAAI,aAAa,CAAI,CAAA,EAAA,aAAa,EAAE;AAC5D;IAED,MAAM,aAAa,GAAG,CAAA,EAAA,EAAK,YAAY,CAAA,CAAE,CAAC,KAAK,CAAC,EAAE,CAAC;AAEnD,IAAA,OAAO,CAAG,EAAA,aAAa,CAAI,CAAA,EAAA,aAAa,EAAE;AAC9C;AAIA;;AAEG;AACU,MAAA,YAAY,GAAiB,CAAC,iBAAiB,EAAE,IAAI,GAAG,IAAI,KAAI;AACzE,IAAA,MAAM,OAAO,GAAG,MAAM,CAAC,CAAC,CAAC;AAEzB,IAAA,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC;IAEvB,MAAM,CAAC,UAAU,EAAE,aAAa,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC;AAE/C,IAAA,MAAM,SAAS,GAAG,WAAW,CAAC,MAAK;AAC/B,QAAA,MAAM,CAAC,aAAa,CAAC,OAAO,CAAC,OAAO,CAAC;KACxC,EAAE,EAAE,CAAC;AAEN,IAAA,MAAM,cAAc,GAAG,WAAW,CAAC,MAAK;QACpC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,OAAO;QAEzC,IAAI,MAAM,IAAI,iBAAiB,EAAE;AAC7B,YAAA,SAAS,EAAE;YAEX,aAAa,CAAC,iBAAiB,CAAC;AACnC;AAAM,aAAA;YACH,aAAa,CAAC,MAAM,CAAC;AACxB;AACL,KAAC,EAAE,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC;AAElC,IAAA,MAAM,UAAU,GAAG,WAAW,CAAC,MAAK;AAChC,QAAA,SAAS,EAAE;AAEX,QAAA,KAAK,CAAC,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE;AAE1B,QAAA,cAAc,EAAE;QAEhB,OAAO,CAAC,OAAO,GAAG,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC;KAC7D,EAAE,CAAC,SAAS,EAAE,cAAc,EAAE,IAAI,CAAC,CAAC;AAErC,IAAA,MAAM,QAAQ,GAAG,iBAAiB,GAAG,UAAU;AAE/C,IAAA,SAAS,CACL,MAAM,MAAK;AACP,QAAA,SAAS,EAAE;AACf,KAAC,EACD,CAAC,SAAS,CAAC,CACd;AAED,IAAA,OAAO,CAAC,QAAQ,EAAE,UAAU,EAAE,SAAS,CAAC;AAC5C;AAEa,MAAA,OAAO,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG;AACzB,MAAA,UAAU,GAAG,EAAE,GAAG;AAQxB,MAAM,eAAe,GAAG,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,aAAa,EAA4B,GAAA,EAAE,KAAI;AAC5F,IAAA,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC,GAAG,QAAQ,CAAC,KAAK,IAAI,SAAS,CAAC;AAC9E,IAAA,MAAM,CAAC,kBAAkB,EAAE,qBAAqB,CAAC,GAAG,QAAQ,CAAC,MAAM,IAAI,SAAS,CAAC;AACjF,IAAA,MAAM,CAAC,yBAAyB,EAAE,4BAA4B,CAAC,GAAG,QAAQ,CACtE,aAAa,IAAI,KAAK,CACzB;IAED,OAAO;QACH,iBAAiB;QACjB,kBAAkB;QAClB,yBAAyB;QACzB,oBAAoB;QACpB,qBAAqB;QACrB,4BAA4B;KAC/B;AACL;AAEA,MAAM,yBAAyB,GAAG,IAAI,MAAM,CAAC,SAAS,CAAC;AAEvD;;AAEG;AACG,SAAU,YAAY,CAAC,KAAa,EAAA;IACtC,OAAO,CAAA,IAAA,EAAO,KAAK,CAAC,OAAO,CAAC,yBAAyB,EAAE,EAAE,CAAC,CAAA,CAAE;AAChE;;;;"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@alfalab/core-components-confirmation",
3
- "version": "14.0.1",
3
+ "version": "14.1.0",
4
4
  "description": "Sms confirmation component",
5
5
  "keywords": [],
6
6
  "license": "MIT",
@@ -15,7 +15,7 @@
15
15
  "@alfalab/core-components-link": "^6.0.0",
16
16
  "@alfalab/core-components-mq": "^5.0.1",
17
17
  "@alfalab/core-components-spinner": "^5.0.1",
18
- "@alfalab/core-components-typography": "^5.0.1",
18
+ "@alfalab/core-components-typography": "^5.0.2",
19
19
  "@alfalab/hooks": "^1.13.1",
20
20
  "classnames": "^2.5.1",
21
21
  "tslib": "^2.4.0"
@@ -28,6 +28,6 @@
28
28
  "access": "public",
29
29
  "directory": "dist"
30
30
  },
31
- "themesVersion": "14.1.0",
31
+ "themesVersion": "14.1.2",
32
32
  "varsVersion": "10.1.0"
33
33
  }
@@ -1,10 +1,10 @@
1
- import React, { FC } from 'react';
1
+ import React, { type FC } from 'react';
2
2
 
3
3
  import { useIsDesktop } from '@alfalab/core-components-mq';
4
4
 
5
5
  import { ConfirmationDesktop } from './desktop';
6
6
  import { ConfirmationMobile } from './mobile';
7
- import { ConfirmationProps } from './types';
7
+ import { type ConfirmationProps } from './types';
8
8
 
9
9
  export type ResponsiveConfirmationProps = Omit<
10
10
  ConfirmationProps,
@@ -1,10 +1,10 @@
1
- import React, { ComponentType, FC, useEffect, useMemo } from 'react';
1
+ import React, { type ComponentType, type FC, useEffect, useMemo } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { usePrevious } from '@alfalab/hooks';
5
5
 
6
6
  import { ConfirmationContext } from '../../context';
7
- import { ConfirmationProps, defaultTexts, TConfirmationContext } from '../../types';
7
+ import { type ConfirmationProps, defaultTexts, type TConfirmationContext } from '../../types';
8
8
  import { ONE_DAY, ONE_MINUTE, useCountdown } from '../../utils';
9
9
  import { FatalError, Hint, Initial, TempBlock, TempBlockOver } from '../screens';
10
10
 
@@ -21,6 +21,7 @@ const confirmationScreens: { [key: string]: ComponentType<{ mobile?: boolean }>
21
21
  export const BaseConfirmation: FC<ConfirmationProps> = ({
22
22
  state,
23
23
  screen,
24
+ titleTag = 'h3',
24
25
  alignContent = 'left',
25
26
  children,
26
27
  requiredCharAmount = 5,
@@ -97,6 +98,7 @@ export const BaseConfirmation: FC<ConfirmationProps> = ({
97
98
  const contextValue: TConfirmationContext = {
98
99
  hideCountdownSection,
99
100
  alignContent,
101
+ titleTag,
100
102
  texts: { ...defaultTexts, ...restProps.texts },
101
103
  state,
102
104
  screen,
@@ -119,10 +121,7 @@ export const BaseConfirmation: FC<ConfirmationProps> = ({
119
121
  onFatalErrorOkButtonClick: handleFatalErrorOkButtonClick,
120
122
  };
121
123
 
122
- const customScreen = useMemo(
123
- () => getScreensMap && getScreensMap(confirmationScreens),
124
- [getScreensMap],
125
- );
124
+ const customScreen = useMemo(() => getScreensMap?.(confirmationScreens), [getScreensMap]);
126
125
 
127
126
  const screensMap = customScreen || confirmationScreens;
128
127
 
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
 
3
3
  .component {
4
4
  width: 100%;
@@ -1,4 +1,4 @@
1
- import React, { FC } from 'react';
1
+ import React, { type FC } from 'react';
2
2
 
3
3
  import styles from './index.module.css';
4
4
 
@@ -1,4 +1,4 @@
1
- @import '@alfalab/core-components-vars/src/index.css';
1
+ @import '@alfalab/core-components-vars/src/no-typography-index.css';
2
2
 
3
3
  .circle {
4
4
  fill: transparent;
@@ -1,4 +1,4 @@
1
- import React, { FC, ReactNode } from 'react';
1
+ import React, { type FC, type ReactNode } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { TitleDesktop } from '@alfalab/core-components-typography';
@@ -15,12 +15,18 @@ export type HeaderProps = {
15
15
  * Отображать в мобильной версии экран компонента
16
16
  */
17
17
  mobile?: boolean;
18
+
19
+ /**
20
+ * HTML тег для заголовка
21
+ * @default 'h3'
22
+ */
23
+ titleTag?: 'h1' | 'h2' | 'h3' | 'h4' | 'h5' | 'h6';
18
24
  };
19
25
 
20
- export const Header: FC<HeaderProps> = ({ mobile, children }) => (
26
+ export const Header: FC<HeaderProps> = ({ mobile, children, titleTag = 'h3' }) => (
21
27
  <TitleDesktop
22
28
  className={cn(styles.header, styles.typography, { [styles.typographyMobile]: mobile })}
23
- tag='h3'
29
+ tag={titleTag}
24
30
  color='primary'
25
31
  >
26
32
  {children}
@@ -1,4 +1,4 @@
1
- import React, { FC, useContext } from 'react';
1
+ import React, { type FC, useContext } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { Button } from '@alfalab/core-components-button';
@@ -17,12 +17,14 @@ export type FatalErrorProps = {
17
17
  };
18
18
 
19
19
  export const FatalError: FC<FatalErrorProps> = ({ mobile }) => {
20
- const { alignContent, texts, onFatalErrorOkButtonClick, breakpoint, client } =
20
+ const { alignContent, titleTag, texts, onFatalErrorOkButtonClick, breakpoint, client } =
21
21
  useContext(ConfirmationContext);
22
22
 
23
23
  return (
24
24
  <div className={cn(styles.component, styles[alignContent])}>
25
- <Header mobile={mobile}>{texts.fatalErrorTitle}</Header>
25
+ <Header mobile={mobile} titleTag={titleTag}>
26
+ {texts.fatalErrorTitle}
27
+ </Header>
26
28
 
27
29
  <Text
28
30
  view='primary-medium'
@@ -1,4 +1,4 @@
1
- import React, { FC, useContext } from 'react';
1
+ import React, { type FC, useContext } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { Button } from '@alfalab/core-components-button';
@@ -19,7 +19,7 @@ export type HintProps = {
19
19
  };
20
20
 
21
21
  export const Hint: FC<HintProps> = ({ mobile }) => {
22
- const { alignContent, texts, onChangeScreen, onChangeState, breakpoint, client } =
22
+ const { alignContent, titleTag, texts, onChangeScreen, onChangeState, breakpoint, client } =
23
23
  useContext(ConfirmationContext);
24
24
 
25
25
  const { domesticPhone = '', internationalPhone = '', hintButton } = texts;
@@ -31,7 +31,9 @@ export const Hint: FC<HintProps> = ({ mobile }) => {
31
31
 
32
32
  return (
33
33
  <div className={cn(styles.component, styles[alignContent])}>
34
- <Header mobile={mobile}>{texts.hintTitle}</Header>
34
+ <Header mobile={mobile} titleTag={titleTag}>
35
+ {texts.hintTitle}
36
+ </Header>
35
37
 
36
38
  <Text
37
39
  view='primary-medium'
@@ -1,10 +1,13 @@
1
- import React, { FC, useCallback, useContext, useEffect, useRef, useState } from 'react';
1
+ import React, { type FC, useCallback, useContext, useEffect, useRef, useState } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { ButtonMobile } from '@alfalab/core-components-button/mobile';
5
5
  import { CodeInputDesktop } from '@alfalab/core-components-code-input/desktop';
6
6
  import { CodeInputMobile } from '@alfalab/core-components-code-input/mobile';
7
- import { BaseCodeInputProps, CustomInputRef } from '@alfalab/core-components-code-input/shared';
7
+ import {
8
+ type BaseCodeInputProps,
9
+ type CustomInputRef,
10
+ } from '@alfalab/core-components-code-input/shared';
8
11
  import { Link } from '@alfalab/core-components-link';
9
12
  import { Text } from '@alfalab/core-components-typography';
10
13
  import { useLayoutEffect_SAFE_FOR_SSR, usePrevious } from '@alfalab/hooks';
@@ -29,6 +32,7 @@ export const Initial: FC<InitialProps> = ({ mobile }) => {
29
32
  const {
30
33
  state,
31
34
  alignContent,
35
+ titleTag,
32
36
  texts,
33
37
  requiredCharAmount,
34
38
  timeLeft,
@@ -169,7 +173,9 @@ export const Initial: FC<InitialProps> = ({ mobile }) => {
169
173
 
170
174
  return (
171
175
  <div className={cn(styles.component, styles[alignContent])}>
172
- <Header mobile={mobile}>{texts.title}</Header>
176
+ <Header mobile={mobile} titleTag={titleTag}>
177
+ {texts.title}
178
+ </Header>
173
179
 
174
180
  {phone ? (
175
181
  <Text
@@ -1,4 +1,4 @@
1
- import React, { FC, Fragment, ReactNode, useContext } from 'react';
1
+ import React, { type FC, Fragment, type ReactNode, useContext } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { Button } from '@alfalab/core-components-button';
@@ -1,4 +1,4 @@
1
- import React, { FC, useContext, useEffect } from 'react';
1
+ import React, { type FC, useContext, useEffect } from 'react';
2
2
  import cn from 'classnames';
3
3
 
4
4
  import { Text } from '@alfalab/core-components-typography';
@@ -18,8 +18,14 @@ export type TempBlockProps = {
18
18
  };
19
19
 
20
20
  export const TempBlock: FC<TempBlockProps> = ({ mobile }) => {
21
- const { alignContent, texts, tempBlockDuration, onChangeScreen, onTempBlockFinished } =
22
- useContext(ConfirmationContext);
21
+ const {
22
+ alignContent,
23
+ titleTag,
24
+ texts,
25
+ tempBlockDuration,
26
+ onChangeScreen,
27
+ onTempBlockFinished,
28
+ } = useContext(ConfirmationContext);
23
29
 
24
30
  const [timeLeft, startTimer] = useCountdown(tempBlockDuration);
25
31
 
@@ -35,7 +41,9 @@ export const TempBlock: FC<TempBlockProps> = ({ mobile }) => {
35
41
 
36
42
  return (
37
43
  <div className={cn(styles.component, styles[alignContent])}>
38
- <Header mobile={mobile}>{texts.tempBlockTitle}</Header>
44
+ <Header mobile={mobile} titleTag={titleTag}>
45
+ {texts.tempBlockTitle}
46
+ </Header>
39
47
 
40
48
  <Text
41
49
  view='primary-medium'