ecomlab-components-next 0.1.313 → 0.1.316

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.
@@ -0,0 +1,51 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = void 0;
8
+ var _react = _interopRequireDefault(require("react"));
9
+ require("./CardsWithButtonV2.scss");
10
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
11
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
+ var CardsWithButtonV2 = function CardsWithButtonV2(_ref) {
13
+ var title = _ref.title,
14
+ items = _ref.items,
15
+ _ref$btnText = _ref.btnText,
16
+ btnText = _ref$btnText === void 0 ? 'Подключиться' : _ref$btnText,
17
+ onBtnClick = _ref.onBtnClick;
18
+ (0, _useReveal["default"])();
19
+ return /*#__PURE__*/_react["default"].createElement("section", {
20
+ className: "cards-with-btn-glow"
21
+ }, /*#__PURE__*/_react["default"].createElement("div", {
22
+ className: "cards-with-btn-glow__inner"
23
+ }, title && /*#__PURE__*/_react["default"].createElement("h2", {
24
+ className: "cards-with-btn-glow__title reveal"
25
+ }, title), /*#__PURE__*/_react["default"].createElement("div", {
26
+ className: "cards-with-btn-glow__content"
27
+ }, items === null || items === void 0 ? void 0 : items.map(function (_ref2, index) {
28
+ var title = _ref2.title,
29
+ description = _ref2.description;
30
+ return /*#__PURE__*/_react["default"].createElement("div", {
31
+ className: "cards-with-btn-glow__card reveal",
32
+ key: index,
33
+ style: {
34
+ '--index': index
35
+ }
36
+ }, /*#__PURE__*/_react["default"].createElement("h3", {
37
+ className: "cards-with-btn-glow__card-title"
38
+ }, title), /*#__PURE__*/_react["default"].createElement("p", {
39
+ className: "cards-with-btn-glow__card-description"
40
+ }, description), /*#__PURE__*/_react["default"].createElement("button", {
41
+ className: "cards-with-btn-glow__card-btn",
42
+ onClick: function onClick() {
43
+ return onBtnClick === null || onBtnClick === void 0 ? void 0 : onBtnClick();
44
+ }
45
+ }, btnText, /*#__PURE__*/_react["default"].createElement("span", {
46
+ className: "cards-with-btn-glow__card-btn-arrow",
47
+ "aria-hidden": "true"
48
+ }, "\u2192")));
49
+ }))));
50
+ };
51
+ var _default = exports["default"] = CardsWithButtonV2;
@@ -0,0 +1,221 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ @import '../variables.scss';
3
+
4
+ .cards-with-btn-glow {
5
+ font-family: 'Manrope', sans-serif;
6
+ background: $bg;
7
+ width: 100%;
8
+ padding: 96px 40px;
9
+
10
+ * {
11
+ font-family: 'Manrope', 'Golos Text', sans-serif !important;
12
+ }
13
+
14
+ &__inner {
15
+ max-width: 1280px;
16
+ margin: 0 auto;
17
+ }
18
+
19
+ &__title {
20
+ text-align: center;
21
+ font-size: 30px;
22
+ font-weight: 800;
23
+ letter-spacing: -0.5px;
24
+ color: $text;
25
+ margin: 0 0 56px 0;
26
+ }
27
+
28
+ &__content {
29
+ display: grid;
30
+ grid-template-columns: repeat(3, 1fr);
31
+ gap: 24px;
32
+ }
33
+
34
+ &__card {
35
+ background: $white;
36
+ border: 1px solid $border;
37
+ border-radius: 20px;
38
+ padding: 32px 28px;
39
+ display: flex;
40
+ flex-direction: column;
41
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
42
+ position: relative;
43
+ overflow: hidden;
44
+
45
+ // Мягкое свечение в правом верхнем углу
46
+ &::before {
47
+ content: '';
48
+ position: absolute;
49
+ inset: 0;
50
+ z-index: 0;
51
+ pointer-events: none;
52
+ background: radial-gradient(circle at 100% 0, rgba($green, 0.2), transparent 58%);
53
+ }
54
+
55
+ // Акцентная метка сверху
56
+ &::after {
57
+ content: '';
58
+ position: absolute;
59
+ top: 0;
60
+ left: 28px;
61
+ width: 36px;
62
+ height: 3px;
63
+ background: $green;
64
+ border-radius: 0 0 3px 3px;
65
+ pointer-events: none;
66
+ transition: width 0.3s ease;
67
+ }
68
+
69
+ // Контент поверх свечения
70
+ > * {
71
+ position: relative;
72
+ z-index: 1;
73
+ }
74
+
75
+ &:hover {
76
+ transform: translateY(-4px);
77
+ box-shadow: 0 12px 32px rgba($green, 0.14);
78
+
79
+ &::after {
80
+ width: 48px;
81
+ }
82
+
83
+ .cards-with-btn-glow__card-btn {
84
+ color: $green-dark;
85
+ }
86
+
87
+ .cards-with-btn-glow__card-btn-arrow {
88
+ transform: translateX(5px);
89
+ }
90
+ }
91
+ }
92
+
93
+ &__card-icon {
94
+ width: 56px;
95
+ height: 56px;
96
+ background: $green-light-bg;
97
+ border-radius: 14px;
98
+ display: flex;
99
+ align-items: center;
100
+ justify-content: center;
101
+ margin-bottom: 20px;
102
+ color: $green;
103
+
104
+ svg {
105
+ width: 28px;
106
+ height: 28px;
107
+ }
108
+ }
109
+
110
+ &__card-title {
111
+ font-size: 18px;
112
+ font-weight: 700;
113
+ color: $text;
114
+ margin: 0 0 12px 0;
115
+ line-height: 1.4;
116
+ }
117
+
118
+ &__card-description {
119
+ font-size: 14px;
120
+ color: $muted;
121
+ line-height: 1.6;
122
+ margin: 0 0 24px 0;
123
+ flex-grow: 1;
124
+ }
125
+
126
+ // Кнопка: капс с точкой
127
+ &__card-btn {
128
+ background: none;
129
+ border: none;
130
+ padding: 0;
131
+ font-size: 11.5px;
132
+ font-weight: 800;
133
+ text-transform: uppercase;
134
+ letter-spacing: 0.09em;
135
+ color: $green;
136
+ cursor: pointer;
137
+ font-family: inherit;
138
+ display: inline-flex;
139
+ align-items: center;
140
+ gap: 10px;
141
+ transition: color 0.2s ease;
142
+ width: fit-content;
143
+
144
+ // точка слева
145
+ &::before {
146
+ content: '';
147
+ width: 7px;
148
+ height: 7px;
149
+ border-radius: 50%;
150
+ background: currentColor;
151
+ flex-shrink: 0;
152
+ }
153
+ }
154
+
155
+ // Стрелка чуть крупнее текста кнопки
156
+ &__card-btn-arrow {
157
+ font-size: 18px;
158
+ line-height: 1;
159
+ letter-spacing: 0;
160
+ transition: transform 0.2s ease;
161
+ }
162
+
163
+ @keyframes fadeUp {
164
+ from {
165
+ opacity: 0;
166
+ transform: translateY(24px);
167
+ }
168
+ to {
169
+ opacity: 1;
170
+ transform: translateY(0);
171
+ }
172
+ }
173
+ }
174
+
175
+ // Планшет (до 1100px)
176
+ @media (max-width: 1100px) {
177
+ .cards-with-btn-glow {
178
+ padding: 72px 24px;
179
+
180
+ &__content {
181
+ grid-template-columns: repeat(2, 1fr);
182
+ gap: 20px;
183
+ }
184
+
185
+ &__title {
186
+ font-size: 26px;
187
+ margin-bottom: 40px;
188
+ }
189
+ }
190
+ }
191
+
192
+ // Мобильная версия (до 500px) - 1 колонка
193
+ @media (max-width: 500px) {
194
+ .cards-with-btn-glow {
195
+
196
+ &__content {
197
+ grid-template-columns: 1fr;
198
+ gap: 16px;
199
+ }
200
+
201
+ &__card {
202
+ padding: 20px 16px;
203
+
204
+ &::after {
205
+ left: 16px;
206
+ }
207
+ }
208
+ }
209
+ }
210
+
211
+ // Мобильная версия (до 430px)
212
+ @media (max-width: 430px) {
213
+ .cards-with-btn-glow {
214
+ padding: 40px 20px;
215
+
216
+ &__title {
217
+ font-size: 22px;
218
+ margin-bottom: 32px;
219
+ }
220
+ }
221
+ }
@@ -0,0 +1,146 @@
1
+ "use strict";
2
+ 'use client';
3
+
4
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports["default"] = void 0;
9
+ var _react = _interopRequireWildcard(require("react"));
10
+ var _ButtonBasicV = _interopRequireDefault(require("../../Buttons/ButtonBasicV2/ButtonBasicV2"));
11
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
12
+ var _image = _interopRequireDefault(require("next/image"));
13
+ require("./FeaturesGridV3.scss");
14
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
16
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
17
+ function _toConsumableArray(r) { return _arrayWithoutHoles(r) || _iterableToArray(r) || _unsupportedIterableToArray(r) || _nonIterableSpread(); }
18
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
19
+ function _iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
20
+ function _arrayWithoutHoles(r) { if (Array.isArray(r)) return _arrayLikeToArray(r); }
21
+ function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
22
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
23
+ function _unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return _arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? _arrayLikeToArray(r, a) : void 0; } }
24
+ function _arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
25
+ function _iterableToArrayLimit(r, l) { var t = null == r ? null : "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (null != t) { var e, n, i, u, a = [], f = !0, o = !1; try { if (i = (t = t.call(r)).next, 0 === l) { if (Object(t) !== t) return; f = !1; } else for (; !(f = (e = i.call(t)).done) && (a.push(e.value), a.length !== l); f = !0); } catch (r) { o = !0, n = r; } finally { try { if (!f && null != t["return"] && (u = t["return"](), Object(u) !== u)) return; } finally { if (o) throw n; } } return a; } }
26
+ function _arrayWithHoles(r) { if (Array.isArray(r)) return r; }
27
+ var FeaturesGridV3 = function FeaturesGridV3(_ref) {
28
+ var _window;
29
+ var _ref$list = _ref.list,
30
+ list = _ref$list === void 0 ? [] : _ref$list,
31
+ _ref$title = _ref.title,
32
+ title = _ref$title === void 0 ? '' : _ref$title,
33
+ _ref$description = _ref.description,
34
+ description = _ref$description === void 0 ? '' : _ref$description,
35
+ _ref$linkMain = _ref.linkMain,
36
+ linkMain = _ref$linkMain === void 0 ? 'https://lk.ecomru.ru' : _ref$linkMain,
37
+ _ref$onClick = _ref.onClick,
38
+ _onClick = _ref$onClick === void 0 ? false : _ref$onClick,
39
+ _ref$btnText = _ref.btnText,
40
+ btnText = _ref$btnText === void 0 ? 'Попробовать бесплатно' : _ref$btnText,
41
+ _ref$violet = _ref.violet,
42
+ violet = _ref$violet === void 0 ? false : _ref$violet,
43
+ _ref$dots = _ref.dots,
44
+ dots = _ref$dots === void 0 ? true : _ref$dots;
45
+ var blocksRef = (0, _react.useRef)([]);
46
+ var _useState = (0, _react.useState)(0),
47
+ _useState2 = _slicedToArray(_useState, 2),
48
+ maxHeight = _useState2[0],
49
+ setMaxHeight = _useState2[1];
50
+ var _useState3 = (0, _react.useState)(typeof window !== 'undefined' ? window.innerWidth : 0),
51
+ _useState4 = _slicedToArray(_useState3, 2),
52
+ windowWidth = _useState4[0],
53
+ setWindowWidth = _useState4[1];
54
+ var current_query = typeof window !== 'undefined' ? (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search : '';
55
+
56
+ // Вызываем хук для анимации при скролле
57
+ (0, _useReveal["default"])();
58
+ var syncHeight = (0, _react.useCallback)(function () {
59
+ var heights = blocksRef.current.filter(function (el) {
60
+ return el && el.offsetHeight > 0;
61
+ }).map(function (el) {
62
+ return el.offsetHeight;
63
+ });
64
+ if (heights.length > 0) {
65
+ var next = Math.max.apply(Math, _toConsumableArray(heights));
66
+ if (next !== maxHeight) setMaxHeight(next);
67
+ }
68
+ }, [maxHeight]);
69
+ (0, _react.useEffect)(function () {
70
+ [0, 100, 300].forEach(function (d) {
71
+ return setTimeout(syncHeight, d);
72
+ });
73
+ var onResize = function onResize() {
74
+ setWindowWidth(window.innerWidth);
75
+ syncHeight();
76
+ };
77
+ window.addEventListener('resize', onResize);
78
+ return function () {
79
+ return window.removeEventListener('resize', onResize);
80
+ };
81
+ }, [syncHeight]);
82
+ return /*#__PURE__*/_react["default"].createElement("section", {
83
+ className: "features-grid-v3"
84
+ }, /*#__PURE__*/_react["default"].createElement("div", {
85
+ className: "features-grid-v3__inner"
86
+ }, /*#__PURE__*/_react["default"].createElement("div", {
87
+ className: "features-grid-v3__header reveal"
88
+ }, /*#__PURE__*/_react["default"].createElement("div", {
89
+ className: "features-grid-v3__header-left"
90
+ }, title && /*#__PURE__*/_react["default"].createElement("h2", {
91
+ className: "features-grid-v3__title"
92
+ }, title), description && /*#__PURE__*/_react["default"].createElement("p", {
93
+ className: "features-grid-v3__subtitle"
94
+ }, description)), /*#__PURE__*/_react["default"].createElement(_ButtonBasicV["default"], {
95
+ className: "features-grid-v3__btn",
96
+ size: '52px',
97
+ green: !violet,
98
+ violet: violet,
99
+ onClick: function onClick() {
100
+ if (_onClick) {
101
+ _onClick();
102
+ } else {
103
+ var _window2;
104
+ (_window2 = window) === null || _window2 === void 0 || _window2.open("".concat(linkMain, "/auth").concat(current_query), '_blank');
105
+ }
106
+ },
107
+ text: btnText
108
+ })), /*#__PURE__*/_react["default"].createElement("div", {
109
+ className: "features-grid-v3__items"
110
+ }, list === null || list === void 0 ? void 0 : list.map(function (_ref2, index) {
111
+ var title = _ref2.title,
112
+ description = _ref2.description,
113
+ icon = _ref2.icon;
114
+ return /*#__PURE__*/_react["default"].createElement("div", {
115
+ key: index,
116
+ className: "features-grid-v3__card reveal ".concat(violet ? 'features-grid-v3__card--violet' : ''),
117
+ "data-index": index
118
+ }, /*#__PURE__*/_react["default"].createElement("span", {
119
+ className: "features-grid-v3__card-number",
120
+ "aria-hidden": "true"
121
+ }, String(index + 1).padStart(2, '0')), icon && /*#__PURE__*/_react["default"].createElement("div", {
122
+ className: "features-grid-v3__card-icon"
123
+ }, /*#__PURE__*/_react["default"].createElement(_image["default"], {
124
+ src: icon,
125
+ alt: "icon"
126
+ })), /*#__PURE__*/_react["default"].createElement("div", {
127
+ className: "features-grid-v3__card-heading",
128
+ ref: function ref(el) {
129
+ blocksRef.current[index] = el;
130
+ },
131
+ style: {
132
+ minHeight: windowWidth > 430 && maxHeight > 0 ? maxHeight : undefined
133
+ }
134
+ }, title), Array.isArray(description) ? /*#__PURE__*/_react["default"].createElement("ul", {
135
+ className: "features-grid-v3__card-list ".concat(dots ? 'features-grid-v3__card-list--dots' : '')
136
+ }, description.map(function (item, i) {
137
+ return /*#__PURE__*/_react["default"].createElement("li", {
138
+ key: i,
139
+ className: "features-grid-v3__card-list-item"
140
+ }, item);
141
+ })) : /*#__PURE__*/_react["default"].createElement("p", {
142
+ className: "features-grid-v3__card-text"
143
+ }, description));
144
+ }))));
145
+ };
146
+ var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(FeaturesGridV3);
@@ -0,0 +1,300 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ @import '../variables.scss';
3
+
4
+ .features-grid-v3 {
5
+ font-family: 'Manrope', sans-serif;
6
+ background: $bg;
7
+ width: 100%;
8
+ padding: 96px 40px;
9
+
10
+ * {
11
+ font-family: 'Manrope', 'Golos Text', sans-serif !important;
12
+ }
13
+
14
+ &__inner {
15
+ max-width: 1280px;
16
+ margin: 0 auto;
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 56px;
20
+ }
21
+
22
+ &__header {
23
+ display: flex;
24
+ justify-content: space-between;
25
+ align-items: flex-end;
26
+ gap: 32px;
27
+ }
28
+
29
+ &__header-left {
30
+ display: flex;
31
+ flex-direction: column;
32
+ gap: 12px;
33
+ }
34
+
35
+ &__title {
36
+ font-size: 30px;
37
+ font-weight: 800;
38
+ letter-spacing: -0.5px;
39
+ color: $text;
40
+ margin: 0;
41
+ }
42
+
43
+ &__subtitle {
44
+ font-size: 15px;
45
+ color: $muted;
46
+ line-height: 1.65;
47
+ max-width: 440px;
48
+ margin: 0;
49
+ }
50
+
51
+ &__items {
52
+ display: flex;
53
+ flex-wrap: wrap;
54
+ gap: 24px;
55
+ width: 100%;
56
+ }
57
+
58
+ &__card {
59
+ // цвет цифры и маркеров списка (по умолчанию зелёный)
60
+ --accent: #{$green};
61
+ --number: #{rgba($green, 0.09)};
62
+
63
+ position: relative;
64
+ isolation: isolate;
65
+ overflow: hidden;
66
+ flex: 1 1 0;
67
+ min-width: 180px;
68
+ background: $white;
69
+ border: 1px solid $border;
70
+ border-radius: 20px;
71
+ padding: 28px 24px 32px;
72
+ display: flex;
73
+ flex-direction: column;
74
+ gap: 0;
75
+ transition: transform 0.2s, box-shadow 0.2s;
76
+ cursor: default;
77
+
78
+ &:hover {
79
+ transform: translateY(-4px);
80
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.08);
81
+ }
82
+
83
+ &--violet {
84
+ --accent: rgb(139, 92, 246);
85
+ --number: rgba(139, 92, 246, 0.1);
86
+ }
87
+ }
88
+
89
+ // Цифра за текстом
90
+ &__card-number {
91
+ position: absolute;
92
+ z-index: -1;
93
+ top: 4px;
94
+ right: 14px;
95
+ font-size: 72px;
96
+ font-weight: 800;
97
+ line-height: 1;
98
+ letter-spacing: -0.04em;
99
+ color: var(--number);
100
+ pointer-events: none;
101
+ user-select: none;
102
+ }
103
+
104
+ &__card-icon {
105
+ margin-bottom: 12px;
106
+ display: flex;
107
+ align-items: center;
108
+ justify-content: flex-start;
109
+
110
+ img {
111
+ width: 32px;
112
+ height: 32px;
113
+ flex-shrink: 0;
114
+ }
115
+ }
116
+
117
+ &__card-heading {
118
+ font-size: 18px;
119
+ font-weight: 700;
120
+ color: $text;
121
+ line-height: 1.35;
122
+ margin-bottom: 12px;
123
+ }
124
+
125
+ &__card-text {
126
+ font-size: 14px;
127
+ color: $muted;
128
+ line-height: 1.7;
129
+ }
130
+
131
+ // Список (description передан массивом)
132
+ &__card-list {
133
+ list-style: none;
134
+ margin: 0;
135
+ padding: 0;
136
+ display: flex;
137
+ flex-direction: column;
138
+ gap: 9px;
139
+
140
+ &--dots .features-grid-v3__card-list-item {
141
+ padding-left: 25px;
142
+
143
+ // ромбик-маркер
144
+ &::before {
145
+ content: '';
146
+ position: absolute;
147
+ left: 5px;
148
+ top: 8px;
149
+ width: 7px;
150
+ height: 7px;
151
+ border-radius: 2px;
152
+ background: var(--accent);
153
+ transform: rotate(45deg);
154
+ }
155
+ }
156
+ }
157
+
158
+ &__card-list-item {
159
+ position: relative;
160
+ font-size: 14px;
161
+ color: $muted;
162
+ line-height: 1.55;
163
+ }
164
+
165
+ @keyframes fadeUp {
166
+ from {
167
+ opacity: 0;
168
+ transform: translateY(24px);
169
+ }
170
+ to {
171
+ opacity: 1;
172
+ transform: translateY(0);
173
+ }
174
+ }
175
+ }
176
+
177
+ // Планшет (до 1100px)
178
+ @media (max-width: 1100px) {
179
+ .features-grid-v3 {
180
+ padding: 72px 24px;
181
+
182
+ &__header {
183
+ flex-direction: column;
184
+ align-items: flex-start;
185
+ }
186
+
187
+ &__items {
188
+ gap: 20px;
189
+ }
190
+
191
+ &__card {
192
+ flex: 1 1 calc(33.333% - 14px);
193
+ min-width: 200px;
194
+ }
195
+
196
+ &__title {
197
+ font-size: 26px;
198
+ }
199
+ }
200
+ }
201
+
202
+ // Мобильная версия (до 768px)
203
+ @media (max-width: 768px) {
204
+ .features-grid-v3 {
205
+ &__items {
206
+ gap: 16px;
207
+ }
208
+
209
+ &__card {
210
+ flex: 1 1 calc(50% - 8px);
211
+ min-width: 160px;
212
+ }
213
+
214
+ &__subtitle {
215
+ font-size: 14px;
216
+ }
217
+
218
+ &__card-heading {
219
+ font-size: 16px;
220
+ }
221
+
222
+ &__card-text,
223
+ &__card-list-item {
224
+ font-size: 13px;
225
+ }
226
+
227
+ &__card-number {
228
+ font-size: 60px;
229
+ }
230
+
231
+ &__card-icon {
232
+ img {
233
+ width: 28px;
234
+ height: 28px;
235
+ }
236
+ }
237
+ }
238
+ }
239
+
240
+ // Мобильная версия (до 550px)
241
+ @media (max-width: 550px) {
242
+ .features-grid-v3 {
243
+ &__card {
244
+ flex: 1 1 100%;
245
+ }
246
+ }
247
+ }
248
+
249
+ // Мобильная версия (до 430px)
250
+ @media (max-width: 430px) {
251
+ .features-grid-v3 {
252
+ padding: 40px 20px;
253
+
254
+ &__btn {
255
+ width: 100% !important;
256
+ max-width: 100% !important;
257
+ }
258
+
259
+ &__title {
260
+ font-size: 22px;
261
+ }
262
+
263
+ &__subtitle {
264
+ font-size: 13px;
265
+ }
266
+
267
+ &__items {
268
+ gap: 12px;
269
+ }
270
+
271
+ &__card {
272
+ flex: 1 1 100%;
273
+ padding: 20px 16px 24px;
274
+ }
275
+
276
+ &__card-heading {
277
+ font-size: 15px;
278
+ margin-bottom: 8px;
279
+ }
280
+
281
+ &__card-text,
282
+ &__card-list-item {
283
+ font-size: 12px;
284
+ }
285
+
286
+ &__card-number {
287
+ font-size: 52px;
288
+ right: 12px;
289
+ }
290
+
291
+ &__card-icon {
292
+ margin-bottom: 8px;
293
+
294
+ img {
295
+ width: 24px;
296
+ height: 24px;
297
+ }
298
+ }
299
+ }
300
+ }
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+
3
+ function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
4
+ Object.defineProperty(exports, "__esModule", {
5
+ value: true
6
+ });
7
+ exports["default"] = exports.FeaturesGridTest = void 0;
8
+ var _react = _interopRequireWildcard(require("react"));
9
+ var _FeaturesGridV = _interopRequireDefault(require("./FeaturesGridV3"));
10
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
+ function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
12
+ function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { "default": e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n["default"] = e, t && t.set(e, n), n; }
13
+ var advantages_list = [{
14
+ title: "\u041A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u044F",
15
+ description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\xB7 \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F \u0446\u0435\u043D\u043E\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0420\u0435\u043A\u043B\u0430\u043C\u0430 \u0438 \u043C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0420\u0430\u0431\u043E\u0442\u0430 \u0441 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u043E\u043C ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043A\u043E\u043D\u043A\u0443\u0440\u0435\u043D\u0442\u043E\u0432 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0410\u0432\u0442\u043E\u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u043E\u0442\u0437\u044B\u0432\u044B ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 SEO-\u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0430\u0446\u0438\u044F ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0422\u0430\u0441\u043A-\u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 CRM ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 PIM \u0438 \u043C\u043D\u043E\u0433\u043E\u0435 \u0434\u0440\u0443\u0433\u043E\u0435 ", /*#__PURE__*/_react["default"].createElement("br", null))
16
+ }, {
17
+ title: "\u0420\u0435\u043A\u043B\u0430\u043C\u0430 \u0438 \u043C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433",
18
+ description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\xB7 \u0412 2 \u0440\u0430\u0437\u0430 \u0441\u043E\u043A\u0440\u0430\u0442\u0438 \u0440\u0430\u0441\u0445\u043E\u0434\u044B \u043D\u0430 \u0440\u0435\u043A\u043B\u0430\u043C\u0443. ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u042D\u0444\u0444\u0435\u043A\u0442\u0438\u0432\u043D\u043E \u0440\u0430\u0441\u043F\u0440\u0435\u0434\u0435\u043B\u044F\u0439 \u0440\u0435\u043A\u043B\u0430\u043C\u043D\u044B\u0439 \u0431\u044E\u0434\u0436\u0435\u0442 \u0438 \u043F\u043E\u043B\u0443\u0447\u0430\u0439 \u0434\u0435\u0442\u0430\u043B\u044C\u043D\u0443\u044E \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0443 \u043F\u043E \u043A\u0430\u0436\u0434\u043E\u0439 \u043A\u0430\u043C\u043F\u0430\u043D\u0438\u0438. ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u041F\u043E\u043B\u0443\u0447\u0438 \u0431\u043E\u043B\u0435\u0435 50 \u0444\u0443\u043D\u043A\u0446\u0438\u0439 \u0434\u043B\u044F \u0441\u043E\u0437\u0434\u0430\u043D\u0438\u044F \u0438 \u043D\u0430\u0441\u0442\u0440\u043E\u0439\u043A\u0438 \u0440\u0435\u043A\u043B\u0430\u043C\u043D\u044B\u0445 \u043A\u0430\u043C\u043F\u0430\u043D\u0438\u0439 \u043D\u0430 \u043C\u0430\u0440\u043A\u0435\u0442\u043F\u043B\u0435\u0439\u0441\u0430\u0445.")
19
+ }, {
20
+ title: "\u042D\u043A\u043E\u043D\u043E\u043C\u0438\u044F \u0432\u0440\u0435\u043C\u0435\u043D\u0438 \u0438 \u0434\u0435\u043D\u0435\u0433",
21
+ description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\xB7 \u0421\u0447\u0438\u0442\u0430\u0439 \u0431\u044E\u0434\u0436\u0435\u0442 \u0438 \u043A\u043E\u043D\u0442\u0440\u043E\u043B\u0438\u0440\u0443\u0439 \u0440\u0430\u0441\u0445\u043E\u0434\u044B \u0438\u0437 \u0435\u0434\u0438\u043D\u043E\u0433\u043E \u043B\u0438\u0447\u043D\u043E\u0433\u043E \u043A\u0430\u0431\u0438\u043D\u0435\u0442\u0430.", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0439 \u0440\u0443\u0442\u0438\u043D\u043D\u044B\u0435 \u0437\u0430\u0434\u0430\u0447\u0438 \u0438 \u043E\u0441\u0432\u043E\u0431\u043E\u0434\u0438 \u0431\u043E\u043B\u0435\u0435 50% \u0440\u0430\u0431\u043E\u0447\u0435\u0433\u043E \u0432\u0440\u0435\u043C\u0435\u043D\u0438.", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0421\u044D\u043A\u043E\u043D\u043E\u043C\u044C 40% \u0431\u044E\u0434\u0436\u0435\u0442\u0430 \u043A\u043E\u043C\u043F\u0430\u043D\u0438\u0438 \u0437\u0430 \u0441\u0447\u0451\u0442 \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u0437\u043D\u0435\u0441-\u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432.")
22
+ }, {
23
+ title: "\u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432",
24
+ description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\xB7 \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0438\u0440\u0443\u0439 \u0431\u043E\u043B\u0435\u0435 75% \u0432\u0441\u0435\u0445 \u043F\u0440\u043E\u0446\u0435\u0441\u0441\u043E\u0432, \u043A\u043E\u0442\u043E\u0440\u044B\u0435 \u0432\u044B\u043F\u043E\u043B\u043D\u044F\u044E\u0442\u0441\u044F \u0440\u0443\u043A\u0430\u043C\u0438.", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0418\u0441\u043F\u043E\u043B\u044C\u0437\u0443\u0439 \u0441\u044D\u043A\u043E\u043D\u043E\u043C\u043B\u0435\u043D\u043D\u043E\u0435 \u0432\u0440\u0435\u043C\u044F \u043D\u0430 \u0440\u0430\u0437\u0432\u0438\u0442\u0438\u0435 \u0438 \u043C\u0430\u0441\u0448\u0442\u0430\u0431\u0438\u0440\u043E\u0432\u0430\u043D\u0438\u0435 \u0431\u0438\u0437\u043D\u0435\u0441\u0430.", /*#__PURE__*/_react["default"].createElement("br", null))
25
+ }];
26
+ var _default = exports["default"] = {
27
+ title: 'FeaturesGridV3',
28
+ component: _FeaturesGridV["default"]
29
+ };
30
+ var FeaturesGridTest = exports.FeaturesGridTest = function FeaturesGridTest() {
31
+ return /*#__PURE__*/_react["default"].createElement(_FeaturesGridV["default"], {
32
+ title: "\u041F\u0440\u0435\u0438\u043C\u0443\u0449\u0435\u0441\u0442\u0432\u0430",
33
+ description: '60% клиентов сотрудничают с нами уже более 2-х лет',
34
+ list: advantages_list
35
+ });
36
+ };
@@ -124,9 +124,7 @@ var HeaderV3 = function HeaderV3(_ref) {
124
124
  alt: "icon"
125
125
  }), el);
126
126
  }) : name_service && /*#__PURE__*/_react["default"].createElement("div", {
127
- style: {
128
- background: color || ''
129
- },
127
+ // style={{ background: color || '' }}
130
128
  className: "header-v3__service"
131
129
  }, icon_service && /*#__PURE__*/_react["default"].createElement(_image["default"], {
132
130
  src: icon_service,
@@ -29,6 +29,7 @@ var _PointsListV = _interopRequireDefault(require("../PointsListV2/PointsListV2"
29
29
  var _VideoBlockV = _interopRequireDefault(require("../VideoBlockV2/VideoBlockV2"));
30
30
  var _SmartReplies = _interopRequireDefault(require("../SmartReplies/SmartReplies"));
31
31
  var _CardsWithButton = _interopRequireDefault(require("../CardsWithButton/CardsWithButton"));
32
+ var _CardsWithButtonV = _interopRequireDefault(require("../CardsWithButtonV2/CardsWithButtonV2"));
32
33
  var _LogosStrip = _interopRequireDefault(require("../LogosStrip/LogosStrip"));
33
34
  var _decstope = _interopRequireDefault(require("./img/decstope.jpg"));
34
35
  var _discount = _interopRequireDefault(require("./img/01-discount.svg"));
@@ -58,7 +59,7 @@ var steps = [{
58
59
  var advantages_list = [{
59
60
  title: "\u041A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u044F",
60
61
  icon: _discount["default"],
61
- description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\xB7 \u0410\u0432\u0442\u043E\u043C\u0430\u0442\u0438\u0437\u0430\u0446\u0438\u044F \u0446\u0435\u043D\u043E\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u044F ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0410\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0430 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0420\u0435\u043A\u043B\u0430\u043C\u0430 \u0438 \u043C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0420\u0430\u0431\u043E\u0442\u0430 \u0441 \u043A\u043E\u043D\u0442\u0435\u043D\u0442\u043E\u043C ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043A\u043E\u043D\u043A\u0443\u0440\u0435\u043D\u0442\u043E\u0432 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0410\u0432\u0442\u043E\u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u043E\u0442\u0437\u044B\u0432\u044B ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 SEO-\u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0430\u0446\u0438\u044F ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 \u0422\u0430\u0441\u043A-\u043C\u0435\u043D\u0435\u0434\u0436\u0435\u0440 ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 CRM ", /*#__PURE__*/_react["default"].createElement("br", null), "\xB7 PIM \u0438 \u043C\u043D\u043E\u0433\u043E\u0435 \u0434\u0440\u0443\u0433\u043E\u0435 ", /*#__PURE__*/_react["default"].createElement("br", null))
62
+ description: ['Автоматизация ценообразования', 'Аналитика ', 'Реклама и маркетинг', 'Работа с контентом', 'Мониторинг конкурентов']
62
63
  }, {
63
64
  title: "\u041A\u043E\u043C\u043F\u043B\u0435\u043A\u0441\u043D\u044B\u0435 \u0440\u0435\u0448\u0435\u043D\u0438\u044F",
64
65
  icon: _discount["default"],
@@ -237,7 +238,8 @@ var MainContainerTest = exports.MainContainerTest = function MainContainerTest()
237
238
  violet: true,
238
239
  title: "\u041F\u0440\u0435\u0438\u043C\u0443\u0449\u0435\u0441\u0442\u0432\u0430",
239
240
  description: '60% клиентов сотрудничают с нами уже более 2-х лет',
240
- list: advantages_list
241
+ list: advantages_list,
242
+ dots: true
241
243
  }), /*#__PURE__*/_react["default"].createElement(_StatisticCardV["default"], {
242
244
  reverse: true,
243
245
  list: cards_list
@@ -253,6 +255,13 @@ var MainContainerTest = exports.MainContainerTest = function MainContainerTest()
253
255
  onBtnClick: function onBtnClick() {
254
256
  return window.open('https://lk.ecomru.ru/auth', '_blank');
255
257
  }
258
+ }), /*#__PURE__*/_react["default"].createElement(_CardsWithButtonV["default"], {
259
+ title: "\u041D\u0430\u0434\u0451\u0436\u043D\u044B\u0439 \u043F\u043E\u043C\u043E\u0449\u043D\u0438\u043A \u0432 \u0432\u0435\u0434\u0435\u043D\u0438\u0438 \u0432\u0430\u0448\u0435\u0433\u043E \u0431\u0438\u0437\u043D\u0435\u0441\u0430",
260
+ items: business_assistant_list,
261
+ btnText: "\u041F\u043E\u0434\u043A\u043B\u044E\u0447\u0438\u0442\u044C\u0441\u044F",
262
+ onBtnClick: function onBtnClick() {
263
+ return window.open('https://lk.ecomru.ru/auth', '_blank');
264
+ }
256
265
  }), /*#__PURE__*/_react["default"].createElement(_PointsListV["default"], {
257
266
  list: point_list,
258
267
  title: 'Возможности нашего сервиса',
@@ -28,8 +28,8 @@
28
28
 
29
29
  img {
30
30
  margin-right: 100px;
31
- max-height: 50px;
32
- height: 50px;
31
+ max-height: 40px;
32
+ height: 40px;
33
33
  width: auto;
34
34
  object-fit: contain;
35
35
  }
@@ -45,7 +45,7 @@
45
45
 
46
46
  img {
47
47
  margin-right: 70px;
48
- max-height: 40px;
48
+ max-height: 36px;
49
49
  }
50
50
  }
51
51
 
@@ -59,8 +59,8 @@
59
59
  }
60
60
 
61
61
  img {
62
- margin-right: 40px;
63
- max-height: 36px;
62
+ margin-right: 24px;
63
+ max-height: 24px;
64
64
  }
65
65
  }
66
66
  }
package/dist/index.js CHANGED
@@ -111,6 +111,12 @@ Object.defineProperty(exports, "CardsWithButton", {
111
111
  return _CardsWithButton["default"];
112
112
  }
113
113
  });
114
+ Object.defineProperty(exports, "CardsWithButtonV2", {
115
+ enumerable: true,
116
+ get: function get() {
117
+ return _CardsWithButtonV["default"];
118
+ }
119
+ });
114
120
  Object.defineProperty(exports, "Carousel", {
115
121
  enumerable: true,
116
122
  get: function get() {
@@ -153,6 +159,12 @@ Object.defineProperty(exports, "FeaturesGridV2", {
153
159
  return _FeaturesGridV["default"];
154
160
  }
155
161
  });
162
+ Object.defineProperty(exports, "FeaturesGridV3", {
163
+ enumerable: true,
164
+ get: function get() {
165
+ return _FeaturesGridV2["default"];
166
+ }
167
+ });
156
168
  Object.defineProperty(exports, "Footer", {
157
169
  enumerable: true,
158
170
  get: function get() {
@@ -440,6 +452,7 @@ var _ClientsAboutUs = _interopRequireDefault(require("./components/ConstructorCo
440
452
  var _ClientsAboutUsV = _interopRequireDefault(require("./components/ConstructorComponents/ClientsAboutUsV2/ClientsAboutUsV2"));
441
453
  var _AdvantagesBlock = _interopRequireDefault(require("./components/ConstructorComponents/AdvantagesBlock/AdvantagesBlock"));
442
454
  var _FeaturesGridV = _interopRequireDefault(require("./components/ConstructorComponents/FeaturesGridV2/FeaturesGridV2"));
455
+ var _FeaturesGridV2 = _interopRequireDefault(require("./components/ConstructorComponents/FeaturesGridV3/FeaturesGridV3"));
443
456
  var _CardsInfo = _interopRequireDefault(require("./components/ConstructorComponents/CardsInfo/CardsInfo"));
444
457
  var _CardsServicesV = _interopRequireDefault(require("./components/ConstructorComponents/CardsServicesV2/CardsServicesV2"));
445
458
  var _CardsServicesV2 = _interopRequireDefault(require("./components/ConstructorComponents/CardsServicesV3/CardsServicesV3"));
@@ -478,6 +491,7 @@ var _Footer = _interopRequireDefault(require("./components/ConstructorComponents
478
491
  var _PagePreviews = _interopRequireDefault(require("./components/ConstructorComponents/PagePreviews/PagePreviews"));
479
492
  var _SmartReplies = _interopRequireDefault(require("./components/ConstructorComponents/SmartReplies/SmartReplies"));
480
493
  var _CardsWithButton = _interopRequireDefault(require("./components/ConstructorComponents/CardsWithButton/CardsWithButton"));
494
+ var _CardsWithButtonV = _interopRequireDefault(require("./components/ConstructorComponents/CardsWithButtonV2/CardsWithButtonV2"));
481
495
  var _LogosStrip = _interopRequireDefault(require("./components/ConstructorComponents/LogosStrip/LogosStrip"));
482
496
  var _ButtonBasic = _interopRequireDefault(require("./components/Buttons/ButtonBasic/ButtonBasic"));
483
497
  var _ButtonBasicV = _interopRequireDefault(require("./components/Buttons/ButtonBasicV2/ButtonBasicV2"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecomlab-components-next",
3
- "version": "0.1.313",
3
+ "version": "0.1.316",
4
4
  "description": "A set of common and reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "files": [