@cloud-ru/ds-list 2.0.1-preview-04507fc5.0 → 2.0.2-preview-7f6a91d6.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 (56) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/README.md +1 -1
  3. package/dist/cjs/components/Items/BaseItem/BaseItem.js +1 -1
  4. package/dist/cjs/components/Items/BaseItem/styles.module.css +30 -0
  5. package/dist/cjs/components/Items/SearchItem/SearchItem.js +1 -1
  6. package/dist/cjs/components/Items/SimpleItem/utils.d.ts +1 -1
  7. package/dist/cjs/components/Items/SimpleItem/utils.js +1 -1
  8. package/dist/cjs/components/Items/styles.module.css +9 -12
  9. package/dist/cjs/components/Items/types.d.ts +2 -2
  10. package/dist/cjs/components/Items/utils.js +1 -1
  11. package/dist/cjs/components/Lists/ListPrivate/ListPrivate.js +1 -1
  12. package/dist/cjs/components/Lists/ListPrivate/styles.module.css +1 -2
  13. package/dist/cjs/components/Lists/hooks.d.ts +1 -1
  14. package/dist/cjs/components/Lists/hooks.js +2 -2
  15. package/dist/cjs/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
  16. package/dist/cjs/helperComponents/ItemContent/ItemContent.js +1 -1
  17. package/dist/cjs/helperComponents/ItemContent/styles.module.css +45 -24
  18. package/dist/cjs/helperComponents/Separator/Separator.js +3 -3
  19. package/dist/cjs/helperComponents/Separator/styles.module.css +72 -61
  20. package/dist/cjs/style.css +157 -99
  21. package/dist/esm/components/Items/BaseItem/BaseItem.js +1 -1
  22. package/dist/esm/components/Items/BaseItem/styles.module.css +30 -0
  23. package/dist/esm/components/Items/SearchItem/SearchItem.js +1 -1
  24. package/dist/esm/components/Items/SimpleItem/utils.d.ts +1 -1
  25. package/dist/esm/components/Items/SimpleItem/utils.js +1 -1
  26. package/dist/esm/components/Items/styles.module.css +9 -12
  27. package/dist/esm/components/Items/types.d.ts +2 -2
  28. package/dist/esm/components/Items/utils.js +1 -1
  29. package/dist/esm/components/Lists/ListPrivate/ListPrivate.js +1 -1
  30. package/dist/esm/components/Lists/ListPrivate/styles.module.css +1 -2
  31. package/dist/esm/components/Lists/hooks.d.ts +1 -1
  32. package/dist/esm/components/Lists/hooks.js +2 -2
  33. package/dist/esm/helperComponents/DesktopDroplist/DesktopDroplist.js +1 -1
  34. package/dist/esm/helperComponents/ItemContent/ItemContent.js +1 -1
  35. package/dist/esm/helperComponents/ItemContent/styles.module.css +45 -24
  36. package/dist/esm/helperComponents/Separator/Separator.js +3 -3
  37. package/dist/esm/helperComponents/Separator/styles.module.css +72 -61
  38. package/dist/esm/style.css +157 -99
  39. package/dist/tsconfig.cjs.tsbuildinfo +1 -1
  40. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  41. package/package.json +12 -12
  42. package/src/components/Items/BaseItem/BaseItem.tsx +17 -10
  43. package/src/components/Items/BaseItem/styles.module.scss +52 -6
  44. package/src/components/Items/SearchItem/SearchItem.tsx +1 -1
  45. package/src/components/Items/SimpleItem/utils.ts +1 -1
  46. package/src/components/Items/styles.module.scss +10 -10
  47. package/src/components/Items/types.ts +3 -7
  48. package/src/components/Items/utils.ts +1 -1
  49. package/src/components/Lists/ListPrivate/ListPrivate.tsx +1 -1
  50. package/src/components/Lists/ListPrivate/styles.module.scss +4 -3
  51. package/src/components/Lists/hooks.ts +2 -2
  52. package/src/helperComponents/DesktopDroplist/DesktopDroplist.tsx +1 -1
  53. package/src/helperComponents/ItemContent/ItemContent.tsx +22 -20
  54. package/src/helperComponents/ItemContent/styles.module.scss +25 -15
  55. package/src/helperComponents/Separator/Separator.tsx +22 -20
  56. package/src/helperComponents/Separator/styles.module.scss +119 -112
package/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## 2.0.1 (2026-08-27)
7
+
8
+ **Note:** Version bump only for package @ds/list
9
+
6
10
  # 2.0.0 (2026-08-25)
7
11
 
8
12
  ### BREAKING CHANGES
package/README.md CHANGED
@@ -920,7 +920,7 @@ export function DroplistWithHeader() {
920
920
  | `content` | `ItemContent` | — | Основной контент айтема |
921
921
  | `data-test-id` | `string \| undefined` | — | |
922
922
  | `disabled` | `boolean \| undefined` | — | Флаг неактивности элемента |
923
- | `hidden` | `boolean \| undefined` | — | Скрыть элемент из списка (не рендерится и выпадает из навигации) |
923
+ | `hidden` | `boolean \| undefined` | — | Скрыть элемент из списка (не рендерится и исключается из навигации) |
924
924
  | `id` | `ItemId` | — | Уникальный идентификатор |
925
925
  | `itemRef` | `RefObject<HTMLElement> \| undefined` | — | Ссылка на DOM-элемент айтема |
926
926
  | `itemWrapRender` | `((item: ReactNode) => ReactNode) \| undefined` | — | Рендер-обёртка вокруг айтема (например, для проксирования в `Tooltip`/`Link`) |
@@ -111,7 +111,7 @@ function BaseItem({ beforeContent, afterContent, content, onClick, onMouseDown,
111
111
  const stateLayerState = isSelectionSingle && isChecked && !switchProp && !isParentNode
112
112
  ? 'activatedOnBackground'
113
113
  : 'emptyNeutralOnBackground';
114
- const itemJSX = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.itemWrapper, styles_module_scss_2.default.innerWrapper, className), "data-inactive": inactive || undefined, "data-disabled": disabled || undefined, "data-variant": mode || undefined, "data-checked": (isParentNode && isChecked) || (!isParentNode && isChecked && !switchProp) || undefined, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.stateLayer, "aria-hidden": true, "data-state": stateLayerState }), (0, jsx_runtime_1.jsxs)("li", { "data-type": 'outside', role: 'menuitem', "data-test-id": props['data-test-id'] || `${constants_1.TEST_IDS.baseItem}_${id}`, ref: itemRef, className: (0, classnames_1.default)(styles_module_scss_1.default.listItem, styles_module_scss_2.default.droplistItem), "data-size": size, onClick: handleItemClick, onMouseDown: handleItemMouseDown, tabIndex: firstItemId && id === focusFlattenItems[firstItemId]?.originalId ? 0 : -1, "data-non-pointer": (inactive && !onClick) || undefined, "data-variant": mode || undefined, "data-open": open || undefined, "aria-expanded": isParentNode ? Boolean(open) : undefined, onKeyDown: handleItemKeyDown, onFocus: handleItemFocus, style: { '--level': level }, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, "data-checked": (isParentNode && (indeterminate || isChecked)) || (isChecked && !switchProp) || undefined, children: [dragHandle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.dragHandle, children: dragHandle }), !switchProp && isSelectionSingle && marker && !isParentNode && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.markerContainer, "data-test-id": constants_1.TEST_IDS.baseItemMarker })), !switchProp && isSelectionMultiple && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.checkbox, children: (0, jsx_runtime_1.jsx)(toggles_1.Checkbox, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, tabIndex: -1, onChange: isParentNode ? handleCheckboxChange : undefined, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemCheckbox, onClick: handleCheckboxClick, indeterminate: indeterminate }) })), beforeContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.beforeContent, children: beforeContent }), contentNode, afterContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.afterContent, children: afterContent }), switchProp && interactive && ((0, jsx_runtime_1.jsx)(toggles_1.Switch, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemSwitch, showIcon: showSwitchIcon })), !switchProp && expandIcon && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.groupIndicator, "data-open": open || undefined, "data-test-id": constants_1.TEST_IDS.groupIndicator, "aria-hidden": true, children: expandIcon }))] })] }));
114
+ const itemJSX = ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.itemWrapper, styles_module_scss_2.default.innerWrapper, className), "data-size": size, "data-inactive": inactive || undefined, "data-disabled": disabled || undefined, "data-variant": mode || undefined, "data-checked": (isParentNode && isChecked) || (!isParentNode && isChecked && !switchProp) || undefined, children: [(0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.stateLayer, "aria-hidden": true, "data-state": stateLayerState }), (0, jsx_runtime_1.jsxs)("li", { "data-type": 'outside', role: 'menuitem', "data-test-id": props['data-test-id'] || `${constants_1.TEST_IDS.baseItem}_${id}`, ref: itemRef, className: (0, classnames_1.default)(styles_module_scss_1.default.listItem, styles_module_scss_2.default.droplistItem), "data-size": size, onClick: handleItemClick, onMouseDown: handleItemMouseDown, tabIndex: firstItemId && id === focusFlattenItems[firstItemId]?.originalId ? 0 : -1, "data-non-pointer": (inactive && !onClick) || undefined, "data-variant": mode || undefined, "data-open": open || undefined, "aria-expanded": isParentNode ? Boolean(open) : undefined, onKeyDown: handleItemKeyDown, onFocus: handleItemFocus, style: { '--level': level }, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, "data-checked": (isParentNode && (indeterminate || isChecked)) || (isChecked && !switchProp) || undefined, children: [dragHandle && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.dragHandle, children: dragHandle }), !switchProp && isSelectionSingle && marker && !isParentNode && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.markerContainer, "data-test-id": constants_1.TEST_IDS.baseItemMarker })), !switchProp && isSelectionMultiple && interactive && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.checkbox, children: (0, jsx_runtime_1.jsx)(toggles_1.Checkbox, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, tabIndex: -1, onChange: isParentNode ? handleCheckboxChange : undefined, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemCheckbox, onClick: handleCheckboxClick, indeterminate: indeterminate }) })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_2.default.contentWrapper, children: [beforeContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.beforeContent, children: beforeContent }), contentNode, afterContent && (0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_2.default.afterContent, children: afterContent })] }), switchProp && interactive && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.switchWrapper, children: (0, jsx_runtime_1.jsx)(toggles_1.Switch, { size: constants_2.TOGGLE_SIZE_MAP[size], disabled: disabled, checked: isChecked, "data-test-id": constants_1.TEST_IDS.baseItemSwitch, showIcon: showSwitchIcon }) })), !switchProp && expandIcon && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_2.default.groupIndicator, "data-open": open || undefined, "data-test-id": constants_1.TEST_IDS.groupIndicator, "aria-hidden": true, children: expandIcon }))] })] }));
115
115
  if (!itemWrapRender) {
116
116
  return itemJSX;
117
117
  }
@@ -121,6 +121,10 @@
121
121
  max-width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
122
122
  max-height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
123
123
  }
124
+ .droplistItem[data-size=s] .switchWrapper{
125
+ padding-top:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
126
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
127
+ }
124
128
  .droplistItem[data-size=s] .groupIndicator{
125
129
  width:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
126
130
  height:var(--sn-density-size-icon-xs, var(--sn-primitive-dimension-24, 24px));
@@ -168,6 +172,10 @@
168
172
  max-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
169
173
  max-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
170
174
  }
175
+ .droplistItem[data-size=m] .switchWrapper{
176
+ padding-top:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
177
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
178
+ }
171
179
  .droplistItem[data-size=m] .groupIndicator{
172
180
  width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
173
181
  height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
@@ -215,6 +223,10 @@
215
223
  max-width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
216
224
  max-height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
217
225
  }
226
+ .droplistItem[data-size=l] .switchWrapper{
227
+ padding-top:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
228
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-centeredWrapper-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
229
+ }
218
230
  .droplistItem[data-size=l] .groupIndicator{
219
231
  width:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
220
232
  height:var(--sn-density-size-icon-s, var(--sn-primitive-dimension-24, 24px));
@@ -256,6 +268,9 @@
256
268
  .innerWrapper[data-has-checked] .droplistItem:focus-visible, .innerWrapper[data-checked] .droplistItem:focus-visible{
257
269
  outline-color:var(--sn-theme-color-primary-accent, var(--sn-brand-color-primary-55, var(--sn-brandRole-color-brandA-55, var(--sn-primitive-color-brandA-55, #389f74))));
258
270
  }
271
+ .innerWrapper[data-has-checked][data-disabled] .markerContainer, .innerWrapper[data-checked][data-disabled] .markerContainer{
272
+ opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
273
+ }
259
274
  .innerWrapper[data-has-checked][data-disabled] .markerContainer::before, .innerWrapper[data-checked][data-disabled] .markerContainer::before{
260
275
  background-color:var(--sn-theme-color-neutral-accent, var(--sn-brand-color-neutral-55, var(--sn-primitive-color-gray-55, #8b8fa7)));
261
276
  }
@@ -265,4 +280,19 @@
265
280
  flex-grow:1;
266
281
  flex-shrink:1;
267
282
  box-sizing:border-box;
283
+ }
284
+
285
+ .switchWrapper{
286
+ display:flex;
287
+ flex-shrink:0;
288
+ align-items:center;
289
+ box-sizing:content-box;
290
+ }
291
+
292
+ .contentWrapper{
293
+ display:flex;
294
+ flex-grow:1;
295
+ flex-shrink:1;
296
+ align-items:flex-start;
297
+ min-width:0;
268
298
  }
@@ -15,7 +15,7 @@ function SearchItem({ search, itemRef, onNavKeyDown, onFocus, inTopBar }) {
15
15
  // Размер поиска следует за размером айтемов списка (size из контекста), а не фиксирован 's'.
16
16
  const { firstItemId, size = 'm' } = (0, contexts_1.useNewListContext)();
17
17
  const handleKeyDown = (e) => {
18
- // Поиск — текстовый input: гасим только Up/Down (навигация по списку), горизонтальные
18
+ // Поиск — текстовый input: перехватываются только Up/Down (навигация по списку), горизонтальные
19
19
  // стрелки оставляем каретке.
20
20
  (0, utils_1.preventScrollOnVerticalArrows)(e);
21
21
  search?.onKeyDown?.(e);
@@ -2,6 +2,6 @@
2
2
  * Отключает FLIP-анимацию перестановки после отпускания (общий контракт `SimpleItem` и `SimpleGroupBlock`).
3
3
  * Порядок применяется синхронно через `onItemsReorder`; без флага `@dnd-kit` доигрывает `transform 200ms`
4
4
  * из старого слота в новый — отпущенная строка дёргается обратно и уезжает на место. Расступание соседей
5
- * на время переноса флаг не трогает: его ведёт стратегия `SortableContext`.
5
+ * на время переноса флаг не изменяется: его ведёт стратегия `SortableContext`.
6
6
  */
7
7
  export declare function animateLayoutChanges(): boolean;
@@ -5,7 +5,7 @@ exports.animateLayoutChanges = animateLayoutChanges;
5
5
  * Отключает FLIP-анимацию перестановки после отпускания (общий контракт `SimpleItem` и `SimpleGroupBlock`).
6
6
  * Порядок применяется синхронно через `onItemsReorder`; без флага `@dnd-kit` доигрывает `transform 200ms`
7
7
  * из старого слота в новый — отпущенная строка дёргается обратно и уезжает на место. Расступание соседей
8
- * на время переноса флаг не трогает: его ведёт стратегия `SortableContext`.
8
+ * на время переноса флаг не изменяется: его ведёт стратегия `SortableContext`.
9
9
  */
10
10
  function animateLayoutChanges() {
11
11
  return false;
@@ -93,6 +93,15 @@
93
93
  .itemWrapper[data-loading] .stateLayer[data-state=emptyDarkOnAccent], .itemWrapper:active:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent], .itemWrapper[data-pressed=true]:not([data-disabled], [data-loading]) .stateLayer[data-state=emptyDarkOnAccent]{
94
94
  background:var(--sn-theme-color-material-stateLayer-darkOnAccent-pressed-filled, rgba(0, 0, 0, 0.1215686275));
95
95
  }
96
+ .itemWrapper[data-size=s]{
97
+ border-radius:var(--sn-list-anatomy-size-s-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
98
+ }
99
+ .itemWrapper[data-size=m]{
100
+ border-radius:var(--sn-list-anatomy-size-m-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
101
+ }
102
+ .itemWrapper[data-size=l]{
103
+ border-radius:var(--sn-list-anatomy-size-l-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-l, var(--sn-primitive-dimension-0, 0px)));
104
+ }
96
105
  .itemWrapper[data-disabled], .itemWrapper:disabled{
97
106
  cursor:not-allowed;
98
107
  background-color:transparent;
@@ -145,10 +154,6 @@
145
154
  padding-top:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
146
155
  padding-bottom:var(--sn-list-anatomy-size-s-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-s, var(--sn-primitive-dimension-6, 6px)));
147
156
  border-radius:var(--sn-list-anatomy-size-s-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
148
- gap:0;
149
- }
150
- .listItem[data-size=s] .groupIndicator{
151
- margin-left:var(--sn-list-anatomy-size-s-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
152
157
  }
153
158
  .listItem[data-size=m]{
154
159
  padding-left:var(--sn-list-anatomy-size-m-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-m, var(--sn-primitive-dimension-16, 16px)));
@@ -157,10 +162,6 @@
157
162
  padding-top:var(--sn-list-anatomy-size-m-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
158
163
  padding-bottom:var(--sn-list-anatomy-size-m-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-m, var(--sn-primitive-dimension-8, 8px)));
159
164
  border-radius:var(--sn-list-anatomy-size-m-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-s, var(--sn-primitive-dimension-0, 0px)));
160
- gap:0;
161
- }
162
- .listItem[data-size=m] .groupIndicator{
163
- margin-left:var(--sn-list-anatomy-size-m-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
164
165
  }
165
166
  .listItem[data-size=l]{
166
167
  padding-left:var(--sn-list-anatomy-size-l-listItem-paddingHorizontal, var(--sn-density-spacing-control-container-horizontal-l, var(--sn-primitive-dimension-20, 20px)));
@@ -169,10 +170,6 @@
169
170
  padding-top:var(--sn-list-anatomy-size-l-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
170
171
  padding-bottom:var(--sn-list-anatomy-size-l-listItem-paddingVertical, var(--sn-density-spacing-control-container-vertical-l, var(--sn-primitive-dimension-10, 10px)));
171
172
  border-radius:var(--sn-list-anatomy-size-l-listItem-borderRadius, var(--sn-brand-anatomy-radius-listItem-l, var(--sn-primitive-dimension-0, 0px)));
172
- gap:0;
173
- }
174
- .listItem[data-size=l] .groupIndicator{
175
- margin-left:var(--sn-list-anatomy-size-l-listItem-gap, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
176
173
  }
177
174
  .listItem:not([data-inactive], [data-disabled])[data-focused], .listItem:not([data-inactive], [data-disabled]):focus-visible{
178
175
  outline:var(--sn-theme-color-available-complementary, #000000) solid var(--sn-primitive-strokeWeight-strokeSemiBold, 2px);
@@ -36,7 +36,7 @@ export type BaseItem = WithSupportProps<{
36
36
  id?: ItemId;
37
37
  /** Флаг неактивности элемента */
38
38
  disabled?: boolean;
39
- /** Скрыть элемент из списка (не рендерится и выпадает из навигации) */
39
+ /** Скрыть элемент из списка (не рендерится и исключается из навигации) */
40
40
  hidden?: boolean;
41
41
  /** Ссылка на DOM-элемент айтема */
42
42
  itemRef?: RefObject<HTMLElement>;
@@ -45,7 +45,7 @@ export type BaseItem = WithSupportProps<{
45
45
  /**
46
46
  * Флаг отображения отключения реакции на любое css состояние (hover/focus и тд)
47
47
  * <br>
48
- * Так же элемент пропадает из навигации с клавиатуры, и не может быть выбран (selection)
48
+ * Также элемент исключается из навигации с клавиатуры и не может быть выбран (selection)
49
49
  */
50
50
  inactive?: boolean;
51
51
  /**
@@ -95,7 +95,7 @@ function kindFlattenItems({ items, prefix, parentId, sortable }) {
95
95
  key: itemId,
96
96
  originalId: itemId,
97
97
  id: autoId,
98
- // `inactive` элемент выпадает из клавиатурной навигации наравне с `disabled`
98
+ // `inactive` элемент исключается из клавиатурной навигации наравне с `disabled`
99
99
  // (см. JSDoc `BaseItem.inactive`). Гейтит только nav/bulk-select через
100
100
  // `extractActiveItems`; рендерный `disabled` в `flattenItems` остаётся исходным.
101
101
  disabled: item.disabled || item.inactive,
@@ -55,7 +55,7 @@ exports.ListPrivate = (0, react_1.forwardRef)(({ items, pinTop, pinBottom, onKey
55
55
  // типов (`ListProps`), здесь рантайм-зеркало на случай прямого использования `ListPrivate`.
56
56
  const virtualized = virtualizedProp && !onDragEnd;
57
57
  const sensors = (0, core_1.useSensors)((0, core_1.useSensor)(core_1.MouseSensor, draggingOptions), (0, core_1.useSensor)(core_1.TouchSensor, {}), (0, core_1.useSensor)(core_1.KeyboardSensor, { coordinateGetter: sortable_1.sortableKeyboardCoordinates }));
58
- // Id перетаскиваемой строки — для рендера её копии в `DragOverlay`. Копия живёт в портале
58
+ // Id перетаскиваемой строки — для рендера её копии в `DragOverlay`. Копия рендерится в портале
59
59
  // над страницей и не режется `overflow: hidden` контейнера `List` (сама строка на время
60
60
  // переноса уступает место — её слот пустеет). `null`, когда перетаскивание не идёт.
61
61
  const [activeDragId, setActiveDragId] = (0, react_1.useState)(null);
@@ -54,10 +54,9 @@
54
54
  flex-direction:column;
55
55
  gap:var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-gap, var(--sn-primitive-dimension-4, 4px));
56
56
  box-sizing:border-box;
57
- padding:0 var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-paddingHorizontal, var(--sn-primitive-dimension-8, 8px)) var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
57
+ padding:0 var(--sn-popupPrivate-anatomy-dropdown-header-headlineWrapper-paddingHorizontal, var(--sn-primitive-dimension-8, 8px));
58
58
  }
59
59
  .header[data-divider]{
60
- margin-bottom:var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
61
60
  padding-bottom:var(--sn-popupPrivate-anatomy-dropdown-header-gap, var(--sn-primitive-dimension-4, 4px));
62
61
  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)));
63
62
  }
@@ -23,7 +23,7 @@ type UseListItemsModelProps = {
23
23
  * Единая модель данных списка для `List` и `Droplist`: collapse-состояние,
24
24
  * плоские карты айтемов (`flattenItems` / `focusFlattenItems`) и производный
25
25
  * порядок навигации (`ids` / `expandedIds`). Оба компонента собирают одну и ту же
26
- * структуру, поэтому она живёт в одном хуке — расхождение между списком и дроплистом
26
+ * структуру, поэтому она собрана в одном хуке — расхождение между списком и дроплистом
27
27
  * физически невозможно.
28
28
  */
29
29
  export declare function useListItemsModel({ items: itemsProp, pinTop: pinTopProp, pinBottom: pinBottomProp, search, collapse, selectionMode, footerActiveElementsRefs, onItemsReorder, }: UseListItemsModelProps): {
@@ -26,7 +26,7 @@ function focusReturnTarget(el) {
26
26
  * Единая модель данных списка для `List` и `Droplist`: collapse-состояние,
27
27
  * плоские карты айтемов (`flattenItems` / `focusFlattenItems`) и производный
28
28
  * порядок навигации (`ids` / `expandedIds`). Оба компонента собирают одну и ту же
29
- * структуру, поэтому она живёт в одном хуке — расхождение между списком и дроплистом
29
+ * структуру, поэтому она собрана в одном хуке — расхождение между списком и дроплистом
30
30
  * физически невозможно.
31
31
  */
32
32
  function useListItemsModel({ items: itemsProp, pinTop: pinTopProp, pinBottom: pinBottomProp, search, collapse, selectionMode, footerActiveElementsRefs, onItemsReorder, }) {
@@ -135,7 +135,7 @@ function useNewKeyboardNavigation({ mainRef, btnRef, focusFlattenItems, keyboard
135
135
  activeItemIdRef.current = defaultActiveItemId;
136
136
  }, [defaultActiveItemId]);
137
137
  const handleListKeyDownFactory = (0, react_1.useCallback)((ids, expandedIds) => (e) => {
138
- // Стрелки навигации по списку гасим централизованно — иначе нативное поведение скроллит
138
+ // Стрелки навигации по списку перехватываются централизованно — иначе нативное поведение скроллит
139
139
  // страницу (элементы — кнопки/li, не текст, поэтому безопасны все четыре стрелки).
140
140
  (0, utils_1.preventScrollOnArrowKeys)(e);
141
141
  switch (e.key) {
@@ -71,7 +71,7 @@ function DesktopDroplist({ items: itemsProp, search, pinBottom: pinBottomProp =
71
71
  }
72
72
  }, []);
73
73
  const onKeyDown = (0, react_1.useCallback)((e, cb) => {
74
- // Up/Down открывают/закрывают дроплист — гасим их нативный скролл страницы. Только
74
+ // Up/Down открывают/закрывают дроплист — их нативный скролл страницы подавляется. Только
75
75
  // вертикальные: триггером может быть текстовое поле, где Left/Right двигают каретку.
76
76
  (0, utils_1.preventScrollOnVerticalArrows)(e);
77
77
  if (e.key === 'ArrowDown') {
@@ -23,5 +23,5 @@ function ItemContent({ truncate: truncateProp, caption, description, label, clas
23
23
  ...DEFAULT_TRUNCATE,
24
24
  ...truncateProp,
25
25
  }), [truncateProp]);
26
- return ((0, jsx_runtime_1.jsxs)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.content, className), ...(0, utils_1.extractSupportProps)(rest), "data-size": size ?? 's', "data-disabled": disabled || undefined, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.label, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate.variant, text: String(label), maxLines: truncate.label, "data-test-id": constants_1.TEST_IDS.baseItemLabel }) }), caption && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.caption, children: caption })] }), description && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.description, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { text: description, maxLines: truncate.description, "data-test-id": constants_1.TEST_IDS.baseItemDescription }) }))] }));
26
+ return ((0, jsx_runtime_1.jsx)("div", { className: (0, classnames_1.default)(styles_module_scss_1.default.textWrapper, className), ...(0, utils_1.extractSupportProps)(rest), "data-size": size ?? 's', "data-disabled": disabled || undefined, children: (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.textContent, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.headline, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.label, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate.variant, text: String(label), maxLines: truncate.label, "data-test-id": constants_1.TEST_IDS.baseItemLabel }) }), caption && (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.caption, children: caption })] }), description && ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.description, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { text: description, maxLines: truncate.description, "data-test-id": constants_1.TEST_IDS.baseItemDescription }) }))] }) }));
27
27
  }
@@ -22,23 +22,27 @@
22
22
  color:var(--sn-theme-color-available-version-textSecondary, var(--sn-brand-color-text-version-secondary, rgba(65, 66, 78, 0.8)));
23
23
  }
24
24
 
25
- .content{
25
+ .textWrapper{
26
26
  overflow:hidden;
27
27
  display:flex;
28
- flex-direction:column;
29
28
  flex-grow:1;
30
29
  flex-shrink:1;
31
30
  box-sizing:border-box;
32
31
  }
33
- .content[data-size=s]{
32
+ .textWrapper[data-size=s]{
33
+ padding-top:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px)));
34
+ padding-bottom:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px)));
35
+ }
36
+ .textWrapper[data-size=s] .textContent{
34
37
  gap:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-0, 0));
35
- padding:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-s, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
38
+ padding-right:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
39
+ padding-left:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
36
40
  }
37
- .content[data-size=s] .headline{
41
+ .textWrapper[data-size=s] .headline{
38
42
  gap:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-s, var(--sn-primitive-dimension-8, 8px)));
39
43
  min-height:var(--sn-list-anatomy-size-s-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by12, 16px));
40
44
  }
41
- .content[data-size=s] .label{
45
+ .textWrapper[data-size=s] .label{
42
46
  font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
43
47
  font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
44
48
  line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
@@ -48,7 +52,7 @@
48
52
  display:flex;
49
53
  align-items:center;
50
54
  }
51
- .content[data-size=s] .caption{
55
+ .textWrapper[data-size=s] .caption{
52
56
  font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
53
57
  font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
54
58
  line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
@@ -56,7 +60,7 @@
56
60
  letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
57
61
  paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
58
62
  }
59
- .content[data-size=s] .description{
63
+ .textWrapper[data-size=s] .description{
60
64
  font-family:var(--sn-regular-body-s-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
61
65
  font-weight:var(--sn-regular-body-s-fontWeight, var(--sn-theme-typography-fontWeight-regular-body-s, var(--sn-brand-font-fontWeight-light-regular-body-s, var(--sn-primitive-font-fontWeightValue-400, 400))));
62
66
  line-height:var(--sn-regular-body-s-lineHeight, var(--sn-density-typography-roleBody-lineHeightS, var(--sn-primitive-font-lineHeight-by14, 20px)));
@@ -64,15 +68,20 @@
64
68
  letter-spacing:var(--sn-regular-body-s-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
65
69
  paragraph-spacing:var(--sn-regular-body-s-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize12, 6px));
66
70
  }
67
- .content[data-size=m]{
71
+ .textWrapper[data-size=m]{
72
+ padding-top:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px)));
73
+ padding-bottom:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px)));
74
+ }
75
+ .textWrapper[data-size=m] .textContent{
68
76
  gap:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-0, 0));
69
- padding:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-m, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
77
+ padding-right:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
78
+ padding-left:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
70
79
  }
71
- .content[data-size=m] .headline{
80
+ .textWrapper[data-size=m] .headline{
72
81
  gap:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-m, var(--sn-primitive-dimension-8, 8px)));
73
82
  min-height:var(--sn-list-anatomy-size-m-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by14, 20px));
74
83
  }
75
- .content[data-size=m] .label{
84
+ .textWrapper[data-size=m] .label{
76
85
  font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
77
86
  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))));
78
87
  line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
@@ -82,7 +91,7 @@
82
91
  display:flex;
83
92
  align-items:center;
84
93
  }
85
- .content[data-size=m] .caption{
94
+ .textWrapper[data-size=m] .caption{
86
95
  font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
87
96
  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))));
88
97
  line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
@@ -90,7 +99,7 @@
90
99
  letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
91
100
  paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
92
101
  }
93
- .content[data-size=m] .description{
102
+ .textWrapper[data-size=m] .description{
94
103
  font-family:var(--sn-regular-body-m-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
95
104
  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))));
96
105
  line-height:var(--sn-regular-body-m-lineHeight, var(--sn-density-typography-roleBody-lineHeightM, var(--sn-primitive-font-lineHeight-by16, 24px)));
@@ -98,15 +107,20 @@
98
107
  letter-spacing:var(--sn-regular-body-m-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
99
108
  paragraph-spacing:var(--sn-regular-body-m-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize14, 7px));
100
109
  }
101
- .content[data-size=l]{
110
+ .textWrapper[data-size=l]{
111
+ padding-top:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px)));
112
+ padding-bottom:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px)));
113
+ }
114
+ .textWrapper[data-size=l] .textContent{
102
115
  gap:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-gap, var(--sn-primitive-dimension-2, 2px));
103
- padding:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px))) var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-paddingVertical, var(--sn-density-spacing-control-wrapper-vertical-l, var(--sn-primitive-dimension-8, 8px))) var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
116
+ padding-right:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
117
+ padding-left:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-paddingHorizontal, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
104
118
  }
105
- .content[data-size=l] .headline{
119
+ .textWrapper[data-size=l] .headline{
106
120
  gap:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-headline-gap, var(--sn-density-spacing-control-wrapper-horizontal-l, var(--sn-primitive-dimension-12, 12px)));
107
121
  min-height:var(--sn-list-anatomy-size-l-listItem-contentWrapper-textWrapper-textContent-headline-minHeight, var(--sn-primitive-font-lineHeight-by16, 24px));
108
122
  }
109
- .content[data-size=l] .label{
123
+ .textWrapper[data-size=l] .label{
110
124
  font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
111
125
  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))));
112
126
  line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
@@ -116,7 +130,7 @@
116
130
  display:flex;
117
131
  align-items:center;
118
132
  }
119
- .content[data-size=l] .caption{
133
+ .textWrapper[data-size=l] .caption{
120
134
  font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
121
135
  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))));
122
136
  line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
@@ -124,7 +138,7 @@
124
138
  letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
125
139
  paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
126
140
  }
127
- .content[data-size=l] .description{
141
+ .textWrapper[data-size=l] .description{
128
142
  font-family:var(--sn-regular-body-l-fontFamily, var(--sn-brand-font-fontFamily-regular-body, var(--sn-primitive-fontFamily-brandA-sans, SB Sans Interface)));
129
143
  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))));
130
144
  line-height:var(--sn-regular-body-l-lineHeight, var(--sn-density-typography-roleBody-lineHeightL, var(--sn-primitive-font-lineHeight-by20, 28px)));
@@ -132,8 +146,15 @@
132
146
  letter-spacing:var(--sn-regular-body-l-letterSpacing, var(--sn-primitive-font-letterSpacing-m, 0.1px));
133
147
  paragraph-spacing:var(--sn-regular-body-l-paragraphSpacing, var(--sn-primitive-font-paragraphSpacing-byFontSize16, 8px));
134
148
  }
135
- .content[data-disabled] .label,
136
- .content[data-disabled] .description,
137
- .content[data-disabled] .caption{
138
- color:var(--sn-theme-color-available-version-textDisabled, var(--sn-brand-color-text-version-disabled, rgba(65, 66, 78, 0.3490196078)));
149
+ .textWrapper[data-disabled]{
150
+ opacity:var(--sn-theme-effect-opacity-disabled, 0.4);
151
+ }
152
+
153
+ .textContent{
154
+ overflow:hidden;
155
+ display:flex;
156
+ flex-direction:column;
157
+ flex-grow:1;
158
+ flex-shrink:1;
159
+ box-sizing:border-box;
139
160
  }
@@ -23,14 +23,14 @@ function Separator({ label, beforeContent, truncate, divider, groupVariant = 'su
23
23
  return null;
24
24
  }
25
25
  const { onClick, checked, itemRef, label } = selectButton;
26
- return ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.selectButton, "data-size": size, "data-weight": (divider && groupVariant) || undefined, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: 'function', appearance: 'neutral', size: size, tabIndex: 0, "data-test-id": constants_1.TEST_IDS.bulkSelectButton, onClick: (e) => {
26
+ return ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.selectButton, "data-size": size, children: (0, jsx_runtime_1.jsx)(button_1.Button, { view: 'function', appearance: 'neutral', size: size, tabIndex: 0, "data-test-id": constants_1.TEST_IDS.bulkSelectButton, onClick: (e) => {
27
27
  onClick?.(e);
28
28
  e.preventDefault();
29
29
  e.stopPropagation();
30
30
  }, onFocus: utils_1.stopPropagation, innerRef: itemRef, label: label ?? (checked ? t('groupSelectButton.reset') : t('groupSelectButton.select')) }) }));
31
- }, [divider, groupVariant, selectButton, size, t]);
31
+ }, [selectButton, size, t]);
32
32
  if (label) {
33
- return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.separatorWithLabel, "data-size": size, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, style: { '--level': level }, children: [beforeContent && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.beforeContent, "aria-hidden": true, children: beforeContent })), (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.label, "data-group-variant": groupVariant, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate?.variant, text: label, maxLines: 1 }) }), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.labelEnd, children: [selectButtonJSX, divider && ((0, jsx_runtime_1.jsx)(divider_1.Divider, { className: styles_module_scss_1.default.divider, variant: groupVariant === 'subtitle' ? divider_1.VARIANT.Regular : divider_1.VARIANT.Thin }))] })] }));
33
+ return ((0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.separatorWithLabel, "data-size": size, "data-level-one": level === 1 || undefined, "data-level-more-one": level > 1 || undefined, style: { '--level': level }, children: [(0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.contentWrapper, children: [beforeContent && ((0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.centeredWrapper, "aria-hidden": true, children: beforeContent })), (0, jsx_runtime_1.jsxs)("div", { className: styles_module_scss_1.default.textWrapper, children: [(0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.textContent, children: (0, jsx_runtime_1.jsx)("span", { className: styles_module_scss_1.default.headline, "data-group-variant": groupVariant, children: (0, jsx_runtime_1.jsx)(truncate_string_1.TruncateString, { variant: truncate?.variant, text: label, maxLines: 1 }) }) }), selectButtonJSX] })] }), divider && ((0, jsx_runtime_1.jsx)(divider_1.Divider, { className: styles_module_scss_1.default.divider, variant: groupVariant === 'subtitle' ? divider_1.VARIANT.Regular : divider_1.VARIANT.Thin }))] }));
34
34
  }
35
35
  if (divider) {
36
36
  return ((0, jsx_runtime_1.jsx)("div", { className: styles_module_scss_1.default.separatorWithoutLabel, "data-size": size, children: (0, jsx_runtime_1.jsx)(divider_1.Divider, { variant: divider_1.VARIANT.Regular }) }));