@megafon/ui-shared 6.0.0 → 6.1.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (38) hide show
  1. package/CHANGELOG.md +23 -0
  2. package/dist/es/components/BlogBox/BlogBox.css +92 -0
  3. package/dist/es/components/BlogBox/BlogBox.d.ts +28 -0
  4. package/dist/es/components/BlogBox/BlogBox.js +101 -0
  5. package/dist/es/components/BlogBox/components/BlogBoxTile.css +197 -0
  6. package/dist/es/components/BlogBox/components/BlogBoxTile.d.ts +9 -0
  7. package/dist/es/components/BlogBox/components/BlogBoxTile.js +67 -0
  8. package/dist/es/components/BlogBox/types.d.ts +37 -0
  9. package/dist/es/components/BlogBox/types.js +0 -0
  10. package/dist/es/components/Instructions/Instructions.css +38 -1
  11. package/dist/es/components/Instructions/Instructions.d.ts +2 -0
  12. package/dist/es/components/Instructions/Instructions.js +13 -8
  13. package/dist/es/helpers/getColumnConfig.d.ts +1 -1
  14. package/dist/es/helpers/setRelAttribute.d.ts +1 -0
  15. package/dist/es/helpers/setRelAttribute.js +11 -0
  16. package/dist/es/hooks/useResolutions.d.ts +7 -0
  17. package/dist/es/hooks/useResolutions.js +60 -0
  18. package/dist/es/index.d.ts +2 -0
  19. package/dist/es/index.js +2 -0
  20. package/dist/lib/components/BlogBox/BlogBox.css +92 -0
  21. package/dist/lib/components/BlogBox/BlogBox.d.ts +28 -0
  22. package/dist/lib/components/BlogBox/BlogBox.js +120 -0
  23. package/dist/lib/components/BlogBox/components/BlogBoxTile.css +197 -0
  24. package/dist/lib/components/BlogBox/components/BlogBoxTile.d.ts +9 -0
  25. package/dist/lib/components/BlogBox/components/BlogBoxTile.js +80 -0
  26. package/dist/lib/components/BlogBox/types.d.ts +37 -0
  27. package/dist/lib/components/BlogBox/types.js +1 -0
  28. package/dist/lib/components/Instructions/Instructions.css +38 -1
  29. package/dist/lib/components/Instructions/Instructions.d.ts +2 -0
  30. package/dist/lib/components/Instructions/Instructions.js +13 -8
  31. package/dist/lib/helpers/getColumnConfig.d.ts +1 -1
  32. package/dist/lib/helpers/setRelAttribute.d.ts +1 -0
  33. package/dist/lib/helpers/setRelAttribute.js +20 -0
  34. package/dist/lib/hooks/useResolutions.d.ts +7 -0
  35. package/dist/lib/hooks/useResolutions.js +75 -0
  36. package/dist/lib/index.d.ts +2 -0
  37. package/dist/lib/index.js +16 -0
  38. package/package.json +3 -3
package/CHANGELOG.md CHANGED
@@ -3,6 +3,29 @@
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
+ ## [6.1.1](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@6.1.0...@megafon/ui-shared@6.1.1) (2024-08-20)
7
+
8
+
9
+ ### Bug Fixes
10
+
11
+ * **instructions:** fix tag render for items with mobile numeration ([b5ff10d](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/b5ff10d77907e77e2fbba6a93802bc85e5208082))
12
+
13
+
14
+
15
+
16
+
17
+ # [6.1.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@6.0.0...@megafon/ui-shared@6.1.0) (2024-08-19)
18
+
19
+
20
+ ### Features
21
+
22
+ * **blogbox:** create component BlogBox ([11d9f2c](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/11d9f2cfaa885b6788a8ad3486bd997faa788698))
23
+ * **instructions:** add optional mobile numeration ([c7d3525](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/commit/c7d3525aae2b4bb4851ddafd3ce9c9afbecaaee6))
24
+
25
+
26
+
27
+
28
+
6
29
  # [6.0.0](https://hq-gitlab.megafon.ru/site-portal/services/megafon-ui/compare/@megafon/ui-shared@5.17.1...@megafon/ui-shared@6.0.0) (2024-08-05)
7
30
 
8
31
 
@@ -0,0 +1,92 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5 {
6
+ margin: 0;
7
+ }
8
+ .mfui-blog-box {
9
+ display: -webkit-box;
10
+ display: -ms-flexbox;
11
+ display: flex;
12
+ -webkit-box-orient: vertical;
13
+ -webkit-box-direction: normal;
14
+ -ms-flex-direction: column;
15
+ flex-direction: column;
16
+ -webkit-box-align: center;
17
+ -ms-flex-align: center;
18
+ align-items: center;
19
+ }
20
+ @media screen and (min-width: 1024px) {
21
+ .mfui-blog-box__list {
22
+ display: grid;
23
+ grid-template-columns: 1fr 1fr;
24
+ -webkit-column-gap: 20px;
25
+ -moz-column-gap: 20px;
26
+ column-gap: 20px;
27
+ row-gap: 24px;
28
+ }
29
+ }
30
+ .mfui-blog-box__list_row {
31
+ grid-template-columns: repeat(6, 1fr);
32
+ }
33
+ .mfui-blog-box__list_row .mfui-blog-box__item {
34
+ grid-column-end: span 2;
35
+ }
36
+ .mfui-blog-box__list_row-size_1 .mfui-blog-box__item {
37
+ grid-column-start: 3;
38
+ }
39
+ .mfui-blog-box__list_row-size_2 .mfui-blog-box__item:first-child {
40
+ grid-column-start: 2;
41
+ }
42
+ .mfui-blog-box__item_view_thumbnail {
43
+ margin-top: 16px;
44
+ }
45
+ @media screen and (min-width: 1024px) {
46
+ .mfui-blog-box__item_view_thumbnail {
47
+ grid-column-start: 1;
48
+ grid-column-end: 2;
49
+ margin-top: 0;
50
+ }
51
+ }
52
+ .mfui-blog-box__item_view_full {
53
+ margin-bottom: 24px;
54
+ }
55
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
56
+ .mfui-blog-box__item_view_full {
57
+ margin-bottom: 32px;
58
+ }
59
+ }
60
+ @media screen and (min-width: 1024px) {
61
+ .mfui-blog-box__item_view_full {
62
+ grid-row-start: 1;
63
+ grid-row-end: 4;
64
+ grid-column-start: 2;
65
+ grid-column-end: 3;
66
+ margin-bottom: 0;
67
+ }
68
+ }
69
+ .mfui-blog-box__button-wrapper {
70
+ margin-top: 32px;
71
+ }
72
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
73
+ .mfui-blog-box__button-wrapper {
74
+ margin-top: 40px;
75
+ }
76
+ }
77
+ @media screen and (min-width: 1024px) {
78
+ .mfui-blog-box__button-wrapper {
79
+ margin-top: 56px;
80
+ }
81
+ }
82
+ .mfui-blog-box__button {
83
+ min-width: 208px;
84
+ }
85
+ .mfui-blog-box_align-left {
86
+ -webkit-box-align: start;
87
+ -ms-flex-align: start;
88
+ align-items: flex-start;
89
+ }
90
+ .mfui-blog-box_align-left .mfui-blog-box__item:first-child {
91
+ grid-column-start: 1;
92
+ }
@@ -0,0 +1,28 @@
1
+ import React from 'react';
2
+ import { ButtonType, TileDataType } from './types';
3
+ import './BlogBox.less';
4
+ export interface IBlogBox {
5
+ /** Статьи (не более 4, остальные будут проигнорированы) */
6
+ items: TileDataType[];
7
+ /** Кнопка */
8
+ button?: ButtonType;
9
+ /** Выравнивание по левому краю (при количестве статей менее трех) */
10
+ hasAlignLeft?: boolean;
11
+ /** Дополнительный класс для компонента */
12
+ className?: string;
13
+ /** Дополнительные классы для внутренних элементов */
14
+ classes?: {
15
+ root?: string;
16
+ item?: string;
17
+ button?: string;
18
+ };
19
+ /** Дополнительные data атрибуты к внутренним элементам */
20
+ dataAttrs?: {
21
+ root?: Record<string, string>;
22
+ list?: Record<string, string>;
23
+ item?: Record<string, string>;
24
+ button?: Record<string, string>;
25
+ };
26
+ }
27
+ declare const BlogBox: React.FC<IBlogBox>;
28
+ export default BlogBox;
@@ -0,0 +1,101 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import "core-js/modules/es.array.slice.js";
3
+ import "core-js/modules/es.array.map.js";
4
+ import "core-js/modules/es.array.concat.js";
5
+ import React from 'react';
6
+ import { Button } from '@megafon/ui-core';
7
+ import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
8
+ import PropTypes from 'prop-types';
9
+ import useResolutions from "../../hooks/useResolutions";
10
+ import BlogBoxTile from "./components/BlogBoxTile";
11
+ import "./BlogBox.css";
12
+ var maxItemsCount = 4;
13
+ var cn = cnCreate('mfui-blog-box');
14
+
15
+ var BlogBox = function BlogBox(_ref) {
16
+ var items = _ref.items,
17
+ button = _ref.button,
18
+ _ref$hasAlignLeft = _ref.hasAlignLeft,
19
+ hasAlignLeft = _ref$hasAlignLeft === void 0 ? false : _ref$hasAlignLeft,
20
+ className = _ref.className,
21
+ classes = _ref.classes,
22
+ dataAttrs = _ref.dataAttrs;
23
+
24
+ var _useResolutions = useResolutions(),
25
+ isDesktop = _useResolutions.isDesktop;
26
+
27
+ var visibleItems = items.slice(0, maxItemsCount);
28
+ var itemsCount = visibleItems.length;
29
+ var isRow = isDesktop && itemsCount < maxItemsCount;
30
+ var isAlignLeft = isRow && hasAlignLeft;
31
+
32
+ var getView = function getView(isCompact, i) {
33
+ if (isCompact) {
34
+ return 'compact';
35
+ }
36
+
37
+ if (i === 0) {
38
+ return 'full';
39
+ }
40
+
41
+ return 'thumbnail';
42
+ };
43
+
44
+ return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
45
+ className: cn({
46
+ 'align-left': isAlignLeft
47
+ }, [className, classes === null || classes === void 0 ? void 0 : classes.root])
48
+ }), /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.list), {
49
+ className: cn('list', {
50
+ row: isRow,
51
+ 'row-size': isRow && "".concat(itemsCount)
52
+ })
53
+ }), visibleItems.map(function (item, i) {
54
+ var view = getView(isRow, i);
55
+ return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, i + 1), {
56
+ className: cn('item', {
57
+ view: view
58
+ }, [classes === null || classes === void 0 ? void 0 : classes.item]),
59
+ key: "".concat(item.title, "_").concat(i)
60
+ }), /*#__PURE__*/React.createElement(BlogBoxTile, _extends({}, item, {
61
+ view: view
62
+ })));
63
+ })), (button === null || button === void 0 ? void 0 : button.title) && /*#__PURE__*/React.createElement("div", {
64
+ className: cn('button-wrapper')
65
+ }, /*#__PURE__*/React.createElement(Button, {
66
+ dataAttrs: {
67
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
68
+ },
69
+ className: cn('button', [classes === null || classes === void 0 ? void 0 : classes.button]),
70
+ href: button.href,
71
+ target: button.target,
72
+ rel: button.rel
73
+ }, button.title)));
74
+ };
75
+
76
+ BlogBox.propTypes = {
77
+ className: PropTypes.string,
78
+ classes: PropTypes.objectOf(PropTypes.string),
79
+ dataAttrs: PropTypes.objectOf(PropTypes.object),
80
+ items: PropTypes.arrayOf(PropTypes.shape({
81
+ date: PropTypes.string.isRequired,
82
+ title: PropTypes.string.isRequired,
83
+ image: PropTypes.shape({
84
+ srcMobile: PropTypes.string.isRequired,
85
+ srcDesktop: PropTypes.string.isRequired,
86
+ srcThumbnail: PropTypes.string.isRequired,
87
+ alt: PropTypes.string
88
+ }).isRequired,
89
+ href: PropTypes.string.isRequired,
90
+ target: PropTypes.oneOf(['_self', '_blank', '_parent', '_top']),
91
+ rel: PropTypes.string
92
+ }).isRequired).isRequired,
93
+ button: PropTypes.shape({
94
+ title: PropTypes.string.isRequired,
95
+ href: PropTypes.string.isRequired,
96
+ target: PropTypes.oneOf(['_self', '_blank', '_parent', '_top']),
97
+ rel: PropTypes.string
98
+ }),
99
+ hasAlignLeft: PropTypes.bool
100
+ };
101
+ export default BlogBox;
@@ -0,0 +1,197 @@
1
+ h1,
2
+ h2,
3
+ h3,
4
+ h4,
5
+ h5 {
6
+ margin: 0;
7
+ }
8
+ .mfui-blog-box-tile {
9
+ position: relative;
10
+ display: block;
11
+ color: var(--content);
12
+ text-decoration: none;
13
+ }
14
+ .mfui-blog-box-tile:hover {
15
+ text-decoration: none;
16
+ }
17
+ .mfui-blog-box-tile:hover .mfui-blog-box-tile__title {
18
+ color: var(--brandGreen);
19
+ }
20
+ .mfui-blog-box-tile__image {
21
+ width: 100%;
22
+ height: 100%;
23
+ border-radius: 24px;
24
+ -o-object-fit: cover;
25
+ object-fit: cover;
26
+ vertical-align: top;
27
+ }
28
+ .mfui-blog-box-tile__picture {
29
+ display: block;
30
+ }
31
+ .mfui-blog-box-tile__date {
32
+ margin-bottom: 4px;
33
+ color: var(--spbSky3);
34
+ }
35
+ .mfui-blog-box-tile__title {
36
+ /* stylelint-disable-next-line value-no-vendor-prefix */
37
+ display: -webkit-box;
38
+ overflow: hidden;
39
+ white-space: normal;
40
+ text-overflow: ellipsis;
41
+ -webkit-box-orient: vertical;
42
+ -webkit-line-clamp: 4;
43
+ -webkit-transition: color 0.3s;
44
+ transition: color 0.3s;
45
+ }
46
+ .mfui-blog-box-tile_view_thumbnail {
47
+ display: -webkit-box;
48
+ display: -ms-flexbox;
49
+ display: flex;
50
+ gap: 20px;
51
+ }
52
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__picture {
53
+ -ms-flex-negative: 0;
54
+ flex-shrink: 0;
55
+ width: 133px;
56
+ height: 102px;
57
+ }
58
+ @media screen and (min-width: 1280px) {
59
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__picture {
60
+ width: 170px;
61
+ height: 130px;
62
+ }
63
+ }
64
+ @media screen and (min-width: 1440px) {
65
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__picture {
66
+ width: 233px;
67
+ height: 170px;
68
+ }
69
+ }
70
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__content {
71
+ -ms-flex-item-align: center;
72
+ align-self: center;
73
+ }
74
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__date {
75
+ font-size: 12px;
76
+ line-height: 18px;
77
+ }
78
+ @media screen and (min-width: 1280px) {
79
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__date {
80
+ font-size: 15px;
81
+ line-height: 24px;
82
+ }
83
+ }
84
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__title {
85
+ font-weight: 500;
86
+ font-size: 18px;
87
+ line-height: 24px;
88
+ letter-spacing: 0.5px;
89
+ }
90
+ @media screen and (min-width: 1280px) {
91
+ .mfui-blog-box-tile_view_thumbnail .mfui-blog-box-tile__title {
92
+ font-size: 20px;
93
+ line-height: 28px;
94
+ }
95
+ }
96
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__picture {
97
+ height: 358px;
98
+ }
99
+ @media screen and (min-width: 1280px) {
100
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__picture {
101
+ height: 438px;
102
+ }
103
+ }
104
+ @media screen and (min-width: 1440px) {
105
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__picture {
106
+ height: 558px;
107
+ }
108
+ }
109
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__content {
110
+ position: absolute;
111
+ right: 8px;
112
+ bottom: 8px;
113
+ left: 8px;
114
+ padding: 16px;
115
+ border-radius: 24px;
116
+ background-color: var(--base);
117
+ }
118
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
119
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__content {
120
+ padding: 24px;
121
+ }
122
+ }
123
+ @media screen and (min-width: 768px) {
124
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__content {
125
+ right: 12px;
126
+ bottom: 12px;
127
+ left: 12px;
128
+ }
129
+ }
130
+ @media screen and (min-width: 1024px) and (max-width: 1279px) {
131
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__content {
132
+ padding: 16px;
133
+ }
134
+ }
135
+ @media screen and (min-width: 1280px) {
136
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__content {
137
+ padding: 24px;
138
+ }
139
+ }
140
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__title {
141
+ font-weight: 600;
142
+ font-size: 22px;
143
+ line-height: 28px;
144
+ letter-spacing: 0.5px;
145
+ }
146
+ @media screen and (min-width: 768px) and (max-width: 1023px) {
147
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__title {
148
+ font-size: 26px;
149
+ line-height: 32px;
150
+ }
151
+ }
152
+ @media screen and (min-width: 1024px) {
153
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__title {
154
+ font-size: 28px;
155
+ line-height: 36px;
156
+ }
157
+ }
158
+ @media screen and (min-width: 1280px) {
159
+ .mfui-blog-box-tile_view_full .mfui-blog-box-tile__title {
160
+ font-size: 32px;
161
+ line-height: 40px;
162
+ }
163
+ }
164
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__picture {
165
+ height: 233px;
166
+ }
167
+ @media screen and (min-width: 1280px) {
168
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__picture {
169
+ height: 288px;
170
+ }
171
+ }
172
+ @media screen and (min-width: 1440px) {
173
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__picture {
174
+ height: 367px;
175
+ }
176
+ }
177
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__content {
178
+ position: absolute;
179
+ right: 12px;
180
+ bottom: 12px;
181
+ left: 12px;
182
+ padding: 16px;
183
+ border-radius: 24px;
184
+ background-color: var(--base);
185
+ }
186
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__title {
187
+ font-weight: 500;
188
+ font-size: 18px;
189
+ line-height: 24px;
190
+ letter-spacing: 0.5px;
191
+ }
192
+ @media screen and (min-width: 1280px) {
193
+ .mfui-blog-box-tile_view_compact .mfui-blog-box-tile__title {
194
+ font-size: 20px;
195
+ line-height: 28px;
196
+ }
197
+ }
@@ -0,0 +1,9 @@
1
+ import React from 'react';
2
+ import { TileDataType, TileViewType } from '../types';
3
+ import './BlogBoxTile.less';
4
+ declare type TileSettingsType = {
5
+ view: TileViewType;
6
+ };
7
+ export declare type BlogBoxTileType = TileDataType & TileSettingsType;
8
+ declare const BlogBoxTile: React.FC<BlogBoxTileType>;
9
+ export default BlogBoxTile;
@@ -0,0 +1,67 @@
1
+ import React from 'react';
2
+ import { breakpoints, cnCreate } from '@megafon/ui-helpers';
3
+ import { setRelAttribute } from "../../../helpers/setRelAttribute";
4
+ import useResolutions from "../../../hooks/useResolutions";
5
+ import "./BlogBoxTile.css";
6
+ var cn = cnCreate('mfui-blog-box-tile');
7
+
8
+ var BlogBoxTile = function BlogBoxTile(_ref) {
9
+ var date = _ref.date,
10
+ title = _ref.title,
11
+ href = _ref.href,
12
+ target = _ref.target,
13
+ rel = _ref.rel,
14
+ _ref$image = _ref.image,
15
+ srcMobile = _ref$image.srcMobile,
16
+ srcDesktop = _ref$image.srcDesktop,
17
+ srcThumbnail = _ref$image.srcThumbnail,
18
+ _ref$image$alt = _ref$image.alt,
19
+ alt = _ref$image$alt === void 0 ? 'image' : _ref$image$alt,
20
+ view = _ref.view;
21
+
22
+ var _useResolutions = useResolutions(),
23
+ isMobile = _useResolutions.isMobile;
24
+
25
+ var isViewThumbnail = view === 'thumbnail';
26
+ var currentRel = setRelAttribute(rel, target);
27
+
28
+ var renderImage = function renderImage() {
29
+ if (isViewThumbnail) {
30
+ return isMobile ? null : /*#__PURE__*/React.createElement("picture", {
31
+ className: cn('picture')
32
+ }, /*#__PURE__*/React.createElement("img", {
33
+ className: cn('image'),
34
+ src: srcThumbnail,
35
+ alt: alt
36
+ }));
37
+ }
38
+
39
+ return /*#__PURE__*/React.createElement("picture", {
40
+ className: cn('picture')
41
+ }, /*#__PURE__*/React.createElement("source", {
42
+ media: "(min-width: ".concat(breakpoints.DESKTOP_SMALL_START, "px)"),
43
+ srcSet: srcDesktop
44
+ }), /*#__PURE__*/React.createElement("img", {
45
+ className: cn('image'),
46
+ src: srcMobile,
47
+ alt: alt
48
+ }));
49
+ };
50
+
51
+ return /*#__PURE__*/React.createElement("a", {
52
+ className: cn({
53
+ view: view
54
+ }),
55
+ href: href,
56
+ target: target,
57
+ rel: currentRel
58
+ }, renderImage(), /*#__PURE__*/React.createElement("div", {
59
+ className: cn('content')
60
+ }, /*#__PURE__*/React.createElement("div", {
61
+ className: cn('date')
62
+ }, date), /*#__PURE__*/React.createElement("div", {
63
+ className: cn('title')
64
+ }, title)));
65
+ };
66
+
67
+ export default BlogBoxTile;
@@ -0,0 +1,37 @@
1
+ declare type TargetType = '_self' | '_blank' | '_parent' | '_top';
2
+ export declare type ButtonType = {
3
+ /** Название */
4
+ title: string;
5
+ /** Ссылка */
6
+ href: string;
7
+ /** Атрибут ссылки target */
8
+ target?: TargetType;
9
+ /** Атрибут ссылки rel */
10
+ rel?: string;
11
+ };
12
+ export declare type ImageType = {
13
+ /** Изображение на разрешении экрана 0-1023 */
14
+ srcMobile: string;
15
+ /** Изображение на разрешении экрана 1024+ */
16
+ srcDesktop: string;
17
+ /** Миниатюра */
18
+ srcThumbnail: string;
19
+ /** Значение тега alt для изображения */
20
+ alt?: string;
21
+ };
22
+ export declare type TileDataType = {
23
+ /** Дата */
24
+ date: string;
25
+ /** Заголовок */
26
+ title: string;
27
+ /** Изображение */
28
+ image: ImageType;
29
+ /** Ссылка */
30
+ href: string;
31
+ /** Атрибут ссылки target */
32
+ target?: TargetType;
33
+ /** Атрибут ссылки rel */
34
+ rel?: string;
35
+ };
36
+ export declare type TileViewType = 'full' | 'thumbnail' | 'compact';
37
+ export {};
File without changes
@@ -698,13 +698,50 @@ h5 {
698
698
  }
699
699
  @media screen and (min-width: 768px) and (max-width: 1023px) {
700
700
  .mfui-instructions__articles-title-block {
701
- width: 55%;
701
+ width: 100%;
702
+ max-width: 530px;
702
703
  }
703
704
  }
705
+ .mfui-instructions__articles-title-block_with-numeration {
706
+ text-align: left;
707
+ }
704
708
  .mfui-instructions__articles-title {
705
709
  font-size: 15px;
706
710
  line-height: 24px;
707
711
  font-weight: 400;
712
+ display: -webkit-box;
713
+ display: -ms-flexbox;
714
+ display: flex;
715
+ -webkit-box-align: start;
716
+ -ms-flex-align: start;
717
+ align-items: flex-start;
718
+ }
719
+ .mfui-instructions__articles-num {
720
+ font-size: 15px;
721
+ line-height: 24px;
722
+ font-weight: 500;
723
+ display: -webkit-box;
724
+ display: -ms-flexbox;
725
+ display: flex;
726
+ -ms-flex-negative: 0;
727
+ flex-shrink: 0;
728
+ -webkit-box-align: center;
729
+ -ms-flex-align: center;
730
+ align-items: center;
731
+ -webkit-box-pack: center;
732
+ -ms-flex-pack: center;
733
+ justify-content: center;
734
+ width: 40px;
735
+ height: 40px;
736
+ margin-right: 16px;
737
+ border-radius: 50%;
738
+ color: var(--stcWhite);
739
+ background-color: var(--brandGreen);
740
+ }
741
+ @media screen and (min-width: 1024px) {
742
+ .mfui-instructions__articles-num {
743
+ display: none;
744
+ }
708
745
  }
709
746
  .mfui-instructions__picture_background_spbSky0 {
710
747
  border-radius: 12px;
@@ -96,6 +96,8 @@ export interface IInstructionsProps {
96
96
  arrowsTheme?: ArrowThemeType;
97
97
  /** Вертикальный порядок элементов на мобильных устройствах и планшетах */
98
98
  elementOrder?: ElementOrderType;
99
+ /** Показать нумерацию пунктов инструкции на мобильных устройствах */
100
+ showMobileNumeration?: boolean;
99
101
  /** Ref на swiper */
100
102
  getSwiper?: (instance: SwiperCore) => void;
101
103
  }
@@ -80,6 +80,7 @@ var Instructions = function Instructions(_ref) {
80
80
  arrowsTheme = _ref$arrowsTheme === void 0 ? arrowTheme.DARK : _ref$arrowsTheme,
81
81
  _ref$elementOrder = _ref.elementOrder,
82
82
  elementOrder = _ref$elementOrder === void 0 ? 'default' : _ref$elementOrder,
83
+ showMobileNumeration = _ref.showMobileNumeration,
83
84
  children = _ref.children;
84
85
 
85
86
  var _React$useState = React.useState(),
@@ -249,7 +250,7 @@ var Instructions = function Instructions(_ref) {
249
250
  className: cn('articles-item-dot-number')
250
251
  }, i + 1)), /*#__PURE__*/React.createElement("div", {
251
252
  className: cn('articles-item-title', [desktopItemTitle])
252
- }, itemTitle))
253
+ }, convert(itemTitle, textConvertConfig)))
253
254
  );
254
255
  }));
255
256
  }, [desktopInstructionItem, desktopItemTitle, getActiveCustomClass, handleArticleClick, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, instructionItem, instructionItems, slideIndex, text]);
@@ -261,18 +262,22 @@ var Instructions = function Instructions(_ref) {
261
262
  "data-testid": "".concat(testIdPrefix, "-articles-list-mobile")
262
263
  }, /*#__PURE__*/React.createElement("div", {
263
264
  className: cn('articles-title-block', {
264
- reversed: isMobileReversed
265
+ reversed: isMobileReversed,
266
+ 'with-numeration': showMobileNumeration
265
267
  })
266
268
  }, instructionItems.map(function (_ref6, i) {
267
269
  var itemTitle = _ref6.title;
268
- return slideIndex === i && /*#__PURE__*/React.createElement("div", _extends({
270
+ return slideIndex === i && /*#__PURE__*/React.createElement("div", {
269
271
  key: i,
270
- "data-index": i
271
- }, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, i + 1), {
272
- className: cn('articles-title', [mobileItemTitle])
273
- }), itemTitle);
272
+ "data-index": i,
273
+ className: cn('articles-title')
274
+ }, showMobileNumeration && /*#__PURE__*/React.createElement("span", {
275
+ className: cn('articles-num')
276
+ }, i + 1), /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, i + 1), {
277
+ className: cn('articles-title-text', [mobileItemTitle])
278
+ }), convert(itemTitle, textConvertConfig)));
274
279
  })));
275
- }, [dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, instructionItems, mobileItemTitle, slideIndex, isMobileReversed]);
280
+ }, [dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.mobileItemText, instructionItems, mobileItemTitle, slideIndex, isMobileReversed, showMobileNumeration]);
276
281
  var renderArrows = React.useCallback(function () {
277
282
  return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(NavArrow, {
278
283
  dataAttrs: {
@@ -1,2 +1,2 @@
1
1
  import React from 'react';
2
- export declare const getColumnConfig: (isFullWidth: boolean) => Pick<React.PropsWithChildren<import("../../../ui-core/dist/lib/components/Grid/GridColumn").IGridColumn>, "all" | "wide" | "mobile" | "desktop" | "tablet">;
2
+ export declare const getColumnConfig: (isFullWidth: boolean) => Pick<React.PropsWithChildren<import("@megafon/ui-core/dist/lib/components/Grid/GridColumn").IGridColumn>, "all" | "wide" | "mobile" | "desktop" | "tablet">;
@@ -0,0 +1 @@
1
+ export declare const setRelAttribute: (rel?: string | undefined, target?: "_self" | "_blank" | "_parent" | "_top" | undefined) => string | undefined;