@cloud-ru/ds-uikit-product-page-layout 1.5.0 → 1.5.1-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.
Files changed (73) hide show
  1. package/README.md +2 -0
  2. package/dist/cjs/components/Actions/styles.module.css +2 -0
  3. package/dist/cjs/components/DefaultSubtitle/styles.module.css +6 -5
  4. package/dist/cjs/components/Headline/Headline.js +4 -1
  5. package/dist/cjs/components/Headline/styles.module.css +9 -3
  6. package/dist/cjs/components/PageCatalog/mobileStyles.module.css +2 -2
  7. package/dist/cjs/components/PageCatalog/styles.module.css +2 -2
  8. package/dist/cjs/components/PageForm/MobilePageForm.js +2 -2
  9. package/dist/cjs/components/PageForm/mobileStyles.module.css +16 -16
  10. package/dist/cjs/components/PageForm/styles.module.css +11 -19
  11. package/dist/cjs/components/PageLoading/styles.module.css +1 -1
  12. package/dist/cjs/components/PageServices/mobileStyles.module.css +3 -3
  13. package/dist/cjs/components/PageServices/styles.module.css +3 -2
  14. package/dist/cjs/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.js +1 -1
  15. package/dist/cjs/components/PageSidebar/helperComponents/SidebarSelect/styles.module.css +18 -10
  16. package/dist/cjs/components/PageSidebar/helperComponents/SidebarTitle/styles.module.css +1 -0
  17. package/dist/cjs/components/PageSidebar/hooks/useItemsCreator.js +1 -2
  18. package/dist/cjs/components/PageSidebar/styles.module.css +9 -8
  19. package/dist/cjs/components/TreeNavigation/TreeNavigation.js +1 -1
  20. package/dist/cjs/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.js +1 -1
  21. package/dist/cjs/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.css +2 -4
  22. package/dist/cjs/components/TreeNavigation/helperComponents/Menu/Menu.js +1 -1
  23. package/dist/cjs/components/TreeNavigation/helperComponents/Menu/styles.module.css +2 -1
  24. package/dist/cjs/components/TreeNavigation/styles.module.css +10 -7
  25. package/dist/cjs/style.css +97 -83
  26. package/dist/esm/components/Actions/styles.module.css +2 -0
  27. package/dist/esm/components/DefaultSubtitle/styles.module.css +6 -5
  28. package/dist/esm/components/Headline/Headline.js +4 -1
  29. package/dist/esm/components/Headline/styles.module.css +9 -3
  30. package/dist/esm/components/PageCatalog/mobileStyles.module.css +2 -2
  31. package/dist/esm/components/PageCatalog/styles.module.css +2 -2
  32. package/dist/esm/components/PageForm/MobilePageForm.js +3 -3
  33. package/dist/esm/components/PageForm/mobileStyles.module.css +16 -16
  34. package/dist/esm/components/PageForm/styles.module.css +11 -19
  35. package/dist/esm/components/PageLoading/styles.module.css +1 -1
  36. package/dist/esm/components/PageServices/mobileStyles.module.css +3 -3
  37. package/dist/esm/components/PageServices/styles.module.css +3 -2
  38. package/dist/esm/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.js +1 -1
  39. package/dist/esm/components/PageSidebar/helperComponents/SidebarSelect/styles.module.css +18 -10
  40. package/dist/esm/components/PageSidebar/helperComponents/SidebarTitle/styles.module.css +1 -0
  41. package/dist/esm/components/PageSidebar/hooks/useItemsCreator.js +1 -2
  42. package/dist/esm/components/PageSidebar/styles.module.css +9 -8
  43. package/dist/esm/components/TreeNavigation/TreeNavigation.js +1 -1
  44. package/dist/esm/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.js +1 -1
  45. package/dist/esm/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.css +2 -4
  46. package/dist/esm/components/TreeNavigation/helperComponents/Menu/Menu.js +1 -1
  47. package/dist/esm/components/TreeNavigation/helperComponents/Menu/styles.module.css +2 -1
  48. package/dist/esm/components/TreeNavigation/styles.module.css +10 -7
  49. package/dist/esm/style.css +97 -83
  50. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  51. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  52. package/package.json +22 -22
  53. package/src/components/Actions/styles.module.scss +2 -0
  54. package/src/components/DefaultSubtitle/styles.module.scss +4 -2
  55. package/src/components/Headline/Headline.tsx +7 -1
  56. package/src/components/Headline/styles.module.scss +7 -1
  57. package/src/components/PageCatalog/mobileStyles.module.scss +1 -1
  58. package/src/components/PageForm/MobilePageForm.tsx +21 -11
  59. package/src/components/PageForm/mobileStyles.module.scss +12 -11
  60. package/src/components/PageForm/styles.module.scss +5 -20
  61. package/src/components/PageServices/mobileStyles.module.scss +2 -2
  62. package/src/components/PageServices/styles.module.scss +1 -0
  63. package/src/components/PageSidebar/helperComponents/SidebarSelect/SidebarSelect.tsx +1 -1
  64. package/src/components/PageSidebar/helperComponents/SidebarSelect/styles.module.scss +16 -5
  65. package/src/components/PageSidebar/helperComponents/SidebarTitle/styles.module.scss +1 -0
  66. package/src/components/PageSidebar/hooks/useItemsCreator.tsx +1 -4
  67. package/src/components/PageSidebar/styles.module.scss +11 -7
  68. package/src/components/TreeNavigation/TreeNavigation.tsx +1 -1
  69. package/src/components/TreeNavigation/helperComponents/ConditionalPopover/ConditionalPopover.tsx +1 -2
  70. package/src/components/TreeNavigation/helperComponents/ConditionalPopover/styles.module.scss +4 -6
  71. package/src/components/TreeNavigation/helperComponents/Menu/Menu.tsx +2 -1
  72. package/src/components/TreeNavigation/helperComponents/Menu/styles.module.scss +3 -1
  73. package/src/components/TreeNavigation/styles.module.scss +6 -1
package/README.md CHANGED
@@ -578,6 +578,7 @@ import {
578
578
  | `quotas` | `QuotaItem[]` | — | Список квот для отображения |
579
579
  | `quotasUrl` | `string` | — | Ссылка на страницу квот по проекту |
580
580
  | `size` | `"l"` \| `"m"` \| `"s"` \| `"xs"` | — | Размер <br/> Размер триггера; для `xs` применяется кнопка `s`. |
581
+ | `skeletonRowCount` | `number` | `4` | Количество строк-заглушек, пока идёт загрузка. <br/> Строка — это ряд сетки: в две колонки (desktop-дропдаун) она даёт две карточки, <br/> в одну (mobile, аккордеон `QuotaWidgetMini`) — одну. |
581
582
  | `target` | `HTMLAttributeAnchorTarget` | — | |
582
583
  | `tooltip` | `TooltipProps` | — | |
583
584
  | `triggerClassName` | `string` | — | CSS-класс триггера |
@@ -622,6 +623,7 @@ import {
622
623
  | `projectName` | `string` | — | Название проекта, по которому отображаются квоты |
623
624
  | `quotas` | `QuotaItem` | — | Список квот для отображения |
624
625
  | `quotasUrl` | `string` | — | Ссылка на страницу квот по проекту |
626
+ | `skeletonRowCount` | `number` | `4` | Количество строк-заглушек, пока идёт загрузка. <br/> Строка — это ряд сетки: в две колонки (desktop-дропдаун) она даёт две карточки, <br/> в одну (mobile, аккордеон `QuotaWidgetMini`) — одну. |
625
627
 
626
628
  ## ConditionalPopover
627
629
 
@@ -4,6 +4,7 @@
4
4
  flex-shrink:0;
5
5
  gap:var(--sn-primitive-dimension-8, 8px);
6
6
  align-items:center;
7
+ box-sizing:border-box;
7
8
  height:100%;
8
9
  }
9
10
 
@@ -13,6 +14,7 @@
13
14
  flex-shrink:0;
14
15
  gap:var(--sn-primitive-dimension-8, 8px);
15
16
  align-items:center;
17
+ box-sizing:border-box;
16
18
  width:100%;
17
19
  }
18
20
 
@@ -1,19 +1,20 @@
1
1
  .subtitle{
2
2
  display:flex;
3
3
  flex-direction:row;
4
- gap:var(--sn-primitive-dimension-12, 12px);
4
+ gap:var(--sn-primitive-dimension-8, 8px);
5
5
  align-items:center;
6
+ box-sizing:border-box;
6
7
  }
7
8
 
8
9
  .label{
9
- font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
10
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
10
11
  font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
11
- line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
12
- font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
12
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
13
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
13
14
  letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
14
15
  paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
15
16
  display:flex;
16
17
  flex-direction:row;
17
- gap:var(--sn-primitive-dimension-4, 4px);
18
+ gap:var(--sn-primitive-dimension-2, 2px);
18
19
  align-items:center;
19
20
  }
@@ -5,13 +5,16 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.Headline = Headline;
7
7
  const jsx_runtime_1 = require("react/jsx-runtime");
8
+ const adaptive_1 = require("@cloud-ru/ds-adaptive");
8
9
  const truncate_string_1 = require("@cloud-ru/ds-truncate-string");
9
10
  const typography_1 = require("@cloud-ru/ds-typography");
10
11
  const utils_1 = require("@cloud-ru/ds-utils");
11
12
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
12
13
  function Headline({ title, actions, moreActions, slotBeforeTitle, slotAfterTitle, subtitle, truncateTitle, ...rest }) {
14
+ const { layoutType } = (0, adaptive_1.useAdaptiveLayout)();
15
+ const isMobile = (0, adaptive_1.isMobileLayout)(layoutType);
13
16
  const needsRender = Boolean(title || slotBeforeTitle || slotAfterTitle || subtitle || actions || moreActions);
14
17
  if (!needsRender)
15
18
  return null;
16
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headlineLayout, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleLayout, children: [slotBeforeTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.prefixButtonWrapper, children: slotBeforeTitle }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.headline, size: typography_1.SIZE.s, as: 'h1', className: styles_module_scss_1.default.title, children: truncateTitle ? (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: 'end', text: title, maxLines: 1 }) : title }), slotAfterTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusWrapper, children: slotAfterTitle }), moreActions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.moreActions, children: moreActions })] }), Boolean(actions) && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.actions, children: actions })] }), subtitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.subtitle, children: subtitle })] }));
19
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, ...(0, utils_1.extractSupportProps)(rest), children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headlineLayout, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleLayout, children: [slotBeforeTitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.prefixButtonWrapper, children: slotBeforeTitle }), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.headline, size: typography_1.SIZE.s, as: 'h1', className: styles_module_scss_1.default.title, children: truncateTitle ? (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: 'end', text: title, maxLines: 1 }) : title }), slotAfterTitle && !isMobile && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusWrapper, children: slotAfterTitle }), moreActions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.moreActions, children: moreActions })] }), Boolean(actions) && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.actions, children: actions })] }), slotAfterTitle && isMobile && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.statusRow, children: slotAfterTitle }), subtitle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.subtitle, children: subtitle })] }));
17
20
  }
@@ -1,6 +1,8 @@
1
1
  .headline{
2
2
  display:flex;
3
3
  flex-direction:column;
4
+ gap:var(--sn-primitive-dimension-8, 8px);
5
+ box-sizing:border-box;
4
6
  }
5
7
 
6
8
  .headlineLayout{
@@ -29,14 +31,14 @@
29
31
  display:flex;
30
32
  flex-shrink:0;
31
33
  align-items:center;
32
- min-height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-by24, 32px)));
34
+ min-height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-platform-comfort-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-32, 32px))));
33
35
  }
34
36
 
35
37
  .moreActions{
36
38
  display:flex;
37
39
  flex-shrink:0;
38
40
  align-items:center;
39
- height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-by24, 32px)));
41
+ height:var(--sn-regular-headline-s-lineHeight, var(--sn-density-typography-roleHeadline-lineHeightS, var(--sn-platform-comfort-typography-roleHeadline-lineHeightS, var(--sn-primitive-font-lineHeight-32, 32px))));
40
42
  margin-left:auto;
41
43
  }
42
44
 
@@ -48,7 +50,11 @@
48
50
  justify-content:flex-end;
49
51
  }
50
52
 
53
+ .statusRow{
54
+ display:flex;
55
+ align-items:center;
56
+ }
57
+
51
58
  .subtitle{
52
- margin-top:var(--sn-primitive-dimension-4, 4px);
53
59
  color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
54
60
  }
@@ -1,11 +1,11 @@
1
1
  .catalog{
2
2
  display:flex;
3
3
  flex-direction:column;
4
- gap:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
4
+ gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
5
5
  box-sizing:border-box;
6
6
  width:100%;
7
7
  margin:0 auto;
8
- padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
8
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
9
9
  }
10
10
 
11
11
  .content{
@@ -1,12 +1,12 @@
1
1
  .catalog{
2
2
  display:flex;
3
3
  flex-direction:column;
4
- gap:var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px));
4
+ gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
5
5
  box-sizing:border-box;
6
6
  min-width:992px;
7
7
  max-width:min(100%, 1248px);
8
8
  margin:0 auto;
9
- padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
9
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
10
10
  }
11
11
 
12
12
  .content{
@@ -47,10 +47,10 @@ function MobilePageFormBase({ children, title, subtitle, className, footer, step
47
47
  setOpenMoreContentIndex(idx);
48
48
  setOpenMore(false);
49
49
  },
50
- })), children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, icon: (0, jsx_runtime_1.jsx)(system_1.KebabSVG, {}), size: 'm' }) })) : undefined }), stepper] }), sideBlock && ((0, jsx_runtime_1.jsx)(modal_1.ModalCustom, { open: openMoreContentIndex !== undefined, onClose: () => setOpenMoreContentIndex(undefined),
50
+ })), children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, icon: (0, jsx_runtime_1.jsx)(system_1.KebabSVG, {}), size: 's' }) })) : undefined }), stepper] }), sideBlock && ((0, jsx_runtime_1.jsx)(modal_1.ModalCustom, { open: openMoreContentIndex !== undefined, onClose: () => setOpenMoreContentIndex(undefined),
51
51
  // Высоту листа задаёт сам sideBlock-элемент (`snapPoints`); напр. `[1]` — на всю высоту.
52
52
  // По умолчанию — по высоте контента.
53
- snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.body, children: children }), (priceSummary || footer) && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.footer, children: [priceSummary && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummary, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.m, className: mobileStyles_module_scss_1.default.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.modalContent, children: priceSummary.content }), "data-test-id": constants_1.TEST_IDS.pageForm.priceSummarySheet, children: (0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummaryRight, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.label, size: typography_1.SIZE.l, className: mobileStyles_module_scss_1.default.priceSummaryTotal, children: priceSummary.total }), priceSummary.content && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 'm', icon: (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, {}) }))] }) })] })), footer && ((0, jsx_runtime_1.jsx)(button_1.ButtonGroup, { size: 'l', filled: true,
53
+ snapPoints: sideBlock[openMoreContentIndex ?? 0].snapPoints, children: (0, jsx_runtime_1.jsx)(modal_1.ModalCustom.Body, { content: sideBlock[openMoreContentIndex ?? 0].content }) })), (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.body, children: children }), (priceSummary || footer) && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.footer, children: [priceSummary && ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummary, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.m, className: mobileStyles_module_scss_1.default.priceSummaryText, children: "\u041E\u0446\u0435\u043D\u043A\u0430 \u0431\u044E\u0434\u0436\u0435\u0442\u0430" }), (0, jsx_runtime_1.jsx)(dropdown_1.Dropdown, { open: openPriceSummary, onOpenChange: setOpenPriceSummary, content: (0, jsx_runtime_1.jsx)("div", { className: mobileStyles_module_scss_1.default.modalContent, children: priceSummary.content }), "data-test-id": constants_1.TEST_IDS.pageForm.priceSummarySheet, children: typeof priceSummary.total === 'string' ? ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 's', label: priceSummary.total, icon: priceSummary.content ? (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, {}) : undefined, iconPosition: button_1.ICON_POSITION.After, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger })) : ((0, jsx_runtime_1.jsxs)("div", { className: mobileStyles_module_scss_1.default.priceSummaryRight, "data-test-id": constants_1.TEST_IDS.pageForm.priceSummaryTrigger, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.label, size: typography_1.SIZE.s, children: priceSummary.total }), priceSummary.content && (0, jsx_runtime_1.jsx)(system_1.ChevronRightSVG, { size: 16 })] })) })] })), footer && ((0, jsx_runtime_1.jsx)(button_1.ButtonGroup, { size: 'm', filled: true,
54
54
  // 2 кнопки — в ряд (делят ширину); 3 — в столбик (правило футеров).
55
55
  vertical: [footer.buttonPrimary, footer.buttonSecondary, footer.buttonAdditional].filter(Boolean).length >= 3, renderAction: (button, slot) => {
56
56
  const tooltip = footerTooltips?.[slot];
@@ -4,24 +4,24 @@
4
4
  display:flex;
5
5
  flex-direction:column;
6
6
  flex-grow:1;
7
- gap:var(--sn-primitive-dimension-16, 16px);
7
+ gap:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
8
8
  box-sizing:border-box;
9
9
  width:100%;
10
10
  min-height:100%;
11
- padding:var(--sn-primitive-dimension-16, 16px);
12
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
11
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
12
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
13
13
  }
14
14
 
15
15
  .body{
16
- font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
16
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
17
17
  font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
18
- line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
19
- font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
18
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
19
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
20
20
  letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
21
21
  paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
22
22
  flex:1;
23
23
  color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
24
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
24
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
25
25
  }
26
26
 
27
27
  .footer{
@@ -30,12 +30,11 @@
30
30
  bottom:0;
31
31
  display:flex;
32
32
  flex-direction:column;
33
- gap:var(--sn-primitive-dimension-8, 8px);
34
33
  box-sizing:border-box;
35
- margin:0 calc(0px - var(--sn-primitive-dimension-16, 16px)) calc(0px - var(--sn-primitive-dimension-16, 16px));
36
- padding:var(--sn-primitive-dimension-8, 8px) var(--sn-primitive-dimension-16, 16px) var(--sn-primitive-dimension-16, 16px);
34
+ margin:0 calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))));
35
+ padding:var(--sn-primitive-dimension-8, 8px) var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))) var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
37
36
  border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decorTransparent, var(--sn-brand-color-neutral-transparent-forLightMode, rgba(124, 131, 182, 0.0784313725)));
38
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
37
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
39
38
  }
40
39
 
41
40
  .priceSummary{
@@ -43,7 +42,6 @@
43
42
  gap:var(--sn-primitive-dimension-4, 4px);
44
43
  align-items:center;
45
44
  justify-content:space-between;
46
- min-height:var(--sn-primitive-dimension-40, 40px);
47
45
  }
48
46
 
49
47
  .priceSummaryText{
@@ -53,7 +51,9 @@
53
51
  .priceSummaryRight{
54
52
  cursor:pointer;
55
53
  display:flex;
54
+ gap:var(--sn-primitive-dimension-4, 4px);
56
55
  align-items:center;
56
+ color:var(--sn-theme-color-neutral-text, var(--sn-brand-color-neutral-40, var(--sn-brand-palette-gray-40, #81869c)));
57
57
  }
58
58
 
59
59
  .header{
@@ -62,12 +62,12 @@
62
62
  top:0;
63
63
  display:flex;
64
64
  flex-direction:column;
65
- gap:var(--sn-primitive-dimension-16, 16px);
65
+ gap:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
66
66
  box-sizing:border-box;
67
- margin:calc(0px - var(--sn-primitive-dimension-16, 16px)) calc(0px - var(--sn-primitive-dimension-16, 16px)) 0;
68
- padding:var(--sn-primitive-dimension-16, 16px);
67
+ margin:calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) calc(0px - var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))) 0;
68
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
69
69
  border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
70
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
70
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
71
71
  }
72
72
 
73
73
  .modalContent{
@@ -6,7 +6,7 @@
6
6
  min-width:-moz-fit-content;
7
7
  min-width:fit-content;
8
8
  min-height:100%;
9
- padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
9
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
10
10
  }
11
11
 
12
12
  .form{
@@ -15,10 +15,6 @@
15
15
  min-height:100%;
16
16
  }
17
17
 
18
- .container > .form[data-size=l]{
19
- padding:var(--sn-primitive-dimension-56, 56px);
20
- }
21
-
22
18
  .formContent{
23
19
  display:flex;
24
20
  flex:1;
@@ -31,15 +27,15 @@
31
27
  }
32
28
 
33
29
  .body{
34
- font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
30
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
35
31
  font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
36
- line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
37
- font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px)));
32
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
33
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
38
34
  letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
39
35
  paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
40
36
  flex:1;
41
37
  color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
42
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
38
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
43
39
  }
44
40
 
45
41
  .footer{
@@ -52,26 +48,22 @@
52
48
  position:sticky;
53
49
  bottom:0;
54
50
  box-sizing:border-box;
55
- margin:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-primitive-dimension-32, 32px)))) calc(0px - var(--sn-primitive-dimension-56, 56px)) calc(0px - var(--sn-primitive-dimension-56, 56px));
56
- padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-primitive-dimension-32, 32px))) var(--sn-primitive-dimension-56, 56px) var(--sn-primitive-dimension-56, 56px);
51
+ margin:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))))));
52
+ padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)))));
57
53
  border-radius:0 0 var(--sn-block-anatomy-l-borderRadius, var(--sn-brand-anatomy-radius-block-l, var(--sn-primitive-dimension-4, 4px))) var(--sn-block-anatomy-l-borderRadius, var(--sn-brand-anatomy-radius-block-l, var(--sn-primitive-dimension-4, 4px)));
58
- background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-primitive-color-gray-95, #fdfdfd)));
59
- transition:border-radius 0.15s ease, padding 0.15s ease;
54
+ background-color:var(--sn-theme-color-neutral-background1Level, var(--sn-brand-color-neutral-95, var(--sn-brand-palette-gray-95, #fdfdfd)));
60
55
  }
61
56
  .footerSticky::before{
62
57
  pointer-events:none;
63
58
  content:"";
64
59
  position:absolute;
65
60
  inset:0;
66
- border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
61
+ border-top:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-brand-palette-gray-80, #e3e5ed)));
67
62
  border-radius:inherit;
68
63
  opacity:0;
69
64
  transition:opacity 0.15s ease;
70
65
  }
71
66
 
72
- .footerStuck{
73
- padding:var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-primitive-dimension-32, 32px)));
74
- }
75
67
  .footerStuck::before{
76
68
  opacity:1;
77
69
  }
@@ -79,7 +71,7 @@
79
71
  .footerSentinel{
80
72
  pointer-events:none;
81
73
  position:absolute;
82
- bottom:calc(0px - var(--sn-primitive-dimension-56, 56px));
74
+ bottom:calc(0px - var(--sn-block-anatomy-l-padding, var(--sn-density-spacing-block-l-padding, var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px))))));
83
75
  left:50%;
84
76
  transform:translateX(-50%);
85
77
  width:var(--sn-primitive-dimension-2, 2px);
@@ -95,7 +87,7 @@
95
87
 
96
88
  .sideItems{
97
89
  position:sticky;
98
- top:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
90
+ top:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
99
91
  display:flex;
100
92
  flex-direction:column;
101
93
  gap:var(--sn-primitive-dimension-4, 4px);
@@ -5,7 +5,7 @@
5
5
  box-sizing:border-box;
6
6
  width:100%;
7
7
  height:100%;
8
- color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
8
+ color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-50, var(--sn-brand-palette-gray-50, #8b8fa7)));
9
9
  }
10
10
 
11
11
  .spinner{
@@ -7,16 +7,16 @@
7
7
  }
8
8
 
9
9
  .sidebarSelect{
10
- border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-neutral-decor, var(--sn-brand-color-neutral-80, var(--sn-primitive-color-gray-80, #e3e5ed)));
10
+ border-bottom:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-available-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
11
11
  }
12
12
 
13
13
  .body{
14
14
  display:flex;
15
15
  flex-direction:column;
16
16
  flex-grow:1;
17
- gap:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
17
+ gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
18
18
  box-sizing:border-box;
19
- padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
19
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
20
20
  }
21
21
 
22
22
  .childWrapper{
@@ -2,6 +2,7 @@
2
2
  display:flex;
3
3
  flex-direction:row-reverse;
4
4
  justify-content:flex-end;
5
+ box-sizing:border-box;
5
6
  min-width:100%;
6
7
  height:100%;
7
8
  }
@@ -29,10 +30,10 @@
29
30
  position:relative;
30
31
  display:flex;
31
32
  flex-direction:column;
32
- gap:var(--sn-density-spacing-interval-m, var(--sn-primitive-dimension-16, 16px));
33
+ gap:var(--sn-density-spacing-interval-m, var(--sn-platform-comfort-spacing-interval-m, var(--sn-primitive-dimension-24, 24px)));
33
34
  box-sizing:border-box;
34
35
  min-height:100%;
35
- padding:var(--sn-density-spacing-interval-l, var(--sn-primitive-dimension-24, 24px));
36
+ padding:var(--sn-density-spacing-interval-l, var(--sn-platform-comfort-spacing-interval-l, var(--sn-primitive-dimension-32, 32px)));
36
37
  }
37
38
  .container[data-limited=true]{
38
39
  max-width:1248px;
@@ -35,7 +35,7 @@ function SidebarSelectBase({ className, items, footerItems = [], selected, onSel
35
35
  };
36
36
  const allItems = (0, react_1.useMemo)(() => [...list, ...footerList], [list, footerList]);
37
37
  const shouldShowSearch = hasSearch ?? (allItems.length > 15 || Boolean(searchValue));
38
- return ((0, jsx_runtime_1.jsx)(list_1.Droplist, { size: 'm', selection: { mode: 'single', value: selected, onChange: handleSelect }, items: allItems, open: isOpen, onOpenChange: setIsOpen, collapse: searchValue ? searchCollapseState : collapse || selectedCollapsedState, search: shouldShowSearch ? { value: searchValue, onChange: setSearchValue } : undefined, scrollToSelectedItem: true, children: (0, jsx_runtime_1.jsxs)("div", { role: 'button', tabIndex: 0, className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className), "data-test-id": constants_1.TEST_IDS.sidebarSelect.trigger, ...(0, utils_1.extractSupportProps)(otherProps), children: [(0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { className: styles_module_scss_1.default.triggerText, text: selectedItem.item?.label || '' }), selectedItem.item?.afterContent, isOpen ? (0, jsx_runtime_1.jsx)(system_1.ChevronUpSVG, {}) : (0, jsx_runtime_1.jsx)(system_1.ChevronDownSVG, {})] }) }));
38
+ return ((0, jsx_runtime_1.jsx)(list_1.Droplist, { size: 'm', selection: { mode: 'single', value: selected, onChange: handleSelect }, items: allItems, open: isOpen, onOpenChange: setIsOpen, collapse: searchValue ? searchCollapseState : collapse || selectedCollapsedState, search: shouldShowSearch ? { value: searchValue, onChange: setSearchValue } : undefined, scrollToSelectedItem: true, children: (0, jsx_runtime_1.jsxs)("div", { role: 'button', tabIndex: 0, className: (0, classnames_1.default)(styles_module_scss_1.default.wrapper, className), "data-test-id": constants_1.TEST_IDS.sidebarSelect.trigger, ...(0, utils_1.extractSupportProps)(otherProps), children: [(0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { className: styles_module_scss_1.default.triggerText, text: selectedItem.item?.label || '' }), selectedItem.item?.afterContent, (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.chevron, children: isOpen ? (0, jsx_runtime_1.jsx)(system_1.ChevronUpSVG, {}) : (0, jsx_runtime_1.jsx)(system_1.ChevronDownSVG, {}) })] }) }));
39
39
  }
40
40
  /**
41
41
  * Мобильный select-сайдбар. Форсирует `mobile`-раскладку через `withLayoutType`, чтобы адаптивный
@@ -1,19 +1,27 @@
1
1
  .wrapper{
2
- font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
3
- font-weight:var(--sn-regular-body-l-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-l, var(--sn-brand-font-fontWeight-light-regular-body-l, var(--sn-primitive-font-fontWeightValue-400, 400))));
4
- line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
5
- font-size:var(--sn-regular-body-l-fontSize, var(--sn-density-typography-roleBody-fontSizeL, var(--sn-primitive-font-fontSize-20, 20px)));
6
- letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
7
- paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
2
+ font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, SB Sans Interface));
3
+ font-weight:var(--sn-regular-body-m-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-m, var(--sn-brand-font-fontWeight-light-regular-body-m, var(--sn-primitive-font-fontWeightValue-400, 400))));
4
+ line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-platform-comfort-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-24, 24px))));
5
+ font-size:var(--sn-regular-body-m-fontSize, var(--sn-density-typography-roleBody-fontSizeM, var(--sn-platform-comfort-typography-roleBody-fontSizeM, var(--sn-primitive-font-fontSize-16, 16px))));
6
+ letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
7
+ paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
8
8
  cursor:pointer;
9
9
  display:flex;
10
- gap:var(--sn-primitive-dimension-8, 8px);
10
+ gap:var(--sn-list-anatomy-size-m-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))));
11
11
  align-items:center;
12
- height:var(--sn-primitive-dimension-48, 48px);
13
- padding:0 var(--sn-primitive-dimension-12, 12px);
14
- color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
12
+ box-sizing:border-box;
13
+ padding:var(--sn-list-anatomy-size-m-listItem-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-list-anatomy-size-m-listItem-paddingHorizontal, 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)))));
14
+ color:var(--sn-theme-color-available-version-textMain, var(--sn-brand-color-text-version-main, #41424e));
15
15
  }
16
16
 
17
17
  .triggerText{
18
18
  flex-grow:1;
19
+ padding:var(--sn-list-anatomy-size-m-listItem-contentWrapper-paddingVertical, 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))))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-horizontal-m, var(--sn-platform-comfort-spacing-control-wrapper-vertical-m, var(--sn-platform-comfort-scale-025-xs, var(--sn-primitive-dimension-4, 4px))))));
20
+ }
21
+
22
+ .chevron{
23
+ display:flex;
24
+ flex-shrink:0;
25
+ padding-block:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-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)))));
26
+ color:var(--sn-theme-color-available-version-textTertiary, var(--sn-brand-color-text-version-tertiary, rgba(65, 66, 78, 0.5490196078)));
19
27
  }
@@ -3,6 +3,7 @@
3
3
  flex-direction:row;
4
4
  gap:var(--sn-primitive-dimension-8, 8px);
5
5
  align-items:center;
6
+ box-sizing:border-box;
6
7
  min-width:0;
7
8
  }
8
9
 
@@ -9,7 +9,6 @@ const jsx_runtime_1 = require("react/jsx-runtime");
9
9
  const system_1 = require("@cloud-ru/ds-icons/interface/system");
10
10
  const list_1 = require("@cloud-ru/ds-list");
11
11
  const tooltip_1 = require("@cloud-ru/ds-tooltip");
12
- const classnames_1 = __importDefault(require("classnames"));
13
12
  const react_1 = require("react");
14
13
  const constants_1 = require("../../../constants");
15
14
  const locale_1 = require("../../../locale");
@@ -31,7 +30,7 @@ function useTopPinnedContent(header, hasSearch) {
31
30
  // Кнопка поиска живёт в `content` рядом с заголовком/полем, а не в `afterContent`:
32
31
  // отдельный слот `afterContent` центрируется по-своему и ломает вертикальное
33
32
  // выравнивание кнопки с полем.
34
- content: ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.pinnedHeaderSlot, hasSearch && searchOpened && styles_module_scss_1.default.pinnedHeaderSlotSearch), children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.pinnedHeaderContent, children:
33
+ content: ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.pinnedHeaderSlot, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.pinnedHeaderContent, children:
35
34
  // При открытом поиске строка заголовка заменяется полем поиска (без наложения).
36
35
  hasSearch && searchOpened ? ((0, jsx_runtime_1.jsx)(SidebarSearch_1.SidebarSearch, {})) : ((0, jsx_runtime_1.jsx)(SidebarTitle_1.SidebarTitle, { title: header.label, icon: header.icon, afterContent: header.afterContent })) }), hasSearch && (0, jsx_runtime_1.jsx)(SidebarSearchToggle_1.SidebarSearchToggle, {})] })),
37
36
  inactive: true,
@@ -1,4 +1,5 @@
1
1
  .wrapper{
2
+ box-sizing:border-box;
2
3
  width:256px;
3
4
  }
4
5
  .wrapper[data-collapsed]{
@@ -41,12 +42,15 @@
41
42
  box-sizing:border-box;
42
43
  padding:var(--sn-primitive-dimension-4, 4px) 0;
43
44
  border-right:var(--sn-primitive-strokeWeight-strokeRegular, 1px) solid var(--sn-theme-color-material-stateLayer-neutral-border-default-borderColor, var(--sn-brand-color-state-neutralBorder-forLightMode-default-borderColor, rgba(159, 166, 198, 0.3019607843)));
44
- background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-primitive-color-gray-90, #eeeff3)));
45
+ background-color:var(--sn-theme-color-neutral-background, var(--sn-brand-color-neutral-90, var(--sn-brand-palette-gray-90, #eeeff3)));
45
46
  }
46
47
  .wrapper .content[data-collapsed]{
47
- margin:var(--sn-primitive-dimension-4, 4px);
48
+ flex-shrink:0;
49
+ width:256px;
50
+ margin:var(--sn-primitive-dimension-4, 4px) 0 var(--sn-primitive-dimension-4, 4px) var(--sn-primitive-dimension-4, 4px);
48
51
  border-right:none;
49
- box-shadow:var(--sn-boxShadow-elevation-level3, var(--sn-theme-effect-shadow-level3-layer1-positionX, 0) var(--sn-theme-effect-shadow-level3-layer1-positionY, 0) var(--sn-theme-effect-shadow-level3-layer1-blur, 8px) var(--sn-theme-effect-shadow-level3-layer1-speed, 0) var(--sn-theme-effect-shadow-layer1Color, rgba(0, 0, 0, 0.0784313725)), var(--sn-theme-effect-shadow-level3-layer2-positionX, 0) var(--sn-theme-effect-shadow-level3-layer2-positionY, 8px) var(--sn-theme-effect-shadow-level3-layer2-blur, 16px) var(--sn-theme-effect-shadow-level3-layer2-speed, 2px) var(--sn-theme-effect-shadow-layer2Color, rgba(0, 0, 0, 0.0784313725)));
52
+ border-radius:var(--sn-density-radius-2xs, var(--sn-platform-comfort-radius-2xs, var(--sn-primitive-dimension-4, 4px)));
53
+ box-shadow:var(--sn-boxShadow-elevation-level3, var(--sn-theme-effect-shadow-level3-layer1-positionX, 0) var(--sn-theme-effect-shadow-level3-layer1-positionY, 0) var(--sn-theme-effect-shadow-level3-layer1-blur, 8px) var(--sn-theme-effect-shadow-level3-layer1-spread, 0) var(--sn-theme-effect-shadow-layer1Color, rgba(0, 0, 0, 0.0784313725)), var(--sn-theme-effect-shadow-level3-layer2-positionX, 0) var(--sn-theme-effect-shadow-level3-layer2-positionY, 8px) var(--sn-theme-effect-shadow-level3-layer2-blur, 16px) var(--sn-theme-effect-shadow-level3-layer2-spread, 2px) var(--sn-theme-effect-shadow-layer2Color, rgba(0, 0, 0, 0.0784313725)));
50
54
  }
51
55
  .wrapper .list{
52
56
  position:relative;
@@ -70,7 +74,7 @@
70
74
  }
71
75
 
72
76
  .button{
73
- background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-primitive-color-gray-99, #ffffff)));
77
+ background-color:var(--sn-theme-color-neutral-background2Level, var(--sn-brand-color-neutral-99, var(--sn-brand-palette-gray-99, #ffffff)));
74
78
  }
75
79
 
76
80
  .pinnedHeaderSlot{
@@ -79,14 +83,11 @@
79
83
  gap:var(--sn-primitive-dimension-8, 8px);
80
84
  align-items:center;
81
85
  min-height:calc(var(--sn-primitive-dimension-44, 44px) - var(--sn-primitive-strokeWeight-strokeRegular, 1px));
86
+ padding-inline:var(--sn-primitive-dimension-4, 4px);
82
87
  }
83
88
 
84
89
  .pinnedHeaderContent{
85
90
  display:flex;
86
91
  flex-grow:1;
87
92
  min-width:0;
88
- }
89
-
90
- .pinnedHeaderSlotSearch{
91
- padding-inline:var(--sn-primitive-dimension-4, 4px);
92
93
  }
@@ -23,5 +23,5 @@ function TreeNavigation({ header: { title, icon, description, status, actions },
23
23
  const isFixed = mode === constants_1.TREE_NAVIGATION_MODE.Fixed;
24
24
  const isAsideOpen = isFixed || (mode === constants_1.TREE_NAVIGATION_MODE.Aside && Boolean(open));
25
25
  const menu = (0, react_1.useMemo)(() => ((0, jsx_runtime_1.jsx)(helperComponents_1.Menu, { menuItems: items, menuTitle: menuTitle, enableShrinkMenuButton: enableShrinkMenuButton, withDefaultOpenedMenuList: withDefaultOpenedMenuList, selected: selected, onSelect: onSelect })), [onSelect, selected, items, menuTitle, enableShrinkMenuButton, withDefaultOpenedMenuList]);
26
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.header, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleInner, children: [!isFixed && ((0, jsx_runtime_1.jsx)(helperComponents_1.ConditionalPopover, { isOpen: Boolean(open), onOpenChange: setOpen, tip: menu, withPopover: mode === constants_1.TREE_NAVIGATION_MODE.Popover, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Simple, appearance: button_1.APPEARANCE.Neutral, size: button_1.SIZE.S, "aria-label": open ? t('TreeNavigation.closeMenu') : t('TreeNavigation.openMenu'), icon: open ? (0, jsx_runtime_1.jsx)(product_1.CloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.BurgerSVG, {}), onClick: () => setOpen(!open) }) }) })), icon && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.icon, children: icon }) })), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.l, className: styles_module_scss_1.default.title, children: title }), status && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(status_1.Status, { ...status }) }))] }), description && ((0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.s, className: styles_module_scss_1.default.description, children: description }))] }), actions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.headerActions, children: actions })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.body, children: [isAsideOpen && (0, jsx_runtime_1.jsx)("aside", { className: styles_module_scss_1.default.sidebar, children: menu }), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.main, contentClassName), children: content })] })] }));
26
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.root, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.header, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleWrapper, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.titleInner, children: [!isFixed && ((0, jsx_runtime_1.jsx)(helperComponents_1.ConditionalPopover, { isOpen: Boolean(open), onOpenChange: setOpen, tip: menu, withPopover: mode === constants_1.TREE_NAVIGATION_MODE.Popover, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: button_1.SIZE.S, "aria-label": open ? t('TreeNavigation.closeMenu') : t('TreeNavigation.openMenu'), icon: open ? (0, jsx_runtime_1.jsx)(product_1.CloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.BurgerSVG, {}), onClick: () => setOpen(!open) }) }) })), icon && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.icon, children: icon }) })), (0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.l, className: styles_module_scss_1.default.title, children: title }), status && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.innerElement, children: (0, jsx_runtime_1.jsx)(status_1.Status, { ...status }) }))] }), description && ((0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.body, size: typography_1.SIZE.s, className: styles_module_scss_1.default.description, children: description }))] }), actions && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.headerActions, children: actions })] }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.body, children: [isAsideOpen && (0, jsx_runtime_1.jsx)("aside", { className: styles_module_scss_1.default.sidebar, children: menu }), (0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.main, contentClassName), children: content })] })] }));
27
27
  }
@@ -9,7 +9,7 @@ const popover_1 = require("@cloud-ru/ds-popover");
9
9
  const styles_module_scss_1 = __importDefault(require('./styles.module.css'));
10
10
  function ConditionalPopover({ tip, withPopover, isOpen, onOpenChange, children }) {
11
11
  if (withPopover) {
12
- return ((0, jsx_runtime_1.jsx)(popover_1.Popover, { className: styles_module_scss_1.default.popover, open: isOpen, onOpenChange: nextOpen => onOpenChange(nextOpen), content: tip, trigger: popover_1.TRIGGER.Click, placement: popover_1.PLACEMENT.BottomStart, children: children }));
12
+ return ((0, jsx_runtime_1.jsx)(popover_1.Popover, { open: isOpen, onOpenChange: nextOpen => onOpenChange(nextOpen), content: (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.content, children: tip }), trigger: popover_1.TRIGGER.Click, placement: popover_1.PLACEMENT.BottomStart, children: children }));
13
13
  }
14
14
  return children;
15
15
  }
@@ -1,6 +1,4 @@
1
- .popover{
2
- max-height:80%;
3
- }
4
- .popover > div{
1
+ .content{
5
2
  overflow:auto;
3
+ max-height:80vh;
6
4
  }
@@ -21,5 +21,5 @@ function Menu({ menuTitle, menuItems, enableShrinkMenuButton = true, withDefault
21
21
  const handleExpandAll = () => setExpandedNodes((0, utils_1.getExpandedNodes)(menuItems));
22
22
  const handleCollapseAll = () => setExpandedNodes([]);
23
23
  const showSubheader = Boolean(menuTitle || enableShrinkMenuButton);
24
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.sidebar, children: [showSubheader && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.subheader, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.m, children: menuTitle }), enableShrinkMenuButton && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Simple, appearance: button_1.APPEARANCE.Neutral, label: isExpanded ? t('TreeNavigation.collapseAll') : t('TreeNavigation.expandAll'), icon: isExpanded ? (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuCloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuOpenSVG, {}), onClick: isExpanded ? handleCollapseAll : handleExpandAll }))] })), (0, jsx_runtime_1.jsx)(tree_1.Tree, { data: menuItems, selectionMode: 'single', expandedNodes: expandedNodes, onExpand: setExpandedNodes, selected: selected, onSelect: onSelect })] }));
24
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.sidebar, children: [showSubheader && ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.subheader, children: [(0, jsx_runtime_1.jsx)(typography_1.Typography, { variant: typography_1.VARIANT.title, size: typography_1.SIZE.m, children: menuTitle }), enableShrinkMenuButton && ((0, jsx_runtime_1.jsx)(button_1.Button, { view: button_1.VIEW.Function, appearance: button_1.APPEARANCE.Neutral, size: 's', label: isExpanded ? t('TreeNavigation.collapseAll') : t('TreeNavigation.expandAll'), icon: isExpanded ? (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuCloseSVG, {}) : (0, jsx_runtime_1.jsx)(product_1.HorizontalMenuOpenSVG, {}), onClick: isExpanded ? handleCollapseAll : handleExpandAll }))] })), (0, jsx_runtime_1.jsx)(tree_1.Tree, { data: menuItems, selectionMode: 'single', expandedNodes: expandedNodes, onExpand: setExpandedNodes, selected: selected, onSelect: onSelect })] }));
25
25
  }
@@ -1,7 +1,8 @@
1
1
  .sidebar{
2
2
  display:flex;
3
3
  flex-direction:column;
4
- gap:var(--sn-primitive-dimension-12, 12px);
4
+ gap:var(--sn-primitive-dimension-8, 8px);
5
+ box-sizing:border-box;
5
6
  min-width:292px;
6
7
  }
7
8