ecomlab-components-next 0.1.311 → 0.1.315

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,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
+ };
@@ -0,0 +1,174 @@
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 _image = _interopRequireDefault(require("next/image"));
12
+ var _YandexMarket = _interopRequireDefault(require("./img/Yandex Market.svg"));
13
+ var _WB = _interopRequireDefault(require("./img/WB.svg"));
14
+ var _Ozon = _interopRequireDefault(require("./img/Ozon.svg"));
15
+ var _ServicesSectionV = _interopRequireDefault(require("../ServicesSectionV2/ServicesSectionV2"));
16
+ require("./HeaderV3.scss");
17
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
18
+ 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); }
19
+ 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; }
20
+ // Разбивает description на строки по <br /> (или по \n для строки)
21
+ // и убирает «·» в начале строки, чтобы вместо него показать галочку
22
+ var getLines = function getLines(node) {
23
+ if (typeof node === 'string') {
24
+ return node.split('\n').map(function (line) {
25
+ return [line.replace(/^\s*[·•]\s*/, '')];
26
+ }).filter(function (line) {
27
+ return line[0].trim() !== '';
28
+ });
29
+ }
30
+ var root = /*#__PURE__*/_react["default"].isValidElement(node) && node.type === _react["default"].Fragment ? node.props.children : node;
31
+ var lines = [[]];
32
+ _react["default"].Children.toArray(root).forEach(function (child) {
33
+ if (/*#__PURE__*/_react["default"].isValidElement(child) && child.type === 'br') {
34
+ lines.push([]);
35
+ } else {
36
+ lines[lines.length - 1].push(child);
37
+ }
38
+ });
39
+ return lines.map(function (line) {
40
+ return line.map(function (child, i) {
41
+ return i === 0 && typeof child === 'string' ? child.replace(/^\s*[·•]\s*/, '') : child;
42
+ });
43
+ }).filter(function (line) {
44
+ return line.some(function (child) {
45
+ return typeof child !== 'string' || child.trim() !== '';
46
+ });
47
+ });
48
+ };
49
+ var HeaderV3 = function HeaderV3(_ref) {
50
+ var _window;
51
+ var _ref$services = _ref.services,
52
+ services = _ref$services === void 0 ? false : _ref$services,
53
+ img = _ref.img,
54
+ _ref$title = _ref.title,
55
+ title = _ref$title === void 0 ? "Управляйте бизнесом на маркетплейсах из единого окна" : _ref$title,
56
+ _ref$description = _ref.description,
57
+ description = _ref$description === void 0 ? "ECOMRU — решения для аналитики, автоматизации и роста продаж на всех популярных маркетплейсах." : _ref$description,
58
+ color = _ref.color,
59
+ name_service = _ref.name_service,
60
+ icon_service = _ref.icon_service,
61
+ hideYandex = _ref.hideYandex,
62
+ arrIcon = _ref.arrIcon,
63
+ _ref$linkMain = _ref.linkMain,
64
+ linkMain = _ref$linkMain === void 0 ? 'https://lk.ecomru.ru' : _ref$linkMain,
65
+ _ref$badgeText = _ref.badgeText,
66
+ badgeText = _ref$badgeText === void 0 ? "Экосистема для селлеров и брендов" : _ref$badgeText,
67
+ _ref$hideBadge = _ref.hideBadge,
68
+ hideBadge = _ref$hideBadge === void 0 ? false : _ref$hideBadge,
69
+ _ref$btnText = _ref.btnText,
70
+ btnText = _ref$btnText === void 0 ? 'Попробовать бесплатно' : _ref$btnText,
71
+ _ref$onClick = _ref.onClick,
72
+ _onClick = _ref$onClick === void 0 ? false : _ref$onClick,
73
+ background = _ref.background,
74
+ _ref$violet = _ref.violet,
75
+ violet = _ref$violet === void 0 ? false : _ref$violet,
76
+ _ref$checks = _ref.checks,
77
+ checks = _ref$checks === void 0 ? true : _ref$checks;
78
+ var currentUrl = typeof window !== 'undefined' ? (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search : '';
79
+
80
+ // Если в описании несколько строк, показываем их списком с галочками
81
+ var lines = checks && description ? getLines(description) : [];
82
+ var isList = lines.length > 1;
83
+ return /*#__PURE__*/_react["default"].createElement("header", {
84
+ className: "header-v3",
85
+ style: {
86
+ background: background || ''
87
+ }
88
+ }, /*#__PURE__*/_react["default"].createElement("div", {
89
+ className: "header-v3__inner ".concat(!(services || img) ? 'header-v3__inner-centered' : '')
90
+ }, /*#__PURE__*/_react["default"].createElement("div", {
91
+ className: "header-v3__info ".concat(!(services || img) ? 'header-v3__info-centered' : '')
92
+ }, /*#__PURE__*/_react["default"].createElement("div", {
93
+ className: "header-v3__badge".concat(violet ? '_violet' : '')
94
+ }, badgeText), /*#__PURE__*/_react["default"].createElement("div", {
95
+ className: "header-v3__icons ".concat(!(services || img) ? 'header-v3__icons-centered' : '')
96
+ }, arrIcon ? arrIcon.map(function (el, ind) {
97
+ return /*#__PURE__*/_react["default"].createElement(_image["default"], {
98
+ className: "header-v3__icon",
99
+ alt: "icon",
100
+ key: el + ind,
101
+ src: el
102
+ });
103
+ }) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, !hideYandex && /*#__PURE__*/_react["default"].createElement(_image["default"], {
104
+ className: "header-v3__icon",
105
+ src: _YandexMarket["default"],
106
+ alt: "\u042F\u043D\u0434\u0435\u043A\u0441 \u041C\u0430\u0440\u043A\u0435\u0442"
107
+ }), /*#__PURE__*/_react["default"].createElement(_image["default"], {
108
+ className: "header-v3__icon",
109
+ src: _Ozon["default"],
110
+ alt: "OZON"
111
+ }), /*#__PURE__*/_react["default"].createElement(_image["default"], {
112
+ className: "header-v3__icon",
113
+ src: _WB["default"],
114
+ alt: "Wildberries"
115
+ })), (name_service || icon_service) && (Array.isArray(name_service) ? name_service === null || name_service === void 0 ? void 0 : name_service.map(function (el, ind) {
116
+ return /*#__PURE__*/_react["default"].createElement("div", {
117
+ key: el + ind,
118
+ style: {
119
+ background: (color === null || color === void 0 ? void 0 : color[ind]) || ''
120
+ },
121
+ className: "header-v3__service"
122
+ }, icon_service && /*#__PURE__*/_react["default"].createElement(_image["default"], {
123
+ src: icon_service === null || icon_service === void 0 ? void 0 : icon_service[ind],
124
+ alt: "icon"
125
+ }), el);
126
+ }) : name_service && /*#__PURE__*/_react["default"].createElement("div", {
127
+ // style={{ background: color || '' }}
128
+ className: "header-v3__service"
129
+ }, icon_service && /*#__PURE__*/_react["default"].createElement(_image["default"], {
130
+ src: icon_service,
131
+ alt: "icon"
132
+ }), name_service))), /*#__PURE__*/_react["default"].createElement("h1", {
133
+ className: "header-v3__title"
134
+ }, title), description && /*#__PURE__*/_react["default"].createElement("h2", {
135
+ className: "header-v3__description ".concat(!(services || img) ? 'header-v3__description-centered' : '')
136
+ }, isList ? /*#__PURE__*/_react["default"].createElement("span", {
137
+ className: "header-v3__list"
138
+ }, lines.map(function (line, ind) {
139
+ return /*#__PURE__*/_react["default"].createElement("span", {
140
+ key: ind,
141
+ className: "header-v3__line"
142
+ }, /*#__PURE__*/_react["default"].createElement("span", {
143
+ className: "header-v3__check",
144
+ style: {
145
+ background: color || ''
146
+ },
147
+ "aria-hidden": "true"
148
+ }, "\u2713"), /*#__PURE__*/_react["default"].createElement("span", {
149
+ className: "header-v3__line-text"
150
+ }, line));
151
+ })) : description), /*#__PURE__*/_react["default"].createElement(_ButtonBasicV["default"], {
152
+ green: !violet,
153
+ violet: violet,
154
+ onClick: function onClick() {
155
+ if (_onClick) {
156
+ _onClick();
157
+ } else {
158
+ (function () {
159
+ var _window2;
160
+ return (_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.open("".concat(linkMain, "/auth").concat(currentUrl), '_blank');
161
+ });
162
+ }
163
+ },
164
+ text: btnText,
165
+ maxWidth: "430px",
166
+ width: "100%",
167
+ size: "52px"
168
+ })), services && /*#__PURE__*/_react["default"].createElement(_ServicesSectionV["default"], null), img && /*#__PURE__*/_react["default"].createElement(_image["default"], {
169
+ className: "header-v3__banner",
170
+ alt: "banner",
171
+ src: img
172
+ })));
173
+ };
174
+ var _default = exports["default"] = HeaderV3;