ecomlab-components-next 0.1.263 → 0.1.265

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 (27) hide show
  1. package/dist/common/hooks/useReveal.js +37 -0
  2. package/dist/components/ConstructorComponents/ArticlesBlockV2/ArticlesBlockV2.js +12 -12
  3. package/dist/components/ConstructorComponents/ArticlesBlockV2/ArticlesBlockV2.scss +133 -0
  4. package/dist/components/ConstructorComponents/BlocksInfoV2/BlocksInfoV2.js +7 -2
  5. package/dist/components/ConstructorComponents/BlocksInfoV2/BlocksInfoV2.scss +0 -1
  6. package/dist/components/ConstructorComponents/CardsServicesV2/CardsServicesV2.js +8 -3
  7. package/dist/components/ConstructorComponents/CardsV2/CardsV2.js +9 -4
  8. package/dist/components/ConstructorComponents/CardsWithButton/CardsWithButton.js +8 -3
  9. package/dist/components/ConstructorComponents/ClientsAboutUsV2/ClientsAboutUsV2.js +9 -4
  10. package/dist/components/ConstructorComponents/FeaturesGridV2/FeaturesGridV2.js +8 -3
  11. package/dist/components/ConstructorComponents/FormV2/FormV2.js +5 -1
  12. package/dist/components/ConstructorComponents/HeaderV2/HeaderV2.scss +0 -11
  13. package/dist/components/ConstructorComponents/LogosStrip/LogosStrip.js +8 -3
  14. package/dist/components/ConstructorComponents/MarqueImgsV2/MarqueImgsV2.js +7 -3
  15. package/dist/components/ConstructorComponents/PhoneBlockV2/PhoneBlockV2.js +3 -1
  16. package/dist/components/ConstructorComponents/PointsListV2/PointsListV2.js +9 -4
  17. package/dist/components/ConstructorComponents/QuestionsV2/QuestionsV2.js +8 -2
  18. package/dist/components/ConstructorComponents/ServicesSectionV2/ServicesSectionV2.js +6 -3
  19. package/dist/components/ConstructorComponents/SmartReplies/SmartReplies.js +15 -16
  20. package/dist/components/ConstructorComponents/StatisticCardV2/StatisticCardV2.js +12 -7
  21. package/dist/components/ConstructorComponents/StatisticCardV2/StatisticCardV2.scss +119 -0
  22. package/dist/components/ConstructorComponents/StepsV2/StepsV2.js +18 -13
  23. package/dist/components/ConstructorComponents/StepsV2/StepsV2.scss +202 -0
  24. package/dist/components/ConstructorComponents/VideoBlockV2/VideoBlockV2.js +7 -4
  25. package/dist/components/ConstructorComponents/variables.scss +12 -1
  26. package/dist/index.js +7 -0
  27. package/package.json +1 -1
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  require("./QuestionsV2.scss");
11
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
13
  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
14
  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
15
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -24,6 +26,7 @@ var QuestionsV2 = function QuestionsV2(_ref) {
24
26
  _useState2 = _slicedToArray(_useState, 2),
25
27
  currentDrop = _useState2[0],
26
28
  setCurrentDrop = _useState2[1];
29
+ (0, _useReveal["default"])();
27
30
  var toggleItem = function toggleItem(question) {
28
31
  var newState = new Set(currentDrop);
29
32
  if (newState.has(question)) {
@@ -40,7 +43,7 @@ var QuestionsV2 = function QuestionsV2(_ref) {
40
43
  }, /*#__PURE__*/_react["default"].createElement("div", {
41
44
  className: "questions-v2__inner"
42
45
  }, /*#__PURE__*/_react["default"].createElement("div", {
43
- className: "questions-v2__header"
46
+ className: "questions-v2__header reveal"
44
47
  }, /*#__PURE__*/_react["default"].createElement("h2", {
45
48
  className: "questions-v2__title"
46
49
  }, title || 'Часто задаваемые вопросы'), /*#__PURE__*/_react["default"].createElement("p", {
@@ -52,7 +55,10 @@ var QuestionsV2 = function QuestionsV2(_ref) {
52
55
  response = _ref2.response;
53
56
  return /*#__PURE__*/_react["default"].createElement("div", {
54
57
  key: questions + index,
55
- className: "questions-v2__item ".concat(currentDrop.has(questions) ? 'questions-v2__item_open' : '')
58
+ className: "questions-v2__item ".concat(currentDrop.has(questions) ? 'questions-v2__item_open' : '', " reveal"),
59
+ style: {
60
+ '--index': index
61
+ }
56
62
  }, /*#__PURE__*/_react["default"].createElement("div", {
57
63
  className: "questions-v2__question",
58
64
  onClick: function onClick() {
@@ -8,6 +8,8 @@ Object.defineProperty(exports, "__esModule", {
8
8
  exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  require("./ServicesSectionV2.scss");
11
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
13
  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
14
  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
15
  function _slicedToArray(r, e) { return _arrayWithHoles(r) || _iterableToArrayLimit(r, e) || _unsupportedIterableToArray(r, e) || _nonIterableRest(); }
@@ -111,7 +113,7 @@ var ServicesSectionV2 = function ServicesSectionV2(_ref2) {
111
113
  items = _ref2$items === void 0 ? list_default : _ref2$items,
112
114
  _ref2$linkMain = _ref2.linkMain,
113
115
  linkMain = _ref2$linkMain === void 0 ? 'https://lk.ecomru.ru' : _ref2$linkMain;
114
- var current_query = (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search;
116
+ var current_query = typeof window !== 'undefined' ? (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search : '';
115
117
  var _useState = (0, _react.useState)(items[0]),
116
118
  _useState2 = _slicedToArray(_useState, 2),
117
119
  activeItem = _useState2[0],
@@ -120,6 +122,7 @@ var ServicesSectionV2 = function ServicesSectionV2(_ref2) {
120
122
  _useState4 = _slicedToArray(_useState3, 2),
121
123
  isAutoPlaying = _useState4[0],
122
124
  setIsAutoPlaying = _useState4[1];
125
+ (0, _useReveal["default"])();
123
126
  (0, _react.useEffect)(function () {
124
127
  if (!isAutoPlaying) return;
125
128
  var interval = setInterval(function () {
@@ -143,11 +146,11 @@ var ServicesSectionV2 = function ServicesSectionV2(_ref2) {
143
146
  }, 10000);
144
147
  };
145
148
  return /*#__PURE__*/_react["default"].createElement("div", {
146
- className: "services-v2"
149
+ className: "services-v2 reveal"
147
150
  }, /*#__PURE__*/_react["default"].createElement("div", {
148
151
  className: "services-v2__container"
149
152
  }, /*#__PURE__*/_react["default"].createElement("div", {
150
- className: "services-v2__sidebar"
153
+ className: "services-v2__sidebar reveal"
151
154
  }, /*#__PURE__*/_react["default"].createElement("div", {
152
155
  className: "services-v2__logo"
153
156
  }, "ECOM", /*#__PURE__*/_react["default"].createElement("span", null, "RU")), items.map(function (item, idx) {
@@ -9,6 +9,7 @@ exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _ButtonBasicV = _interopRequireDefault(require("../../Buttons/ButtonBasicV2/ButtonBasicV2"));
11
11
  require("./SmartReplies.scss");
12
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
12
13
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
14
  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); }
14
15
  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; }
@@ -57,18 +58,7 @@ var DEFAULT_LIST = [{
57
58
  }];
58
59
 
59
60
  // Градиенты для аватарок как в референсе
60
- var avatarGradients = ['linear-gradient(135deg, #6B5CE7, #9B5DFF)',
61
- // фиолетовый
62
- 'linear-gradient(135deg, #EC4899, #F97316)',
63
- // розово-оранжевый
64
- 'linear-gradient(135deg, #22C55E, #0EA5E9)',
65
- // зелено-голубой
66
- 'linear-gradient(135deg, #F59E0B, #EF4444)',
67
- // оранжево-красный
68
- 'linear-gradient(135deg, #8B5CF6, #3B82F6)',
69
- // фиолетово-синий
70
- 'linear-gradient(135deg, #06B6D4, #6B5CE7)' // голубо-фиолетовый
71
- ];
61
+ var avatarGradients = ['linear-gradient(135deg, #6B5CE7, #9B5DFF)', 'linear-gradient(135deg, #EC4899, #F97316)', 'linear-gradient(135deg, #22C55E, #0EA5E9)', 'linear-gradient(135deg, #F59E0B, #EF4444)', 'linear-gradient(135deg, #8B5CF6, #3B82F6)', 'linear-gradient(135deg, #06B6D4, #6B5CE7)'];
72
62
  var SmartReplies = function SmartReplies(_ref) {
73
63
  var title = _ref.title,
74
64
  _ref$reviews = _ref.reviews,
@@ -81,21 +71,30 @@ var SmartReplies = function SmartReplies(_ref) {
81
71
  setVisibleCount(reviews.length);
82
72
  };
83
73
  var visibleReviews = reviews.slice(0, visibleCount);
74
+
75
+ // Используем хук с зависимостью от visibleCount
76
+ // При изменении visibleCount (нажатии на кнопку) новые карточки анимируются сразу
77
+ (0, _useReveal["default"])([visibleCount], true);
84
78
  return /*#__PURE__*/_react["default"].createElement("section", {
85
79
  className: "smart-replies"
86
80
  }, /*#__PURE__*/_react["default"].createElement("div", {
87
81
  className: "smart-replies__inner"
82
+ }, /*#__PURE__*/_react["default"].createElement("div", {
83
+ className: "reveal"
88
84
  }, /*#__PURE__*/_react["default"].createElement("h2", {
89
85
  className: "smart-replies__title"
90
86
  }, title || 'Умные ответы на отзывы от ИИ'), /*#__PURE__*/_react["default"].createElement("p", {
91
87
  className: "smart-replies__subtitle"
92
- }, "\u0418\u0418, \u0448\u0430\u0431\u043B\u043E\u043D\u044B, \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u2014 \u0434\u043B\u044F \u043E\u0442\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u043E\u0442\u0437\u044B\u0432\u044B. \u041E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441\u044B. \u041C\u043E\u0434\u0435\u0440\u0430\u0446\u0438\u044F \u043F\u0435\u0440\u0435\u0434 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u043E\u0439"), /*#__PURE__*/_react["default"].createElement("div", {
88
+ }, "\u0418\u0418, \u0448\u0430\u0431\u043B\u043E\u043D\u044B, \u0432\u0440\u0443\u0447\u043D\u0443\u044E \u2014 \u0434\u043B\u044F \u043E\u0442\u0432\u0435\u0442\u043E\u0432 \u043D\u0430 \u043E\u0442\u0437\u044B\u0432\u044B. \u041E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u0432\u043E\u043F\u0440\u043E\u0441\u044B. \u041C\u043E\u0434\u0435\u0440\u0430\u0446\u0438\u044F \u043F\u0435\u0440\u0435\u0434 \u043E\u0442\u043F\u0440\u0430\u0432\u043A\u043E\u0439")), /*#__PURE__*/_react["default"].createElement("div", {
93
89
  className: "smart-replies__grid"
94
90
  }, visibleReviews === null || visibleReviews === void 0 ? void 0 : visibleReviews.map(function (review, idx) {
95
91
  var _review$author_name;
96
92
  return /*#__PURE__*/_react["default"].createElement("div", {
97
- className: "smart-replies__card",
98
- key: idx
93
+ className: "smart-replies__card reveal",
94
+ key: idx,
95
+ style: {
96
+ '--index': idx
97
+ }
99
98
  }, /*#__PURE__*/_react["default"].createElement("div", {
100
99
  className: "smart-replies__card-header"
101
100
  }, /*#__PURE__*/_react["default"].createElement("div", {
@@ -121,7 +120,7 @@ var SmartReplies = function SmartReplies(_ref) {
121
120
  className: "smart-replies__ai-reply"
122
121
  }, /*#__PURE__*/_react["default"].createElement("p", null, review.answer))));
123
122
  })), reviews.length > 2 && visibleCount < reviews.length && /*#__PURE__*/_react["default"].createElement("div", {
124
- className: "smart-replies__show-more"
123
+ className: "smart-replies__show-more reveal"
125
124
  }, /*#__PURE__*/_react["default"].createElement(_ButtonBasicV["default"], {
126
125
  className: "phone-block-v2__btn",
127
126
  white: true,
@@ -7,28 +7,33 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  var _utils = require("../../../common/utils");
10
- var _StatisticCardV2Module = _interopRequireDefault(require("./StatisticCardV2.module.scss"));
10
+ require("./StatisticCardV2.scss");
11
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
11
12
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
12
13
  var StatisticCardV2 = function StatisticCardV2(_ref) {
13
14
  var list = _ref.list,
14
15
  _ref$reverse = _ref.reverse,
15
16
  reverse = _ref$reverse === void 0 ? false : _ref$reverse;
17
+ (0, _useReveal["default"])();
16
18
  return /*#__PURE__*/_react["default"].createElement("section", {
17
- className: (0, _utils.classes)(_StatisticCardV2Module["default"], 'statistic-card-v2')
19
+ className: 'statistic-card-v2'
18
20
  }, /*#__PURE__*/_react["default"].createElement("div", {
19
- className: (0, _utils.classes)(_StatisticCardV2Module["default"], 'statistic-card-v2__cards')
20
- }, list.map(function (_ref2) {
21
+ className: 'statistic-card-v2__cards'
22
+ }, list.map(function (_ref2, index) {
21
23
  var label = _ref2.label,
22
24
  sum = _ref2.sum,
23
25
  color = _ref2.color;
24
26
  if (label && sum) {
25
27
  return /*#__PURE__*/_react["default"].createElement("div", {
26
28
  key: label + sum,
27
- className: (0, _utils.classes)(_StatisticCardV2Module["default"], 'statistic-card-v2__card', reverse ? 'statistic-card-v2__card_reverse' : 'statistic-card-v2__card_normal')
29
+ className: "statistic-card-v2__card ".concat(reverse ? 'statistic-card-v2__card_reverse' : 'statistic-card-v2__card_normal', " reveal"),
30
+ style: {
31
+ '--index': index
32
+ }
28
33
  }, /*#__PURE__*/_react["default"].createElement("span", {
29
- className: (0, _utils.classes)(_StatisticCardV2Module["default"], 'statistic-card-v2__label')
34
+ className: 'statistic-card-v2__label'
30
35
  }, reverse ? sum === null || sum === void 0 ? void 0 : sum.toLocaleString() : label), /*#__PURE__*/_react["default"].createElement("span", {
31
- className: (0, _utils.classes)(_StatisticCardV2Module["default"], 'statistic-card-v2__sum'),
36
+ className: 'statistic-card-v2__sum',
32
37
  style: {
33
38
  color: color || ''
34
39
  }
@@ -0,0 +1,119 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ @import '../variables.scss';
3
+
4
+ .statistic-card-v2 {
5
+ background: linear-gradient(135deg, $text 0%, $green-dark 100%);
6
+ width: 100%;
7
+ padding: 96px 40px;
8
+
9
+ * {
10
+ font-family: 'Manrope', 'Golos Text', sans-serif !important;
11
+ }
12
+
13
+ &__cards {
14
+ max-width: 1280px;
15
+ margin: 0 auto;
16
+ display: grid;
17
+ grid-template-columns: repeat(4, 1fr);
18
+ gap: 40px;
19
+ text-align: center;
20
+ }
21
+
22
+ &__card {
23
+ display: flex;
24
+ flex-direction: column;
25
+ gap: 8px;
26
+
27
+ &_reverse {
28
+ flex-direction: column-reverse;
29
+ justify-content: flex-end;
30
+ }
31
+
32
+ &_normal {
33
+ flex-direction: column;
34
+ justify-content: flex-start;
35
+ }
36
+ }
37
+
38
+ &__sum {
39
+ font-size: 52px;
40
+ font-weight: 800;
41
+ letter-spacing: -2px;
42
+ background: linear-gradient(135deg, $white 0%, $green-light-bg 100%);
43
+ -webkit-background-clip: text;
44
+ -webkit-text-fill-color: transparent;
45
+ background-clip: text;
46
+ line-height: 1.1;
47
+ }
48
+
49
+ &__label {
50
+ font-size: 14px;
51
+ color: rgba(255, 255, 255, 0.6);
52
+ line-height: 1.4;
53
+ }
54
+
55
+ @keyframes fadeUp {
56
+ from {
57
+ opacity: 0;
58
+ transform: translateY(24px);
59
+ }
60
+ to {
61
+ opacity: 1;
62
+ transform: translateY(0);
63
+ }
64
+ }
65
+ }
66
+
67
+ // Планшет (до 1100px)
68
+ @media (max-width: 1100px) {
69
+ .statistic-card-v2 {
70
+ padding: 72px 24px;
71
+
72
+ &__cards {
73
+ grid-template-columns: repeat(2, 1fr);
74
+ gap: 32px;
75
+ }
76
+
77
+ &__sum {
78
+ font-size: 46px;
79
+ letter-spacing: -1.5px;
80
+ }
81
+
82
+ &__label {
83
+ font-size: 13px;
84
+ }
85
+ }
86
+ }
87
+
88
+
89
+ // Мобильная версия (до 480px) - 1 колонка
90
+ @media (max-width: 480px) {
91
+ .statistic-card-v2 {
92
+
93
+ &__cards {
94
+ grid-template-columns: 1fr;
95
+ gap: 28px;
96
+ }
97
+ }
98
+ }
99
+
100
+ // Мобильная версия (до 430px)
101
+ @media (max-width: 430px) {
102
+ .statistic-card-v2 {
103
+ padding: 40px 20px;
104
+
105
+ &__cards {
106
+ gap: 24px;
107
+ }
108
+
109
+ &__sum {
110
+ font-size: 36px;
111
+ letter-spacing: -1px;
112
+ }
113
+
114
+ &__label {
115
+ font-size: 12px;
116
+ max-width: 220px;
117
+ }
118
+ }
119
+ }
@@ -9,8 +9,9 @@ exports["default"] = void 0;
9
9
  var _react = _interopRequireWildcard(require("react"));
10
10
  var _image = _interopRequireDefault(require("next/image"));
11
11
  var _utils = require("../../../common/utils");
12
- var _StepsV2Module = _interopRequireDefault(require("./StepsV2.module.scss"));
12
+ require("./StepsV2.scss");
13
13
  var _ButtonBasicV = _interopRequireDefault(require("../../Buttons/ButtonBasicV2/ButtonBasicV2"));
14
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
14
15
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
15
16
  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
17
  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; }
@@ -29,11 +30,12 @@ var StepsV2 = function StepsV2(_ref) {
29
30
  className = _ref$className === void 0 ? '' : _ref$className,
30
31
  _ref$linkMain = _ref.linkMain,
31
32
  linkMain = _ref$linkMain === void 0 ? 'https://lk.ecomru.ru' : _ref$linkMain;
32
- var current_query = (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search;
33
+ var current_query = typeof window !== 'undefined' ? (_window = window) === null || _window === void 0 || (_window = _window.location) === null || _window === void 0 ? void 0 : _window.search : '';
33
34
  var _useState = (0, _react.useState)(false),
34
35
  _useState2 = _slicedToArray(_useState, 2),
35
36
  isMobile = _useState2[0],
36
37
  setIsMobile = _useState2[1];
38
+ (0, _useReveal["default"])();
37
39
  (0, _react.useEffect)(function () {
38
40
  var checkMobile = function checkMobile() {
39
41
  return setIsMobile(window.innerWidth <= 1100);
@@ -45,33 +47,36 @@ var StepsV2 = function StepsV2(_ref) {
45
47
  };
46
48
  }, []);
47
49
  return /*#__PURE__*/_react["default"].createElement("section", {
48
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2 ".concat(className))
50
+ className: "steps-v2 ".concat(className)
49
51
  }, title && /*#__PURE__*/_react["default"].createElement("h3", {
50
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__title")
52
+ className: "steps-v2__title reveal"
51
53
  }, title), /*#__PURE__*/_react["default"].createElement("div", {
52
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__items")
54
+ className: "steps-v2__items"
53
55
  }, list.map(function (_ref2, ind) {
54
56
  var stepTitle = _ref2.title,
55
57
  description = _ref2.description;
56
58
  if (!stepTitle) return null;
57
59
  return /*#__PURE__*/_react["default"].createElement("div", {
58
60
  key: stepTitle + description,
59
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__item")
61
+ className: "steps-v2__item reveal",
62
+ style: {
63
+ '--index': ind
64
+ }
60
65
  }, /*#__PURE__*/_react["default"].createElement("div", {
61
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__count")
66
+ className: "steps-v2__count"
62
67
  }, ind + 1), isMobile ? /*#__PURE__*/_react["default"].createElement("div", {
63
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__item-text")
68
+ className: "steps-v2__item-text"
64
69
  }, stepTitle && /*#__PURE__*/_react["default"].createElement("h4", {
65
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__step-title")
70
+ className: "steps-v2__step-title"
66
71
  }, stepTitle), description && /*#__PURE__*/_react["default"].createElement("p", {
67
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__description")
72
+ className: "steps-v2__description"
68
73
  }, description)) : /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, stepTitle && /*#__PURE__*/_react["default"].createElement("h4", {
69
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__step-title")
74
+ className: "steps-v2__step-title"
70
75
  }, stepTitle), description && /*#__PURE__*/_react["default"].createElement("p", {
71
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__description")
76
+ className: "steps-v2__description"
72
77
  }, description)));
73
78
  })), /*#__PURE__*/_react["default"].createElement(_ButtonBasicV["default"], {
74
- className: (0, _utils.classes)(_StepsV2Module["default"], "steps-v2__btn"),
79
+ className: "steps-v2__btn reveal",
75
80
  onClick: function onClick() {
76
81
  var _window2;
77
82
  return (_window2 = window) === null || _window2 === void 0 ? void 0 : _window2.open("".concat(linkMain, "/auth").concat(current_query), '_blank');
@@ -0,0 +1,202 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ @import '../variables.scss';
3
+
4
+ .steps-v2 {
5
+ font-family: 'Manrope', 'Golos Text', sans-serif !important;
6
+ display: flex;
7
+ width: 100%;
8
+ flex-direction: column;
9
+ gap: 48px;
10
+ align-items: flex-start;
11
+ border-radius: 20px;
12
+ padding: 96px 40px;
13
+ background: $white;
14
+ box-sizing: border-box;
15
+
16
+ * {
17
+ font-family: 'Manrope', 'Golos Text', sans-serif !important;
18
+ }
19
+
20
+ &__title {
21
+ width: 100%;
22
+ text-align: center;
23
+ color: $text;
24
+ font-size: 30px;
25
+ font-weight: 800;
26
+ letter-spacing: -0.5px;
27
+ margin: 0;
28
+ }
29
+
30
+ &__items {
31
+ display: flex;
32
+ gap: 0;
33
+ width: 100%;
34
+ position: relative;
35
+ }
36
+
37
+ &__items::before {
38
+ content: '';
39
+ position: absolute;
40
+ top: 28px;
41
+ left: 10%;
42
+ right: 10%;
43
+ height: 2px;
44
+ background: linear-gradient(90deg, $bg, $green, $bg);
45
+ z-index: 0;
46
+ }
47
+
48
+ &__item {
49
+ display: flex;
50
+ flex-direction: column;
51
+ width: 100%;
52
+ gap: 12px;
53
+ max-width: calc(25% - 12px);
54
+ flex: 1;
55
+ align-items: center;
56
+ text-align: center;
57
+ padding: 0 16px;
58
+ position: relative;
59
+ z-index: 1;
60
+ box-sizing: border-box;
61
+ }
62
+
63
+ &__count {
64
+ display: flex;
65
+ justify-content: center;
66
+ align-items: center;
67
+ border-radius: 50%;
68
+ width: 56px;
69
+ height: 56px;
70
+ background: $white;
71
+ border: 2px solid $green;
72
+ color: $green;
73
+ font-size: 20px;
74
+ font-weight: 800;
75
+ box-shadow: 0 0 0 6px $white;
76
+ flex-shrink: 0;
77
+ }
78
+
79
+ &__item:first-child &__count {
80
+ background: $green;
81
+ color: $white;
82
+ }
83
+
84
+ &__step-title {
85
+ color: $text;
86
+ font-size: 15px;
87
+ font-weight: 700;
88
+ margin: 0;
89
+ }
90
+
91
+ &__description {
92
+ color: $muted;
93
+ font-size: 13px;
94
+ font-weight: 400;
95
+ line-height: 1.6;
96
+ margin: 0;
97
+ }
98
+
99
+ &__item-text {
100
+ display: flex;
101
+ flex-direction: column;
102
+ gap: 6px;
103
+ }
104
+
105
+ &__btn {
106
+ margin-left: auto;
107
+ margin-right: auto;
108
+ }
109
+
110
+ @keyframes fadeUp {
111
+ from {
112
+ opacity: 0;
113
+ transform: translateY(24px);
114
+ }
115
+ to {
116
+ opacity: 1;
117
+ transform: translateY(0);
118
+ }
119
+ }
120
+ }
121
+
122
+ // Планшет (до 1100px)
123
+ @media (max-width: 1100px) {
124
+ .steps-v2 {
125
+ padding: 72px 24px;
126
+ gap: 40px;
127
+
128
+ &__title {
129
+ font-size: 26px;
130
+ }
131
+
132
+ &__items {
133
+ flex-direction: column;
134
+ gap: 0;
135
+ }
136
+
137
+ &__items::before {
138
+ display: none;
139
+ }
140
+
141
+ &__item {
142
+ max-width: 100%;
143
+ width: 100%;
144
+ flex-direction: row;
145
+ text-align: left;
146
+ align-items: flex-start;
147
+ padding: 20px 0;
148
+ gap: 20px;
149
+ border-bottom: 1px solid $border;
150
+ }
151
+
152
+ &__item:last-child {
153
+ border-bottom: none;
154
+ }
155
+
156
+ &__count {
157
+ width: 48px;
158
+ height: 48px;
159
+ font-size: 18px;
160
+ box-shadow: 0 0 0 4px $white;
161
+ }
162
+ }
163
+ }
164
+
165
+
166
+ // Мобильная версия (до 430px)
167
+ @media (max-width: 430px) {
168
+ .steps-v2 {
169
+ padding: 40px 20px;
170
+ gap: 32px;
171
+
172
+ &__title {
173
+ font-size: 22px;
174
+ letter-spacing: -0.5px;
175
+ }
176
+
177
+ &__step-title {
178
+ font-size: 15px;
179
+ }
180
+
181
+ &__description {
182
+ font-size: 13px;
183
+ }
184
+
185
+ &__count {
186
+ width: 42px;
187
+ height: 42px;
188
+ font-size: 16px;
189
+ box-shadow: 0 0 0 4px $white;
190
+ }
191
+
192
+ &__item {
193
+ gap: 14px;
194
+ padding: 16px 0;
195
+ }
196
+
197
+ &__btn {
198
+ max-width: 100% !important;
199
+ width: 100% !important;
200
+ }
201
+ }
202
+ }
@@ -7,16 +7,19 @@ Object.defineProperty(exports, "__esModule", {
7
7
  exports["default"] = void 0;
8
8
  var _react = _interopRequireDefault(require("react"));
9
9
  require("./VideoBlockV2.scss");
10
+ var _useReveal = _interopRequireDefault(require("../../../common/hooks/useReveal"));
10
11
  function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
11
12
  var VideoBlockV2 = function VideoBlockV2(_ref) {
12
13
  var src = _ref.src,
13
- hideTitle = _ref.hideTitle;
14
+ hideTitle = _ref.hideTitle,
15
+ title = _ref.title;
16
+ (0, _useReveal["default"])();
14
17
  return /*#__PURE__*/_react["default"].createElement("section", {
15
18
  className: "video-block-v2"
16
19
  }, !hideTitle && /*#__PURE__*/_react["default"].createElement("h2", {
17
- className: "video-block-v2__title"
18
- }, "\u041F\u043E\u0441\u043C\u043E\u0442\u0440\u0438\u0442\u0435 \u0432\u0438\u0434\u0435\u043E \u043E \u043D\u0430\u0441"), /*#__PURE__*/_react["default"].createElement("div", {
19
- className: "video-block-v2__video-box"
20
+ className: "video-block-v2__title reveal"
21
+ }, title || 'Посмотрите видео о нас'), /*#__PURE__*/_react["default"].createElement("div", {
22
+ className: "video-block-v2__video-box reveal"
20
23
  }, /*#__PURE__*/_react["default"].createElement("video", {
21
24
  className: "video-block-v2__video",
22
25
  src: src,
@@ -13,4 +13,15 @@ $white: #FFFFFF;
13
13
 
14
14
  // Брейкпоинты
15
15
  $tablet: 1100px;
16
- $mobile: 430px;
16
+ $mobile: 430px;
17
+
18
+ .reveal {
19
+ opacity: 0;
20
+ transform: translateY(28px);
21
+ transition: opacity 0.6s ease, transform 0.6s ease;
22
+ }
23
+
24
+ .reveal.visible {
25
+ opacity: 1;
26
+ transform: translateY(0);
27
+ }
package/dist/index.js CHANGED
@@ -63,6 +63,12 @@ Object.defineProperty(exports, "ButtonBasic", {
63
63
  return _ButtonBasic["default"];
64
64
  }
65
65
  });
66
+ Object.defineProperty(exports, "ButtonBasicV2", {
67
+ enumerable: true,
68
+ get: function get() {
69
+ return _ButtonBasicV["default"];
70
+ }
71
+ });
66
72
  Object.defineProperty(exports, "ButtonSignUp", {
67
73
  enumerable: true,
68
74
  get: function get() {
@@ -446,6 +452,7 @@ var _SmartReplies = _interopRequireDefault(require("./components/ConstructorComp
446
452
  var _CardsWithButton = _interopRequireDefault(require("./components/ConstructorComponents/CardsWithButton/CardsWithButton"));
447
453
  var _LogosStrip = _interopRequireDefault(require("./components/ConstructorComponents/LogosStrip/LogosStrip"));
448
454
  var _ButtonBasic = _interopRequireDefault(require("./components/Buttons/ButtonBasic/ButtonBasic"));
455
+ var _ButtonBasicV = _interopRequireDefault(require("./components/Buttons/ButtonBasicV2/ButtonBasicV2"));
449
456
  var _ButtonSignUp = _interopRequireDefault(require("./components/Buttons/ButtonSignUp/ButtonSignUp"));
450
457
  var _InputDinamycPlaceholder = _interopRequireDefault(require("./components/Inputs/InputDinamycPlaceholder/InputDinamycPlaceholder"));
451
458
  var _ModalCrm = _interopRequireDefault(require("./components/ModalCrm/ModalCrm"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecomlab-components-next",
3
- "version": "0.1.263",
3
+ "version": "0.1.265",
4
4
  "description": "A set of common and reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "files": [