@rt-tools/ui-kit 0.3.1 → 0.4.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@rt-tools/ui-kit",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "license": "Apache-2.0",
5
5
  "author": "Yauheni Krumin",
6
6
  "type": "module",
Binary file
@@ -27,8 +27,12 @@
27
27
  align-items: center;
28
28
  justify-content: center;
29
29
  padding: var(--rt-action-bar-action-padding);
30
+ border: 0;
30
31
  border-radius: var(--rt-action-bar-action-border-radius);
32
+ background-color: transparent;
33
+ color: inherit;
31
34
  cursor: pointer;
35
+ font-family: inherit;
32
36
  font-size: var(--rt-action-bar-action-font-size);
33
37
  font-weight: var(--rt-action-bar-action-font-weight);
34
38
  gap: var(--rt-action-bar-action-gap);
@@ -39,7 +43,13 @@
39
43
  }
40
44
 
41
45
  &__close-button {
46
+ display: flex;
47
+ align-items: center;
48
+ padding: 0;
49
+ border: 0;
42
50
  margin-left: auto;
51
+ background-color: transparent;
52
+ color: inherit;
43
53
  cursor: pointer;
44
54
 
45
55
  svg {
@@ -81,8 +91,12 @@
81
91
  align-items: center;
82
92
  justify-content: center;
83
93
  padding: var(--rt-action-bar-action-menu-action-padding);
94
+ border: 0;
84
95
  border-radius: var(--rt-action-bar-action-menu-action-border-radius);
96
+ background-color: transparent;
97
+ color: inherit;
85
98
  cursor: pointer;
99
+ font-family: inherit;
86
100
  font-size: var(--rt-action-bar-action-menu-action-font-size);
87
101
  font-weight: var(--rt-action-bar-action-menu-action-font-weight);
88
102
  gap: var(--rt-action-bar-action-menu-action-gap);
@@ -28,7 +28,7 @@
28
28
  font-size: var(--rt-aside-error-box-button-font-size);
29
29
  }
30
30
 
31
- &.--complete {
31
+ &--complete {
32
32
  background-color: transparent;
33
33
  cursor: not-allowed;
34
34
  }
@@ -6,276 +6,280 @@
6
6
  display: block;
7
7
  width: 100%;
8
8
 
9
- .rtui-button,
10
- .rtui-button-material {
9
+ .rtui-button__control,
10
+ .rtui-button__material {
11
11
  width: 100%;
12
12
  }
13
13
  }
14
14
 
15
+ /* Класс блока и его модификаторы висят на хосте, поэтому правило вида
16
+ `&--type-pill &__control` читается как «кнопка внутри блока такого-то вида». */
15
17
  .rtui-button {
16
- position: relative;
17
- display: inline-flex;
18
- overflow: hidden;
19
- align-items: center;
20
- justify-content: center;
21
- border: 0;
22
- background-color: transparent;
23
- color: var(--mat-sys-on-surface-variant);
24
- cursor: pointer;
25
- line-height: 1;
26
- transition:
27
- background-color 0.15s ease,
28
- color 0.15s ease,
29
- opacity 0.15s ease;
30
-
31
- rtui-icon {
32
- color: inherit;
33
- }
34
-
35
- rtui-spinner {
36
- display: flex;
18
+ &__control {
19
+ position: relative;
20
+ display: inline-flex;
21
+ overflow: hidden;
37
22
  align-items: center;
38
23
  justify-content: center;
39
- }
24
+ border: 0;
25
+ background-color: transparent;
26
+ color: var(--mat-sys-on-surface-variant);
27
+ cursor: pointer;
28
+ line-height: 1;
29
+ transition:
30
+ background-color 0.15s ease,
31
+ color 0.15s ease,
32
+ opacity 0.15s ease;
33
+
34
+ rtui-icon {
35
+ color: inherit;
36
+ }
40
37
 
41
- &:disabled {
42
- cursor: not-allowed;
43
- opacity: 0.38;
44
- }
38
+ rtui-spinner {
39
+ display: flex;
40
+ align-items: center;
41
+ justify-content: center;
42
+ }
45
43
 
46
- &--loading {
47
- cursor: wait;
44
+ &:disabled {
45
+ cursor: not-allowed;
46
+ opacity: 0.38;
47
+ }
48
48
  }
49
49
 
50
- /* ===================== icon / fab ===================== */
51
- &--type-icon,
52
- &--type-fab {
53
- border-radius: 1.5rem;
50
+ /* ===================== design: material =====================
51
+ Under `design: 'material'` the pill renders a NATIVE Material button (see the
52
+ template) whose look is fully owned by the Material theme. The only styling
53
+ the library adds is the variant mapping: `danger` re-points the button's own
54
+ theme tokens at the M3 error role (M3 has no success/warning roles, so every
55
+ other variant keeps the theme primary). */
56
+ &__material {
57
+ rtui-spinner {
58
+ display: flex;
59
+ align-items: center;
60
+ justify-content: center;
61
+ }
54
62
 
55
- &:hover:not(:disabled) {
56
- background-color: var(--rt-bg-base-hover);
63
+ &--danger {
64
+ --mat-button-filled-container-color: var(--mat-sys-error);
65
+ --mat-button-filled-label-text-color: var(--mat-sys-on-error);
66
+ --mat-button-filled-state-layer-color: var(--mat-sys-on-error);
67
+ --mat-button-filled-ripple-color: color-mix(in srgb, var(--mat-sys-on-error) 12%, transparent);
68
+ --mat-button-outlined-label-text-color: var(--mat-sys-error);
69
+ --mat-button-outlined-outline-color: var(--mat-sys-error);
70
+ --mat-button-outlined-state-layer-color: var(--mat-sys-error);
71
+ --mat-button-outlined-ripple-color: color-mix(in srgb, var(--mat-sys-error) 12%, transparent);
72
+ --mat-button-text-label-text-color: var(--mat-sys-error);
73
+ --mat-button-text-state-layer-color: var(--mat-sys-error);
74
+ --mat-button-text-ripple-color: color-mix(in srgb, var(--mat-sys-error) 12%, transparent);
75
+ --mat-button-tonal-container-color: var(--mat-sys-error-container);
76
+ --mat-button-tonal-label-text-color: var(--mat-sys-on-error-container);
77
+ --mat-button-tonal-state-layer-color: var(--mat-sys-on-error-container);
78
+ --mat-button-tonal-ripple-color: color-mix(in srgb, var(--mat-sys-on-error-container) 12%, transparent);
57
79
  }
58
80
  }
81
+ }
59
82
 
60
- &--type-icon.rtui-button--size-xs,
61
- &--type-fab.rtui-button--size-xs {
62
- padding: 0.25rem;
63
- }
83
+ :host(.rtui-button--loading) .rtui-button__control {
84
+ cursor: wait;
85
+ }
64
86
 
65
- &--type-icon.rtui-button--size-sm,
66
- &--type-fab.rtui-button--size-sm {
67
- padding: 0.375rem;
68
- }
87
+ /* ===================== icon / fab ===================== */
88
+ :host(.rtui-button--type-icon) .rtui-button__control,
89
+ :host(.rtui-button--type-fab) .rtui-button__control {
90
+ border-radius: var(--rt-radius-xl);
69
91
 
70
- &--type-icon.rtui-button--size-md,
71
- &--type-fab.rtui-button--size-md {
72
- padding: 0.5rem;
92
+ &:hover:not(:disabled) {
93
+ background-color: var(--rt-bg-base-hover);
73
94
  }
95
+ }
74
96
 
75
- &--type-icon.rtui-button--size-lg,
76
- &--type-fab.rtui-button--size-lg {
77
- padding: 0.625rem;
78
- }
97
+ :host(.rtui-button--type-icon.rtui-button--size-xs) .rtui-button__control,
98
+ :host(.rtui-button--type-fab.rtui-button--size-xs) .rtui-button__control {
99
+ padding: var(--rt-spacing-4);
100
+ }
79
101
 
80
- &--type-icon.rtui-button--variant-primary,
81
- &--type-fab.rtui-button--variant-primary {
82
- color: var(--rt-icon-accent-primary);
83
- }
102
+ :host(.rtui-button--type-icon.rtui-button--size-sm) .rtui-button__control,
103
+ :host(.rtui-button--type-fab.rtui-button--size-sm) .rtui-button__control {
104
+ padding: var(--rt-spacing-6);
105
+ }
84
106
 
85
- &--type-icon.rtui-button--variant-danger,
86
- &--type-fab.rtui-button--variant-danger {
87
- color: var(--rt-icon-accent-danger);
88
- }
107
+ :host(.rtui-button--type-icon.rtui-button--size-md) .rtui-button__control,
108
+ :host(.rtui-button--type-fab.rtui-button--size-md) .rtui-button__control {
109
+ padding: var(--rt-spacing-8);
110
+ }
89
111
 
90
- &--type-icon.rtui-button--variant-success,
91
- &--type-fab.rtui-button--variant-success {
92
- color: var(--rt-icon-accent-success);
93
- }
112
+ :host(.rtui-button--type-icon.rtui-button--size-lg) .rtui-button__control,
113
+ :host(.rtui-button--type-fab.rtui-button--size-lg) .rtui-button__control {
114
+ padding: var(--rt-spacing-10);
115
+ }
94
116
 
95
- &--type-icon.rtui-button--variant-warning,
96
- &--type-fab.rtui-button--variant-warning {
97
- color: var(--rt-icon-accent-warning);
98
- }
117
+ :host(.rtui-button--type-icon.rtui-button--variant-primary) .rtui-button__control,
118
+ :host(.rtui-button--type-fab.rtui-button--variant-primary) .rtui-button__control {
119
+ color: var(--rt-icon-accent-primary);
120
+ }
99
121
 
100
- &--type-icon.rtui-button--variant-accent,
101
- &--type-fab.rtui-button--variant-accent {
102
- color: var(--rt-icon-accent-info);
103
- }
122
+ :host(.rtui-button--type-icon.rtui-button--variant-danger) .rtui-button__control,
123
+ :host(.rtui-button--type-fab.rtui-button--variant-danger) .rtui-button__control {
124
+ color: var(--rt-icon-accent-danger);
125
+ }
104
126
 
105
- /* ===================== pill ===================== */
106
- &--type-pill {
107
- border-radius: 1.5rem;
108
- background-color: var(--mat-sys-surface-container-high);
109
- color: var(--mat-sys-on-surface-variant);
110
- font-weight: 500;
111
- gap: 0.375rem;
127
+ :host(.rtui-button--type-icon.rtui-button--variant-success) .rtui-button__control,
128
+ :host(.rtui-button--type-fab.rtui-button--variant-success) .rtui-button__control {
129
+ color: var(--rt-icon-accent-success);
130
+ }
112
131
 
113
- &:hover:not(:disabled) {
114
- background-color: var(--mat-sys-surface-container-highest);
115
- }
132
+ :host(.rtui-button--type-icon.rtui-button--variant-warning) .rtui-button__control,
133
+ :host(.rtui-button--type-fab.rtui-button--variant-warning) .rtui-button__control {
134
+ color: var(--rt-icon-accent-warning);
135
+ }
116
136
 
117
- &:active:not(:disabled) {
118
- background-color: var(--mat-sys-surface-dim);
119
- }
120
- }
137
+ :host(.rtui-button--type-icon.rtui-button--variant-accent) .rtui-button__control,
138
+ :host(.rtui-button--type-fab.rtui-button--variant-accent) .rtui-button__control {
139
+ color: var(--rt-icon-accent-info);
140
+ }
121
141
 
122
- /* pill sizes */
123
- &--type-pill.rtui-button--size-xs {
124
- padding: 0.25rem 0.5rem;
125
- font-size: 0.6875rem;
126
- }
142
+ /* ===================== pill ===================== */
143
+ :host(.rtui-button--type-pill) .rtui-button__control {
144
+ border-radius: var(--rt-radius-xl);
145
+ background-color: var(--mat-sys-surface-container-high);
146
+ color: var(--mat-sys-on-surface-variant);
147
+ font-weight: var(--rt-font-weight-medium);
148
+ gap: var(--rt-spacing-6);
127
149
 
128
- &--type-pill.rtui-button--size-sm {
129
- padding: 0.375rem 0.625rem;
130
- font-size: 0.75rem;
150
+ &:hover:not(:disabled) {
151
+ background-color: var(--mat-sys-surface-container-highest);
131
152
  }
132
153
 
133
- &--type-pill.rtui-button--size-md {
134
- padding: 0.5rem 0.875rem;
135
- font-size: 0.8125rem;
154
+ &:active:not(:disabled) {
155
+ background-color: var(--mat-sys-surface-dim);
136
156
  }
157
+ }
137
158
 
138
- &--type-pill.rtui-button--size-lg {
139
- padding: 0.625rem 1rem;
140
- font-size: 0.875rem;
141
- }
159
+ /* pill sizes */
160
+ :host(.rtui-button--type-pill.rtui-button--size-xs) .rtui-button__control {
161
+ padding: var(--rt-spacing-4) var(--rt-spacing-8);
162
+ font-size: var(--rt-font-size-xs);
163
+ }
142
164
 
143
- /* pill radius */
144
- &--type-pill.rtui-button--radius-none {
145
- border-radius: 0;
146
- }
165
+ :host(.rtui-button--type-pill.rtui-button--size-sm) .rtui-button__control {
166
+ padding: var(--rt-spacing-6) var(--rt-spacing-10);
167
+ font-size: var(--rt-font-size-xs);
168
+ }
147
169
 
148
- &--type-pill.rtui-button--radius-sm {
149
- border-radius: 0.25rem;
150
- }
170
+ :host(.rtui-button--type-pill.rtui-button--size-md) .rtui-button__control {
171
+ padding: var(--rt-spacing-8) var(--rt-spacing-14);
172
+ font-size: var(--rt-font-size-sm);
173
+ }
151
174
 
152
- &--type-pill.rtui-button--radius-md {
153
- border-radius: 0.5rem;
154
- }
175
+ :host(.rtui-button--type-pill.rtui-button--size-lg) .rtui-button__control {
176
+ padding: var(--rt-spacing-10) var(--rt-spacing-16);
177
+ font-size: var(--rt-font-size-sm);
178
+ }
155
179
 
156
- &--type-pill.rtui-button--radius-lg {
157
- border-radius: 0.75rem;
158
- }
180
+ /* pill radius */
181
+ :host(.rtui-button--type-pill.rtui-button--radius-none) .rtui-button__control {
182
+ border-radius: 0;
183
+ }
159
184
 
160
- &--type-pill.rtui-button--radius-full {
161
- border-radius: 1.5rem;
162
- }
185
+ :host(.rtui-button--type-pill.rtui-button--radius-sm) .rtui-button__control {
186
+ border-radius: var(--rt-radius-xs);
187
+ }
163
188
 
164
- /* pill variants */
165
- &--type-pill.rtui-button--variant-primary {
166
- background-color: var(--rt-bg-accent-primary-subtle);
167
- color: var(--rt-text-accent-primary);
189
+ :host(.rtui-button--type-pill.rtui-button--radius-md) .rtui-button__control {
190
+ border-radius: var(--rt-radius-sm);
191
+ }
168
192
 
169
- &:hover:not(:disabled) {
170
- background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 92%, var(--rt-color-neutral-100));
171
- }
193
+ :host(.rtui-button--type-pill.rtui-button--radius-lg) .rtui-button__control {
194
+ border-radius: var(--rt-radius-md);
195
+ }
172
196
 
173
- &:active:not(:disabled) {
174
- background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 84%, var(--rt-color-neutral-100));
175
- }
176
- }
197
+ :host(.rtui-button--type-pill.rtui-button--radius-full) .rtui-button__control {
198
+ border-radius: var(--rt-radius-xl);
199
+ }
177
200
 
178
- &--type-pill.rtui-button--variant-danger {
179
- background-color: var(--rt-bg-accent-danger-subtle);
180
- color: var(--rt-text-accent-danger);
201
+ /* pill variants */
202
+ :host(.rtui-button--type-pill.rtui-button--variant-primary) .rtui-button__control {
203
+ background-color: var(--rt-bg-accent-primary-subtle);
204
+ color: var(--rt-text-accent-primary);
181
205
 
182
- &:hover:not(:disabled) {
183
- background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 92%, var(--rt-color-neutral-100));
184
- }
206
+ &:hover:not(:disabled) {
207
+ background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 92%, var(--rt-color-neutral-100));
208
+ }
185
209
 
186
- &:active:not(:disabled) {
187
- background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 84%, var(--rt-color-neutral-100));
188
- }
210
+ &:active:not(:disabled) {
211
+ background-color: color-mix(in srgb, var(--rt-bg-accent-primary-subtle) 84%, var(--rt-color-neutral-100));
189
212
  }
213
+ }
190
214
 
191
- &--type-pill.rtui-button--variant-success {
192
- background-color: var(--rt-bg-accent-success-subtle);
193
- color: var(--rt-text-accent-success);
215
+ :host(.rtui-button--type-pill.rtui-button--variant-danger) .rtui-button__control {
216
+ background-color: var(--rt-bg-accent-danger-subtle);
217
+ color: var(--rt-text-accent-danger);
194
218
 
195
- &:hover:not(:disabled) {
196
- background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 92%, var(--rt-color-neutral-100));
197
- }
219
+ &:hover:not(:disabled) {
220
+ background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 92%, var(--rt-color-neutral-100));
221
+ }
198
222
 
199
- &:active:not(:disabled) {
200
- background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 84%, var(--rt-color-neutral-100));
201
- }
223
+ &:active:not(:disabled) {
224
+ background-color: color-mix(in srgb, var(--rt-bg-accent-danger-subtle) 84%, var(--rt-color-neutral-100));
202
225
  }
226
+ }
203
227
 
204
- &--type-pill.rtui-button--variant-warning {
205
- background-color: var(--rt-bg-accent-warning-subtle);
206
- color: var(--rt-text-accent-warning);
228
+ :host(.rtui-button--type-pill.rtui-button--variant-success) .rtui-button__control {
229
+ background-color: var(--rt-bg-accent-success-subtle);
230
+ color: var(--rt-text-accent-success);
207
231
 
208
- &:hover:not(:disabled) {
209
- background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 92%, var(--rt-color-neutral-100));
210
- }
232
+ &:hover:not(:disabled) {
233
+ background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 92%, var(--rt-color-neutral-100));
234
+ }
211
235
 
212
- &:active:not(:disabled) {
213
- background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 84%, var(--rt-color-neutral-100));
214
- }
236
+ &:active:not(:disabled) {
237
+ background-color: color-mix(in srgb, var(--rt-bg-accent-success-subtle) 84%, var(--rt-color-neutral-100));
215
238
  }
239
+ }
216
240
 
217
- &--type-pill.rtui-button--variant-accent {
218
- background-color: var(--rt-bg-accent-info-subtle);
219
- color: var(--rt-text-accent-info);
241
+ :host(.rtui-button--type-pill.rtui-button--variant-warning) .rtui-button__control {
242
+ background-color: var(--rt-bg-accent-warning-subtle);
243
+ color: var(--rt-text-accent-warning);
220
244
 
221
- &:hover:not(:disabled) {
222
- background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 92%, var(--rt-color-neutral-100));
223
- }
245
+ &:hover:not(:disabled) {
246
+ background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 92%, var(--rt-color-neutral-100));
247
+ }
224
248
 
225
- &:active:not(:disabled) {
226
- background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 84%, var(--rt-color-neutral-100));
227
- }
249
+ &:active:not(:disabled) {
250
+ background-color: color-mix(in srgb, var(--rt-bg-accent-warning-subtle) 84%, var(--rt-color-neutral-100));
228
251
  }
252
+ }
229
253
 
230
- /* pill appearance: text — transparent, borderless inline-text look.
231
- Radius is intentionally left to the `--radius-*` modifier (defaults to
232
- full) so a text-appearance pill keeps its pill shape. */
233
- &--type-pill.rtui-button--appearance-text {
234
- min-height: 1.875rem;
235
- padding: 0 0.625rem;
236
- background-color: transparent;
237
- color: var(--mat-sys-on-surface-variant);
238
- font-size: 1rem;
239
- font-weight: 400;
254
+ :host(.rtui-button--type-pill.rtui-button--variant-accent) .rtui-button__control {
255
+ background-color: var(--rt-bg-accent-info-subtle);
256
+ color: var(--rt-text-accent-info);
240
257
 
241
- &:hover:not(:disabled) {
242
- background-color: var(--rt-bg-base-hover);
243
- }
258
+ &:hover:not(:disabled) {
259
+ background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 92%, var(--rt-color-neutral-100));
260
+ }
244
261
 
245
- &:active:not(:disabled) {
246
- background-color: var(--rt-bg-base-hover);
247
- }
262
+ &:active:not(:disabled) {
263
+ background-color: color-mix(in srgb, var(--rt-bg-accent-info-subtle) 84%, var(--rt-color-neutral-100));
248
264
  }
249
265
  }
250
266
 
251
- /* ===================== design: material =====================
252
- Under `design: 'material'` the pill renders a NATIVE Material button (see the
253
- template) whose look is fully owned by the Material theme. The only styling
254
- the library adds is the variant mapping: `danger` re-points the button's own
255
- theme tokens at the M3 error role (M3 has no success/warning roles, so every
256
- other variant keeps the theme primary). */
257
- .rtui-button-material {
258
- rtui-spinner {
259
- display: flex;
260
- align-items: center;
261
- justify-content: center;
267
+ /* pill appearance: text — transparent, borderless inline-text look.
268
+ Radius is intentionally left to the `--radius-*` modifier (defaults to
269
+ full) so a text-appearance pill keeps its pill shape. */
270
+ :host(.rtui-button--type-pill.rtui-button--appearance-text) .rtui-button__control {
271
+ min-height: 1.875rem;
272
+ padding: 0 var(--rt-spacing-10);
273
+ background-color: transparent;
274
+ color: var(--mat-sys-on-surface-variant);
275
+ font-size: var(--rt-font-size-md);
276
+ font-weight: var(--rt-font-weight-regular);
277
+
278
+ &:hover:not(:disabled) {
279
+ background-color: var(--rt-bg-base-hover);
262
280
  }
263
281
 
264
- &--danger {
265
- --mat-button-filled-container-color: var(--mat-sys-error);
266
- --mat-button-filled-label-text-color: var(--mat-sys-on-error);
267
- --mat-button-filled-state-layer-color: var(--mat-sys-on-error);
268
- --mat-button-filled-ripple-color: color-mix(in srgb, var(--mat-sys-on-error) 12%, transparent);
269
- --mat-button-outlined-label-text-color: var(--mat-sys-error);
270
- --mat-button-outlined-outline-color: var(--mat-sys-error);
271
- --mat-button-outlined-state-layer-color: var(--mat-sys-error);
272
- --mat-button-outlined-ripple-color: color-mix(in srgb, var(--mat-sys-error) 12%, transparent);
273
- --mat-button-text-label-text-color: var(--mat-sys-error);
274
- --mat-button-text-state-layer-color: var(--mat-sys-error);
275
- --mat-button-text-ripple-color: color-mix(in srgb, var(--mat-sys-error) 12%, transparent);
276
- --mat-button-tonal-container-color: var(--mat-sys-error-container);
277
- --mat-button-tonal-label-text-color: var(--mat-sys-on-error-container);
278
- --mat-button-tonal-state-layer-color: var(--mat-sys-on-error-container);
279
- --mat-button-tonal-ripple-color: color-mix(in srgb, var(--mat-sys-on-error-container) 12%, transparent);
282
+ &:active:not(:disabled) {
283
+ background-color: var(--rt-bg-base-hover);
280
284
  }
281
285
  }
@@ -0,0 +1,38 @@
1
+ .matrix {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: var(--rt-spacing-4);
5
+
6
+ &__title {
7
+ margin: var(--rt-spacing-16) 0 var(--rt-spacing-4);
8
+ color: var(--rt-text-base-secondary);
9
+ font-size: var(--rt-font-size-xs);
10
+ font-weight: var(--rt-font-weight-semibold);
11
+ letter-spacing: 0.04em;
12
+ text-transform: uppercase;
13
+ }
14
+
15
+ &__row {
16
+ display: flex;
17
+ flex-wrap: wrap;
18
+ align-items: flex-start;
19
+ gap: var(--rt-spacing-16);
20
+
21
+ &--stretch {
22
+ display: block;
23
+ }
24
+ }
25
+
26
+ &__cell {
27
+ display: flex;
28
+ min-width: 4rem;
29
+ flex-direction: column;
30
+ align-items: flex-start;
31
+ gap: var(--rt-spacing-4);
32
+ }
33
+
34
+ &__label {
35
+ color: var(--rt-text-base-disabled);
36
+ font-size: var(--rt-font-size-xs);
37
+ }
38
+ }