@rt-tools/ui-kit-v2 0.5.0 → 0.7.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 (111) hide show
  1. package/README.md +87 -7
  2. package/fesm2022/rt-tools-ui-kit-v2.mjs +1929 -994
  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.7.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/rt-container.component.scss +91 -87
  23. package/src/lib/components/counter/rt-counter.component.scss +14 -12
  24. package/src/lib/components/counter-row/rt-counter-row.component.scss +31 -27
  25. package/src/lib/components/date-picker/rt-date-picker.component.scss +73 -71
  26. package/src/lib/components/delta-view/rt-delta-view.component.scss +27 -25
  27. package/src/lib/components/detail-list/rt-detail-list.component.scss +8 -6
  28. package/src/lib/components/detail-list/rt-detail-row.component.scss +18 -16
  29. package/src/lib/components/dialog/footer/rt-dialog-footer.component.scss +19 -17
  30. package/src/lib/components/dialog/header/rt-dialog-header.component.scss +27 -25
  31. package/src/lib/components/dialog/rt-dialog.component.scss +59 -56
  32. package/src/lib/components/download-link/rt-download-link.component.scss +32 -27
  33. package/src/lib/components/empty-state/rt-empty-state.component.scss +50 -46
  34. package/src/lib/components/field/rt-field.component.scss +63 -61
  35. package/src/lib/components/file-card/rt-file-card.component.scss +84 -78
  36. package/src/lib/components/file-drop/rt-file-drop.component.scss +83 -77
  37. package/src/lib/components/file-input/rt-file-input.component.scss +20 -18
  38. package/src/lib/components/file-list/rt-file-list.component.scss +9 -7
  39. package/src/lib/components/filter-control/rt-filter-control.component.scss +16 -14
  40. package/src/lib/components/header/rt-header.component.scss +61 -55
  41. package/src/lib/components/icon/CONTEXT.md +16 -10
  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/CONTEXT.md +9 -7
  47. package/src/lib/components/input/rt-input.component.scss +102 -98
  48. package/src/lib/components/input-number/rt-input-number.component.scss +84 -82
  49. package/src/lib/components/live-badge/rt-live-badge.component.scss +27 -23
  50. package/src/lib/components/logo/rt-logo.component.scss +54 -52
  51. package/src/lib/components/markdown-text/CONTEXT.md +40 -0
  52. package/src/lib/components/markdown-text/rt-markdown-text.component.scss +130 -0
  53. package/src/lib/components/menu/rt-menu-confirm-dialog.component.scss +30 -28
  54. package/src/lib/components/menu/rt-menu-item.component.scss +47 -42
  55. package/src/lib/components/menu/rt-menu.component.scss +23 -15
  56. package/src/lib/components/message/rt-message.component.scss +53 -49
  57. package/src/lib/components/message-composer/CONTEXT.md +1 -1
  58. package/src/lib/components/message-composer/rt-message-composer.component.scss +55 -49
  59. package/src/lib/components/money-list/rt-money-list.component.scss +13 -9
  60. package/src/lib/components/money-list/rt-money-row.component.scss +23 -19
  61. package/src/lib/components/multiselect/rt-multiselect.component.scss +169 -161
  62. package/src/lib/components/night-grid/rt-night-grid.component.scss +47 -42
  63. package/src/lib/components/note/rt-note.component.scss +15 -11
  64. package/src/lib/components/notifications-bell/rt-notifications-bell.component.scss +34 -27
  65. package/src/lib/components/page-header/rt-page-header-mobile.scss +142 -134
  66. package/src/lib/components/page-header/rt-page-header-submenu.scss +130 -123
  67. package/src/lib/components/page-header/rt-page-header.component.scss +221 -210
  68. package/src/lib/components/pagination/rt-pagination.component.scss +88 -81
  69. package/src/lib/components/photo-viewer/rt-photo-viewer.component.scss +109 -105
  70. package/src/lib/components/rich-editor/CONTEXT.md +1 -1
  71. package/src/lib/components/rich-editor/rt-rich-editor.component.scss +63 -59
  72. package/src/lib/components/section-nav/rt-section-nav.component.scss +53 -47
  73. package/src/lib/components/select/rt-select.component.scss +146 -138
  74. package/src/lib/components/skeleton/rt-skeleton.component.scss +50 -41
  75. package/src/lib/components/skeleton-wrapper/rt-skeleton-wrapper.component.scss +8 -6
  76. package/src/lib/components/spinner/rt-spinner.component.scss +35 -32
  77. package/src/lib/components/split-button/rt-split-button.component.scss +74 -62
  78. package/src/lib/components/stat-tile/rt-stat-tile.component.scss +95 -91
  79. package/src/lib/components/stepper/rt-stepper.component.scss +107 -101
  80. package/src/lib/components/table/copy-cell/rt-copy-cell.component.scss +39 -30
  81. package/src/lib/components/table/rt-table.component.scss +260 -252
  82. package/src/lib/components/table/settings-aside/rt-table-settings-aside.component.scss +7 -5
  83. package/src/lib/components/table/settings-panel/rt-table-settings-panel.component.scss +71 -61
  84. package/src/lib/components/table/sort-header/rt-table-sort-header.component.scss +31 -29
  85. package/src/lib/components/tabs/rt-tabs.component.scss +184 -175
  86. package/src/lib/components/tag/rt-tag.component.scss +97 -92
  87. package/src/lib/components/textarea/rt-textarea.component.scss +62 -60
  88. package/src/lib/components/theme-toggle/rt-theme-toggle.component.scss +7 -5
  89. package/src/lib/components/thread-list/rt-thread-list.component.scss +221 -212
  90. package/src/lib/components/timeline/rt-timeline.component.scss +82 -76
  91. package/src/lib/components/toast/rt-toast.component.scss +169 -160
  92. package/src/lib/components/toast/rt-toaster.component.scss +37 -35
  93. package/src/lib/components/toggle-button-group/rt-toggle-button-group.component.scss +129 -122
  94. package/src/lib/components/toggle-switch/rt-toggle-switch.component.scss +97 -91
  95. package/src/lib/components/toolbar/rt-toolbar.component.scss +63 -54
  96. package/src/lib/components/tooltip/rt-tooltip.component.scss +24 -15
  97. package/src/lib/components/welcome-dialog/rt-welcome-dialog.component.scss +46 -44
  98. package/src/lib/components/workspace/rt-workspace.component.scss +139 -131
  99. package/src/lib/components/workspace-details/rt-workspace-details.component.scss +105 -101
  100. package/src/styles/_index.scss +11 -0
  101. package/src/styles/_layers.scss +22 -0
  102. package/src/styles/_login.scss +87 -85
  103. package/src/styles/_mixins.scss +1 -1
  104. package/src/styles/_primitives.scss +138 -66
  105. package/src/styles/_scrollbar.scss +21 -19
  106. package/src/styles/_semantic.scss +155 -62
  107. package/src/styles/_theme-dark-rules.scss +23 -0
  108. package/src/styles/_theme-dark.scss +61 -42
  109. package/styles/tokens.css +754 -418
  110. package/types/rt-tools-ui-kit-v2.d.ts +292 -103
  111. package/rt-tools-ui-kit-v2-0.5.0.tgz +0 -0
@@ -1,248 +1,257 @@
1
- .rt-thread-list {
2
- display: flex;
3
- flex: 1 1 auto;
4
- flex-direction: column;
5
- min-block-size: 0;
6
-
7
- // Фикс-высота 56px держит верхнюю «полку» списка на одном бейзлайне с хедером
8
- // чата (rt-toolbar dense) и хедером колонки деталей — иначе низы трёх колонок
9
- // расходятся и верхний край воркспейса читается рваным.
10
- &__head {
11
- display: flex;
12
- flex: 0 0 auto;
13
- align-items: center;
14
- block-size: 56px;
15
- border-block-end: var(--rt-border-width-thin) solid var(--rt-color-border-strong);
16
- gap: var(--rt-space-2);
17
- padding-inline: var(--rt-space-4);
18
- }
19
-
20
- &__search {
21
- flex: 1 1 auto;
22
- max-inline-size: 400px;
23
- min-inline-size: 0;
24
- }
1
+ @layer rt-kit.components {
2
+ .rt-thread-list {
3
+ --rt-thread-list-border-width: var(--rt-border-width-thin);
4
+ --rt-thread-list-card-radius: var(--rt-radius-lg);
5
+ --rt-thread-list-tag-radius: var(--rt-radius-sm);
6
+ --rt-thread-list-dot-radius: var(--rt-radius-full);
7
+ --rt-thread-list-avatar-radius: var(--rt-radius-full);
8
+ --rt-thread-list-line-radius: var(--rt-radius-full);
25
9
 
26
- &__filter-trigger {
27
- flex: 0 0 auto;
28
- }
29
-
30
- &__filters-panel {
31
- display: flex;
32
- flex-direction: column;
33
- padding: var(--rt-space-3);
34
- gap: var(--rt-space-2);
35
- min-inline-size: 220px;
36
- }
37
-
38
- &__rows {
39
10
  display: flex;
40
11
  flex: 1 1 auto;
41
12
  flex-direction: column;
42
13
  min-block-size: 0;
43
- overflow-y: auto;
44
- }
45
14
 
46
- &__row {
47
- display: flex;
48
- align-items: center;
49
- justify-content: space-between;
50
- padding: var(--rt-space-2-5) var(--rt-space-4);
51
- border: none;
52
- background: none;
53
-
54
- // Прозрачная левая полоса зарезервирована на всех строках, чтобы окраска
55
- // у выбранной не сдвигала контент.
56
- border-inline-start: 3px solid transparent;
57
- cursor: pointer;
58
-
59
- // `<button>` не наследует шрифт из UA-стилей — без этого строки списка
60
- // рендерятся системным Arial ~13.33px вместо Montserrat 14px, как везде.
61
- font-family: inherit;
62
- font-size: var(--rt-text-sm);
63
- gap: var(--rt-space-3);
64
- inline-size: 100%;
65
- text-align: start;
66
-
67
- &:hover {
68
- background: var(--rt-color-bg-subtle);
69
- }
70
-
71
- // Выбранная строка: брендовый фон + акцентная левая полоса. Раньше делила
72
- // `--rt-color-bg-subtle` с :hover — выбор был неотличим от наведения.
73
- &--active,
74
- &--active:hover {
75
- background: var(--rt-color-state-info-bg);
76
- border-inline-start-color: var(--rt-color-action-primary);
77
- }
78
-
79
- // Непрочитанное видно независимо от шаблона строки: жирный заголовок
80
- // работает только со штатной разметкой, а точку у левого края и более
81
- // плотный фон получает любой потребитель, включая собственные шаблоны.
82
- &--unread {
83
- position: relative;
84
- background: var(--rt-color-bg-subtle);
85
- border-inline-start-color: var(--rt-color-action-primary);
86
-
87
- .rt-thread-list__row-title {
88
- font-weight: var(--rt-font-weight-semibold);
89
- }
15
+ // Фикс-высота 56px держит верхнюю «полку» списка на одном бейзлайне с хедером
16
+ // чата (rt-toolbar dense) и хедером колонки деталей — иначе низы трёх колонок
17
+ // расходятся и верхний край воркспейса читается рваным.
18
+ &__head {
19
+ display: flex;
20
+ flex: 0 0 auto;
21
+ align-items: center;
22
+ block-size: 56px;
23
+ border-block-end: var(--rt-thread-list-border-width) solid var(--rt-color-border-strong);
24
+ gap: var(--rt-space-2);
25
+ padding-inline: var(--rt-space-4);
26
+ }
90
27
 
91
- &:before {
92
- position: absolute;
93
- border-radius: var(--rt-radius-full);
94
- background: var(--rt-color-action-primary);
95
- block-size: var(--rt-space-1-5);
96
- content: '';
97
- inline-size: var(--rt-space-1-5);
98
- inset-block-start: 50%;
99
- inset-inline-start: var(--rt-space-1-5);
100
- transform: translateY(-50%);
101
- }
28
+ &__search {
29
+ flex: 1 1 auto;
30
+ max-inline-size: 400px;
31
+ min-inline-size: 0;
102
32
  }
103
33
 
104
- // Выбранная переписка важнее непрочитанной: иначе открытый тред с новым
105
- // сообщением сливается с остальными непрочитанными в списке.
106
- &--active,
107
- &--active:hover {
108
- background: var(--rt-color-state-info-bg);
34
+ &__filter-trigger {
35
+ flex: 0 0 auto;
109
36
  }
110
37
 
111
- &--overdue {
112
- .rt-thread-list__row-time {
113
- color: var(--rt-color-state-error-text);
114
- }
38
+ &__filters-panel {
39
+ display: flex;
40
+ flex-direction: column;
41
+ padding: var(--rt-space-4);
42
+ gap: var(--rt-space-2);
43
+ min-inline-size: 220px;
115
44
  }
116
- }
117
45
 
118
- &__row-body {
119
- display: flex;
120
- flex-direction: column;
121
- gap: var(--rt-space-0-5);
122
- min-inline-size: 0;
123
- }
46
+ &__rows {
47
+ display: flex;
48
+ flex: 1 1 auto;
49
+ flex-direction: column;
50
+ min-block-size: 0;
51
+ overflow-y: auto;
52
+ }
124
53
 
125
- &__row-title {
126
- overflow: hidden;
127
- color: var(--rt-color-text-primary);
128
- text-overflow: ellipsis;
129
- white-space: nowrap;
130
- }
54
+ &__row {
55
+ display: flex;
56
+ align-items: center;
57
+ justify-content: space-between;
58
+ padding: var(--rt-space-2) var(--rt-space-4);
59
+ border: none;
60
+ background: none;
61
+
62
+ // Прозрачная левая полоса зарезервирована на всех строках, чтобы окраска
63
+ // у выбранной не сдвигала контент.
64
+ border-inline-start: 3px solid transparent;
65
+ cursor: pointer;
66
+
67
+ // `<button>` не наследует шрифт из UA-стилей — без этого строки списка
68
+ // рендерятся системным Arial ~13.33px вместо Montserrat 14px, как везде.
69
+ font-family: inherit;
70
+ font-size: var(--rt-text-sm);
71
+ gap: var(--rt-space-4);
72
+ inline-size: 100%;
73
+ text-align: start;
74
+
75
+ &:hover {
76
+ background: var(--rt-color-bg-subtle);
77
+ }
131
78
 
132
- &__row-id {
133
- color: var(--rt-color-text-muted);
134
- font-size: var(--rt-text-sm);
135
- }
79
+ // Выбранная строка: брендовый фон + акцентная левая полоса. Раньше делила
80
+ // `--rt-color-bg-subtle` с :hover — выбор был неотличим от наведения.
81
+ &--active,
82
+ &--active:hover {
83
+ background: var(--rt-color-state-info-bg);
84
+ border-inline-start-color: var(--rt-color-action-primary);
85
+ }
136
86
 
137
- &__row:hover .rt-copy-cell__button,
138
- &__row:focus-within .rt-copy-cell__button {
139
- opacity: 1;
140
- }
87
+ // Непрочитанное видно независимо от шаблона строки: жирный заголовок
88
+ // работает только со штатной разметкой, а точку у левого края и более
89
+ // плотный фон получает любой потребитель, включая собственные шаблоны.
90
+ &--unread {
91
+ position: relative;
92
+ background: var(--rt-color-bg-subtle);
93
+ border-inline-start-color: var(--rt-color-action-primary);
94
+
95
+ .rt-thread-list__row-title {
96
+ font-weight: var(--rt-font-weight-semibold);
97
+ }
98
+
99
+ &:before {
100
+ position: absolute;
101
+ border-radius: var(--rt-thread-list-dot-radius);
102
+ background: var(--rt-color-action-primary);
103
+ block-size: var(--rt-space-2);
104
+ content: '';
105
+ inline-size: var(--rt-space-2);
106
+ inset-block-start: 50%;
107
+ inset-inline-start: var(--rt-space-2);
108
+ transform: translateY(-50%);
109
+ }
110
+ }
141
111
 
142
- &__row-subtitle {
143
- overflow: hidden;
144
- color: var(--rt-color-text-muted);
145
- text-overflow: ellipsis;
146
- white-space: nowrap;
147
- }
112
+ // Выбранная переписка важнее непрочитанной: иначе открытый тред с новым
113
+ // сообщением сливается с остальными непрочитанными в списке.
114
+ &--active,
115
+ &--active:hover {
116
+ background: var(--rt-color-state-info-bg);
117
+ }
148
118
 
149
- &__row-meta {
150
- display: flex;
151
- flex: 0 0 auto;
152
- align-items: center;
153
- gap: var(--rt-space-1-5);
154
- }
119
+ &--overdue {
120
+ .rt-thread-list__row-time {
121
+ color: var(--rt-color-state-error-text);
122
+ }
123
+ }
124
+ }
155
125
 
156
- &__row-time {
157
- color: var(--rt-color-text-muted);
158
- white-space: nowrap;
159
- }
126
+ &__row-body {
127
+ display: flex;
128
+ flex-direction: column;
129
+ gap: var(--rt-space-0-5);
130
+ min-inline-size: 0;
131
+ }
160
132
 
161
- &__row-tag {
162
- padding: var(--rt-space-0-5) var(--rt-space-1-5);
163
- border-radius: var(--rt-radius-sm);
164
- background: var(--rt-color-state-warning-surface);
165
- color: var(--rt-color-state-warning-text);
166
- font-size: var(--rt-text-xs);
167
- white-space: nowrap;
168
- }
133
+ &__row-title {
134
+ overflow: hidden;
135
+ color: var(--rt-color-text-primary);
136
+ text-overflow: ellipsis;
137
+ white-space: nowrap;
138
+ }
169
139
 
170
- &__row-dot {
171
- display: inline-block;
172
- border-radius: var(--rt-radius-full);
173
- background: var(--rt-color-text-link);
174
- block-size: 6px;
175
- inline-size: 6px;
176
- }
140
+ &__row-id {
141
+ color: var(--rt-color-text-muted);
142
+ font-size: var(--rt-text-sm);
143
+ }
177
144
 
178
- &__row-skeleton {
179
- display: flex;
180
- flex-direction: column;
181
- padding: var(--rt-space-2-5) var(--rt-space-4);
182
- gap: var(--rt-space-1-5);
183
- }
145
+ &__row:hover .rt-copy-cell__button,
146
+ &__row:focus-within .rt-copy-cell__button {
147
+ opacity: 1;
148
+ }
184
149
 
185
- &__row-loader {
186
- display: flex;
187
- justify-content: center;
188
- padding: var(--rt-space-2) var(--rt-space-4);
189
- }
150
+ &__row-subtitle {
151
+ overflow: hidden;
152
+ color: var(--rt-color-text-muted);
153
+ text-overflow: ellipsis;
154
+ white-space: nowrap;
155
+ }
190
156
 
191
- &__load-anchor {
192
- block-size: 1px;
193
- }
157
+ &__row-meta {
158
+ display: flex;
159
+ flex: 0 0 auto;
160
+ align-items: center;
161
+ gap: var(--rt-space-2);
162
+ }
194
163
 
195
- &__empty {
196
- padding: var(--rt-space-6) var(--rt-space-4);
197
- }
164
+ &__row-time {
165
+ color: var(--rt-color-text-muted);
166
+ white-space: nowrap;
167
+ }
198
168
 
199
- // Иллюстрация пустого состояния: стопка декоративных строк-превью тредов
200
- // (аватар + две «полоски» текста), средняя со сдвигом — намёк на список чатов.
201
- &__empty-preview {
202
- display: flex;
203
- flex-direction: column;
204
- gap: var(--rt-space-1);
205
- }
169
+ &__row-tag {
170
+ padding: var(--rt-space-0-5) var(--rt-space-2);
171
+ border-radius: var(--rt-thread-list-tag-radius);
172
+ background: var(--rt-color-state-warning-bg);
173
+ color: var(--rt-color-state-warning-text);
174
+ font-size: var(--rt-text-xs);
175
+ white-space: nowrap;
176
+ }
206
177
 
207
- &__empty-card {
208
- display: flex;
209
- align-items: center;
210
- padding: var(--rt-space-2);
211
- border: var(--rt-border-width-thin) solid var(--rt-color-border-subtle);
212
- border-radius: var(--rt-radius-lg);
213
- background: var(--rt-color-bg-surface-subtle);
214
- gap: var(--rt-space-2);
178
+ &__row-dot {
179
+ display: inline-block;
180
+ border-radius: var(--rt-thread-list-dot-radius);
181
+ background: var(--rt-color-text-link);
182
+ block-size: 6px;
183
+ inline-size: 6px;
184
+ }
215
185
 
216
- &--offset {
217
- transform: translateX(20px);
186
+ &__row-skeleton {
187
+ display: flex;
188
+ flex-direction: column;
189
+ padding: var(--rt-space-2) var(--rt-space-4);
190
+ gap: var(--rt-space-2);
218
191
  }
219
- }
220
192
 
221
- &__empty-avatar {
222
- display: grid;
223
- flex: 0 0 auto;
224
- border-radius: var(--rt-radius-full);
225
- background: var(--rt-color-text-muted);
226
- block-size: 24px;
227
- color: var(--rt-color-bg-surface);
228
- inline-size: 24px;
229
- place-items: center;
230
- }
193
+ &__row-loader {
194
+ display: flex;
195
+ justify-content: center;
196
+ padding: var(--rt-space-2) var(--rt-space-4);
197
+ }
231
198
 
232
- &__empty-lines {
233
- display: flex;
234
- flex-direction: column;
235
- gap: var(--rt-space-1-5);
236
- }
199
+ &__load-anchor {
200
+ block-size: 1px;
201
+ }
237
202
 
238
- &__empty-line {
239
- border-radius: var(--rt-radius-full);
240
- background: var(--rt-color-border-strong);
241
- block-size: 6px;
242
- inline-size: 112px;
203
+ &__empty {
204
+ padding: var(--rt-space-6) var(--rt-space-4);
205
+ }
206
+
207
+ // Иллюстрация пустого состояния: стопка декоративных строк-превью тредов
208
+ // (аватар + две «полоски» текста), средняя со сдвигом — намёк на список чатов.
209
+ &__empty-preview {
210
+ display: flex;
211
+ flex-direction: column;
212
+ gap: var(--rt-space-1);
213
+ }
243
214
 
244
- &--short {
245
- inline-size: 48px;
215
+ &__empty-card {
216
+ display: flex;
217
+ align-items: center;
218
+ padding: var(--rt-space-2);
219
+ border: var(--rt-thread-list-border-width) solid var(--rt-color-border-subtle);
220
+ border-radius: var(--rt-thread-list-card-radius);
221
+ background: var(--rt-color-bg-surface-subtle);
222
+ gap: var(--rt-space-2);
223
+
224
+ &--offset {
225
+ transform: translateX(20px);
226
+ }
227
+ }
228
+
229
+ &__empty-avatar {
230
+ display: grid;
231
+ flex: 0 0 auto;
232
+ border-radius: var(--rt-thread-list-avatar-radius);
233
+ background: var(--rt-color-text-muted);
234
+ block-size: 24px;
235
+ color: var(--rt-color-bg-surface);
236
+ inline-size: 24px;
237
+ place-items: center;
238
+ }
239
+
240
+ &__empty-lines {
241
+ display: flex;
242
+ flex-direction: column;
243
+ gap: var(--rt-space-2);
244
+ }
245
+
246
+ &__empty-line {
247
+ border-radius: var(--rt-thread-list-line-radius);
248
+ background: var(--rt-color-border-strong);
249
+ block-size: 6px;
250
+ inline-size: 112px;
251
+
252
+ &--short {
253
+ inline-size: 48px;
254
+ }
246
255
  }
247
256
  }
248
257
  }
@@ -1,98 +1,104 @@
1
- /* rt-timeline — вертикальный таймлайн-степпер в common/ui. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс `.rt-timeline` висит
3
- и на `<rt-timeline>`, и на корне шаблона, поэтому правила блока вложены в хост —
4
- так они достаются только корню шаблона. */
1
+ @layer rt-kit.components {
2
+ /* rt-timeline — вертикальный таймлайн-степпер в common/ui. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс `.rt-timeline` висит
4
+ и на `<rt-timeline>`, и на корне шаблона, поэтому правила блока вложены в хост —
5
+ так они достаются только корню шаблона. */
5
6
 
6
- rt-timeline {
7
- display: block;
7
+ rt-timeline {
8
+ display: block;
8
9
 
9
- .rt-timeline {
10
- display: flex;
11
- flex-direction: column;
12
- padding: 0;
13
- margin: 0;
14
- list-style: none;
10
+ .rt-timeline {
11
+ --rt-timeline-dot-radius: var(--rt-radius-full);
12
+ --rt-timeline-dot-shadow: var(--rt-shadow-step-indicator);
13
+ --rt-timeline-dot-border-width: var(--rt-border-width-thin);
15
14
 
16
- &__item {
17
15
  display: flex;
18
- gap: var(--rt-space-sm);
16
+ flex-direction: column;
17
+ padding: 0;
18
+ margin: 0;
19
+ list-style: none;
20
+
21
+ &__item {
22
+ display: flex;
23
+ gap: var(--rt-space-sm);
19
24
 
20
- // Последний шаг без линии — не растягиваем хвост под ним.
21
- &:last-child {
22
- .rt-timeline__body {
23
- padding-block-end: 0;
25
+ // Последний шаг без линии — не растягиваем хвост под ним.
26
+ &:last-child {
27
+ .rt-timeline__body {
28
+ padding-block-end: 0;
29
+ }
24
30
  }
25
31
  }
26
- }
27
32
 
28
- &__rail {
29
- display: flex;
30
- flex-direction: column;
31
- align-items: center;
32
- inline-size: 16px;
33
- }
33
+ &__rail {
34
+ display: flex;
35
+ flex-direction: column;
36
+ align-items: center;
37
+ inline-size: 16px;
38
+ }
39
+
40
+ &__dot {
41
+ box-sizing: border-box;
42
+ flex: none;
43
+ border-radius: var(--rt-timeline-dot-radius);
44
+ background: var(--rt-color-stepper-track);
45
+ block-size: 10px;
46
+ inline-size: 10px;
47
+ margin-block-start: var(--rt-space-xs);
48
+
49
+ &--status--complete {
50
+ background: var(--rt-color-stepper-progress);
51
+ }
34
52
 
35
- &__dot {
36
- box-sizing: border-box;
37
- flex: none;
38
- border-radius: var(--rt-radius-full);
39
- background: var(--rt-color-stepper-track);
40
- block-size: 10px;
41
- inline-size: 10px;
42
- margin-block-start: var(--rt-space-xs);
53
+ &--status--current {
54
+ background: var(--rt-color-stepper-current);
55
+ block-size: 14px;
56
+ box-shadow: var(--rt-timeline-dot-shadow);
57
+ inline-size: 14px;
58
+ margin-block-start: var(--rt-space-2xs);
59
+ }
43
60
 
44
- &--status--complete {
45
- background: var(--rt-color-stepper-progress);
61
+ &--status--pending {
62
+ border: var(--rt-timeline-dot-border-width) solid var(--rt-color-stepper-track);
63
+ background: transparent;
64
+ }
46
65
  }
47
66
 
48
- &--status--current {
49
- background: var(--rt-color-stepper-current);
50
- block-size: 14px;
51
- box-shadow: var(--rt-shadow-step-indicator);
52
- inline-size: 14px;
67
+ // Соединительная линия тянется от точки вниз до следующего шага.
68
+ &__line {
69
+ flex: 1 1 auto;
70
+ background: var(--rt-color-stepper-track);
71
+ inline-size: 2px;
53
72
  margin-block-start: var(--rt-space-2xs);
54
73
  }
55
74
 
56
- &--status--pending {
57
- border: var(--rt-border-width-thin) solid var(--rt-color-stepper-track);
58
- background: transparent;
75
+ &__body {
76
+ display: flex;
77
+ flex-direction: column;
78
+ gap: var(--rt-space-2xs);
79
+ padding-block-end: var(--rt-space-md);
59
80
  }
60
- }
61
-
62
- // Соединительная линия тянется от точки вниз до следующего шага.
63
- &__line {
64
- flex: 1 1 auto;
65
- background: var(--rt-color-stepper-track);
66
- inline-size: 2px;
67
- margin-block-start: var(--rt-space-2xs);
68
- }
69
-
70
- &__body {
71
- display: flex;
72
- flex-direction: column;
73
- gap: var(--rt-space-2xs);
74
- padding-block-end: var(--rt-space-md);
75
- }
76
81
 
77
- &__label {
78
- color: var(--rt-color-text-primary);
79
- font-size: var(--rt-text-sm);
80
- line-height: var(--rt-leading-snug);
81
- }
82
+ &__label {
83
+ color: var(--rt-color-text-primary);
84
+ font-size: var(--rt-text-sm);
85
+ line-height: var(--rt-leading-snug);
86
+ }
82
87
 
83
- &__meta {
84
- display: inline-flex;
85
- flex-wrap: wrap;
86
- color: var(--rt-color-text-muted);
87
- font-size: var(--rt-text-xs);
88
- gap: var(--rt-space-xs);
89
- line-height: var(--rt-leading-snug);
90
- }
88
+ &__meta {
89
+ display: inline-flex;
90
+ flex-wrap: wrap;
91
+ color: var(--rt-color-text-muted);
92
+ font-size: var(--rt-text-xs);
93
+ gap: var(--rt-space-xs);
94
+ line-height: var(--rt-leading-snug);
95
+ }
91
96
 
92
- // Точка-разделитель между временем и инициатором.
93
- &__actor:before {
94
- content: '·';
95
- margin-inline-end: var(--rt-space-xs);
97
+ // Точка-разделитель между временем и инициатором.
98
+ &__actor:before {
99
+ content: '·';
100
+ margin-inline-end: var(--rt-space-xs);
101
+ }
96
102
  }
97
103
  }
98
104
  }