ngx-strata 0.4.5 → 0.5.1

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 (41) hide show
  1. package/assets/styles/components/_breadcrumb.scss +4 -0
  2. package/assets/styles/components/_number-stepper.scss +254 -0
  3. package/assets/styles/components/_skeleton.scss +115 -0
  4. package/assets/styles/components/action-menu.scss +4 -0
  5. package/assets/styles/components/avatar.scss +42 -2
  6. package/assets/styles/components/checkbox.scss +66 -5
  7. package/assets/styles/components/file-upload.scss +52 -0
  8. package/assets/styles/components/input-field.scss +99 -3
  9. package/assets/styles/components/notification.scss +268 -41
  10. package/assets/styles/components/radio.scss +59 -4
  11. package/assets/styles/components/segmented-control.scss +99 -23
  12. package/assets/styles/components/select.scss +53 -0
  13. package/assets/styles/components/sidemenu.scss +22 -1
  14. package/assets/styles/components/slider.scss +67 -1
  15. package/assets/styles/components/table.scss +2 -2
  16. package/assets/styles/components/tabs.scss +7 -0
  17. package/assets/styles/components/toggle.scss +59 -4
  18. package/assets/styles/public-api.scss +2 -0
  19. package/assets/styles/semantics/color-semantic.scss +8 -0
  20. package/dist/strata/strata.css +1 -1
  21. package/fesm2022/ngx-strata.mjs +997 -98
  22. package/fesm2022/ngx-strata.mjs.map +1 -1
  23. package/package.json +1 -1
  24. package/skills/ngx-strata/SKILL.md +4 -0
  25. package/skills/ngx-strata/components/badge.md +24 -0
  26. package/skills/ngx-strata/components/breadcrumb.md +4 -1
  27. package/skills/ngx-strata/components/card.md +1 -1
  28. package/skills/ngx-strata/components/checkbox.md +4 -0
  29. package/skills/ngx-strata/components/file-upload.md +4 -0
  30. package/skills/ngx-strata/components/input-field.md +9 -3
  31. package/skills/ngx-strata/components/notification.md +50 -4
  32. package/skills/ngx-strata/components/number-stepper.md +84 -0
  33. package/skills/ngx-strata/components/otp.md +2 -0
  34. package/skills/ngx-strata/components/radio.md +8 -0
  35. package/skills/ngx-strata/components/segmented-control.md +7 -0
  36. package/skills/ngx-strata/components/single-select.md +4 -0
  37. package/skills/ngx-strata/components/skeleton.md +59 -0
  38. package/skills/ngx-strata/components/slider.md +4 -0
  39. package/skills/ngx-strata/components/tabs.md +6 -1
  40. package/skills/ngx-strata/components/toggle.md +4 -0
  41. package/types/ngx-strata.d.ts +290 -28
@@ -15,6 +15,10 @@ st-input-field {
15
15
  flex-direction: column;
16
16
  box-sizing: border-box;
17
17
 
18
+ label {
19
+ margin-bottom: var(--st-space-2);
20
+ }
21
+
18
22
  &.st-size-sm {
19
23
  --st-input-field-height: var(--st-interactive-element-height-sm);
20
24
  --st-input-field-font-size: var(--st-font-sm);
@@ -62,11 +66,39 @@ st-input-field {
62
66
  }
63
67
  &:has(textarea) {
64
68
  height: auto;
69
+ flex-direction: column;
70
+ align-items: stretch;
71
+
72
+ &:has(.affix:last-of-type:not(:empty)) textarea {
73
+ padding-bottom: var(--st-space-1);
74
+ }
75
+
76
+ .affix {
77
+ &:first-of-type {
78
+ padding-left: var(--st-input-field-padding-x);
79
+ padding-top: var(--st-space-1);
80
+ padding-bottom: 0;
81
+ align-self: flex-start;
82
+ }
83
+
84
+ &:last-of-type {
85
+ align-self: flex-end;
86
+ padding-left: var(--st-input-field-padding-x);
87
+ padding-right: var(--st-input-field-padding-x);
88
+ padding-bottom: var(--st-space-2);
89
+ padding-top: 0;
90
+
91
+ &:has(button, st-button-group) {
92
+ padding-right: var(--st-space-1);
93
+ padding-bottom: var(--st-space-1);
94
+ }
95
+ }
96
+ }
65
97
  }
66
98
  }
67
99
 
68
100
  .affix {
69
- width: min-content;
101
+ width: auto;
70
102
  display: flex;
71
103
  justify-items: center;
72
104
  align-items: center;
@@ -80,10 +112,18 @@ st-input-field {
80
112
 
81
113
  &:first-of-type {
82
114
  padding-right: 0;
115
+
116
+ &:has(button, st-button-group) {
117
+ padding-left: var(--st-space-1);
118
+ }
83
119
  }
84
120
 
85
121
  &:last-of-type {
86
122
  padding-left: 0;
123
+
124
+ &:has(button, st-button-group) {
125
+ padding-right: var(--st-space-1);
126
+ }
87
127
  }
88
128
  }
89
129
 
@@ -113,21 +153,77 @@ st-input-field {
113
153
  &:focus-visible {
114
154
  outline: none;
115
155
  }
156
+
157
+ &[type='number'] {
158
+ appearance: textfield;
159
+ -moz-appearance: textfield;
160
+
161
+ &::-webkit-inner-spin-button,
162
+ &::-webkit-outer-spin-button {
163
+ -webkit-appearance: none;
164
+ margin: 0;
165
+ }
166
+ }
167
+ }
168
+
169
+ &.st-state-error,
170
+ &.st-error {
171
+ --st-input-field-border-color: var(--st-color-feedback-error-default);
172
+
173
+ .st-input-wrapper:focus-within {
174
+ outline-color: var(--st-color-feedback-error-default);
175
+ }
176
+ }
177
+
178
+ &.st-state-success {
179
+ --st-input-field-border-color: var(--st-color-feedback-success-default);
180
+
181
+ .st-input-wrapper:focus-within {
182
+ outline-color: var(--st-color-feedback-success-default);
183
+ }
184
+ }
185
+
186
+ &.st-state-warning {
187
+ --st-input-field-border-color: var(--st-color-feedback-warning-default);
188
+
189
+ .st-input-wrapper:focus-within {
190
+ outline-color: var(--st-color-feedback-warning-default);
191
+ }
116
192
  }
117
193
 
118
194
  .st-input-field-footer {
119
195
  display: flex;
120
- justify-content: flex-end;
121
- align-items: center;
196
+ justify-content: space-between;
197
+ align-items: flex-start;
198
+ gap: var(--st-space-2);
122
199
  margin-top: var(--st-space-1);
123
200
  line-height: 1.25;
124
201
  }
125
202
 
203
+ .st-input-field-message {
204
+ font-size: var(--st-input-field-counter-font-size);
205
+ color: var(--st-color-text-secondary);
206
+
207
+ &.st-message-error {
208
+ color: var(--st-color-feedback-error-text);
209
+ }
210
+
211
+ &.st-message-success {
212
+ color: var(--st-color-feedback-success-text);
213
+ }
214
+
215
+ &.st-message-warning {
216
+ color: var(--st-color-feedback-warning-text);
217
+ }
218
+ }
219
+
126
220
  .st-input-field-counter {
221
+ margin-left: auto;
127
222
  font-size: var(--st-input-field-counter-font-size);
128
223
  color: var(--st-input-field-counter-color);
129
224
  font-variant-numeric: tabular-nums;
130
225
  user-select: none;
226
+ white-space: nowrap;
131
227
  }
132
228
 
133
229
  &.st-disabled,
@@ -1,79 +1,261 @@
1
1
  st-notification {
2
- --st-notification-background-color: var(--st-color-bg-raised);
3
- --st-notification-text-color: var(--st-color-text-primary);
2
+ --st-notification-bg: var(--st-color-bg-raised);
3
+ --st-notification-border-color: var(--st-color-border-subtle);
4
+ --st-notification-border-width: var(--st-border-width);
5
+ --st-notification-border-style: solid;
6
+ --st-notification-shadow: var(--st-shadow-3);
4
7
  --st-notification-border-radius: var(--st-border-radius-lg);
8
+ --st-notification-text-primary: var(--st-color-text-primary);
9
+ --st-notification-text-secondary: var(--st-color-text-secondary);
10
+ --st-notification-min-width: 320px;
11
+ --st-notification-max-width: var(--st-breakpoint-sm);
12
+ --st-notification-min-height: calc(var(--st-space-12) + var(--st-space-1));
13
+ --st-notification-padding-y: var(--st-space-3);
14
+ --st-notification-padding-right: var(--st-space-4);
15
+ --st-notification-accent-color: var(--st-color-feedback-info-default);
16
+ --st-notification-accent-width: var(--st-space-1);
17
+ --st-notification-accent-inset: var(--st-space-3);
18
+ --st-notification-accent-radius: var(--st-border-radius-full);
19
+ --st-notification-padding-left: calc(var(--st-notification-accent-inset) * 2 + var(--st-notification-accent-width));
20
+ --st-notification-gap: var(--st-space-3);
21
+ --st-notification-content-gap: var(--st-space-1);
22
+
23
+ --st-notification-icon-bg: var(--st-color-feedback-info-subtle);
24
+ --st-notification-icon-color: var(--st-color-feedback-info-default);
25
+ --st-notification-icon-size: var(--st-space-8);
26
+ --st-notification-icon-glyph-size: var(--st-space-4);
27
+ --st-notification-icon-radius: var(--st-border-radius-md);
28
+ --st-notification-icon-offset-y: var(--st-size-xxxxs);
29
+
30
+ --st-notification-title-font-size: var(--st-font-md);
31
+ --st-notification-title-font-weight: var(--st-font-weight-semibold);
32
+ --st-notification-title-line-height: 1.25;
33
+
34
+ --st-notification-message-font-size: var(--st-font-md);
35
+ --st-notification-message-line-height: 1.4;
36
+
37
+ --st-notification-actions-gap: var(--st-space-2);
38
+ --st-notification-actions-margin-top: var(--st-space-2);
39
+
40
+ --st-notification-close-size: var(--st-interactive-element-height-sm);
41
+ --st-notification-close-glyph-size: var(--st-font-md);
42
+ --st-notification-close-radius: var(--st-border-radius-sm);
43
+ --st-notification-close-color: var(--st-color-text-tertiary);
44
+ --st-notification-close-hover-color: var(--st-color-text-primary);
45
+ --st-notification-close-hover-bg: var(--st-color-control-bg-hover);
46
+
47
+ --st-notification-focus-ring-width: var(--st-focus-ring-width);
48
+ --st-notification-focus-ring-style: var(--st-focus-ring-style);
49
+ --st-notification-focus-ring-color: var(--st-color-border-strong);
50
+ --st-notification-focus-ring-offset: var(--st-focus-ring-offset);
51
+
52
+ --st-notification-progress-color: var(--st-color-feedback-info-default);
53
+ --st-notification-progress-height: 3px;
54
+
55
+ position: relative;
5
56
  display: flex;
6
57
  flex-direction: row;
7
- padding: var(--st-size-sm);
8
- min-width: 250px;
9
- min-height: var(--st-size-lg);
10
- box-shadow: var(--st-shadow-2);
11
- background-color: var(--st-notification-background-color);
12
- color: var(--st-notification-text-color);
13
- align-content: center;
14
58
  align-items: center;
15
- justify-content: flex-start;
59
+ padding: var(--st-notification-padding-y) var(--st-notification-padding-right) var(--st-notification-padding-y) var(--st-notification-padding-left);
60
+ min-width: var(--st-notification-min-width);
61
+ max-width: var(--st-notification-max-width);
62
+ min-height: var(--st-notification-min-height);
63
+ box-sizing: border-box;
64
+ background-color: var(--st-notification-bg);
65
+ border: var(--st-notification-border-width) var(--st-notification-border-style) var(--st-notification-border-color);
66
+ box-shadow: var(--st-notification-shadow);
16
67
  border-radius: var(--st-notification-border-radius);
17
- gap: 8px;
18
- font-size: 16px;
68
+ color: var(--st-notification-text-primary);
69
+ gap: var(--st-notification-gap);
70
+ overflow: hidden;
19
71
  pointer-events: auto;
20
72
 
21
- .notification-message {
73
+ &::before {
74
+ content: '';
75
+ position: absolute;
76
+ top: var(--st-notification-accent-inset);
77
+ bottom: var(--st-notification-accent-inset);
78
+ left: var(--st-notification-accent-inset);
79
+ width: var(--st-notification-accent-width);
80
+ border-radius: var(--st-notification-accent-radius);
81
+ background-color: var(--st-notification-accent-color);
82
+ }
83
+
84
+ .st-notification-icon-wrapper {
85
+ display: flex;
86
+ align-items: center;
87
+ justify-content: center;
88
+ flex-shrink: 0;
89
+ width: var(--st-notification-icon-size);
90
+ height: var(--st-notification-icon-size);
91
+ border-radius: var(--st-notification-icon-radius);
92
+ background-color: var(--st-notification-icon-bg);
93
+ color: var(--st-notification-icon-color);
94
+
95
+ st-icon {
96
+ --st-icon-size: var(--st-notification-icon-glyph-size);
97
+ }
98
+ }
99
+
100
+ .st-notification-content {
101
+ display: flex;
102
+ flex-direction: column;
22
103
  flex: 1;
104
+ min-width: 0;
105
+ gap: var(--st-notification-content-gap);
106
+
107
+ .st-notification-title {
108
+ font-size: var(--st-notification-title-font-size);
109
+ font-weight: var(--st-notification-title-font-weight);
110
+ color: var(--st-notification-text-primary);
111
+ line-height: var(--st-notification-title-line-height);
112
+ }
113
+
114
+ .st-notification-message {
115
+ font-size: var(--st-notification-message-font-size);
116
+ color: var(--st-notification-text-secondary);
117
+ line-height: var(--st-notification-message-line-height);
118
+ word-break: break-word;
119
+ }
120
+
121
+ .st-notification-actions {
122
+ display: flex;
123
+ flex-wrap: wrap;
124
+ gap: var(--st-notification-actions-gap);
125
+ margin-top: var(--st-notification-actions-margin-top);
126
+ }
23
127
  }
24
128
 
25
- .notification-close-btn {
129
+ .st-notification-close-btn {
26
130
  display: inline-flex;
27
131
  align-items: center;
28
132
  justify-content: center;
133
+ flex-shrink: 0;
134
+ width: var(--st-notification-close-size);
135
+ height: var(--st-notification-close-size);
136
+ margin-left: auto;
29
137
  background: none;
30
138
  border: none;
31
139
  padding: 0;
32
- margin-left: auto;
33
- color: inherit;
34
- opacity: 0.7;
140
+ color: var(--st-notification-close-color);
35
141
  cursor: pointer;
36
- border-radius: var(--st-border-radius-sm);
37
- transition: opacity var(--st-transition-fast), background-color var(--st-transition-fast);
142
+ border-radius: var(--st-notification-close-radius);
143
+ transition: color var(--st-transition-fast), background-color var(--st-transition-fast);
38
144
 
39
145
  &:hover {
40
- opacity: 1;
146
+ color: var(--st-notification-close-hover-color);
147
+ background-color: var(--st-notification-close-hover-bg);
41
148
  }
42
149
 
43
150
  &:focus-visible {
44
- outline: 2px solid currentColor;
45
- outline-offset: 2px;
151
+ outline: var(--st-notification-focus-ring-width) var(--st-notification-focus-ring-style) var(--st-notification-focus-ring-color);
152
+ outline-offset: var(--st-notification-focus-ring-offset);
153
+ }
154
+
155
+ st-icon {
156
+ --st-icon-size: var(--st-notification-close-glyph-size);
46
157
  }
47
158
  }
48
159
 
49
- &.st-theme-brand {
50
- --st-notification-background-color: var(--st-color-accent-subtle);
51
- --st-notification-text-color: var(--st-color-accent-text);
160
+ &:has(.st-notification-actions),
161
+ &:has(.st-notification-title) {
162
+ align-items: flex-start;
163
+
164
+ .st-notification-icon-wrapper {
165
+ margin-top: var(--st-notification-icon-offset-y);
166
+ }
167
+
168
+ .st-notification-close-btn {
169
+ margin-top: 0;
170
+ }
171
+ }
172
+
173
+ .st-notification-progress-bar {
174
+ position: absolute;
175
+ bottom: 0;
176
+ left: 0;
177
+ right: 0;
178
+ height: var(--st-notification-progress-height);
179
+ background-color: var(--st-notification-progress-color);
180
+ transform-origin: left;
181
+ animation: st-notification-progress-anim var(--st-notification-duration, 3000ms) linear forwards;
182
+ }
183
+
184
+ &.st-is-paused .st-notification-progress-bar {
185
+ animation-play-state: paused;
52
186
  }
53
187
 
54
188
  &.st-theme-info {
55
- --st-notification-background-color: var(--st-color-feedback-info-subtle);
56
- --st-notification-text-color: var(--st-color-feedback-info-text);
189
+ --st-notification-accent-color: var(--st-color-feedback-info-default);
190
+ --st-notification-icon-bg: var(--st-color-feedback-info-subtle);
191
+ --st-notification-icon-color: var(--st-color-feedback-info-default);
192
+ --st-notification-progress-color: var(--st-color-feedback-info-default);
57
193
  }
58
194
 
59
195
  &.st-theme-success {
60
- --st-notification-background-color: var(--st-color-feedback-success-subtle);
61
- --st-notification-text-color: var(--st-color-feedback-success-text);
196
+ --st-notification-accent-color: var(--st-color-feedback-success-default);
197
+ --st-notification-icon-bg: var(--st-color-feedback-success-subtle);
198
+ --st-notification-icon-color: var(--st-color-feedback-success-default);
199
+ --st-notification-progress-color: var(--st-color-feedback-success-default);
200
+ }
201
+
202
+ &.st-theme-warning {
203
+ --st-notification-accent-color: var(--st-color-feedback-warning-default);
204
+ --st-notification-icon-bg: var(--st-color-feedback-warning-subtle);
205
+ --st-notification-icon-color: var(--st-color-feedback-warning-default);
206
+ --st-notification-progress-color: var(--st-color-feedback-warning-default);
62
207
  }
63
208
 
64
209
  &.st-theme-danger {
65
- --st-notification-background-color: var(--st-color-feedback-error-subtle);
66
- --st-notification-text-color: var(--st-color-feedback-error-text);
210
+ --st-notification-accent-color: var(--st-color-feedback-error-default);
211
+ --st-notification-icon-bg: var(--st-color-feedback-error-subtle);
212
+ --st-notification-icon-color: var(--st-color-feedback-error-default);
213
+ --st-notification-progress-color: var(--st-color-feedback-error-default);
67
214
  }
68
215
 
69
- &.st-theme-warning {
70
- --st-notification-background-color: var(--st-color-feedback-warning-subtle);
71
- --st-notification-text-color: var(--st-color-feedback-warning-text);
216
+ &.st-theme-brand {
217
+ --st-notification-accent-color: var(--st-color-accent-default);
218
+ --st-notification-icon-bg: var(--st-color-accent-subtle);
219
+ --st-notification-icon-color: var(--st-color-accent-default);
220
+ --st-notification-progress-color: var(--st-color-accent-default);
72
221
  }
73
222
  }
74
223
 
224
+ @keyframes st-notification-progress-anim {
225
+ from {
226
+ transform: scaleX(1);
227
+ }
228
+ to {
229
+ transform: scaleX(0);
230
+ }
231
+ }
75
232
 
76
233
  st-notification-container {
234
+ --st-notification-container-gap: var(--st-space-2);
235
+ --st-notification-container-padding-mobile: var(--st-space-3);
236
+ --st-notification-container-padding-desktop: var(--st-space-4);
237
+ --st-notification-container-z-index: 1100;
238
+
239
+ --st-notification-overflow-bg: var(--st-color-bg-raised);
240
+ --st-notification-overflow-border-color: var(--st-color-border-subtle);
241
+ --st-notification-overflow-border-width: var(--st-border-width);
242
+ --st-notification-overflow-border-style: solid;
243
+ --st-notification-overflow-shadow: var(--st-shadow-2);
244
+ --st-notification-overflow-text-color: var(--st-color-text-secondary);
245
+ --st-notification-overflow-font-size: var(--st-font-sm);
246
+ --st-notification-overflow-font-weight: var(--st-font-weight-medium);
247
+ --st-notification-overflow-line-height: 1.4;
248
+ --st-notification-overflow-padding-y: var(--st-space-1);
249
+ --st-notification-overflow-padding-x: var(--st-space-3);
250
+ --st-notification-overflow-gap: var(--st-space-2);
251
+ --st-notification-overflow-radius: var(--st-border-radius-full);
252
+ --st-notification-overflow-clear-size: calc(var(--st-space-4) + var(--st-size-xxxxs));
253
+ --st-notification-overflow-clear-glyph-size: var(--st-font-sm);
254
+ --st-notification-overflow-clear-radius: var(--st-border-radius-full);
255
+ --st-notification-overflow-clear-color: var(--st-color-text-tertiary);
256
+ --st-notification-overflow-clear-hover-color: var(--st-color-text-primary);
257
+ --st-notification-overflow-clear-hover-bg: var(--st-color-control-bg-hover);
258
+
77
259
  width: 100%;
78
260
  height: 100%;
79
261
  position: fixed;
@@ -81,21 +263,66 @@ st-notification-container {
81
263
  left: 0;
82
264
  overflow: hidden;
83
265
  display: flex;
84
- z-index: 1100;
266
+ z-index: var(--st-notification-container-z-index);
85
267
  pointer-events: none;
86
- gap: var(--st-size-xs);
87
-
88
- // Small screen defaults: top center, full width
268
+ gap: var(--st-notification-container-gap);
89
269
  flex-direction: column;
90
270
  align-items: stretch;
91
271
  justify-content: flex-start;
92
- padding: var(--st-size-sm);
272
+ padding: var(--st-notification-container-padding-mobile);
93
273
 
94
- // Big screen overrides: bottom right, stacking upwards
95
274
  @media (min-width: 768px) {
96
275
  flex-direction: column-reverse;
97
276
  align-items: flex-end;
98
277
  justify-content: flex-start;
99
- padding: var(--st-size-md);
278
+ padding: var(--st-notification-container-padding-desktop);
279
+ }
280
+
281
+ .st-notification-overflow {
282
+ display: inline-flex;
283
+ align-items: center;
284
+ align-self: center;
285
+ gap: var(--st-notification-overflow-gap);
286
+ padding: var(--st-notification-overflow-padding-y) var(--st-notification-overflow-padding-x);
287
+ background-color: var(--st-notification-overflow-bg);
288
+ border: var(--st-notification-overflow-border-width) var(--st-notification-overflow-border-style) var(--st-notification-overflow-border-color);
289
+ border-radius: var(--st-notification-overflow-radius);
290
+ box-shadow: var(--st-notification-overflow-shadow);
291
+ color: var(--st-notification-overflow-text-color);
292
+ font-size: var(--st-notification-overflow-font-size);
293
+ font-weight: var(--st-notification-overflow-font-weight);
294
+ pointer-events: auto;
295
+
296
+ @media (min-width: 768px) {
297
+ align-self: flex-end;
298
+ }
299
+
300
+ .st-notification-overflow-text {
301
+ line-height: var(--st-notification-overflow-line-height);
302
+ }
303
+
304
+ .st-notification-overflow-clear {
305
+ display: inline-flex;
306
+ align-items: center;
307
+ justify-content: center;
308
+ width: var(--st-notification-overflow-clear-size);
309
+ height: var(--st-notification-overflow-clear-size);
310
+ padding: 0;
311
+ border: none;
312
+ background: transparent;
313
+ border-radius: var(--st-notification-overflow-clear-radius);
314
+ color: var(--st-notification-overflow-clear-color);
315
+ cursor: pointer;
316
+ transition: color var(--st-transition-fast), background-color var(--st-transition-fast);
317
+
318
+ &:hover {
319
+ color: var(--st-notification-overflow-clear-hover-color);
320
+ background-color: var(--st-notification-overflow-clear-hover-bg);
321
+ }
322
+
323
+ st-icon {
324
+ --st-icon-size: var(--st-notification-overflow-clear-glyph-size);
325
+ }
326
+ }
100
327
  }
101
328
  }
@@ -1,13 +1,38 @@
1
1
  st-radio-group {
2
2
  display: flex;
3
3
  flex-direction: column;
4
- gap: var(--st-size-xs);
4
+ gap: var(--st-size-xxs);
5
+
6
+ .st-radio-group-radios {
7
+ display: flex;
8
+ flex-direction: column;
9
+ gap: var(--st-size-xs);
10
+ }
11
+
12
+ .st-radio-message {
13
+ margin-top: var(--st-space-1);
14
+ font-size: var(--st-font-sm, 12px);
15
+ color: var(--st-color-text-secondary);
16
+ line-height: 1.25;
17
+
18
+ &.st-message-error {
19
+ color: var(--st-color-feedback-error-text);
20
+ }
21
+
22
+ &.st-message-success {
23
+ color: var(--st-color-feedback-success-text);
24
+ }
25
+
26
+ &.st-message-warning {
27
+ color: var(--st-color-feedback-warning-text);
28
+ }
29
+ }
5
30
  }
6
31
 
7
32
  st-radio {
8
33
  --st-radio-checked-bg-color: var(--st-color-accent-default);
9
34
  --st-radio-checked-bg-hover-color: var(--st-color-accent-hover);
10
-
35
+ --st-radio-border-color: var(--st-border);
11
36
 
12
37
  user-select: none;
13
38
  display: inline-flex;
@@ -34,8 +59,7 @@ st-radio {
34
59
  min-width: var(--st-selection-control-size);
35
60
  min-height: var(--st-selection-control-size);
36
61
  background-color: var(--st-color-bg-raised);
37
-
38
- border: 1px solid var(--st-border);
62
+ border: 1px solid var(--st-radio-border-color);
39
63
  border-radius: 50%;
40
64
  display: grid;
41
65
  place-items: center;
@@ -99,4 +123,35 @@ st-radio {
99
123
  }
100
124
  }
101
125
  }
126
+
127
+ &.st-state-error,
128
+ &.st-error {
129
+ --st-radio-border-color: var(--st-color-feedback-error-default);
130
+ --st-radio-checked-bg-color: var(--st-color-feedback-error-default);
131
+ --st-radio-checked-bg-hover-color: var(--st-color-feedback-error-hover, var(--st-color-feedback-error-default));
132
+
133
+ input:focus + .radio-visual {
134
+ outline-color: var(--st-color-feedback-error-default);
135
+ }
136
+ }
137
+
138
+ &.st-state-success {
139
+ --st-radio-border-color: var(--st-color-feedback-success-default);
140
+ --st-radio-checked-bg-color: var(--st-color-feedback-success-default);
141
+ --st-radio-checked-bg-hover-color: var(--st-color-feedback-success-hover, var(--st-color-feedback-success-default));
142
+
143
+ input:focus + .radio-visual {
144
+ outline-color: var(--st-color-feedback-success-default);
145
+ }
146
+ }
147
+
148
+ &.st-state-warning {
149
+ --st-radio-border-color: var(--st-color-feedback-warning-default);
150
+ --st-radio-checked-bg-color: var(--st-color-feedback-warning-default);
151
+ --st-radio-checked-bg-hover-color: var(--st-color-feedback-warning-hover, var(--st-color-feedback-warning-default));
152
+
153
+ input:focus + .radio-visual {
154
+ outline-color: var(--st-color-feedback-warning-default);
155
+ }
156
+ }
102
157
  }