@db-ux/core-components 3.1.16 → 3.1.18

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 (72) hide show
  1. package/README.md +1 -1
  2. package/agent/_instructions.md +9 -0
  3. package/build/components/accordion-item/accordion-item.css +3 -1
  4. package/build/components/accordion-item/accordion-item.scss +3 -1
  5. package/build/components/badge/badge.css +3 -1
  6. package/build/components/brand/brand.css +3 -1
  7. package/build/components/brand/brand.scss +2 -1
  8. package/build/components/button/button.css +3 -1
  9. package/build/components/card/card.css +3 -1
  10. package/build/components/card/card.scss +1 -1
  11. package/build/components/checkbox/checkbox.css +29 -24
  12. package/build/components/checkbox/checkbox.scss +2 -1
  13. package/build/components/custom-select/custom-select.css +34 -26
  14. package/build/components/custom-select/custom-select.scss +1 -1
  15. package/build/components/custom-select-dropdown/custom-select-dropdown.css +3 -3
  16. package/build/components/custom-select-dropdown/custom-select-dropdown.scss +1 -1
  17. package/build/components/custom-select-form-field/custom-select-form-field.css +6 -2
  18. package/build/components/custom-select-form-field/custom-select-form-field.scss +5 -2
  19. package/build/components/custom-select-list/custom-select-list.css +3 -1
  20. package/build/components/custom-select-list/custom-select-list.scss +4 -1
  21. package/build/components/custom-select-list-item/custom-select-list-item.css +3 -1
  22. package/build/components/custom-select-list-item/custom-select-list-item.scss +2 -1
  23. package/build/components/drawer/drawer.css +8 -4
  24. package/build/components/drawer/drawer.scss +29 -5
  25. package/build/components/header/header.css +46 -24
  26. package/build/components/header/header.scss +27 -18
  27. package/build/components/icon/icon.css +1 -1
  28. package/build/components/icon/icon.scss +2 -1
  29. package/build/components/infotext/infotext.css +2 -0
  30. package/build/components/infotext/infotext.scss +2 -2
  31. package/build/components/input/input.css +30 -26
  32. package/build/components/link/link.css +2 -2
  33. package/build/components/navigation/navigation.css +4 -2
  34. package/build/components/navigation/navigation.scss +4 -2
  35. package/build/components/navigation-item/navigation-item.css +15 -6
  36. package/build/components/navigation-item/navigation-item.scss +10 -6
  37. package/build/components/notification/notification-grid-non-overlay.scss +3 -1
  38. package/build/components/notification/notification.css +6 -4
  39. package/build/components/notification/notification.scss +2 -1
  40. package/build/components/page/page.css +12 -4
  41. package/build/components/page/page.scss +8 -3
  42. package/build/components/popover/popover.css +3 -1
  43. package/build/components/popover/popover.scss +4 -1
  44. package/build/components/radio/radio.css +4 -1
  45. package/build/components/select/select.css +34 -26
  46. package/build/components/select/select.scss +2 -1
  47. package/build/components/stack/stack-web-component.css +3 -1
  48. package/build/components/stack/stack.css +3 -1
  49. package/build/components/switch/switch.css +7 -2
  50. package/build/components/switch/switch.scss +3 -1
  51. package/build/components/tab-item/tab-item.css +6 -2
  52. package/build/components/tab-item/tab-item.scss +6 -2
  53. package/build/components/tab-list/tab-list.css +3 -1
  54. package/build/components/tab-list/tab-list.scss +2 -1
  55. package/build/components/tab-panel/tab-panel.css +1 -1
  56. package/build/components/tab-panel/tab-panel.scss +2 -1
  57. package/build/components/tabs/tabs.css +58 -56
  58. package/build/components/tabs/tabs.scss +4 -3
  59. package/build/components/tag/tag.css +11 -5
  60. package/build/components/tag/tag.scss +5 -3
  61. package/build/components/textarea/textarea.css +27 -25
  62. package/build/styles/absolute.css +16 -16
  63. package/build/styles/index.css +15 -15
  64. package/build/styles/internal/_button-components.scss +5 -1
  65. package/build/styles/internal/_form-components.scss +8 -6
  66. package/build/styles/internal/_link-components.scss +2 -2
  67. package/build/styles/internal/_select-components.scss +9 -0
  68. package/build/styles/internal/_stack-components.scss +2 -1
  69. package/build/styles/relative.css +16 -16
  70. package/build/styles/rollup.css +16 -16
  71. package/build/styles/webpack.css +16 -16
  72. package/package.json +6 -2
package/README.md CHANGED
@@ -29,7 +29,7 @@ If you just need the styling follow this:
29
29
 
30
30
  **No!** The `@db-ux/core-components` package **automatically includes** all the foundations (`@db-ux/core-foundations`) you need. You only need to install one package:
31
31
 
32
- - **Use `@db-ux/core-components`** - If you want to use UI components (buttons, inputs, etc.)
32
+ - **Use `@db-ux/core-components`** - If you want to use UI components (buttons, inputs, etc.)
33
33
  - **Use `@db-ux/core-foundations`** - If you only need design tokens, colors, spacing, fonts, and assets without any component styles
34
34
 
35
35
  ## Install
@@ -0,0 +1,9 @@
1
+ ## Common AI mistakes
2
+
3
+ ### `DBButton` or `db-button`
4
+
5
+ - available variants are `outline`, `brand`, `filled`, `ghost`
6
+ - always use variant `outline` as default
7
+ - use variant `brand` as CTA or primary action
8
+ - if `noText`/`no-text` property is used add a `DBTooltip` or `db-tooltip` inside the Button
9
+ - always add a `type` as property as best practise
@@ -304,13 +304,15 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
304
304
  .db-accordion-item > details > summary {
305
305
  background-color: var(--db-adaptive-bg-basic-level-1-default);
306
306
  list-style: none;
307
- display: flex;
308
307
  justify-content: space-between;
309
308
  padding: var(--db-spacing-fixed-md);
310
309
  gap: var(--db-spacing-fixed-md);
311
310
  border-radius: var(--db-border-radius-sm);
312
311
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
313
312
  }
313
+ .db-accordion-item > details > summary:not([hidden]) {
314
+ display: flex;
315
+ }
314
316
  .db-accordion-item > details > summary:hover:not(:disabled, [aria-disabled=true]) {
315
317
  cursor: var(--db-overwrite-cursor, pointer);
316
318
  background-color: var(--db-adaptive-bg-basic-level-1-hovered);
@@ -49,7 +49,9 @@
49
49
 
50
50
  background-color: colors.$db-adaptive-bg-basic-level-1-default;
51
51
  list-style: none;
52
- display: flex;
52
+
53
+ @include helpers.display(flex);
54
+
53
55
  justify-content: space-between;
54
56
  padding: variables.$db-spacing-fixed-md;
55
57
  gap: variables.$db-spacing-fixed-md;
@@ -132,10 +132,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
132
132
  white-space: nowrap;
133
133
  justify-content: center;
134
134
  text-align: center;
135
- display: inline-flex;
136
135
  align-items: center;
137
136
  vertical-align: top;
138
137
  }
138
+ .db-badge:not([hidden]) {
139
+ display: inline-flex;
140
+ }
139
141
 
140
142
  /**
141
143
  * @mixin screen-min-max
@@ -114,11 +114,13 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
114
114
  @layer variables {}
115
115
 
116
116
  .db-brand {
117
- display: flex;
118
117
  gap: var(--db-spacing-fixed-sm);
119
118
  align-items: center;
120
119
  font-weight: 700;
121
120
  }
121
+ .db-brand:not([hidden]) {
122
+ display: flex;
123
+ }
122
124
  .db-brand::before {
123
125
  --db-icon-font-size: var(--db-sizing-md);
124
126
  --db-icon-margin-end: 0;
@@ -1,11 +1,12 @@
1
1
  @use "@db-ux/core-foundations/build/styles/variables";
2
2
  @use "@db-ux/core-foundations/build/styles/colors";
3
3
  @use "@db-ux/core-foundations/build/styles/fonts";
4
+ @use "@db-ux/core-foundations/build/styles/helpers/display";
4
5
 
5
6
  .db-brand {
6
7
  @extend %db-overwrite-font-size-md;
8
+ @include display.display(flex);
7
9
 
8
- display: flex;
9
10
  gap: variables.$db-spacing-fixed-sm;
10
11
  align-items: center;
11
12
  font-weight: 700;
@@ -144,10 +144,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
144
144
  white-space: nowrap;
145
145
  justify-content: center;
146
146
  text-align: center;
147
- display: inline-flex;
148
147
  align-items: center;
149
148
  vertical-align: top;
150
149
  }
150
+ .db-button:not([hidden]) {
151
+ display: inline-flex;
152
+ }
151
153
 
152
154
  .db-button {
153
155
  color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
@@ -94,7 +94,6 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
94
94
  --db-card-background-color-hovered: var(--db-adaptive-bg-basic-level-1-hovered);
95
95
  --db-card-background-color-pressed: var(--db-adaptive-bg-basic-level-1-pressed);
96
96
  /* stylelint-disable-next-line at-rule-empty-line-before */
97
- display: flex;
98
97
  flex-direction: column;
99
98
  background-color: var(--db-card-background-color-default);
100
99
  }
@@ -113,6 +112,9 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
113
112
  .db-card[data-spacing=none] {
114
113
  padding: 0;
115
114
  }
115
+ .db-card:not([hidden]) {
116
+ display: flex;
117
+ }
116
118
  .db-card[data-behavior=interactive] {
117
119
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
118
120
  }
@@ -30,8 +30,8 @@
30
30
 
31
31
  @extend %default-card;
32
32
  @include component.get-data-spacing;
33
+ @include helpers.display(flex);
33
34
 
34
- display: flex;
35
35
  flex-direction: column;
36
36
  background-color: var(--db-card-background-color-default);
37
37
 
@@ -188,8 +188,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
188
188
  .db-checkbox > .db-infotext {
189
189
  margin-block-start: var(--db-spacing-fixed-2xs);
190
190
  }
191
- .db-checkbox > db-infotext > .db-infotext:is([data-semantic=successful], [data-semantic=critical]),
192
- .db-checkbox > .db-infotext:is([data-semantic=successful], [data-semantic=critical]) {
191
+ .db-checkbox > db-infotext > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]),
192
+ .db-checkbox > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]) {
193
193
  display: none;
194
194
  }
195
195
 
@@ -225,11 +225,14 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
225
225
  }
226
226
  .db-checkbox:is(label),
227
227
  .db-checkbox > label {
228
- display: flex;
229
228
  align-items: flex-start;
230
229
  position: relative;
231
230
  color: var(--db-check-element-label-color, var(--db-adaptive-on-bg-basic-emphasis-100-default));
232
231
  }
232
+ .db-checkbox:is(label):not([hidden]),
233
+ .db-checkbox > label:not([hidden]) {
234
+ display: flex;
235
+ }
233
236
  .db-checkbox input {
234
237
  background-color: var(--db-adaptive-bg-basic-transparent-full-default);
235
238
  place-content: center center;
@@ -295,12 +298,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
295
298
  .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext {
296
299
  /* stylelint-disable-next-line at-rule-empty-line-before */
297
300
  }
298
- .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
299
- .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful] {
301
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
302
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
300
303
  display: flex;
301
304
  }
302
- .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
303
- .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]) {
305
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
306
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
304
307
  display: none;
305
308
  }
306
309
  .db-checkbox:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) input:not(:checked) {
@@ -345,14 +348,14 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
345
348
  .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext {
346
349
  /* stylelint-disable-next-line at-rule-empty-line-before */
347
350
  }
348
- .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
349
- .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful], .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
350
- .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful] {
351
+ .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
352
+ .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]), .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
353
+ .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
351
354
  display: flex;
352
355
  }
353
- .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
354
- .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]), .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
355
- .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]) {
356
+ .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
357
+ .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]), .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
358
+ .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
356
359
  display: none;
357
360
  }
358
361
  .db-checkbox:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) input:not(:checked), .db-checkbox[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) input:not(:checked) {
@@ -392,12 +395,12 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
392
395
  --db-critical-on-bg-basic-emphasis-80-pressed
393
396
  );
394
397
  }
395
- .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext[data-semantic=critical],
396
- .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext[data-semantic=critical] {
398
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
399
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext[data-semantic=critical]:not([hidden]) {
397
400
  display: flex;
398
401
  }
399
- .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext:not([data-semantic]),
400
- .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext:not([data-semantic]) {
402
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
403
+ .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) > .db-infotext:not([data-semantic]):not([hidden]) {
401
404
  display: none;
402
405
  }
403
406
  .db-checkbox:has(input:not([data-custom-validity]):required:user-invalid) input:not(:checked) {
@@ -437,14 +440,14 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
437
440
  --db-critical-on-bg-basic-emphasis-80-pressed
438
441
  );
439
442
  }
440
- .db-checkbox:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext[data-semantic=critical],
441
- .db-checkbox:has(input[data-custom-validity=invalid]) > .db-infotext[data-semantic=critical], .db-checkbox[data-custom-validity=invalid] > db-infotext > .db-infotext[data-semantic=critical],
442
- .db-checkbox[data-custom-validity=invalid] > .db-infotext[data-semantic=critical] {
443
+ .db-checkbox:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
444
+ .db-checkbox:has(input[data-custom-validity=invalid]) > .db-infotext[data-semantic=critical]:not([hidden]), .db-checkbox[data-custom-validity=invalid] > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
445
+ .db-checkbox[data-custom-validity=invalid] > .db-infotext[data-semantic=critical]:not([hidden]) {
443
446
  display: flex;
444
447
  }
445
- .db-checkbox:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext:not([data-semantic]),
446
- .db-checkbox:has(input[data-custom-validity=invalid]) > .db-infotext:not([data-semantic]), .db-checkbox[data-custom-validity=invalid] > db-infotext > .db-infotext:not([data-semantic]),
447
- .db-checkbox[data-custom-validity=invalid] > .db-infotext:not([data-semantic]) {
448
+ .db-checkbox:has(input[data-custom-validity=invalid]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
449
+ .db-checkbox:has(input[data-custom-validity=invalid]) > .db-infotext:not([data-semantic]):not([hidden]), .db-checkbox[data-custom-validity=invalid] > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
450
+ .db-checkbox[data-custom-validity=invalid] > .db-infotext:not([data-semantic]):not([hidden]) {
448
451
  display: none;
449
452
  }
450
453
  .db-checkbox:has(input[data-custom-validity=invalid]) input:not(:checked), .db-checkbox[data-custom-validity=invalid] input:not(:checked) {
@@ -471,11 +474,13 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
471
474
  );
472
475
  }
473
476
  .db-checkbox input {
474
- display: flex;
475
477
  border-radius: var(--db-border-radius-2xs);
476
478
  align-items: center;
477
479
  justify-content: center;
478
480
  }
481
+ .db-checkbox input:not([hidden]) {
482
+ display: flex;
483
+ }
479
484
  .db-checkbox input:checked {
480
485
  --db-check-element-border-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
481
486
  --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
@@ -94,7 +94,8 @@
94
94
  }
95
95
 
96
96
  input {
97
- display: flex;
97
+ @include helpers.display(flex);
98
+
98
99
  border-radius: variables.$db-border-radius-2xs;
99
100
  align-items: center;
100
101
  justify-content: center;
@@ -712,8 +712,8 @@ input[type=radio]:checked) > label {
712
712
  .db-custom-select > .db-infotext {
713
713
  margin-block-start: var(--db-spacing-fixed-2xs);
714
714
  }
715
- .db-custom-select > db-infotext > .db-infotext:is([data-semantic=successful], [data-semantic=critical]),
716
- .db-custom-select > .db-infotext:is([data-semantic=successful], [data-semantic=critical]) {
715
+ .db-custom-select > db-infotext > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]),
716
+ .db-custom-select > .db-infotext:is([data-semantic=successful], [data-semantic=critical]):not([hidden]) {
717
717
  display: none;
718
718
  }
719
719
 
@@ -725,6 +725,12 @@ input[type=radio]:checked) > label {
725
725
  position: absolute;
726
726
  inset-block-start: 0;
727
727
  inset-inline-start: 0;
728
+ opacity: 0;
729
+ }
730
+ @media screen and (prefers-reduced-motion: no-preference) {
731
+ .db-custom-select-placeholder {
732
+ transition: opacity var(--db-transition-straight-emotional), outline var(--db-transition-duration-extra-fast), border-color var(--db-transition-straight-emotional), background-color var(--db-transition-straight-emotional);
733
+ }
728
734
  }
729
735
 
730
736
  .db-custom-select [id$=-placeholder] {
@@ -804,9 +810,11 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
804
810
  .db-custom-select {
805
811
  --db-form-has-before: 0;
806
812
  position: relative;
807
- display: flex;
808
813
  flex-direction: column;
809
814
  }
815
+ .db-custom-select:not([hidden]) {
816
+ display: flex;
817
+ }
810
818
  .db-custom-select[data-variant=floating], .db-custom-select[data-hide-label=true] {
811
819
  --db-label-visible-above: 0;
812
820
  }
@@ -902,15 +910,15 @@ input[type=radio]:checked) [id$=-placeholder] {
902
910
  /* stylelint-disable-next-line at-rule-empty-line-before */
903
911
  }
904
912
  .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-valid):has(> .db-infotext[data-semantic=successful],
905
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
913
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
906
914
  .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-valid):has(> .db-infotext[data-semantic=successful],
907
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful] {
915
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
908
916
  display: flex;
909
917
  }
910
918
  .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-valid):has(> .db-infotext[data-semantic=successful],
911
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
919
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
912
920
  .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-valid):has(> .db-infotext[data-semantic=successful],
913
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]) {
921
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
914
922
  display: none;
915
923
  }
916
924
  .db-custom-select:has(select[data-custom-validity=valid]):has(> .db-infotext[data-semantic=successful],
@@ -938,21 +946,21 @@ input[type=radio]:checked) [id$=-placeholder] {
938
946
  /* stylelint-disable-next-line at-rule-empty-line-before */
939
947
  }
940
948
  .db-custom-select:has(select[data-custom-validity=valid]):has(> .db-infotext[data-semantic=successful],
941
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
949
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
942
950
  .db-custom-select:has(select[data-custom-validity=valid]):has(> .db-infotext[data-semantic=successful],
943
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful], .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
944
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful],
951
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]), .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
952
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
945
953
  .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
946
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful] {
954
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
947
955
  display: flex;
948
956
  }
949
957
  .db-custom-select:has(select[data-custom-validity=valid]):has(> .db-infotext[data-semantic=successful],
950
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
958
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
951
959
  .db-custom-select:has(select[data-custom-validity=valid]):has(> .db-infotext[data-semantic=successful],
952
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]), .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
953
- > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]),
960
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]), .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
961
+ > db-infotext > .db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
954
962
  .db-custom-select[data-custom-validity=valid]:has(> .db-infotext[data-semantic=successful],
955
- > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]) {
963
+ > db-infotext > .db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
956
964
  display: none;
957
965
  }
958
966
  .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) {
@@ -963,12 +971,12 @@ input[type=radio]:checked) [id$=-placeholder] {
963
971
  color: var(--db-critical-on-bg-basic-emphasis-100-default);
964
972
  caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
965
973
  }
966
- .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > db-infotext > .db-infotext[data-semantic=critical],
967
- .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > .db-infotext[data-semantic=critical] {
974
+ .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
975
+ .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > .db-infotext[data-semantic=critical]:not([hidden]) {
968
976
  display: flex;
969
977
  }
970
- .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > db-infotext > .db-infotext:not([data-semantic]),
971
- .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > .db-infotext:not([data-semantic]) {
978
+ .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
979
+ .db-custom-select:has(select:not([data-custom-validity]):is(:required):user-invalid) > .db-infotext:not([data-semantic]):not([hidden]) {
972
980
  display: none;
973
981
  }
974
982
  .db-custom-select:has(select[data-custom-validity=invalid]), .db-custom-select[data-custom-validity=invalid] {
@@ -980,14 +988,14 @@ input[type=radio]:checked) [id$=-placeholder] {
980
988
  color: var(--db-critical-on-bg-basic-emphasis-100-default);
981
989
  caret-color: var(--db-critical-on-bg-basic-emphasis-100-default);
982
990
  }
983
- .db-custom-select:has(select[data-custom-validity=invalid]) > db-infotext > .db-infotext[data-semantic=critical],
984
- .db-custom-select:has(select[data-custom-validity=invalid]) > .db-infotext[data-semantic=critical], .db-custom-select[data-custom-validity=invalid] > db-infotext > .db-infotext[data-semantic=critical],
985
- .db-custom-select[data-custom-validity=invalid] > .db-infotext[data-semantic=critical] {
991
+ .db-custom-select:has(select[data-custom-validity=invalid]) > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
992
+ .db-custom-select:has(select[data-custom-validity=invalid]) > .db-infotext[data-semantic=critical]:not([hidden]), .db-custom-select[data-custom-validity=invalid] > db-infotext > .db-infotext[data-semantic=critical]:not([hidden]),
993
+ .db-custom-select[data-custom-validity=invalid] > .db-infotext[data-semantic=critical]:not([hidden]) {
986
994
  display: flex;
987
995
  }
988
- .db-custom-select:has(select[data-custom-validity=invalid]) > db-infotext > .db-infotext:not([data-semantic]),
989
- .db-custom-select:has(select[data-custom-validity=invalid]) > .db-infotext:not([data-semantic]), .db-custom-select[data-custom-validity=invalid] > db-infotext > .db-infotext:not([data-semantic]),
990
- .db-custom-select[data-custom-validity=invalid] > .db-infotext:not([data-semantic]) {
996
+ .db-custom-select:has(select[data-custom-validity=invalid]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
997
+ .db-custom-select:has(select[data-custom-validity=invalid]) > .db-infotext:not([data-semantic]):not([hidden]), .db-custom-select[data-custom-validity=invalid] > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
998
+ .db-custom-select[data-custom-validity=invalid] > .db-infotext:not([data-semantic]):not([hidden]) {
991
999
  display: none;
992
1000
  }
993
1001
  .db-custom-select summary::placeholder,
@@ -1062,7 +1070,7 @@ summary[aria-disabled=true]) {
1062
1070
  --db-form-component-padding-inline-end: calc(var(--db-icon-font-size) + var(--db-spacing-fixed-sm) + var(--db-spacing-fixed-xs));
1063
1071
  margin-inline-end: calc(var(--db-icon-font-size) + var(--db-spacing-fixed-sm));
1064
1072
  }
1065
- .db-custom-select:has(summary span) [id$=-placeholder] {
1073
+ .db-custom-select:has(summary span) [id$=-placeholder]:not([hidden]) {
1066
1074
  display: none;
1067
1075
  }
1068
1076
  .db-custom-select > db-button > .db-button[data-icon=cross][data-variant=ghost],
@@ -57,7 +57,7 @@
57
57
 
58
58
  &:has(summary span) {
59
59
  [id$="-placeholder"] {
60
- display: none;
60
+ @include helpers.display(none);
61
61
  }
62
62
  }
63
63
 
@@ -483,9 +483,9 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
483
483
  }
484
484
  }
485
485
  @media screen and (min-width: 48em) {
486
- .db-custom-select-dropdown > db-custom-select-list > div:not([class~=db-custom-select-list]):has(.db-button):not([data-force-mobile]), .db-custom-select-dropdown > db-custom-select-list > div:not([class~=db-custom-select-list]):has(.db-button)[data-force-mobile=false],
487
- .db-custom-select-dropdown > div:not([class~=db-custom-select-list]):has(.db-button):not([data-force-mobile]),
488
- .db-custom-select-dropdown > div:not([class~=db-custom-select-list]):has(.db-button)[data-force-mobile=false] {
486
+ .db-custom-select-dropdown > db-custom-select-list > div:not([class~=db-custom-select-list]):has(.db-button):not([data-force-mobile]):not([hidden]), .db-custom-select-dropdown > db-custom-select-list > div:not([class~=db-custom-select-list]):has(.db-button)[data-force-mobile=false]:not([hidden]),
487
+ .db-custom-select-dropdown > div:not([class~=db-custom-select-list]):has(.db-button):not([data-force-mobile]):not([hidden]),
488
+ .db-custom-select-dropdown > div:not([class~=db-custom-select-list]):has(.db-button)[data-force-mobile=false]:not([hidden]) {
489
489
  display: none;
490
490
  }
491
491
  }
@@ -64,7 +64,7 @@
64
64
  @include helpers.divider("top", "after");
65
65
 
66
66
  @include screen-sizes.screen("sm") {
67
- display: none;
67
+ @include helpers.display(none);
68
68
  }
69
69
  }
70
70
  }
@@ -128,17 +128,21 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
128
128
  */
129
129
  .db-custom-select-form-field:is(summary) {
130
130
  list-style: none;
131
- display: flex;
132
131
  align-items: center;
133
132
  justify-content: space-between;
134
133
  gap: var(--db-spacing-fixed-sm);
135
134
  }
135
+ .db-custom-select-form-field:is(summary):not([hidden]) {
136
+ display: flex;
137
+ }
136
138
  .db-custom-select-form-field:is(summary) span {
137
139
  text-overflow: ellipsis;
138
140
  overflow: hidden;
139
141
  text-wrap: nowrap;
140
142
  }
141
143
  .db-custom-select-form-field:is(summary) > div {
142
- display: flex;
143
144
  gap: var(--db-spacing-fixed-sm);
144
145
  }
146
+ .db-custom-select-form-field:is(summary) > div:not([hidden]) {
147
+ display: flex;
148
+ }
@@ -5,7 +5,9 @@
5
5
  .db-custom-select-form-field {
6
6
  &:is(summary) {
7
7
  list-style: none;
8
- display: flex;
8
+
9
+ @include helpers.display(flex);
10
+
9
11
  align-items: center;
10
12
  justify-content: space-between;
11
13
  gap: variables.$db-spacing-fixed-sm;
@@ -17,7 +19,8 @@
17
19
  }
18
20
 
19
21
  > div {
20
- display: flex;
22
+ @include helpers.display(flex);
23
+
21
24
  gap: variables.$db-spacing-fixed-sm;
22
25
  }
23
26
  }
@@ -139,9 +139,11 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
139
139
  }
140
140
  .db-custom-select-list > ul {
141
141
  all: unset;
142
- display: flex;
143
142
  flex-direction: column;
144
143
  }
144
+ .db-custom-select-list > ul:not([hidden]) {
145
+ display: flex;
146
+ }
145
147
  .db-custom-select-list > ul:has(span) {
146
148
  --db-custom-select-list-item-group-padding: 1;
147
149
  }
@@ -1,5 +1,6 @@
1
1
  @use "@db-ux/core-foundations/build/styles/variables";
2
2
  @use "../../styles/internal/form-components";
3
+ @use "@db-ux/core-foundations/build/styles/helpers/display";
3
4
 
4
5
  .db-custom-select-list {
5
6
  all: unset;
@@ -26,7 +27,9 @@
26
27
 
27
28
  > ul {
28
29
  all: unset;
29
- display: flex;
30
+
31
+ @include display.display(flex);
32
+
30
33
  flex-direction: column;
31
34
 
32
35
  &:has(span) {
@@ -174,7 +174,6 @@ db-custom-select-list-item:not(:last-of-type) .db-custom-select-list-item[data-d
174
174
  }
175
175
 
176
176
  .db-custom-select-list-item {
177
- display: flex;
178
177
  block-size: 100%;
179
178
  position: relative;
180
179
  padding: var(--db-spacing-fixed-sm);
@@ -182,6 +181,9 @@ db-custom-select-list-item:not(:last-of-type) .db-custom-select-list-item[data-d
182
181
  border-radius: var(--db-border-radius-xs);
183
182
  box-sizing: border-box;
184
183
  }
184
+ .db-custom-select-list-item:not([hidden]) {
185
+ display: flex;
186
+ }
185
187
  .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)) {
186
188
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
187
189
  }
@@ -14,7 +14,8 @@ db-custom-select-list-item:not(:last-of-type) {
14
14
  }
15
15
 
16
16
  .db-custom-select-list-item {
17
- display: flex;
17
+ @include helpers.display(flex);
18
+
18
19
  block-size: 100%;
19
20
  position: relative;
20
21
  padding: variables.$db-spacing-fixed-sm;
@@ -278,7 +278,6 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
278
278
  }
279
279
 
280
280
  .db-drawer .db-drawer-container {
281
- display: flex;
282
281
  flex-direction: column;
283
282
  background-color: var(--db-adaptive-bg-basic-level-1-default);
284
283
  block-size: 100%;
@@ -286,6 +285,9 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
286
285
  position: fixed;
287
286
  box-shadow: var(--db-elevation-md);
288
287
  }
288
+ .db-drawer .db-drawer-container:not([hidden]) {
289
+ display: flex;
290
+ }
289
291
  .db-drawer .db-drawer-container:not([data-width=full]) {
290
292
  max-inline-size: var(--db-drawer-max-width, calc(100% - var(--db-spacing-fixed-xl)));
291
293
  min-inline-size: var(--db-drawer-min-width, calc(100% - var(--db-spacing-fixed-xl)));
@@ -306,10 +308,12 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
306
308
  box-shadow: var(--db-elevation-md);
307
309
  }
308
310
  .db-drawer .db-drawer-container .db-drawer-header {
309
- display: none;
310
311
  --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
311
312
  position: var(--db-tooltip-parent-position, relative);
312
313
  }
314
+ .db-drawer .db-drawer-container .db-drawer-header:not([hidden]) {
315
+ display: none;
316
+ }
313
317
  .db-drawer .db-drawer-container .db-drawer-header[data-emphasis=strong] {
314
318
  --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
315
319
  }
@@ -338,7 +342,7 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
338
342
  .db-drawer .db-drawer-container .db-drawer-header .button-close-drawer button {
339
343
  margin-inline-start: auto;
340
344
  }
341
- .db-drawer .db-drawer-container .db-drawer-header:has(.button-close-drawer), .db-drawer .db-drawer-container .db-drawer-header:has(:not(.db-drawer-header-text:empty)) {
345
+ .db-drawer .db-drawer-container .db-drawer-header:has(.button-close-drawer):not([hidden]), .db-drawer .db-drawer-container .db-drawer-header:has(:not(.db-drawer-header-text:empty)):not([hidden]) {
342
346
  display: flex;
343
347
  }
344
348
  .db-drawer[data-position=absolute] {
@@ -349,7 +353,7 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
349
353
  inline-size: 100%;
350
354
  background-color: transparent;
351
355
  }
352
- .db-drawer[data-position=absolute][open] {
356
+ .db-drawer[data-position=absolute][open]:not([hidden]) {
353
357
  display: flex;
354
358
  }
355
359
  .db-drawer[data-position=absolute]:not([data-direction]), .db-drawer[data-position=absolute][data-direction=right], .db-drawer[data-position=absolute][data-direction=left] {