@rt-tools/ui-kit-v2 0.4.0 → 0.6.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 (108) hide show
  1. package/README.md +71 -0
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +395 -188
  3. package/fesm2022/rt-tools-ui-kit-v2.mjs.map +1 -1
  4. package/package.json +1 -1
  5. package/rt-tools-ui-kit-v2-0.6.0.tgz +0 -0
  6. package/src/lib/components/aside/_rt-aside-overlay.scss +73 -71
  7. package/src/lib/components/aside/footer/rt-aside-footer.component.scss +20 -16
  8. package/src/lib/components/aside/header/rt-aside-header.component.scss +72 -70
  9. package/src/lib/components/aside/rt-aside.component.scss +107 -105
  10. package/src/lib/components/aside/unsaved-dialog/rt-aside-unsaved-dialog.component.scss +33 -31
  11. package/src/lib/components/aside-section/rt-aside-section.component.scss +27 -23
  12. package/src/lib/components/autocomplete/rt-autocomplete.component.scss +124 -118
  13. package/src/lib/components/bar-list/rt-bar-list.component.scss +85 -81
  14. package/src/lib/components/bottom-sheet/rt-bottom-sheet.component.scss +64 -57
  15. package/src/lib/components/button/rt-button.directive.scss +319 -280
  16. package/src/lib/components/calendar/rt-calendar.component.scss +106 -102
  17. package/src/lib/components/card/rt-card.component.scss +53 -45
  18. package/src/lib/components/chat/rt-chat.component.scss +312 -306
  19. package/src/lib/components/checkbox/rt-checkbox.component.scss +61 -54
  20. package/src/lib/components/collapsible-text/rt-collapsible-text.component.scss +36 -34
  21. package/src/lib/components/confirm-popover/rt-confirm-popover.component.scss +36 -30
  22. package/src/lib/components/container/CONTEXT.md +22 -0
  23. package/src/lib/components/container/rt-container.component.scss +91 -87
  24. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  25. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  26. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  27. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  28. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  29. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  30. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  31. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  32. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  33. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  34. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  35. package/src/lib/components/field/rt-field.component.scss +63 -61
  36. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  37. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  38. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  39. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  40. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  41. package/src/lib/components/header/rt-header.component.scss +61 -55
  42. package/src/lib/components/icon/rt-icon.component.scss +14 -12
  43. package/src/lib/components/icon-button/CONTEXT.md +4 -2
  44. package/src/lib/components/icon-button/rt-icon-button.component.scss +128 -112
  45. package/src/lib/components/info-item/rt-info-item.component.scss +38 -36
  46. package/src/lib/components/input/rt-input.component.scss +102 -98
  47. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  48. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  49. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  50. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  51. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  52. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  53. package/src/lib/components/message/rt-message.component.scss +53 -49
  54. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  55. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  56. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  57. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  58. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  59. package/src/lib/components/note/rt-note.component.scss +15 -11
  60. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  61. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  62. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  63. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  64. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  65. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  66. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  67. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  68. package/src/lib/components/select/rt-select.component.scss +146 -138
  69. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  70. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  71. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  72. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  73. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  74. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  75. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +34 -30
  76. package/src/lib/components/table/rt-table.component.scss +260 -252
  77. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  78. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  79. package/src/lib/components/table/sort-header/CONTEXT.md +40 -0
  80. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  81. package/src/lib/components/tabs/CONTEXT.md +5 -0
  82. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  83. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  84. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  85. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  86. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  87. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  88. package/src/lib/components/toast/CONTEXT.md +8 -0
  89. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  90. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  91. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  92. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  93. package/src/lib/components/toolbar/rt-toolbar.component.scss +56 -54
  94. package/src/lib/components/tooltip/rt-tooltip.component.scss +20 -15
  95. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  96. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  97. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  98. package/src/styles/_index.scss +4 -0
  99. package/src/styles/_layers.scss +22 -0
  100. package/src/styles/_login.scss +87 -85
  101. package/src/styles/_mixins.scss +1 -1
  102. package/src/styles/_primitives.scss +126 -67
  103. package/src/styles/_scrollbar.scss +21 -19
  104. package/src/styles/_semantic.scss +140 -56
  105. package/src/styles/_theme-dark.scss +60 -27
  106. package/styles/tokens.css +628 -408
  107. package/types/rt-tools-ui-kit-v2.d.ts +9 -16
  108. package/rt-tools-ui-kit-v2-0.4.0.tgz +0 -0
@@ -1,39 +1,41 @@
1
- /* rt-aside-unsaved-dialog — окно о несохранённых правках при закрытии панели.
2
- ViewEncapsulation.None — селекторы префиксованы `.rt-aside-unsaved-dialog`.
3
- Рамку (фон/радиус/тень) даёт rt-dialog; здесь — только раскладка контента. */
1
+ @layer rt-kit.components {
2
+ /* rt-aside-unsaved-dialog — окно о несохранённых правках при закрытии панели.
3
+ ViewEncapsulation.None — селекторы префиксованы `.rt-aside-unsaved-dialog`.
4
+ Рамку (фон/радиус/тень) даёт rt-dialog; здесь — только раскладка контента. */
4
5
 
5
- .rt-aside-unsaved-dialog {
6
- display: flex;
7
- box-sizing: border-box;
8
- flex-direction: column;
9
- padding: var(--rt-space-xl);
10
- gap: var(--rt-space-lg);
11
-
12
- &__text {
6
+ .rt-aside-unsaved-dialog {
13
7
  display: flex;
8
+ box-sizing: border-box;
14
9
  flex-direction: column;
15
- gap: var(--rt-space-sm);
16
- }
10
+ padding: var(--rt-space-xl);
11
+ gap: var(--rt-space-lg);
17
12
 
18
- &__title {
19
- margin: 0;
20
- color: var(--rt-color-text-primary);
21
- font-size: var(--rt-text-md);
22
- font-weight: var(--rt-font-weight-bold);
23
- }
13
+ &__text {
14
+ display: flex;
15
+ flex-direction: column;
16
+ gap: var(--rt-space-sm);
17
+ }
24
18
 
25
- &__message {
26
- margin: 0;
27
- color: var(--rt-color-text-secondary);
28
- font-size: var(--rt-text-sm);
29
- }
19
+ &__title {
20
+ margin: 0;
21
+ color: var(--rt-color-text-primary);
22
+ font-size: var(--rt-text-md);
23
+ font-weight: var(--rt-font-weight-bold);
24
+ }
30
25
 
31
- /* Три кнопки идут в одну строку, а когда она их не вмещает — переносятся и
32
- выравниваются по правому краю, сохраняя порядок. */
33
- &__footer {
34
- display: flex;
35
- flex-wrap: wrap;
36
- justify-content: flex-end;
37
- gap: var(--rt-space-sm);
26
+ &__message {
27
+ margin: 0;
28
+ color: var(--rt-color-text-muted);
29
+ font-size: var(--rt-text-sm);
30
+ }
31
+
32
+ /* Три кнопки идут в одну строку, а когда она их не вмещает — переносятся и
33
+ выравниваются по правому краю, сохраняя порядок. */
34
+ &__footer {
35
+ display: flex;
36
+ flex-wrap: wrap;
37
+ justify-content: flex-end;
38
+ gap: var(--rt-space-sm);
39
+ }
38
40
  }
39
41
  }
@@ -1,30 +1,34 @@
1
- /* rt-aside-section — смысловая секция асайда (ViewEncapsulation.None).
2
- Селектор bare `.rt-aside-section` (класс на host) — :host в None light-DOM не матчит.
3
- Соседние секции разделяются верхней границей через adjacent-sibling правило. */
1
+ @layer rt-kit.components {
2
+ /* rt-aside-section — смысловая секция асайда (ViewEncapsulation.None).
3
+ Селектор bare `.rt-aside-section` (класс на host) — :host в None light-DOM не матчит.
4
+ Соседние секции разделяются верхней границей через adjacent-sibling правило. */
4
5
 
5
- .rt-aside-section {
6
- display: flex;
7
- flex-direction: column;
8
- gap: var(--rt-space-md);
6
+ .rt-aside-section {
7
+ --rt-aside-section-border-width: var(--rt-border-width-thin);
9
8
 
10
- /* Разделитель отбит от соседей одинаково: сверху его отбивает зазор зоны
11
- содержимого, снизу — тот же токен. */
12
- & + & {
13
- padding-top: var(--rt-aside-content-gap);
14
- border-top: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
15
- }
16
-
17
- &__heading {
18
- margin: 0;
19
- color: var(--rt-color-text-primary);
20
- font-size: var(--rt-text-md);
21
- font-weight: var(--rt-font-weight-semibold);
22
- line-height: var(--rt-leading-snug);
23
- }
24
-
25
- &__body {
26
9
  display: flex;
27
10
  flex-direction: column;
28
11
  gap: var(--rt-space-md);
12
+
13
+ /* Разделитель отбит от соседей одинаково: сверху его отбивает зазор зоны
14
+ содержимого, снизу — тот же токен. */
15
+ & + & {
16
+ padding-top: var(--rt-aside-content-gap);
17
+ border-top: var(--rt-aside-section-border-width) solid var(--rt-color-border-subtle);
18
+ }
19
+
20
+ &__heading {
21
+ margin: 0;
22
+ color: var(--rt-color-text-primary);
23
+ font-size: var(--rt-text-md);
24
+ font-weight: var(--rt-font-weight-semibold);
25
+ line-height: var(--rt-leading-snug);
26
+ }
27
+
28
+ &__body {
29
+ display: flex;
30
+ flex-direction: column;
31
+ gap: var(--rt-space-md);
32
+ }
29
33
  }
30
34
  }
@@ -1,143 +1,149 @@
1
- .rt-autocomplete {
2
- position: relative;
3
- display: block;
4
- width: 100%;
5
-
6
- /* Поле-контейнер: рамка/фон/паддинги/flex — как у rt-input, чтобы префикс-
7
- иконка и крестик были flex-child'ами с одинаковыми (через gap) отступами. */
8
- &__field {
9
- display: inline-flex;
1
+ @layer rt-kit.components {
2
+ .rt-autocomplete {
3
+ position: relative;
4
+ display: block;
10
5
  width: 100%;
11
- min-height: var(--rt-input-height);
12
- box-sizing: border-box;
13
- align-items: center;
14
- padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
15
- border: var(--rt-input-border-width) solid var(--rt-input-color-border);
16
- border-radius: var(--rt-input-radius);
17
- background-color: var(--rt-input-color-bg);
18
- color: var(--rt-input-color-text);
19
- cursor: text;
20
- font-size: var(--rt-input-font-size);
21
- gap: var(--rt-space-sm);
22
- line-height: var(--rt-input-line-height);
23
- transition: var(--rt-input-transition);
24
-
25
- &:focus-within {
26
- border-color: var(--rt-input-color-border-focus);
27
- box-shadow: var(--rt-input-focus-shadow);
28
- outline: 2px solid transparent;
29
- outline-offset: var(--rt-input-focus-outline-offset);
30
- }
31
- }
32
-
33
- /* bordered=false: снимаем только resting-рамку; --open/--invalid ниже по
34
- source-order перекрывают её своей рамкой. */
35
- &--borderless &__field {
36
- border-color: transparent;
37
- }
38
-
39
- &--open &__field {
40
- border-color: var(--rt-input-color-border-focus);
41
- }
42
6
 
43
- &--invalid &__field {
44
- border-color: var(--rt-input-color-border-error);
7
+ /* Поле-контейнер: рамка/фон/паддинги/flex — как у rt-input, чтобы префикс-
8
+ иконка и крестик были flex-child'ами с одинаковыми (через gap) отступами. */
9
+ &__field {
10
+ display: inline-flex;
11
+ width: 100%;
12
+ min-height: var(--rt-input-height);
13
+ box-sizing: border-box;
14
+ align-items: center;
15
+ padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
16
+ border: var(--rt-input-border-width) solid var(--rt-input-color-border);
17
+ border-radius: var(--rt-input-radius);
18
+ background-color: var(--rt-input-color-bg);
19
+ color: var(--rt-input-color-text);
20
+ cursor: text;
21
+ font-size: var(--rt-input-font-size);
22
+ gap: var(--rt-space-sm);
23
+ line-height: var(--rt-input-line-height);
24
+ transition: var(--rt-input-transition);
25
+
26
+ &:focus-within {
27
+ border-color: var(--rt-input-color-border-focus);
28
+ box-shadow: var(--rt-input-focus-shadow);
29
+ outline: 2px solid transparent;
30
+ outline-offset: var(--rt-input-focus-outline-offset);
31
+ }
32
+ }
45
33
 
46
- &:focus-within {
47
- box-shadow: var(--rt-input-focus-shadow-error);
34
+ /* bordered=false: снимаем только resting-рамку; --open/--invalid ниже по
35
+ source-order перекрывают её своей рамкой. */
36
+ &--borderless &__field {
37
+ border-color: transparent;
48
38
  }
49
- }
50
39
 
51
- &--disabled &__field {
52
- cursor: not-allowed;
53
- opacity: var(--rt-input-disabled-opacity);
54
- }
40
+ &--open &__field {
41
+ border-color: var(--rt-input-color-border-focus);
42
+ }
55
43
 
56
- &--size--sm &__field {
57
- min-height: var(--rt-input-height-sm);
58
- }
44
+ &--invalid &__field {
45
+ border-color: var(--rt-input-color-border-error);
59
46
 
60
- &--size--lg &__field {
61
- min-height: var(--rt-input-height-lg);
62
- }
47
+ &:focus-within {
48
+ box-shadow: var(--rt-input-focus-shadow-error);
49
+ }
50
+ }
63
51
 
64
- /* Read-only: поле-контейнер скрыт (остаётся в DOM ради viewChild.required
65
- popover'а), значение показывает плоский текст __readonly. */
66
- &--readonly &__field {
67
- display: none;
68
- }
52
+ &--disabled &__field {
53
+ cursor: not-allowed;
54
+ opacity: var(--rt-input-disabled-opacity);
55
+ }
69
56
 
70
- &__readonly {
71
- display: inline-flex;
72
- min-height: var(--rt-input-height);
73
- align-items: center;
74
- color: var(--rt-field-value-color);
75
- font-size: var(--rt-field-value-font-size);
57
+ &--size--sm &__field {
58
+ min-height: var(--rt-input-height-sm);
59
+ }
76
60
 
77
- &--empty {
78
- color: var(--rt-field-value-empty-color);
61
+ &--size--lg &__field {
62
+ min-height: var(--rt-input-height-lg);
79
63
  }
80
- }
81
64
 
82
- &__input {
83
- min-width: 0;
84
- flex: 1 1 auto;
85
- padding: 0;
86
- border: none;
87
- background: transparent;
88
- color: inherit;
65
+ /* Read-only: поле-контейнер скрыт (остаётся в DOM ради viewChild.required
66
+ popover'а), значение показывает плоский текст __readonly. */
67
+ &--readonly &__field {
68
+ display: none;
69
+ }
89
70
 
90
- /* Наследуем шрифт от __field, иначе нативный <input> берёт UA-шрифт. */
91
- font: inherit;
92
- outline: none;
71
+ &__readonly {
72
+ display: inline-flex;
73
+ min-height: var(--rt-input-height);
74
+ align-items: center;
75
+ color: var(--rt-field-value-color);
76
+ font-size: var(--rt-field-value-font-size);
93
77
 
94
- &::placeholder {
95
- color: var(--rt-input-color-text-placeholder);
96
- opacity: 1;
78
+ &--empty {
79
+ color: var(--rt-field-value-empty-color);
80
+ }
97
81
  }
98
82
 
99
- &:disabled {
100
- cursor: not-allowed;
83
+ &__input {
84
+ min-width: 0;
85
+ flex: 1 1 auto;
86
+ padding: 0;
87
+ border: none;
88
+ background: transparent;
89
+ color: inherit;
90
+
91
+ /* Наследуем шрифт от __field, иначе нативный <input> берёт UA-шрифт. */
92
+ font: inherit;
93
+ outline: none;
94
+
95
+ &::placeholder {
96
+ color: var(--rt-input-color-text-placeholder);
97
+ opacity: 1;
98
+ }
99
+
100
+ &:disabled {
101
+ cursor: not-allowed;
102
+ }
101
103
  }
102
- }
103
104
 
104
- &__icon-left,
105
- &__clear {
106
- flex-shrink: 0;
107
- }
105
+ &__icon-left,
106
+ &__clear {
107
+ flex-shrink: 0;
108
+ }
108
109
 
109
- /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK.
110
- width:100% — заполнить overlay-pane (CDK ставит pane = ширине trigger'а
111
- через rtPopoverWidth="trigger"; flex-pane сам не растягивает контент). */
112
- &__panel {
113
- width: 100%;
114
- max-height: var(--rt-input-panel-max-height);
115
- box-sizing: border-box;
116
- padding: var(--rt-space-2xs) 0;
117
- border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
118
- border-radius: var(--rt-input-radius);
119
- margin: 0;
120
- background-color: var(--rt-color-bg-surface);
121
- box-shadow: var(--rt-shadow-md);
122
- list-style: none;
123
- overflow-y: auto;
124
- }
110
+ /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK.
111
+ width:100% — заполнить overlay-pane (CDK ставит pane = ширине trigger'а
112
+ через rtPopoverWidth="trigger"; flex-pane сам не растягивает контент). */
113
+ &__panel {
114
+ /* Панель рисуется в CDK Overlay, вне поддерева блока: свойство
115
+ объявляется на ней самой — с корня блока оно бы не докатилось. */
116
+ --rt-autocomplete-panel-shadow: var(--rt-shadow-md);
117
+
118
+ width: 100%;
119
+ max-height: var(--rt-input-panel-max-height);
120
+ box-sizing: border-box;
121
+ padding: var(--rt-space-2xs) 0;
122
+ border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
123
+ border-radius: var(--rt-input-radius);
124
+ margin: 0;
125
+ background-color: var(--rt-color-bg-surface);
126
+ box-shadow: var(--rt-autocomplete-panel-shadow);
127
+ list-style: none;
128
+ overflow-y: auto;
129
+ }
125
130
 
126
- &__option {
127
- padding: var(--rt-space-sm) var(--rt-space-md);
128
- color: var(--rt-color-text-primary);
129
- cursor: pointer;
130
- font-size: var(--rt-input-font-size);
131
+ &__option {
132
+ padding: var(--rt-space-sm) var(--rt-space-md);
133
+ color: var(--rt-color-text-primary);
134
+ cursor: pointer;
135
+ font-size: var(--rt-input-font-size);
131
136
 
132
- &:hover,
133
- &--active {
134
- background-color: var(--rt-color-bg-hover);
137
+ &:hover,
138
+ &--active {
139
+ background-color: var(--rt-color-bg-hover);
140
+ }
135
141
  }
136
- }
137
142
 
138
- &__empty {
139
- padding: var(--rt-space-sm) var(--rt-space-md);
140
- color: var(--rt-input-color-text-placeholder);
141
- font-style: italic;
143
+ &__empty {
144
+ padding: var(--rt-space-sm) var(--rt-space-md);
145
+ color: var(--rt-input-color-text-placeholder);
146
+ font-style: italic;
147
+ }
142
148
  }
143
149
  }
@@ -1,98 +1,102 @@
1
- /* rt-bar-list — топ-N со шкалой доли в common/ui. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс `.rt-bar-list` висит
3
- и на `<rt-bar-list>`, и на корне шаблона, поэтому правила блока вложены в хост —
4
- так они достаются только корню шаблона. */
1
+ @layer rt-kit.components {
2
+ /* rt-bar-list — топ-N со шкалой доли в common/ui. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс `.rt-bar-list` висит
4
+ и на `<rt-bar-list>`, и на корне шаблона, поэтому правила блока вложены в хост —
5
+ так они достаются только корню шаблона. */
5
6
 
6
- rt-bar-list {
7
- display: block;
7
+ rt-bar-list {
8
+ display: block;
8
9
 
9
- .rt-bar-list {
10
- display: flex;
11
- flex-direction: column;
12
- gap: var(--rt-space-2);
10
+ .rt-bar-list {
11
+ --rt-bar-list-bar-radius: var(--rt-radius-sm);
13
12
 
14
- &__title {
15
- margin: 0;
16
- color: var(--rt-color-text-primary);
17
- font-size: var(--rt-text-sm);
18
- font-weight: var(--rt-font-weight-semibold);
19
- }
20
-
21
- &__rows {
22
13
  display: flex;
23
14
  flex-direction: column;
24
- padding: 0;
25
- margin: 0;
26
- gap: var(--rt-space-5);
27
- list-style: none;
28
- }
15
+ gap: var(--rt-space-2);
29
16
 
30
- &__row {
31
- display: flex;
32
- min-width: 0;
33
- flex-direction: column;
34
- gap: var(--rt-space-1-5);
35
- }
17
+ &__title {
18
+ margin: 0;
19
+ color: var(--rt-color-text-primary);
20
+ font-size: var(--rt-text-sm);
21
+ font-weight: var(--rt-font-weight-semibold);
22
+ }
36
23
 
37
- &__row-head {
38
- display: flex;
39
- align-items: baseline;
40
- justify-content: space-between;
41
- font-size: var(--rt-text-md);
42
- font-weight: var(--rt-font-weight-semibold);
43
- gap: var(--rt-space-3);
44
- line-height: var(--rt-leading-tight);
45
- }
24
+ &__rows {
25
+ display: flex;
26
+ flex-direction: column;
27
+ padding: 0;
28
+ margin: 0;
29
+ gap: var(--rt-space-5);
30
+ list-style: none;
31
+ }
46
32
 
47
- &__row-title {
48
- overflow: hidden;
49
- color: var(--rt-color-text-primary);
50
- text-overflow: ellipsis;
51
- white-space: nowrap;
52
- }
33
+ &__row {
34
+ display: flex;
35
+ min-width: 0;
36
+ flex-direction: column;
37
+ gap: var(--rt-space-2);
38
+ }
53
39
 
54
- &__row-value {
55
- flex: 0 0 auto;
56
- color: var(--rt-color-text-primary);
57
- }
40
+ &__row-head {
41
+ display: flex;
42
+ align-items: baseline;
43
+ justify-content: space-between;
44
+ font-size: var(--rt-text-md);
45
+ font-weight: var(--rt-font-weight-semibold);
46
+ gap: var(--rt-space-4);
47
+ line-height: var(--rt-leading-tight);
48
+ }
58
49
 
59
- &__row-meta {
60
- color: var(--rt-color-text-muted);
61
- font-size: var(--rt-text-xs);
62
- line-height: var(--rt-leading-none);
63
- }
50
+ &__row-title {
51
+ overflow: hidden;
52
+ color: var(--rt-color-text-primary);
53
+ text-overflow: ellipsis;
54
+ white-space: nowrap;
55
+ }
64
56
 
65
- &__track {
66
- display: block;
67
- height: 6px;
68
- border-radius: var(--rt-radius-sm);
69
- background: var(--rt-color-bg-surface-subtle);
70
- }
57
+ &__row-value {
58
+ flex: 0 0 auto;
59
+ color: var(--rt-color-text-primary);
60
+ }
71
61
 
72
- &__fill {
73
- display: block;
74
- min-width: 2px;
75
- height: 100%;
76
- border-radius: var(--rt-radius-sm);
77
- background: var(--rt-color-action-primary);
78
- }
62
+ &__row-meta {
63
+ color: var(--rt-color-text-muted);
64
+ font-size: var(--rt-text-xs);
65
+ line-height: var(--rt-leading-none);
66
+ }
79
67
 
80
- /* Пустое состояние центрируется в свободном месте панели: список
81
- короче панели, и текст, прижатый к заголовку, читался бы как сбой. */
82
- &__empty {
83
- display: flex;
84
- flex: 1;
85
- flex-direction: column;
86
- align-items: center;
87
- justify-content: center;
88
- padding: var(--rt-space-lg) 0;
89
- gap: var(--rt-space-2-5);
90
- }
68
+ &__track {
69
+ display: block;
70
+ height: 6px;
71
+ border-radius: var(--rt-bar-list-bar-radius);
72
+ background: var(--rt-color-bg-surface-subtle);
73
+ }
74
+
75
+ &__fill {
76
+ display: block;
77
+ min-width: 2px;
78
+ height: 100%;
79
+ border-radius: var(--rt-bar-list-bar-radius);
80
+ background: var(--rt-color-action-primary);
81
+ }
82
+
83
+ /* Пустое состояние центрируется в свободном месте панели: список
84
+ короче панели, и текст, прижатый к заголовку, читался бы как сбой. */
85
+ &__empty {
86
+ display: flex;
87
+ flex: 1;
88
+ flex-direction: column;
89
+ align-items: center;
90
+ justify-content: center;
91
+ padding: var(--rt-space-lg) 0;
92
+ gap: var(--rt-space-2);
93
+ }
91
94
 
92
- &__empty-text {
93
- margin: 0;
94
- color: var(--rt-color-text-muted);
95
- font-size: var(--rt-text-sm);
95
+ &__empty-text {
96
+ margin: 0;
97
+ color: var(--rt-color-text-muted);
98
+ font-size: var(--rt-text-sm);
99
+ }
96
100
  }
97
101
  }
98
102
  }