@megafon/ui-shared 5.10.2 → 5.12.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 (46) hide show
  1. package/CHANGELOG.md +30 -0
  2. package/dist/es/components/BenefitsIcons/BenefitsIcons.d.ts +4 -0
  3. package/dist/es/components/BenefitsIcons/BenefitsIcons.js +25 -6
  4. package/dist/es/components/BenefitsIcons/BenefitsIconsTile.js +24 -10
  5. package/dist/es/components/BenefitsIcons/types.d.ts +12 -0
  6. package/dist/es/components/ImageBanner/ImageBanner.css +3 -0
  7. package/dist/es/components/ImageBanner/ImageBanner.d.ts +7 -0
  8. package/dist/es/components/ImageBanner/ImageBanner.js +15 -7
  9. package/dist/es/components/Instructions/Instructions.css +176 -39
  10. package/dist/es/components/Instructions/Instructions.d.ts +9 -0
  11. package/dist/es/components/Instructions/Instructions.js +35 -21
  12. package/dist/es/components/Instructions/img/iphone15.png +0 -0
  13. package/dist/es/components/Instructions/img/laptop-new.png +0 -0
  14. package/dist/es/components/StoreBanner/StoreBanner.css +13 -9
  15. package/dist/es/components/StoreBanner/StoreBanner.d.ts +6 -5
  16. package/dist/es/components/StoreBanner/StoreBanner.js +5 -3
  17. package/dist/es/components/StoreBanner/doc/img/android-screen.png +0 -0
  18. package/dist/es/components/StoreBanner/doc/img/screen.png +0 -0
  19. package/dist/es/components/StoreBanner/img/android.png +0 -0
  20. package/dist/es/components/StoreBanner/img/new-iphone.png +0 -0
  21. package/dist/es/helpers/getColumnConfig.d.ts +1 -1
  22. package/dist/lib/components/BenefitsIcons/BenefitsIcons.d.ts +4 -0
  23. package/dist/lib/components/BenefitsIcons/BenefitsIcons.js +24 -5
  24. package/dist/lib/components/BenefitsIcons/BenefitsIconsTile.js +26 -11
  25. package/dist/lib/components/BenefitsIcons/types.d.ts +12 -0
  26. package/dist/lib/components/ImageBanner/ImageBanner.css +3 -0
  27. package/dist/lib/components/ImageBanner/ImageBanner.d.ts +7 -0
  28. package/dist/lib/components/ImageBanner/ImageBanner.js +15 -7
  29. package/dist/lib/components/Instructions/Instructions.css +176 -39
  30. package/dist/lib/components/Instructions/Instructions.d.ts +9 -0
  31. package/dist/lib/components/Instructions/Instructions.js +39 -22
  32. package/dist/lib/components/Instructions/img/iphone15.png +0 -0
  33. package/dist/lib/components/Instructions/img/laptop-new.png +0 -0
  34. package/dist/lib/components/StoreBanner/StoreBanner.css +13 -9
  35. package/dist/lib/components/StoreBanner/StoreBanner.d.ts +6 -5
  36. package/dist/lib/components/StoreBanner/StoreBanner.js +5 -3
  37. package/dist/lib/components/StoreBanner/doc/img/android-screen.png +0 -0
  38. package/dist/lib/components/StoreBanner/doc/img/screen.png +0 -0
  39. package/dist/lib/components/StoreBanner/img/android.png +0 -0
  40. package/dist/lib/components/StoreBanner/img/new-iphone.png +0 -0
  41. package/dist/lib/helpers/getColumnConfig.d.ts +1 -1
  42. package/package.json +3 -3
  43. package/dist/es/components/StoreBanner/doc/img/iphone-12-screen.png +0 -0
  44. package/dist/es/components/StoreBanner/doc/img/new-iphone-screen.png +0 -0
  45. package/dist/lib/components/StoreBanner/doc/img/iphone-12-screen.png +0 -0
  46. package/dist/lib/components/StoreBanner/doc/img/new-iphone-screen.png +0 -0
package/CHANGELOG.md CHANGED
@@ -3,6 +3,36 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ # [5.12.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.11.0...@megafon/ui-shared@5.12.0) (2024-06-10)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **imagebanner:** fix ad block position ([6f958b4](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/6f958b477cc936bf969e244a07dc0ed63279484b))
12
+
13
+
14
+ ### Features
15
+
16
+ * **benefitsicons:** add dataAttrs and classes ([815db75](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/815db75aece85803a0055a531bd92db49d514652))
17
+ * **benefitsicons:** review fixes ([229c5f7](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/229c5f73fa9609495a146cfa562db2478752c3b4))
18
+ * **imagebanner:** add classes props for ImageBanner ([42d2738](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/42d2738a6c77bf780b9a47fd27353083d0f7d7a0))
19
+ * **insctructions:** add new views ([4470aec](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/4470aec0acaf59ae2d3b0979c59ec7760237221c))
20
+
21
+
22
+
23
+
24
+
25
+ # [5.11.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.10.2...@megafon/ui-shared@5.11.0) (2024-06-03)
26
+
27
+
28
+ ### Features
29
+
30
+ * **storebanner:** change device mask ([4d52954](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/4d52954459b944d100c6cd657808dd23ab7bb674))
31
+
32
+
33
+
34
+
35
+
6
36
  ## [5.10.2](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.10.1...@megafon/ui-shared@5.10.2) (2024-05-27)
7
37
 
8
38
  **Note:** Version bump only for package @megafon/ui-shared
@@ -2,6 +2,10 @@ import * as React from 'react';
2
2
  import { IconPosition, IBenefit, BackgroundType } from './types';
3
3
  import './style/BenefitsIcons.less';
4
4
  export interface IBenefitsIcons {
5
+ /** Дополнительные data атрибуты к внутренним элементам */
6
+ dataAttrs?: {
7
+ root?: Record<string, string>;
8
+ };
5
9
  /** Ссылка на корневой элемент */
6
10
  rootRef?: React.Ref<HTMLDivElement>;
7
11
  /** Позиция иконки */
@@ -4,7 +4,7 @@ import "core-js/modules/es.array.map.js";
4
4
  import "core-js/modules/es.object.values.js";
5
5
  import * as React from 'react';
6
6
  import { Grid, GridColumn } from '@megafon/ui-core';
7
- import { cnCreate, breakpoints } from '@megafon/ui-helpers';
7
+ import { cnCreate, breakpoints, filterDataAttrs } from '@megafon/ui-helpers';
8
8
  import throttle from 'lodash.throttle';
9
9
  import PropTypes from 'prop-types';
10
10
  import throttleTime from "../../constants/throttleTime";
@@ -16,7 +16,8 @@ var testIdPrefix = 'BenefitsIcons';
16
16
  var cn = cnCreate('mfui-benefits-icons');
17
17
 
18
18
  var BenefitsIcons = function BenefitsIcons(_ref) {
19
- var rootRef = _ref.rootRef,
19
+ var dataAttrs = _ref.dataAttrs,
20
+ rootRef = _ref.rootRef,
20
21
  _ref$iconPosition = _ref.iconPosition,
21
22
  iconPosition = _ref$iconPosition === void 0 ? 'left-top' : _ref$iconPosition,
22
23
  _ref$background = _ref.background,
@@ -59,13 +60,13 @@ var BenefitsIcons = function BenefitsIcons(_ref) {
59
60
  window.removeEventListener('resize', resizeHandlerThrottled);
60
61
  };
61
62
  }, [iconPosition, inOneColumn, resizeHandler]);
62
- return /*#__PURE__*/React.createElement("div", {
63
+ return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
63
64
  className: cn({
64
65
  'one-column': inOneColumn,
65
66
  background: background
66
67
  }, [className, classes.root]),
67
68
  ref: rootRef
68
- }, /*#__PURE__*/React.createElement("div", {
69
+ }), /*#__PURE__*/React.createElement("div", {
69
70
  className: cn('inner')
70
71
  }, /*#__PURE__*/React.createElement(Grid, {
71
72
  className: classes.grid,
@@ -83,7 +84,9 @@ var BenefitsIcons = function BenefitsIcons(_ref) {
83
84
  var title = _ref2.title,
84
85
  text = _ref2.text,
85
86
  icon = _ref2.icon,
86
- alt = _ref2.alt;
87
+ alt = _ref2.alt,
88
+ itemClasses = _ref2.classes,
89
+ itemDataAttrs = _ref2.dataAttrs;
87
90
  var columnConfig = inOneColumn ? getOneColumnConfig(iconPosition) : getMultiColumnConfig(iconPosition, items.length, i);
88
91
  return /*#__PURE__*/React.createElement(GridColumn, _extends({
89
92
  className: cn('column', [classes.gridColumn]),
@@ -95,6 +98,8 @@ var BenefitsIcons = function BenefitsIcons(_ref) {
95
98
  }
96
99
  }, columnConfig), /*#__PURE__*/React.createElement(BenefitsIconsTile, {
97
100
  className: cn('tile', [classes.item]),
101
+ classes: itemClasses,
102
+ dataAttrs: itemDataAttrs,
98
103
  title: title,
99
104
  text: text,
100
105
  icon: icon,
@@ -106,6 +111,9 @@ var BenefitsIcons = function BenefitsIcons(_ref) {
106
111
  };
107
112
 
108
113
  BenefitsIcons.propTypes = {
114
+ dataAttrs: PropTypes.shape({
115
+ root: PropTypes.objectOf(PropTypes.string.isRequired)
116
+ }),
109
117
  rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
110
118
  current: PropTypes.elementType
111
119
  }), PropTypes.any])]),
@@ -113,9 +121,20 @@ BenefitsIcons.propTypes = {
113
121
  background: PropTypes.oneOf(Object.values(BackgroundEnum)),
114
122
  inOneColumn: PropTypes.bool,
115
123
  items: PropTypes.arrayOf(PropTypes.shape({
124
+ dataAttrs: PropTypes.shape({
125
+ root: PropTypes.objectOf(PropTypes.string.isRequired)
126
+ }),
127
+ classes: PropTypes.shape({
128
+ root: PropTypes.string,
129
+ icon: PropTypes.string,
130
+ title: PropTypes.string,
131
+ text: PropTypes.string,
132
+ contentWrapper: PropTypes.string
133
+ }),
116
134
  title: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
117
135
  text: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
118
- icon: PropTypes.node.isRequired
136
+ icon: PropTypes.node.isRequired,
137
+ alt: PropTypes.string
119
138
  }).isRequired).isRequired,
120
139
  className: PropTypes.string,
121
140
  classes: PropTypes.shape({
@@ -1,7 +1,8 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
1
2
  import "core-js/modules/es.object.values.js";
2
3
  import * as React from 'react';
3
4
  import { Header } from '@megafon/ui-core';
4
- import { cnCreate } from '@megafon/ui-helpers';
5
+ import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
5
6
  import PropTypes from 'prop-types';
6
7
  import { IconPositionEnum, BackgroundEnum } from "./types";
7
8
  import "./style/BenefitsIconsTile.css";
@@ -9,7 +10,10 @@ var testIdPrefix = 'BenefitsIconsTile';
9
10
  var cn = cnCreate('mfui-benefits-icons-tile');
10
11
 
11
12
  var BenefitsIconsTile = function BenefitsIconsTile(_ref) {
12
- var title = _ref.title,
13
+ var dataAttrs = _ref.dataAttrs,
14
+ _ref$classes = _ref.classes,
15
+ classes = _ref$classes === void 0 ? {} : _ref$classes,
16
+ title = _ref.title,
13
17
  text = _ref.text,
14
18
  icon = _ref.icon,
15
19
  iconPosition = _ref.iconPosition,
@@ -20,7 +24,7 @@ var BenefitsIconsTile = function BenefitsIconsTile(_ref) {
20
24
  var renderIcon = function renderIcon() {
21
25
  if (typeof icon === 'string') {
22
26
  return /*#__PURE__*/React.createElement("img", {
23
- className: cn('img-icon'),
27
+ className: cn('img-icon', [classes.icon]),
24
28
  src: icon,
25
29
  alt: alt,
26
30
  "data-testid": "".concat(testIdPrefix, "-img")
@@ -28,32 +32,42 @@ var BenefitsIconsTile = function BenefitsIconsTile(_ref) {
28
32
  }
29
33
 
30
34
  return /*#__PURE__*/React.createElement("div", {
31
- className: cn('svg-icon'),
35
+ className: cn('svg-icon', [classes.icon]),
32
36
  "data-testid": "".concat(testIdPrefix, "-svg")
33
37
  }, icon);
34
38
  };
35
39
 
36
- return /*#__PURE__*/React.createElement("div", {
40
+ return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
37
41
  className: cn({
38
42
  'icon-position': iconPosition,
39
43
  background: background,
40
44
  image: typeof icon === 'string'
41
- }, [className]),
45
+ }, [className, classes.root]),
42
46
  "data-testid": "".concat(testIdPrefix, "-root")
43
- }, /*#__PURE__*/React.createElement("div", {
47
+ }), /*#__PURE__*/React.createElement("div", {
44
48
  className: cn('inner')
45
49
  }, renderIcon(), /*#__PURE__*/React.createElement("div", {
46
- className: cn('content-wrapper')
50
+ className: cn('content-wrapper', [classes.contentWrapper])
47
51
  }, title && /*#__PURE__*/React.createElement(Header, {
48
- className: cn('title'),
52
+ className: cn('title', [classes.title]),
49
53
  as: "h5"
50
54
  }, title), text && /*#__PURE__*/React.createElement("div", {
51
- className: cn('content')
55
+ className: cn('content', [classes.text])
52
56
  }, text))));
53
57
  };
54
58
 
55
59
  BenefitsIconsTile.propTypes = {
60
+ dataAttrs: PropTypes.shape({
61
+ root: PropTypes.objectOf(PropTypes.string.isRequired)
62
+ }),
56
63
  className: PropTypes.string,
64
+ classes: PropTypes.shape({
65
+ root: PropTypes.string,
66
+ icon: PropTypes.string,
67
+ title: PropTypes.string,
68
+ text: PropTypes.string,
69
+ contentWrapper: PropTypes.string
70
+ }),
57
71
  title: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
58
72
  text: PropTypes.oneOfType([PropTypes.string, PropTypes.node, PropTypes.arrayOf(PropTypes.node)]),
59
73
  iconPosition: PropTypes.oneOf(Object.values(IconPositionEnum)),
@@ -1,6 +1,18 @@
1
1
  /// <reference types="react" />
2
2
  declare type TGridSizeValues = '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12';
3
3
  export interface IBenefit {
4
+ /** Дополнительные data атрибуты к внутренним элементам */
5
+ dataAttrs?: {
6
+ root?: Record<string, string>;
7
+ };
8
+ /** Дополнительные классы для корневого и внутренних элементов */
9
+ classes?: {
10
+ root?: string;
11
+ icon?: string;
12
+ title?: string;
13
+ text?: string;
14
+ contentWrapper?: string;
15
+ };
4
16
  /** Заголовок бенефита */
5
17
  title?: string | React.ReactNode | React.ReactNode[];
6
18
  /** Основной текст в бенефите */
@@ -177,6 +177,9 @@ h5 {
177
177
  gap: 8px;
178
178
  margin-bottom: 16px;
179
179
  }
180
+ .mfui-image-banner__ad-block {
181
+ margin: 0 0 16px auto;
182
+ }
180
183
  @media screen and (min-width: 1024px) {
181
184
  .mfui-image-banner__ad-block {
182
185
  position: absolute;
@@ -43,6 +43,13 @@ export interface IImageBannerProps {
43
43
  classes?: {
44
44
  root?: string;
45
45
  image?: string;
46
+ title?: string;
47
+ description?: string;
48
+ cost?: string;
49
+ badgesContainer?: string;
50
+ badges?: string;
51
+ badge?: string;
52
+ adBlock?: string;
46
53
  };
47
54
  /** Ссылка на корневой элемент */
48
55
  rootRef?: Ref<HTMLDivElement>;
@@ -92,32 +92,33 @@ var ImageBanner = function ImageBanner(_ref2) {
92
92
  var navTheme = getTheme(backgroundColor);
93
93
  var hasImage = !!(imageMobile || imageMobile2x || imageDesktop || imageDesktop2x);
94
94
  var renderBadges = !!badges.length && /*#__PURE__*/React.createElement("div", {
95
- className: cn('badges')
95
+ className: cn('badges', [classes.badges])
96
96
  }, badges.map(function (_ref3) {
97
97
  var text = _ref3.text,
98
98
  iconType = _ref3.iconType;
99
99
  return /*#__PURE__*/React.createElement(PriceBadge, {
100
+ className: classes.badge,
100
101
  theme: navTheme,
101
102
  iconType: iconType,
102
103
  key: text
103
104
  }, text);
104
105
  }));
105
106
  var renderAdBlock = !!adBlock && /*#__PURE__*/React.createElement("div", {
106
- className: cn('ad-block')
107
+ className: cn('ad-block', [classes.adBlock])
107
108
  }, adBlock);
108
109
  var renderContent = /*#__PURE__*/React.createElement("div", {
109
110
  className: cn('content')
110
111
  }, /*#__PURE__*/React.createElement("div", {
111
- className: cn('badges-container')
112
+ className: cn('badges-container', [classes.badgesContainer])
112
113
  }, renderBadges, renderAdBlock), !!title && /*#__PURE__*/React.createElement(Header, {
113
- className: cn('title'),
114
+ className: cn('title', [classes.title]),
114
115
  color: "inherit"
115
116
  }, typeof title === 'string' ? convert(title, titleConvertConfig) : title), !!description && /*#__PURE__*/React.createElement(Header, {
116
- className: cn('description'),
117
+ className: cn('description', [classes.description]),
117
118
  as: "h5",
118
119
  color: "inherit"
119
120
  }, typeof description === 'string' ? convert(description, titleConvertConfig) : description), !!cost && /*#__PURE__*/React.createElement("div", {
120
- className: cn('cost')
121
+ className: cn('cost', [classes.cost])
121
122
  }, convert(cost, typographyConfig)), !!children && !!React.Children.count(children) && /*#__PURE__*/React.createElement("div", {
122
123
  className: cn('children')
123
124
  }, children));
@@ -158,7 +159,14 @@ ImageBanner.propTypes = {
158
159
  className: PropTypes.string,
159
160
  classes: PropTypes.shape({
160
161
  root: PropTypes.string,
161
- image: PropTypes.string
162
+ image: PropTypes.string,
163
+ title: PropTypes.string,
164
+ description: PropTypes.string,
165
+ cost: PropTypes.string,
166
+ badgesContainer: PropTypes.string,
167
+ badges: PropTypes.string,
168
+ badge: PropTypes.string,
169
+ adBlock: PropTypes.string
162
170
  }),
163
171
  rootRef: PropTypes.oneOfType([PropTypes.func, PropTypes.oneOfType([PropTypes.shape({
164
172
  current: PropTypes.elementType
@@ -11,7 +11,7 @@ h5 {
11
11
  }
12
12
  @media screen and (min-width: 768px) and (max-width: 1023px) {
13
13
  .mfui-instructions__title_resolution_mobile {
14
- margin-bottom: 56px;
14
+ margin-bottom: 40px;
15
15
  }
16
16
  }
17
17
  @media screen and (min-width: 1024px) {
@@ -59,6 +59,9 @@ h5 {
59
59
  align-items: unset;
60
60
  }
61
61
  }
62
+ .mfui-instructions__text {
63
+ margin-top: 48px;
64
+ }
62
65
  @media screen and (max-width: 1023px) {
63
66
  .mfui-instructions__text {
64
67
  text-align: center;
@@ -72,12 +75,7 @@ h5 {
72
75
  }
73
76
  @media screen and (max-width: 1023px) {
74
77
  .mfui-instructions__picture {
75
- margin: 0 auto 32px;
76
- }
77
- }
78
- @media screen and (min-width: 768px) and (max-width: 1023px) {
79
- .mfui-instructions__picture {
80
- margin: 0 auto 48px;
78
+ margin: 0 auto;
81
79
  }
82
80
  }
83
81
  @media screen and (min-width: 1024px) {
@@ -235,6 +233,35 @@ h5 {
235
233
  border-radius: 20px;
236
234
  overflow: hidden;
237
235
  }
236
+ .mfui-instructions_mask_iphone-15 .mfui-instructions__img-wrapper {
237
+ height: 487px;
238
+ }
239
+ @media screen and (max-width: 1023px) {
240
+ .mfui-instructions_mask_iphone-15 .mfui-instructions__img-wrapper:before {
241
+ display: none;
242
+ }
243
+ }
244
+ .mfui-instructions_mask_iphone-15 .mfui-instructions__device-screen {
245
+ position: relative;
246
+ z-index: 2;
247
+ width: 100%;
248
+ height: 486px;
249
+ margin: auto;
250
+ background: url('./img/iphone15.png') 50% no-repeat;
251
+ background-size: contain;
252
+ }
253
+ .mfui-instructions_mask_iphone-15 .mfui-instructions__swiper {
254
+ position: absolute;
255
+ top: 10px;
256
+ right: 0;
257
+ left: 0;
258
+ z-index: 1;
259
+ width: 217px;
260
+ height: 468px;
261
+ margin: auto;
262
+ border-radius: 20px;
263
+ overflow: hidden;
264
+ }
238
265
  .mfui-instructions_mask_android-cropped .mfui-instructions__img-wrapper {
239
266
  height: 420px;
240
267
  min-height: 420px;
@@ -324,7 +351,10 @@ h5 {
324
351
  }
325
352
  @media screen and (min-width: 768px) and (max-width: 1023px) {
326
353
  .mfui-instructions_mask_laptop .mfui-instructions__img-wrapper {
327
- height: 283px;
354
+ height: 0;
355
+ padding-bottom: 53.4%;
356
+ background: url('./img/laptop.png') 50% 0% no-repeat;
357
+ background-size: 100%;
328
358
  }
329
359
  }
330
360
  @media screen and (min-width: 480px) and (max-width: 767px) {
@@ -410,11 +440,95 @@ h5 {
410
440
  transform: translate(-50%, -53%);
411
441
  }
412
442
  }
443
+ @media screen and (max-width: 1023px) {
444
+ .mfui-instructions_mask_laptop-new .mfui-instructions__img-wrapper {
445
+ height: 0;
446
+ padding-bottom: 58.9%;
447
+ background: url('./img/laptop-new.png') 50% 0% no-repeat;
448
+ background-size: 100%;
449
+ }
450
+ }
451
+ .mfui-instructions_mask_laptop-new .mfui-instructions__img-wrapper:before {
452
+ display: none;
453
+ }
454
+ .mfui-instructions_mask_laptop-new .mfui-instructions__device-screen {
455
+ position: relative;
456
+ width: 100%;
457
+ height: 100%;
458
+ margin: auto;
459
+ background: url('./img/laptop-new.png') 50% 0% no-repeat;
460
+ background-size: 100%;
461
+ }
462
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
463
+ .mfui-instructions_mask_laptop-new .mfui-instructions__device-screen {
464
+ width: 530px;
465
+ }
466
+ }
467
+ @media screen and (min-width: 480px) and (max-width: 767px) {
468
+ .mfui-instructions_mask_laptop-new .mfui-instructions__device-screen {
469
+ width: 450px;
470
+ }
471
+ }
472
+ @media screen and (max-width: 479px) {
473
+ .mfui-instructions_mask_laptop-new .mfui-instructions__device-screen {
474
+ width: 270px;
475
+ }
476
+ }
477
+ @media screen and (min-width: 1024px) {
478
+ .mfui-instructions_mask_laptop-new .mfui-instructions__device-screen {
479
+ background: url('./img/laptop-new.png') 50% no-repeat;
480
+ background-size: contain;
481
+ }
482
+ }
483
+ .mfui-instructions_mask_laptop-new .mfui-instructions__swiper {
484
+ position: absolute;
485
+ top: 4px;
486
+ right: 0;
487
+ left: 50%;
488
+ width: 78%;
489
+ margin: auto;
490
+ overflow: hidden;
491
+ -webkit-transform: translate(-49.5%, 0);
492
+ transform: translate(-49.5%, 0);
493
+ }
494
+ @media screen and (min-width: 480px) and (max-width: 767px) {
495
+ .mfui-instructions_mask_laptop-new .mfui-instructions__swiper {
496
+ top: 7px;
497
+ max-width: 415px;
498
+ }
499
+ }
500
+ @media screen and (max-width: 479px) {
501
+ .mfui-instructions_mask_laptop-new .mfui-instructions__swiper {
502
+ max-width: 302px;
503
+ }
504
+ }
505
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
506
+ .mfui-instructions_mask_laptop-new .mfui-instructions__swiper {
507
+ top: 12px;
508
+ }
509
+ }
510
+ @media screen and (min-width: 1024px) {
511
+ .mfui-instructions_mask_laptop-new .mfui-instructions__swiper {
512
+ top: 50%;
513
+ -webkit-transform: translate(-49.5%, -55%);
514
+ transform: translate(-49.5%, -55%);
515
+ }
516
+ }
413
517
  .mfui-instructions__slide {
414
518
  -ms-flex-negative: 0;
415
519
  flex-shrink: 0;
416
520
  height: 100%;
417
521
  }
522
+ @media screen and (max-width: 767px) {
523
+ .mfui-instructions__articles {
524
+ margin-top: 24px;
525
+ }
526
+ }
527
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
528
+ .mfui-instructions__articles {
529
+ margin-top: 32px;
530
+ }
531
+ }
418
532
  @media screen and (min-width: 1024px) {
419
533
  .mfui-instructions__articles {
420
534
  -webkit-box-ordinal-group: 2;
@@ -433,9 +547,6 @@ h5 {
433
547
  padding: 0;
434
548
  list-style-type: none;
435
549
  }
436
- .mfui-instructions__articles-list_text-after {
437
- margin-bottom: 48px;
438
- }
439
550
  @media screen and (min-width: 1024px) {
440
551
  .mfui-instructions__articles-list_mobile {
441
552
  display: none;
@@ -476,8 +587,7 @@ h5 {
476
587
  margin-bottom: 0;
477
588
  }
478
589
  }
479
- .mfui-instructions__articles-item-dot,
480
- .mfui-instructions__articles-dot {
590
+ .mfui-instructions__articles-item-dot {
481
591
  position: absolute;
482
592
  display: inline-block;
483
593
  width: 40px;
@@ -492,13 +602,11 @@ h5 {
492
602
  cursor: pointer;
493
603
  }
494
604
  @media screen and (max-width: 479px) {
495
- .mfui-instructions__articles-item-dot,
496
- .mfui-instructions__articles-dot {
605
+ .mfui-instructions__articles-item-dot {
497
606
  min-width: 40px;
498
607
  }
499
608
  }
500
- .mfui-instructions__articles-item-dot:before,
501
- .mfui-instructions__articles-dot:before {
609
+ .mfui-instructions__articles-item-dot:before {
502
610
  content: '';
503
611
  position: absolute;
504
612
  top: 50%;
@@ -509,8 +617,7 @@ h5 {
509
617
  -webkit-transition: all 0.3s ease;
510
618
  transition: all 0.3s ease;
511
619
  }
512
- .mfui-instructions__articles-item-dot-number,
513
- .mfui-instructions__articles-dot-number {
620
+ .mfui-instructions__articles-item-dot-number {
514
621
  position: relative;
515
622
  }
516
623
  .mfui-instructions__articles-item-title {
@@ -537,44 +644,51 @@ h5 {
537
644
  padding: 0;
538
645
  list-style-type: none;
539
646
  }
540
- .mfui-instructions__articles-dots_text-after {
541
- margin-bottom: 48px;
542
- }
543
- .mfui-instructions__articles-dot {
544
- position: relative;
545
- }
546
647
  @media screen and (max-width: 767px) {
547
- .mfui-instructions__articles-dot {
548
- margin-right: 20px;
648
+ .mfui-instructions__articles-dots {
649
+ margin-top: 16px;
549
650
  }
550
651
  }
551
652
  @media screen and (min-width: 768px) and (max-width: 1023px) {
552
- .mfui-instructions__articles-dot {
553
- margin-right: 40px;
653
+ .mfui-instructions__articles-dots {
654
+ margin-top: 24px;
655
+ }
656
+ }
657
+ @media screen and (min-width: 1024px) {
658
+ .mfui-instructions__articles-dots {
659
+ display: none;
554
660
  }
555
661
  }
662
+ .mfui-instructions__articles-dots_text-after {
663
+ margin-bottom: 48px;
664
+ }
665
+ .mfui-instructions__articles-dot {
666
+ position: relative;
667
+ display: inline-block;
668
+ width: 8px;
669
+ height: 8px;
670
+ margin-right: 12px;
671
+ border-radius: 4px;
672
+ background: var(--spbSky2);
673
+ cursor: pointer;
674
+ }
556
675
  .mfui-instructions__articles-dot:hover,
557
676
  .mfui-instructions__articles-dot_active {
558
- color: var(--stcWhite);
559
- }
560
- .mfui-instructions__articles-dot:hover:before,
561
- .mfui-instructions__articles-dot_active:before {
562
- top: 0;
563
- right: 0;
564
- bottom: 0;
565
- left: 0;
566
677
  background: var(--brandGreen);
567
678
  }
679
+ .mfui-instructions__articles-dot_active {
680
+ width: 20px;
681
+ }
568
682
  .mfui-instructions__articles-dot:last-child {
569
683
  margin-right: 0;
570
684
  }
571
685
  .mfui-instructions__articles-title-block {
686
+ margin: 0 auto;
572
687
  text-align: center;
573
688
  }
574
689
  @media screen and (max-width: 767px) {
575
690
  .mfui-instructions__articles-title-block {
576
691
  width: 55%;
577
- margin: 0 auto 24px;
578
692
  }
579
693
  }
580
694
  @media screen and (max-width: 479px) {
@@ -585,7 +699,6 @@ h5 {
585
699
  @media screen and (min-width: 768px) and (max-width: 1023px) {
586
700
  .mfui-instructions__articles-title-block {
587
701
  width: 55%;
588
- margin: 0 auto 32px;
589
702
  }
590
703
  }
591
704
  .mfui-instructions__articles-title {
@@ -651,3 +764,27 @@ h5 {
651
764
  line-height: 12px;
652
765
  text-align: center;
653
766
  }
767
+ .mfui-instructions_reversed .mfui-instructions__title_resolution_mobile {
768
+ margin-bottom: 16px;
769
+ }
770
+ @media screen and (max-width: 1023px) {
771
+ .mfui-instructions_reversed .mfui-instructions__picture {
772
+ max-height: 100%;
773
+ margin-bottom: 0;
774
+ }
775
+ }
776
+ @media screen and (max-width: 1023px) {
777
+ .mfui-instructions_reversed .mfui-instructions__articles {
778
+ display: none;
779
+ }
780
+ }
781
+ @media screen and (max-width: 767px) {
782
+ .mfui-instructions_reversed .mfui-instructions__articles-title-block {
783
+ margin-bottom: 32px;
784
+ }
785
+ }
786
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
787
+ .mfui-instructions_reversed .mfui-instructions__articles-title-block {
788
+ margin-bottom: 40px;
789
+ }
790
+ }
@@ -17,7 +17,9 @@ export declare const pictureMaskTypes: {
17
17
  readonly BLACK_IPHONE: "black-iphone";
18
18
  readonly WHITE_IPHONE: "white-iphone";
19
19
  readonly LAPTOP: "laptop";
20
+ readonly LAPTOP_NEW: "laptop-new";
20
21
  readonly IPHONE_12: "iphone-12";
22
+ readonly IPHONE_15: "iphone-15";
21
23
  readonly IPHONE_CROPPED: "iphone-cropped";
22
24
  readonly NONE: "none";
23
25
  };
@@ -28,11 +30,16 @@ export declare const arrowTheme: {
28
30
  readonly PURPLE: "purple";
29
31
  readonly DARK: "dark";
30
32
  };
33
+ export declare const elementOrderTypes: {
34
+ readonly DEFAULT: "default";
35
+ readonly REVERSED: "reversed";
36
+ };
31
37
  declare type PictureAlignTypesType = typeof pictureAlignTypes[keyof typeof pictureAlignTypes];
32
38
  declare type PictureVerticalAlignTypesType = typeof pictureVerticalAlignTypes[keyof typeof pictureVerticalAlignTypes];
33
39
  declare type PictureMaskTypesType = typeof pictureMaskTypes[keyof typeof pictureMaskTypes];
34
40
  declare type PictureBackgroundColorsType = typeof pictureBackgroundColorTypes[keyof typeof pictureBackgroundColorTypes];
35
41
  declare type ArrowThemeType = typeof arrowTheme[keyof typeof arrowTheme];
42
+ declare type ElementOrderType = typeof elementOrderTypes[keyof typeof elementOrderTypes];
36
43
  export declare type InstructionItemType = {
37
44
  title: string | React.ReactNode | React.ReactNode[];
38
45
  mediaUrl: string;
@@ -87,6 +94,8 @@ export interface IInstructionsProps {
87
94
  showArrows?: boolean;
88
95
  /** Цветовая тема стрелок навигации */
89
96
  arrowsTheme?: ArrowThemeType;
97
+ /** Вертикальный порядок элементов на мобильных устройствах и планшетах */
98
+ elementOrder?: ElementOrderType;
90
99
  /** Ref на swiper */
91
100
  getSwiper?: (instance: SwiperCore) => void;
92
101
  }