@megafon/ui-shared 9.0.0-alpha.2 → 9.0.0-alpha.21

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 (207) hide show
  1. package/dist/es/components/AccordionBox/AccordionBox.d.ts +3 -1
  2. package/dist/es/components/BenefitCards/BenefitCard/BenefitCard.css +1 -0
  3. package/dist/es/components/BenefitCards/BenefitCard/BenefitCard.d.ts +13 -0
  4. package/dist/es/components/BenefitCards/BenefitCard/BenefitCard.js +59 -0
  5. package/dist/es/components/BenefitCards/BenefitCards.css +1 -0
  6. package/dist/es/components/BenefitCards/BenefitCards.d.ts +27 -0
  7. package/dist/es/components/BenefitCards/BenefitCards.js +35 -0
  8. package/dist/es/components/BenefitCards/helpers.d.ts +1 -0
  9. package/dist/es/components/BenefitCards/helpers.js +19 -0
  10. package/dist/es/components/BenefitCards/types.d.ts +24 -0
  11. package/dist/es/components/BenefitCards/types.js +1 -0
  12. package/dist/es/components/BlogBox/BlogBox.d.ts +3 -0
  13. package/dist/es/components/BlogBox/BlogBox.js +8 -3
  14. package/dist/es/components/BlogBox/components/BlogBoxTile.css +1 -1
  15. package/dist/es/components/BlogBox/components/BlogBoxTile.d.ts +5 -1
  16. package/dist/es/components/BlogBox/components/BlogBoxTile.js +3 -2
  17. package/dist/es/components/Breadcrumbs/Breadcrumbs.d.ts +2 -0
  18. package/dist/es/components/Breadcrumbs/Breadcrumbs.js +3 -0
  19. package/dist/es/components/Breadcrumbs/components/BreadcrumbsItem.d.ts +1 -0
  20. package/dist/es/components/Breadcrumbs/components/BreadcrumbsItem.js +18 -13
  21. package/dist/es/components/Card/Card.css +1 -1
  22. package/dist/es/components/Card/Card.d.ts +2 -1
  23. package/dist/es/components/Card/Card.js +23 -16
  24. package/dist/es/components/Card/types.d.ts +3 -5
  25. package/dist/es/components/CardsOnBackground/CardsOnBackground.css +1 -0
  26. package/dist/es/components/CardsOnBackground/CardsOnBackground.d.ts +34 -0
  27. package/dist/es/components/CardsOnBackground/CardsOnBackground.js +99 -0
  28. package/dist/es/components/CardsOnBackground/components/CardOnBackground.css +1 -0
  29. package/dist/es/components/CardsOnBackground/components/CardOnBackground.d.ts +22 -0
  30. package/dist/es/components/CardsOnBackground/components/CardOnBackground.js +94 -0
  31. package/dist/es/components/CardsOnBackground/types.d.ts +42 -0
  32. package/dist/es/components/CardsOnBackground/types.js +6 -0
  33. package/dist/es/components/CardsOnBackground/useUniformHeights.d.ts +9 -0
  34. package/dist/es/components/CardsOnBackground/useUniformHeights.js +88 -0
  35. package/dist/es/components/Container/Container.css +1 -1
  36. package/dist/es/components/Container/Container.d.ts +4 -0
  37. package/dist/es/components/Container/Container.js +4 -1
  38. package/dist/es/components/DarkGradientCards/DarkGradientCards.d.ts +5 -0
  39. package/dist/es/components/DarkGradientCards/DarkGradientCards.js +9 -4
  40. package/dist/es/components/DarkGradientCards/components/DarkGradientCard.css +1 -1
  41. package/dist/es/components/DarkGradientCards/components/DarkGradientCard.d.ts +1 -0
  42. package/dist/es/components/DarkGradientCards/components/DarkGradientCard.js +1 -1
  43. package/dist/es/components/DownloadLinks/DownloadLink.css +1 -1
  44. package/dist/es/components/DownloadLinks/DownloadLink.js +3 -1
  45. package/dist/es/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
  46. package/dist/es/components/InfoCards/components/InfoCard/InfoCard.js +4 -2
  47. package/dist/es/components/Instructions/Instructions.css +1 -1
  48. package/dist/es/components/Instructions/Instructions.d.ts +0 -2
  49. package/dist/es/components/Instructions/Instructions.js +19 -22
  50. package/dist/es/components/NotificationBox/NotificationBox.d.ts +1 -1
  51. package/dist/es/components/NotificationBox/NotificationBox.js +1 -4
  52. package/dist/es/components/Partners/Partners.css +1 -1
  53. package/dist/es/components/Partners/Partners.d.ts +3 -8
  54. package/dist/es/components/Partners/Partners.js +20 -31
  55. package/dist/es/components/Partners/components/PartnersItem/PartnersItem.css +1 -0
  56. package/dist/es/components/Partners/components/PartnersItem/PartnersItem.d.ts +12 -0
  57. package/dist/es/components/Partners/components/PartnersItem/PartnersItem.js +33 -0
  58. package/dist/es/components/Partners/types.d.ts +7 -0
  59. package/dist/es/components/Partners/types.js +1 -0
  60. package/dist/es/components/PictureBox/PictureBox.d.ts +1 -0
  61. package/dist/es/components/PictureBox/PictureBox.js +2 -0
  62. package/dist/es/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.d.ts +2 -0
  63. package/dist/es/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.js +2 -0
  64. package/dist/es/components/PromoCards/PromoCards.d.ts +3 -0
  65. package/dist/es/components/PromoCards/PromoCards.js +6 -1
  66. package/dist/es/components/PromoCards/components/PromoCard/PromoCard.css +1 -1
  67. package/dist/es/components/PromoCards/components/PromoCard/PromoCard.d.ts +2 -0
  68. package/dist/es/components/PromoCards/components/PromoCard/PromoCard.js +17 -9
  69. package/dist/es/components/ServiceCards/components/ServiceCard/ServiceCard.css +1 -1
  70. package/dist/es/components/ServiceCards/components/ServiceCard/ServiceCard.js +1 -1
  71. package/dist/es/components/SidePictureCards/SidePictureCards.d.ts +5 -0
  72. package/dist/es/components/SidePictureCards/SidePictureCards.js +5 -2
  73. package/dist/es/components/SidePictureCards/components/SidePictureCard.d.ts +2 -0
  74. package/dist/es/components/SidePictureCards/components/SidePictureCard.js +8 -3
  75. package/dist/es/components/SidePictureCards/types.d.ts +3 -1
  76. package/dist/es/components/StepperBox/StepperBox.d.ts +11 -0
  77. package/dist/es/components/StepperBox/StepperBox.js +36 -0
  78. package/dist/es/components/Steps/Steps.css +1 -1
  79. package/dist/es/components/Steps/Steps.d.ts +2 -2
  80. package/dist/es/components/Steps/Steps.js +1 -1
  81. package/dist/es/components/StoreBanner/StoreBanner.css +1 -1
  82. package/dist/es/components/StoreBanner/StoreBanner.d.ts +1 -5
  83. package/dist/es/components/StoreBanner/StoreBanner.js +1 -5
  84. package/dist/es/components/StoreButton/StoreButton.css +1 -1
  85. package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.css +1 -1
  86. package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.d.ts +27 -1
  87. package/dist/es/components/TitleDescriptionBox/TitleDescriptionBox.js +31 -24
  88. package/dist/es/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  89. package/dist/es/hooks/useIsomorphicLayoutEffect.js +6 -0
  90. package/dist/es/index.d.ts +7 -2
  91. package/dist/es/index.js +7 -2
  92. package/dist/lib/components/AccordionBox/AccordionBox.d.ts +3 -1
  93. package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.css +1 -0
  94. package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.d.ts +13 -0
  95. package/dist/lib/components/BenefitCards/BenefitCard/BenefitCard.js +68 -0
  96. package/dist/lib/components/BenefitCards/BenefitCards.css +1 -0
  97. package/dist/lib/components/BenefitCards/BenefitCards.d.ts +27 -0
  98. package/dist/lib/components/BenefitCards/BenefitCards.js +44 -0
  99. package/dist/lib/components/BenefitCards/helpers.d.ts +1 -0
  100. package/dist/lib/components/BenefitCards/helpers.js +26 -0
  101. package/dist/lib/components/BenefitCards/types.d.ts +24 -0
  102. package/dist/lib/components/BenefitCards/types.js +5 -0
  103. package/dist/lib/components/BlogBox/BlogBox.d.ts +3 -0
  104. package/dist/lib/components/BlogBox/BlogBox.js +8 -3
  105. package/dist/lib/components/BlogBox/components/BlogBoxTile.css +1 -1
  106. package/dist/lib/components/BlogBox/components/BlogBoxTile.d.ts +5 -1
  107. package/dist/lib/components/BlogBox/components/BlogBoxTile.js +3 -2
  108. package/dist/lib/components/Breadcrumbs/Breadcrumbs.d.ts +2 -0
  109. package/dist/lib/components/Breadcrumbs/Breadcrumbs.js +3 -0
  110. package/dist/lib/components/Breadcrumbs/components/BreadcrumbsItem.d.ts +1 -0
  111. package/dist/lib/components/Breadcrumbs/components/BreadcrumbsItem.js +18 -13
  112. package/dist/lib/components/Card/Card.css +1 -1
  113. package/dist/lib/components/Card/Card.d.ts +2 -1
  114. package/dist/lib/components/Card/Card.js +22 -15
  115. package/dist/lib/components/Card/types.d.ts +3 -5
  116. package/dist/lib/components/CardsOnBackground/CardsOnBackground.css +1 -0
  117. package/dist/lib/components/CardsOnBackground/CardsOnBackground.d.ts +34 -0
  118. package/dist/lib/components/CardsOnBackground/CardsOnBackground.js +108 -0
  119. package/dist/lib/components/CardsOnBackground/components/CardOnBackground.css +1 -0
  120. package/dist/lib/components/CardsOnBackground/components/CardOnBackground.d.ts +22 -0
  121. package/dist/lib/components/CardsOnBackground/components/CardOnBackground.js +100 -0
  122. package/dist/lib/components/CardsOnBackground/types.d.ts +42 -0
  123. package/dist/lib/components/CardsOnBackground/types.js +12 -0
  124. package/dist/lib/components/CardsOnBackground/useUniformHeights.d.ts +9 -0
  125. package/dist/lib/components/CardsOnBackground/useUniformHeights.js +95 -0
  126. package/dist/lib/components/Container/Container.css +1 -1
  127. package/dist/lib/components/Container/Container.d.ts +4 -0
  128. package/dist/lib/components/Container/Container.js +4 -1
  129. package/dist/lib/components/DarkGradientCards/DarkGradientCards.d.ts +5 -0
  130. package/dist/lib/components/DarkGradientCards/DarkGradientCards.js +9 -4
  131. package/dist/lib/components/DarkGradientCards/components/DarkGradientCard.css +1 -1
  132. package/dist/lib/components/DarkGradientCards/components/DarkGradientCard.d.ts +1 -0
  133. package/dist/lib/components/DarkGradientCards/components/DarkGradientCard.js +1 -1
  134. package/dist/lib/components/DownloadLinks/DownloadLink.css +1 -1
  135. package/dist/lib/components/DownloadLinks/DownloadLink.js +3 -1
  136. package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.css +1 -1
  137. package/dist/lib/components/InfoCards/components/InfoCard/InfoCard.js +4 -2
  138. package/dist/lib/components/Instructions/Instructions.css +1 -1
  139. package/dist/lib/components/Instructions/Instructions.d.ts +0 -2
  140. package/dist/lib/components/Instructions/Instructions.js +19 -21
  141. package/dist/lib/components/NotificationBox/NotificationBox.d.ts +1 -1
  142. package/dist/lib/components/NotificationBox/NotificationBox.js +1 -5
  143. package/dist/lib/components/Partners/Partners.css +1 -1
  144. package/dist/lib/components/Partners/Partners.d.ts +3 -8
  145. package/dist/lib/components/Partners/Partners.js +19 -30
  146. package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.css +1 -0
  147. package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.d.ts +12 -0
  148. package/dist/lib/components/Partners/components/PartnersItem/PartnersItem.js +42 -0
  149. package/dist/lib/components/Partners/types.d.ts +7 -0
  150. package/dist/lib/components/Partners/types.js +5 -0
  151. package/dist/lib/components/PictureBox/PictureBox.d.ts +1 -0
  152. package/dist/lib/components/PictureBox/PictureBox.js +2 -0
  153. package/dist/lib/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.d.ts +2 -0
  154. package/dist/lib/components/PromoBanner/components/PromoBannerSlide/PromoBannerSlide.js +2 -0
  155. package/dist/lib/components/PromoCards/PromoCards.d.ts +3 -0
  156. package/dist/lib/components/PromoCards/PromoCards.js +6 -1
  157. package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.css +1 -1
  158. package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.d.ts +2 -0
  159. package/dist/lib/components/PromoCards/components/PromoCard/PromoCard.js +16 -9
  160. package/dist/lib/components/ServiceCards/components/ServiceCard/ServiceCard.css +1 -1
  161. package/dist/lib/components/ServiceCards/components/ServiceCard/ServiceCard.js +1 -1
  162. package/dist/lib/components/SidePictureCards/SidePictureCards.d.ts +5 -0
  163. package/dist/lib/components/SidePictureCards/SidePictureCards.js +5 -2
  164. package/dist/lib/components/SidePictureCards/components/SidePictureCard.d.ts +2 -0
  165. package/dist/lib/components/SidePictureCards/components/SidePictureCard.js +8 -3
  166. package/dist/lib/components/SidePictureCards/types.d.ts +3 -1
  167. package/dist/lib/components/StepperBox/StepperBox.d.ts +11 -0
  168. package/dist/lib/components/StepperBox/StepperBox.js +46 -0
  169. package/dist/lib/components/Steps/Steps.css +1 -1
  170. package/dist/lib/components/Steps/Steps.d.ts +2 -2
  171. package/dist/lib/components/Steps/Steps.js +1 -1
  172. package/dist/lib/components/StoreBanner/StoreBanner.css +1 -1
  173. package/dist/lib/components/StoreBanner/StoreBanner.d.ts +1 -5
  174. package/dist/lib/components/StoreBanner/StoreBanner.js +1 -5
  175. package/dist/lib/components/StoreButton/StoreButton.css +1 -1
  176. package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.css +1 -1
  177. package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.d.ts +27 -1
  178. package/dist/lib/components/TitleDescriptionBox/TitleDescriptionBox.js +30 -23
  179. package/dist/lib/hooks/useIsomorphicLayoutEffect.d.ts +3 -0
  180. package/dist/lib/hooks/useIsomorphicLayoutEffect.js +13 -0
  181. package/dist/lib/index.d.ts +7 -2
  182. package/dist/lib/index.js +45 -10
  183. package/package.json +6 -6
  184. package/dist/es/components/Stepper/Stepper.css +0 -1
  185. package/dist/es/components/Stepper/Stepper.d.ts +0 -52
  186. package/dist/es/components/Stepper/Stepper.js +0 -159
  187. package/dist/es/components/Stepper/StepperItem.css +0 -1
  188. package/dist/es/components/Stepper/StepperItem.d.ts +0 -57
  189. package/dist/es/components/Stepper/StepperItem.js +0 -99
  190. package/dist/es/components/Stepper/img/separator-mobile.png +0 -0
  191. package/dist/es/components/Stepper/img/separator-vertical.png +0 -0
  192. package/dist/es/components/Stepper/img/separator.png +0 -0
  193. package/dist/es/components/StoreBanner/img/black-iphone.png +0 -0
  194. package/dist/es/components/StoreBanner/img/iphone12.png +0 -0
  195. package/dist/es/components/StoreBanner/img/white-iphone.png +0 -0
  196. package/dist/lib/components/Stepper/Stepper.css +0 -1
  197. package/dist/lib/components/Stepper/Stepper.d.ts +0 -52
  198. package/dist/lib/components/Stepper/Stepper.js +0 -168
  199. package/dist/lib/components/Stepper/StepperItem.css +0 -1
  200. package/dist/lib/components/Stepper/StepperItem.d.ts +0 -57
  201. package/dist/lib/components/Stepper/StepperItem.js +0 -108
  202. package/dist/lib/components/Stepper/img/separator-mobile.png +0 -0
  203. package/dist/lib/components/Stepper/img/separator-vertical.png +0 -0
  204. package/dist/lib/components/Stepper/img/separator.png +0 -0
  205. package/dist/lib/components/StoreBanner/img/black-iphone.png +0 -0
  206. package/dist/lib/components/StoreBanner/img/iphone12.png +0 -0
  207. package/dist/lib/components/StoreBanner/img/white-iphone.png +0 -0
@@ -0,0 +1,34 @@
1
+ import * as React from 'react';
2
+ import { Carousel } from '@megafon/ui-core';
3
+ import { BackgroundColorType, CardDataType } from './types';
4
+ import './CardsOnBackground.scss';
5
+ type CarouselProps = React.ComponentProps<typeof Carousel>;
6
+ export interface ICardsOnBackground {
7
+ /** Карточки. Минимальное количество 2 карточки */
8
+ items: CardDataType[];
9
+ /** Цвет фона карточек */
10
+ background?: BackgroundColorType;
11
+ /** Выстраивать карточки в карусель */
12
+ hasCarousel?: boolean;
13
+ /** Дополнительный класс для компонента */
14
+ className?: string;
15
+ /** Дополнительные классы для внутренних элементов */
16
+ classes?: {
17
+ root?: string;
18
+ item?: string;
19
+ itemTitle?: string;
20
+ itemButton?: string;
21
+ itemExtraButton?: string;
22
+ };
23
+ /** Дополнительные data атрибуты к внутренним элементам */
24
+ dataAttrs?: {
25
+ root?: Record<string, string>;
26
+ item?: Record<string, string>;
27
+ };
28
+ /** Обработчик смены слайда карусели */
29
+ onCarouselChange?: CarouselProps['onChange'];
30
+ /** Ссылка на корневой элемент */
31
+ rootRef?: React.Ref<HTMLDivElement>;
32
+ }
33
+ declare const CardsOnBackground: React.FC<ICardsOnBackground>;
34
+ export default CardsOnBackground;
@@ -0,0 +1,99 @@
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 { breakpoints, cnCreate, filterDataAttrs } from '@megafon/ui-helpers';
7
+ import useResolutions from "../../hooks/useResolutions";
8
+ import CardOnBackground from "./components/CardOnBackground";
9
+ import useUniformHeights from "./useUniformHeights";
10
+ import "./CardsOnBackground.css";
11
+ var getSlidesSettings = function getSlidesSettings(count) {
12
+ return _defineProperty(_defineProperty(_defineProperty(_defineProperty({}, breakpoints.MOBILE_SMALL_START, {
13
+ slidesPerView: 1,
14
+ spaceBetween: 16
15
+ }), breakpoints.MOBILE_BIG_START, {
16
+ slidesPerView: 2,
17
+ spaceBetween: 20
18
+ }), breakpoints.DESKTOP_MIDDLE_START, {
19
+ slidesPerView: count < 3 ? count : 3,
20
+ spaceBetween: 20
21
+ }), breakpoints.DESKTOP_BIG_START, {
22
+ slidesPerView: count < 4 ? count : 4,
23
+ spaceBetween: 20
24
+ });
25
+ };
26
+ var MIN_ITEMS_COUNT = 2;
27
+ var cn = cnCreate('mfui-9-cards-on-background');
28
+ var CardsOnBackground = function CardsOnBackground(_ref2) {
29
+ var items = _ref2.items,
30
+ _ref2$background = _ref2.background,
31
+ background = _ref2$background === void 0 ? 'gray' : _ref2$background,
32
+ _ref2$hasCarousel = _ref2.hasCarousel,
33
+ hasCarousel = _ref2$hasCarousel === void 0 ? false : _ref2$hasCarousel,
34
+ className = _ref2.className,
35
+ _ref2$classes = _ref2.classes,
36
+ classes = _ref2$classes === void 0 ? {} : _ref2$classes,
37
+ dataAttrs = _ref2.dataAttrs,
38
+ onCarouselChange = _ref2.onCarouselChange,
39
+ rootRef = _ref2.rootRef;
40
+ var cardsCount = items.length;
41
+ var _useResolutions = useResolutions(),
42
+ isMobile = _useResolutions.isMobile;
43
+ var _useUniformHeights = useUniformHeights(cardsCount, {
44
+ disabled: isMobile
45
+ }),
46
+ maxHeight = _useUniformHeights.maxHeight,
47
+ getRef = _useUniformHeights.getRef;
48
+ if (cardsCount < MIN_ITEMS_COUNT) {
49
+ return null;
50
+ }
51
+ var renderCard = function renderCard(item, index) {
52
+ return /*#__PURE__*/React.createElement(CardOnBackground, _extends({}, item, !!maxHeight && {
53
+ headerHeight: maxHeight
54
+ }, {
55
+ headerRef: getRef(index),
56
+ classes: {
57
+ root: classes.item,
58
+ title: classes.itemTitle,
59
+ button: classes.itemButton,
60
+ extraButton: classes.itemExtraButton
61
+ },
62
+ dataAttrs: {
63
+ root: _extends({}, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.item, index + 1))
64
+ }
65
+ }));
66
+ };
67
+ var renderContent = function renderContent() {
68
+ if (hasCarousel) {
69
+ return /*#__PURE__*/React.createElement(Carousel, {
70
+ slidesSettings: getSlidesSettings(cardsCount),
71
+ arrowPosition: "inside",
72
+ onChange: onCarouselChange
73
+ }, items.map(function (item, i) {
74
+ return /*#__PURE__*/React.createElement(React.Fragment, {
75
+ key: item.title + i
76
+ }, renderCard(item, i));
77
+ }));
78
+ }
79
+ return /*#__PURE__*/React.createElement("div", {
80
+ className: cn('grid', {
81
+ count: "".concat(cardsCount)
82
+ })
83
+ }, items.map(function (item, i) {
84
+ return /*#__PURE__*/React.createElement("div", {
85
+ className: cn('grid-item'),
86
+ key: item.title + i
87
+ }, renderCard(item, i));
88
+ }));
89
+ };
90
+ return /*#__PURE__*/React.createElement("div", _extends({
91
+ className: cn({
92
+ background: background,
93
+ carousel: hasCarousel
94
+ }, [className, classes.root])
95
+ }, filterDataAttrs(dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root), {
96
+ ref: rootRef
97
+ }), renderContent());
98
+ };
99
+ export default CardsOnBackground;
@@ -0,0 +1 @@
1
+ h1,h2,h3,h4,h5{margin:0}.mfui-9-card-on-background{display:-webkit-box;display:-ms-flexbox;display:flex;position:relative;-webkit-box-pack:center;-ms-flex-pack:center;background-color:var(--base);border-radius:24px;-webkit-box-sizing:border-box;box-sizing:border-box;color:var(--content);height:100%;justify-content:center;min-width:240px;padding:16px 16px 0;text-decoration:none}.mfui-9-card-on-background:focus-visible{-webkit-animation:focus-outline-shrink .3s linear forwards;animation:focus-outline-shrink .3s linear forwards;outline-offset:2px}@-webkit-keyframes focus-outline-shrink{0%{outline:0 solid var(--137C)}to{outline:4px solid var(--137C)}}@keyframes focus-outline-shrink{0%{outline:0 solid var(--137C)}to{outline:4px solid var(--137C)}}.mfui-9-card-on-background:focus{outline:none}@media screen and (min-width:768px){.mfui-9-card-on-background{padding:24px 24px 0}}.mfui-9-card-on-background:hover{text-decoration:none}.mfui-9-card-on-background_active:hover{-webkit-box-shadow:0 8px 28px 0 rgba(0,0,0,.1);box-shadow:0 8px 28px 0 rgba(0,0,0,.1)}.mfui-9-card-on-background__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-align:center;-ms-flex-align:center;align-items:center;max-width:520px;width:100%}.mfui-9-card-on-background__description{font-size:15px;font-weight:400;line-height:24px;margin-top:8px;text-align:center}.mfui-9-card-on-background__image-wrapper{display:-webkit-box;display:-ms-flexbox;display:flex;-webkit-box-align:center;-ms-flex-align:center;align-items:center;-webkit-box-pack:center;-ms-flex-pack:center;height:118px;justify-content:center;margin:16px 0;overflow:hidden;width:118px}@media screen and (min-width:1024px){.mfui-9-card-on-background__image-wrapper{height:168px;width:168px}}.mfui-9-card-on-background__image{max-height:100%;max-width:100%;-o-object-fit:contain;object-fit:contain}.mfui-9-card-on-background__buttons{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;gap:12px;-webkit-box-align:end;-ms-flex-align:end;align-items:flex-end;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;padding-bottom:16px;width:100%}@media screen and (min-width:768px){.mfui-9-card-on-background__buttons{-webkit-box-orient:horizontal;-webkit-box-direction:normal;-ms-flex-direction:row;flex-direction:row;-ms-flex-wrap:wrap;flex-wrap:wrap;padding-bottom:24px}}.mfui-9-card-on-background__button{-webkit-box-flex:1;-ms-flex:1;flex:1;width:100%}
@@ -0,0 +1,22 @@
1
+ import React from 'react';
2
+ import { CardDataType } from '../types';
3
+ import './CardOnBackground.scss';
4
+ export type CardOnBackgroundType = CardDataType & {
5
+ headerHeight?: number;
6
+ headerRef: (node: HTMLDivElement) => void;
7
+ classes?: {
8
+ root?: string;
9
+ title?: string;
10
+ button?: string;
11
+ extraButton?: string;
12
+ };
13
+ dataAttrs?: {
14
+ root?: Record<string, string>;
15
+ title?: Record<string, string>;
16
+ button?: Record<string, string>;
17
+ extraButton?: Record<string, string>;
18
+ header?: Record<string, string>;
19
+ };
20
+ };
21
+ declare const CardOnBackground: React.FC<CardOnBackgroundType>;
22
+ export default CardOnBackground;
@@ -0,0 +1,94 @@
1
+ import _extends from "@babel/runtime/helpers/extends";
2
+ import "core-js/modules/es.symbol.js";
3
+ import "core-js/modules/es.symbol.description.js";
4
+ import React from 'react';
5
+ import { Button, Header } from '@megafon/ui-core';
6
+ import { cnCreate, convert, textConvertConfig, titleConvertConfig } from '@megafon/ui-helpers';
7
+ import { setRelAttribute } from "../../../helpers/setRelAttribute";
8
+ import "./CardOnBackground.css";
9
+ var cn = cnCreate('mfui-9-card-on-background');
10
+ var CardOnBackground = function CardOnBackground(_ref) {
11
+ var title = _ref.title,
12
+ description = _ref.description,
13
+ imageSrc = _ref.imageSrc,
14
+ _ref$imageAlt = _ref.imageAlt,
15
+ imageAlt = _ref$imageAlt === void 0 ? '' : _ref$imageAlt,
16
+ button = _ref.button,
17
+ extraButton = _ref.extraButton,
18
+ href = _ref.href,
19
+ target = _ref.target,
20
+ rel = _ref.rel,
21
+ headerHeight = _ref.headerHeight,
22
+ headerRef = _ref.headerRef,
23
+ _ref$classes = _ref.classes,
24
+ classes = _ref$classes === void 0 ? {} : _ref$classes,
25
+ dataAttrs = _ref.dataAttrs;
26
+ var showButtons = !!(button === null || button === void 0 ? void 0 : button.title) || !!(extraButton === null || extraButton === void 0 ? void 0 : extraButton.title);
27
+ var isLink = !!href && !showButtons;
28
+ var ElementType = isLink ? 'a' : 'div';
29
+ var currentRel = setRelAttribute(rel, target);
30
+ return /*#__PURE__*/React.createElement(ElementType, _extends({
31
+ className: cn({
32
+ active: isLink
33
+ }, [classes.root])
34
+ }, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.root, isLink && {
35
+ href: href,
36
+ target: target,
37
+ rel: currentRel
38
+ }), /*#__PURE__*/React.createElement("div", {
39
+ className: cn('content')
40
+ }, /*#__PURE__*/React.createElement("div", _extends({
41
+ className: cn('header-wrapper')
42
+ }, dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.header, {
43
+ style: {
44
+ minHeight: headerHeight
45
+ }
46
+ }), /*#__PURE__*/React.createElement("div", {
47
+ className: cn('header'),
48
+ ref: headerRef
49
+ }, /*#__PURE__*/React.createElement(Header, {
50
+ className: cn('title', [classes === null || classes === void 0 ? void 0 : classes.title]),
51
+ dataAttrs: {
52
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.title
53
+ },
54
+ as: "h3",
55
+ align: "center"
56
+ }, convert(title, titleConvertConfig)), !!description && /*#__PURE__*/React.createElement("div", {
57
+ className: cn('description')
58
+ }, convert(description, textConvertConfig)))), /*#__PURE__*/React.createElement("div", {
59
+ className: cn('image-wrapper')
60
+ }, /*#__PURE__*/React.createElement("img", {
61
+ className: cn('image'),
62
+ src: imageSrc,
63
+ alt: imageAlt
64
+ })), showButtons && /*#__PURE__*/React.createElement("div", {
65
+ className: cn('buttons')
66
+ }, !!(button === null || button === void 0 ? void 0 : button.title) && /*#__PURE__*/React.createElement("div", {
67
+ className: cn('button')
68
+ }, /*#__PURE__*/React.createElement(Button, {
69
+ className: classes.button,
70
+ dataAttrs: {
71
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.button
72
+ },
73
+ theme: "green",
74
+ fullWidth: true,
75
+ href: button.href,
76
+ target: button.target,
77
+ rel: setRelAttribute(button.rel, button.target),
78
+ onClick: button.onClick
79
+ }, button.title)), !!(extraButton === null || extraButton === void 0 ? void 0 : extraButton.title) && /*#__PURE__*/React.createElement("div", {
80
+ className: cn('button')
81
+ }, /*#__PURE__*/React.createElement(Button, {
82
+ className: classes.extraButton,
83
+ dataAttrs: {
84
+ root: dataAttrs === null || dataAttrs === void 0 ? void 0 : dataAttrs.extraButton
85
+ },
86
+ theme: "gray",
87
+ fullWidth: true,
88
+ href: extraButton.href,
89
+ target: extraButton.target,
90
+ rel: setRelAttribute(extraButton.rel, extraButton.target),
91
+ onClick: extraButton.onClick
92
+ }, extraButton.title)))));
93
+ };
94
+ export default CardOnBackground;
@@ -0,0 +1,42 @@
1
+ import React from 'react';
2
+ type TargetType = '_self' | '_blank' | '_parent' | '_top';
3
+ export type ButtonType = {
4
+ /** Название */
5
+ title: string;
6
+ /** Ссылка */
7
+ href?: string;
8
+ /** Атрибут ссылки target */
9
+ target?: TargetType;
10
+ /** Атрибут ссылки rel */
11
+ rel?: string;
12
+ /** Обработчик клика */
13
+ onClick?: (e: React.SyntheticEvent<EventTarget>) => void;
14
+ };
15
+ export type CardDataType = {
16
+ /** Заголовок */
17
+ title: string;
18
+ /** Текст-описание */
19
+ description?: string;
20
+ /** Изображение */
21
+ imageSrc: string;
22
+ /** Значение тега alt для изображения */
23
+ imageAlt?: string;
24
+ /** Кнопка */
25
+ button?: ButtonType;
26
+ /** Дополнительная кнопка */
27
+ extraButton?: ButtonType;
28
+ /** Ссылка */
29
+ href?: string;
30
+ /** Атрибут ссылки target */
31
+ target?: TargetType;
32
+ /** Атрибут ссылки rel */
33
+ rel?: string;
34
+ };
35
+ export declare const BackgroundColor: {
36
+ readonly GRAY: "gray";
37
+ readonly GREEN: "green";
38
+ readonly BLUE: "blue";
39
+ readonly VIOLET: "violet";
40
+ };
41
+ export type BackgroundColorType = (typeof BackgroundColor)[keyof typeof BackgroundColor];
42
+ export {};
@@ -0,0 +1,6 @@
1
+ export var BackgroundColor = {
2
+ GRAY: 'gray',
3
+ GREEN: 'green',
4
+ BLUE: 'blue',
5
+ VIOLET: 'violet'
6
+ };
@@ -0,0 +1,9 @@
1
+ type UseUniformHeightsOptions = {
2
+ disabled?: boolean;
3
+ };
4
+ type UseUniformHeightsReturnType = {
5
+ maxHeight: number;
6
+ getRef: (index: number) => (element: HTMLElement | null) => void;
7
+ };
8
+ declare const useUniformHeights: (itemsCount: number, options?: UseUniformHeightsOptions) => UseUniformHeightsReturnType;
9
+ export default useUniformHeights;
@@ -0,0 +1,88 @@
1
+ import _toConsumableArray from "@babel/runtime/helpers/toConsumableArray";
2
+ import _slicedToArray from "@babel/runtime/helpers/slicedToArray";
3
+ import "core-js/modules/es.array.concat.js";
4
+ import "core-js/modules/es.array.for-each.js";
5
+ import "core-js/modules/es.array.map.js";
6
+ import "core-js/modules/es.object.to-string.js";
7
+ import "core-js/modules/web.dom-collections.for-each.js";
8
+ import React from 'react';
9
+ import useIsomorphicLayoutEffect from "../../hooks/useIsomorphicLayoutEffect";
10
+ var useUniformHeights = function useUniformHeights(itemsCount) {
11
+ var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
12
+ var _options$disabled = options.disabled,
13
+ disabled = _options$disabled === void 0 ? false : _options$disabled;
14
+ var _React$useState = React.useState(0),
15
+ _React$useState2 = _slicedToArray(_React$useState, 2),
16
+ maxHeight = _React$useState2[0],
17
+ setMaxHeight = _React$useState2[1];
18
+ var refs = React.useRef([]);
19
+ var observerRef = React.useRef(null);
20
+ var maxHeightRef = React.useRef(maxHeight);
21
+ var updateMaxHeight = React.useCallback(function () {
22
+ if (disabled) {
23
+ return;
24
+ }
25
+ var heights = refs.current.map(function (ref) {
26
+ return (ref === null || ref === void 0 ? void 0 : ref.offsetHeight) || 0;
27
+ });
28
+ var newMaxHeight = Math.ceil(Math.max.apply(Math, _toConsumableArray(heights).concat([0])));
29
+ if (newMaxHeight !== maxHeightRef.current) {
30
+ maxHeightRef.current = newMaxHeight;
31
+ setMaxHeight(newMaxHeight);
32
+ }
33
+ }, [disabled]);
34
+ useIsomorphicLayoutEffect(function () {
35
+ if (disabled) {
36
+ return undefined;
37
+ }
38
+ if (!observerRef.current) {
39
+ observerRef.current = new ResizeObserver(function () {
40
+ requestAnimationFrame(function () {
41
+ updateMaxHeight();
42
+ });
43
+ });
44
+ }
45
+ return function () {
46
+ var _a;
47
+ (_a = observerRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
48
+ };
49
+ }, [disabled, updateMaxHeight]);
50
+ useIsomorphicLayoutEffect(function () {
51
+ var _a;
52
+ if (disabled) {
53
+ (_a = observerRef.current) === null || _a === void 0 ? void 0 : _a.disconnect();
54
+ maxHeightRef.current = 0;
55
+ setMaxHeight(0);
56
+ return;
57
+ }
58
+ var observer = observerRef.current;
59
+ if (!observer) {
60
+ return;
61
+ }
62
+ observer.disconnect();
63
+ refs.current.forEach(function (ref) {
64
+ if (ref) {
65
+ observer.observe(ref);
66
+ }
67
+ });
68
+ updateMaxHeight();
69
+ }, [itemsCount, disabled, updateMaxHeight]);
70
+ var getRef = React.useCallback(function (index) {
71
+ return function (element) {
72
+ var observer = observerRef.current;
73
+ var oldElement = refs.current[index];
74
+ if (oldElement && observer) {
75
+ observer.unobserve(oldElement);
76
+ }
77
+ refs.current[index] = element;
78
+ if (element && observer && !disabled) {
79
+ observer.observe(element);
80
+ }
81
+ };
82
+ }, [disabled]);
83
+ return {
84
+ maxHeight: maxHeight,
85
+ getRef: getRef
86
+ };
87
+ };
88
+ export default useUniformHeights;