@db-ux/core-components 4.4.3 → 4.5.0

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 (47) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/build/components/accordion-item/accordion-item.css +38 -7
  3. package/build/components/accordion-item/accordion-item.scss +1 -1
  4. package/build/components/badge/badge.css +75 -11
  5. package/build/components/badge/badge.scss +6 -1
  6. package/build/components/brand/brand.css +2 -0
  7. package/build/components/brand/brand.scss +2 -0
  8. package/build/components/button/button.css +245 -60
  9. package/build/components/button/button.scss +1 -105
  10. package/build/components/card/card.css +88 -16
  11. package/build/components/checkbox/checkbox.css +1 -0
  12. package/build/components/custom-button/custom-button.css +892 -0
  13. package/build/components/custom-button/custom-button.scss +78 -0
  14. package/build/components/custom-select/custom-select.css +19 -3
  15. package/build/components/custom-select-dropdown/custom-select-dropdown.css +1 -0
  16. package/build/components/custom-select-dropdown/custom-select-dropdown.scss +1 -0
  17. package/build/components/custom-select-list-item/custom-select-list-item.css +36 -6
  18. package/build/components/drawer/drawer.css +4 -0
  19. package/build/components/drawer/drawer.scss +4 -0
  20. package/build/components/infotext/infotext.css +4 -0
  21. package/build/components/infotext/infotext.scss +4 -0
  22. package/build/components/input/input.css +19 -3
  23. package/build/components/link/link.css +73 -12
  24. package/build/components/navigation-item/navigation-item.css +111 -21
  25. package/build/components/navigation-item/navigation-item.scss +2 -1
  26. package/build/components/notification/notification.css +37 -6
  27. package/build/components/select/select.css +19 -3
  28. package/build/components/switch/switch.css +1 -0
  29. package/build/components/tab-item/tab-item.css +52 -10
  30. package/build/components/tabs/tabs.css +2 -0
  31. package/build/components/tabs/tabs.scss +2 -0
  32. package/build/components/tag/tag.css +856 -125
  33. package/build/components/textarea/textarea.css +18 -3
  34. package/build/components/tooltip/tooltip.css +4 -1
  35. package/build/components/tooltip/tooltip.scss +12 -10
  36. package/build/styles/absolute.css +9 -9
  37. package/build/styles/index.css +8 -8
  38. package/build/styles/index.scss +1 -0
  39. package/build/styles/internal/_button-components.scss +140 -2
  40. package/build/styles/internal/_custom-elements.scss +1 -1
  41. package/build/styles/internal/_icon-passing.scss +23 -3
  42. package/build/styles/internal/_popover-component.scss +4 -4
  43. package/build/styles/relative.css +9 -9
  44. package/build/styles/rollup.css +9 -9
  45. package/build/styles/wc-workarounds.css +1 -1
  46. package/build/styles/webpack.css +9 -9
  47. package/package.json +5 -5
@@ -0,0 +1,78 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+ @use "@db-ux/core-foundations/build/styles/colors";
3
+ @use "@db-ux/core-foundations/build/styles/icons";
4
+ @use "@db-ux/core-foundations/build/styles/helpers";
5
+ @use "../../styles/internal/button-components";
6
+ @use "../../styles/internal/icon-passing";
7
+
8
+ @mixin interactive-elements {
9
+ label,
10
+ button,
11
+ a {
12
+ @content;
13
+ }
14
+ }
15
+
16
+ $icon-padding-custom-button: calc(
17
+ #{variables.$db-spacing-fixed-sm} + #{icons.$default-icon-margin-end} +
18
+ var(--db-icon-font-size)
19
+ );
20
+
21
+ // generic styles can be found in _button-components.scss
22
+ .db-custom-button {
23
+ position: relative;
24
+ max-inline-size: 100%;
25
+ inline-size: fit-content;
26
+
27
+ @include button-components.set-basic-button(
28
+ icon-passing.$interactive-button-selectors
29
+ );
30
+ @include icon-passing.icon-passing;
31
+ @include icon-passing.icon-passing-trailing;
32
+
33
+ &:has(:is(input, button):disabled, :is(input, button, a)[aria-disabled="true"]) {
34
+ opacity: variables.$db-opacity-md;
35
+ }
36
+
37
+ &[data-variant="brand"] {
38
+ label {
39
+ @extend %button-outlined-ghost-colors;
40
+ }
41
+
42
+ :is(a, button) {
43
+ @extend %button-brand-colors;
44
+ }
45
+ }
46
+
47
+ label:has(input:checked) {
48
+ color: colors.$db-adaptive-on-bg-inverted-default;
49
+ background-color: colors.$db-adaptive-bg-inverted-contrast-max-default;
50
+ }
51
+
52
+ label:has(input[type="checkbox"]:checked) {
53
+ @include helpers.hover {
54
+ background-color: colors.$db-adaptive-bg-inverted-contrast-max-hovered;
55
+ }
56
+
57
+ @include helpers.active {
58
+ background-color: colors.$db-adaptive-bg-inverted-contrast-max-pressed;
59
+ }
60
+ }
61
+
62
+ a[tabindex="-1"] {
63
+ cursor: default;
64
+ pointer-events: none;
65
+ }
66
+
67
+ &[data-width="full"] {
68
+ inline-size: 100%;
69
+ }
70
+
71
+ &:has(input):focus-within {
72
+ @extend %focus-placeholder;
73
+ }
74
+
75
+ input {
76
+ @extend %a11y-visually-hidden;
77
+ }
78
+ }
@@ -530,6 +530,7 @@
530
530
  text-transform: none;
531
531
  overflow: clip;
532
532
  vertical-align: var(--db-icon-vertical-align, middle);
533
+ /* stylelint-disable-next-line db-ux/use-sizing */
533
534
  block-size: var(--db-icon-font-size, 1.5rem);
534
535
  aspect-ratio: 1;
535
536
  flex-shrink: 0;
@@ -1061,14 +1062,29 @@ input[type=radio]:checked) summary:is([type=date],
1061
1062
  padding-inline: var(--db-form-component-padding-inline-start, var(--db-spacing-fixed-sm)) var(--db-form-component-padding-inline-end, var(--db-spacing-fixed-sm));
1062
1063
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
1063
1064
  }
1064
- .db-custom-select summary:hover:not(:disabled, [aria-disabled=true]) {
1065
+ .db-custom-select summary:hover:not(:disabled,
1066
+ [aria-disabled=true],
1067
+ [tabindex="-1"],
1068
+ :has(:disabled)) {
1065
1069
  cursor: var(--db-overwrite-cursor, pointer);
1066
1070
  background-color: var(--db-adaptive-bg-basic-transparent-semi-hovered);
1067
1071
  }
1068
- .db-custom-select summary:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-custom-select summary:hover:not(:disabled, [aria-disabled=true]):is(input) {
1072
+ .db-custom-select summary:hover:not(:disabled,
1073
+ [aria-disabled=true],
1074
+ [tabindex="-1"],
1075
+ :has(:disabled)):is(textarea), .db-custom-select summary:hover:not(:disabled,
1076
+ [aria-disabled=true],
1077
+ [tabindex="-1"],
1078
+ :has(:disabled)):is(input) {
1069
1079
  cursor: initial;
1070
1080
  }
1071
- .db-custom-select summary:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-custom-select summary:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
1081
+ .db-custom-select summary:hover:not(:disabled,
1082
+ [aria-disabled=true],
1083
+ [tabindex="-1"],
1084
+ :has(:disabled)):is(input[type=checkbox]), .db-custom-select summary:hover:not(:disabled,
1085
+ [aria-disabled=true],
1086
+ [tabindex="-1"],
1087
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
1072
1088
  cursor: pointer;
1073
1089
  }
1074
1090
  .db-custom-select > label {
@@ -284,6 +284,7 @@
284
284
  /* stylelint-disable-next-line media-query-no-invalid */
285
285
  }
286
286
  .db-custom-select-dropdown:not([data-width]), .db-custom-select-dropdown[data-width=fixed] {
287
+ /* stylelint-disable-next-line db-ux/use-sizing */
287
288
  inline-size: var(--db-custom-select-dropdown-fixed-inline-size, var(--db-sizing-3xl));
288
289
  }
289
290
  .db-custom-select-dropdown[data-width=full] {
@@ -17,6 +17,7 @@
17
17
 
18
18
  &:not([data-width]),
19
19
  &[data-width="fixed"] {
20
+ /* stylelint-disable-next-line db-ux/use-sizing */
20
21
  inline-size: var(
21
22
  --db-custom-select-dropdown-fixed-inline-size,
22
23
  #{variables.$db-sizing-3xl}
@@ -167,24 +167,54 @@ db-custom-select-list-item:not(:last-of-type) .db-custom-select-list-item[data-d
167
167
  .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)) {
168
168
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
169
169
  }
170
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled, [aria-disabled=true]) {
170
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled,
171
+ [aria-disabled=true],
172
+ [tabindex="-1"],
173
+ :has(:disabled)) {
171
174
  cursor: var(--db-overwrite-cursor, pointer);
172
175
  background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
173
176
  }
174
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled, [aria-disabled=true]):is(input) {
177
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled,
178
+ [aria-disabled=true],
179
+ [tabindex="-1"],
180
+ :has(:disabled)):is(textarea), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled,
181
+ [aria-disabled=true],
182
+ [tabindex="-1"],
183
+ :has(:disabled)):is(input) {
175
184
  cursor: initial;
176
185
  }
177
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
186
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled,
187
+ [aria-disabled=true],
188
+ [tabindex="-1"],
189
+ :has(:disabled)):is(input[type=checkbox]), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):hover:not(:disabled,
190
+ [aria-disabled=true],
191
+ [tabindex="-1"],
192
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
178
193
  cursor: pointer;
179
194
  }
180
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled, [aria-disabled=true]) {
195
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled,
196
+ [aria-disabled=true],
197
+ [tabindex="-1"],
198
+ :has(:disabled)) {
181
199
  cursor: var(--db-overwrite-cursor, pointer);
182
200
  background-color: var(--db-adaptive-bg-basic-transparent-full-pressed);
183
201
  }
184
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled, [aria-disabled=true]):is(textarea), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled, [aria-disabled=true]):is(input) {
202
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled,
203
+ [aria-disabled=true],
204
+ [tabindex="-1"],
205
+ :has(:disabled)):is(textarea), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled,
206
+ [aria-disabled=true],
207
+ [tabindex="-1"],
208
+ :has(:disabled)):is(input) {
185
209
  cursor: initial;
186
210
  }
187
- .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
211
+ .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled,
212
+ [aria-disabled=true],
213
+ [tabindex="-1"],
214
+ :has(:disabled)):is(input[type=checkbox]), .db-custom-select-list-item:has(> label):not(:has(input[type=radio]:checked)):active:not(:disabled,
215
+ [aria-disabled=true],
216
+ [tabindex="-1"],
217
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
188
218
  cursor: pointer;
189
219
  }
190
220
  .db-custom-select-list-item span {
@@ -94,7 +94,9 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
94
94
  }
95
95
 
96
96
  .db-drawer .db-drawer-container[data-direction=down]:not([data-width=full]), .db-drawer .db-drawer-container[data-direction=up]:not([data-width=full]) {
97
+ /* stylelint-disable-next-line db-ux/use-sizing */
97
98
  max-block-size: var(--db-drawer-max-height, calc(100% - var(--db-spacing-fixed-xl)));
99
+ /* stylelint-disable-next-line db-ux/use-sizing */
98
100
  min-block-size: var(--db-drawer-min-height, calc(100% - var(--db-spacing-fixed-xl)));
99
101
  max-inline-size: none;
100
102
  }
@@ -213,7 +215,9 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
213
215
  box-shadow: var(--db-elevation-md);
214
216
  }
215
217
  .db-drawer .db-drawer-container:not([data-width=full]) {
218
+ /* stylelint-disable-next-line db-ux/use-sizing */
216
219
  max-inline-size: var(--db-drawer-max-width, calc(100% - var(--db-spacing-fixed-xl)));
220
+ /* stylelint-disable-next-line db-ux/use-sizing */
217
221
  min-inline-size: var(--db-drawer-min-width, calc(100% - var(--db-spacing-fixed-xl)));
218
222
  }
219
223
  .db-drawer .db-drawer-container:not([data-width=full]):not([data-direction]), .db-drawer .db-drawer-container:not([data-width=full])[data-direction=right] {
@@ -32,10 +32,12 @@
32
32
  /// @propertyname max-block-size
33
33
  /// @cssprop --db-drawer-max-height
34
34
  /// @default calc(100% - #{variables.$db-spacing-fixed-xl})
35
+ /* stylelint-disable-next-line db-ux/use-sizing */
35
36
  max-block-size: var(
36
37
  --db-drawer-max-height,
37
38
  calc(100% - #{variables.$db-spacing-fixed-xl})
38
39
  );
40
+ /* stylelint-disable-next-line db-ux/use-sizing */
39
41
  min-block-size: var(
40
42
  --db-drawer-min-height,
41
43
  calc(100% - #{variables.$db-spacing-fixed-xl})
@@ -163,10 +165,12 @@ $spacings: (
163
165
  /// <div class="db-drawer db-drawer-wide">
164
166
  /// <!-- wide drawer -->
165
167
  /// </div>
168
+ /* stylelint-disable-next-line db-ux/use-sizing */
166
169
  max-inline-size: var(
167
170
  --db-drawer-max-width,
168
171
  calc(100% - #{variables.$db-spacing-fixed-xl})
169
172
  );
173
+ /* stylelint-disable-next-line db-ux/use-sizing */
170
174
  min-inline-size: var(
171
175
  --db-drawer-min-width,
172
176
  calc(100% - #{variables.$db-spacing-fixed-xl})
@@ -126,6 +126,7 @@
126
126
  text-transform: none;
127
127
  overflow: clip;
128
128
  vertical-align: var(--db-icon-vertical-align, middle);
129
+ /* stylelint-disable-next-line db-ux/use-sizing */
129
130
  block-size: var(--db-icon-font-size, 1.5rem);
130
131
  aspect-ratio: 1;
131
132
  flex-shrink: 0;
@@ -170,6 +171,9 @@
170
171
  .db-infotext[data-semantic=adaptive]::before, .db-infotext:not([data-semantic])::before {
171
172
  --db-icon-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
172
173
  }
174
+ .db-infotext[data-wrap=false] {
175
+ white-space: nowrap;
176
+ }
173
177
  .db-infotext[data-semantic=neutral] {
174
178
  color: var(--db-neutral-on-bg-basic-emphasis-80-default);
175
179
  }
@@ -29,6 +29,10 @@
29
29
  }
30
30
  }
31
31
 
32
+ &[data-wrap="false"] {
33
+ white-space: nowrap;
34
+ }
35
+
32
36
  @each $name, $colors in colors.$variant-colors {
33
37
  &[data-semantic="#{$name}"] {
34
38
  @include icons.variant-icons($name);
@@ -377,6 +377,7 @@
377
377
  text-transform: none;
378
378
  overflow: clip;
379
379
  vertical-align: var(--db-icon-vertical-align, middle);
380
+ /* stylelint-disable-next-line db-ux/use-sizing */
380
381
  block-size: var(--db-icon-font-size, 1.5rem);
381
382
  aspect-ratio: 1;
382
383
  flex-shrink: 0;
@@ -844,14 +845,29 @@ input[type=radio]:checked) input:is([type=date],
844
845
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
845
846
  /* see https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing */
846
847
  }
847
- .db-input input:hover:not(:disabled, [aria-disabled=true]) {
848
+ .db-input input:hover:not(:disabled,
849
+ [aria-disabled=true],
850
+ [tabindex="-1"],
851
+ :has(:disabled)) {
848
852
  cursor: var(--db-overwrite-cursor, pointer);
849
853
  background-color: var(--db-adaptive-bg-basic-transparent-semi-hovered);
850
854
  }
851
- .db-input input:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-input input:hover:not(:disabled, [aria-disabled=true]):is(input) {
855
+ .db-input input:hover:not(:disabled,
856
+ [aria-disabled=true],
857
+ [tabindex="-1"],
858
+ :has(:disabled)):is(textarea), .db-input input:hover:not(:disabled,
859
+ [aria-disabled=true],
860
+ [tabindex="-1"],
861
+ :has(:disabled)):is(input) {
852
862
  cursor: initial;
853
863
  }
854
- .db-input input:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-input input:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
864
+ .db-input input:hover:not(:disabled,
865
+ [aria-disabled=true],
866
+ [tabindex="-1"],
867
+ :has(:disabled)):is(input[type=checkbox]), .db-input input:hover:not(:disabled,
868
+ [aria-disabled=true],
869
+ [tabindex="-1"],
870
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
855
871
  cursor: pointer;
856
872
  }
857
873
  .db-input input[data-field-sizing=content] {
@@ -145,6 +145,7 @@
145
145
  text-transform: none;
146
146
  overflow: clip;
147
147
  vertical-align: var(--db-icon-vertical-align, middle);
148
+ /* stylelint-disable-next-line db-ux/use-sizing */
148
149
  block-size: var(--db-icon-font-size, 1.5rem);
149
150
  aspect-ratio: 1;
150
151
  flex-shrink: 0;
@@ -177,24 +178,54 @@
177
178
  color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
178
179
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
179
180
  }
180
- .db-link:hover:not(:disabled, [aria-disabled=true]) {
181
+ .db-link:hover:not(:disabled,
182
+ [aria-disabled=true],
183
+ [tabindex="-1"],
184
+ :has(:disabled)) {
181
185
  cursor: var(--db-overwrite-cursor, pointer);
182
186
  color: color-mix(in srgb, transparent 25%, var(--db-adaptive-on-bg-basic-emphasis-100-default));
183
187
  }
184
- .db-link:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-link:hover:not(:disabled, [aria-disabled=true]):is(input) {
188
+ .db-link:hover:not(:disabled,
189
+ [aria-disabled=true],
190
+ [tabindex="-1"],
191
+ :has(:disabled)):is(textarea), .db-link:hover:not(:disabled,
192
+ [aria-disabled=true],
193
+ [tabindex="-1"],
194
+ :has(:disabled)):is(input) {
185
195
  cursor: initial;
186
196
  }
187
- .db-link:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-link:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
197
+ .db-link:hover:not(:disabled,
198
+ [aria-disabled=true],
199
+ [tabindex="-1"],
200
+ :has(:disabled)):is(input[type=checkbox]), .db-link:hover:not(:disabled,
201
+ [aria-disabled=true],
202
+ [tabindex="-1"],
203
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
188
204
  cursor: pointer;
189
205
  }
190
- .db-link:active:not(:disabled, [aria-disabled=true]) {
206
+ .db-link:active:not(:disabled,
207
+ [aria-disabled=true],
208
+ [tabindex="-1"],
209
+ :has(:disabled)) {
191
210
  cursor: var(--db-overwrite-cursor, pointer);
192
211
  color: color-mix(in srgb, transparent 50%, var(--db-adaptive-on-bg-basic-emphasis-100-default));
193
212
  }
194
- .db-link:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-link:active:not(:disabled, [aria-disabled=true]):is(input) {
213
+ .db-link:active:not(:disabled,
214
+ [aria-disabled=true],
215
+ [tabindex="-1"],
216
+ :has(:disabled)):is(textarea), .db-link:active:not(:disabled,
217
+ [aria-disabled=true],
218
+ [tabindex="-1"],
219
+ :has(:disabled)):is(input) {
195
220
  cursor: initial;
196
221
  }
197
- .db-link:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-link:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
222
+ .db-link:active:not(:disabled,
223
+ [aria-disabled=true],
224
+ [tabindex="-1"],
225
+ :has(:disabled)):is(input[type=checkbox]), .db-link:active:not(:disabled,
226
+ [aria-disabled=true],
227
+ [tabindex="-1"],
228
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
198
229
  cursor: pointer;
199
230
  }
200
231
 
@@ -246,24 +277,54 @@
246
277
  color: var(--db-brand-on-bg-basic-emphasis-80-default);
247
278
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
248
279
  }
249
- .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]) {
280
+ .db-link[data-variant=brand]:hover:not(:disabled,
281
+ [aria-disabled=true],
282
+ [tabindex="-1"],
283
+ :has(:disabled)) {
250
284
  cursor: var(--db-overwrite-cursor, pointer);
251
285
  color: var(--db-brand-on-bg-basic-emphasis-80-hovered);
252
286
  }
253
- .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input) {
287
+ .db-link[data-variant=brand]:hover:not(:disabled,
288
+ [aria-disabled=true],
289
+ [tabindex="-1"],
290
+ :has(:disabled)):is(textarea), .db-link[data-variant=brand]:hover:not(:disabled,
291
+ [aria-disabled=true],
292
+ [tabindex="-1"],
293
+ :has(:disabled)):is(input) {
254
294
  cursor: initial;
255
295
  }
256
- .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
296
+ .db-link[data-variant=brand]:hover:not(:disabled,
297
+ [aria-disabled=true],
298
+ [tabindex="-1"],
299
+ :has(:disabled)):is(input[type=checkbox]), .db-link[data-variant=brand]:hover:not(:disabled,
300
+ [aria-disabled=true],
301
+ [tabindex="-1"],
302
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
257
303
  cursor: pointer;
258
304
  }
259
- .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]) {
305
+ .db-link[data-variant=brand]:active:not(:disabled,
306
+ [aria-disabled=true],
307
+ [tabindex="-1"],
308
+ :has(:disabled)) {
260
309
  cursor: var(--db-overwrite-cursor, pointer);
261
310
  color: var(--db-brand-on-bg-basic-emphasis-80-pressed);
262
311
  }
263
- .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input) {
312
+ .db-link[data-variant=brand]:active:not(:disabled,
313
+ [aria-disabled=true],
314
+ [tabindex="-1"],
315
+ :has(:disabled)):is(textarea), .db-link[data-variant=brand]:active:not(:disabled,
316
+ [aria-disabled=true],
317
+ [tabindex="-1"],
318
+ :has(:disabled)):is(input) {
264
319
  cursor: initial;
265
320
  }
266
- .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
321
+ .db-link[data-variant=brand]:active:not(:disabled,
322
+ [aria-disabled=true],
323
+ [tabindex="-1"],
324
+ :has(:disabled)):is(input[type=checkbox]), .db-link[data-variant=brand]:active:not(:disabled,
325
+ [aria-disabled=true],
326
+ [tabindex="-1"],
327
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
267
328
  cursor: pointer;
268
329
  }
269
330
  .db-link[data-size=small] {
@@ -134,6 +134,7 @@
134
134
  text-transform: none;
135
135
  overflow: clip;
136
136
  vertical-align: var(--db-icon-vertical-align, middle);
137
+ /* stylelint-disable-next-line db-ux/use-sizing */
137
138
  block-size: var(--db-icon-font-size, 1.5rem);
138
139
  aspect-ratio: 1;
139
140
  flex-shrink: 0;
@@ -207,34 +208,124 @@
207
208
  .db-navigation-item .db-navigation-item-expand-button > button:not([hidden]), .db-navigation-item a:not([hidden]) {
208
209
  display: inline-flex;
209
210
  }
210
- .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled, [aria-disabled=true]):is(button),
211
- .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled, [aria-disabled=true]), .db-navigation-item a:hover:not(:disabled, [aria-disabled=true]) {
211
+ .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled,
212
+ [aria-disabled=true],
213
+ [tabindex="-1"],
214
+ :has(:disabled)):is(button),
215
+ .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled,
216
+ [aria-disabled=true],
217
+ [tabindex="-1"],
218
+ :has(:disabled)), .db-navigation-item a:hover:not(:disabled,
219
+ [aria-disabled=true],
220
+ [tabindex="-1"],
221
+ :has(:disabled)) {
212
222
  cursor: var(--db-overwrite-cursor, pointer);
213
223
  background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
214
224
  }
215
- .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled, [aria-disabled=true]):is(textarea):is(button),
216
- .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-navigation-item a:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled, [aria-disabled=true]):is(input):is(button),
217
- .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled, [aria-disabled=true]):is(input), .db-navigation-item a:hover:not(:disabled, [aria-disabled=true]):is(input) {
225
+ .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled,
226
+ [aria-disabled=true],
227
+ [tabindex="-1"],
228
+ :has(:disabled)):is(textarea):is(button),
229
+ .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled,
230
+ [aria-disabled=true],
231
+ [tabindex="-1"],
232
+ :has(:disabled)):is(textarea), .db-navigation-item a:hover:not(:disabled,
233
+ [aria-disabled=true],
234
+ [tabindex="-1"],
235
+ :has(:disabled)):is(textarea), .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled,
236
+ [aria-disabled=true],
237
+ [tabindex="-1"],
238
+ :has(:disabled)):is(input):is(button),
239
+ .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled,
240
+ [aria-disabled=true],
241
+ [tabindex="-1"],
242
+ :has(:disabled)):is(input), .db-navigation-item a:hover:not(:disabled,
243
+ [aria-disabled=true],
244
+ [tabindex="-1"],
245
+ :has(:disabled)):is(input) {
218
246
  cursor: initial;
219
247
  }
220
- .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]):is(button),
221
- .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-navigation-item a:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)):is(button),
222
- .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-navigation-item a:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
248
+ .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled,
249
+ [aria-disabled=true],
250
+ [tabindex="-1"],
251
+ :has(:disabled)):is(input[type=checkbox]):is(button),
252
+ .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled,
253
+ [aria-disabled=true],
254
+ [tabindex="-1"],
255
+ :has(:disabled)):is(input[type=checkbox]), .db-navigation-item a:hover:not(:disabled,
256
+ [aria-disabled=true],
257
+ [tabindex="-1"],
258
+ :has(:disabled)):is(input[type=checkbox]), .db-navigation-item .db-navigation-item-expand-button:hover:not(:disabled,
259
+ [aria-disabled=true],
260
+ [tabindex="-1"],
261
+ :has(:disabled)):is(input[type=radio]:not(:checked)):is(button),
262
+ .db-navigation-item .db-navigation-item-expand-button > button:hover:not(:disabled,
263
+ [aria-disabled=true],
264
+ [tabindex="-1"],
265
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-navigation-item a:hover:not(:disabled,
266
+ [aria-disabled=true],
267
+ [tabindex="-1"],
268
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
223
269
  cursor: pointer;
224
270
  }
225
- .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled, [aria-disabled=true]):is(button),
226
- .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled, [aria-disabled=true]), .db-navigation-item a:active:not(:disabled, [aria-disabled=true]) {
271
+ .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled,
272
+ [aria-disabled=true],
273
+ [tabindex="-1"],
274
+ :has(:disabled)):is(button),
275
+ .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled,
276
+ [aria-disabled=true],
277
+ [tabindex="-1"],
278
+ :has(:disabled)), .db-navigation-item a:active:not(:disabled,
279
+ [aria-disabled=true],
280
+ [tabindex="-1"],
281
+ :has(:disabled)) {
227
282
  cursor: var(--db-overwrite-cursor, pointer);
228
283
  background-color: var(--db-adaptive-bg-basic-transparent-full-pressed);
229
284
  }
230
- .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled, [aria-disabled=true]):is(textarea):is(button),
231
- .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-navigation-item a:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled, [aria-disabled=true]):is(input):is(button),
232
- .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled, [aria-disabled=true]):is(input), .db-navigation-item a:active:not(:disabled, [aria-disabled=true]):is(input) {
285
+ .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled,
286
+ [aria-disabled=true],
287
+ [tabindex="-1"],
288
+ :has(:disabled)):is(textarea):is(button),
289
+ .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled,
290
+ [aria-disabled=true],
291
+ [tabindex="-1"],
292
+ :has(:disabled)):is(textarea), .db-navigation-item a:active:not(:disabled,
293
+ [aria-disabled=true],
294
+ [tabindex="-1"],
295
+ :has(:disabled)):is(textarea), .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled,
296
+ [aria-disabled=true],
297
+ [tabindex="-1"],
298
+ :has(:disabled)):is(input):is(button),
299
+ .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled,
300
+ [aria-disabled=true],
301
+ [tabindex="-1"],
302
+ :has(:disabled)):is(input), .db-navigation-item a:active:not(:disabled,
303
+ [aria-disabled=true],
304
+ [tabindex="-1"],
305
+ :has(:disabled)):is(input) {
233
306
  cursor: initial;
234
307
  }
235
- .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]):is(button),
236
- .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-navigation-item a:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)):is(button),
237
- .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-navigation-item a:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
308
+ .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled,
309
+ [aria-disabled=true],
310
+ [tabindex="-1"],
311
+ :has(:disabled)):is(input[type=checkbox]):is(button),
312
+ .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled,
313
+ [aria-disabled=true],
314
+ [tabindex="-1"],
315
+ :has(:disabled)):is(input[type=checkbox]), .db-navigation-item a:active:not(:disabled,
316
+ [aria-disabled=true],
317
+ [tabindex="-1"],
318
+ :has(:disabled)):is(input[type=checkbox]), .db-navigation-item .db-navigation-item-expand-button:active:not(:disabled,
319
+ [aria-disabled=true],
320
+ [tabindex="-1"],
321
+ :has(:disabled)):is(input[type=radio]:not(:checked)):is(button),
322
+ .db-navigation-item .db-navigation-item-expand-button > button:active:not(:disabled,
323
+ [aria-disabled=true],
324
+ [tabindex="-1"],
325
+ :has(:disabled)):is(input[type=radio]:not(:checked)), .db-navigation-item a:active:not(:disabled,
326
+ [aria-disabled=true],
327
+ [tabindex="-1"],
328
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
238
329
  cursor: pointer;
239
330
  }
240
331
  .db-navigation-item .db-navigation-item-expand-button:has(~ .db-sub-navigation:is(:hover, :focus)):is(button),
@@ -248,16 +339,14 @@
248
339
  inline-size: auto;
249
340
  /* stylelint-disable-next-line media-query-no-invalid */
250
341
  }
251
- .db-navigation-item[data-icon]:not([data-show-icon=false])::before {
342
+ .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false])::before, .db-navigation-item[data-icon]:not([data-show-icon=false])::before {
252
343
  position: absolute;
253
344
  inset-block-start: calc(50% - 0.5em);
254
345
  inset-inline-start: var(--db-spacing-fixed-sm);
255
346
  pointer-events: none;
256
347
  z-index: 1;
257
348
  }
258
- .db-navigation-item[data-icon]:not([data-show-icon=false]) a,
259
- .db-navigation-item[data-icon]:not([data-show-icon=false]) button,
260
- .db-navigation-item[data-icon]:not([data-show-icon=false]) label {
349
+ .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false]) label, .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false]) button, .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false]) a, .db-navigation-item[data-icon]:not([data-show-icon=false]) label, .db-navigation-item[data-icon]:not([data-show-icon=false]) button, .db-navigation-item[data-icon]:not([data-show-icon=false]) a {
261
350
  --db-padding-inline-start: calc(
262
351
  var(--db-spacing-fixed-sm) + var(--db-icon-margin-end, var(--db-spacing-fixed-xs)) +
263
352
  var(--db-icon-font-size)
@@ -409,7 +498,7 @@
409
498
  box-shadow: var(--db-elevation-md);
410
499
  padding: var(--db-spacing-fixed-sm);
411
500
  position: absolute;
412
- min-inline-size: 328px;
501
+ min-inline-size: var(--db-container-xs);
413
502
  inset-block-start: calc(100% + var(--db-spacing-fixed-md));
414
503
  transition: visibility 1ms linear;
415
504
  }
@@ -456,6 +545,7 @@
456
545
  inset-block-start: 0;
457
546
  inset-inline-start: 0;
458
547
  block-size: 100%;
548
+ /* stylelint-disable-next-line db-ux/use-sizing */
459
549
  inline-size: var(--db-navigation-item-inline-size, 100%);
460
550
  background: transparent;
461
551
  transform: translateX(-100%);
@@ -218,7 +218,7 @@
218
218
  box-shadow: variables.$db-elevation-md;
219
219
  padding: variables.$db-spacing-fixed-sm;
220
220
  position: absolute;
221
- min-inline-size: 328px; // We should get this value from UX
221
+ min-inline-size: variables.$db-container-xs;
222
222
  inset-block-start: calc(100% + #{variables.$db-spacing-fixed-md});
223
223
  transition: visibility 1ms linear; // workaround to enable focus with keyboard
224
224
 
@@ -290,6 +290,7 @@
290
290
  inset-block-start: 0;
291
291
  inset-inline-start: 0;
292
292
  block-size: 100%;
293
+ /* stylelint-disable-next-line db-ux/use-sizing */
293
294
  inline-size: var(--db-navigation-item-inline-size, 100%);
294
295
  background: transparent;
295
296
  transform: translateX(-100%);