@megafon/ui-shared 7.4.0 → 7.6.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/ButtonsBox/ButtonsBox.css +1 -0
- package/dist/es/components/ButtonsBox/ButtonsBox.d.ts +48 -0
- package/dist/es/components/ButtonsBox/ButtonsBox.js +47 -0
- package/dist/es/components/Container/Container.css +1 -1
- package/dist/es/components/Container/Container.d.ts +2 -0
- package/dist/es/components/Container/Container.js +6 -2
- package/dist/es/components/InfoCards/InfoCards.d.ts +3 -0
- package/dist/es/components/InfoCards/InfoCards.js +7 -2
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.d.ts +4 -0
- package/dist/es/components/InfoCards/components/InfoCard/InfoCard.js +16 -10
- package/dist/es/components/InfoCards/types.d.ts +6 -1
- package/dist/es/components/PromoCards/PromoCards.d.ts +28 -0
- package/dist/es/components/PromoCards/PromoCards.js +51 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.css +1 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.d.ts +18 -0
- package/dist/es/components/PromoCards/components/PromoCard/PromoCard.js +72 -0
- package/dist/es/components/PromoCards/types.d.ts +28 -0
- package/dist/es/components/PromoCards/types.js +1 -0
- package/dist/es/index.d.ts +3 -0
- package/dist/es/index.js +3 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.css +1 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.d.ts +48 -0
- package/dist/lib/components/ButtonsBox/ButtonsBox.js +56 -0
- package/dist/lib/components/Container/Container.css +1 -1
- package/dist/lib/components/Container/Container.d.ts +2 -0
- package/dist/lib/components/Container/Container.js +6 -2
- package/dist/lib/components/InfoCards/InfoCards.d.ts +3 -0
- package/dist/lib/components/InfoCards/InfoCards.js +7 -2
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.d.ts +4 -0
- package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.js +15 -9
- package/dist/lib/components/InfoCards/types.d.ts +6 -1
- package/dist/lib/components/PromoCards/PromoCards.d.ts +28 -0
- package/dist/lib/components/PromoCards/PromoCards.js +61 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.css +1 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.d.ts +18 -0
- package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.js +81 -0
- package/dist/lib/components/PromoCards/types.d.ts +28 -0
- package/dist/lib/components/PromoCards/types.js +5 -0
- package/dist/lib/index.d.ts +3 -0
- package/dist/lib/index.js +21 -0
- package/package.json +4 -4
@@ -1 +1 @@
|
|
1
|
-
h1,h2,h3,h4,h5{margin:0}.mfui-info-card{border-radius:24px;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--content);-webkit-column-gap:12px;-moz-column-gap:12px;column-gap:12px;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:15px;line-height:24px;-webkit-transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,box-shadow .3s;transition:background-color .3s,box-shadow .3s,-webkit-box-shadow .3s}.mfui-info-card,.mfui-info-card:hover{text-decoration:none}.mfui-info-card__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mfui-info-card__title+.mfui-info-card__description{margin-top:8px}.mfui-info-card__more-info{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:12px;line-height:18px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;margin-top:auto;padding-top:12px;-webkit-transition:color .3s;transition:color .3s}.mfui-info-
|
1
|
+
h1,h2,h3,h4,h5{margin:0}.mfui-info-card{border-radius:24px;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--content);-webkit-column-gap:12px;-moz-column-gap:12px;column-gap:12px;display:-webkit-box;display:-ms-flexbox;display:flex;font-family:inherit;font-size:15px;line-height:24px;-webkit-transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,-webkit-box-shadow .3s;transition:background-color .3s,box-shadow .3s;transition:background-color .3s,box-shadow .3s,-webkit-box-shadow .3s}.mfui-info-card,.mfui-info-card:hover{text-decoration:none}.mfui-info-card__content{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1}.mfui-info-card__title+.mfui-info-card__description{margin-top:8px}.mfui-info-card__more-info{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;font-size:12px;line-height:18px;-webkit-box-align:center;-ms-flex-align:center;align-items:center;font-weight:500;margin-top:auto;padding-top:12px;-webkit-transition:color .3s;transition:color .3s}.mfui-info-card_active{cursor:pointer}.mfui-info-card_active:hover .mfui-info-card__more-info{color:var(--brandGreen)}.mfui-info-card__more-info-text{margin-top:-2px}.mfui-info-card__more-info-arrow{height:20px;width:20px;fill:currentColor}.mfui-info-card_size_small{padding:16px 20px}.mfui-info-card_size_small .mfui-info-card__image{height:64px;margin-bottom:16px;width:64px}.mfui-info-card_size_small .mfui-info-card__title{font-size:15px;font-weight:500;line-height:24px}.mfui-info-card_size_small .mfui-info-card__description{font-size:12px;line-height:18px}.mfui-info-card_size_medium{padding:20px 24px}.mfui-info-card_size_medium .mfui-info-card__image{height:80px;margin-bottom:16px;width:80px}@media screen and (min-width:768px){.mfui-info-card_size_medium .mfui-info-card__image{margin-bottom:24px}}.mfui-info-card_size_medium .mfui-info-card__title{font-size:18px;font-weight:500;letter-spacing:.5px;line-height:24px}@media screen and (min-width:1280px){.mfui-info-card_size_medium .mfui-info-card__title{font-size:20px;line-height:28px}}.mfui-info-card_size_big{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;padding:24px}@media screen and (min-width:768px){.mfui-info-card_size_big{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between;padding:32px}}.mfui-info-card_size_big .mfui-info-card__image{-ms-flex-item-align:center;align-self:center;-webkit-box-ordinal-group:2;-ms-flex-order:1;height:150px;order:1;width:150px}@media screen and (max-width:767px){.mfui-info-card_size_big .mfui-info-card__image{-ms-flex-item-align:start;align-self:start;-webkit-box-ordinal-group:1;-ms-flex-order:0;margin-bottom:16px;order:0}}.mfui-info-card_size_big .mfui-info-card__title{font-size:18px;font-weight:500;letter-spacing:.5px;line-height:24px}@media screen and (min-width:1280px){.mfui-info-card_size_big .mfui-info-card__title{font-size:20px;line-height:28px}}.mfui-info-card_size_big .mfui-info-card__more-info{font-size:15px;line-height:24px;padding-top:24px}.mfui-info-card_size_big .mfui-info-card__more-info-arrow{height:32px;width:32px}.mfui-info-card_position_top-left{-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column}.mfui-info-card_position_right-side{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.mfui-info-card_position_right-side .mfui-info-card__image{-ms-flex-item-align:center;align-self:center;-webkit-box-ordinal-group:2;-ms-flex-order:1;margin-bottom:0;order:1}.mfui-info-card_position_right-side .mfui-info-card__title+.mfui-info-card__description{margin-top:2px}.mfui-info-card_position_right-side .mfui-info-card__more-info{padding-top:8px}@media screen and (min-width:768px){.mfui-info-card_size_big.mfui-info-card_align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mfui-info-card_size_big.mfui-info-card_align-center .mfui-info-card__more-info{margin-top:0}}.mfui-info-card_position_right-side.mfui-info-card_align-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.mfui-info-card_position_right-side.mfui-info-card_align-center .mfui-info-card__more-info{margin-top:0}.mfui-info-card_background_stroke{border:1px solid var(--spbSky2)}.mfui-info-card_background_shadow{background-color:var(--base);-webkit-box-shadow:0 2px 12px rgba(0,0,0,.1);box-shadow:0 2px 12px rgba(0,0,0,.1)}.mfui-info-card_background_green{background-color:var(--brandGreen20)}.mfui-info-card_background_purple{background-color:var(--brandPurple20)}.mfui-info-card_background_white{background-color:var(--base)}.mfui-info-card_background_gray{background-color:var(--spbSky0)}.mfui-info-card_background_no{padding:0}.mfui-info-card_background_stroke.mfui-info-card_active:hover{background-color:var(--spbSky0)}.mfui-info-card_background_shadow.mfui-info-card_active:hover,.mfui-info-card_background_white.mfui-info-card_active:hover{-webkit-box-shadow:0 8px 28px rgba(0,0,0,.1);box-shadow:0 8px 28px rgba(0,0,0,.1)}.mfui-info-card_background_gray.mfui-info-card_active:hover{background-color:var(--spbSky1)}.mfui-info-card_background_purple.mfui-info-card_active:hover{background-color:var(--buttonHoverPurpleSoft)}.mfui-info-card_background_green.mfui-info-card_active:hover{background-color:var(--buttonHoverGreenSoft)}
|
@@ -3,6 +3,10 @@ import { IInfoCardData, IInfoCardSettings } from '../../types';
|
|
3
3
|
import './InfoCard.scss';
|
4
4
|
export interface IInfoCard extends IInfoCardSettings, IInfoCardData {
|
5
5
|
className?: string;
|
6
|
+
classes?: {
|
7
|
+
root?: string;
|
8
|
+
title?: string;
|
9
|
+
};
|
6
10
|
dataAttrs?: {
|
7
11
|
root?: Record<string, string>;
|
8
12
|
title?: Record<string, string>;
|
@@ -2,7 +2,7 @@ import _extends from "@babel/runtime/helpers/extends";
|
|
2
2
|
import "core-js/modules/es.symbol.js";
|
3
3
|
import "core-js/modules/es.symbol.description.js";
|
4
4
|
import * as React from 'react';
|
5
|
-
import { cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
|
5
|
+
import { cnCreate, convert, filterDataAttrs } from '@megafon/ui-helpers';
|
6
6
|
import { setRelAttribute } from "../../../../helpers/setRelAttribute";
|
7
7
|
import "./InfoCard.css";
|
8
8
|
var ArrowRight16 = function ArrowRight16(props) {
|
@@ -30,20 +30,23 @@ var InfoCard = function InfoCard(_ref) {
|
|
30
30
|
href = _ref.href,
|
31
31
|
target = _ref.target,
|
32
32
|
rel = _ref.rel,
|
33
|
+
download = _ref.download,
|
33
34
|
moreInfo = _ref.moreInfo,
|
35
|
+
onClick = _ref.onClick,
|
34
36
|
_ref$size = _ref.size,
|
35
37
|
size = _ref$size === void 0 ? 'medium' : _ref$size,
|
36
|
-
|
37
|
-
imgPosition = _ref$imgPosition === void 0 ? 'right-side' : _ref$imgPosition,
|
38
|
+
imgPosition = _ref.imgPosition,
|
38
39
|
_ref$background = _ref.background,
|
39
40
|
background = _ref$background === void 0 ? 'stroke' : _ref$background,
|
40
|
-
dataAttrs = _ref.dataAttrs
|
41
|
+
dataAttrs = _ref.dataAttrs,
|
42
|
+
classes = _ref.classes;
|
41
43
|
var RootElement = href ? 'a' : 'div';
|
42
44
|
var isBigSize = size === 'big';
|
43
45
|
var finalImgPosition = size === 'big' ? false : imgPosition;
|
44
46
|
var isInvalidBackground = background === 'no' && (imgPosition === 'right-side' || size === 'big');
|
45
47
|
var finalBackground = isInvalidBackground ? 'stroke' : background;
|
46
48
|
var isLink = !!href;
|
49
|
+
var isActive = isLink || !!onClick;
|
47
50
|
var renderArrowRight = function renderArrowRight() {
|
48
51
|
var ArrowRight = isBigSize ? ArrowRight24 : ArrowRight16;
|
49
52
|
return /*#__PURE__*/React.createElement(ArrowRight, _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreArrow), {
|
@@ -54,12 +57,15 @@ var InfoCard = function InfoCard(_ref) {
|
|
54
57
|
href: isLink ? href : undefined,
|
55
58
|
target: isLink ? target : undefined,
|
56
59
|
rel: isLink ? setRelAttribute(rel, target) : undefined,
|
60
|
+
download: isLink ? download : undefined,
|
61
|
+
onClick: onClick,
|
57
62
|
className: cn({
|
58
63
|
size: size,
|
59
64
|
position: finalImgPosition,
|
60
65
|
background: finalBackground,
|
61
|
-
|
62
|
-
|
66
|
+
active: isActive,
|
67
|
+
'align-center': !moreInfo
|
68
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root])
|
63
69
|
}), /*#__PURE__*/React.createElement("img", {
|
64
70
|
className: cn('image'),
|
65
71
|
src: imgSrc,
|
@@ -67,13 +73,13 @@ var InfoCard = function InfoCard(_ref) {
|
|
67
73
|
}), /*#__PURE__*/React.createElement("div", {
|
68
74
|
className: cn('content')
|
69
75
|
}, !!title && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title), {
|
70
|
-
className: cn('title')
|
71
|
-
}), title), !!description && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.description), {
|
76
|
+
className: cn('title', [classes === null || classes === void 0 ? void 0 : classes.title])
|
77
|
+
}), convert(title, {})), !!description && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.description), {
|
72
78
|
className: cn('description')
|
73
|
-
}), description), !!moreInfo && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreInfo), {
|
79
|
+
}), convert(description, {})), !!moreInfo && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.moreInfo), {
|
74
80
|
className: cn('more-info')
|
75
81
|
}), /*#__PURE__*/React.createElement("span", {
|
76
82
|
className: cn('more-info-text')
|
77
|
-
}, moreInfo),
|
83
|
+
}, convert(moreInfo, {})), isActive && renderArrowRight())));
|
78
84
|
};
|
79
85
|
export default InfoCard;
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import React from 'react';
|
1
2
|
export interface IInfoCardSettings {
|
2
3
|
/** Размер карточки */
|
3
4
|
size?: 'big' | 'medium' | 'small';
|
4
5
|
/** Расположение изображения */
|
5
6
|
imgPosition?: 'right-side' | 'top-left';
|
6
7
|
/** Фон карточки */
|
7
|
-
background?: 'shadow' | 'stroke' | 'gray' | 'green' | 'purple' | 'white' | '
|
8
|
+
background?: 'shadow' | 'stroke' | 'gray' | 'green' | 'purple' | 'white' | 'no';
|
8
9
|
}
|
9
10
|
export interface IInfoCardData {
|
10
11
|
/** Заголовок */
|
@@ -21,6 +22,10 @@ export interface IInfoCardData {
|
|
21
22
|
target?: '_self' | '_blank';
|
22
23
|
/** Атрибут rel ссылки */
|
23
24
|
rel?: string;
|
25
|
+
/** Добавление атрибута download для ссылки */
|
26
|
+
download?: boolean;
|
24
27
|
/** Дополнительная информация */
|
25
28
|
moreInfo?: string;
|
29
|
+
/** Обработчик клика */
|
30
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
26
31
|
}
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { Carousel } from '@megafon/ui-core';
|
3
|
+
import { IPromoCardData, IPromoCardSettings } from './types';
|
4
|
+
type CarouselProps = React.ComponentProps<typeof Carousel>;
|
5
|
+
export interface IPromoCards extends IPromoCardSettings {
|
6
|
+
/** Список карточек. Минимальное количество 2 карточки */
|
7
|
+
items: IPromoCardData[];
|
8
|
+
/** Тема навигации для карусели */
|
9
|
+
carouselNavTheme?: CarouselProps['navTheme'];
|
10
|
+
/** Цвет градиента для карусели */
|
11
|
+
carouselGradientColor?: CarouselProps['gradientColor'];
|
12
|
+
/** Дополнительный css класс для корневого элемента */
|
13
|
+
className?: string;
|
14
|
+
/** Дополнительные css классы для корневого и внутренних элементов */
|
15
|
+
classes?: {
|
16
|
+
root?: string;
|
17
|
+
card?: string;
|
18
|
+
};
|
19
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
20
|
+
dataAttrs?: {
|
21
|
+
root?: Record<string, string>;
|
22
|
+
card?: Record<string, string>;
|
23
|
+
};
|
24
|
+
/** Ссылка на элемент */
|
25
|
+
rootRef?: React.Ref<HTMLDivElement>;
|
26
|
+
}
|
27
|
+
declare const PromoCards: React.FC<IPromoCards>;
|
28
|
+
export default PromoCards;
|
@@ -0,0 +1,51 @@
|
|
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 PromoCard from "./components/PromoCard/PromoCard";
|
8
|
+
var slidesSettings = _defineProperty(_defineProperty(_defineProperty({}, breakpoints.MOBILE_SMALL_START, {
|
9
|
+
slidesPerView: 1,
|
10
|
+
spaceBetween: 16
|
11
|
+
}), breakpoints.MOBILE_BIG_START, {
|
12
|
+
slidesPerView: 2,
|
13
|
+
spaceBetween: 20
|
14
|
+
}), breakpoints.DESKTOP_SMALL_START, {
|
15
|
+
slidesPerView: 3,
|
16
|
+
spaceBetween: 20
|
17
|
+
});
|
18
|
+
var MIN_ITEMS_COUNT = 2;
|
19
|
+
var cn = cnCreate('mfui-promo-cards');
|
20
|
+
var PromoCards = function PromoCards(_ref) {
|
21
|
+
var items = _ref.items,
|
22
|
+
carouselNavTheme = _ref.carouselNavTheme,
|
23
|
+
carouselGradientColor = _ref.carouselGradientColor,
|
24
|
+
background = _ref.background,
|
25
|
+
dataAttrs = _ref.dataAttrs,
|
26
|
+
className = _ref.className,
|
27
|
+
classes = _ref.classes,
|
28
|
+
rootRef = _ref.rootRef;
|
29
|
+
if (items.length < MIN_ITEMS_COUNT) {
|
30
|
+
return null;
|
31
|
+
}
|
32
|
+
return /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
33
|
+
className: cn([className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
34
|
+
ref: rootRef
|
35
|
+
}), /*#__PURE__*/React.createElement(Carousel, {
|
36
|
+
slidesSettings: slidesSettings,
|
37
|
+
navTheme: carouselNavTheme,
|
38
|
+
gradient: true,
|
39
|
+
gradientColor: carouselGradientColor
|
40
|
+
}, items.map(function (item, i) {
|
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: cn([classes === null || classes === void 0 ? void 0 : classes.card]),
|
47
|
+
key: i + item.title
|
48
|
+
}));
|
49
|
+
})));
|
50
|
+
};
|
51
|
+
export default PromoCards;
|
@@ -0,0 +1 @@
|
|
1
|
+
h1,h2,h3,h4,h5{margin:0}.mfui-promo-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);cursor:pointer;-ms-flex-direction:column;flex-direction:column;min-height:100%;text-decoration:none;-webkit-transition:background-color,.3s,.3s,-webkit-box-shadow;transition:background-color,.3s,.3s,-webkit-box-shadow;transition:background-color,.3s,box-shadow,.3s;transition:background-color,.3s,box-shadow,.3s,-webkit-box-shadow}.mfui-promo-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-promo-card_background_shadow:hover,.mfui-promo-card_background_white:hover{-webkit-box-shadow:0 8px 28px 0 rgba(0,0,0,.1);box-shadow:0 8px 28px 0 rgba(0,0,0,.1);text-decoration:none}.mfui-promo-card_background_gray{background-color:var(--spbSky0)}.mfui-promo-card_background_gray:hover{background-color:var(--spbSky1);text-decoration:none}.mfui-promo-card__image{border-radius:inherit;vertical-align:top;width:100%}.mfui-promo-card__content{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-orient:vertical;-webkit-box-direction:normal;-ms-flex-direction:column;flex-direction:column;-webkit-box-flex:1;-ms-flex-positive:1;flex-grow:1;padding:32px 24px}@media screen and (min-width:1280px){.mfui-promo-card__content{padding:32px}}.mfui-promo-card__badge{left:24px;position:absolute;top:0;translate:0 -50%}@media screen and (min-width:1280px){.mfui-promo-card__badge{left:32px}}.mfui-promo-card__logo{background-color:var(--base);border:4px solid var(--base);border-radius:50%;position:absolute;right:44px;top:0;-webkit-transition:border-color,.3s;transition:border-color,.3s;translate:0 -50%}@media screen and (min-width:1280px){.mfui-promo-card__logo{right:52px}}.mfui-promo-card__logo:after,.mfui-promo-card__logo:before{content:"";height:10px;position:absolute;top:50%;translate:0 -100%;width:10px}.mfui-promo-card__logo:before{background-image:radial-gradient(circle at 0 0,transparent 9px,var(--base) 10px);left:-12px}.mfui-promo-card__logo:after{background-image:radial-gradient(circle at 100% 0,transparent 9px,var(--base) 10px);right:-12px}.mfui-promo-card_background_gray .mfui-promo-card__logo{background-color:var(--spbSky0);border-color:var(--spbSky0)}.mfui-promo-card_background_gray .mfui-promo-card__logo:before{background-image:radial-gradient(circle at 0 0,transparent 9px,var(--spbSky0) 10px)}.mfui-promo-card_background_gray .mfui-promo-card__logo:after{background-image:radial-gradient(circle at 100% 0,transparent 9px,var(--spbSky0) 10px)}.mfui-promo-card_background_gray:hover .mfui-promo-card__logo{background-color:var(--spbSky1);border-color:var(--spbSky1)}.mfui-promo-card_background_gray:hover .mfui-promo-card__logo:before{background-image:radial-gradient(circle at 0 0,transparent 9px,var(--spbSky1) 10px)}.mfui-promo-card_background_gray:hover .mfui-promo-card__logo:after{background-image:radial-gradient(circle at 100% 0,transparent 9px,var(--spbSky1) 10px)}.mfui-promo-card__logo-img{border:1px solid var(--spbSky1);border-radius:inherit;height:56px;vertical-align:top;width:56px}@media screen and (min-width:768px){.mfui-promo-card__logo-img{height:64px;width:64px}}@media screen and (min-width:1280px){.mfui-promo-card__logo-img{height:72px;width:72px}}.mfui-promo-card__subtitle{margin-top:8px}.mfui-promo-card__footer{margin-top:auto;padding-top:16px}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import { IPromoCardData, IPromoCardSettings } from '../../types';
|
3
|
+
import './PromoCard.scss';
|
4
|
+
export interface IPromoCard extends IPromoCardData, IPromoCardSettings {
|
5
|
+
className?: string;
|
6
|
+
classes?: {
|
7
|
+
root?: string;
|
8
|
+
};
|
9
|
+
dataAttrs?: {
|
10
|
+
root?: Record<string, string>;
|
11
|
+
image?: Record<string, string>;
|
12
|
+
badge?: Record<string, string>;
|
13
|
+
logo?: Record<string, string>;
|
14
|
+
subtitle?: Record<string, string>;
|
15
|
+
};
|
16
|
+
}
|
17
|
+
declare const PromoCard: React.FC<IPromoCard>;
|
18
|
+
export default PromoCard;
|
@@ -0,0 +1,72 @@
|
|
1
|
+
import _extends from "@babel/runtime/helpers/extends";
|
2
|
+
import "core-js/modules/es.array.concat.js";
|
3
|
+
import "core-js/modules/es.string.link.js";
|
4
|
+
import * as React from 'react';
|
5
|
+
import { Button, Header, Paragraph } from '@megafon/ui-core';
|
6
|
+
import { cnCreate, convert, filterDataAttrs } from '@megafon/ui-helpers';
|
7
|
+
import { setRelAttribute } from "../../../../helpers/setRelAttribute";
|
8
|
+
import "./PromoCard.css";
|
9
|
+
var cn = cnCreate('mfui-promo-card');
|
10
|
+
var PromoCard = function PromoCard(_ref) {
|
11
|
+
var title = _ref.title,
|
12
|
+
subtitle = _ref.subtitle,
|
13
|
+
link = _ref.link,
|
14
|
+
_ref$background = _ref.background,
|
15
|
+
background = _ref$background === void 0 ? 'shadow' : _ref$background,
|
16
|
+
image = _ref.image,
|
17
|
+
logo = _ref.logo,
|
18
|
+
badge = _ref.badge,
|
19
|
+
className = _ref.className,
|
20
|
+
classes = _ref.classes,
|
21
|
+
dataAttrs = _ref.dataAttrs,
|
22
|
+
onClick = _ref.onClick;
|
23
|
+
var imageSrc = image.src,
|
24
|
+
imageSrc2x = image.src2x,
|
25
|
+
imageAlt = image.alt;
|
26
|
+
var linkHref = link.href,
|
27
|
+
_link$target = link.target,
|
28
|
+
linkTarget = _link$target === void 0 ? '_self' : _link$target,
|
29
|
+
linkRel = link.rel,
|
30
|
+
linkTitle = link.title;
|
31
|
+
var imageSrcSet = imageSrc2x ? "".concat(imageSrc, ", ").concat(imageSrc2x, " 2x") : undefined;
|
32
|
+
return /*#__PURE__*/React.createElement("a", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
33
|
+
className: cn({
|
34
|
+
background: background
|
35
|
+
}, [className, classes === null || classes === void 0 ? void 0 : classes.root]),
|
36
|
+
href: linkHref,
|
37
|
+
target: linkTarget,
|
38
|
+
rel: setRelAttribute(linkRel, linkTarget),
|
39
|
+
onClick: onClick
|
40
|
+
}), /*#__PURE__*/React.createElement("img", _extends({
|
41
|
+
className: cn('image')
|
42
|
+
}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.image), {
|
43
|
+
srcSet: imageSrcSet,
|
44
|
+
src: imageSrc,
|
45
|
+
alt: imageAlt || ''
|
46
|
+
})), /*#__PURE__*/React.createElement("div", {
|
47
|
+
className: cn('content')
|
48
|
+
}, !!badge && /*#__PURE__*/React.createElement("div", _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.badge), {
|
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), {
|
51
|
+
className: cn('logo')
|
52
|
+
}), /*#__PURE__*/React.createElement("img", {
|
53
|
+
className: cn('logo-img'),
|
54
|
+
src: logo.src,
|
55
|
+
alt: logo.alt || ''
|
56
|
+
})), /*#__PURE__*/React.createElement(Header, {
|
57
|
+
as: "h3"
|
58
|
+
}, convert(title, {})), !!subtitle && /*#__PURE__*/React.createElement(Paragraph, {
|
59
|
+
className: cn('subtitle'),
|
60
|
+
hasMargin: false,
|
61
|
+
dataAttrs: {
|
62
|
+
root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.subtitle
|
63
|
+
}
|
64
|
+
}, convert(subtitle, {})), /*#__PURE__*/React.createElement("div", {
|
65
|
+
className: cn('footer')
|
66
|
+
}, /*#__PURE__*/React.createElement(Button, {
|
67
|
+
sizeAll: "small",
|
68
|
+
type: "text",
|
69
|
+
showArrow: true
|
70
|
+
}, linkTitle))));
|
71
|
+
};
|
72
|
+
export default PromoCard;
|
@@ -0,0 +1,28 @@
|
|
1
|
+
type ImageType = {
|
2
|
+
src: string;
|
3
|
+
src2x?: string;
|
4
|
+
alt?: string;
|
5
|
+
};
|
6
|
+
type LogoType = {
|
7
|
+
src?: string;
|
8
|
+
alt?: string;
|
9
|
+
};
|
10
|
+
type LinkType = {
|
11
|
+
title: string;
|
12
|
+
href: string;
|
13
|
+
target?: '_self' | '_blank';
|
14
|
+
rel?: string;
|
15
|
+
};
|
16
|
+
export interface IPromoCardSettings {
|
17
|
+
background?: 'gray' | 'white' | 'shadow';
|
18
|
+
}
|
19
|
+
export interface IPromoCardData {
|
20
|
+
title: string;
|
21
|
+
subtitle?: string;
|
22
|
+
link: LinkType;
|
23
|
+
image: ImageType;
|
24
|
+
logo?: LogoType;
|
25
|
+
badge?: React.ReactElement | null;
|
26
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
27
|
+
}
|
28
|
+
export {};
|
@@ -0,0 +1 @@
|
|
1
|
+
export {};
|
package/dist/es/index.d.ts
CHANGED
@@ -13,6 +13,7 @@ export { default as Breadcrumbs } from './components/Breadcrumbs/Breadcrumbs';
|
|
13
13
|
export { default as BreadcrumbsItem } from './components/Breadcrumbs/components/BreadcrumbsItem';
|
14
14
|
export { default as ButtonBanner } from './components/ButtonBanner/ButtonBanner';
|
15
15
|
export { default as ButtonLinkBox } from './components/ButtonLinkBox/ButtonLinkBox';
|
16
|
+
export { default as ButtonsBox } from './components/ButtonsBox/ButtonsBox';
|
16
17
|
export { default as Card } from './components/Card/Card';
|
17
18
|
export { default as CardsBox } from './components/CardsBox/CardsBox';
|
18
19
|
export { default as CarouselBox } from './components/CarouselBox/CarouselBox';
|
@@ -30,6 +31,8 @@ export { default as NotificationBox } from './components/NotificationBox/Notific
|
|
30
31
|
export { default as PageTitle } from './components/PageTitle/PageTitle';
|
31
32
|
export { default as Partners } from './components/Partners/Partners';
|
32
33
|
export { default as PictureWithDescription } from './components/PictureWithDescription/PictureWithDescription';
|
34
|
+
export { default as PromoCard } from './components/PromoCards/components/PromoCard/PromoCard';
|
35
|
+
export { default as PromoCards } from './components/PromoCards/PromoCards';
|
33
36
|
export { default as Property } from './components/Property/Property';
|
34
37
|
export { default as PropertyDescription } from './components/Property/PropertyDescription';
|
35
38
|
export { default as SidePictureCard } from './components/SidePictureCards/components/SidePictureCard';
|
package/dist/es/index.js
CHANGED
@@ -13,6 +13,7 @@ export { default as Breadcrumbs } from "./components/Breadcrumbs/Breadcrumbs";
|
|
13
13
|
export { default as BreadcrumbsItem } from "./components/Breadcrumbs/components/BreadcrumbsItem";
|
14
14
|
export { default as ButtonBanner } from "./components/ButtonBanner/ButtonBanner";
|
15
15
|
export { default as ButtonLinkBox } from "./components/ButtonLinkBox/ButtonLinkBox";
|
16
|
+
export { default as ButtonsBox } from "./components/ButtonsBox/ButtonsBox";
|
16
17
|
export { default as Card } from "./components/Card/Card";
|
17
18
|
export { default as CardsBox } from "./components/CardsBox/CardsBox";
|
18
19
|
export { default as CarouselBox } from "./components/CarouselBox/CarouselBox";
|
@@ -30,6 +31,8 @@ export { default as NotificationBox } from "./components/NotificationBox/Notific
|
|
30
31
|
export { default as PageTitle } from "./components/PageTitle/PageTitle";
|
31
32
|
export { default as Partners } from "./components/Partners/Partners";
|
32
33
|
export { default as PictureWithDescription } from "./components/PictureWithDescription/PictureWithDescription";
|
34
|
+
export { default as PromoCard } from "./components/PromoCards/components/PromoCard/PromoCard";
|
35
|
+
export { default as PromoCards } from "./components/PromoCards/PromoCards";
|
33
36
|
export { default as Property } from "./components/Property/Property";
|
34
37
|
export { default as PropertyDescription } from "./components/Property/PropertyDescription";
|
35
38
|
export { default as SidePictureCard } from "./components/SidePictureCards/components/SidePictureCard";
|
@@ -0,0 +1 @@
|
|
1
|
+
h1,h2,h3,h4,h5{margin:0}.mfui-buttons-box{display:-webkit-box;display:-ms-flexbox;display:flex}.mfui-buttons-box__buttons_equal-width{display:grid;gap:20px;max-width:-webkit-max-content;max-width:-moz-max-content;max-width:max-content}@media screen and (max-width:767px){.mfui-buttons-box__buttons_equal-width{grid-template-rows:repeat(2,1fr)}}@media screen and (min-width:768px){.mfui-buttons-box__buttons_equal-width{grid-template-columns:repeat(2,1fr)}}.mfui-buttons-box_h-align_center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}
|
@@ -0,0 +1,48 @@
|
|
1
|
+
import * as React from 'react';
|
2
|
+
import './ButtonsBox.scss';
|
3
|
+
export type ButtonType = {
|
4
|
+
/** Тип */
|
5
|
+
type?: 'primary' | 'outline';
|
6
|
+
/** Иконка */
|
7
|
+
icon?: React.JSX.Element;
|
8
|
+
/** Название */
|
9
|
+
title?: string;
|
10
|
+
/** Ссылка */
|
11
|
+
href?: string;
|
12
|
+
/** Target свойство кнопки */
|
13
|
+
target?: '_self' | '_blank' | '_parent' | '_top';
|
14
|
+
/** Rel - атрибут тега <a> */
|
15
|
+
rel?: string;
|
16
|
+
/** Задает атрибут download для тега <a> */
|
17
|
+
download?: boolean;
|
18
|
+
/** Показать стелку */
|
19
|
+
showArrow?: boolean;
|
20
|
+
/** Обработчик клика */
|
21
|
+
onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
|
22
|
+
};
|
23
|
+
export interface IButtonsBox {
|
24
|
+
/** Дополнительные data атрибуты к внутренним элементам */
|
25
|
+
dataAttrs?: {
|
26
|
+
root?: Record<string, string>;
|
27
|
+
button?: Record<string, string>;
|
28
|
+
extraButton?: Record<string, string>;
|
29
|
+
};
|
30
|
+
/** Дополнительный класс корневого элемента */
|
31
|
+
className?: string;
|
32
|
+
/** Дополнительные классы для внутренних элементов */
|
33
|
+
classes?: {
|
34
|
+
root?: string;
|
35
|
+
button?: string;
|
36
|
+
extraButton?: string;
|
37
|
+
};
|
38
|
+
/** Кнопка */
|
39
|
+
button: ButtonType;
|
40
|
+
/** Дополнительная кнопка */
|
41
|
+
extraButton?: ButtonType;
|
42
|
+
/** Горизонтальное выравнивание */
|
43
|
+
align?: 'center' | 'left';
|
44
|
+
/** Ссылка на корневой элемент */
|
45
|
+
rootRef?: React.Ref<HTMLDivElement>;
|
46
|
+
}
|
47
|
+
declare const ButtonsBox: React.FC<IButtonsBox>;
|
48
|
+
export default ButtonsBox;
|
@@ -0,0 +1,56 @@
|
|
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"] = void 0;
|
8
|
+
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
|
9
|
+
var React = _interopRequireWildcard(require("react"));
|
10
|
+
var _uiCore = require("@megafon/ui-core");
|
11
|
+
var _uiHelpers = require("@megafon/ui-helpers");
|
12
|
+
var _setRelAttribute = require("../../helpers/setRelAttribute");
|
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); }
|
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; }
|
15
|
+
function _interopRequireDefault(e) { return e && e.__esModule ? e : { "default": e }; }
|
16
|
+
var cn = (0, _uiHelpers.cnCreate)('mfui-buttons-box');
|
17
|
+
var ButtonsBox = function ButtonsBox(_ref) {
|
18
|
+
var className = _ref.className,
|
19
|
+
_ref$classes = _ref.classes,
|
20
|
+
classes = _ref$classes === void 0 ? {} : _ref$classes,
|
21
|
+
dataAttrs = _ref.dataAttrs,
|
22
|
+
button = _ref.button,
|
23
|
+
extraButton = _ref.extraButton,
|
24
|
+
align = _ref.align,
|
25
|
+
rootRef = _ref.rootRef;
|
26
|
+
var showTwoButtons = !!button && !!extraButton;
|
27
|
+
var renderButton = function renderButton(btnProps, btnClassName, dataAttr) {
|
28
|
+
return /*#__PURE__*/React.createElement(_uiCore.Button, {
|
29
|
+
dataAttrs: {
|
30
|
+
root: dataAttr
|
31
|
+
},
|
32
|
+
className: btnClassName,
|
33
|
+
fullWidth: showTwoButtons,
|
34
|
+
type: btnProps.type,
|
35
|
+
theme: "green",
|
36
|
+
icon: btnProps.icon,
|
37
|
+
href: btnProps.href,
|
38
|
+
target: btnProps.target,
|
39
|
+
download: btnProps.download,
|
40
|
+
showArrow: btnProps.showArrow,
|
41
|
+
rel: (0, _setRelAttribute.setRelAttribute)(btnProps.rel, btnProps.target),
|
42
|
+
onClick: btnProps.onClick
|
43
|
+
}, btnProps.title);
|
44
|
+
};
|
45
|
+
return /*#__PURE__*/React.createElement("div", (0, _extends2["default"])({}, (0, _uiHelpers.filterDataAttrs)(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
|
46
|
+
className: cn({
|
47
|
+
'h-align': align
|
48
|
+
}, [className, classes.root]),
|
49
|
+
ref: rootRef
|
50
|
+
}), /*#__PURE__*/React.createElement("div", {
|
51
|
+
className: cn('buttons', {
|
52
|
+
'equal-width': showTwoButtons
|
53
|
+
})
|
54
|
+
}, !!button && renderButton(button, classes.button, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button), !!extraButton && renderButton(extraButton, classes.extraButton, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.extraButton)));
|
55
|
+
};
|
56
|
+
var _default = exports["default"] = ButtonsBox;
|