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
@@ -35,6 +35,10 @@
35
35
  border-radius: var(--st-border-radius-sm, 4px);
36
36
  outline-offset: 2px;
37
37
 
38
+ st-badge {
39
+ flex-shrink: 0;
40
+ }
41
+
38
42
  &:focus-visible {
39
43
  outline: 2px solid var(--st-color-accent-default);
40
44
  }
@@ -0,0 +1,254 @@
1
+ st-number-stepper {
2
+ --st-number-stepper-bg-color: var(--st-color-bg-raised);
3
+ --st-number-stepper-bg-hover-color: var(--st-color-bg-raised);
4
+ --st-number-stepper-text-color: var(--st-color-text-primary);
5
+ --st-number-stepper-border-color: var(--st-border-muted);
6
+ --st-number-stepper-opacity-disabled: 0.55;
7
+ --st-number-stepper-height: var(--st-interactive-element-height-md);
8
+ --st-number-stepper-font-size: var(--st-font-md);
9
+ --st-number-stepper-border-radius: var(--st-border-radius-md);
10
+ --st-number-stepper-btn-width: var(--st-interactive-element-height-md);
11
+ --st-number-stepper-btn-bg: transparent;
12
+ --st-number-stepper-btn-hover-bg: var(--st-color-control-bg-hover);
13
+ --st-number-stepper-btn-active-bg: var(--st-color-control-bg-active);
14
+ --st-number-stepper-btn-color: var(--st-color-text-secondary);
15
+ --st-number-stepper-btn-hover-color: var(--st-color-text-primary);
16
+ --st-number-stepper-btn-icon-size: var(--st-font-md);
17
+ --st-number-stepper-footer-font-size: var(--st-font-sm);
18
+
19
+ display: flex;
20
+ flex-direction: column;
21
+ box-sizing: border-box;
22
+
23
+ label {
24
+ margin-bottom: var(--st-space-2);
25
+ }
26
+
27
+ &.st-size-sm {
28
+ --st-number-stepper-height: var(--st-interactive-element-height-sm);
29
+ --st-number-stepper-font-size: var(--st-font-sm);
30
+ --st-number-stepper-border-radius: var(--st-border-radius-sm);
31
+ --st-number-stepper-btn-width: var(--st-interactive-element-height-sm);
32
+ --st-number-stepper-btn-icon-size: var(--st-font-sm);
33
+ --st-number-stepper-footer-font-size: var(--st-font-xs);
34
+ }
35
+
36
+ &.st-size-md {
37
+ --st-number-stepper-height: var(--st-interactive-element-height-md);
38
+ --st-number-stepper-font-size: var(--st-font-md);
39
+ --st-number-stepper-border-radius: var(--st-border-radius-md);
40
+ --st-number-stepper-btn-width: var(--st-interactive-element-height-md);
41
+ --st-number-stepper-btn-icon-size: var(--st-font-md);
42
+ --st-number-stepper-footer-font-size: var(--st-font-sm);
43
+ }
44
+
45
+ &.st-size-lg {
46
+ --st-number-stepper-height: var(--st-interactive-element-height-lg);
47
+ --st-number-stepper-font-size: var(--st-font-md);
48
+ --st-number-stepper-border-radius: var(--st-border-radius-md);
49
+ --st-number-stepper-btn-width: var(--st-interactive-element-height-lg);
50
+ --st-number-stepper-btn-icon-size: var(--st-font-lg);
51
+ --st-number-stepper-footer-font-size: var(--st-font-sm);
52
+ }
53
+
54
+ .st-stepper-wrapper {
55
+ position: relative;
56
+ display: flex;
57
+ flex-direction: row;
58
+ align-items: stretch;
59
+ box-sizing: border-box;
60
+ height: var(--st-number-stepper-height);
61
+ min-height: var(--st-number-stepper-height);
62
+ background-color: var(--st-number-stepper-bg-color);
63
+ border: 1px solid var(--st-number-stepper-border-color);
64
+ border-radius: var(--st-number-stepper-border-radius);
65
+ overflow: hidden;
66
+ transition:
67
+ border-color var(--st-transition-fast),
68
+ background-color var(--st-transition-fast),
69
+ box-shadow var(--st-transition-fast);
70
+
71
+ &:focus-within {
72
+ outline: var(--st-focus-ring-width) var(--st-focus-ring-style) var(--st-focus-ring-color);
73
+ outline-offset: var(--st-focus-ring-offset);
74
+ }
75
+
76
+ &:hover {
77
+ background-color: var(--st-number-stepper-bg-hover-color);
78
+ }
79
+ }
80
+
81
+ input {
82
+ border: none;
83
+ background: none;
84
+ flex: 1;
85
+ min-width: 0;
86
+ width: 100%;
87
+ height: 100%;
88
+ color: var(--st-number-stepper-text-color);
89
+ font-size: var(--st-number-stepper-font-size);
90
+ font-family: inherit;
91
+ font-variant-numeric: tabular-nums;
92
+ text-align: center;
93
+ padding: 0 var(--st-space-2);
94
+ box-sizing: border-box;
95
+
96
+ &:focus-visible {
97
+ outline: none;
98
+ }
99
+ }
100
+
101
+ .st-stepper-btn {
102
+ border: none;
103
+ background: var(--st-number-stepper-btn-bg);
104
+ color: var(--st-number-stepper-btn-color);
105
+ cursor: pointer;
106
+ display: inline-flex;
107
+ align-items: center;
108
+ justify-content: center;
109
+ padding: 0;
110
+ transition:
111
+ background-color var(--st-transition-fast),
112
+ color var(--st-transition-fast);
113
+ user-select: none;
114
+
115
+ &:hover:not(:disabled) {
116
+ background-color: var(--st-number-stepper-btn-hover-bg);
117
+ color: var(--st-number-stepper-btn-hover-color);
118
+ }
119
+
120
+ &:active:not(:disabled) {
121
+ background-color: var(--st-number-stepper-btn-active-bg);
122
+ }
123
+
124
+ &:disabled {
125
+ cursor: not-allowed;
126
+ opacity: 0.4;
127
+ }
128
+
129
+ &:focus-visible {
130
+ outline: none;
131
+ }
132
+ }
133
+
134
+ &.st-layout-split {
135
+ .st-stepper-btn {
136
+ width: var(--st-number-stepper-btn-width);
137
+ min-width: var(--st-number-stepper-btn-width);
138
+ height: 100%;
139
+
140
+ st-icon {
141
+ font-size: var(--st-number-stepper-btn-icon-size);
142
+ }
143
+ }
144
+
145
+ .st-stepper-btn-dec {
146
+ border-right: 1px solid var(--st-number-stepper-border-color);
147
+ }
148
+
149
+ .st-stepper-btn-inc {
150
+ border-left: 1px solid var(--st-number-stepper-border-color);
151
+ }
152
+ }
153
+
154
+ &.st-layout-stacked {
155
+ input {
156
+ text-align: left;
157
+ padding-left: var(--st-space-3);
158
+ }
159
+
160
+ .st-stepper-stacked-actions {
161
+ display: flex;
162
+ flex-direction: column;
163
+ width: calc(var(--st-number-stepper-btn-width) * 0.75);
164
+ min-width: calc(var(--st-number-stepper-btn-width) * 0.75);
165
+ border-left: 1px solid var(--st-number-stepper-border-color);
166
+ height: 100%;
167
+
168
+ .st-stepper-btn {
169
+ flex: 1;
170
+ width: 100%;
171
+ height: 50%;
172
+
173
+ st-icon {
174
+ font-size: calc(var(--st-number-stepper-btn-icon-size) * 0.75);
175
+ }
176
+
177
+ &.st-stepper-btn-inc {
178
+ border-bottom: 1px solid var(--st-number-stepper-border-color);
179
+ }
180
+ }
181
+ }
182
+ }
183
+
184
+ &.st-state-error,
185
+ &.st-error {
186
+ --st-number-stepper-border-color: var(--st-color-feedback-error-default);
187
+
188
+ .st-stepper-wrapper:focus-within {
189
+ outline-color: var(--st-color-feedback-error-default);
190
+ }
191
+ }
192
+
193
+ &.st-state-success {
194
+ --st-number-stepper-border-color: var(--st-color-feedback-success-default);
195
+
196
+ .st-stepper-wrapper:focus-within {
197
+ outline-color: var(--st-color-feedback-success-default);
198
+ }
199
+ }
200
+
201
+ &.st-state-warning {
202
+ --st-number-stepper-border-color: var(--st-color-feedback-warning-default);
203
+
204
+ .st-stepper-wrapper:focus-within {
205
+ outline-color: var(--st-color-feedback-warning-default);
206
+ }
207
+ }
208
+
209
+ .st-stepper-footer {
210
+ display: flex;
211
+ justify-content: space-between;
212
+ align-items: flex-start;
213
+ gap: var(--st-space-2);
214
+ margin-top: var(--st-space-1);
215
+ line-height: 1.25;
216
+ }
217
+
218
+ .st-stepper-message {
219
+ font-size: var(--st-number-stepper-footer-font-size);
220
+ color: var(--st-color-text-secondary);
221
+
222
+ &.st-message-error {
223
+ color: var(--st-color-feedback-error-text);
224
+ }
225
+
226
+ &.st-message-success {
227
+ color: var(--st-color-feedback-success-text);
228
+ }
229
+
230
+ &.st-message-warning {
231
+ color: var(--st-color-feedback-warning-text);
232
+ }
233
+ }
234
+
235
+ &.st-disabled,
236
+ &[disabled],
237
+ &[data-disabled='true'],
238
+ &:has(input:disabled),
239
+ &:has([aria-disabled='true']) {
240
+ cursor: not-allowed;
241
+ opacity: var(--st-number-stepper-opacity-disabled);
242
+ pointer-events: none;
243
+
244
+ .st-stepper-wrapper {
245
+ &:hover {
246
+ background-color: var(--st-number-stepper-bg-color);
247
+ }
248
+
249
+ &:focus-within {
250
+ outline: none;
251
+ }
252
+ }
253
+ }
254
+ }
@@ -0,0 +1,115 @@
1
+ st-skeleton {
2
+ --st-skeleton-bg: var(--st-color-skeleton-bg);
3
+ --st-skeleton-shimmer: var(--st-color-skeleton-shimmer);
4
+ --st-skeleton-radius: var(--st-border-radius-sm);
5
+ --st-skeleton-gap: var(--st-space-2);
6
+ --st-skeleton-height: 1.15em;
7
+ --st-skeleton-animation-duration: 1.6s;
8
+
9
+ display: block;
10
+ box-sizing: border-box;
11
+ width: 100%;
12
+
13
+ &.st-skeleton-xs {
14
+ --st-skeleton-height: 20px;
15
+ --st-skeleton-size: 20px;
16
+ }
17
+
18
+ &.st-skeleton-sm {
19
+ --st-skeleton-height: 32px;
20
+ --st-skeleton-size: 32px;
21
+ }
22
+
23
+ &.st-skeleton-md {
24
+ --st-skeleton-height: 48px;
25
+ --st-skeleton-size: 48px;
26
+ }
27
+
28
+ &.st-skeleton-lg {
29
+ --st-skeleton-height: 72px;
30
+ --st-skeleton-size: 72px;
31
+ }
32
+
33
+ &.st-skeleton-circular {
34
+ --st-skeleton-radius: var(--st-border-radius-full);
35
+ --st-skeleton-height: var(--st-skeleton-size, 48px);
36
+ display: inline-block;
37
+ width: auto;
38
+
39
+ .st-skeleton-bone {
40
+ width: var(--st-skeleton-height);
41
+ height: var(--st-skeleton-height);
42
+ aspect-ratio: 1 / 1;
43
+ }
44
+ }
45
+
46
+ &.st-skeleton-rectangular {
47
+ --st-skeleton-radius: var(--st-border-radius-md);
48
+ --st-skeleton-height: 120px;
49
+ }
50
+
51
+ &.st-skeleton-rounded {
52
+ --st-skeleton-radius: var(--st-border-radius-full);
53
+ --st-skeleton-height: var(--st-skeleton-size, 36px);
54
+ }
55
+
56
+ .st-skeleton-group {
57
+ display: flex;
58
+ flex-direction: column;
59
+ gap: var(--st-skeleton-gap);
60
+ width: 100%;
61
+ }
62
+
63
+ .st-skeleton-bone {
64
+ box-sizing: border-box;
65
+ width: 100%;
66
+ min-height: 8px;
67
+ height: var(--st-skeleton-height);
68
+ border-radius: var(--st-skeleton-radius);
69
+ background-color: var(--st-skeleton-bg);
70
+ }
71
+
72
+ &.st-skeleton-anim-shimmer .st-skeleton-bone {
73
+ background-image: linear-gradient(
74
+ 90deg,
75
+ var(--st-skeleton-bg) 0%,
76
+ var(--st-skeleton-shimmer) 50%,
77
+ var(--st-skeleton-bg) 100%
78
+ );
79
+ background-size: 200% 100%;
80
+ background-repeat: no-repeat;
81
+ animation: st-skeleton-shimmer var(--st-skeleton-animation-duration) ease-in-out infinite;
82
+ }
83
+
84
+ &.st-skeleton-anim-pulse .st-skeleton-bone {
85
+ animation: st-skeleton-pulse var(--st-skeleton-animation-duration) ease-in-out infinite;
86
+ }
87
+
88
+ &.st-skeleton-anim-none .st-skeleton-bone {
89
+ animation: none;
90
+ }
91
+
92
+ @media (prefers-reduced-motion: reduce) {
93
+ .st-skeleton-bone {
94
+ animation: none !important;
95
+ }
96
+ }
97
+ }
98
+
99
+ @keyframes st-skeleton-shimmer {
100
+ 0% {
101
+ background-position: 200% 0;
102
+ }
103
+ 100% {
104
+ background-position: -200% 0;
105
+ }
106
+ }
107
+
108
+ @keyframes st-skeleton-pulse {
109
+ 0%, 100% {
110
+ opacity: 1;
111
+ }
112
+ 50% {
113
+ opacity: 0.4;
114
+ }
115
+ }
@@ -27,6 +27,10 @@ st-action-menu-item {
27
27
  display: flex;
28
28
  align-items: center;
29
29
  height: auto;
30
+
31
+ st-badge {
32
+ flex-shrink: 0;
33
+ }
30
34
  }
31
35
 
32
36
  .item-start:not(:empty) {
@@ -3,12 +3,14 @@ st-avatar {
3
3
  --st-avatar-bg-color: var(--st-color-bg-subtle);
4
4
  --st-avatar-text-color: var(--st-color-text-primary);
5
5
  --st-avatar-object-fit: cover;
6
+ --st-avatar-border-radius: var(--st-border-radius-full);
7
+ --st-avatar-radius-rounded: var(--st-border-radius-md);
6
8
 
7
9
  z-index: var(--z, 0);
8
10
  transition: z-index 0s;
9
11
  /* avoids flicker */
10
12
  background-color: var(--st-avatar-bg-color);
11
- border-radius: var(--avatar-size);
13
+ border-radius: var(--st-avatar-border-radius);
12
14
  overflow: hidden;
13
15
  display: inline-flex;
14
16
  align-items: center;
@@ -39,7 +41,37 @@ st-avatar {
39
41
  overflow: visible;
40
42
 
41
43
  img {
42
- border-radius: var(--avatar-size);
44
+ border-radius: var(--st-avatar-border-radius);
45
+ }
46
+ }
47
+
48
+ &.rounded {
49
+ --st-avatar-border-radius: var(--st-avatar-radius-rounded);
50
+
51
+ > st-badge:not(.st-badge-placement-inline) {
52
+ &.st-badge-placement-bottom-right {
53
+ bottom: 0;
54
+ right: 0;
55
+ transform: translate(30%, 30%);
56
+ }
57
+
58
+ &.st-badge-placement-top-right {
59
+ top: 0;
60
+ right: 0;
61
+ transform: translate(30%, -30%);
62
+ }
63
+
64
+ &.st-badge-placement-bottom-left {
65
+ bottom: 0;
66
+ left: 0;
67
+ transform: translate(-30%, 30%);
68
+ }
69
+
70
+ &.st-badge-placement-top-left {
71
+ top: 0;
72
+ left: 0;
73
+ transform: translate(-30%, -30%);
74
+ }
43
75
  }
44
76
  }
45
77
 
@@ -101,6 +133,7 @@ st-avatar.st-theme-brand {
101
133
 
102
134
  st-avatar-stack.xs>st-avatar {
103
135
  --avatar-size: 20px;
136
+ --st-avatar-radius-rounded: var(--st-border-radius-xs);
104
137
 
105
138
  > span {
106
139
  font-size: 0.6rem !important;
@@ -109,6 +142,7 @@ st-avatar-stack.xs>st-avatar {
109
142
 
110
143
  st-avatar.xs {
111
144
  --avatar-size: 20px;
145
+ --st-avatar-radius-rounded: var(--st-border-radius-xs);
112
146
 
113
147
  > span {
114
148
  font-size: 0.6rem;
@@ -117,6 +151,7 @@ st-avatar.xs {
117
151
 
118
152
  st-avatar-stack.sm>st-avatar {
119
153
  --avatar-size: 32px;
154
+ --st-avatar-radius-rounded: var(--st-border-radius-sm);
120
155
 
121
156
  > span {
122
157
  font-size: 0.8rem !important;
@@ -125,6 +160,7 @@ st-avatar-stack.sm>st-avatar {
125
160
 
126
161
  st-avatar.sm {
127
162
  --avatar-size: 32px;
163
+ --st-avatar-radius-rounded: var(--st-border-radius-sm);
128
164
 
129
165
  > span {
130
166
  font-size: 0.8rem;
@@ -133,6 +169,7 @@ st-avatar.sm {
133
169
 
134
170
  st-avatar-stack.md>st-avatar {
135
171
  --avatar-size: 48px;
172
+ --st-avatar-radius-rounded: var(--st-border-radius-md);
136
173
 
137
174
  > span {
138
175
  font-size: 1rem !important;
@@ -141,6 +178,7 @@ st-avatar-stack.md>st-avatar {
141
178
 
142
179
  st-avatar.md {
143
180
  --avatar-size: 48px;
181
+ --st-avatar-radius-rounded: var(--st-border-radius-md);
144
182
 
145
183
  > span {
146
184
  font-size: 1rem;
@@ -149,6 +187,7 @@ st-avatar.md {
149
187
 
150
188
  st-avatar-stack.lg>st-avatar {
151
189
  --avatar-size: 72px;
190
+ --st-avatar-radius-rounded: var(--st-border-radius-lg);
152
191
 
153
192
  > span {
154
193
  font-size: 1.6rem !important;
@@ -157,6 +196,7 @@ st-avatar-stack.lg>st-avatar {
157
196
 
158
197
  st-avatar.lg {
159
198
  --avatar-size: 72px;
199
+ --st-avatar-radius-rounded: var(--st-border-radius-lg);
160
200
 
161
201
  > span {
162
202
  font-size: 1.6rem;
@@ -3,12 +3,21 @@ st-checkbox {
3
3
  --st-checkbox-checked-bg-hover-color: var(--st-color-accent-hover);
4
4
  --st-checkbox-checked-icon-color: var(--st-color-text-on-accent);
5
5
  --st-checkbox-border-radius: var(--st-border-radius-sm);
6
+ --st-checkbox-border-color: var(--st-border);
6
7
 
7
8
  user-select: none;
8
9
  display: inline-flex;
9
- align-items: center;
10
+ flex-direction: column;
11
+ align-items: flex-start;
10
12
  min-height: var(--st-interactive-element-height-md);
11
- gap: var(--st-size-xxs);
13
+
14
+ .st-checkbox-row {
15
+ display: inline-flex;
16
+ align-items: center;
17
+ gap: var(--st-size-xxs);
18
+ min-height: var(--st-interactive-element-height-md);
19
+ }
20
+
12
21
  input {
13
22
  position: absolute;
14
23
  opacity: 0;
@@ -23,7 +32,7 @@ st-checkbox {
23
32
 
24
33
  input:checked + .checkbox-visual {
25
34
  background-color: var(--st-checkbox-checked-bg-color);
26
- border: none;
35
+ border-color: var(--st-checkbox-checked-bg-color);
27
36
  svg {
28
37
  justify-self: center;
29
38
  width: 100%;
@@ -34,7 +43,6 @@ st-checkbox {
34
43
 
35
44
  input:focus + .checkbox-visual {
36
45
  outline: 1px solid var(--st-color-accent-default);
37
-
38
46
  outline-offset: 2px;
39
47
  }
40
48
 
@@ -45,7 +53,7 @@ st-checkbox {
45
53
  max-width: var(--st-selection-control-size);
46
54
  max-height: var(--st-selection-control-size);
47
55
  background-color: var(--st-color-bg-raised);
48
- border: 1px solid var(--st-border);
56
+ border: 1px solid var(--st-checkbox-border-color);
49
57
  border-radius: var(--st-checkbox-border-radius);
50
58
  color: var(--st-checkbox-checked-icon-color);
51
59
  padding: 2px;
@@ -60,6 +68,7 @@ st-checkbox {
60
68
  visibility: hidden;
61
69
  }
62
70
  }
71
+
63
72
  &:hover {
64
73
  cursor: pointer;
65
74
  .checkbox-visual {
@@ -71,6 +80,58 @@ st-checkbox {
71
80
  }
72
81
  }
73
82
 
83
+ &.st-state-error,
84
+ &.st-error {
85
+ --st-checkbox-border-color: var(--st-color-feedback-error-default);
86
+ --st-checkbox-checked-bg-color: var(--st-color-feedback-error-default);
87
+ --st-checkbox-checked-bg-hover-color: var(--st-color-feedback-error-hover, var(--st-color-feedback-error-default));
88
+
89
+ input:focus + .checkbox-visual {
90
+ outline-color: var(--st-color-feedback-error-default);
91
+ }
92
+ }
93
+
94
+ &.st-state-success {
95
+ --st-checkbox-border-color: var(--st-color-feedback-success-default);
96
+ --st-checkbox-checked-bg-color: var(--st-color-feedback-success-default);
97
+ --st-checkbox-checked-bg-hover-color: var(--st-color-feedback-success-hover, var(--st-color-feedback-success-default));
98
+
99
+ input:focus + .checkbox-visual {
100
+ outline-color: var(--st-color-feedback-success-default);
101
+ }
102
+ }
103
+
104
+ &.st-state-warning {
105
+ --st-checkbox-border-color: var(--st-color-feedback-warning-default);
106
+ --st-checkbox-checked-bg-color: var(--st-color-feedback-warning-default);
107
+ --st-checkbox-checked-bg-hover-color: var(--st-color-feedback-warning-hover, var(--st-color-feedback-warning-default));
108
+ --st-checkbox-checked-icon-color: var(--st-color-feedback-warning-text);
109
+
110
+ input:focus + .checkbox-visual {
111
+ outline-color: var(--st-color-feedback-warning-default);
112
+ }
113
+ }
114
+
115
+ .st-checkbox-message {
116
+ margin-top: calc(var(--st-space-1) * -1 + 2px);
117
+ margin-left: calc(var(--st-selection-control-size) + var(--st-size-xxs));
118
+ font-size: var(--st-font-sm, 12px);
119
+ color: var(--st-color-text-secondary);
120
+ line-height: 1.25;
121
+
122
+ &.st-message-error {
123
+ color: var(--st-color-feedback-error-text);
124
+ }
125
+
126
+ &.st-message-success {
127
+ color: var(--st-color-feedback-success-text);
128
+ }
129
+
130
+ &.st-message-warning {
131
+ color: var(--st-color-feedback-warning-text);
132
+ }
133
+ }
134
+
74
135
  &[data-disabled="true"],
75
136
  &.disabled {
76
137
  cursor: not-allowed;
@@ -109,8 +109,60 @@ st-file-upload {
109
109
  color: var(--st-file-upload-text);
110
110
  }
111
111
 
112
+ &.st-state-error,
113
+ &.st-error {
114
+ --st-file-upload-border: var(--st-color-feedback-error-default);
115
+ --st-file-upload-hover-border: var(--st-color-feedback-error-hover, var(--st-color-feedback-error-default));
116
+
117
+ &:hover:not(.st-disabled) .st-file-upload-icon {
118
+ color: var(--st-color-feedback-error-default);
119
+ }
120
+
121
+ &:focus-visible:not(.st-disabled) {
122
+ outline-color: var(--st-color-feedback-error-default);
123
+ }
124
+ }
125
+
126
+ &.st-state-success {
127
+ --st-file-upload-border: var(--st-color-feedback-success-default);
128
+ --st-file-upload-hover-border: var(--st-color-feedback-success-hover, var(--st-color-feedback-success-default));
129
+
130
+ &:hover:not(.st-disabled) .st-file-upload-icon {
131
+ color: var(--st-color-feedback-success-default);
132
+ }
133
+
134
+ &:focus-visible:not(.st-disabled) {
135
+ outline-color: var(--st-color-feedback-success-default);
136
+ }
137
+ }
138
+
139
+ &.st-state-warning {
140
+ --st-file-upload-border: var(--st-color-feedback-warning-default);
141
+ --st-file-upload-hover-border: var(--st-color-feedback-warning-hover, var(--st-color-feedback-warning-default));
142
+
143
+ &:hover:not(.st-disabled) .st-file-upload-icon {
144
+ color: var(--st-color-feedback-warning-default);
145
+ }
146
+
147
+ &:focus-visible:not(.st-disabled) {
148
+ outline-color: var(--st-color-feedback-warning-default);
149
+ }
150
+ }
151
+
112
152
  .st-file-upload-hint {
113
153
  font-size: 0.8rem;
114
154
  color: var(--st-file-upload-hint);
155
+
156
+ &.st-message-error {
157
+ color: var(--st-color-feedback-error-text);
158
+ }
159
+
160
+ &.st-message-success {
161
+ color: var(--st-color-feedback-success-text);
162
+ }
163
+
164
+ &.st-message-warning {
165
+ color: var(--st-color-feedback-warning-text);
166
+ }
115
167
  }
116
168
  }