@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,198 +1,206 @@
1
- .rt-multiselect {
2
- position: relative;
3
- display: block;
4
- width: 100%;
5
-
6
- /* bordered=false: снимаем только resting-рамку триггера. Объявлено ДО блока
7
- __trigger — его :focus и правила --open/--invalid __trigger (равная
8
- специфичность) идут ниже по source-order и перекрывают рамку. */
9
- &--borderless &__trigger {
10
- border-color: transparent;
11
- }
1
+ @layer rt-kit.components {
2
+ .rt-multiselect {
3
+ --rt-multiselect-caret-transition-duration: var(--rt-duration-fast);
12
4
 
13
- &__trigger {
14
- display: flex;
5
+ position: relative;
6
+ display: block;
15
7
  width: 100%;
16
- min-height: var(--rt-input-height);
17
- box-sizing: border-box;
18
- align-items: center;
19
- padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
20
- border: var(--rt-input-border-width) solid var(--rt-input-color-border);
21
- border-radius: var(--rt-input-radius);
22
- background-color: var(--rt-input-color-bg);
23
- color: var(--rt-input-color-text);
24
- cursor: pointer;
25
-
26
- /* Триггер — нативный <button>: без явного наследования берёт UA-шрифт
27
- (Arial), а не Montserrat от body. */
28
- font-family: inherit;
29
- font-size: var(--rt-input-font-size);
30
- gap: var(--rt-space-sm);
31
- line-height: var(--rt-input-line-height);
32
- text-align: start;
33
- transition: var(--rt-input-transition);
34
-
35
- // :focus (не :focus-visible) — триггер это <button>, у которого
36
- // :focus-visible не срабатывает на клик мышью; кольцо нужно и при клике.
37
- &:focus {
38
- border-color: var(--rt-input-color-border-focus);
39
- box-shadow: var(--rt-input-focus-shadow);
40
- outline: 2px solid transparent;
41
- outline-offset: var(--rt-input-focus-outline-offset);
42
- }
43
8
 
44
- &:disabled {
45
- cursor: not-allowed;
9
+ /* bordered=false: снимаем только resting-рамку триггера. Объявлено ДО блока
10
+ __trigger — его :focus и правила --open/--invalid __trigger (равная
11
+ специфичность) идут ниже по source-order и перекрывают рамку. */
12
+ &--borderless &__trigger {
13
+ border-color: transparent;
46
14
  }
47
- }
48
15
 
49
- &--open &__trigger {
50
- border-color: var(--rt-input-color-border-focus);
51
- }
52
-
53
- &--invalid &__trigger {
54
- border-color: var(--rt-input-color-border-error);
16
+ &__trigger {
17
+ display: flex;
18
+ width: 100%;
19
+ min-height: var(--rt-input-height);
20
+ box-sizing: border-box;
21
+ align-items: center;
22
+ padding: var(--rt-input-padding-y) var(--rt-input-padding-x);
23
+ border: var(--rt-input-border-width) solid var(--rt-input-color-border);
24
+ border-radius: var(--rt-input-radius);
25
+ background-color: var(--rt-input-color-bg);
26
+ color: var(--rt-input-color-text);
27
+ cursor: pointer;
28
+
29
+ /* Триггер — нативный <button>: без явного наследования берёт UA-шрифт
30
+ (Arial), а не Montserrat от body. */
31
+ font-family: inherit;
32
+ font-size: var(--rt-input-font-size);
33
+ gap: var(--rt-space-sm);
34
+ line-height: var(--rt-input-line-height);
35
+ text-align: start;
36
+ transition: var(--rt-input-transition);
37
+
38
+ // :focus (не :focus-visible) — триггер это <button>, у которого
39
+ // :focus-visible не срабатывает на клик мышью; кольцо нужно и при клике.
40
+ &:focus {
41
+ border-color: var(--rt-input-color-border-focus);
42
+ box-shadow: var(--rt-input-focus-shadow);
43
+ outline: 2px solid transparent;
44
+ outline-offset: var(--rt-input-focus-outline-offset);
45
+ }
55
46
 
56
- &:focus {
57
- box-shadow: var(--rt-input-focus-shadow-error);
47
+ &:disabled {
48
+ cursor: not-allowed;
49
+ }
58
50
  }
59
- }
60
51
 
61
- &--disabled {
62
- opacity: var(--rt-input-disabled-opacity);
63
- }
52
+ &--open &__trigger {
53
+ border-color: var(--rt-input-color-border-focus);
54
+ }
64
55
 
65
- /* Read-only: триггер остаётся в DOM (нужен для viewChild.required popover'а),
66
- но скрыт — значение показывает плоский текст __readonly. */
67
- &--readonly &__trigger {
68
- display: none;
69
- }
56
+ &--invalid &__trigger {
57
+ border-color: var(--rt-input-color-border-error);
70
58
 
71
- /* Read-only: выбранные labels через запятую как плоский текст. */
72
- &__readonly {
73
- display: inline-flex;
74
- min-height: var(--rt-input-height);
75
- align-items: center;
76
- color: var(--rt-field-value-color);
77
- font-size: var(--rt-field-value-font-size);
59
+ &:focus {
60
+ box-shadow: var(--rt-input-focus-shadow-error);
61
+ }
62
+ }
78
63
 
79
- &--empty {
80
- color: var(--rt-field-value-empty-color);
64
+ &--disabled {
65
+ opacity: var(--rt-input-disabled-opacity);
81
66
  }
82
- }
83
67
 
84
- &--size--sm &__trigger {
85
- min-height: var(--rt-input-height-sm);
86
- }
68
+ /* Read-only: триггер остаётся в DOM (нужен для viewChild.required popover'а),
69
+ но скрыт — значение показывает плоский текст __readonly. */
70
+ &--readonly &__trigger {
71
+ display: none;
72
+ }
87
73
 
88
- &--size--lg &__trigger {
89
- min-height: var(--rt-input-height-lg);
90
- }
74
+ /* Read-only: выбранные labels через запятую как плоский текст. */
75
+ &__readonly {
76
+ display: inline-flex;
77
+ min-height: var(--rt-input-height);
78
+ align-items: center;
79
+ color: var(--rt-field-value-color);
80
+ font-size: var(--rt-field-value-font-size);
91
81
 
92
- &__placeholder {
93
- overflow: hidden;
94
- min-width: 0;
95
- flex: 1 1 auto;
96
- color: var(--rt-input-color-text-placeholder);
97
- text-overflow: ellipsis;
98
- white-space: nowrap;
99
- }
82
+ &--empty {
83
+ color: var(--rt-field-value-empty-color);
84
+ }
85
+ }
100
86
 
101
- &__chips {
102
- display: flex;
103
- min-width: 0;
104
- flex: 1 1 auto;
105
- flex-wrap: wrap;
106
- gap: var(--rt-space-2xs);
107
- }
87
+ &--size--sm &__trigger {
88
+ min-height: var(--rt-input-height-sm);
89
+ }
108
90
 
109
- &__chip {
110
- display: inline-flex;
111
- align-items: center;
112
- }
91
+ &--size--lg &__trigger {
92
+ min-height: var(--rt-input-height-lg);
93
+ }
113
94
 
114
- &__chip-more {
115
- display: inline-flex;
116
- align-items: center;
117
- padding: 0 var(--rt-space-xs);
118
- color: var(--rt-input-color-text-placeholder);
119
- font-size: var(--rt-input-font-size);
120
- }
95
+ &__placeholder {
96
+ overflow: hidden;
97
+ min-width: 0;
98
+ flex: 1 1 auto;
99
+ color: var(--rt-input-color-text-placeholder);
100
+ text-overflow: ellipsis;
101
+ white-space: nowrap;
102
+ }
121
103
 
122
- &__clear {
123
- flex-shrink: 0;
124
- }
104
+ &__chips {
105
+ display: flex;
106
+ min-width: 0;
107
+ flex: 1 1 auto;
108
+ flex-wrap: wrap;
109
+ gap: var(--rt-space-2xs);
110
+ }
125
111
 
126
- &__chevron {
127
- flex-shrink: 0;
128
- transition: transform var(--rt-duration-fast) ease;
129
- }
112
+ &__chip {
113
+ display: inline-flex;
114
+ align-items: center;
115
+ }
130
116
 
131
- &--open &__chevron {
132
- transform: rotate(180deg);
133
- }
117
+ &__chip-more {
118
+ display: inline-flex;
119
+ align-items: center;
120
+ padding: 0 var(--rt-space-xs);
121
+ color: var(--rt-input-color-text-placeholder);
122
+ font-size: var(--rt-input-font-size);
123
+ }
134
124
 
135
- /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK. */
136
- &__panel {
137
- width: 100%;
138
- max-height: var(--rt-input-panel-max-height);
139
- box-sizing: border-box;
140
- border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
141
- border-radius: var(--rt-input-radius);
142
- background-color: var(--rt-color-bg-surface);
143
- box-shadow: var(--rt-shadow-md);
144
- overflow-y: auto;
145
- }
125
+ &__clear {
126
+ flex-shrink: 0;
127
+ }
146
128
 
147
- &__list {
148
- padding: var(--rt-space-2xs) 0;
149
- margin: 0;
150
- list-style: none;
151
- }
129
+ &__chevron {
130
+ flex-shrink: 0;
131
+ transition: transform var(--rt-multiselect-caret-transition-duration) ease;
132
+ }
152
133
 
153
- &__option {
154
- display: flex;
155
- align-items: center;
156
- padding: var(--rt-space-sm) var(--rt-space-md);
157
- color: var(--rt-color-text-primary);
158
- cursor: pointer;
159
- font-size: var(--rt-input-font-size);
160
- gap: var(--rt-space-sm);
134
+ &--open &__chevron {
135
+ transform: rotate(180deg);
136
+ }
161
137
 
162
- &:hover,
163
- &--active {
164
- background-color: var(--rt-color-bg-hover);
138
+ /* Panel рендерится в CDK Overlay (body) — позиционирование на CDK. */
139
+ &__panel {
140
+ /* Панель рисуется в CDK Overlay, вне поддерева блока: свойство
141
+ объявляется на ней самой — с корня блока оно бы не докатилось. */
142
+ --rt-multiselect-panel-shadow: var(--rt-shadow-md);
143
+
144
+ width: 100%;
145
+ max-height: var(--rt-input-panel-max-height);
146
+ box-sizing: border-box;
147
+ border: var(--rt-input-border-width) solid var(--rt-color-border-subtle);
148
+ border-radius: var(--rt-input-radius);
149
+ background-color: var(--rt-color-bg-surface);
150
+ box-shadow: var(--rt-multiselect-panel-shadow);
151
+ overflow-y: auto;
165
152
  }
166
153
 
167
- &--selected {
168
- background-color: var(--rt-color-action-primary-subtle);
169
- font-weight: var(--rt-font-weight-semibold);
154
+ &__list {
155
+ padding: var(--rt-space-2xs) 0;
156
+ margin: 0;
157
+ list-style: none;
170
158
  }
171
159
 
172
- &--disabled {
173
- cursor: not-allowed;
174
- opacity: var(--rt-input-disabled-opacity);
160
+ &__option {
161
+ display: flex;
162
+ align-items: center;
163
+ padding: var(--rt-space-sm) var(--rt-space-md);
164
+ color: var(--rt-color-text-primary);
165
+ cursor: pointer;
166
+ font-size: var(--rt-input-font-size);
167
+ gap: var(--rt-space-sm);
168
+
169
+ &:hover,
170
+ &--active {
171
+ background-color: var(--rt-color-bg-hover);
172
+ }
173
+
174
+ &--selected {
175
+ background-color: var(--rt-color-action-primary-subtle);
176
+ font-weight: var(--rt-font-weight-semibold);
177
+ }
178
+
179
+ &--disabled {
180
+ cursor: not-allowed;
181
+ opacity: var(--rt-input-disabled-opacity);
175
182
 
176
- &:hover {
177
- background-color: transparent;
183
+ &:hover {
184
+ background-color: transparent;
185
+ }
178
186
  }
179
187
  }
180
- }
181
188
 
182
- &__checkbox {
183
- flex-shrink: 0;
184
- margin: 0;
185
- pointer-events: none;
186
- }
189
+ &__checkbox {
190
+ flex-shrink: 0;
191
+ margin: 0;
192
+ pointer-events: none;
193
+ }
187
194
 
188
- &__option-label {
189
- min-width: 0;
190
- flex: 1 1 auto;
191
- }
195
+ &__option-label {
196
+ min-width: 0;
197
+ flex: 1 1 auto;
198
+ }
192
199
 
193
- &__empty {
194
- padding: var(--rt-space-sm) var(--rt-space-md);
195
- color: var(--rt-input-color-text-placeholder);
196
- font-style: italic;
200
+ &__empty {
201
+ padding: var(--rt-space-sm) var(--rt-space-md);
202
+ color: var(--rt-input-color-text-placeholder);
203
+ font-style: italic;
204
+ }
197
205
  }
198
206
  }
@@ -1,45 +1,50 @@
1
- /* rt-night-grid — плотная сетка суток в common/ui. ViewEncapsulation.None.
2
- Хост адресуется по имени элемента, а не по классу блока: класс `.rt-night-grid` висит
3
- и на `<rt-night-grid>`, и на корне шаблона, поэтому правила блока вложены в хост —
4
- так они достаются только корню шаблона.
5
-
6
- Ячейки мелкие и без подписей: сетка читается как индикатор занятости целиком, а
7
- не как календарь — конкретный день подсказывает нативный title. */
8
-
9
- rt-night-grid {
10
- display: block;
11
-
12
- .rt-night-grid {
13
- /* Колонки резиновые от 16px: при жёсткой ширине ячейки сетка занимала
14
- треть широкой карточки, а фиксированный максимум оставлял в ряду
15
- «хвост» из одной ячейки, не попавшей в предыдущую строку. */
16
- display: grid;
17
- gap: var(--rt-space-1);
18
- grid-template-columns: repeat(auto-fit, minmax(16px, 1fr));
19
-
20
- &__cell {
21
- padding: 0;
22
- border: none;
23
- border-radius: var(--rt-radius-sm);
24
- aspect-ratio: 1;
25
- background: var(--rt-color-bg-surface-subtle);
26
- cursor: pointer;
27
-
28
- &:hover {
29
- outline: var(--rt-border-width-thin) solid var(--rt-color-border-strong);
30
- }
31
-
32
- &:focus-visible {
33
- outline: var(--rt-border-width-thin) solid var(--rt-color-border-focus);
34
- outline-offset: 1px;
35
- }
36
-
37
- &--state--primary {
38
- background: var(--rt-color-state-success);
39
- }
40
-
41
- &--state--secondary {
42
- background: color-mix(in srgb, var(--rt-color-state-success) 35%, transparent);
1
+ @layer rt-kit.components {
2
+ /* rt-night-grid — плотная сетка суток в common/ui. ViewEncapsulation.None.
3
+ Хост адресуется по имени элемента, а не по классу блока: класс `.rt-night-grid` висит
4
+ и на `<rt-night-grid>`, и на корне шаблона, поэтому правила блока вложены в хост —
5
+ так они достаются только корню шаблона.
6
+
7
+ Ячейки мелкие и без подписей: сетка читается как индикатор занятости целиком, а
8
+ не как календарь — конкретный день подсказывает нативный title. */
9
+
10
+ rt-night-grid {
11
+ display: block;
12
+
13
+ .rt-night-grid {
14
+ --rt-night-grid-cell-radius: var(--rt-radius-sm);
15
+ --rt-night-grid-outline-width: var(--rt-border-width-thin);
16
+
17
+ /* Колонки резиновые от 16px: при жёсткой ширине ячейки сетка занимала
18
+ треть широкой карточки, а фиксированный максимум оставлял в ряду
19
+ «хвост» из одной ячейки, не попавшей в предыдущую строку. */
20
+ display: grid;
21
+ gap: var(--rt-space-1);
22
+ grid-template-columns: repeat(auto-fit, minmax(16px, 1fr));
23
+
24
+ &__cell {
25
+ padding: 0;
26
+ border: none;
27
+ border-radius: var(--rt-night-grid-cell-radius);
28
+ aspect-ratio: 1;
29
+ background: var(--rt-color-bg-surface-subtle);
30
+ cursor: pointer;
31
+
32
+ &:hover {
33
+ outline: var(--rt-night-grid-outline-width) solid var(--rt-color-border-strong);
34
+ }
35
+
36
+ &:focus-visible {
37
+ outline: var(--rt-night-grid-outline-width) solid var(--rt-color-border-focus);
38
+ outline-offset: 1px;
39
+ }
40
+
41
+ &--state--primary {
42
+ background: var(--rt-color-state-success);
43
+ }
44
+
45
+ &--state--secondary {
46
+ background: color-mix(in srgb, var(--rt-color-state-success) 35%, transparent);
47
+ }
43
48
  }
44
49
  }
45
50
  }
@@ -1,13 +1,17 @@
1
- /* rt-note — тихая информационная заметка в common/ui (ViewEncapsulation.None).
2
- Селектор bare `.rt-note` (класс на host) — `:host` в None light-DOM не матчит.
3
- Палитра приглушённая (text-muted на subtle-фоне) — намеренно тише rt-message. */
1
+ @layer rt-kit.components {
2
+ /* rt-note — тихая информационная заметка в common/ui (ViewEncapsulation.None).
3
+ Селектор bare `.rt-note` (класс на host) — `:host` в None light-DOM не матчит.
4
+ Палитра приглушённая (text-muted на subtle-фоне) — намеренно тише rt-message. */
4
5
 
5
- .rt-note {
6
- display: block;
7
- padding: var(--rt-space-sm) var(--rt-space-md);
8
- border-radius: var(--rt-radius-md);
9
- background: var(--rt-color-bg-subtle);
10
- color: var(--rt-color-text-muted);
11
- font-size: var(--rt-text-sm);
12
- line-height: var(--rt-leading-normal);
6
+ .rt-note {
7
+ --rt-note-radius: var(--rt-radius-md);
8
+
9
+ display: block;
10
+ padding: var(--rt-space-sm) var(--rt-space-md);
11
+ border-radius: var(--rt-note-radius);
12
+ background: var(--rt-color-bg-subtle);
13
+ color: var(--rt-color-text-muted);
14
+ font-size: var(--rt-text-sm);
15
+ line-height: var(--rt-leading-normal);
16
+ }
13
17
  }
@@ -1,32 +1,39 @@
1
- .rt-notifications-bell {
2
- display: inline-flex;
3
- min-height: var(--rt-nav-item-height);
4
- align-items: center;
5
- padding: var(--rt-nav-item-padding);
6
- border: 0;
7
- border-radius: var(--rt-radius-md);
8
- background-color: transparent;
9
- color: var(--rt-nav-item-color);
10
- cursor: pointer;
11
- gap: var(--rt-nav-item-content-gap);
12
- transition: color var(--rt-duration-fast) linear;
1
+ @layer rt-kit.components {
2
+ .rt-notifications-bell {
3
+ --rt-notifications-bell-radius: var(--rt-radius-md);
4
+ --rt-notifications-bell-dot-radius: var(--rt-radius-full);
5
+ --rt-notifications-bell-outline-width: var(--rt-border-width-thin);
6
+ --rt-notifications-bell-transition-duration: var(--rt-duration-fast);
13
7
 
14
- &:hover {
15
- color: var(--rt-nav-item-color-hover);
16
- }
8
+ display: inline-flex;
9
+ min-height: var(--rt-nav-item-height);
10
+ align-items: center;
11
+ padding: var(--rt-nav-item-padding);
12
+ border: 0;
13
+ border-radius: var(--rt-notifications-bell-radius);
14
+ background-color: transparent;
15
+ color: var(--rt-nav-item-color);
16
+ cursor: pointer;
17
+ gap: var(--rt-nav-item-content-gap);
18
+ transition: color var(--rt-notifications-bell-transition-duration) linear;
17
19
 
18
- &:focus-visible {
19
- outline: var(--rt-border-width-thin) dashed var(--rt-color-border-strong);
20
- outline-offset: calc(var(--rt-space-0-5) * -1);
21
- }
20
+ &:hover {
21
+ color: var(--rt-nav-item-color-hover);
22
+ }
23
+
24
+ &:focus-visible {
25
+ outline: var(--rt-notifications-bell-outline-width) dashed var(--rt-color-border-strong);
26
+ outline-offset: calc(var(--rt-space-0-5) * -1);
27
+ }
22
28
 
23
- /* Точка идёт следом за иконкой, в потоке содержимого кнопки: место ей даёт
24
- общий зазор, как и у пункта меню. */
25
- &__marker {
26
- width: var(--rt-nav-marker-size);
27
- height: var(--rt-nav-marker-size);
28
- flex-shrink: 0;
29
- border-radius: var(--rt-radius-full);
30
- background-color: var(--rt-nav-marker-color);
29
+ /* Точка идёт следом за иконкой, в потоке содержимого кнопки: место ей даёт
30
+ общий зазор, как и у пункта меню. */
31
+ &__marker {
32
+ width: var(--rt-nav-marker-size);
33
+ height: var(--rt-nav-marker-size);
34
+ flex-shrink: 0;
35
+ border-radius: var(--rt-notifications-bell-dot-radius);
36
+ background-color: var(--rt-nav-marker-color);
37
+ }
31
38
  }
32
39
  }