@cloud-ru/uikit-product-site-header 0.4.8 → 0.4.10

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 (140) hide show
  1. package/CHANGELOG.md +28 -1
  2. package/dist/cjs/components/HeaderItems/HeaderItem.d.ts +10 -0
  3. package/dist/cjs/components/HeaderItems/HeaderItem.js +74 -0
  4. package/dist/cjs/components/HeaderItems/index.d.ts +2 -0
  5. package/dist/cjs/components/HeaderItems/index.js +18 -0
  6. package/dist/cjs/components/HeaderItems/styles.module.css +44 -0
  7. package/dist/cjs/components/HeaderItems/types.d.ts +12 -0
  8. package/dist/cjs/components/HeaderItems/types.js +2 -0
  9. package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +45 -0
  10. package/dist/cjs/components/SiteHeaderBasic/SiteHeaderBasic.js +38 -0
  11. package/dist/cjs/components/SiteHeaderBasic/index.d.ts +1 -0
  12. package/dist/cjs/components/SiteHeaderBasic/index.js +17 -0
  13. package/dist/cjs/components/SiteHeaderBasic/styles.module.css +66 -0
  14. package/dist/cjs/components/SubHeader/SubHeader.d.ts +17 -0
  15. package/dist/cjs/components/SubHeader/SubHeader.js +23 -0
  16. package/dist/cjs/components/SubHeader/index.d.ts +1 -0
  17. package/dist/cjs/components/SubHeader/index.js +17 -0
  18. package/dist/cjs/components/SubHeader/styles.module.css +34 -0
  19. package/dist/cjs/components/UserDetailsDropdown/UserDetailsDropdown.d.ts +7 -0
  20. package/dist/cjs/components/UserDetailsDropdown/UserDetailsDropdown.js +14 -0
  21. package/dist/cjs/components/UserDetailsDropdown/index.d.ts +1 -0
  22. package/dist/cjs/components/UserDetailsDropdown/index.js +17 -0
  23. package/dist/cjs/components/UserDetailsDropdown/styles.module.css +13 -0
  24. package/dist/cjs/components/UserDetailsInline/UserDetailsInline.d.ts +8 -0
  25. package/dist/cjs/components/UserDetailsInline/UserDetailsInline.js +16 -0
  26. package/dist/cjs/components/UserDetailsInline/index.d.ts +1 -0
  27. package/dist/cjs/components/UserDetailsInline/index.js +17 -0
  28. package/dist/cjs/components/UserDetailsInline/styles.module.css +6 -0
  29. package/dist/cjs/components/index.d.ts +5 -0
  30. package/dist/cjs/components/index.js +21 -0
  31. package/dist/cjs/helperComponents/ButtonBurger/ButtonBurger.d.ts +6 -0
  32. package/dist/cjs/helperComponents/ButtonBurger/ButtonBurger.js +12 -0
  33. package/dist/cjs/helperComponents/ButtonBurger/index.d.ts +1 -0
  34. package/dist/cjs/helperComponents/ButtonBurger/index.js +17 -0
  35. package/dist/cjs/helperComponents/ButtonBurger/styles.module.css +17 -0
  36. package/dist/cjs/helperComponents/LinkItemHeader/LinkItemHeader.d.ts +10 -0
  37. package/dist/cjs/helperComponents/LinkItemHeader/LinkItemHeader.js +19 -0
  38. package/dist/cjs/helperComponents/LinkItemHeader/index.d.ts +1 -0
  39. package/dist/cjs/helperComponents/LinkItemHeader/index.js +17 -0
  40. package/dist/cjs/helperComponents/LinkItemHeader/styles.module.css +46 -0
  41. package/dist/cjs/helperComponents/LogoContent/LogoContent.d.ts +7 -0
  42. package/dist/cjs/helperComponents/LogoContent/LogoContent.js +14 -0
  43. package/dist/cjs/helperComponents/LogoContent/index.d.ts +1 -0
  44. package/dist/cjs/helperComponents/LogoContent/index.js +17 -0
  45. package/dist/cjs/helperComponents/LogoContent/styles.module.css +35 -0
  46. package/dist/cjs/helperComponents/MobileMenu/MobileMenu.d.ts +9 -0
  47. package/dist/cjs/helperComponents/MobileMenu/MobileMenu.js +12 -0
  48. package/dist/cjs/helperComponents/MobileMenu/index.d.ts +1 -0
  49. package/dist/cjs/helperComponents/MobileMenu/index.js +17 -0
  50. package/dist/cjs/helperComponents/MobileMenu/styles.module.css +7 -0
  51. package/dist/cjs/helperComponents/MoreButton/MoreButton.d.ts +7 -0
  52. package/dist/cjs/helperComponents/MoreButton/MoreButton.js +29 -0
  53. package/dist/cjs/helperComponents/MoreButton/index.d.ts +1 -0
  54. package/dist/cjs/helperComponents/MoreButton/index.js +17 -0
  55. package/dist/cjs/helperComponents/MoreButton/styles.module.css +33 -0
  56. package/dist/cjs/helperComponents/UserInfo/UserInfo.d.ts +7 -0
  57. package/dist/cjs/helperComponents/UserInfo/UserInfo.js +15 -0
  58. package/dist/cjs/helperComponents/UserInfo/index.d.ts +1 -0
  59. package/dist/cjs/helperComponents/UserInfo/index.js +17 -0
  60. package/dist/cjs/helperComponents/UserInfo/styles.module.css +13 -0
  61. package/dist/cjs/helperComponents/index.d.ts +5 -0
  62. package/dist/cjs/helperComponents/index.js +21 -0
  63. package/dist/cjs/hooks/index.d.ts +2 -0
  64. package/dist/cjs/hooks/index.js +18 -0
  65. package/dist/cjs/hooks/useHeaderPosition.d.ts +6 -0
  66. package/dist/cjs/hooks/useHeaderPosition.js +47 -0
  67. package/dist/cjs/hooks/useResizeObserver.d.ts +3 -0
  68. package/dist/cjs/hooks/useResizeObserver.js +21 -0
  69. package/dist/cjs/index.d.ts +1 -0
  70. package/dist/cjs/index.js +17 -0
  71. package/dist/esm/components/HeaderItems/HeaderItem.d.ts +10 -0
  72. package/dist/esm/components/HeaderItems/HeaderItem.js +68 -0
  73. package/dist/esm/components/HeaderItems/index.d.ts +2 -0
  74. package/dist/esm/components/HeaderItems/index.js +2 -0
  75. package/dist/esm/components/HeaderItems/styles.module.css +44 -0
  76. package/dist/esm/components/HeaderItems/types.d.ts +12 -0
  77. package/dist/esm/components/HeaderItems/types.js +1 -0
  78. package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.d.ts +45 -0
  79. package/dist/esm/components/SiteHeaderBasic/SiteHeaderBasic.js +32 -0
  80. package/dist/esm/components/SiteHeaderBasic/index.d.ts +1 -0
  81. package/dist/esm/components/SiteHeaderBasic/index.js +1 -0
  82. package/dist/esm/components/SiteHeaderBasic/styles.module.css +66 -0
  83. package/dist/esm/components/SubHeader/SubHeader.d.ts +17 -0
  84. package/dist/esm/components/SubHeader/SubHeader.js +17 -0
  85. package/dist/esm/components/SubHeader/index.d.ts +1 -0
  86. package/dist/esm/components/SubHeader/index.js +1 -0
  87. package/dist/esm/components/SubHeader/styles.module.css +34 -0
  88. package/dist/esm/components/UserDetailsDropdown/UserDetailsDropdown.d.ts +7 -0
  89. package/dist/esm/components/UserDetailsDropdown/UserDetailsDropdown.js +8 -0
  90. package/dist/esm/components/UserDetailsDropdown/index.d.ts +1 -0
  91. package/dist/esm/components/UserDetailsDropdown/index.js +1 -0
  92. package/dist/esm/components/UserDetailsDropdown/styles.module.css +13 -0
  93. package/dist/esm/components/UserDetailsInline/UserDetailsInline.d.ts +8 -0
  94. package/dist/esm/components/UserDetailsInline/UserDetailsInline.js +10 -0
  95. package/dist/esm/components/UserDetailsInline/index.d.ts +1 -0
  96. package/dist/esm/components/UserDetailsInline/index.js +1 -0
  97. package/dist/esm/components/UserDetailsInline/styles.module.css +6 -0
  98. package/dist/esm/components/index.d.ts +5 -0
  99. package/dist/esm/components/index.js +5 -0
  100. package/dist/esm/helperComponents/ButtonBurger/ButtonBurger.d.ts +6 -0
  101. package/dist/esm/helperComponents/ButtonBurger/ButtonBurger.js +6 -0
  102. package/dist/esm/helperComponents/ButtonBurger/index.d.ts +1 -0
  103. package/dist/esm/helperComponents/ButtonBurger/index.js +1 -0
  104. package/dist/esm/helperComponents/ButtonBurger/styles.module.css +17 -0
  105. package/dist/esm/helperComponents/LinkItemHeader/LinkItemHeader.d.ts +10 -0
  106. package/dist/esm/helperComponents/LinkItemHeader/LinkItemHeader.js +13 -0
  107. package/dist/esm/helperComponents/LinkItemHeader/index.d.ts +1 -0
  108. package/dist/esm/helperComponents/LinkItemHeader/index.js +1 -0
  109. package/dist/esm/helperComponents/LinkItemHeader/styles.module.css +46 -0
  110. package/dist/esm/helperComponents/LogoContent/LogoContent.d.ts +7 -0
  111. package/dist/esm/helperComponents/LogoContent/LogoContent.js +8 -0
  112. package/dist/esm/helperComponents/LogoContent/index.d.ts +1 -0
  113. package/dist/esm/helperComponents/LogoContent/index.js +1 -0
  114. package/dist/esm/helperComponents/LogoContent/styles.module.css +35 -0
  115. package/dist/esm/helperComponents/MobileMenu/MobileMenu.d.ts +9 -0
  116. package/dist/esm/helperComponents/MobileMenu/MobileMenu.js +6 -0
  117. package/dist/esm/helperComponents/MobileMenu/index.d.ts +1 -0
  118. package/dist/esm/helperComponents/MobileMenu/index.js +1 -0
  119. package/dist/esm/helperComponents/MobileMenu/styles.module.css +7 -0
  120. package/dist/esm/helperComponents/MoreButton/MoreButton.d.ts +7 -0
  121. package/dist/esm/helperComponents/MoreButton/MoreButton.js +23 -0
  122. package/dist/esm/helperComponents/MoreButton/index.d.ts +1 -0
  123. package/dist/esm/helperComponents/MoreButton/index.js +1 -0
  124. package/dist/esm/helperComponents/MoreButton/styles.module.css +33 -0
  125. package/dist/esm/helperComponents/UserInfo/UserInfo.d.ts +7 -0
  126. package/dist/esm/helperComponents/UserInfo/UserInfo.js +9 -0
  127. package/dist/esm/helperComponents/UserInfo/index.d.ts +1 -0
  128. package/dist/esm/helperComponents/UserInfo/index.js +1 -0
  129. package/dist/esm/helperComponents/UserInfo/styles.module.css +13 -0
  130. package/dist/esm/helperComponents/index.d.ts +5 -0
  131. package/dist/esm/helperComponents/index.js +5 -0
  132. package/dist/esm/hooks/index.d.ts +2 -0
  133. package/dist/esm/hooks/index.js +2 -0
  134. package/dist/esm/hooks/useHeaderPosition.d.ts +6 -0
  135. package/dist/esm/hooks/useHeaderPosition.js +43 -0
  136. package/dist/esm/hooks/useResizeObserver.d.ts +3 -0
  137. package/dist/esm/hooks/useResizeObserver.js +17 -0
  138. package/dist/esm/index.d.ts +1 -0
  139. package/dist/esm/index.js +1 -0
  140. package/package.json +7 -6
package/CHANGELOG.md CHANGED
@@ -3,6 +3,29 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 0.4.10 (2025-11-13)
7
+
8
+ ### Only dependencies have been changed
9
+ * [@cloud-ru/uikit-product-icons@15.1.3](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/icons/CHANGELOG.md)
10
+ * [@cloud-ru/uikit-product-mobile-modal@0.9.20](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/mobile-modal/CHANGELOG.md)
11
+ * [@cloud-ru/uikit-product-site-layout@0.2.4](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/site-layout/CHANGELOG.md)
12
+ * [@cloud-ru/uikit-product-utils@7.0.2](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/utils/CHANGELOG.md)
13
+
14
+
15
+
16
+
17
+
18
+ ## 0.4.9 (2025-11-12)
19
+
20
+
21
+ ### Bug Fixes
22
+
23
+ * **PD-3377:** contributors update to publish all packages ([719fd3e](https://gitverse.ru/cloud-ru-tech/uikit-product/commits/719fd3e1249e247443b125c47ea408d92c8395c3))
24
+
25
+
26
+
27
+
28
+
6
29
  ## 0.4.8 (2025-11-12)
7
30
 
8
31
  ### Only dependencies have been changed
@@ -39,7 +62,11 @@ See [Conventional Commits](https://conventionalcommits.org) for commit guideline
39
62
 
40
63
  ## 0.4.5 (2025-10-16)
41
64
 
42
- **Note:** Version bump only for package @cloud-ru/uikit-product-site-header
65
+ ### Only dependencies have been changed
66
+ * [@cloud-ru/uikit-product-icons@15.1.2](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/icons/CHANGELOG.md)
67
+ * [@cloud-ru/uikit-product-mobile-modal@0.9.19](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/mobile-modal/CHANGELOG.md)
68
+ * [@cloud-ru/uikit-product-site-layout@0.2.3](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/site-layout/CHANGELOG.md)
69
+ * [@cloud-ru/uikit-product-utils@7.0.1](https://gitverse.ru/cloud-ru-tech/uikit-product/-/blob/master/packages/utils/CHANGELOG.md)
43
70
 
44
71
 
45
72
 
@@ -0,0 +1,10 @@
1
+ import { LinkItem } from './types';
2
+ export type HeaderItemProps = {
3
+ /** Список элементов для пунктов меню хэдера */
4
+ linkItems?: LinkItem[];
5
+ /** Флаг является ли сейчас мобильная версия */
6
+ isMobileTabletView?: boolean;
7
+ /** Id активного элемента списка меню */
8
+ activeLinkItemId?: string;
9
+ };
10
+ export declare function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId }: HeaderItemProps): import("react/jsx-runtime").JSX.Element | null;
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.HeaderItems = HeaderItems;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const classnames_1 = __importDefault(require("classnames"));
9
+ const react_1 = require("react");
10
+ const helperComponents_1 = require("../../helperComponents");
11
+ const hooks_1 = require("../../hooks");
12
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
13
+ const GAP_ITEMS = 22;
14
+ const WIDTH_MORE_BUTTON = 24;
15
+ function HeaderItems({ linkItems, isMobileTabletView, activeLinkItemId }) {
16
+ const [visibleItems, setVisibleItems] = (0, react_1.useState)([]);
17
+ const [hiddenItems, setHiddenItems] = (0, react_1.useState)([]);
18
+ const hiddenRowElementRef = (0, react_1.useRef)(null);
19
+ const [firstItemElement, setFirstItemElement] = (0, react_1.useState)(null);
20
+ const itemsMapRef = (0, react_1.useRef)(new Map());
21
+ const { width: maxWidth } = (0, hooks_1.useResizeObserver)(hiddenRowElementRef.current);
22
+ const { width: firstVisibleItemWidth } = (0, hooks_1.useResizeObserver)(firstItemElement);
23
+ function setItemElement(item, index) {
24
+ return (itemElement) => {
25
+ if (index === 0 && itemElement) {
26
+ setFirstItemElement(itemElement);
27
+ }
28
+ if (itemElement === null) {
29
+ itemsMapRef.current.delete(item);
30
+ }
31
+ else {
32
+ itemsMapRef.current.set(item, itemElement);
33
+ }
34
+ };
35
+ }
36
+ (0, react_1.useEffect)(() => {
37
+ if (maxWidth < 1) {
38
+ return;
39
+ }
40
+ const newVisibleItems = [];
41
+ const newHiddenItems = [];
42
+ let isHidden = false;
43
+ let indexElement = 0;
44
+ let currentRowWidth = 0;
45
+ const size = itemsMapRef.current.size;
46
+ itemsMapRef.current.forEach((itemElement, itemRowItem) => {
47
+ const itemWidth = (itemElement === null || itemElement === void 0 ? void 0 : itemElement.offsetWidth) || 0;
48
+ const isLastElement = indexElement + 1 === size;
49
+ const sumRowWidth = currentRowWidth + itemWidth + (isLastElement ? 0 : GAP_ITEMS);
50
+ if (isHidden) {
51
+ newHiddenItems.push(itemRowItem);
52
+ }
53
+ else {
54
+ if (maxWidth > sumRowWidth + (isLastElement ? 0 : WIDTH_MORE_BUTTON)) {
55
+ newVisibleItems.push(itemRowItem);
56
+ currentRowWidth = sumRowWidth;
57
+ }
58
+ else {
59
+ newHiddenItems.push(itemRowItem);
60
+ isHidden = true;
61
+ }
62
+ }
63
+ indexElement++;
64
+ });
65
+ setVisibleItems(newVisibleItems);
66
+ setHiddenItems(newHiddenItems);
67
+ }, [linkItems, maxWidth, firstVisibleItemWidth]);
68
+ if (!linkItems || isMobileTabletView)
69
+ return null;
70
+ const isVisibleEmpty = visibleItems.length === 0;
71
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.wrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, styles_module_scss_1.default.hiddenRow), ref: hiddenRowElementRef, children: linkItems.map((linkItem, index) => ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.lastItemContainer, ref: setItemElement(linkItem, index), children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, target: linkItem.target, href: linkItem.href, onClick: linkItem.onClick }) }, linkItem.id))) }), (0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.linkItemsContainer, {
72
+ [styles_module_scss_1.default.linkItemsFirstViewContainer]: isVisibleEmpty,
73
+ }), children: [(isVisibleEmpty ? linkItems : visibleItems).map(linkItem => ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.lastItemContainer, children: (0, jsx_runtime_1.jsx)(helperComponents_1.LinkItemHeader, { label: linkItem.label, href: linkItem.href, onClick: linkItem.onClick, active: activeLinkItemId === linkItem.id }) }, linkItem.id))), hiddenItems.length > 0 && (0, jsx_runtime_1.jsx)(helperComponents_1.MoreButton, { linkItemsArray: hiddenItems, activeItemId: activeLinkItemId })] })] }));
74
+ }
@@ -0,0 +1,2 @@
1
+ export * from './HeaderItem';
2
+ export * from './types';
@@ -0,0 +1,18 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./HeaderItem"), exports);
18
+ __exportStar(require("./types"), exports);
@@ -0,0 +1,44 @@
1
+ .wrapper{
2
+ display:flex;
3
+ flex-direction:row;
4
+ justify-content:start;
5
+ gap:22px;
6
+ flex-wrap:nowrap;
7
+ min-height:24px;
8
+ }
9
+
10
+ .linkItemsContainer{
11
+ display:flex;
12
+ flex-direction:row;
13
+ align-items:center;
14
+ flex-wrap:wrap;
15
+ gap:22px;
16
+ }
17
+
18
+ .lastItemContainer{
19
+ display:flex;
20
+ flex-direction:row;
21
+ align-items:center;
22
+ flex-wrap:nowrap;
23
+ gap:22px;
24
+ }
25
+
26
+ .hiddenRow{
27
+ position:absolute;
28
+ top:0;
29
+ left:0;
30
+ display:flex;
31
+ width:100%;
32
+ visibility:hidden;
33
+ }
34
+
35
+ .linkItemsFirstViewContainer{
36
+ display:flex;
37
+ flex-direction:row;
38
+ overflow:hidden;
39
+ height:24px;
40
+ flex-grow:1;
41
+ align-items:center;
42
+ flex-wrap:wrap;
43
+ gap:22px;
44
+ }
@@ -0,0 +1,12 @@
1
+ export type LinkItem = {
2
+ /** id Элемента */
3
+ id: string;
4
+ /** Текст элемента */
5
+ label: string;
6
+ /** Хэндлер клика элемента */
7
+ onClick?: () => void;
8
+ /** Ссылка элемента */
9
+ href?: string;
10
+ /** target для ссылки элемента */
11
+ target?: string;
12
+ };
@@ -0,0 +1,2 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
@@ -0,0 +1,45 @@
1
+ import { MouseEvent, ReactNode } from 'react';
2
+ import { WithLayoutType, WithSupportProps } from '@sbercloud/uikit-product-utils';
3
+ export type AdditionalLogoText = {
4
+ /** Дополнительный текст Логотипа */
5
+ text?: string;
6
+ /** Переход по ссылке по дополнительному тексту Логотипа */
7
+ link?: string;
8
+ /** Коллбэк по клику на дополнительный текс Логотипа */
9
+ onClick?(event?: MouseEvent<HTMLAnchorElement>): void;
10
+ };
11
+ export type Logo = {
12
+ /** Переход по ссылке Логотипа */
13
+ logoLink: string;
14
+ /** Коллбэк по клику на Логотип */
15
+ onClick?(event?: MouseEvent<HTMLAnchorElement>): void;
16
+ };
17
+ export type HeaderProps = WithSupportProps<WithLayoutType<{
18
+ /** Настройки текста справа Логотипа */
19
+ additionalLogoText?: AdditionalLogoText;
20
+ /** className root блока */
21
+ className?: string;
22
+ /** className основного хедера */
23
+ mainHeaderClassName?: string;
24
+ /** максимальная ширина контейнера */
25
+ maxWidth?: number;
26
+ /** Флаг открытия мобильного меню */
27
+ mobileMenuOpen: boolean;
28
+ /** Настройки Логотипа */
29
+ logo: Logo;
30
+ /** Функция изменения флаг открытия мобильного меню */
31
+ onSetMobileMenuOpen(open: boolean): void;
32
+ /** Контент посередине (между логотипом и правым блоком) */
33
+ middleContent?: ReactNode;
34
+ /** Контент занимающий всю возможную ширину хэдера */
35
+ fullWidthContent?: ReactNode;
36
+ /** Контент справа (левее бургера) */
37
+ rightContent?: ReactNode;
38
+ /** Контент сверху над хэдером, для инфостроки */
39
+ subHeader?: ReactNode;
40
+ /** Контент мобильной версии меню */
41
+ mobileMenuContent?: ReactNode;
42
+ /** Нижний контент кнопок мобильной версии меню */
43
+ mobileConsultationButton?: ReactNode;
44
+ }>>;
45
+ export declare function SiteHeaderBasic({ className, maxWidth, additionalLogoText, middleContent, rightContent, mobileMenuContent, subHeader, fullWidthContent, layoutType, mobileConsultationButton, mobileMenuOpen, onSetMobileMenuOpen, mainHeaderClassName, logo, ...rest }: HeaderProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ var __rest = (this && this.__rest) || function (s, e) {
3
+ var t = {};
4
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
5
+ t[p] = s[p];
6
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
7
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
8
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
9
+ t[p[i]] = s[p[i]];
10
+ }
11
+ return t;
12
+ };
13
+ var __importDefault = (this && this.__importDefault) || function (mod) {
14
+ return (mod && mod.__esModule) ? mod : { "default": mod };
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ exports.SiteHeaderBasic = SiteHeaderBasic;
18
+ const jsx_runtime_1 = require("react/jsx-runtime");
19
+ const classnames_1 = __importDefault(require("classnames"));
20
+ const react_1 = require("react");
21
+ const uikit_product_site_layout_1 = require("@sbercloud/uikit-product-site-layout");
22
+ const uikit_product_utils_1 = require("@sbercloud/uikit-product-utils");
23
+ const helperComponents_1 = require("../../helperComponents");
24
+ const hooks_1 = require("../../hooks");
25
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
26
+ const HEIGHT_SUBHEADER = 25;
27
+ function SiteHeaderBasic(_a) {
28
+ var { className, maxWidth, additionalLogoText, middleContent, rightContent, mobileMenuContent, subHeader, fullWidthContent, layoutType, mobileConsultationButton, mobileMenuOpen, onSetMobileMenuOpen, mainHeaderClassName, logo } = _a, rest = __rest(_a, ["className", "maxWidth", "additionalLogoText", "middleContent", "rightContent", "mobileMenuContent", "subHeader", "fullWidthContent", "layoutType", "mobileConsultationButton", "mobileMenuOpen", "onSetMobileMenuOpen", "mainHeaderClassName", "logo"]);
29
+ const refHeader = (0, react_1.useRef)(null);
30
+ const { showHeader, headerHeight } = (0, hooks_1.useHeaderPosition)(mobileMenuOpen, refHeader);
31
+ const isMobileTabletView = layoutType === 'mobile' || layoutType === 'tablet';
32
+ const isMobile = layoutType === 'mobile';
33
+ return ((0, jsx_runtime_1.jsxs)(uikit_product_site_layout_1.Layout.Header, Object.assign({ style: {
34
+ transform: `translateY(-${!showHeader ? headerHeight + HEIGHT_SUBHEADER : 0}px)`,
35
+ }, className: (0, classnames_1.default)(styles_module_scss_1.default.root, className), "data-attr": 'layout-header' }, (0, uikit_product_utils_1.extractSupportProps)(rest), { children: [subHeader, (0, jsx_runtime_1.jsx)("div", { ref: refHeader, className: (0, classnames_1.default)(styles_module_scss_1.default.headerMaster, styles_module_scss_1.default.dividerHeader, mainHeaderClassName), "data-layout-type": layoutType, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.headerPartsContainer, style: {
36
+ maxWidth,
37
+ }, children: fullWidthContent !== null && fullWidthContent !== void 0 ? fullWidthContent : ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.leftPart, "data-layout-type": layoutType, children: (0, jsx_runtime_1.jsx)(helperComponents_1.LogoContent, { additionalLogoText: additionalLogoText, isMobile: isMobile, logo: logo }) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.middlePart, children: middleContent }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.rightPart, children: [rightContent, mobileMenuContent && isMobileTabletView && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(helperComponents_1.ButtonBurger, { mobileMenuOpen: mobileMenuOpen, onClick: () => onSetMobileMenuOpen(!mobileMenuOpen) }), (0, jsx_runtime_1.jsx)(helperComponents_1.MobileMenu, { mobileConsultationButton: mobileConsultationButton, mobileMenuContent: mobileMenuContent, mobileMenuOpen: mobileMenuOpen, onClickForCloseMobileMenu: () => onSetMobileMenuOpen(false) })] }))] })] })) }) })] })));
38
+ }
@@ -0,0 +1 @@
1
+ export * from './SiteHeaderBasic';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SiteHeaderBasic"), exports);
@@ -0,0 +1,66 @@
1
+ .root{
2
+ position:sticky;
3
+ top:0;
4
+ transition:box-shadow 0.3s ease-in-out, transform 0.3s ease-in-out;
5
+ }
6
+
7
+ .headerMaster{
8
+ width:100%;
9
+ background:var(--sys-neutral-background1-level, #fdfdfd);
10
+ padding:0 32px;
11
+ }
12
+ .headerMaster[data-layout-type=mobile]{
13
+ padding:0 16px;
14
+ }
15
+
16
+ .dividerHeader{
17
+ box-sizing:border-box;
18
+ border-bottom:1px solid var(--sys-neutral-decor-default, #dde0ea);
19
+ }
20
+
21
+ .leftPart{
22
+ display:flex;
23
+ flex-direction:row;
24
+ align-items:center;
25
+ margin-right:40px;
26
+ }
27
+ .leftPart[data-layout-type=mobile]{
28
+ margin-right:0;
29
+ }
30
+
31
+ .middlePart{
32
+ position:relative;
33
+ display:flex;
34
+ flex-direction:row;
35
+ align-items:center;
36
+ flex-grow:1;
37
+ justify-content:start;
38
+ gap:40px;
39
+ }
40
+
41
+ .linkItemsContainer{
42
+ display:flex;
43
+ flex-direction:row;
44
+ align-items:center;
45
+ gap:20px;
46
+ }
47
+
48
+ .rightPart{
49
+ display:flex;
50
+ flex-direction:row;
51
+ align-items:center;
52
+ gap:12px;
53
+ }
54
+
55
+ .headerPartsContainer{
56
+ max-width:1216px;
57
+ width:100%;
58
+ display:flex;
59
+ align-items:center;
60
+ flex-direction:row;
61
+ justify-content:space-between;
62
+ height:60px;
63
+ box-sizing:border-box;
64
+ margin:0 auto;
65
+ overflow:hidden;
66
+ }
@@ -0,0 +1,17 @@
1
+ import { WithLayoutType } from '@sbercloud/uikit-product-utils';
2
+ type BannerInfo = {
3
+ /** Цвет фона SubHeader */
4
+ color: 'yellow' | 'blue' | 'green';
5
+ /** Ссылка на текст SubHeader */
6
+ link?: string;
7
+ /** Текст SubHeader, может передаваться без ссылки */
8
+ title: string;
9
+ };
10
+ type SubHeaderProps = WithLayoutType<{
11
+ /** Объект для отображения данных на баннере */
12
+ bannerInfo: BannerInfo;
13
+ /** Функция закрытия SubHeader */
14
+ onCloseSubHeader?(): void;
15
+ }>;
16
+ export declare function SubHeader({ bannerInfo, onCloseSubHeader, layoutType }: SubHeaderProps): import("react/jsx-runtime").JSX.Element;
17
+ export {};
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.SubHeader = SubHeader;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const classnames_1 = __importDefault(require("classnames"));
9
+ const alert_1 = require("@snack-uikit/alert");
10
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
11
+ const APPEARANCE_ALERT = {
12
+ green: 'success',
13
+ yellow: 'warning',
14
+ blue: 'info',
15
+ };
16
+ function SubHeader({ bannerInfo, onCloseSubHeader, layoutType }) {
17
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.root, styles_module_scss_1.default[bannerInfo.color]), "data-layout-type": layoutType, children: (0, jsx_runtime_1.jsx)(alert_1.AlertTop, { className: styles_module_scss_1.default.subHeaderContainer, title: !bannerInfo.link ? bannerInfo.title : undefined, link: bannerInfo.link
18
+ ? {
19
+ text: bannerInfo.title,
20
+ href: bannerInfo.link,
21
+ }
22
+ : undefined, description: '', icon: false, appearance: APPEARANCE_ALERT[bannerInfo.color], onClose: onCloseSubHeader }) }));
23
+ }
@@ -0,0 +1 @@
1
+ export * from './SubHeader';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SubHeader"), exports);
@@ -0,0 +1,34 @@
1
+ .root{
2
+ background:var(--sys-neutral-background1-level, #fdfdfd);
3
+ padding:0 16px;
4
+ }
5
+ .root[data-layout-type=mobile]{
6
+ padding:0;
7
+ }
8
+
9
+ .subHeaderContainer{
10
+ max-width:1248px;
11
+ margin:0 auto;
12
+ height:36px;
13
+ }
14
+
15
+ .closeIcon{
16
+ cursor:pointer;
17
+ }
18
+
19
+ .green{
20
+ background-color:var(--sys-green-accent-default, #67b963);
21
+ }
22
+
23
+ .yellow{
24
+ background-color:var(--sys-yellow-accent-default, #f0d559);
25
+ }
26
+
27
+ .blue{
28
+ background-color:var(--sys-blue-accent-default, #0063ff);
29
+ }
30
+
31
+ .link{
32
+ text-decoration:underline;
33
+ color:var(--sys-graphite-text-main, #222222);
34
+ }
@@ -0,0 +1,7 @@
1
+ export type UserDetailsDropdownProps = {
2
+ userName: string;
3
+ lastName: string;
4
+ onClickExit: () => void;
5
+ onClickDropdownContent?: () => void;
6
+ };
7
+ export declare function UserDetailsDropdown({ userName, lastName, onClickExit, onClickDropdownContent, }: UserDetailsDropdownProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,14 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserDetailsDropdown = UserDetailsDropdown;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const avatar_1 = require("@snack-uikit/avatar");
9
+ const dropdown_1 = require("@snack-uikit/dropdown");
10
+ const UserDetailsInline_1 = require("../UserDetailsInline");
11
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
12
+ function UserDetailsDropdown({ userName, lastName, onClickExit, onClickDropdownContent, }) {
13
+ return ((0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { offset: 8, placement: 'bottom-end', onOpenChange: onClickDropdownContent, content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.wrapper, children: (0, jsx_runtime_1.jsx)(UserDetailsInline_1.UserDetailsInline, { className: styles_module_scss_1.default.container, userName: userName, lastName: lastName, onClickExit: onClickExit, withDivider: true }) }), children: (0, jsx_runtime_1.jsx)(avatar_1.Avatar, { name: `${userName} ${lastName}`, size: 's', showTwoSymbols: true, className: styles_module_scss_1.default.authAvatar, appearance: 'green' }) }));
14
+ }
@@ -0,0 +1 @@
1
+ export * from './UserDetailsDropdown';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./UserDetailsDropdown"), exports);
@@ -0,0 +1,13 @@
1
+ .authAvatar{
2
+ cursor:pointer;
3
+ }
4
+
5
+ .wrapper{
6
+ min-width:240px;
7
+ padding:4px 8px;
8
+ z-index:5;
9
+ }
10
+
11
+ .container{
12
+ gap:4px;
13
+ }
@@ -0,0 +1,8 @@
1
+ export type UserDetailsInlineProps = {
2
+ userName: string;
3
+ lastName: string;
4
+ className?: string;
5
+ onClickExit: () => void;
6
+ withDivider?: boolean;
7
+ };
8
+ export declare function UserDetailsInline({ userName, lastName, onClickExit, withDivider, className }: UserDetailsInlineProps): import("react/jsx-runtime").JSX.Element;
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.UserDetailsInline = UserDetailsInline;
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const classnames_1 = __importDefault(require("classnames"));
9
+ const uikit_product_icons_1 = require("@sbercloud/uikit-product-icons");
10
+ const button_1 = require("@snack-uikit/button");
11
+ const divider_1 = require("@snack-uikit/divider");
12
+ const UserInfo_1 = require("../../helperComponents/UserInfo");
13
+ const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
14
+ function UserDetailsInline({ userName, lastName, onClickExit, withDivider, className }) {
15
+ return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.userAuthContent, className), children: [(0, jsx_runtime_1.jsx)(UserInfo_1.UserInfo, { userName: userName, lastName: lastName }), withDivider && (0, jsx_runtime_1.jsx)(divider_1.Divider, {}), (0, jsx_runtime_1.jsx)(button_1.ButtonFunction, { label: '\u0412\u044B\u0439\u0442\u0438 \u0438\u0437 \u0430\u043A\u043A\u0430\u0443\u043D\u0442\u0430', size: 'xs', appearance: 'neutral', icon: (0, jsx_runtime_1.jsx)(uikit_product_icons_1.ExitSVG, { size: 24 }), iconPosition: 'before', className: styles_module_scss_1.default.buttonExit, onClick: onClickExit })] }));
16
+ }
@@ -0,0 +1 @@
1
+ export * from './UserDetailsInline';
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./UserDetailsInline"), exports);
@@ -0,0 +1,6 @@
1
+ .userAuthContent{
2
+ display:flex;
3
+ align-items:start;
4
+ flex-direction:column;
5
+ gap:8px;
6
+ }
@@ -0,0 +1,5 @@
1
+ export * from './SiteHeaderBasic';
2
+ export * from './HeaderItems';
3
+ export * from './SubHeader';
4
+ export * from './UserDetailsInline';
5
+ export * from './UserDetailsDropdown';
@@ -0,0 +1,21 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./SiteHeaderBasic"), exports);
18
+ __exportStar(require("./HeaderItems"), exports);
19
+ __exportStar(require("./SubHeader"), exports);
20
+ __exportStar(require("./UserDetailsInline"), exports);
21
+ __exportStar(require("./UserDetailsDropdown"), exports);
@@ -0,0 +1,6 @@
1
+ type ButtonBurgerProps = {
2
+ mobileMenuOpen: boolean;
3
+ onClick: () => void;
4
+ };
5
+ export declare function ButtonBurger({ mobileMenuOpen, onClick }: ButtonBurgerProps): import("react/jsx-runtime").JSX.Element;
6
+ export {};