@megafon/ui-shared 8.2.2 → 8.4.0
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.
- package/dist/es/components/BenefitsIcons/style/BenefitsIconsTile.css +1 -1
- package/dist/es/components/BenefitsIcons/types.d.ts +2 -0
- package/dist/es/components/BenefitsIcons/types.js +3 -1
- package/dist/es/components/Container/Container.css +1 -1
- package/dist/es/components/NumbersBox/NumbersBox.css +1 -0
- package/dist/es/components/NumbersBox/NumbersBox.d.ts +35 -0
- package/dist/es/components/NumbersBox/NumbersBox.js +72 -0
- package/dist/es/components/NumbersBox/components/NumbersCard/NumbersCard.css +1 -0
- package/dist/es/components/NumbersBox/components/NumbersCard/NumbersCard.d.ts +16 -0
- package/dist/es/components/NumbersBox/components/NumbersCard/NumbersCard.js +28 -0
- package/dist/es/components/NumbersBox/types.d.ts +7 -0
- package/dist/es/components/NumbersBox/types.js +1 -0
- package/dist/es/components/Partners/Partners.d.ts +1 -0
- package/dist/es/components/Partners/Partners.js +5 -1
- package/dist/es/components/PromoCards/PromoCards.d.ts +3 -1
- package/dist/es/components/PromoCards/PromoCards.js +17 -12
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.d.ts +3 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.js +39 -4
- package/dist/es/components/PromoCards/types.d.ts +23 -0
- package/dist/es/index.d.ts +2 -0
- package/dist/es/index.js +2 -0
- package/dist/lib/components/BenefitsIcons/style/BenefitsIconsTile.css +1 -1
- package/dist/lib/components/BenefitsIcons/types.d.ts +2 -0
- package/dist/lib/components/BenefitsIcons/types.js +3 -1
- package/dist/lib/components/Container/Container.css +1 -1
- package/dist/lib/components/NumbersBox/NumbersBox.css +1 -0
- package/dist/lib/components/NumbersBox/NumbersBox.d.ts +35 -0
- package/dist/lib/components/NumbersBox/NumbersBox.js +81 -0
- package/dist/lib/components/NumbersBox/components/NumbersCard/NumbersCard.css +1 -0
- package/dist/lib/components/NumbersBox/components/NumbersCard/NumbersCard.d.ts +16 -0
- package/dist/lib/components/NumbersBox/components/NumbersCard/NumbersCard.js +37 -0
- package/dist/lib/components/NumbersBox/types.d.ts +7 -0
- package/dist/lib/components/NumbersBox/types.js +5 -0
- package/dist/lib/components/Partners/Partners.d.ts +1 -0
- package/dist/lib/components/Partners/Partners.js +5 -1
- package/dist/lib/components/PromoCards/PromoCards.d.ts +3 -1
- package/dist/lib/components/PromoCards/PromoCards.js +17 -12
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.d.ts +3 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.js +38 -3
- package/dist/lib/components/PromoCards/types.d.ts +23 -0
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +14 -0
- package/package.json +3 -3
@@ -0,0 +1,35 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Carousel } from '@megafon/ui-core';
|
3
|
+
import { BackgroundType, CardDataType, SubtitleSizeType, TitleColorType } from './types';
|
4
|
+
import './NumbersBox.scss';
|
5
|
+
type CarouselProps = React.ComponentProps<typeof Carousel>;
|
6
|
+
export interface INumbersBox {
|
7
|
+
/** Список карточек. Минимальное количество 3 карточки */
|
8
|
+
items: CardDataType[];
|
9
|
+
/** Визуальный эффект фона для карточки */
|
10
|
+
background?: BackgroundType;
|
11
|
+
/** Цвет текста заголовка карточки */
|
12
|
+
titleColor?: TitleColorType;
|
13
|
+
/** Размер дополнительного текста карточки */
|
14
|
+
subtitleSize?: SubtitleSizeType;
|
15
|
+
/** Тема навигации для карусели */
|
16
|
+
carouselNavTheme?: CarouselProps['navTheme'];
|
17
|
+
/** Цвет градиента для карусели */
|
18
|
+
carouselGradientColor?: CarouselProps['gradientColor'];
|
19
|
+
/** Дополнительный css класс для корневого элемента */
|
20
|
+
className?: string;
|
21
|
+
/** Дополнительные css классы для корневого и внутренних элементов */
|
22
|
+
classes?: {
|
23
|
+
root?: string;
|
24
|
+
card?: string;
|
25
|
+
};
|
26
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
27
|
+
dataAttrs?: {
|
28
|
+
root?: Record<string, string>;
|
29
|
+
card?: Record<string, string>;
|
30
|
+
};
|
31
|
+
/** Ссылка на элемент */
|
32
|
+
rootRef?: React.Ref<HTMLDivElement>;
|
33
|
+
}
|
34
|
+
declare const NumbersBox: React.FC<INumbersBox>;
|
35
|
+
export default NumbersBox;
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
2
|
+
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
+
import "core-js/modules/es.array.map.js";
|
4
|
+
import * as React from 'react';
|
5
|
+
import { Carousel } from '@megafon/ui-core';
|
6
|
+
import { cnCreate, breakpoints, filterDataAttrs } from '@megafon/ui-helpers';
|
7
|
+
import NumbersCard from "./components/NumbersCard/NumbersCard";
|
8
|
+
import "./NumbersBox.css";
|
9
|
+
var slidesSettings = _defineProperty(_defineProperty(_defineProperty({}, breakpoints.MOBILE_SMALL_START, {
|
10
|
+
slidesPerView: 1,
|
11
|
+
spaceBetween: 20
|
12
|
+
}), breakpoints.MOBILE_BIG_START, {
|
13
|
+
slidesPerView: 3,
|
14
|
+
spaceBetween: 20
|
15
|
+
}), breakpoints.DESKTOP_SMALL_START, {
|
16
|
+
slidesPerView: 4,
|
17
|
+
spaceBetween: 20
|
18
|
+
});
|
19
|
+
var MIN_ITEMS_COUNT = 3;
|
20
|
+
var FOUR_ITEMS = 4;
|
21
|
+
var MIN_CAROUSEL_ITEMS_COUNT = 5;
|
22
|
+
var cn = cnCreate('mfui-numbers-box');
|
23
|
+
var NumbersBox = function NumbersBox(_ref) {
|
24
|
+
var items = _ref.items,
|
25
|
+
_ref$background = _ref.background,
|
26
|
+
background = _ref$background === void 0 ? 'shadow' : _ref$background,
|
27
|
+
_ref$titleColor = _ref.titleColor,
|
28
|
+
titleColor = _ref$titleColor === void 0 ? 'default' : _ref$titleColor,
|
29
|
+
_ref$subtitleSize = _ref.subtitleSize,
|
30
|
+
subtitleSize = _ref$subtitleSize === void 0 ? 'medium' : _ref$subtitleSize,
|
31
|
+
carouselNavTheme = _ref.carouselNavTheme,
|
32
|
+
carouselGradientColor = _ref.carouselGradientColor,
|
33
|
+
dataAttrs = _ref.dataAttrs,
|
34
|
+
className = _ref.className,
|
35
|
+
classes = _ref.classes,
|
36
|
+
rootRef = _ref.rootRef;
|
37
|
+
if (items.length < MIN_ITEMS_COUNT) {
|
38
|
+
return null;
|
39
|
+
}
|
40
|
+
var showCarousel = items.length >= MIN_CAROUSEL_ITEMS_COUNT;
|
41
|
+
var isGridLayout = items.length === FOUR_ITEMS;
|
42
|
+
var hasLargeSpacing = background === 'none' && !showCarousel;
|
43
|
+
var renderItem = function renderItem(item, index) {
|
44
|
+
return /*#__PURE__*/React.createElement(NumbersCard, _extends({}, item, {
|
45
|
+
background: background,
|
46
|
+
titleColor: titleColor,
|
47
|
+
subtitleSize: subtitleSize,
|
48
|
+
dataAttrs: {
|
49
|
+
root: filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.card, index + 1)
|
50
|
+
},
|
51
|
+
className: cn('card', [classes === null || classes === void 0 ? void 0 : classes.card]),
|
52
|
+
key: index + item.title
|
53
|
+
}));
|
54
|
+
};
|
55
|
+
var renderCarousel = function renderCarousel() {
|
56
|
+
return /*#__PURE__*/React.createElement(Carousel, {
|
57
|
+
slidesSettings: slidesSettings,
|
58
|
+
navTheme: carouselNavTheme,
|
59
|
+
gradient: true,
|
60
|
+
gradientColor: carouselGradientColor
|
61
|
+
}, items.map(renderItem));
|
62
|
+
};
|
63
|
+
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
64
|
+
className: cn({
|
65
|
+
line: !showCarousel,
|
66
|
+
grid: isGridLayout,
|
67
|
+
spaced: hasLargeSpacing
|
68
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
69
|
+
ref: rootRef
|
70
|
+
}), showCarousel ? renderCarousel() : items.map(renderItem));
|
71
|
+
};
|
72
|
+
export default NumbersBox;
|
@@ -0,0 +1 @@
|
|
1
|
+
h1,h2,h3,h4,h5{margin:0}.mfui-numbers-card{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;background-color:var(--base);border-radius:24px;color:var(--content);-ms-flex-direction:column;flex-direction:column;gap:4px;min-height:100%;padding:24px}@media screen and (min-width:1280px){.mfui-numbers-card{gap:8px;padding:32px}}.mfui-numbers-card_background_shadow{-webkit-box-shadow:0 2px 12px 0 rgba(0,0,0,.1);box-shadow:0 2px 12px 0 rgba(0,0,0,.1)}.mfui-numbers-card_background_stroke{background-color:transparent;border:1px solid var(--spbSky2)}.mfui-numbers-card_background_gray{background-color:var(--spbSky0)}.mfui-numbers-card_background_none{background-color:transparent;border-radius:0;padding:0}.mfui-numbers-card__title{color:var(--brandGreen);font-size:36px;font-weight:600;font-weight:700;letter-spacing:.5px;line-height:30px}@media screen and (min-width:768px) and (max-width:1023px){.mfui-numbers-card__title{font-size:36px;line-height:40px}}@media screen and (min-width:1024px){.mfui-numbers-card__title{font-size:44px;line-height:48px}}@media screen and (min-width:1280px){.mfui-numbers-card__title{font-size:52px;line-height:56px}}@media screen and (max-width:1023px){.mfui-numbers-card__title{letter-spacing:0;line-height:40px}}.mfui-numbers-card__title_color_night{color:var(--night)}.mfui-numbers-card__title_color_berry{color:var(--berry)}.mfui-numbers-card__title_color_flamingo{color:var(--flamingo)}.mfui-numbers-card__subtitle{font-size:18px;font-weight:500;letter-spacing:.5px;line-height:24px;overflow:hidden}@media screen and (min-width:1280px){.mfui-numbers-card__subtitle{font-size:20px;line-height:28px}}@media screen and (max-width:1023px){.mfui-numbers-card__subtitle{letter-spacing:0}}.mfui-numbers-card__subtitle_size_small{font-size:15px;font-weight:500;line-height:24px}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { BackgroundType, SubtitleSizeType, TitleColorType } from '../../types';
|
3
|
+
import './NumbersCard.scss';
|
4
|
+
export interface INumbersCard {
|
5
|
+
title: string;
|
6
|
+
subtitle: string;
|
7
|
+
titleColor?: TitleColorType;
|
8
|
+
subtitleSize?: SubtitleSizeType;
|
9
|
+
background?: BackgroundType;
|
10
|
+
className?: string;
|
11
|
+
dataAttrs?: {
|
12
|
+
root?: Record<string, string>;
|
13
|
+
};
|
14
|
+
}
|
15
|
+
declare const NumbersCard: React.FC<INumbersCard>;
|
16
|
+
export default NumbersCard;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
2
|
+
import * as React from 'react';
|
3
|
+
import { cnCreate, convert, textConvertConfig } from '@megafon/ui-helpers';
|
4
|
+
import "./NumbersCard.css";
|
5
|
+
var cn = cnCreate('mfui-numbers-card');
|
6
|
+
var NumbersCard = function NumbersCard(_ref) {
|
7
|
+
var title = _ref.title,
|
8
|
+
titleColor = _ref.titleColor,
|
9
|
+
subtitle = _ref.subtitle,
|
10
|
+
subtitleSize = _ref.subtitleSize,
|
11
|
+
background = _ref.background,
|
12
|
+
className = _ref.className,
|
13
|
+
dataAttrs = _ref.dataAttrs;
|
14
|
+
return /*#__PURE__*/React.createElement("div", _extends({
|
15
|
+
className: cn({
|
16
|
+
background: background
|
17
|
+
}, [className])
|
18
|
+
}, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), /*#__PURE__*/React.createElement("div", {
|
19
|
+
className: cn('title', {
|
20
|
+
color: titleColor
|
21
|
+
})
|
22
|
+
}, convert(title, {})), /*#__PURE__*/React.createElement("div", {
|
23
|
+
className: cn('subtitle', {
|
24
|
+
size: subtitleSize
|
25
|
+
})
|
26
|
+
}, convert(subtitle, textConvertConfig)));
|
27
|
+
};
|
28
|
+
export default NumbersCard;
|
@@ -0,0 +1,7 @@
|
|
1
|
+
export type CardDataType = {
|
2
|
+
title: string;
|
3
|
+
subtitle: string;
|
4
|
+
};
|
5
|
+
export type TitleColorType = 'default' | 'night' | 'berry' | 'flamingo';
|
6
|
+
export type SubtitleSizeType = 'small' | 'medium';
|
7
|
+
export type BackgroundType = 'shadow' | 'stroke' | 'gray' | 'white' | 'none';
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
@@ -25,6 +25,7 @@ var Partners = function Partners(_ref) {
|
|
25
25
|
_ref$classes2 = _ref$classes === void 0 ? {} : _ref$classes,
|
26
26
|
root = _ref$classes2.root,
|
27
27
|
itemClass = _ref$classes2.itemClass,
|
28
|
+
slide = _ref$classes2.slide,
|
28
29
|
dataAttrs = _ref.dataAttrs,
|
29
30
|
className = _ref.className,
|
30
31
|
items = _ref.items,
|
@@ -77,6 +78,9 @@ var Partners = function Partners(_ref) {
|
|
77
78
|
var topRow = items.slice(0, halfItemsLength);
|
78
79
|
var bottomRow = items.slice(halfItemsLength);
|
79
80
|
return /*#__PURE__*/React.createElement(Carousel, {
|
81
|
+
classes: {
|
82
|
+
slide: cn('slide', [slide])
|
83
|
+
},
|
80
84
|
slidesSettings: slidesSettings,
|
81
85
|
onChange: onChange,
|
82
86
|
onNextClick: onNextClick,
|
@@ -95,7 +99,7 @@ var Partners = function Partners(_ref) {
|
|
95
99
|
className: cn('slide')
|
96
100
|
}, renderItem(item, i), renderItem(bottomRow[i], i));
|
97
101
|
}));
|
98
|
-
}, [items, onChange, onNextClick, onPrevClick, renderItem]);
|
102
|
+
}, [items, slide, onChange, onNextClick, onPrevClick, renderItem]);
|
99
103
|
return /*#__PURE__*/React.createElement("div", _extends({
|
100
104
|
ref: rootRef,
|
101
105
|
className: cn([root, className])
|
@@ -4,7 +4,7 @@ import { IPromoCardData, IPromoCardSettings } from './types';
|
|
4
4
|
type CarouselProps = React.ComponentProps<typeof Carousel>;
|
5
5
|
export interface IPromoCards extends IPromoCardSettings {
|
6
6
|
/** Список карточек. Минимальное количество 2 карточки */
|
7
|
-
items
|
7
|
+
items?: IPromoCardData[];
|
8
8
|
/** Тема навигации для карусели */
|
9
9
|
carouselNavTheme?: CarouselProps['navTheme'];
|
10
10
|
/** Цвет градиента для карусели */
|
@@ -23,6 +23,8 @@ export interface IPromoCards extends IPromoCardSettings {
|
|
23
23
|
};
|
24
24
|
/** Ссылка на элемент */
|
25
25
|
rootRef?: React.Ref<HTMLDivElement>;
|
26
|
+
/** Дочерние элементы. Минимальное количество 2 элемента */
|
27
|
+
children?: React.ReactNode;
|
26
28
|
}
|
27
29
|
declare const PromoCards: React.FC<IPromoCards>;
|
28
30
|
export default PromoCards;
|
@@ -1,5 +1,6 @@
|
|
1
1
|
import _extends from "@babel/runtime/helpers/extends";
|
2
2
|
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
3
|
+
import "core-js/modules/es.array.is-array.js";
|
3
4
|
import "core-js/modules/es.array.map.js";
|
4
5
|
import * as React from 'react';
|
5
6
|
import { Carousel } from '@megafon/ui-core';
|
@@ -25,10 +26,23 @@ var PromoCards = function PromoCards(_ref) {
|
|
25
26
|
dataAttrs = _ref.dataAttrs,
|
26
27
|
className = _ref.className,
|
27
28
|
classes = _ref.classes,
|
28
|
-
rootRef = _ref.rootRef
|
29
|
-
|
29
|
+
rootRef = _ref.rootRef,
|
30
|
+
children = _ref.children;
|
31
|
+
var itemsLength = (items === null || items === void 0 ? void 0 : items.length) || 0;
|
32
|
+
var childrenLength = Array.isArray(children) ? children.length : 0;
|
33
|
+
if ((childrenLength || itemsLength) < MIN_ITEMS_COUNT) {
|
30
34
|
return null;
|
31
35
|
}
|
36
|
+
var renderItems = (items || []).map(function (item, i) {
|
37
|
+
return /*#__PURE__*/React.createElement(PromoCard, _extends({}, item, {
|
38
|
+
className: classes === null || classes === void 0 ? void 0 : classes.card,
|
39
|
+
dataAttrs: {
|
40
|
+
root: filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.card, i + 1)
|
41
|
+
},
|
42
|
+
background: background,
|
43
|
+
key: i + item.title
|
44
|
+
}));
|
45
|
+
});
|
32
46
|
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
33
47
|
className: cn([className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
34
48
|
ref: rootRef
|
@@ -37,15 +51,6 @@ var PromoCards = function PromoCards(_ref) {
|
|
37
51
|
navTheme: carouselNavTheme,
|
38
52
|
gradient: true,
|
39
53
|
gradientColor: carouselGradientColor
|
40
|
-
},
|
41
|
-
return /*#__PURE__*/React.createElement(PromoCard, _extends({}, item, {
|
42
|
-
background: background,
|
43
|
-
dataAttrs: {
|
44
|
-
root: filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.card, i + 1)
|
45
|
-
},
|
46
|
-
className: classes === null || classes === void 0 ? void 0 : classes.card,
|
47
|
-
key: i + item.title
|
48
|
-
}));
|
49
|
-
})));
|
54
|
+
}, childrenLength ? children : renderItems));
|
50
55
|
};
|
51
56
|
export default PromoCards;
|
@@ -2,10 +2,13 @@ import * as React from 'react';
|
|
2
2
|
import { IPromoCardData, IPromoCardSettings } from '../../types';
|
3
3
|
import './PromoCard.scss';
|
4
4
|
export interface IPromoCard extends IPromoCardData, IPromoCardSettings {
|
5
|
+
/** Дополнительный css класс для корневого элемента */
|
5
6
|
className?: string;
|
7
|
+
/** Дополнительные css классы для корневого элемента */
|
6
8
|
classes?: {
|
7
9
|
root?: string;
|
8
10
|
};
|
11
|
+
/** Дополнительные data атрибуты к корневому и внутренним элементам */
|
9
12
|
dataAttrs?: {
|
10
13
|
root?: Record<string, string>;
|
11
14
|
image?: Record<string, string>;
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import "core-js/modules/es.array.concat.js";
|
3
3
|
import "core-js/modules/es.string.link.js";
|
4
4
|
import * as React from 'react';
|
5
|
-
import { Button, Header, Paragraph } from '@megafon/ui-core';
|
5
|
+
import { Button, Header, Paragraph, PriceBadge, PromoBadge } from '@megafon/ui-core';
|
6
6
|
import { cnCreate, convert, filterDataAttrs } from '@megafon/ui-helpers';
|
7
7
|
import { setRelAttribute } from "../../../../helpers/setRelAttribute";
|
8
8
|
import "./PromoCard.css";
|
@@ -16,6 +16,10 @@ var PromoCard = function PromoCard(_ref) {
|
|
16
16
|
image = _ref.image,
|
17
17
|
logo = _ref.logo,
|
18
18
|
badge = _ref.badge,
|
19
|
+
_ref$promoBadge = _ref.promoBadge,
|
20
|
+
promoBadge = _ref$promoBadge === void 0 ? null : _ref$promoBadge,
|
21
|
+
_ref$priceBadge = _ref.priceBadge,
|
22
|
+
priceBadge = _ref$priceBadge === void 0 ? null : _ref$priceBadge,
|
19
23
|
className = _ref.className,
|
20
24
|
classes = _ref.classes,
|
21
25
|
dataAttrs = _ref.dataAttrs,
|
@@ -28,7 +32,40 @@ var PromoCard = function PromoCard(_ref) {
|
|
28
32
|
linkTarget = _link$target === void 0 ? '_self' : _link$target,
|
29
33
|
linkRel = link.rel,
|
30
34
|
linkTitle = link.title;
|
35
|
+
var _ref2 = promoBadge || {},
|
36
|
+
promoBadgeText = _ref2.text,
|
37
|
+
promoBadgeColor = _ref2.color;
|
38
|
+
var _ref3 = priceBadge || {},
|
39
|
+
priceBadgeText = _ref3.text,
|
40
|
+
priceBadgeIcon = _ref3.iconType,
|
41
|
+
priceBadgeTheme = _ref3.theme;
|
31
42
|
var imageSrcSet = imageSrc2x ? "".concat(imageSrc, ", ").concat(imageSrc2x, " 2x") : undefined;
|
43
|
+
var hasBadge = !!promoBadgeText || !!priceBadgeText || !!badge;
|
44
|
+
var renderBadge = React.useMemo(function () {
|
45
|
+
switch (true) {
|
46
|
+
case !!promoBadgeText:
|
47
|
+
return /*#__PURE__*/React.createElement(PromoBadge, {
|
48
|
+
className: cn('badge'),
|
49
|
+
dataAttrs: {
|
50
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.badge
|
51
|
+
},
|
52
|
+
color: promoBadgeColor
|
53
|
+
}, promoBadgeText);
|
54
|
+
case !!priceBadgeText:
|
55
|
+
return /*#__PURE__*/React.createElement(PriceBadge, {
|
56
|
+
className: cn('badge'),
|
57
|
+
dataAttrs: {
|
58
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.badge
|
59
|
+
},
|
60
|
+
iconType: priceBadgeIcon,
|
61
|
+
theme: priceBadgeTheme
|
62
|
+
}, priceBadgeText);
|
63
|
+
default:
|
64
|
+
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.badge), {
|
65
|
+
className: cn('badge')
|
66
|
+
}), badge);
|
67
|
+
}
|
68
|
+
}, [dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.badge, promoBadgeText, promoBadgeColor, priceBadgeText, priceBadgeIcon, priceBadgeTheme, badge]);
|
32
69
|
return /*#__PURE__*/React.createElement("a", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
33
70
|
className: cn({
|
34
71
|
background: background
|
@@ -45,9 +82,7 @@ var PromoCard = function PromoCard(_ref) {
|
|
45
82
|
alt: imageAlt || ''
|
46
83
|
})), /*#__PURE__*/React.createElement("div", {
|
47
84
|
className: cn('content')
|
48
|
-
}, !!
|
49
|
-
className: cn('badge')
|
50
|
-
}), badge), !!(logo === null || logo === void 0 ? void 0 : logo.src) && !badge && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.logo), {
|
85
|
+
}, hasBadge && renderBadge, !!(logo === null || logo === void 0 ? void 0 : logo.src) && !hasBadge && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.logo), {
|
51
86
|
className: cn('logo')
|
52
87
|
}), /*#__PURE__*/React.createElement("img", {
|
53
88
|
className: cn('logo-img'),
|
@@ -1,3 +1,5 @@
|
|
1
|
+
import type { IPriceBadgeProps } from '@megafon/ui-core/dist/lib/components/Badges/PriceBadge/PriceBadge';
|
2
|
+
import type { IPromoBadgeProps } from '@megafon/ui-core/dist/lib/components/Badges/PromoBadge/PromoBadge';
|
1
3
|
type ImageType = {
|
2
4
|
src: string;
|
3
5
|
src2x?: string;
|
@@ -13,16 +15,37 @@ type LinkType = {
|
|
13
15
|
target?: '_self' | '_blank';
|
14
16
|
rel?: string;
|
15
17
|
};
|
18
|
+
type PromoBadgeType = {
|
19
|
+
text: string;
|
20
|
+
color: IPromoBadgeProps['color'];
|
21
|
+
};
|
22
|
+
type PriceBadgeType = {
|
23
|
+
text: string;
|
24
|
+
iconType?: IPriceBadgeProps['iconType'];
|
25
|
+
theme?: IPriceBadgeProps['theme'];
|
26
|
+
};
|
16
27
|
export interface IPromoCardSettings {
|
28
|
+
/** Фон карточки */
|
17
29
|
background?: 'gray' | 'white' | 'shadow';
|
18
30
|
}
|
19
31
|
export interface IPromoCardData {
|
32
|
+
/** Заголовок карточки */
|
20
33
|
title: string;
|
34
|
+
/** Подзаголовок карточки */
|
21
35
|
subtitle?: string;
|
36
|
+
/** Параметры для ссылки в карточке */
|
22
37
|
link: LinkType;
|
38
|
+
/** Параметры для изображения в карточке */
|
23
39
|
image: ImageType;
|
40
|
+
/** Параметры для логотипа в карточке */
|
24
41
|
logo?: LogoType;
|
42
|
+
/** Бейдж в карточке */
|
25
43
|
badge?: React.ReactElement | null;
|
44
|
+
/** Параметры для отображения компонента PromoBadge в карточке */
|
45
|
+
promoBadge?: PromoBadgeType | null;
|
46
|
+
/** Параметры для отображения компонента PriceBadge в карточке */
|
47
|
+
priceBadge?: PriceBadgeType | null;
|
48
|
+
/** Обработчик клика по карточке */
|
26
49
|
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
27
50
|
}
|
28
51
|
export {};
|
package/dist/es/index.d.ts
CHANGED
@@ -28,6 +28,8 @@ export { default as InfoCard } from './components/InfoCards/components/InfoCard/
|
|
28
28
|
export { default as InfoCards } from './components/InfoCards/InfoCards';
|
29
29
|
export { default as Instructions } from './components/Instructions/Instructions';
|
30
30
|
export { default as NotificationBox } from './components/NotificationBox/NotificationBox';
|
31
|
+
export { default as NumbersBox } from './components/NumbersBox/NumbersBox';
|
32
|
+
export { default as NumbersCard } from './components/NumbersBox/components/NumbersCard/NumbersCard';
|
31
33
|
export { default as PageTitle } from './components/PageTitle/PageTitle';
|
32
34
|
export { default as Partners } from './components/Partners/Partners';
|
33
35
|
export { default as PictureBox } from './components/PictureBox/PictureBox';
|
package/dist/es/index.js
CHANGED
@@ -28,6 +28,8 @@ export { default as InfoCard } from "./components/InfoCards/components/InfoCard/
|
|
28
28
|
export { default as InfoCards } from "./components/InfoCards/InfoCards";
|
29
29
|
export { default as Instructions } from "./components/Instructions/Instructions";
|
30
30
|
export { default as NotificationBox } from "./components/NotificationBox/NotificationBox";
|
31
|
+
export { default as NumbersBox } from "./components/NumbersBox/NumbersBox";
|
32
|
+
export { default as NumbersCard } from "./components/NumbersBox/components/NumbersCard/NumbersCard";
|
31
33
|
export { default as PageTitle } from "./components/PageTitle/PageTitle";
|
32
34
|
export { default as Partners } from "./components/Partners/Partners";
|
33
35
|
export { default as PictureBox } from "./components/PictureBox/PictureBox";
|
@@ -1 +1 @@
|
|
1
|
-
h1,h2,h3,h4,h5{margin:0}.mfui-benefits-icons-tile{border-radius:
|
1
|
+
h1,h2,h3,h4,h5{margin:0}.mfui-benefits-icons-tile{border-radius:24px;min-height:100%;padding:24px}.mfui-benefits-icons-tile_background_transparent{padding:0}.mfui-benefits-icons-tile_background_gray{background-color:var(--spbSky0)}.mfui-benefits-icons-tile_background_green{background-color:var(--brandGreen20)}.mfui-benefits-icons-tile_background_purple{background-color:var(--brandPurple20)}.mfui-benefits-icons-tile_background_white{background-color:var(--base)}.mfui-benefits-icons-tile_background_stroke{border:1px solid var(--spbSky2)}.mfui-benefits-icons-tile .mfui-benefits-icons-tile__svg-icon{margin-bottom:10px}.mfui-benefits-icons-tile__content{font-size:15px;font-weight:400;line-height:24px}.mfui-benefits-icons-tile__title+.mfui-benefits-icons-tile__content{margin-top:4px}.mfui-benefits-icons-tile__text{margin-bottom:0}.mfui-benefits-icons-tile__img-icon{border-radius:8px;height:64px;width:64px}.mfui-benefits-icons-tile__svg-icon{height:40px;overflow:hidden;width:40px}.mfui-benefits-icons-tile__svg-icon svg{fill:var(--brandGreen)!important}.mfui-benefits-icons-tile_background_purple .mfui-benefits-icons-tile__svg-icon svg{fill:var(--brandPurple)!important}.mfui-benefits-icons-tile_icon-position_left-side .mfui-benefits-icons-tile__inner{display:-webkit-box;display:-ms-flexbox;display:flex}.mfui-benefits-icons-tile_icon-position_left-side .mfui-benefits-icons-tile__content-wrapper{padding-top:8px}.mfui-benefits-icons-tile_icon-position_left-side .mfui-benefits-icons-tile__img-icon,.mfui-benefits-icons-tile_icon-position_left-side .mfui-benefits-icons-tile__svg-icon{-ms-flex-negative:0;flex-shrink:0;margin-bottom:0;margin-right:14px}.mfui-benefits-icons-tile_icon-position_left-side.mfui-benefits-icons-tile_image .mfui-benefits-icons-tile__inner{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mfui-benefits-icons-tile_icon-position_left-side.mfui-benefits-icons-tile_image .mfui-benefits-icons-tile__content-wrapper{padding-top:0}.mfui-benefits-icons-tile_icon-position_left-side.mfui-benefits-icons-tile_image .mfui-benefits-icons-tile__img-icon,.mfui-benefits-icons-tile_icon-position_left-side.mfui-benefits-icons-tile_image .mfui-benefits-icons-tile__svg-icon{-ms-flex-item-align:start;align-self:start}.mfui-benefits-icons-tile_icon-position_center-top .mfui-benefits-icons-tile__inner{text-align:center}.mfui-benefits-icons-tile_icon-position_center-top .mfui-benefits-icons-tile__img-icon,.mfui-benefits-icons-tile_icon-position_center-top .mfui-benefits-icons-tile__svg-icon{margin-left:auto;margin-right:auto}
|
@@ -37,6 +37,8 @@ export declare const BackgroundEnum: {
|
|
37
37
|
readonly GRAY: "gray";
|
38
38
|
readonly GREEN: "green";
|
39
39
|
readonly PURPLE: "purple";
|
40
|
+
readonly WHITE: "white";
|
41
|
+
readonly STROKE: "stroke";
|
40
42
|
};
|
41
43
|
export type BackgroundType = (typeof BackgroundEnum)[keyof typeof BackgroundEnum];
|
42
44
|
export type GridConfig = {
|