@db-ux/core-components 3.1.20 → 4.0.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.
@@ -33,315 +33,9 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
33
33
 
34
34
  @layer variables {}
35
35
 
36
- .db-switch[data-emphasis=strong] > input {
37
- /* stylelint-disable-next-line at-rule-prelude-no-invalid,layer-name-pattern */
38
- }
39
- @layer variables {
40
- .db-switch[data-emphasis=strong] > input {
41
- --db-adaptive-bg-basic-level-1-default: var(
42
- --db-critical-bg-basic-level-1-default
43
- );
44
- --db-adaptive-bg-basic-level-1-hovered: var(
45
- --db-critical-bg-basic-level-1-hovered
46
- );
47
- --db-adaptive-bg-basic-level-1-pressed: var(
48
- --db-critical-bg-basic-level-1-pressed
49
- );
50
- --db-adaptive-bg-basic-level-2-default: var(
51
- --db-critical-bg-basic-level-2-default
52
- );
53
- --db-adaptive-bg-basic-level-2-hovered: var(
54
- --db-critical-bg-basic-level-2-hovered
55
- );
56
- --db-adaptive-bg-basic-level-2-pressed: var(
57
- --db-critical-bg-basic-level-2-pressed
58
- );
59
- --db-adaptive-bg-basic-level-3-default: var(
60
- --db-critical-bg-basic-level-3-default
61
- );
62
- --db-adaptive-bg-basic-level-3-hovered: var(
63
- --db-critical-bg-basic-level-3-hovered
64
- );
65
- --db-adaptive-bg-basic-level-3-pressed: var(
66
- --db-critical-bg-basic-level-3-pressed
67
- );
68
- --db-adaptive-bg-basic-transparent-full-default: var(
69
- --db-critical-bg-basic-transparent-full-default
70
- );
71
- --db-adaptive-bg-basic-transparent-semi-default: var(
72
- --db-critical-bg-basic-transparent-semi-default
73
- );
74
- --db-adaptive-bg-basic-transparent-full-hovered: var(
75
- --db-critical-bg-basic-transparent-full-hovered
76
- );
77
- --db-adaptive-bg-basic-transparent-full-pressed: var(
78
- --db-critical-bg-basic-transparent-full-pressed
79
- );
80
- --db-adaptive-bg-basic-transparent-semi-hovered: var(
81
- --db-critical-bg-basic-transparent-semi-hovered
82
- );
83
- --db-adaptive-bg-basic-transparent-semi-pressed: var(
84
- --db-critical-bg-basic-transparent-semi-pressed
85
- );
86
- --db-adaptive-on-bg-basic-emphasis-100-default: var(
87
- --db-critical-on-bg-basic-emphasis-100-default
88
- );
89
- --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
90
- --db-critical-on-bg-basic-emphasis-100-hovered
91
- );
92
- --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
93
- --db-critical-on-bg-basic-emphasis-100-pressed
94
- );
95
- --db-adaptive-on-bg-basic-emphasis-90-default: var(
96
- --db-critical-on-bg-basic-emphasis-90-default
97
- );
98
- --db-adaptive-on-bg-basic-emphasis-90-hovered: var(
99
- --db-critical-on-bg-basic-emphasis-90-hovered
100
- );
101
- --db-adaptive-on-bg-basic-emphasis-90-pressed: var(
102
- --db-critical-on-bg-basic-emphasis-90-pressed
103
- );
104
- --db-adaptive-on-bg-basic-emphasis-80-default: var(
105
- --db-critical-on-bg-basic-emphasis-80-default
106
- );
107
- --db-adaptive-on-bg-basic-emphasis-80-hovered: var(
108
- --db-critical-on-bg-basic-emphasis-80-hovered
109
- );
110
- --db-adaptive-on-bg-basic-emphasis-80-pressed: var(
111
- --db-critical-on-bg-basic-emphasis-80-pressed
112
- );
113
- --db-adaptive-on-bg-basic-emphasis-70-default: var(
114
- --db-critical-on-bg-basic-emphasis-70-default
115
- );
116
- --db-adaptive-on-bg-basic-emphasis-70-hovered: var(
117
- --db-critical-on-bg-basic-emphasis-70-hovered
118
- );
119
- --db-adaptive-on-bg-basic-emphasis-70-pressed: var(
120
- --db-critical-on-bg-basic-emphasis-70-pressed
121
- );
122
- --db-adaptive-on-bg-basic-emphasis-60-default: var(
123
- --db-critical-on-bg-basic-emphasis-60-default
124
- );
125
- --db-adaptive-on-bg-basic-emphasis-50-default: var(
126
- --db-critical-on-bg-basic-emphasis-50-default
127
- );
128
- --db-adaptive-bg-inverted-contrast-max-default: var(
129
- --db-critical-bg-inverted-contrast-max-default
130
- );
131
- --db-adaptive-bg-inverted-contrast-max-hovered: var(
132
- --db-critical-bg-inverted-contrast-max-hovered
133
- );
134
- --db-adaptive-bg-inverted-contrast-max-pressed: var(
135
- --db-critical-bg-inverted-contrast-max-pressed
136
- );
137
- --db-adaptive-bg-inverted-contrast-high-default: var(
138
- --db-critical-bg-inverted-contrast-high-default
139
- );
140
- --db-adaptive-bg-inverted-contrast-high-hovered: var(
141
- --db-critical-bg-inverted-contrast-high-hovered
142
- );
143
- --db-adaptive-bg-inverted-contrast-high-pressed: var(
144
- --db-critical-bg-inverted-contrast-high-pressed
145
- );
146
- --db-adaptive-bg-inverted-contrast-low-default: var(
147
- --db-critical-bg-inverted-contrast-low-default
148
- );
149
- --db-adaptive-bg-inverted-contrast-low-hovered: var(
150
- --db-critical-bg-inverted-contrast-low-hovered
151
- );
152
- --db-adaptive-bg-inverted-contrast-low-pressed: var(
153
- --db-critical-bg-inverted-contrast-low-pressed
154
- );
155
- --db-adaptive-on-bg-inverted-default: var(
156
- --db-critical-on-bg-inverted-default
157
- );
158
- --db-adaptive-on-bg-inverted-hovered: var(
159
- --db-critical-on-bg-inverted-hovered
160
- );
161
- --db-adaptive-on-bg-inverted-pressed: var(
162
- --db-critical-on-bg-inverted-pressed
163
- );
164
- --db-adaptive-origin-default: var(--db-critical-origin-default);
165
- --db-adaptive-origin-hovered: var(--db-critical-origin-hovered);
166
- --db-adaptive-origin-pressed: var(--db-critical-origin-pressed);
167
- --db-adaptive-on-origin-default: var(
168
- --db-critical-on-origin-default
169
- );
170
- --db-adaptive-bg-vibrant-default: var(
171
- --db-critical-bg-vibrant-default
172
- );
173
- --db-adaptive-bg-vibrant-hovered: var(
174
- --db-critical-bg-vibrant-hovered
175
- );
176
- --db-adaptive-bg-vibrant-pressed: var(
177
- --db-critical-bg-vibrant-pressed
178
- );
179
- --db-adaptive-on-bg-vibrant-default: var(
180
- --db-critical-on-bg-vibrant-default
181
- );
182
- --db-adaptive-on-bg-vibrant-hovered: var(
183
- --db-critical-on-bg-vibrant-hovered
184
- );
185
- --db-adaptive-on-bg-vibrant-pressed: var(
186
- --db-critical-on-bg-vibrant-pressed
187
- );
188
- }
189
- }
36
+ @layer variables {}
190
37
 
191
- .db-switch[data-emphasis=strong] > input:checked {
192
- /* stylelint-disable-next-line at-rule-prelude-no-invalid,layer-name-pattern */
193
- }
194
- @layer variables {
195
- .db-switch[data-emphasis=strong] > input:checked {
196
- --db-adaptive-bg-basic-level-1-default: var(
197
- --db-successful-bg-basic-level-1-default
198
- );
199
- --db-adaptive-bg-basic-level-1-hovered: var(
200
- --db-successful-bg-basic-level-1-hovered
201
- );
202
- --db-adaptive-bg-basic-level-1-pressed: var(
203
- --db-successful-bg-basic-level-1-pressed
204
- );
205
- --db-adaptive-bg-basic-level-2-default: var(
206
- --db-successful-bg-basic-level-2-default
207
- );
208
- --db-adaptive-bg-basic-level-2-hovered: var(
209
- --db-successful-bg-basic-level-2-hovered
210
- );
211
- --db-adaptive-bg-basic-level-2-pressed: var(
212
- --db-successful-bg-basic-level-2-pressed
213
- );
214
- --db-adaptive-bg-basic-level-3-default: var(
215
- --db-successful-bg-basic-level-3-default
216
- );
217
- --db-adaptive-bg-basic-level-3-hovered: var(
218
- --db-successful-bg-basic-level-3-hovered
219
- );
220
- --db-adaptive-bg-basic-level-3-pressed: var(
221
- --db-successful-bg-basic-level-3-pressed
222
- );
223
- --db-adaptive-bg-basic-transparent-full-default: var(
224
- --db-successful-bg-basic-transparent-full-default
225
- );
226
- --db-adaptive-bg-basic-transparent-semi-default: var(
227
- --db-successful-bg-basic-transparent-semi-default
228
- );
229
- --db-adaptive-bg-basic-transparent-full-hovered: var(
230
- --db-successful-bg-basic-transparent-full-hovered
231
- );
232
- --db-adaptive-bg-basic-transparent-full-pressed: var(
233
- --db-successful-bg-basic-transparent-full-pressed
234
- );
235
- --db-adaptive-bg-basic-transparent-semi-hovered: var(
236
- --db-successful-bg-basic-transparent-semi-hovered
237
- );
238
- --db-adaptive-bg-basic-transparent-semi-pressed: var(
239
- --db-successful-bg-basic-transparent-semi-pressed
240
- );
241
- --db-adaptive-on-bg-basic-emphasis-100-default: var(
242
- --db-successful-on-bg-basic-emphasis-100-default
243
- );
244
- --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
245
- --db-successful-on-bg-basic-emphasis-100-hovered
246
- );
247
- --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
248
- --db-successful-on-bg-basic-emphasis-100-pressed
249
- );
250
- --db-adaptive-on-bg-basic-emphasis-90-default: var(
251
- --db-successful-on-bg-basic-emphasis-90-default
252
- );
253
- --db-adaptive-on-bg-basic-emphasis-90-hovered: var(
254
- --db-successful-on-bg-basic-emphasis-90-hovered
255
- );
256
- --db-adaptive-on-bg-basic-emphasis-90-pressed: var(
257
- --db-successful-on-bg-basic-emphasis-90-pressed
258
- );
259
- --db-adaptive-on-bg-basic-emphasis-80-default: var(
260
- --db-successful-on-bg-basic-emphasis-80-default
261
- );
262
- --db-adaptive-on-bg-basic-emphasis-80-hovered: var(
263
- --db-successful-on-bg-basic-emphasis-80-hovered
264
- );
265
- --db-adaptive-on-bg-basic-emphasis-80-pressed: var(
266
- --db-successful-on-bg-basic-emphasis-80-pressed
267
- );
268
- --db-adaptive-on-bg-basic-emphasis-70-default: var(
269
- --db-successful-on-bg-basic-emphasis-70-default
270
- );
271
- --db-adaptive-on-bg-basic-emphasis-70-hovered: var(
272
- --db-successful-on-bg-basic-emphasis-70-hovered
273
- );
274
- --db-adaptive-on-bg-basic-emphasis-70-pressed: var(
275
- --db-successful-on-bg-basic-emphasis-70-pressed
276
- );
277
- --db-adaptive-on-bg-basic-emphasis-60-default: var(
278
- --db-successful-on-bg-basic-emphasis-60-default
279
- );
280
- --db-adaptive-on-bg-basic-emphasis-50-default: var(
281
- --db-successful-on-bg-basic-emphasis-50-default
282
- );
283
- --db-adaptive-bg-inverted-contrast-max-default: var(
284
- --db-successful-bg-inverted-contrast-max-default
285
- );
286
- --db-adaptive-bg-inverted-contrast-max-hovered: var(
287
- --db-successful-bg-inverted-contrast-max-hovered
288
- );
289
- --db-adaptive-bg-inverted-contrast-max-pressed: var(
290
- --db-successful-bg-inverted-contrast-max-pressed
291
- );
292
- --db-adaptive-bg-inverted-contrast-high-default: var(
293
- --db-successful-bg-inverted-contrast-high-default
294
- );
295
- --db-adaptive-bg-inverted-contrast-high-hovered: var(
296
- --db-successful-bg-inverted-contrast-high-hovered
297
- );
298
- --db-adaptive-bg-inverted-contrast-high-pressed: var(
299
- --db-successful-bg-inverted-contrast-high-pressed
300
- );
301
- --db-adaptive-bg-inverted-contrast-low-default: var(
302
- --db-successful-bg-inverted-contrast-low-default
303
- );
304
- --db-adaptive-bg-inverted-contrast-low-hovered: var(
305
- --db-successful-bg-inverted-contrast-low-hovered
306
- );
307
- --db-adaptive-bg-inverted-contrast-low-pressed: var(
308
- --db-successful-bg-inverted-contrast-low-pressed
309
- );
310
- --db-adaptive-on-bg-inverted-default: var(
311
- --db-successful-on-bg-inverted-default
312
- );
313
- --db-adaptive-on-bg-inverted-hovered: var(
314
- --db-successful-on-bg-inverted-hovered
315
- );
316
- --db-adaptive-on-bg-inverted-pressed: var(
317
- --db-successful-on-bg-inverted-pressed
318
- );
319
- --db-adaptive-origin-default: var(--db-successful-origin-default);
320
- --db-adaptive-origin-hovered: var(--db-successful-origin-hovered);
321
- --db-adaptive-origin-pressed: var(--db-successful-origin-pressed);
322
- --db-adaptive-on-origin-default: var(
323
- --db-successful-on-origin-default
324
- );
325
- --db-adaptive-bg-vibrant-default: var(
326
- --db-successful-bg-vibrant-default
327
- );
328
- --db-adaptive-bg-vibrant-hovered: var(
329
- --db-successful-bg-vibrant-hovered
330
- );
331
- --db-adaptive-bg-vibrant-pressed: var(
332
- --db-successful-bg-vibrant-pressed
333
- );
334
- --db-adaptive-on-bg-vibrant-default: var(
335
- --db-successful-on-bg-vibrant-default
336
- );
337
- --db-adaptive-on-bg-vibrant-hovered: var(
338
- --db-successful-on-bg-vibrant-hovered
339
- );
340
- --db-adaptive-on-bg-vibrant-pressed: var(
341
- --db-successful-on-bg-vibrant-pressed
342
- );
343
- }
344
- }
38
+ @layer variables {}
345
39
 
346
40
  @layer variables {}
347
41
 
@@ -417,12 +111,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
417
111
 
418
112
  @layer variables {}
419
113
 
420
- .db-switch[data-size=small], .db-switch > input {
114
+ .db-switch[data-size=small], .db-switch input {
421
115
  font: var(--db-type-body-sm);
422
116
  /* stylelint-disable-next-line at-rule-prelude-no-invalid,layer-name-pattern */
423
117
  }
424
118
  @layer variables {
425
- .db-switch[data-size=small], .db-switch > input {
119
+ .db-switch[data-size=small], .db-switch input {
426
120
  /* Those variables are only for components to calculate heights and change icons */
427
121
  --db-icon-font-weight: var(--db-base-body-icon-weight-sm);
428
122
  --db-icon-font-size: var(--db-base-body-icon-font-size-sm);
@@ -433,12 +127,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
433
127
 
434
128
  @layer variables {}
435
129
 
436
- .db-switch[data-size=small] > input {
130
+ .db-switch[data-size=small] input {
437
131
  font: var(--db-type-body-xs);
438
132
  /* stylelint-disable-next-line at-rule-prelude-no-invalid,layer-name-pattern */
439
133
  }
440
134
  @layer variables {
441
- .db-switch[data-size=small] > input {
135
+ .db-switch[data-size=small] input {
442
136
  /* Those variables are only for components to calculate heights and change icons */
443
137
  --db-icon-font-weight: var(--db-base-body-icon-weight-xs);
444
138
  --db-icon-font-size: var(--db-base-body-icon-font-size-xs);
@@ -459,7 +153,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
459
153
 
460
154
  @layer variables {}
461
155
 
462
- .db-switch > input:not([data-show-icon-trailing=false])::after, .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
156
+ .db-switch input:not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
463
157
  color: var(--db-icon-color, inherit);
464
158
  display: inline-block;
465
159
  /*** icon - placeholder ***/
@@ -479,21 +173,22 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
479
173
  overflow: clip;
480
174
  vertical-align: var(--db-icon-vertical-align, middle);
481
175
  block-size: var(--db-icon-font-size, 1.5rem);
482
- inline-size: var(--db-icon-font-size, 1.5rem);
176
+ aspect-ratio: 1;
177
+ flex-shrink: 0;
483
178
  content: var(--db-icon, attr(data-icon));
484
179
  }
485
180
  @supports (content: ""/"") {
486
- .db-switch > input:not([data-show-icon-trailing=false])::after, .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
181
+ .db-switch input:not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
487
182
  content: var(--db-icon, attr(data-icon))/"";
488
183
  }
489
184
  }
490
185
  @media aural {
491
- .db-switch > input:not([data-show-icon-trailing=false])::after, .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
186
+ .db-switch input:not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
492
187
  content: none;
493
188
  }
494
189
  }
495
190
  @media speech {
496
- .db-switch > input:not([data-show-icon-trailing=false])::after, .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
191
+ .db-switch input:not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
497
192
  content: none;
498
193
  }
499
194
  }
@@ -502,6 +197,15 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
502
197
  * @mixin screen-min-max
503
198
  * @param $data an object like (min:"sm", max:"lg") or (min: "sm")
504
199
  */
200
+ .db-switch > db-infotext > .db-infotext,
201
+ .db-switch > .db-infotext {
202
+ margin-block-start: var(--db-spacing-fixed-2xs);
203
+ }
204
+ .db-switch > db-infotext > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]),
205
+ .db-switch > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]) {
206
+ display: none;
207
+ }
208
+
505
209
  /* stylelint-disable-next-line db-ux/use-spacings */
506
210
  .db-switch:not(:has(input:disabled)):has(input:active, > label:active, :is(label):active) input::before {
507
211
  inline-size: calc(calc(var(--db-icon-font-size)) - 0.125rem * 2 + var(--db-spacing-fixed-2xs));
@@ -513,6 +217,9 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
513
217
 
514
218
  .db-switch {
515
219
  user-select: none;
220
+ /* stylelint-disable-next-line at-rule-empty-line-before */
221
+ /* stylelint-disable-next-line at-rule-empty-line-before */
222
+ /* Label position (leading/trailing) */
516
223
  }
517
224
  .db-switch:not([data-hide-asterisk=true]):has(input:required):is(label)::after,
518
225
  .db-switch:not([data-hide-asterisk=true]):has(input:required) > label::after, .db-switch:not([data-hide-asterisk=true])[data-required=true]:is(label)::after,
@@ -588,10 +295,212 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
588
295
  cursor: var(--db-overwrite-cursor, pointer);
589
296
  background-color: var(--db-adaptive-bg-basic-transparent-full-pressed);
590
297
  }
591
- .db-switch > input {
298
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) {
299
+ --db-check-element-border-color: var(
300
+ --db-successful-on-bg-basic-emphasis-70-default
301
+ );
302
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
303
+ --db-successful-on-bg-basic-emphasis-80-default
304
+ );
305
+ --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
306
+ --db-successful-on-bg-basic-emphasis-80-hovered
307
+ );
308
+ --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
309
+ --db-successful-on-bg-basic-emphasis-80-pressed
310
+ );
311
+ --db-adaptive-on-bg-inverted-default: var(
312
+ --db-successful-on-bg-inverted-default
313
+ );
314
+ }
315
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
316
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext {
317
+ /* stylelint-disable-next-line at-rule-empty-line-before */
318
+ }
319
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
320
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
321
+ display: flex;
322
+ }
323
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
324
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
325
+ display: none;
326
+ }
327
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) input:not(:checked) {
328
+ --db-adaptive-bg-basic-transparent-full-default: var(
329
+ --db-successful-bg-basic-transparent-full-default
330
+ );
331
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
332
+ --db-successful-bg-basic-transparent-full-hovered
333
+ );
334
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
335
+ --db-successful-bg-basic-transparent-full-pressed
336
+ );
337
+ }
338
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) input:checked {
339
+ --db-adaptive-bg-basic-transparent-full-default: var(
340
+ --db-successful-bg-inverted-contrast-low-default
341
+ );
342
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
343
+ --db-successful-bg-inverted-contrast-low-hovered
344
+ );
345
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
346
+ --db-successful-bg-inverted-contrast-low-pressed
347
+ );
348
+ }
349
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) {
350
+ --db-check-element-border-color: var(
351
+ --db-successful-on-bg-basic-emphasis-70-default
352
+ );
353
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
354
+ --db-successful-on-bg-basic-emphasis-80-default
355
+ );
356
+ --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
357
+ --db-successful-on-bg-basic-emphasis-80-hovered
358
+ );
359
+ --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
360
+ --db-successful-on-bg-basic-emphasis-80-pressed
361
+ );
362
+ --db-adaptive-on-bg-inverted-default: var(
363
+ --db-successful-on-bg-inverted-default
364
+ );
365
+ }
366
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
367
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext, .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
368
+ .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext {
369
+ /* stylelint-disable-next-line at-rule-empty-line-before */
370
+ }
371
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
372
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
373
+ .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
374
+ display: flex;
375
+ }
376
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
377
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
378
+ .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
379
+ display: none;
380
+ }
381
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) input:not(:checked), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) input:not(:checked) {
382
+ --db-adaptive-bg-basic-transparent-full-default: var(
383
+ --db-successful-bg-basic-transparent-full-default
384
+ );
385
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
386
+ --db-successful-bg-basic-transparent-full-hovered
387
+ );
388
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
389
+ --db-successful-bg-basic-transparent-full-pressed
390
+ );
391
+ }
392
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) input:checked, .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) input:checked {
393
+ --db-adaptive-bg-basic-transparent-full-default: var(
394
+ --db-successful-bg-inverted-contrast-low-default
395
+ );
396
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
397
+ --db-successful-bg-inverted-contrast-low-hovered
398
+ );
399
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
400
+ --db-successful-bg-inverted-contrast-low-pressed
401
+ );
402
+ }
403
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) {
404
+ --db-check-element-border-color: var(
405
+ --db-critical-on-bg-basic-emphasis-70-default
406
+ );
407
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
408
+ --db-critical-on-bg-basic-emphasis-80-default
409
+ );
410
+ --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
411
+ --db-critical-on-bg-basic-emphasis-80-hovered
412
+ );
413
+ --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
414
+ --db-critical-on-bg-basic-emphasis-80-pressed
415
+ );
416
+ --db-adaptive-on-bg-inverted-default: var(
417
+ --db-critical-on-bg-inverted-default
418
+ );
419
+ }
420
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
421
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext[data-semantic=critical]:not([hidden]) {
422
+ display: flex;
423
+ }
424
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
425
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext:not([data-semantic]):not([hidden]) {
426
+ display: none;
427
+ }
428
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not(:checked) {
429
+ --db-adaptive-bg-basic-transparent-full-default: var(
430
+ --db-critical-bg-basic-transparent-full-default
431
+ );
432
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
433
+ --db-critical-bg-basic-transparent-full-hovered
434
+ );
435
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
436
+ --db-critical-bg-basic-transparent-full-pressed
437
+ );
438
+ }
439
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:checked {
440
+ --db-adaptive-bg-basic-transparent-full-default: var(
441
+ --db-critical-bg-inverted-contrast-low-default
442
+ );
443
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
444
+ --db-critical-bg-inverted-contrast-low-hovered
445
+ );
446
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
447
+ --db-critical-bg-inverted-contrast-low-pressed
448
+ );
449
+ }
450
+ .db-switch:has(input[data-custom-validity=invalid]), .db-switch[data-custom-validity=invalid] {
451
+ --db-check-element-border-color: var(
452
+ --db-critical-on-bg-basic-emphasis-70-default
453
+ );
454
+ --db-adaptive-on-bg-basic-emphasis-100-default: var(
455
+ --db-critical-on-bg-basic-emphasis-80-default
456
+ );
457
+ --db-adaptive-on-bg-basic-emphasis-100-hovered: var(
458
+ --db-critical-on-bg-basic-emphasis-80-hovered
459
+ );
460
+ --db-adaptive-on-bg-basic-emphasis-100-pressed: var(
461
+ --db-critical-on-bg-basic-emphasis-80-pressed
462
+ );
463
+ --db-adaptive-on-bg-inverted-default: var(
464
+ --db-critical-on-bg-inverted-default
465
+ );
466
+ }
467
+ .db-switch:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
468
+ .db-switch:has(input[data-custom-validity=invalid]) > .db-infotext[data-semantic=critical]:not([hidden]), .db-switch[data-custom-validity=invalid] > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
469
+ .db-switch[data-custom-validity=invalid] > .db-infotext[data-semantic=critical]:not([hidden]) {
470
+ display: flex;
471
+ }
472
+ .db-switch:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
473
+ .db-switch:has(input[data-custom-validity=invalid]) > .db-infotext:not([data-semantic]):not([hidden]), .db-switch[data-custom-validity=invalid] > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
474
+ .db-switch[data-custom-validity=invalid] > .db-infotext:not([data-semantic]):not([hidden]) {
475
+ display: none;
476
+ }
477
+ .db-switch:has(input[data-custom-validity=invalid]) input:not(:checked), .db-switch[data-custom-validity=invalid] input:not(:checked) {
478
+ --db-adaptive-bg-basic-transparent-full-default: var(
479
+ --db-critical-bg-basic-transparent-full-default
480
+ );
481
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
482
+ --db-critical-bg-basic-transparent-full-hovered
483
+ );
484
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
485
+ --db-critical-bg-basic-transparent-full-pressed
486
+ );
487
+ }
488
+ .db-switch:has(input[data-custom-validity=invalid]) input:checked, .db-switch[data-custom-validity=invalid] input:checked {
489
+ --db-adaptive-bg-basic-transparent-full-default: var(
490
+ --db-critical-bg-inverted-contrast-low-default
491
+ );
492
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
493
+ --db-critical-bg-inverted-contrast-low-hovered
494
+ );
495
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
496
+ --db-critical-bg-inverted-contrast-low-pressed
497
+ );
498
+ }
499
+ .db-switch input {
592
500
  --db-icon-margin-start: 0;
593
501
  --thumb-offset-x: 0.125rem;
594
502
  appearance: none;
503
+ margin-inline-end: 0;
595
504
  inline-size: calc(var(--db-icon-font-size) * 2 + 0.125rem);
596
505
  block-size: var(--db-icon-font-size);
597
506
  box-sizing: content-box;
@@ -601,188 +510,136 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
601
510
  border-radius: var(--db-border-radius-full);
602
511
  /* positioned at the end of the track: track length - 100% (thumb width) */
603
512
  }
604
- .db-switch > input:not([hidden]) {
513
+ .db-switch input:not([hidden]) {
605
514
  display: flex;
606
515
  }
607
- .db-switch > input:not([data-show-icon-trailing=false])::after {
516
+ .db-switch input:not([data-show-icon-trailing=false])::after {
608
517
  --db-icon-trailing: "cross";
609
518
  margin-inline-start: var(--db-icon-margin-start, var(--db-spacing-fixed-xs));
610
519
  content: var(--db-icon-trailing, attr(data-icon-trailing));
611
520
  }
612
521
  @supports (content: ""/"") {
613
- .db-switch > input:not([data-show-icon-trailing=false])::after {
522
+ .db-switch input:not([data-show-icon-trailing=false])::after {
614
523
  content: var(--db-icon-trailing, attr(data-icon-trailing))/"";
615
524
  }
616
525
  }
617
- .db-switch > input::after {
526
+ .db-switch input::after {
618
527
  --db-icon-color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
619
528
  visibility: hidden;
620
529
  align-self: center;
621
530
  aspect-ratio: 1;
622
531
  }
623
- .db-switch > input::before {
532
+ .db-switch input::before {
624
533
  content: "°"/"";
625
534
  text-align: center;
626
535
  align-content: center;
627
536
  aspect-ratio: 1;
628
537
  block-size: calc(var(--db-icon-font-size) - 0.125rem * 2);
629
- background-color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
630
- color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
538
+ background-color: var(--db-check-element-border-color, var(--db-adaptive-on-bg-basic-emphasis-100-default));
539
+ color: var(--db-check-element-border-color, var(--db-adaptive-on-bg-basic-emphasis-100-default));
631
540
  border-radius: var(--db-border-radius-full);
632
541
  transform: translateX(var(--thumb-offset-x));
633
542
  margin-inline-end: calc(calc(var(--db-icon-font-size)) - calc(var(--db-icon-font-size) - 0.125rem * 2));
634
543
  }
635
544
  @media screen and (prefers-reduced-motion: no-preference) {
636
- .db-switch > input::before {
637
- transition: margin var(--db-transition-duration-fast) var(--db-transition-timing-emotional), inline-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), block-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), transform var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
545
+ .db-switch input::before {
546
+ transition: margin var(--db-transition-duration-fast) var(--db-transition-timing-emotional), inline-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), block-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), transform var(--db-transition-duration-fast) var(--db-transition-timing-emotional), visibility var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
638
547
  }
639
548
  }
640
- .db-switch > input:checked {
549
+ .db-switch input:checked {
641
550
  --thumb-offset-x: calc(100% + 0.125rem);
642
- background-color: var(--db-adaptive-bg-inverted-contrast-max-default);
643
- color: var(--db-adaptive-on-bg-inverted-default);
644
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
645
- border-color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
646
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
647
- }
648
- .db-switch > input:checked::before, .db-switch > input:checked::after {
649
551
  --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
552
+ --db-adaptive-bg-basic-transparent-full-default: var(
553
+ --db-adaptive-bg-inverted-contrast-max-default
554
+ );
555
+ --db-adaptive-bg-basic-transparent-full-hovered: var(
556
+ --db-adaptive-bg-inverted-contrast-max-hovered
557
+ );
558
+ --db-adaptive-bg-basic-transparent-full-pressed: var(
559
+ --db-adaptive-bg-inverted-contrast-max-pressed
560
+ );
650
561
  }
651
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]) {
652
- cursor: var(--db-overwrite-cursor, pointer);
653
- background-color: var(--db-adaptive-bg-inverted-contrast-max-hovered);
654
- }
655
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
656
- cursor: initial;
657
- }
658
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
659
- cursor: pointer;
660
- }
661
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]) {
662
- cursor: var(--db-overwrite-cursor, pointer);
663
- background-color: var(--db-adaptive-bg-inverted-contrast-max-pressed);
664
- }
665
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input) {
666
- cursor: initial;
667
- }
668
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
669
- cursor: pointer;
670
- }
671
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]) {
672
- cursor: var(--db-overwrite-cursor, pointer);
673
- border-color: var(--db-adaptive-on-bg-basic-emphasis-100-hovered);
674
- }
675
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
676
- cursor: initial;
677
- }
678
- .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
679
- cursor: pointer;
680
- }
681
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]) {
682
- cursor: var(--db-overwrite-cursor, pointer);
683
- border-color: var(--db-adaptive-on-bg-basic-emphasis-100-pressed);
684
- }
685
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input) {
686
- cursor: initial;
687
- }
688
- .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
689
- cursor: pointer;
690
- }
691
- .db-switch > input:checked::after {
562
+ .db-switch input:checked::after {
692
563
  --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
693
564
  }
694
- .db-switch > input:checked::before {
565
+ .db-switch input:checked::before {
695
566
  block-size: calc(var(--db-icon-font-size));
696
567
  background-color: var(--db-adaptive-on-bg-inverted-default);
697
568
  color: var(--db-adaptive-on-bg-inverted-default);
698
569
  margin: 0;
699
570
  }
700
- .db-switch > input:focus-visible {
571
+ .db-switch input:focus-visible {
701
572
  border-radius: var(--db-border-radius-full);
702
573
  }
703
- .db-switch > input[data-aid-icon]:not(:checked)::after {
574
+ .db-switch input[data-aid-icon]:not(:checked)::after {
704
575
  --db-icon-trailing: attr(data-aid-icon);
705
576
  }
706
- .db-switch > input[data-aid-icon-trailing]:checked::after {
577
+ .db-switch input[data-aid-icon-trailing]:checked::after {
707
578
  --db-icon-trailing: attr(data-aid-icon-trailing);
708
579
  }
709
580
  @media screen and (prefers-reduced-motion: no-preference) {
710
- .db-switch > input {
581
+ .db-switch input {
711
582
  transition: none;
712
583
  }
713
584
  }
714
- .db-switch[data-hide-label=true] {
715
- gap: 0;
716
- }
717
- .db-switch[data-size=small] {
718
- gap: var(--db-spacing-fixed-2xs);
719
- }
720
- .db-switch[data-emphasis=strong] > input {
721
- --db-check-element-border-color: var(--db-adaptive-bg-basic-transparent-full-default);
722
- background-color: var(--db-adaptive-bg-inverted-contrast-low-default);
723
- color: var(--db-adaptive-on-bg-inverted-default);
724
- border-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
725
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
726
- }
727
- .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]) {
728
- cursor: var(--db-overwrite-cursor, pointer);
729
- background-color: var(--db-adaptive-bg-inverted-contrast-low-hovered);
730
- border-color: var(--db-adaptive-on-bg-basic-emphasis-70-hovered);
731
- }
732
- .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]):is(input) {
733
- cursor: initial;
585
+ .db-switch[data-hide-label=true] > label {
586
+ margin: 0;
734
587
  }
735
- .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
736
- cursor: pointer;
588
+ .db-switch[data-hide-label=true] > label > span {
589
+ font-size: 0;
737
590
  }
738
- .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]) {
739
- cursor: var(--db-overwrite-cursor, pointer);
740
- background-color: var(--db-adaptive-bg-inverted-contrast-low-pressed);
741
- border-color: var(--db-adaptive-on-bg-basic-emphasis-70-pressed);
591
+ .db-switch[data-size=small] > label {
592
+ gap: var(--db-spacing-fixed-2xs);
742
593
  }
743
- .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true])::before {
744
- block-size: calc(var(--db-icon-font-size) - 0.125rem * 2);
594
+ .db-switch[data-visual-aid=true] input::after {
595
+ visibility: visible;
596
+ block-size: calc(var(--db-icon-font-size));
745
597
  }
746
- .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]):is(input) {
747
- cursor: initial;
598
+ @media screen and (prefers-reduced-motion: no-preference) {
599
+ .db-switch[data-visual-aid=true] input::after {
600
+ transition: transform var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
601
+ }
748
602
  }
749
- .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
750
- cursor: pointer;
603
+ .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
604
+ --db-icon-trailing: "check";
605
+ margin-inline-start: var(--db-icon-margin-start, var(--db-spacing-fixed-xs));
606
+ content: var(--db-icon-trailing, attr(data-icon-trailing));
751
607
  }
752
- .db-switch[data-emphasis=strong] > input:not(:checked) {
753
- --thumb-offset-x: 0;
608
+ @supports (content: ""/"") {
609
+ .db-switch[data-visual-aid=true] input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
610
+ content: var(--db-icon-trailing, attr(data-icon-trailing))/"";
611
+ }
754
612
  }
755
- .db-switch[data-emphasis=strong] > input:checked::before {
756
- background-color: var(--db-adaptive-on-bg-inverted-default);
757
- color: var(--db-adaptive-on-bg-inverted-default);
613
+ .db-switch[data-visual-aid=true] input:checked::after {
614
+ transform: translateX(calc(-100% - 0.125rem));
615
+ transform-origin: center right;
758
616
  }
759
- .db-switch[data-emphasis=strong] > input:checked::after {
760
- --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
617
+ .db-switch:not([data-variant=leading]) > label {
618
+ flex-direction: row;
761
619
  }
762
- .db-switch[data-emphasis=strong] > input::after {
763
- --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
620
+ .db-switch:not([data-variant=leading]) input {
621
+ margin-inline-end: var(--db-spacing-fixed-xs);
764
622
  }
765
- .db-switch[data-emphasis=strong] > input::before {
766
- background-color: var(--db-adaptive-on-bg-inverted-default);
767
- color: var(--db-adaptive-on-bg-inverted-default);
768
- block-size: calc(var(--db-icon-font-size));
769
- margin: 0;
623
+ .db-switch:not([data-variant=leading])[data-size=small] input {
624
+ margin-inline-end: var(--db-spacing-fixed-xs);
770
625
  }
771
- .db-switch[data-emphasis=strong] > input::after, .db-switch[data-visual-aid=true] > input::after {
772
- visibility: visible;
773
- block-size: calc(var(--db-icon-font-size));
626
+ .db-switch[data-variant=leading]:not([data-hide-asterisk=true]):has(input:required) > label::after, .db-switch[data-variant=leading]:not([data-hide-asterisk=true])[data-required=true] > label::after {
627
+ /* We remove default asterisk because we need a wrapping span for switch */
628
+ content: none;
774
629
  }
775
- .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
776
- --db-icon-trailing: "check";
777
- margin-inline-start: var(--db-icon-margin-start, var(--db-spacing-fixed-xs));
778
- content: var(--db-icon-trailing, attr(data-icon-trailing));
630
+ .db-switch[data-variant=leading]:not([data-hide-asterisk=true]):has(input:required) > label::before, .db-switch[data-variant=leading]:not([data-hide-asterisk=true])[data-required=true] > label::before {
631
+ order: 1;
632
+ content: "*";
779
633
  }
780
634
  @supports (content: ""/"") {
781
- .db-switch[data-emphasis=strong] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after, .db-switch[data-visual-aid=true] > input:checked:not([data-aid-icon]):not([data-show-icon-trailing=false])::after {
782
- content: var(--db-icon-trailing, attr(data-icon-trailing))/"";
635
+ .db-switch[data-variant=leading]:not([data-hide-asterisk=true]):has(input:required) > label::before, .db-switch[data-variant=leading]:not([data-hide-asterisk=true])[data-required=true] > label::before {
636
+ content: "*"/"";
783
637
  }
784
638
  }
785
- .db-switch[data-emphasis=strong] > input:checked::after, .db-switch[data-visual-aid=true] > input:checked::after {
786
- transform: translateX(calc(-100% - 0.125rem));
787
- block-size: calc(var(--db-icon-font-size));
639
+ .db-switch[data-variant=leading] input {
640
+ order: 2;
641
+ margin-inline-start: var(--db-spacing-fixed-xs);
642
+ }
643
+ .db-switch[data-variant=leading][data-size=small] input {
644
+ margin-inline-start: var(--db-spacing-fixed-2xs);
788
645
  }