@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
@@ -0,0 +1,9 @@
1
+ import { ReactNode } from 'react';
2
+ type MobileMenuProps = {
3
+ mobileMenuOpen: boolean;
4
+ mobileMenuContent: ReactNode;
5
+ mobileConsultationButton?: ReactNode;
6
+ onClickForCloseMobileMenu: () => void;
7
+ };
8
+ export declare function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }: MobileMenuProps): import("react/jsx-runtime").JSX.Element;
9
+ export {};
@@ -0,0 +1,6 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import { MobileModalCustom } from '@sbercloud/uikit-product-mobile-modal';
3
+ import styles from './styles.module.css';
4
+ export function MobileMenu({ mobileMenuOpen, onClickForCloseMobileMenu, mobileMenuContent, mobileConsultationButton, }) {
5
+ return (_jsxs(MobileModalCustom, { open: mobileMenuOpen, onClose: onClickForCloseMobileMenu, className: styles.mobileMenu, children: [_jsx(MobileModalCustom.Header, { title: '\u041C\u0435\u043D\u044E', align: 'center' }), _jsx(MobileModalCustom.Body, { content: mobileMenuContent }), mobileConsultationButton && _jsx(MobileModalCustom.Footer, { actions: mobileConsultationButton })] }));
6
+ }
@@ -0,0 +1 @@
1
+ export * from './MobileMenu';
@@ -0,0 +1 @@
1
+ export * from './MobileMenu';
@@ -0,0 +1,7 @@
1
+ .mobileMenu{
2
+ scrollbar-width:none;
3
+ -ms-overflow-style:none;
4
+ }
5
+ .mobileMenu::-webkit-scrollbar{
6
+ display:none;
7
+ }
@@ -0,0 +1,7 @@
1
+ import { LinkItem } from '../../components/HeaderItems/types';
2
+ type MoreButtonProps = {
3
+ linkItemsArray: LinkItem[];
4
+ activeItemId?: string;
5
+ };
6
+ export declare function MoreButton({ linkItemsArray, activeItemId }: MoreButtonProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,23 @@
1
+ import { jsx as _jsx } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ import { useState } from 'react';
4
+ import { MoreSVG } from '@sbercloud/uikit-product-icons';
5
+ import { Dropdown } from '@snack-uikit/dropdown';
6
+ import { LinkItemHeader } from '../LinkItemHeader';
7
+ import styles from './styles.module.css';
8
+ export function MoreButton({ linkItemsArray, activeItemId }) {
9
+ const [open, setOpen] = useState(false);
10
+ const onClickOpen = () => {
11
+ setOpen(prev => !prev);
12
+ };
13
+ return (_jsx(Dropdown, { placement: 'bottom-start', open: open, outsideClick: () => {
14
+ onClickOpen();
15
+ return false;
16
+ }, content: _jsx("div", { className: styles.tagRowDropListScroll, children: linkItemsArray.map(item => (_jsx("div", { className: cn(styles.rowLinkMore, {
17
+ [styles.hovered]: !item.href,
18
+ [styles.active]: item.id === activeItemId && !item.href,
19
+ }), children: _jsx(LinkItemHeader, { label: item.label, onClick: () => {
20
+ item.onClick && item.onClick();
21
+ onClickOpen();
22
+ }, href: item.href, withoutHover: true }) }, item.id))) }), children: _jsx("button", { className: styles.button, onClick: onClickOpen, children: _jsx(MoreSVG, {}) }) }));
23
+ }
@@ -0,0 +1 @@
1
+ export * from './MoreButton';
@@ -0,0 +1 @@
1
+ export * from './MoreButton';
@@ -0,0 +1,33 @@
1
+ .tagRowDropListScroll{
2
+ display:flex;
3
+ flex-direction:column;
4
+ align-items:start;
5
+ width:140px;
6
+ }
7
+
8
+ .rowLinkMore{
9
+ padding:8px 10px;
10
+ border-left:2px solid transparent;
11
+ transition:color 0.3s ease-in-out;
12
+ }
13
+
14
+ .hovered:hover{
15
+ border-left:2px solid var(--sys-primary-accent-default, #26d07c);
16
+ }
17
+
18
+ .button{
19
+ background-color:transparent;
20
+ border:none;
21
+ box-shadow:none;
22
+ padding:0;
23
+ display:flex;
24
+ align-items:center;
25
+ cursor:pointer;
26
+ }
27
+ .button:active, .button:focus{
28
+ outline:none;
29
+ }
30
+
31
+ .active{
32
+ border-left:2px solid var(--sys-primary-accent-default, #26d07c);
33
+ }
@@ -0,0 +1,7 @@
1
+ type UserInfoProps = {
2
+ userName: string;
3
+ lastName: string;
4
+ className?: string;
5
+ };
6
+ export declare function UserInfo({ userName, lastName, className }: UserInfoProps): import("react/jsx-runtime").JSX.Element;
7
+ export {};
@@ -0,0 +1,9 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ import cn from 'classnames';
3
+ import { Avatar } from '@snack-uikit/avatar';
4
+ import { Typography } from '@snack-uikit/typography';
5
+ import styles from './styles.module.css';
6
+ export function UserInfo({ userName, lastName, className }) {
7
+ const fullName = `${lastName} ${userName}`;
8
+ return (_jsxs("div", { className: cn(styles.root, className), children: [_jsx(Avatar, { name: fullName, size: 'xs', showTwoSymbols: true, appearance: 'green' }), _jsx(Typography, { tag: 'div', size: 's', purpose: 'body', family: 'sans', className: styles.text, children: fullName })] }));
9
+ }
@@ -0,0 +1 @@
1
+ export * from './UserInfo';
@@ -0,0 +1 @@
1
+ export * from './UserInfo';
@@ -0,0 +1,13 @@
1
+ .root{
2
+ display:grid;
3
+ grid-template-columns:24px 188px;
4
+ align-items:center;
5
+ gap:8px;
6
+ }
7
+
8
+ .text{
9
+ text-overflow:ellipsis;
10
+ overflow:hidden;
11
+ white-space:nowrap;
12
+ color:var(--sys-neutral-text-main, #41424e);
13
+ }
@@ -0,0 +1,5 @@
1
+ export * from './MoreButton';
2
+ export * from './LinkItemHeader';
3
+ export * from './ButtonBurger';
4
+ export * from './LogoContent';
5
+ export * from './MobileMenu';
@@ -0,0 +1,5 @@
1
+ export * from './MoreButton';
2
+ export * from './LinkItemHeader';
3
+ export * from './ButtonBurger';
4
+ export * from './LogoContent';
5
+ export * from './MobileMenu';
@@ -0,0 +1,2 @@
1
+ export * from './useResizeObserver';
2
+ export * from './useHeaderPosition';
@@ -0,0 +1,2 @@
1
+ export * from './useResizeObserver';
2
+ export * from './useHeaderPosition';
@@ -0,0 +1,6 @@
1
+ import { RefObject } from 'react';
2
+ export declare const useHeaderPosition: (isModalMenuOpen?: boolean, refHeader?: RefObject<HTMLDivElement>) => {
3
+ showHeader: boolean;
4
+ headerPosition: number;
5
+ headerHeight: number;
6
+ };
@@ -0,0 +1,43 @@
1
+ import { useEffect, useState } from 'react';
2
+ export const useHeaderPosition = (isModalMenuOpen, refHeader) => {
3
+ const [showHeader, setShowHeader] = useState(true);
4
+ const [headerPosition, setHeaderPosition] = useState(0);
5
+ const [headerHeight, setHeaderHeight] = useState(0);
6
+ useEffect(() => {
7
+ const targetScroll = () => {
8
+ const lastScrollPos = window.scrollY;
9
+ if (headerPosition !== 0) {
10
+ if (!isModalMenuOpen && lastScrollPos > headerPosition && showHeader && lastScrollPos > 150) {
11
+ setShowHeader(false);
12
+ setHeaderPosition(lastScrollPos);
13
+ }
14
+ else if (lastScrollPos < headerPosition && !showHeader) {
15
+ setShowHeader(true);
16
+ }
17
+ }
18
+ setHeaderPosition(lastScrollPos);
19
+ };
20
+ const updateHeaderHeight = () => {
21
+ if (refHeader && refHeader.current) {
22
+ const height = refHeader.current.offsetHeight;
23
+ setHeaderHeight(Math.floor(height));
24
+ }
25
+ };
26
+ const handleResize = () => {
27
+ updateHeaderHeight();
28
+ };
29
+ updateHeaderHeight();
30
+ targetScroll();
31
+ window.addEventListener('scroll', targetScroll);
32
+ window.addEventListener('scroll', handleResize);
33
+ return () => {
34
+ window.removeEventListener('scroll', targetScroll);
35
+ window.removeEventListener('scroll', handleResize);
36
+ };
37
+ }, [showHeader, headerPosition, isModalMenuOpen, refHeader]);
38
+ return {
39
+ showHeader,
40
+ headerPosition,
41
+ headerHeight,
42
+ };
43
+ };
@@ -0,0 +1,3 @@
1
+ export declare const useResizeObserver: (element: HTMLElement | null) => {
2
+ width: number;
3
+ };
@@ -0,0 +1,17 @@
1
+ import { useEffect, useState } from 'react';
2
+ export const useResizeObserver = (element) => {
3
+ const [width, setWidth] = useState(0);
4
+ useEffect(() => {
5
+ if (!element) {
6
+ return;
7
+ }
8
+ const resizeObserver = new ResizeObserver(() => {
9
+ if (element.offsetWidth !== width) {
10
+ setWidth(element.offsetWidth);
11
+ }
12
+ });
13
+ resizeObserver.observe(element);
14
+ return () => resizeObserver.disconnect();
15
+ }, [element, width]);
16
+ return { width };
17
+ };
@@ -0,0 +1 @@
1
+ export * from './components';
@@ -0,0 +1 @@
1
+ export * from './components';
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@cloud-ru/uikit-product-site-header",
3
3
  "title": "Siteheader",
4
- "version": "0.4.8",
4
+ "version": "0.4.10",
5
5
  "sideEffects": [
6
6
  "*.css",
7
7
  "*.woff",
@@ -30,16 +30,17 @@
30
30
  "name": "Akhremenko Grigorii",
31
31
  "url": "https://github.com/AGrigorii"
32
32
  },
33
+ "contributors": [],
33
34
  "license": "Apache-2.0",
34
35
  "publishConfig": {
35
36
  "access": "public"
36
37
  },
37
38
  "scripts": {},
38
39
  "dependencies": {
39
- "@cloud-ru/uikit-product-icons": "15.1.1",
40
- "@cloud-ru/uikit-product-mobile-modal": "0.9.18",
41
- "@cloud-ru/uikit-product-site-layout": "0.2.2",
42
- "@cloud-ru/uikit-product-utils": "7.0.0",
40
+ "@cloud-ru/uikit-product-icons": "15.1.3",
41
+ "@cloud-ru/uikit-product-mobile-modal": "0.9.20",
42
+ "@cloud-ru/uikit-product-site-layout": "0.2.4",
43
+ "@cloud-ru/uikit-product-utils": "7.0.2",
43
44
  "@snack-uikit/alert": "0.16.17",
44
45
  "@snack-uikit/avatar": "0.8.15",
45
46
  "@snack-uikit/button": "0.19.16",
@@ -51,5 +52,5 @@
51
52
  "peerDependencies": {
52
53
  "@sbercloud/figma-tokens-web": "*"
53
54
  },
54
- "gitHead": "e8bd79bc92b26a8f52611972eec98a867536ccd3"
55
+ "gitHead": "bf479ecf7238ef20b78f20acaef439efa535d1a1"
55
56
  }