@db-ux/core-components 4.6.1 → 4.7.0-tabs-34782eb

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 (49) hide show
  1. package/CHANGELOG.md +28 -16
  2. package/build/components/accordion-item/accordion-item.css +5 -3
  3. package/build/components/badge/badge.css +13 -7
  4. package/build/components/brand/brand.css +3 -3
  5. package/build/components/button/button.css +3 -1
  6. package/build/components/card/card.css +10 -6
  7. package/build/components/checkbox/checkbox.css +25 -21
  8. package/build/components/custom-button/custom-button.css +3 -1
  9. package/build/components/custom-select/custom-select.css +19 -15
  10. package/build/components/custom-select-dropdown/custom-select-dropdown.css +11 -3
  11. package/build/components/custom-select-form-field/custom-select-form-field.css +8 -6
  12. package/build/components/custom-select-list/custom-select-list.css +4 -2
  13. package/build/components/custom-select-list-item/custom-select-list-item.css +7 -5
  14. package/build/components/drawer/drawer.css +3 -3
  15. package/build/components/header/header.css +115 -60
  16. package/build/components/icon/icon.css +4 -2
  17. package/build/components/infotext/infotext.css +15 -15
  18. package/build/components/input/input.css +12 -10
  19. package/build/components/navigation/navigation.css +28 -12
  20. package/build/components/navigation-item/navigation-item.css +39 -19
  21. package/build/components/notification/notification.css +5 -5
  22. package/build/components/notification/notification.scss +1 -1
  23. package/build/components/page/page.css +13 -11
  24. package/build/components/popover/popover.css +25 -13
  25. package/build/components/radio/radio.css +10 -8
  26. package/build/components/section/section.css +3 -3
  27. package/build/components/select/select.css +11 -11
  28. package/build/components/select/select.scss +4 -4
  29. package/build/components/stack/stack-web-component.css +3 -3
  30. package/build/components/stack/stack.css +3 -3
  31. package/build/components/switch/switch.css +30 -20
  32. package/build/components/tab-item/tab-item.css +133 -157
  33. package/build/components/tab-item/tab-item.scss +105 -103
  34. package/build/components/tab-list/tab-list.css +46 -36
  35. package/build/components/tab-list/tab-list.scss +11 -9
  36. package/build/components/tab-panel/tab-panel.css +1 -2
  37. package/build/components/tab-panel/tab-panel.scss +2 -5
  38. package/build/components/tabs/tabs.css +227 -236
  39. package/build/components/tabs/tabs.scss +214 -234
  40. package/build/components/tag/tag.css +32 -11
  41. package/build/components/textarea/textarea.css +27 -17
  42. package/build/components/tooltip/tooltip.css +19 -9
  43. package/build/styles/absolute.css +32 -18
  44. package/build/styles/bundle.css +32 -18
  45. package/build/styles/index.css +31 -17
  46. package/build/styles/relative.css +32 -18
  47. package/build/styles/rollup.css +32 -18
  48. package/build/styles/webpack.css +32 -18
  49. package/package.json +6 -6
@@ -4,37 +4,25 @@
4
4
  @use "../../styles/internal/db-puls";
5
5
  @use "@db-ux/core-foundations/build/styles/helpers";
6
6
 
7
- $max-tabs: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
8
-
9
- %angular-workaround {
10
- db-tab-list,
11
- dbtablist {
12
- @each $index in $max-tabs {
13
- &:has([id$="-tab-#{$index}"]:checked) {
14
- ~ dbtabpanel > [id$="-tab-panel-#{$index}"],
15
- ~ db-tab-panel > [id$="-tab-panel-#{$index}"] {
16
- @include helpers.display(block);
17
- }
18
- }
19
- }
20
- }
21
- }
7
+ $pulse-gap-offset: calc(
8
+ #{variables.$db-border-width-xs} + #{variables.$db-spacing-fixed-2xs}
9
+ );
22
10
 
23
11
  %horizontal-pulse {
24
12
  .db-tab-item {
25
13
  @include db-puls.set-db-puls-horizontal;
26
14
 
27
- &:has(input:checked) {
15
+ &::after {
16
+ inset-block-end: calc(
17
+ -1 * #{$pulse-gap-offset}
18
+ ) !important; // overrides inset-block shorthand set in _db-puls.scss
19
+ }
20
+
21
+ &[aria-selected="true"] {
28
22
  @include db-puls.show-db-puls-horizontal;
29
23
 
30
24
  &::after {
31
- inset-block-end: calc(
32
- -1 *
33
- (
34
- #{variables.$db-spacing-fixed-2xs} +
35
- #{variables.$db-border-width-xs}
36
- )
37
- );
25
+ inline-size: 100%;
38
26
  }
39
27
  }
40
28
  }
@@ -45,12 +33,16 @@ $max-tabs: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
45
33
  @include db-puls.set-db-puls-vertical;
46
34
 
47
35
  &::after {
48
- inset-inline-start: 0;
49
- z-index: -2;
36
+ inset-inline: calc(-1 * var(--db-tabs-line-gap-vertical, 0px)) auto;
37
+ z-index: 5;
50
38
  }
51
39
 
52
- &:has(input:checked) {
40
+ &[aria-selected="true"] {
53
41
  @include db-puls.show-db-puls-vertical;
42
+
43
+ &::after {
44
+ block-size: 100%;
45
+ }
54
46
  }
55
47
  }
56
48
  }
@@ -62,303 +54,291 @@ $max-tabs: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
62
54
  position: absolute;
63
55
  }
64
56
 
65
- @mixin angular-button-workaround() {
66
- > .db-button,
67
- &:is(.db-button) {
68
- @content;
69
- }
70
- }
71
-
72
57
  .db-tabs {
73
58
  $db-tabs-z-index-tab-list: 20;
74
- $db-tabs-z-index-button-background: 21;
75
- $db-tabs-z-index-button: 22;
76
59
 
77
- @extend %angular-workaround;
78
60
  @include helpers.display(flex);
79
61
 
80
62
  inline-size: 100%;
81
63
  position: relative;
82
64
 
83
65
  .db-tab-panel {
84
- padding: 0 variables.$db-spacing-fixed-xs;
66
+ padding: variables.$db-spacing-fixed-xs;
67
+ position: relative;
68
+ z-index: 1;
85
69
  }
86
70
 
87
71
  .db-tab-list {
88
- max-inline-size: 100%;
72
+ position: relative;
89
73
  z-index: $db-tabs-z-index-tab-list;
90
74
 
91
- @each $index in $max-tabs {
92
- &:has([id$="-tab-#{$index}"]:checked)
93
- ~ [id$="-tab-panel-#{$index}"] {
94
- @include helpers.display(block);
95
- }
75
+ db-tab-item,
76
+ dbtabitem {
77
+ display: contents;
96
78
  }
97
79
  }
98
80
 
99
- .db-tab-item {
100
- @extend %db-puls;
101
- }
102
-
103
- /*
104
- Variant Orientation HORIZONTAL
105
- */
106
81
  &:not([data-orientation="vertical"]) {
107
82
  flex-flow: column wrap;
108
83
 
109
- .db-tab-panel {
110
- inline-size: 100%;
111
- }
112
-
113
84
  .db-tab-list {
114
- /* horizontal track for pulse */
115
- &::before {
116
- @extend %pulse-track;
117
-
118
- block-size: variables.$db-border-width-xs;
119
- inset-inline: variables.$db-spacing-fixed-xs;
120
-
121
- /* top position equals sum of: margin xs + padding xs + line-height + padding xs + margin 2xs */
122
- inset-block-start: calc(
123
- 3 * #{variables.$db-spacing-fixed-xs} +
124
- #{variables.$db-spacing-fixed-2xs} +
125
- #{form-components.$font-size-height}
126
- );
127
- }
85
+ padding: variables.$db-spacing-fixed-xs
86
+ variables.$db-spacing-fixed-xs 0 variables.$db-spacing-fixed-xs;
128
87
 
129
- > ul {
130
- @extend %horizontal-pulse;
88
+ @extend %horizontal-pulse;
131
89
 
132
- overflow: auto hidden;
133
- inline-size: 100%;
134
-
135
- .db-tab-item {
136
- margin-block: variables.$db-spacing-fixed-xs
137
- calc(
138
- 2 * #{variables.$db-spacing-fixed-2xs} +
139
- #{variables.$db-border-width-xs}
140
- );
141
- }
142
-
143
- db-tab-item,
144
- dbtabitem {
145
- &:first-of-type {
146
- .db-tab-item {
147
- margin-inline-start: variables.$db-spacing-fixed-xs;
148
- }
149
- }
90
+ background-image: linear-gradient(
91
+ colors.$db-adaptive-bg-basic-transparent-semi-default,
92
+ colors.$db-adaptive-bg-basic-transparent-semi-default
93
+ );
94
+ background-position: left bottom;
95
+ background-repeat: no-repeat;
150
96
 
151
- &:last-of-type {
152
- .db-tab-item {
153
- margin-inline-end: variables.$db-spacing-fixed-xs;
154
- }
155
- }
156
- }
97
+ // Draw baseline flush with the first and last tab-item (content-box excludes padding).
98
+ background-origin: content-box;
99
+ background-size: 100% variables.$db-border-width-xs;
157
100
 
158
- &:not(:has(db-tab-item, dbtabitem)) {
159
- .db-tab-item {
160
- &:first-of-type {
161
- margin-inline-start: variables.$db-spacing-fixed-xs;
162
- }
101
+ .db-tab-item {
102
+ // stylelint-disable-next-line db-ux/use-spacings
103
+ margin-block-end: $pulse-gap-offset;
104
+ }
163
105
 
164
- &:last-of-type {
165
- margin-inline-end: variables.$db-spacing-fixed-xs;
166
- }
167
- }
168
- }
106
+ &[role="tablist"],
107
+ .db-tab-list {
108
+ display: flex;
109
+ align-items: stretch;
110
+ overflow: auto;
111
+ inline-size: 100%;
169
112
  }
170
113
  }
171
114
  }
172
115
 
173
- /*
174
- Variant Orientation VERTICAL
175
- */
176
116
  &[data-orientation="vertical"] {
177
117
  flex-direction: row;
178
118
 
179
- .db-tab-panel {
180
- padding: variables.$db-spacing-fixed-xs 0;
181
- }
182
-
183
119
  .db-tab-list {
184
- $width: var(
185
- --db-tab-list-vertical-width,
186
- #{variables.$db-sizing-3xl}
187
- );
120
+ --db-tabs-line-gap-vertical: #{$pulse-gap-offset};
188
121
 
189
122
  /*
190
123
  min and nominal size must both be set to ensure
191
124
  - min-inline-size: tab-list is not displayed narrower than defined
192
125
  - max-inline-size: tab-list is not displayed wider than defined
193
126
  */
194
- /* stylelint-disable-next-line db-ux/use-sizing */
195
- min-inline-size: $width;
196
- /* stylelint-disable-next-line db-ux/use-sizing */
197
- max-inline-size: $width;
198
-
199
- /* horizontal space to the tab panels */
200
- padding-inline-end: variables.$db-spacing-fixed-xs;
201
-
202
- /* ensures that tab-list (track) is only as high as all the tab-items together if open tab-panel is higher */
127
+ min-inline-size: variables.$db-sizing-3xl;
128
+ max-inline-size: variables.$db-sizing-3xl;
129
+ // stylelint-disable-next-line db-ux/use-spacings
130
+ padding-inline: variables.$db-spacing-fixed-xs
131
+ var(--db-tabs-line-gap-vertical);
203
132
  margin-block-end: auto;
204
133
 
205
- .db-tab-item {
206
- label {
207
- position: relative;
208
- }
209
-
210
- &:has(input:focus-visible),
211
- &:hover {
212
- inline-size: fit-content;
213
-
214
- label {
215
- overflow: visible;
216
- }
217
- }
218
- }
134
+ @extend %vertical-pulse;
219
135
 
220
- /* vertical track for pulse */
221
136
  &::before {
222
137
  @extend %pulse-track;
223
138
 
224
- inline-size: variables.$db-border-width-xs;
225
- inset-block: variables.$db-spacing-fixed-xs;
139
+ display: block;
226
140
  inset-inline-start: 0;
141
+ inset-block: 0;
142
+ inline-size: variables.$db-border-width-xs;
143
+ z-index: 1;
227
144
  }
228
145
 
229
- > ul {
230
- @extend %vertical-pulse;
231
-
146
+ &[role="tablist"],
147
+ .db-tab-list {
148
+ display: flex;
232
149
  flex-direction: column;
233
- block-size: 100%;
234
-
235
- &:not(:has(db-tab-item, dbtabitem)) {
236
- .db-tab-item {
237
- &:first-of-type {
238
- margin-block-start: variables.$db-spacing-fixed-xs;
239
- }
240
-
241
- &:last-of-type {
242
- margin-block-end: variables.$db-spacing-fixed-xs;
243
- }
244
- }
245
- }
150
+ align-items: flex-start;
246
151
  }
247
152
  }
153
+ }
154
+
155
+ &[data-tab-item-width="full"] {
156
+ .db-tab-list {
157
+ inline-size: 100%;
158
+ }
248
159
 
249
160
  .db-tab-item {
250
- $padding-start-calc: calc(
251
- #{variables.$db-border-width-xs} +
252
- #{variables.$db-spacing-fixed-2xs}
253
- );
161
+ flex: 1 0 0;
162
+ inline-size: 0;
163
+ max-inline-size: none;
164
+ justify-content: flex-start;
165
+ }
254
166
 
255
- padding-inline-start: $padding-start-calc;
167
+ &[data-tab-item-alignment="center"] .db-tab-item {
168
+ text-align: center;
169
+ justify-content: center;
170
+ }
256
171
 
257
- input {
258
- padding-inline-start: $padding-start-calc;
259
- }
172
+ &[data-tab-item-alignment="end"] .db-tab-item {
173
+ text-align: end;
174
+ justify-content: end;
260
175
  }
176
+ }
261
177
 
262
- db-tab-item,
263
- dbtabitem {
264
- &:first-of-type {
265
- .db-tab-item {
266
- margin-block-start: variables.$db-spacing-fixed-xs;
267
- }
178
+ &[data-scroll-behavior="scrollbar"] {
179
+ $db-tabs-z-index-track: 19;
180
+
181
+ &:not([data-orientation="vertical"]) {
182
+ // Keep the track outside the scrolling tab-list so the native scrollbar cannot cover it.
183
+ &::before {
184
+ content: "";
185
+ position: absolute;
186
+ z-index: $db-tabs-z-index-track;
187
+ inset-block-start: calc(
188
+ #{variables.$db-sizing-md} +
189
+ #{variables.$db-spacing-fixed-xs} +
190
+ #{variables.$db-border-width-xs}
191
+ );
192
+ inset-inline: variables.$db-spacing-fixed-xs;
193
+ block-size: variables.$db-border-width-xs;
194
+ background-color: colors.$db-adaptive-bg-basic-transparent-semi-default;
195
+ pointer-events: none;
268
196
  }
269
197
 
270
- &:last-of-type {
271
- .db-tab-item {
272
- margin-block-end: variables.$db-spacing-fixed-xs;
273
- }
198
+ [data-density="functional"] &::before {
199
+ inset-block-start: calc(
200
+ #{variables.$db-sizing-sm} +
201
+ #{variables.$db-spacing-fixed-xs} +
202
+ #{variables.$db-border-width-xs}
203
+ );
274
204
  }
275
- }
276
- }
277
205
 
278
- &[data-width="full"] {
279
- .db-tab-list {
280
- inline-size: 100%;
281
- }
206
+ [data-density="expressive"] &::before {
207
+ inset-block-start: calc(
208
+ #{variables.$db-sizing-lg} +
209
+ #{variables.$db-spacing-fixed-xs} +
210
+ #{variables.$db-border-width-xs}
211
+ );
212
+ }
282
213
 
283
- .db-tab-item,
284
- .db-tab-item label {
285
- inline-size: 100%;
286
- }
214
+ .db-tab-list {
215
+ background-image: none;
287
216
 
288
- &[data-alignment="center"] {
289
- .db-tab-item label {
290
- text-align: center;
291
- justify-content: center;
217
+ &::before {
218
+ content: none;
219
+ }
292
220
  }
293
221
  }
294
222
  }
295
223
 
296
224
  &[data-scroll-behavior="arrows"] {
297
- .db-tab-list {
298
- > ul {
299
- &::-webkit-scrollbar {
300
- display: none;
301
- }
302
- }
225
+ $db-tabs-z-index-button-background: 21;
226
+ $db-tabs-z-index-button: 22;
227
+ $db-tabs-z-index-track: 19;
228
+
229
+ .db-tab-list::-webkit-scrollbar {
230
+ display: none;
303
231
  }
304
232
 
305
- &:has(.tabs-scroll-left) {
233
+ &:not([data-orientation="vertical"]) {
234
+ // Track für Arrow-Buttons-Modus als ::before Pseudo-Element auf .db-tabs
306
235
  &::before {
307
236
  content: "";
237
+ position: absolute;
238
+ z-index: $db-tabs-z-index-track;
239
+ inset-block-start: calc(
240
+ #{variables.$db-sizing-md} +
241
+ #{variables.$db-border-width-2xs}
242
+ );
243
+ inset-inline: 0;
244
+ block-size: variables.$db-border-width-xs;
245
+ background-color: colors.$db-adaptive-bg-basic-transparent-semi-default;
308
246
  }
309
- }
310
247
 
311
- &:has(.tabs-scroll-right) {
312
- &::after {
313
- content: "";
248
+ [data-density="functional"] &::before {
249
+ inset-block-start: calc(
250
+ #{variables.$db-sizing-sm} +
251
+ #{variables.$db-border-width-2xs}
252
+ );
314
253
  }
315
- }
316
254
 
317
- &:has(.db-button) {
318
- &::before,
319
- &::after {
320
- position: absolute;
321
- z-index: $db-tabs-z-index-button-background;
322
- background-color: colors.$db-adaptive-bg-basic-level-1-default;
323
- inline-size: variables.$db-sizing-md;
324
- block-size: calc(
325
- #{variables.$db-spacing-fixed-sm} +
326
- #{variables.$db-sizing-md}
255
+ [data-density="expressive"] &::before {
256
+ inset-block-start: calc(
257
+ #{variables.$db-sizing-lg} +
258
+ #{variables.$db-border-width-2xs}
327
259
  );
328
- flex: 0 0 auto;
329
260
  }
330
261
 
331
- &::before {
332
- inset-inline-start: 0;
262
+ .db-tab-list {
263
+ // stylelint-disable-next-line db-ux/use-spacings
264
+ padding: 0 0 $pulse-gap-offset;
265
+ margin-block-start: 0;
266
+ background-image: none;
267
+
268
+ &::before {
269
+ content: none;
270
+ }
271
+
272
+ .db-tab-item {
273
+ margin-block-end: 0;
274
+
275
+ &::after {
276
+ inset-block-end: calc(
277
+ -1 *
278
+ (
279
+ #{variables.$db-spacing-fixed-xs} -
280
+ #{variables.$db-border-width-2xs}
281
+ )
282
+ ) !important;
283
+ }
284
+ }
333
285
  }
334
286
 
335
- &::after {
336
- inset-inline-end: 0;
287
+ .tabs-scroll-start,
288
+ .tabs-scroll-end {
289
+ position: absolute;
290
+ z-index: $db-tabs-z-index-button;
291
+ inset-block-start: 0;
292
+ aspect-ratio: unset;
293
+ min-block-size: unset;
294
+ border-block-width: 0;
295
+ padding-block: variables.$db-spacing-fixed-xs
296
+ calc(
297
+ #{variables.$db-spacing-fixed-xs} + #{$pulse-gap-offset}
298
+ );
299
+ align-items: flex-start;
300
+ background-color: colors.$db-adaptive-bg-basic-level-1-default;
301
+
302
+ @include helpers.hover {
303
+ background-color: colors.$db-adaptive-bg-basic-level-1-hovered;
304
+ }
305
+
306
+ @include helpers.active {
307
+ background-color: colors.$db-adaptive-bg-basic-level-1-pressed;
308
+ }
309
+
310
+ @media screen and (forced-colors: active) {
311
+ border-block: variables.$db-border-width-xs solid
312
+ transparent;
313
+ inset-block-start: calc(
314
+ -1 * #{variables.$db-border-width-xs}
315
+ );
316
+ }
317
+
318
+ [data-density="functional"] & {
319
+ padding-block: variables.$db-spacing-fixed-2xs
320
+ calc(
321
+ #{variables.$db-spacing-fixed-2xs} +
322
+ #{$pulse-gap-offset}
323
+ );
324
+ }
325
+
326
+ [data-density="expressive"] & {
327
+ padding-block: variables.$db-spacing-fixed-sm
328
+ calc(
329
+ #{variables.$db-spacing-fixed-sm} +
330
+ #{$pulse-gap-offset}
331
+ );
332
+ }
337
333
  }
338
- }
339
334
 
340
- /*
341
- * Scroll left / right buttons
342
- */
343
- .tabs-scroll-left {
344
- @include angular-button-workaround {
335
+ .tabs-scroll-start {
345
336
  inset-inline-start: 0;
346
337
  }
347
- }
348
338
 
349
- .tabs-scroll-right {
350
- @include angular-button-workaround {
339
+ .tabs-scroll-end {
351
340
  inset-inline-end: 0;
352
341
  }
353
342
  }
354
-
355
- .tabs-scroll-left,
356
- .tabs-scroll-right {
357
- @include angular-button-workaround {
358
- position: absolute;
359
- z-index: $db-tabs-z-index-button;
360
- inset-block: variables.$db-spacing-fixed-xs;
361
- }
362
- }
363
343
  }
364
344
  }
@@ -860,7 +860,6 @@
860
860
  border-color: var(--db-tag-border-color);
861
861
  background-color: var(--db-adaptive-bg-basic-level-1-default);
862
862
  color: var(--db-adaptive-on-bg-basic-emphasis-80-default);
863
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
864
863
  }
865
864
  .db-tag:has(label, button:not(.db-tab-remove-button), a)::before, .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]):not(:has(dbbutton)) button:not(.db-tab-remove-button)::before,
866
865
  .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) dbbutton:not(.db-tab-remove-button) > button::before,
@@ -877,6 +876,15 @@
877
876
  .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] a::after, .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) label:has(input)::after, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] label:has(input)::after, .db-tag[data-emphasis=strong]:has(label, button:not(.db-tab-remove-button), a):has(input):not(:has(input:checked))::after {
878
877
  --db-icon-color: var(--db-adaptive-on-bg-basic-emphasis-80-default);
879
878
  }
879
+ .db-tag:has(label, button:not(.db-tab-remove-button), a), .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]):not(:has(dbbutton)) button:not(.db-tab-remove-button),
880
+ .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) dbbutton:not(.db-tab-remove-button) > button,
881
+ .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) db-button > button,
882
+ .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) a, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak]:not(:has(dbbutton)) button:not(.db-tab-remove-button),
883
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] dbbutton:not(.db-tab-remove-button) > button,
884
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] db-button > button,
885
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] a, .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) label:has(input), .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] label:has(input), .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong]:has(input):not(:has(input:checked)) {
886
+ /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
887
+ }
880
888
  .db-tag:hover:not(:disabled,
881
889
  [aria-disabled=true],
882
890
  [tabindex="-1"],
@@ -1314,7 +1322,6 @@
1314
1322
  border-color: var(--db-tag-border-color);
1315
1323
  background-color: var(--db-adaptive-bg-vibrant-default);
1316
1324
  color: var(--db-adaptive-on-bg-vibrant-default);
1317
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
1318
1325
  }
1319
1326
  .db-tag:not(:has(label, button:not(.db-tab-remove-button), a)):not([data-semantic])[data-emphasis=strong] .db-tab-remove-button::before, .db-tag:not(:has(label, button:not(.db-tab-remove-button), a))[data-semantic=adaptive][data-emphasis=strong] .db-tab-remove-button::before, .db-tag:has(.db-tab-remove-button):not([data-semantic])[data-emphasis=strong] .db-tab-remove-button::before, .db-tag:has(.db-tab-remove-button)[data-semantic=adaptive][data-emphasis=strong] .db-tab-remove-button::before, .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) label:has(input[type=checkbox]:checked)::before, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] label:has(input[type=checkbox]:checked)::before, .db-tag[data-emphasis=strong]:has(label, button:not(.db-tab-remove-button), a)::before, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong]:not(:has(dbbutton)) button:not(.db-tab-remove-button)::before,
1320
1327
  .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] dbbutton:not(.db-tab-remove-button) > button::before,
@@ -1325,6 +1332,12 @@
1325
1332
  .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] a::after, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] label:has(input[type=checkbox]:checked)::after {
1326
1333
  --db-icon-color: var(--db-adaptive-on-bg-vibrant-default);
1327
1334
  }
1335
+ .db-tag:not(:has(label, button:not(.db-tab-remove-button), a)):not([data-semantic])[data-emphasis=strong] .db-tab-remove-button, .db-tag:not(:has(label, button:not(.db-tab-remove-button), a))[data-semantic=adaptive][data-emphasis=strong] .db-tab-remove-button, .db-tag:has(.db-tab-remove-button):not([data-semantic])[data-emphasis=strong] .db-tab-remove-button, .db-tag:has(.db-tab-remove-button)[data-semantic=adaptive][data-emphasis=strong] .db-tab-remove-button, .db-tag:has(label, button:not(.db-tab-remove-button), a):not([data-emphasis]) label:has(input[type=checkbox]:checked), .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=weak] label:has(input[type=checkbox]:checked), .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong], .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong]:not(:has(dbbutton)) button:not(.db-tab-remove-button),
1336
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] dbbutton:not(.db-tab-remove-button) > button,
1337
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] db-button > button,
1338
+ .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] a, .db-tag:has(label, button:not(.db-tab-remove-button), a)[data-emphasis=strong] label:has(input[type=checkbox]:checked) {
1339
+ /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
1340
+ }
1328
1341
  .db-tag:not(:has(label, button:not(.db-tab-remove-button), a)):not([data-semantic])[data-emphasis=strong] .db-tab-remove-button:hover:not(:disabled,
1329
1342
  [aria-disabled=true],
1330
1343
  [tabindex="-1"],
@@ -1739,20 +1752,24 @@
1739
1752
  [data-no-text=true].db-tag {
1740
1753
  --icon-margin-after: 0;
1741
1754
  font-size: 0 !important;
1742
- /* stylelint-disable-next-line at-rule-empty-line-before */
1743
- padding: 0;
1744
- gap: 0;
1745
1755
  }
1746
1756
  [data-no-text=true].db-tag::before {
1747
1757
  --db-icon-margin-end: 0;
1748
1758
  }
1759
+ [data-no-text=true].db-tag {
1760
+ /* stylelint-disable-next-line at-rule-empty-line-before */
1761
+ padding: 0;
1762
+ gap: 0;
1763
+ }
1749
1764
  [data-no-text=true].db-tag label {
1750
1765
  font-size: 0 !important;
1751
- /* stylelint-disable-next-line at-rule-empty-line-before */
1752
1766
  }
1753
1767
  [data-no-text=true].db-tag label::before {
1754
1768
  --db-icon-margin-end: 0;
1755
1769
  }
1770
+ [data-no-text=true].db-tag label {
1771
+ /* stylelint-disable-next-line at-rule-empty-line-before */
1772
+ }
1756
1773
  .db-tag:not([data-no-text=true]) {
1757
1774
  --db-padding-inline-start: var(--db-spacing-fixed-2xs);
1758
1775
  /* stylelint-disable-next-line db-ux/use-spacings */
@@ -1991,7 +2008,6 @@
1991
2008
 
1992
2009
  .db-tag[data-show-check-state=true] label {
1993
2010
  --db-icon-margin-start: var(--db-spacing-fixed-2xs);
1994
- /* TODO: maybe we could get rid of an expensive :has selector by defining this icon on the input itself */
1995
2011
  }
1996
2012
  .db-tag[data-show-check-state=true] label:not([data-show-icon-trailing=false])::after {
1997
2013
  --db-icon-trailing: "circle";
@@ -2003,6 +2019,9 @@
2003
2019
  content: var(--db-icon-trailing, attr(data-icon-trailing))/"";
2004
2020
  }
2005
2021
  }
2022
+ .db-tag[data-show-check-state=true] label {
2023
+ /* TODO: maybe we could get rid of an expensive :has selector by defining this icon on the input itself */
2024
+ }
2006
2025
  .db-tag[data-show-check-state=true] label:has(input:checked):not([data-show-icon-trailing=false])::after {
2007
2026
  --db-icon-trailing: "check_circle";
2008
2027
  margin-inline-start: var(--db-icon-margin-start, var(--db-spacing-fixed-xs));
@@ -2016,11 +2035,13 @@
2016
2035
  .db-tag label {
2017
2036
  inline-size: 100%;
2018
2037
  margin-inline-start: 0;
2019
- align-items: center;
2020
2038
  }
2021
2039
  .db-tag label:not([hidden]) {
2022
2040
  display: flex;
2023
2041
  }
2042
+ .db-tag label {
2043
+ align-items: center;
2044
+ }
2024
2045
  @media (forced-colors: active) {
2025
2046
  .db-tag label:not(:has(input:checked)) {
2026
2047
  border-style: dashed;
@@ -2052,13 +2073,13 @@
2052
2073
  .db-tag label input:checked:not([data-show-icon-leading=false])::before {
2053
2074
  content: none;
2054
2075
  }
2076
+ .db-tag a:not([hidden]) {
2077
+ display: inline-flex;
2078
+ }
2055
2079
  .db-tag a {
2056
2080
  align-items: center;
2057
2081
  text-decoration: none;
2058
2082
  }
2059
- .db-tag a:not([hidden]) {
2060
- display: inline-flex;
2061
- }
2062
2083
  .db-tag a::after {
2063
2084
  --db-icon-margin-start: 0;
2064
2085
  --db-icon-font-size: 0;