@cloud-ru/ds-uikit-product-header-legacy 0.1.18 → 0.1.19-preview-a2208aeb.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/cjs/components/HeaderLayout/HeaderLayout.js +12 -1
- package/dist/cjs/components/HeaderLayout/styles.module.css +1 -1
- package/dist/cjs/components/Logo/styles.module.css +1 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +3 -3
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +11 -1
- package/dist/cjs/components/MainMenu/helperComponents/MenuMobile/styles.module.css +7 -3
- package/dist/cjs/components/MainMenu/helperComponents/NavigationSearch/styles.module.css +8 -8
- package/dist/cjs/components/MainMenu/helperComponents/ServicesCategory/styles.module.css +7 -7
- package/dist/cjs/components/PlatformLogo/styles.module.css +3 -3
- package/dist/cjs/style.css +30 -26
- package/dist/esm/components/HeaderLayout/HeaderLayout.js +12 -1
- package/dist/esm/components/HeaderLayout/styles.module.css +1 -1
- package/dist/esm/components/Logo/styles.module.css +1 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuDesktop/styles.module.css +3 -3
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/MenuMobile.js +11 -1
- package/dist/esm/components/MainMenu/helperComponents/MenuMobile/styles.module.css +7 -3
- package/dist/esm/components/MainMenu/helperComponents/NavigationSearch/styles.module.css +8 -8
- package/dist/esm/components/MainMenu/helperComponents/ServicesCategory/styles.module.css +7 -7
- package/dist/esm/components/PlatformLogo/styles.module.css +3 -3
- package/dist/esm/style.css +30 -26
- package/dist/tsconfig.cjs.tsbuildinfo +1 -1
- package/dist/tsconfig.esm.tsbuildinfo +1 -1
- package/package.json +19 -18
- package/src/components/HeaderLayout/HeaderLayout.tsx +20 -3
- package/src/components/MainMenu/helperComponents/MenuMobile/MenuMobile.tsx +83 -71
- package/src/components/MainMenu/helperComponents/MenuMobile/styles.module.scss +6 -0
|
@@ -6,9 +6,20 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
6
6
|
exports.HeaderLayout = HeaderLayout;
|
|
7
7
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
8
8
|
const divider_1 = require("@cloud-ru/ds-divider");
|
|
9
|
+
const theme_1 = require("@cloud-ru/ds-theme");
|
|
9
10
|
const utils_1 = require("@cloud-ru/ds-utils");
|
|
10
11
|
const classnames_1 = __importDefault(require("classnames"));
|
|
12
|
+
const react_1 = require("react");
|
|
11
13
|
const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
|
|
12
14
|
function HeaderLayout({ menu, logo, select, breadcrumbs, toolbar, className, isMobile = false, ...rest }) {
|
|
13
|
-
|
|
15
|
+
const headerRef = (0, react_1.useRef)(null);
|
|
16
|
+
const header = ((0, jsx_runtime_1.jsxs)("header", { ref: headerRef, className: (0, classnames_1.default)(styles_module_scss_1.default.header, className), ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.top, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.left, children: [menu, logo, !isMobile && select && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(divider_1.Divider, { orientation: 'vertical' }), select] })), !isMobile && breadcrumbs && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)(divider_1.Divider, { orientation: 'vertical' }), breadcrumbs] }))] }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.right, children: toolbar })] }), (0, jsx_runtime_1.jsx)(divider_1.Divider, { orientation: 'horizontal' }), isMobile && Boolean(breadcrumbs) && ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bottom, children: breadcrumbs }), (0, jsx_runtime_1.jsx)(divider_1.Divider, { orientation: 'horizontal' })] }))] }));
|
|
17
|
+
// Временная фиксация: на mobile прикладная тема переключилась на compact, а шапка сверстана
|
|
18
|
+
// под comfort и на compact ещё не переехала. Провайдер (а не класс на `<header>`) нужен потому,
|
|
19
|
+
// что поверхности шапки — порталы: они переэмитят набор `sn-*` из контекста на своём корне,
|
|
20
|
+
// и класс, поставленный поверх, проиграл бы их собственному.
|
|
21
|
+
if (isMobile) {
|
|
22
|
+
return ((0, jsx_runtime_1.jsx)(theme_1.ChildThemeProvider, { value: { density: theme_1.DENSITY.Comfort }, rootRef: headerRef, children: header }));
|
|
23
|
+
}
|
|
24
|
+
return header;
|
|
14
25
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.header{
|
|
2
2
|
box-sizing:border-box;
|
|
3
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
3
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.top{
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
flex-shrink:0;
|
|
12
12
|
align-items:center;
|
|
13
13
|
justify-content:center;
|
|
14
|
-
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-
|
|
14
|
+
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-50, #389f74));
|
|
15
15
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
width:100%;
|
|
9
9
|
height:100%;
|
|
10
10
|
min-height:0;
|
|
11
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
11
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.left{
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
|
|
76
76
|
.leftBottomDivider{
|
|
77
77
|
width:100%;
|
|
78
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
78
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
.leftBottomItems{
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
flex-shrink:0;
|
|
109
109
|
box-sizing:border-box;
|
|
110
110
|
padding:var(--sn-primitive-dimension-16, 16px) var(--sn-primitive-dimension-16, 16px) 0 var(--sn-primitive-dimension-12, 12px);
|
|
111
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
111
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
.scroll{
|
|
@@ -8,8 +8,10 @@ const react_1 = require("react");
|
|
|
8
8
|
const jsx_runtime_1 = require("react/jsx-runtime");
|
|
9
9
|
const adaptive_1 = require("@cloud-ru/ds-adaptive");
|
|
10
10
|
const divider_1 = require("@cloud-ru/ds-divider");
|
|
11
|
+
const theme_1 = require("@cloud-ru/ds-theme");
|
|
11
12
|
const uikit_product_card_predefined_1 = require("@cloud-ru/ds-uikit-product-card-predefined");
|
|
12
13
|
const utils_1 = require("@cloud-ru/ds-utils");
|
|
14
|
+
const classnames_1 = __importDefault(require("classnames"));
|
|
13
15
|
const react_2 = require("react");
|
|
14
16
|
const locale_1 = require("../../../../locale");
|
|
15
17
|
const shouldBeOpenedInNewTab_1 = require("../../../../utils/shouldBeOpenedInNewTab");
|
|
@@ -50,5 +52,13 @@ function MenuMobile({ open: openProp, setOpen: setOpenProp, settingItems, platfo
|
|
|
50
52
|
const searchValue = search?.searchValue;
|
|
51
53
|
const showSearch = Boolean(search) && !isInitialEmptyCards && (resultItems.length > 0 || Boolean(searchValue));
|
|
52
54
|
const hasBottomItems = Boolean(settingItems?.items.length);
|
|
53
|
-
|
|
55
|
+
// Временная фиксация comfort (см. `HeaderLayout`): `MainMenu` используется и отдельно от
|
|
56
|
+
// `HeaderLayout`, поэтому объявляем плотность здесь же. Провайдер задаёт контекст (его читают
|
|
57
|
+
// вложенные поверхности, которые переэмитят тему на своём корне), класс — сам дровер: он тему
|
|
58
|
+
// из контекста не переэмитит и иначе остался бы с плотностью приложения.
|
|
59
|
+
const comfortThemeClassName = (0, theme_1.useThemeClassnames)({ density: theme_1.DENSITY.Comfort });
|
|
60
|
+
return (
|
|
61
|
+
// Обёртка провайдера layout-прозрачная (`display: contents`) — меню рендерится порталом,
|
|
62
|
+
// лишний бокс в строке шапки не нужен.
|
|
63
|
+
(0, jsx_runtime_1.jsx)(theme_1.ChildThemeProvider, { value: { density: theme_1.DENSITY.Comfort }, className: styles_module_scss_1.default.densityScope, children: (0, jsx_runtime_1.jsx)(desktopDrawer_1.DesktopDrawerCustom, { open: open, onClose: handleCloseDrawer, position: 'left', width: 's', className: (0, classnames_1.default)(styles_module_scss_1.default.drawerMobile, comfortThemeClassName), closeOnPopstate: true, "data-test-id": constants_1.TEST_IDS.drawerMobile, children: (0, jsx_runtime_1.jsxs)(adaptive_1.AdaptiveProvider, { layoutType: layoutType, children: [(0, jsx_runtime_1.jsx)(desktopDrawer_1.DesktopDrawerCustom.Header, { title: t('mainMenu.navigation'), className: styles_module_scss_1.default.header }), (0, jsx_runtime_1.jsx)(desktopDrawer_1.DesktopDrawerCustom.Body, { bodyPadding: false, className: styles_module_scss_1.default.scrollBody, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.scrollMobile, children: [leftTop ? (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.leftTop, children: leftTop }) : null, !isInitialEmptyCards ? ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.main, children: [showSearch && search ? ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.searchItem, "data-test-id": constants_1.TEST_IDS.search, children: (0, jsx_runtime_1.jsx)(NavigationSearch_1.NavigationSearch, { ref: searchRef, value: search.searchValue, onChange: search.onSearchValueChange, onBlur: search.onBlur, onFocus: search.onFocus, options: search.searchFunctions.map(fn => ({ id: fn.id, label: fn.label })), selectedOption: search.searchFn ?? search.searchFunctions[0]?.id ?? 'fuzzy', onSelectedOptionChange: search.onChangeSearchFn }) })) : null, (0, jsx_runtime_1.jsx)(Content_1.Content, { isMobile: true, onClose: handleCloseDrawer, onLinkChange: onLinkChange, className: styles_module_scss_1.default.content, searchValue: searchValue, banners: rightTop, favorite: favorite, serviceGroups: resultItems })] })) : null, isInitialEmptyCards && rightTop ? (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bannersWrap, children: rightTop }) : null, hasBottomItems ? ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.bottom, "data-test-id": constants_1.TEST_IDS.leftBottom, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bottomDivider, children: (0, jsx_runtime_1.jsx)(divider_1.Divider, {}) }), (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.bottomItems, "data-test-id": constants_1.TEST_IDS.leftBottomItems, children: settingItems?.items.map(item => ((0, react_1.createElement)(uikit_product_card_predefined_1.CardServiceLight, { ...(item.href ? { href: item.href, as: 'a' } : { as: 'button', type: 'button' }), key: item.id, title: item.label, icon: (0, utils_2.getLinkEmblem)(item), onClick: wrappedSettingClick(item), disabled: item.disabled, className: styles_module_scss_1.default.bottomCard, "data-test-id": constants_1.TEST_IDS.setting(item.id) }))) })] })) : null] }) })] }) }) }));
|
|
54
64
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
.densityScope{
|
|
2
|
+
display:contents;
|
|
3
|
+
}
|
|
4
|
+
|
|
1
5
|
.drawerMobile{
|
|
2
6
|
height:100%;
|
|
3
7
|
min-height:0;
|
|
4
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
8
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3))) !important;
|
|
5
9
|
}
|
|
6
10
|
|
|
7
11
|
.scrollBody{
|
|
@@ -50,7 +54,7 @@
|
|
|
50
54
|
flex-direction:column;
|
|
51
55
|
gap:var(--sn-primitive-dimension-4, 4px);
|
|
52
56
|
padding-bottom:var(--sn-primitive-dimension-4, 4px);
|
|
53
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
57
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
.bannersWrap{
|
|
@@ -72,7 +76,7 @@
|
|
|
72
76
|
|
|
73
77
|
.bottomDivider{
|
|
74
78
|
width:100%;
|
|
75
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
79
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
.bottomItems{
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
display:flex;
|
|
11
11
|
flex:1 0 0;
|
|
12
12
|
flex-direction:column;
|
|
13
|
-
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-primitive-dimension-
|
|
14
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-
|
|
13
|
+
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-density-scale-100-m, var(--sn-platform-comfort-scale-100-m, var(--sn-primitive-dimension-40, 40px)))));
|
|
14
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingRight, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingLeft, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px)))));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.search{
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
|
|
29
29
|
}
|
|
30
30
|
.search[data-size=m]{
|
|
31
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-
|
|
31
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) 0;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.root{
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
align-items:stretch;
|
|
38
38
|
box-sizing:border-box;
|
|
39
39
|
width:100%;
|
|
40
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
41
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
40
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
41
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
42
42
|
}
|
|
43
43
|
.root[data-mobile]{
|
|
44
44
|
flex-direction:row;
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
background-color:transparent;
|
|
48
48
|
}
|
|
49
49
|
.root[data-mobile][data-open-search]{
|
|
50
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
50
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
51
51
|
}
|
|
52
52
|
.root[data-mobile] .searchWrapper{
|
|
53
53
|
padding:0;
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.mobileSearchButton[data-size=m]{
|
|
73
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
74
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
73
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
74
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
75
75
|
}
|
|
@@ -12,20 +12,20 @@
|
|
|
12
12
|
min-width:0;
|
|
13
13
|
max-width:100%;
|
|
14
14
|
padding:var(--sn-primitive-dimension-12, 12px);
|
|
15
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
16
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
15
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
16
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
17
17
|
}
|
|
18
18
|
.root[data-highlight]{
|
|
19
19
|
background-color:transparent;
|
|
20
|
-
background-image:linear-gradient(90deg, color-mix(in srgb, var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
21
|
-
box-shadow:inset 0 0 0 var(--sn-primitive-strokeWeight-strokeRegular, 1px) var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-
|
|
20
|
+
background-image:linear-gradient(90deg, color-mix(in srgb, var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))) 20%, transparent) 2.29%, color-mix(in srgb, var(--sn-theme-color-primary-decor, var(--sn-brand-color-primary-80, #caeadb)) 12%, transparent) 97.84%), linear-gradient(var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))), var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))));
|
|
21
|
+
box-shadow:inset 0 0 0 var(--sn-primitive-strokeWeight-strokeRegular, 1px) var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-50, #389f74));
|
|
22
22
|
}
|
|
23
23
|
|
|
24
24
|
.title{
|
|
25
|
-
font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title,
|
|
25
|
+
font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title, SB Sans Interface));
|
|
26
26
|
font-weight:var(--sn-regular-title-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-m, var(--sn-brand-font-fontWeight-light-regular-title-m, var(--sn-primitive-font-fontWeightValue-600, 600))));
|
|
27
|
-
line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-
|
|
28
|
-
font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
27
|
+
line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-platform-comfort-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
28
|
+
font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-platform-comfort-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
29
29
|
letter-spacing:var(--sn-regular-title-m-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
|
|
30
30
|
paragraph-spacing:var(--sn-regular-title-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
|
|
31
31
|
margin:0;
|
|
@@ -5,9 +5,9 @@
|
|
|
5
5
|
justify-content:center;
|
|
6
6
|
box-sizing:border-box;
|
|
7
7
|
padding:var(--sn-primitive-dimension-4, 4px);
|
|
8
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
9
|
-
color:var(--sn-theme-color-neutral-onAccent, var(--sn-brand-color-neutral-99, var(--sn-
|
|
10
|
-
background:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-
|
|
8
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
9
|
+
color:var(--sn-theme-color-neutral-onAccent, var(--sn-brand-color-neutral-99, var(--sn-brand-palette-gray-99, #ffffff)));
|
|
10
|
+
background:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-50, var(--sn-brand-palette-gray-50, #8b8fa7)));
|
|
11
11
|
}
|
|
12
12
|
.root[data-compact]{
|
|
13
13
|
padding:0;
|
package/dist/cjs/style.css
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.header{
|
|
2
2
|
box-sizing:border-box;
|
|
3
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
3
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.top{
|
|
@@ -50,7 +50,7 @@
|
|
|
50
50
|
flex-shrink:0;
|
|
51
51
|
align-items:center;
|
|
52
52
|
justify-content:center;
|
|
53
|
-
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-
|
|
53
|
+
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-50, #389f74));
|
|
54
54
|
}
|
|
55
55
|
.root{
|
|
56
56
|
display:flex;
|
|
@@ -111,7 +111,7 @@
|
|
|
111
111
|
width:100%;
|
|
112
112
|
height:100%;
|
|
113
113
|
min-height:0;
|
|
114
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
114
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
115
115
|
}
|
|
116
116
|
|
|
117
117
|
.left{
|
|
@@ -178,7 +178,7 @@
|
|
|
178
178
|
|
|
179
179
|
.leftBottomDivider{
|
|
180
180
|
width:100%;
|
|
181
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
181
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
182
182
|
}
|
|
183
183
|
|
|
184
184
|
.leftBottomItems{
|
|
@@ -211,7 +211,7 @@
|
|
|
211
211
|
flex-shrink:0;
|
|
212
212
|
box-sizing:border-box;
|
|
213
213
|
padding:var(--sn-primitive-dimension-16, 16px) var(--sn-primitive-dimension-16, 16px) 0 var(--sn-primitive-dimension-12, 12px);
|
|
214
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
214
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
215
215
|
}
|
|
216
216
|
|
|
217
217
|
.scroll{
|
|
@@ -246,10 +246,14 @@
|
|
|
246
246
|
.bannersWrap{
|
|
247
247
|
padding:var(--sn-primitive-dimension-4, 4px) var(--sn-primitive-dimension-8, 8px) var(--sn-primitive-dimension-8, 8px);
|
|
248
248
|
}
|
|
249
|
+
.densityScope{
|
|
250
|
+
display:contents;
|
|
251
|
+
}
|
|
252
|
+
|
|
249
253
|
.drawerMobile{
|
|
250
254
|
height:100%;
|
|
251
255
|
min-height:0;
|
|
252
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
256
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3))) !important;
|
|
253
257
|
}
|
|
254
258
|
|
|
255
259
|
.scrollBody{
|
|
@@ -298,7 +302,7 @@
|
|
|
298
302
|
flex-direction:column;
|
|
299
303
|
gap:var(--sn-primitive-dimension-4, 4px);
|
|
300
304
|
padding-bottom:var(--sn-primitive-dimension-4, 4px);
|
|
301
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
305
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
302
306
|
}
|
|
303
307
|
|
|
304
308
|
.bannersWrap{
|
|
@@ -320,7 +324,7 @@
|
|
|
320
324
|
|
|
321
325
|
.bottomDivider{
|
|
322
326
|
width:100%;
|
|
323
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
327
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
324
328
|
}
|
|
325
329
|
|
|
326
330
|
.bottomItems{
|
|
@@ -344,8 +348,8 @@
|
|
|
344
348
|
display:flex;
|
|
345
349
|
flex:1 0 0;
|
|
346
350
|
flex-direction:column;
|
|
347
|
-
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-primitive-dimension-
|
|
348
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-
|
|
351
|
+
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-density-scale-100-m, var(--sn-platform-comfort-scale-100-m, var(--sn-primitive-dimension-40, 40px)))));
|
|
352
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingRight, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingLeft, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px)))));
|
|
349
353
|
}
|
|
350
354
|
|
|
351
355
|
.search{
|
|
@@ -362,7 +366,7 @@
|
|
|
362
366
|
opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
|
|
363
367
|
}
|
|
364
368
|
.search[data-size=m]{
|
|
365
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-
|
|
369
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) 0;
|
|
366
370
|
}
|
|
367
371
|
|
|
368
372
|
.root{
|
|
@@ -371,8 +375,8 @@
|
|
|
371
375
|
align-items:stretch;
|
|
372
376
|
box-sizing:border-box;
|
|
373
377
|
width:100%;
|
|
374
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
375
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
378
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
379
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
376
380
|
}
|
|
377
381
|
.root[data-mobile]{
|
|
378
382
|
flex-direction:row;
|
|
@@ -381,7 +385,7 @@
|
|
|
381
385
|
background-color:transparent;
|
|
382
386
|
}
|
|
383
387
|
.root[data-mobile][data-open-search]{
|
|
384
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
388
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
385
389
|
}
|
|
386
390
|
.root[data-mobile] .searchWrapper{
|
|
387
391
|
padding:0;
|
|
@@ -404,8 +408,8 @@
|
|
|
404
408
|
}
|
|
405
409
|
|
|
406
410
|
.mobileSearchButton[data-size=m]{
|
|
407
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
408
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
411
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
412
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
409
413
|
}
|
|
410
414
|
@charset "UTF-8";
|
|
411
415
|
.root{
|
|
@@ -421,20 +425,20 @@
|
|
|
421
425
|
min-width:0;
|
|
422
426
|
max-width:100%;
|
|
423
427
|
padding:var(--sn-primitive-dimension-12, 12px);
|
|
424
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
425
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
428
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
429
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
426
430
|
}
|
|
427
431
|
.root[data-highlight]{
|
|
428
432
|
background-color:transparent;
|
|
429
|
-
background-image:linear-gradient(90deg, color-mix(in srgb, var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
430
|
-
box-shadow:inset 0 0 0 var(--sn-primitive-strokeWeight-strokeRegular, 1px) var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-
|
|
433
|
+
background-image:linear-gradient(90deg, color-mix(in srgb, var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))) 20%, transparent) 2.29%, color-mix(in srgb, var(--sn-theme-color-primary-decor, var(--sn-brand-color-primary-80, #caeadb)) 12%, transparent) 97.84%), linear-gradient(var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))), var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd))));
|
|
434
|
+
box-shadow:inset 0 0 0 var(--sn-primitive-strokeWeight-strokeRegular, 1px) var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-50, #389f74));
|
|
431
435
|
}
|
|
432
436
|
|
|
433
437
|
.title{
|
|
434
|
-
font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title,
|
|
438
|
+
font-family:var(--sn-regular-title-m-fontFamily, var(--sn-brand-font-fontFamily-regular-title, SB Sans Interface));
|
|
435
439
|
font-weight:var(--sn-regular-title-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-title-m, var(--sn-brand-font-fontWeight-light-regular-title-m, var(--sn-primitive-font-fontWeightValue-600, 600))));
|
|
436
|
-
line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-
|
|
437
|
-
font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
|
|
440
|
+
line-height:var(--sn-regular-title-m-lineHeight, var(--sn-density-typography-roleTitle-lineHeightM, var(--sn-platform-comfort-typography-roleTitle-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
|
|
441
|
+
font-size:var(--sn-regular-title-m-fontSize, var(--sn-density-typography-roleTitle-fontSizeM, var(--sn-platform-comfort-typography-roleTitle-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
|
|
438
442
|
letter-spacing:var(--sn-regular-title-m-letterSpacing, var(--sn-primitive-font-letterSpacing-l, 0.15px));
|
|
439
443
|
paragraph-spacing:var(--sn-regular-title-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
|
|
440
444
|
margin:0;
|
|
@@ -495,9 +499,9 @@
|
|
|
495
499
|
justify-content:center;
|
|
496
500
|
box-sizing:border-box;
|
|
497
501
|
padding:var(--sn-primitive-dimension-4, 4px);
|
|
498
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
499
|
-
color:var(--sn-theme-color-neutral-onAccent, var(--sn-brand-color-neutral-99, var(--sn-
|
|
500
|
-
background:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-
|
|
502
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
503
|
+
color:var(--sn-theme-color-neutral-onAccent, var(--sn-brand-color-neutral-99, var(--sn-brand-palette-gray-99, #ffffff)));
|
|
504
|
+
background:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-50, var(--sn-brand-palette-gray-50, #8b8fa7)));
|
|
501
505
|
}
|
|
502
506
|
.root[data-compact]{
|
|
503
507
|
padding:0;
|
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { Divider } from '@cloud-ru/ds-divider';
|
|
3
|
+
import { ChildThemeProvider, DENSITY } from '@cloud-ru/ds-theme';
|
|
3
4
|
import { extractSupportProps } from '@cloud-ru/ds-utils';
|
|
4
5
|
import cn from 'classnames';
|
|
6
|
+
import { useRef } from 'react';
|
|
5
7
|
import styles from './styles.module.css';
|
|
6
8
|
export function HeaderLayout({ menu, logo, select, breadcrumbs, toolbar, className, isMobile = false, ...rest }) {
|
|
7
|
-
|
|
9
|
+
const headerRef = useRef(null);
|
|
10
|
+
const header = (_jsxs("header", { ref: headerRef, className: cn(styles.header, className), ...extractSupportProps(rest), children: [_jsxs("div", { className: styles.top, children: [_jsxs("div", { className: styles.left, children: [menu, logo, !isMobile && select && (_jsxs(_Fragment, { children: [_jsx(Divider, { orientation: 'vertical' }), select] })), !isMobile && breadcrumbs && (_jsxs(_Fragment, { children: [_jsx(Divider, { orientation: 'vertical' }), breadcrumbs] }))] }), _jsx("div", { className: styles.right, children: toolbar })] }), _jsx(Divider, { orientation: 'horizontal' }), isMobile && Boolean(breadcrumbs) && (_jsxs(_Fragment, { children: [_jsx("div", { className: styles.bottom, children: breadcrumbs }), _jsx(Divider, { orientation: 'horizontal' })] }))] }));
|
|
11
|
+
// Временная фиксация: на mobile прикладная тема переключилась на compact, а шапка сверстана
|
|
12
|
+
// под comfort и на compact ещё не переехала. Провайдер (а не класс на `<header>`) нужен потому,
|
|
13
|
+
// что поверхности шапки — порталы: они переэмитят набор `sn-*` из контекста на своём корне,
|
|
14
|
+
// и класс, поставленный поверх, проиграл бы их собственному.
|
|
15
|
+
if (isMobile) {
|
|
16
|
+
return (_jsx(ChildThemeProvider, { value: { density: DENSITY.Comfort }, rootRef: headerRef, children: header }));
|
|
17
|
+
}
|
|
18
|
+
return header;
|
|
8
19
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
.header{
|
|
2
2
|
box-sizing:border-box;
|
|
3
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
3
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
4
4
|
}
|
|
5
5
|
|
|
6
6
|
.top{
|
|
@@ -11,5 +11,5 @@
|
|
|
11
11
|
flex-shrink:0;
|
|
12
12
|
align-items:center;
|
|
13
13
|
justify-content:center;
|
|
14
|
-
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-
|
|
14
|
+
color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-50, #389f74));
|
|
15
15
|
}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
width:100%;
|
|
9
9
|
height:100%;
|
|
10
10
|
min-height:0;
|
|
11
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
11
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
12
12
|
}
|
|
13
13
|
|
|
14
14
|
.left{
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
|
|
76
76
|
.leftBottomDivider{
|
|
77
77
|
width:100%;
|
|
78
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
78
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
79
79
|
}
|
|
80
80
|
|
|
81
81
|
.leftBottomItems{
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
flex-shrink:0;
|
|
109
109
|
box-sizing:border-box;
|
|
110
110
|
padding:var(--sn-primitive-dimension-16, 16px) var(--sn-primitive-dimension-16, 16px) 0 var(--sn-primitive-dimension-12, 12px);
|
|
111
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
111
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
112
112
|
}
|
|
113
113
|
|
|
114
114
|
.scroll{
|
|
@@ -2,8 +2,10 @@ import { createElement as _createElement } from "react";
|
|
|
2
2
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
3
3
|
import { AdaptiveProvider, useAdaptiveLayout } from '@cloud-ru/ds-adaptive';
|
|
4
4
|
import { Divider } from '@cloud-ru/ds-divider';
|
|
5
|
+
import { ChildThemeProvider, DENSITY, useThemeClassnames } from '@cloud-ru/ds-theme';
|
|
5
6
|
import { CardServiceLight } from '@cloud-ru/ds-uikit-product-card-predefined';
|
|
6
7
|
import { useValueControl } from '@cloud-ru/ds-utils';
|
|
8
|
+
import cn from 'classnames';
|
|
7
9
|
import { useCallback } from 'react';
|
|
8
10
|
import { headerLegacyLocale } from '../../../../locale/index.js';
|
|
9
11
|
import { shouldBeOpenedInNewTab } from '../../../../utils/shouldBeOpenedInNewTab.js';
|
|
@@ -44,5 +46,13 @@ export function MenuMobile({ open: openProp, setOpen: setOpenProp, settingItems,
|
|
|
44
46
|
const searchValue = search?.searchValue;
|
|
45
47
|
const showSearch = Boolean(search) && !isInitialEmptyCards && (resultItems.length > 0 || Boolean(searchValue));
|
|
46
48
|
const hasBottomItems = Boolean(settingItems?.items.length);
|
|
47
|
-
|
|
49
|
+
// Временная фиксация comfort (см. `HeaderLayout`): `MainMenu` используется и отдельно от
|
|
50
|
+
// `HeaderLayout`, поэтому объявляем плотность здесь же. Провайдер задаёт контекст (его читают
|
|
51
|
+
// вложенные поверхности, которые переэмитят тему на своём корне), класс — сам дровер: он тему
|
|
52
|
+
// из контекста не переэмитит и иначе остался бы с плотностью приложения.
|
|
53
|
+
const comfortThemeClassName = useThemeClassnames({ density: DENSITY.Comfort });
|
|
54
|
+
return (
|
|
55
|
+
// Обёртка провайдера layout-прозрачная (`display: contents`) — меню рендерится порталом,
|
|
56
|
+
// лишний бокс в строке шапки не нужен.
|
|
57
|
+
_jsx(ChildThemeProvider, { value: { density: DENSITY.Comfort }, className: styles.densityScope, children: _jsx(DesktopDrawerCustom, { open: open, onClose: handleCloseDrawer, position: 'left', width: 's', className: cn(styles.drawerMobile, comfortThemeClassName), closeOnPopstate: true, "data-test-id": TEST_IDS.drawerMobile, children: _jsxs(AdaptiveProvider, { layoutType: layoutType, children: [_jsx(DesktopDrawerCustom.Header, { title: t('mainMenu.navigation'), className: styles.header }), _jsx(DesktopDrawerCustom.Body, { bodyPadding: false, className: styles.scrollBody, children: _jsxs("div", { className: styles.scrollMobile, children: [leftTop ? _jsx("div", { className: styles.leftTop, children: leftTop }) : null, !isInitialEmptyCards ? (_jsxs("div", { className: styles.main, children: [showSearch && search ? (_jsx("div", { className: styles.searchItem, "data-test-id": TEST_IDS.search, children: _jsx(NavigationSearch, { ref: searchRef, value: search.searchValue, onChange: search.onSearchValueChange, onBlur: search.onBlur, onFocus: search.onFocus, options: search.searchFunctions.map(fn => ({ id: fn.id, label: fn.label })), selectedOption: search.searchFn ?? search.searchFunctions[0]?.id ?? 'fuzzy', onSelectedOptionChange: search.onChangeSearchFn }) })) : null, _jsx(Content, { isMobile: true, onClose: handleCloseDrawer, onLinkChange: onLinkChange, className: styles.content, searchValue: searchValue, banners: rightTop, favorite: favorite, serviceGroups: resultItems })] })) : null, isInitialEmptyCards && rightTop ? _jsx("div", { className: styles.bannersWrap, children: rightTop }) : null, hasBottomItems ? (_jsxs("div", { className: styles.bottom, "data-test-id": TEST_IDS.leftBottom, children: [_jsx("div", { className: styles.bottomDivider, children: _jsx(Divider, {}) }), _jsx("div", { className: styles.bottomItems, "data-test-id": TEST_IDS.leftBottomItems, children: settingItems?.items.map(item => (_createElement(CardServiceLight, { ...(item.href ? { href: item.href, as: 'a' } : { as: 'button', type: 'button' }), key: item.id, title: item.label, icon: getLinkEmblem(item), onClick: wrappedSettingClick(item), disabled: item.disabled, className: styles.bottomCard, "data-test-id": TEST_IDS.setting(item.id) }))) })] })) : null] }) })] }) }) }));
|
|
48
58
|
}
|
|
@@ -1,7 +1,11 @@
|
|
|
1
|
+
.densityScope{
|
|
2
|
+
display:contents;
|
|
3
|
+
}
|
|
4
|
+
|
|
1
5
|
.drawerMobile{
|
|
2
6
|
height:100%;
|
|
3
7
|
min-height:0;
|
|
4
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
8
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3))) !important;
|
|
5
9
|
}
|
|
6
10
|
|
|
7
11
|
.scrollBody{
|
|
@@ -50,7 +54,7 @@
|
|
|
50
54
|
flex-direction:column;
|
|
51
55
|
gap:var(--sn-primitive-dimension-4, 4px);
|
|
52
56
|
padding-bottom:var(--sn-primitive-dimension-4, 4px);
|
|
53
|
-
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-
|
|
57
|
+
background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
|
|
54
58
|
}
|
|
55
59
|
|
|
56
60
|
.bannersWrap{
|
|
@@ -72,7 +76,7 @@
|
|
|
72
76
|
|
|
73
77
|
.bottomDivider{
|
|
74
78
|
width:100%;
|
|
75
|
-
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-
|
|
79
|
+
padding:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-platform-comfort-spacing-control-container-vertical-s, var(--sn-platform-comfort-scale-025-2xs, var(--sn-primitive-dimension-2, 2px))))) var(--sn-list-anatomy-size-s-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-s, var(--sn-platform-comfort-spacing-control-container-horizontal-s, var(--sn-platform-comfort-scale-050-2xs, var(--sn-primitive-dimension-4, 4px)))));
|
|
76
80
|
}
|
|
77
81
|
|
|
78
82
|
.bottomItems{
|
|
@@ -10,8 +10,8 @@
|
|
|
10
10
|
display:flex;
|
|
11
11
|
flex:1 0 0;
|
|
12
12
|
flex-direction:column;
|
|
13
|
-
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-primitive-dimension-
|
|
14
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-
|
|
13
|
+
min-height:var(--sn-field-anatomy-size-m-fieldContainer-minHeight, var(--sn-density-size-m, var(--sn-density-scale-100-m, var(--sn-platform-comfort-scale-100-m, var(--sn-primitive-dimension-40, 40px)))));
|
|
14
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingRight, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-platform-comfort-spacing-control-container-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) var(--sn-field-anatomy-size-m-fieldContainer-paddingLeft, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-platform-comfort-spacing-control-container-horizontal-m, var(--sn-platform-comfort-scale-050-xs, var(--sn-primitive-dimension-8, 8px)))));
|
|
15
15
|
}
|
|
16
16
|
|
|
17
17
|
.search{
|
|
@@ -28,7 +28,7 @@
|
|
|
28
28
|
opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
|
|
29
29
|
}
|
|
30
30
|
.search[data-size=m]{
|
|
31
|
-
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-
|
|
31
|
+
padding:var(--sn-field-anatomy-size-m-fieldContainer-contentWrapper-verticalPadding, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))) 0;
|
|
32
32
|
}
|
|
33
33
|
|
|
34
34
|
.root{
|
|
@@ -37,8 +37,8 @@
|
|
|
37
37
|
align-items:stretch;
|
|
38
38
|
box-sizing:border-box;
|
|
39
39
|
width:100%;
|
|
40
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
41
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
40
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
41
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
42
42
|
}
|
|
43
43
|
.root[data-mobile]{
|
|
44
44
|
flex-direction:row;
|
|
@@ -47,7 +47,7 @@
|
|
|
47
47
|
background-color:transparent;
|
|
48
48
|
}
|
|
49
49
|
.root[data-mobile][data-open-search]{
|
|
50
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
50
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
51
51
|
}
|
|
52
52
|
.root[data-mobile] .searchWrapper{
|
|
53
53
|
padding:0;
|
|
@@ -70,6 +70,6 @@
|
|
|
70
70
|
}
|
|
71
71
|
|
|
72
72
|
.mobileSearchButton[data-size=m]{
|
|
73
|
-
border-radius:var(--sn-density-radius-2xs, var(--sn-primitive-dimension-4, 4px));
|
|
74
|
-
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-
|
|
73
|
+
border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
|
|
74
|
+
background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
|
|
75
75
|
}
|