ecomlab-components-next 0.1.288 → 0.1.290

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.
@@ -18,6 +18,7 @@ var _StatisticCardV = _interopRequireDefault(require("../StatisticCardV2/Statist
18
18
  var _PhoneBlockV = _interopRequireDefault(require("../PhoneBlockV2/PhoneBlockV2"));
19
19
  var _ClientsAboutUsV = _interopRequireDefault(require("../ClientsAboutUsV2/ClientsAboutUsV2"));
20
20
  var _TariffPlan = _interopRequireDefault(require("../Tariff/TariffPlan"));
21
+ var _TariffPlanV = _interopRequireDefault(require("../TariffPlanV2/TariffPlanV2"));
21
22
  var _image = _interopRequireDefault(require("next/image"));
22
23
  var _ArticlesBlockV = _interopRequireDefault(require("../ArticlesBlockV2/ArticlesBlockV2"));
23
24
  var _MainContainer = _interopRequireDefault(require("./MainContainer"));
@@ -191,7 +192,7 @@ var MainContainerTest = exports.MainContainerTest = function MainContainerTest()
191
192
  }, "\u0435\u0434\u0438\u043D\u043E\u0439 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u044B")),
192
193
  description: /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, "\u041E\u0434\u043D\u0430 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0430 \u0434\u043B\u044F \u0443\u043F\u0440\u0430\u0432\u043B\u0435\u043D\u0438\u044F \u043C\u0430\u0433\u0430\u0437\u0438\u043D\u0430\u043C\u0438 \u043D\u0430 Wildberries, Ozon \u0438 \u042F\u043D\u0434\u0435\u043A\u0441 \u041C\u0430\u0440\u043A\u0435\u0442", /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("br", null), "\u0411\u043E\u043B\u0435\u0435 20 \u0438\u043D\u0441\u0442\u0440\u0443\u043C\u0435\u043D\u0442\u043E\u0432 \u0434\u043B\u044F \u0430\u043D\u0430\u043B\u0438\u0442\u0438\u043A\u0438 \u0438 \u043E\u043F\u0442\u0438\u043C\u0438\u0437\u0430\u0446\u0438\u0438 \u0431\u0438\u0437\u043D\u0435\u0441\u0430", /*#__PURE__*/_react["default"].createElement("br", null), /*#__PURE__*/_react["default"].createElement("br", null), "\u041C\u043E\u043D\u0438\u0442\u043E\u0440\u0438\u043D\u0433 \u043A\u043E\u043D\u043A\u0443\u0440\u0435\u043D\u0442\u043E\u0432, \u0440\u0430\u0431\u043E\u0442\u0430 \u0441 \u0442\u043E\u0432\u0430\u0440\u0430\u043C\u0438, \u0430\u0432\u0442\u043E\u043E\u0442\u0432\u0435\u0442\u044B \u043D\u0430 \u043E\u0442\u0437\u044B\u0432\u044B, CRM, \u0446\u0435\u043D\u043E\u043E\u0431\u0440\u0430\u0437\u043E\u0432\u0430\u043D\u0438\u0435, \u043C\u0430\u0440\u043A\u0435\u0442\u0438\u043D\u0433 \u0438 \u043C\u043D\u043E\u0433\u043E\u0435 \u0434\u0440\u0443\u0433\u043E\u0435 \u043D\u0430 \u043E\u0434\u043D\u043E\u0439 \u043F\u043B\u0430\u0442\u0444\u043E\u0440\u043C\u0435"),
193
194
  color: "#00B45E"
194
- }), /*#__PURE__*/_react["default"].createElement(_MarqueImgsV["default"], null), /*#__PURE__*/_react["default"].createElement(_BlocksInfoV["default"], {
195
+ }), /*#__PURE__*/_react["default"].createElement(_TariffPlanV["default"], null), /*#__PURE__*/_react["default"].createElement(_MarqueImgsV["default"], null), /*#__PURE__*/_react["default"].createElement(_BlocksInfoV["default"], {
195
196
  title: "\u0412\u043E\u0437\u043C\u043E\u0436\u043D\u043E\u0441\u0442\u0438 \u0441\u0435\u0440\u0432\u0438\u0441\u0430",
196
197
  list: possibilities_list
197
198
  }), /*#__PURE__*/_react["default"].createElement(_CardsServicesV["default"], null), /*#__PURE__*/_react["default"].createElement(_CardsV["default"], null), /*#__PURE__*/_react["default"].createElement(_FeaturesGridV["default"], {
@@ -0,0 +1,327 @@
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
+ var _ButtonBasicV = _interopRequireDefault(require("../../Buttons/ButtonBasicV2/ButtonBasicV2"));
10
+ var _useReveal = _interopRequireDefault(require("@/common/hooks/useReveal"));
11
+ require("./TariffPlanV2.scss");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
13
+ // ─── SVG Icons ────────────────────────────────────────────────────────────────
14
+ var IconRocket = function IconRocket() {
15
+ return /*#__PURE__*/_react["default"].createElement("svg", {
16
+ viewBox: "0 0 48 48",
17
+ fill: "#fff",
18
+ xmlns: "http://www.w3.org/2000/svg"
19
+ }, /*#__PURE__*/_react["default"].createElement("path", {
20
+ d: "M24 6C24 6 14 14 14 26C14 30.418 17.582 34 22 34H26C30.418 34 34 30.418 34 26C34 14 24 6 24 6Z",
21
+ fill: "#fff",
22
+ fillOpacity: "0.15",
23
+ stroke: "currentColor",
24
+ strokeWidth: "2",
25
+ strokeLinejoin: "round"
26
+ }), /*#__PURE__*/_react["default"].createElement("circle", {
27
+ cx: "24",
28
+ cy: "23",
29
+ r: "3.5",
30
+ stroke: "currentColor",
31
+ strokeWidth: "2"
32
+ }), /*#__PURE__*/_react["default"].createElement("path", {
33
+ d: "M14 28L10 36L17 33",
34
+ stroke: "currentColor",
35
+ strokeWidth: "2",
36
+ strokeLinecap: "round",
37
+ strokeLinejoin: "round"
38
+ }), /*#__PURE__*/_react["default"].createElement("path", {
39
+ d: "M34 28L38 36L31 33",
40
+ stroke: "currentColor",
41
+ strokeWidth: "2",
42
+ strokeLinecap: "round",
43
+ strokeLinejoin: "round"
44
+ }), /*#__PURE__*/_react["default"].createElement("path", {
45
+ d: "M20 34C20 36 21.5 38 24 38C26.5 38 28 36 28 34",
46
+ stroke: "currentColor",
47
+ strokeWidth: "1.5",
48
+ strokeLinecap: "round"
49
+ }));
50
+ };
51
+ var IconBarChart = function IconBarChart() {
52
+ return /*#__PURE__*/_react["default"].createElement("svg", {
53
+ viewBox: "0 0 36 36",
54
+ fill: "none",
55
+ xmlns: "http://www.w3.org/2000/svg"
56
+ }, /*#__PURE__*/_react["default"].createElement("rect", {
57
+ x: "6",
58
+ y: "20",
59
+ width: "6",
60
+ height: "10",
61
+ rx: "2",
62
+ fill: "currentColor",
63
+ opacity: "0.25"
64
+ }), /*#__PURE__*/_react["default"].createElement("rect", {
65
+ x: "15",
66
+ y: "13",
67
+ width: "6",
68
+ height: "17",
69
+ rx: "2",
70
+ fill: "currentColor",
71
+ opacity: "0.45"
72
+ }), /*#__PURE__*/_react["default"].createElement("rect", {
73
+ x: "24",
74
+ y: "6",
75
+ width: "6",
76
+ height: "24",
77
+ rx: "2",
78
+ fill: "currentColor"
79
+ }));
80
+ };
81
+ var IconCrown = function IconCrown() {
82
+ return /*#__PURE__*/_react["default"].createElement("svg", {
83
+ viewBox: "0 0 36 36",
84
+ fill: "none",
85
+ xmlns: "http://www.w3.org/2000/svg"
86
+ }, /*#__PURE__*/_react["default"].createElement("path", {
87
+ d: "M6 26h24M6 26L9 14l7 6 2-8 2 8 7-6 3 12",
88
+ stroke: "currentColor",
89
+ strokeWidth: "1.8",
90
+ strokeLinejoin: "round",
91
+ strokeLinecap: "round"
92
+ }), /*#__PURE__*/_react["default"].createElement("circle", {
93
+ cx: "9",
94
+ cy: "13",
95
+ r: "2",
96
+ fill: "currentColor"
97
+ }), /*#__PURE__*/_react["default"].createElement("circle", {
98
+ cx: "27",
99
+ cy: "13",
100
+ r: "2",
101
+ fill: "currentColor"
102
+ }), /*#__PURE__*/_react["default"].createElement("circle", {
103
+ cx: "18",
104
+ cy: "6",
105
+ r: "2",
106
+ fill: "currentColor"
107
+ }));
108
+ };
109
+ var IconBolt = function IconBolt() {
110
+ return /*#__PURE__*/_react["default"].createElement("svg", {
111
+ viewBox: "0 0 48 48",
112
+ fill: "#fff",
113
+ xmlns: "http://www.w3.org/2000/svg"
114
+ }, /*#__PURE__*/_react["default"].createElement("path", {
115
+ d: "M28 4L12 26H24L20 44L40 22H28L28 4Z",
116
+ fill: "#fff",
117
+ fillOpacity: "0.18",
118
+ stroke: "currentColor",
119
+ strokeWidth: "2",
120
+ strokeLinejoin: "round",
121
+ strokeLinecap: "round"
122
+ }));
123
+ };
124
+ var IconDiamond = function IconDiamond() {
125
+ return /*#__PURE__*/_react["default"].createElement("svg", {
126
+ viewBox: "0 0 48 48",
127
+ fill: "#fff",
128
+ xmlns: "http://www.w3.org/2000/svg"
129
+ }, /*#__PURE__*/_react["default"].createElement("path", {
130
+ d: "M24 4L6 18L24 44L42 18L24 4Z",
131
+ fill: "#fff",
132
+ fillOpacity: "0.12",
133
+ stroke: "currentColor",
134
+ strokeWidth: "2",
135
+ strokeLinejoin: "round"
136
+ }), /*#__PURE__*/_react["default"].createElement("path", {
137
+ d: "M6 18L15 18L24 4",
138
+ stroke: "currentColor",
139
+ strokeWidth: "1.5",
140
+ strokeLinejoin: "round"
141
+ }), /*#__PURE__*/_react["default"].createElement("path", {
142
+ d: "M42 18L33 18L24 4",
143
+ stroke: "currentColor",
144
+ strokeWidth: "1.5",
145
+ strokeLinejoin: "round"
146
+ }), /*#__PURE__*/_react["default"].createElement("line", {
147
+ x1: "6",
148
+ y1: "18",
149
+ x2: "42",
150
+ y2: "18",
151
+ stroke: "currentColor",
152
+ strokeWidth: "2"
153
+ }), /*#__PURE__*/_react["default"].createElement("path", {
154
+ d: "M15 18L24 44",
155
+ stroke: "currentColor",
156
+ strokeWidth: "1.5",
157
+ strokeOpacity: "0.5"
158
+ }), /*#__PURE__*/_react["default"].createElement("path", {
159
+ d: "M33 18L24 44",
160
+ stroke: "currentColor",
161
+ strokeWidth: "1.5",
162
+ strokeOpacity: "0.5"
163
+ }));
164
+ };
165
+ var CheckIcon = function CheckIcon() {
166
+ return /*#__PURE__*/_react["default"].createElement("svg", {
167
+ className: "tariff-card__feature-icon",
168
+ viewBox: "0 0 15 15",
169
+ fill: "none"
170
+ }, /*#__PURE__*/_react["default"].createElement("path", {
171
+ d: "M3 7.5l3 3 6-6",
172
+ stroke: "currentColor",
173
+ strokeWidth: "1.8",
174
+ strokeLinecap: "round",
175
+ strokeLinejoin: "round"
176
+ }));
177
+ };
178
+
179
+ // ─── Plan data ────────────────────────────────────────────────────────────────
180
+ var PLANS = [{
181
+ id: 'free',
182
+ icon: /*#__PURE__*/_react["default"].createElement(IconRocket, null),
183
+ gmv: 'До 1 млн ₽',
184
+ gmvLabel: 'GMV за предыдущий месяц',
185
+ price: '0 ₽',
186
+ priceVariant: 'free',
187
+ periodLabel: 'Бесплатно',
188
+ periodAccent: true,
189
+ features: ['Все основные сервисы', 'Аналитика', 'Управление товарами', 'Репрайсер', 'Работа с отзывами', 'Поддержка'],
190
+ cta: 'Начать бесплатно',
191
+ ctaFilled: false,
192
+ popular: false
193
+ }, {
194
+ id: 'starter',
195
+ icon: /*#__PURE__*/_react["default"].createElement(IconBarChart, null),
196
+ gmv: '1 – 5 млн ₽',
197
+ gmvLabel: 'GMV за предыдущий месяц',
198
+ price: '2 990 ₽',
199
+ priceVariant: 'default',
200
+ periodLabel: 'в месяц',
201
+ periodAccent: false,
202
+ features: ['Все из тарифа бесплатно', 'Расширенная аналитика', 'Репрайсер', 'Работа с отзывами', 'Управление рекламой', 'Приоритетная поддержка'],
203
+ cta: 'Выбрать тариф',
204
+ ctaFilled: false,
205
+ popular: false
206
+ }, {
207
+ id: 'growth',
208
+ icon: /*#__PURE__*/_react["default"].createElement(IconCrown, null),
209
+ gmv: '5 – 20 млн ₽',
210
+ gmvLabel: 'GMV за предыдущий месяц',
211
+ price: '6 990 ₽',
212
+ priceVariant: 'default',
213
+ periodLabel: 'в месяц',
214
+ periodAccent: false,
215
+ features: ['Все из тарифа 1–5 млн ₽', 'AI-инструменты', 'PIM и автоматизация', 'CRM и задачи', 'Массовые операции', 'Расширенные отчёты'],
216
+ cta: 'Выбрать тариф',
217
+ ctaFilled: true,
218
+ popular: true
219
+ }, {
220
+ id: 'scale',
221
+ icon: /*#__PURE__*/_react["default"].createElement(IconBolt, null),
222
+ gmv: '20+ млн ₽',
223
+ gmvLabel: 'GMV за предыдущий месяц',
224
+ price: '14 990 ₽',
225
+ priceVariant: 'default',
226
+ periodLabel: 'в месяц',
227
+ periodAccent: false,
228
+ features: ['Все из тарифа 5–20 млн ₽', 'Несколько пользователей', 'Роли и права доступа', 'API и интеграции', 'Персональный менеджер', 'Приоритетная поддержка'],
229
+ cta: 'Выбрать тариф',
230
+ ctaFilled: false,
231
+ popular: false
232
+ }, {
233
+ id: 'enterprise',
234
+ icon: /*#__PURE__*/_react["default"].createElement(IconDiamond, null),
235
+ gmv: '50+ млн ₽',
236
+ gmvLabel: 'GMV за предыдущий месяц',
237
+ price: 'Индивидуально',
238
+ priceVariant: 'custom',
239
+ periodLabel: 'в месяц',
240
+ periodAccent: false,
241
+ features: ['Индивидуальные условия', 'Персональный менеджер', 'Внедрение и обучение', 'Интеграции и API', 'SLA и приоритетная поддержка'],
242
+ cta: 'Связаться с нами',
243
+ ctaFilled: false,
244
+ popular: false
245
+ }];
246
+
247
+ // ─── TariffCard ───────────────────────────────────────────────────────────────
248
+ var TariffCard = function TariffCard(_ref) {
249
+ var plan = _ref.plan,
250
+ onCtaClick = _ref.onCtaClick;
251
+ (0, _useReveal["default"])();
252
+ var cardCls = ['tariff-card', plan.popular ? 'tariff-card_popular' : ''].filter(Boolean).join(' ');
253
+ var priceCls = ['tariff-card__price', plan.priceVariant === 'free' ? 'tariff-card__price_free' : '', plan.priceVariant === 'custom' ? 'tariff-card__price_custom' : ''].filter(Boolean).join(' ');
254
+ var periodCls = ['tariff-card__price-period', plan.periodAccent ? 'tariff-card__price-period_accent' : ''].filter(Boolean).join(' ');
255
+ var ctaCls = ['tariff-card__cta', plan.ctaFilled ? 'tariff-card__cta_filled' : ''].filter(Boolean).join(' ');
256
+ return /*#__PURE__*/_react["default"].createElement("article", {
257
+ className: "".concat(cardCls, " reveal")
258
+ }, plan.popular && /*#__PURE__*/_react["default"].createElement("div", {
259
+ className: "tariff-card__badge"
260
+ }, /*#__PURE__*/_react["default"].createElement("span", {
261
+ className: "tariff-card__badge-star"
262
+ }, "\u2605"), "\u041F\u043E\u043F\u0443\u043B\u044F\u0440\u043D\u044B\u0439"), /*#__PURE__*/_react["default"].createElement("div", {
263
+ className: "tariff-card__icon"
264
+ }, plan.icon), /*#__PURE__*/_react["default"].createElement("p", {
265
+ className: "tariff-card__gmv"
266
+ }, plan.gmv), /*#__PURE__*/_react["default"].createElement("p", {
267
+ className: "tariff-card__gmv-label"
268
+ }, plan.gmvLabel), /*#__PURE__*/_react["default"].createElement("p", {
269
+ className: priceCls
270
+ }, plan.price), /*#__PURE__*/_react["default"].createElement("p", {
271
+ className: periodCls
272
+ }, plan.periodLabel), /*#__PURE__*/_react["default"].createElement("ul", {
273
+ className: "tariff-card__features"
274
+ }, plan.features.map(function (feat) {
275
+ return /*#__PURE__*/_react["default"].createElement("li", {
276
+ key: feat,
277
+ className: "tariff-card__feature"
278
+ }, /*#__PURE__*/_react["default"].createElement(CheckIcon, null), feat);
279
+ })), /*#__PURE__*/_react["default"].createElement(_ButtonBasicV["default"], {
280
+ green: true,
281
+ width: "100%",
282
+ onClick: function onClick() {
283
+ return onCtaClick === null || onCtaClick === void 0 ? void 0 : onCtaClick(plan);
284
+ },
285
+ text: plan.cta
286
+ }));
287
+ };
288
+
289
+ // ─── TariffPlanV2 ─────────────────────────────────────────────────────────────
290
+ /**
291
+ * @param {{
292
+ * title?: string,
293
+ * description?: string,
294
+ * onCtaClick?: (plan: object) => void
295
+ * }} props
296
+ */
297
+ var TariffPlanV2 = function TariffPlanV2(_ref2) {
298
+ var _ref2$title = _ref2.title,
299
+ title = _ref2$title === void 0 ? 'Тарифы по обороту' : _ref2$title,
300
+ _ref2$description = _ref2.description,
301
+ description = _ref2$description === void 0 ? 'Платите только за результат. Выбирайте тариф в зависимости от оборота вашего магазина за предыдущий месяц.' : _ref2$description,
302
+ _ref2$onCtaClick = _ref2.onCtaClick,
303
+ onCtaClick = _ref2$onCtaClick === void 0 ? function () {
304
+ var _window;
305
+ (_window = window) === null || _window === void 0 || _window.open("https://lk.ecomru.ru/settings/tariff", '_blunk');
306
+ } : _ref2$onCtaClick;
307
+ return /*#__PURE__*/_react["default"].createElement("section", {
308
+ className: "tariff-plan"
309
+ }, /*#__PURE__*/_react["default"].createElement("div", {
310
+ className: "tariff-plan__inner"
311
+ }, /*#__PURE__*/_react["default"].createElement("div", {
312
+ className: "tariff-plan__header"
313
+ }, title && /*#__PURE__*/_react["default"].createElement("h2", {
314
+ className: "tariff-plan__title reveal"
315
+ }, title), description && /*#__PURE__*/_react["default"].createElement("p", {
316
+ className: "tariff-plan__subtitle reveal"
317
+ }, description)), /*#__PURE__*/_react["default"].createElement("div", {
318
+ className: "tariff-plan__grid"
319
+ }, PLANS.map(function (plan) {
320
+ return /*#__PURE__*/_react["default"].createElement(TariffCard, {
321
+ key: plan.id,
322
+ plan: plan,
323
+ onCtaClick: onCtaClick
324
+ });
325
+ }))));
326
+ };
327
+ var _default = exports["default"] = /*#__PURE__*/_react["default"].memo(TariffPlanV2);
@@ -0,0 +1,301 @@
1
+ @import url('https://fonts.googleapis.com/css2?family=Manrope:wght@400;500;600;700;800&display=swap');
2
+ @import '../variables.scss';
3
+
4
+ // ─── tariff-plan ─────────────────────────────────────────────────────────────
5
+ .tariff-plan {
6
+ font-family: 'Manrope', sans-serif;
7
+ background: $white;
8
+ width: 100%;
9
+ padding: 96px 40px;
10
+
11
+ * {
12
+ font-family: 'Manrope', sans-serif !important;
13
+ }
14
+
15
+ &__inner {
16
+ max-width: 1280px;
17
+ margin: 0 auto;
18
+ display: flex;
19
+ flex-direction: column;
20
+ gap: 56px;
21
+ }
22
+
23
+ &__header {
24
+ display: flex;
25
+ flex-direction: column;
26
+ align-items: center;
27
+ width: 100%;
28
+ gap: 12px;
29
+ }
30
+
31
+ &__title {
32
+ font-size: 30px;
33
+ font-weight: 800;
34
+ letter-spacing: -0.5px;
35
+ color: $text;
36
+ margin: 0;
37
+ line-height: 1.15;
38
+ }
39
+
40
+ &__subtitle {
41
+ font-size: 15px;
42
+ color: $muted;
43
+ line-height: 1.65;
44
+ max-width: 440px;
45
+ text-align: center;
46
+ }
47
+
48
+ &__grid {
49
+ display: grid;
50
+ grid-template-columns: repeat(5, 1fr);
51
+ gap: 24px;
52
+ align-items: stretch;
53
+ }
54
+ }
55
+
56
+ // ─── tariff-card ─────────────────────────────────────────────────────────────
57
+ .tariff-card {
58
+ position: relative;
59
+ background: $white;
60
+ border: 1px solid $border;
61
+ border-radius: 20px;
62
+ padding: 28px 20px 24px;
63
+ display: flex;
64
+ flex-direction: column;
65
+ height: 100%;
66
+ transition: transform 0.2s, box-shadow 0.2s;
67
+
68
+ &:hover {
69
+ transform: translateY(-4px);
70
+ box-shadow: 0 12px 32px rgba(0, 0, 0, 0.08);
71
+ }
72
+
73
+ &_popular {
74
+ border-color: $green;
75
+ box-shadow: 0 4px 24px rgba(5, 150, 105, 0.15);
76
+
77
+ &:hover {
78
+ box-shadow: 0 12px 40px rgba(5, 150, 105, 0.22);
79
+ }
80
+ }
81
+
82
+ &__badge {
83
+ position: absolute;
84
+ top: -1px;
85
+ left: 50%;
86
+ transform: translateX(-50%);
87
+ background: $green;
88
+ color: $white;
89
+ font-size: 11px;
90
+ font-weight: 700;
91
+ letter-spacing: 0.3px;
92
+ padding: 4px 14px;
93
+ border-radius: 0 0 10px 10px;
94
+ display: flex;
95
+ align-items: center;
96
+ gap: 4px;
97
+ white-space: nowrap;
98
+ }
99
+
100
+ &__badge-star {
101
+ font-size: 10px;
102
+ }
103
+
104
+ &__icon {
105
+ width: 36px;
106
+ height: 36px;
107
+ margin-bottom: 12px;
108
+ color: $green;
109
+ flex-shrink: 0;
110
+
111
+ svg {
112
+ width: 100%;
113
+ height: 100%;
114
+ }
115
+ }
116
+
117
+ &__gmv {
118
+ font-size: 13px;
119
+ font-weight: 700;
120
+ color: $text;
121
+ margin-bottom: 2px;
122
+ line-height: 1.2;
123
+ }
124
+
125
+ &__gmv-label {
126
+ font-size: 11px;
127
+ color: $muted;
128
+ margin-bottom: 16px;
129
+ line-height: 1.3;
130
+ }
131
+
132
+ &__price {
133
+ font-size: 28px;
134
+ font-weight: 800;
135
+ color: $text;
136
+ line-height: 1;
137
+ margin-bottom: 2px;
138
+ letter-spacing: -0.5px;
139
+
140
+ &_free {
141
+ color: $green;
142
+ font-size: 22px;
143
+ font-weight: 700;
144
+ }
145
+
146
+ &_custom {
147
+ color: $green;
148
+ font-size: 20px;
149
+ font-weight: 700;
150
+ }
151
+ }
152
+
153
+ &__price-period {
154
+ font-size: 12px;
155
+ color: $muted;
156
+ margin-bottom: 20px;
157
+
158
+ &_accent {
159
+ color: $green;
160
+ font-weight: 600;
161
+ }
162
+ }
163
+
164
+ &__features {
165
+ list-style: none;
166
+ padding: 0;
167
+ margin: 0 0 22px;
168
+ display: flex;
169
+ flex-direction: column;
170
+ gap: 9px;
171
+ flex: 1;
172
+ }
173
+
174
+ &__feature {
175
+ display: flex;
176
+ align-items: flex-start;
177
+ gap: 7px;
178
+ font-size: 13px;
179
+ color: $text;
180
+ line-height: 1.5;
181
+ }
182
+
183
+ &__feature-icon {
184
+ flex-shrink: 0;
185
+ width: 15px;
186
+ height: 15px;
187
+ margin-top: 2px;
188
+ color: $green;
189
+ }
190
+
191
+ &__cta {
192
+ display: block;
193
+ width: 100%;
194
+ padding: 11px 16px;
195
+ border-radius: 10px;
196
+ font-size: 13px;
197
+ font-weight: 700;
198
+ text-align: center;
199
+ cursor: pointer;
200
+ border: 1.5px solid $green;
201
+ background: transparent;
202
+ color: $green;
203
+ line-height: 1;
204
+ transition: background 0.2s, color 0.2s, border-color 0.2s;
205
+
206
+ &:hover {
207
+ background: $green-light-bg;
208
+ }
209
+
210
+ &_filled {
211
+ background: $green;
212
+ color: $white;
213
+ border-color: $green;
214
+
215
+ &:hover {
216
+ background: $green-dark;
217
+ border-color: $green-dark;
218
+ }
219
+ }
220
+ }
221
+ }
222
+
223
+ // ─── Планшет (до 1100px) ─────────────────────────────────────────────────────
224
+ @media (max-width: $tablet) {
225
+ .tariff-plan {
226
+ padding: 72px 24px;
227
+
228
+ &__grid {
229
+ grid-template-columns: repeat(3, 1fr);
230
+ gap: 20px;
231
+ }
232
+
233
+ &__title {
234
+ font-size: 26px;
235
+ }
236
+ }
237
+ }
238
+
239
+ // ─── Мобильная (до 768px) ────────────────────────────────────────────────────
240
+ @media (max-width: 768px) {
241
+ .tariff-plan {
242
+ &__grid {
243
+ grid-template-columns: 1fr 1fr;
244
+ gap: 16px;
245
+ }
246
+
247
+ &__subtitle {
248
+ font-size: 14px;
249
+ }
250
+ }
251
+
252
+ .tariff-card {
253
+ &__price {
254
+ font-size: 22px;
255
+ }
256
+ }
257
+ }
258
+
259
+ // ─── Мобильная (до 550px) ────────────────────────────────────────────────────
260
+ @media (max-width: 550px) {
261
+ .tariff-plan {
262
+ &__grid {
263
+ grid-template-columns: 1fr;
264
+ }
265
+ }
266
+ }
267
+
268
+ // ─── Мобильная (до 430px) ────────────────────────────────────────────────────
269
+ @media (max-width: $mobile) {
270
+ .tariff-plan {
271
+ padding: 40px 20px;
272
+
273
+ &__inner {
274
+ gap: 36px;
275
+ }
276
+
277
+ &__title {
278
+ font-size: 22px;
279
+ }
280
+
281
+ &__subtitle {
282
+ font-size: 13px;
283
+ }
284
+
285
+ &__grid {
286
+ gap: 12px;
287
+ }
288
+ }
289
+
290
+ .tariff-card {
291
+ padding: 20px 16px 20px;
292
+
293
+ &__price {
294
+ font-size: 20px;
295
+ }
296
+
297
+ &__feature {
298
+ font-size: 12px;
299
+ }
300
+ }
301
+ }
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <rect x="6" y="20" width="6" height="10" rx="2" fill="currentColor" opacity="0.25" />
3
+ <rect x="15" y="13" width="6" height="17" rx="2" fill="currentColor" opacity="0.45" />
4
+ <rect x="24" y="6" width="6" height="24" rx="2" fill="currentColor" />
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M21 4L10 20h9l-4 12 17-18h-9L21 4z"
3
+ fill="currentColor" opacity="0.2"
4
+ stroke="currentColor" strokeWidth="1.8" strokeLinejoin="round" />
5
+ </svg>
@@ -0,0 +1,5 @@
1
+ <svg className="tariff-card__feature-icon" viewBox="0 0 15 15" fill="none">
2
+ <path d="M3 7.5l3 3 6-6"
3
+ stroke="currentColor" strokeWidth="1.8"
4
+ strokeLinecap="round" strokeLinejoin="round" />
5
+ </svg>
@@ -0,0 +1,9 @@
1
+ <svg className="tariff-card__feature-icon" viewBox="0 0 15 15" fill="none">
2
+ <path
3
+ d="M3 7.5l3 3 6-6"
4
+ stroke="currentColor"
5
+ strokeWidth="1.8"
6
+ strokeLinecap="round"
7
+ strokeLinejoin="round"
8
+ />
9
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M6 26h24M6 26L9 14l7 6 2-8 2 8 7-6 3 12"
3
+ stroke="currentColor" strokeWidth="1.8" strokeLinejoin="round" strokeLinecap="round" />
4
+ <circle cx="9" cy="13" r="2" fill="currentColor" />
5
+ <circle cx="27" cy="13" r="2" fill="currentColor" />
6
+ <circle cx="18" cy="6" r="2" fill="currentColor" />
7
+ </svg>
@@ -0,0 +1,7 @@
1
+ <svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M18 4l10 10-10 18L8 14 18 4z"
3
+ fill="currentColor" opacity="0.18"
4
+ stroke="currentColor" strokeWidth="1.8" strokeLinejoin="round" />
5
+ <path d="M8 14h20" stroke="currentColor" strokeWidth="1.8" />
6
+ <path d="M12 14L18 4M24 14L18 4" stroke="currentColor" strokeWidth="1.2" opacity="0.5" />
7
+ </svg>
@@ -0,0 +1,8 @@
1
+ <svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M18 4C18 4 11 10 11 19c0 3.87 3.13 7 7 7s7-3.13 7-7C25 10 18 4 18 4z"
3
+ fill="currentColor" opacity="0.18" />
4
+ <path d="M18 4s-7 6-7 15c0 3.87 3.13 7 7 7s7-3.13 7-7C25 10 18 4 18 4z"
5
+ stroke="currentColor" strokeWidth="1.6" strokeLinejoin="round" />
6
+ <circle cx="18" cy="19" r="2.5" fill="currentColor" />
7
+ <path d="M13 26l-3 4M23 26l3 4" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" />
8
+ </svg>
package/dist/index.js CHANGED
@@ -381,6 +381,12 @@ Object.defineProperty(exports, "TariffPlan", {
381
381
  return _TariffPlan["default"];
382
382
  }
383
383
  });
384
+ Object.defineProperty(exports, "TariffPlanV2", {
385
+ enumerable: true,
386
+ get: function get() {
387
+ return _TariffPlanV["default"];
388
+ }
389
+ });
384
390
  Object.defineProperty(exports, "TextareaDynamicPlaceholder", {
385
391
  enumerable: true,
386
392
  get: function get() {
@@ -425,6 +431,7 @@ var _PhoneBlockV = _interopRequireDefault(require("./components/ConstructorCompo
425
431
  var _Questions = _interopRequireDefault(require("./components/ConstructorComponents/Questions/Questions"));
426
432
  var _QuestionsV = _interopRequireDefault(require("./components/ConstructorComponents/QuestionsV2/QuestionsV2"));
427
433
  var _TariffPlan = _interopRequireDefault(require("./components/ConstructorComponents/Tariff/TariffPlan"));
434
+ var _TariffPlanV = _interopRequireDefault(require("./components/ConstructorComponents/TariffPlanV2/TariffPlanV2"));
428
435
  var _VideoBlock = _interopRequireDefault(require("./components/ConstructorComponents/VideoBlock/VideoBlock"));
429
436
  var _VideoBlockV = _interopRequireDefault(require("./components/ConstructorComponents/VideoBlockV2/VideoBlockV2"));
430
437
  var _ArticlesBlock = _interopRequireDefault(require("./components/ConstructorComponents/ArticlesBlock/ArticlesBlock"));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ecomlab-components-next",
3
- "version": "0.1.288",
3
+ "version": "0.1.290",
4
4
  "description": "A set of common and reusable React components",
5
5
  "main": "dist/index.js",
6
6
  "files": [