@db-ux/core-components 4.4.3 → 4.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (132) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/build/components/accordion-item/accordion-item.css +40 -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 +246 -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 +893 -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 +3 -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 +6 -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 +31 -3
  23. package/build/components/input/input.scss +11 -0
  24. package/build/components/link/link.css +75 -12
  25. package/build/components/navigation-item/navigation-item.css +113 -21
  26. package/build/components/navigation-item/navigation-item.scss +2 -1
  27. package/build/components/notification/notification.css +39 -6
  28. package/build/components/popover/popover.css +2 -0
  29. package/build/components/select/select.css +19 -3
  30. package/build/components/switch/switch.css +1 -0
  31. package/build/components/tab-item/tab-item.css +52 -10
  32. package/build/components/tab-list/tab-list.css +2 -0
  33. package/build/components/tabs/tabs.css +2 -0
  34. package/build/components/tabs/tabs.scss +2 -0
  35. package/build/components/tag/tag.css +858 -125
  36. package/build/components/textarea/textarea.css +20 -3
  37. package/build/components/tooltip/tooltip.css +6 -1
  38. package/build/components/tooltip/tooltip.scss +12 -10
  39. package/build/styles/absolute.css +9 -9
  40. package/build/styles/component-animations.css +1 -1
  41. package/build/styles/index.css +8 -8
  42. package/build/styles/index.scss +1 -0
  43. package/build/styles/internal/_button-components.scss +141 -2
  44. package/build/styles/internal/_custom-elements.scss +1 -1
  45. package/build/styles/internal/_form-components.scss +5 -1
  46. package/build/styles/internal/_icon-passing.scss +23 -3
  47. package/build/styles/internal/_popover-component.scss +4 -4
  48. package/build/styles/relative.css +9 -9
  49. package/build/styles/rollup.css +9 -9
  50. package/build/styles/wc-workarounds.css +1 -1
  51. package/build/styles/webpack.css +9 -9
  52. package/package.json +9 -7
  53. package/build/assets/fallback-icon.svg +0 -3
  54. package/build/assets/fonts/OFL.txt +0 -93
  55. package/build/assets/fonts/OpenSans-Bold-EU.woff2 +0 -0
  56. package/build/assets/fonts/OpenSans-Bold.ttf +0 -0
  57. package/build/assets/fonts/OpenSans-ExtraBold-EU.woff2 +0 -0
  58. package/build/assets/fonts/OpenSans-ExtraBold.ttf +0 -0
  59. package/build/assets/fonts/OpenSans-Light-EU.woff2 +0 -0
  60. package/build/assets/fonts/OpenSans-Light.ttf +0 -0
  61. package/build/assets/fonts/OpenSans-Medium-EU.woff2 +0 -0
  62. package/build/assets/fonts/OpenSans-Medium.ttf +0 -0
  63. package/build/assets/fonts/OpenSans-Regular-EU.woff2 +0 -0
  64. package/build/assets/fonts/OpenSans-Regular.ttf +0 -0
  65. package/build/assets/fonts/OpenSans-SemiBold-EU.woff2 +0 -0
  66. package/build/assets/fonts/OpenSans-SemiBold.ttf +0 -0
  67. package/build/assets/fonts/README.md +0 -23
  68. package/build/assets/fonts/generate-eu-fonts.ts +0 -59
  69. package/build/assets/fonts/unicode-eu.txt +0 -15
  70. package/build/assets/icons/DB_LICENSE +0 -253
  71. package/build/assets/icons/LICENCES.json +0 -231
  72. package/build/assets/icons/arrow_down.svg +0 -1
  73. package/build/assets/icons/arrow_left.svg +0 -1
  74. package/build/assets/icons/arrow_right.svg +0 -1
  75. package/build/assets/icons/arrow_up.svg +0 -1
  76. package/build/assets/icons/arrow_up_right.svg +0 -1
  77. package/build/assets/icons/brand.svg +0 -1
  78. package/build/assets/icons/calendar.svg +0 -5
  79. package/build/assets/icons/chat.svg +0 -1
  80. package/build/assets/icons/check.svg +0 -1
  81. package/build/assets/icons/check_circle.svg +0 -1
  82. package/build/assets/icons/chevron_down.svg +0 -1
  83. package/build/assets/icons/chevron_left.svg +0 -1
  84. package/build/assets/icons/chevron_right.svg +0 -1
  85. package/build/assets/icons/chevron_up.svg +0 -1
  86. package/build/assets/icons/circle.svg +0 -1
  87. package/build/assets/icons/circle_small.svg +0 -1
  88. package/build/assets/icons/circular_arrows.svg +0 -1
  89. package/build/assets/icons/clock.svg +0 -1
  90. package/build/assets/icons/copy.svg +0 -1
  91. package/build/assets/icons/cross.svg +0 -1
  92. package/build/assets/icons/cross_circle.svg +0 -1
  93. package/build/assets/icons/double_chevron_down.svg +0 -1
  94. package/build/assets/icons/double_chevron_left.svg +0 -1
  95. package/build/assets/icons/double_chevron_right.svg +0 -1
  96. package/build/assets/icons/double_chevron_up.svg +0 -1
  97. package/build/assets/icons/exclamation_mark_circle.svg +0 -1
  98. package/build/assets/icons/exclamation_mark_triangle.svg +0 -1
  99. package/build/assets/icons/eye.svg +0 -1
  100. package/build/assets/icons/eye_disabled.svg +0 -1
  101. package/build/assets/icons/fonts/all/db-ux.woff2 +0 -0
  102. package/build/assets/icons/fonts/default/db-ux.woff2 +0 -0
  103. package/build/assets/icons/fonts/default_12/db-ux.woff2 +0 -0
  104. package/build/assets/icons/fonts/default_14/db-ux.woff2 +0 -0
  105. package/build/assets/icons/fonts/default_16/db-ux.woff2 +0 -0
  106. package/build/assets/icons/fonts/default_20/db-ux.woff2 +0 -0
  107. package/build/assets/icons/fonts/default_24/db-ux.woff2 +0 -0
  108. package/build/assets/icons/fonts/default_28/db-ux.woff2 +0 -0
  109. package/build/assets/icons/fonts/default_32/db-ux.woff2 +0 -0
  110. package/build/assets/icons/fonts/default_48/db-ux.woff2 +0 -0
  111. package/build/assets/icons/fonts/default_64/db-ux.woff2 +0 -0
  112. package/build/assets/icons/fonts/fallback/icon-font-fallback.woff2 +0 -0
  113. package/build/assets/icons/fonts/filled/db-ux.woff2 +0 -0
  114. package/build/assets/icons/fonts/filled_12/db-ux.woff2 +0 -0
  115. package/build/assets/icons/fonts/filled_14/db-ux.woff2 +0 -0
  116. package/build/assets/icons/fonts/filled_16/db-ux.woff2 +0 -0
  117. package/build/assets/icons/fonts/filled_20/db-ux.woff2 +0 -0
  118. package/build/assets/icons/fonts/filled_24/db-ux.woff2 +0 -0
  119. package/build/assets/icons/fonts/filled_28/db-ux.woff2 +0 -0
  120. package/build/assets/icons/fonts/filled_32/db-ux.woff2 +0 -0
  121. package/build/assets/icons/fonts/filled_48/db-ux.woff2 +0 -0
  122. package/build/assets/icons/fonts/filled_64/db-ux.woff2 +0 -0
  123. package/build/assets/icons/house.svg +0 -1
  124. package/build/assets/icons/information_circle.svg +0 -1
  125. package/build/assets/icons/magnifying_glass.svg +0 -1
  126. package/build/assets/icons/menu.svg +0 -1
  127. package/build/assets/icons/minus.svg +0 -1
  128. package/build/assets/icons/moon.svg +0 -1
  129. package/build/assets/icons/plus.svg +0 -1
  130. package/build/assets/icons/resize_handle_corner.svg +0 -1
  131. package/build/assets/icons/sun.svg +0 -1
  132. package/build/assets/icons/x_placeholder.svg +0 -1
@@ -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 {
@@ -207,10 +207,12 @@
207
207
 
208
208
  @keyframes popover-animation {
209
209
  0% {
210
+ pointer-events: none;
210
211
  opacity: 0;
211
212
  transform: translate(var(--db-popover-center-x, var(--db-popover-translate-x, 0%)), var(--db-popover-center-y, var(--db-popover-translate-y, 0%)));
212
213
  }
213
214
  100% {
215
+ pointer-events: auto;
214
216
  opacity: 1;
215
217
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
216
218
  }
@@ -284,6 +286,7 @@
284
286
  /* stylelint-disable-next-line media-query-no-invalid */
285
287
  }
286
288
  .db-custom-select-dropdown:not([data-width]), .db-custom-select-dropdown[data-width=fixed] {
289
+ /* stylelint-disable-next-line db-ux/use-sizing */
287
290
  inline-size: var(--db-custom-select-dropdown-fixed-inline-size, var(--db-sizing-3xl));
288
291
  }
289
292
  .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 {
@@ -35,10 +35,12 @@
35
35
 
36
36
  @keyframes popover-animation {
37
37
  0% {
38
+ pointer-events: none;
38
39
  opacity: 0;
39
40
  transform: translate(var(--db-popover-center-x, var(--db-popover-translate-x, 0%)), var(--db-popover-center-y, var(--db-popover-translate-y, 0%)));
40
41
  }
41
42
  100% {
43
+ pointer-events: auto;
42
44
  opacity: 1;
43
45
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
44
46
  }
@@ -94,7 +96,9 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
94
96
  }
95
97
 
96
98
  .db-drawer .db-drawer-container[data-direction=down]:not([data-width=full]), .db-drawer .db-drawer-container[data-direction=up]:not([data-width=full]) {
99
+ /* stylelint-disable-next-line db-ux/use-sizing */
97
100
  max-block-size: var(--db-drawer-max-height, calc(100% - var(--db-spacing-fixed-xl)));
101
+ /* stylelint-disable-next-line db-ux/use-sizing */
98
102
  min-block-size: var(--db-drawer-min-height, calc(100% - var(--db-spacing-fixed-xl)));
99
103
  max-inline-size: none;
100
104
  }
@@ -213,7 +217,9 @@ dialog:not([data-backdrop=none])[data-backdrop=weak]::backdrop, dialog:not([data
213
217
  box-shadow: var(--db-elevation-md);
214
218
  }
215
219
  .db-drawer .db-drawer-container:not([data-width=full]) {
220
+ /* stylelint-disable-next-line db-ux/use-sizing */
216
221
  max-inline-size: var(--db-drawer-max-width, calc(100% - var(--db-spacing-fixed-xl)));
222
+ /* stylelint-disable-next-line db-ux/use-sizing */
217
223
  min-inline-size: var(--db-drawer-min-width, calc(100% - var(--db-spacing-fixed-xl)));
218
224
  }
219
225
  .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;
@@ -717,6 +718,7 @@ input[type=radio]:checked) input:is([type=date],
717
718
  }
718
719
  }
719
720
  .db-input:has(input:not([data-custom-validity]):is(:required, [minlength], [maxlength], [pattern], [type=color], [type=date], [type=datetime-local], [type=email], [type=file], [type=hidden], [type=month], [type=number], [type=range], [type=tel], [type=time], [type=url], [type=week]):user-valid) {
721
+ --db-icon-color: var(--db-successful-on-bg-basic-emphasis-100-default);
720
722
  /* stylelint-disable-next-line at-rule-empty-line-before */
721
723
  }
722
724
  .db-input:has(input:not([data-custom-validity]):is(:required, [minlength], [maxlength], [pattern], [type=color], [type=date], [type=datetime-local], [type=email], [type=file], [type=hidden], [type=month], [type=number], [type=range], [type=tel], [type=time], [type=url], [type=week]):user-valid) input,
@@ -740,6 +742,7 @@ input[type=radio]:checked) input:is([type=date],
740
742
  display: none;
741
743
  }
742
744
  .db-input:has(input[data-custom-validity=valid]), .db-input[data-custom-validity=valid] {
745
+ --db-icon-color: var(--db-successful-on-bg-basic-emphasis-100-default);
743
746
  /* stylelint-disable-next-line at-rule-empty-line-before */
744
747
  }
745
748
  .db-input:has(input[data-custom-validity=valid]) input,
@@ -767,6 +770,7 @@ input[type=radio]:checked) input:is([type=date],
767
770
  display: none;
768
771
  }
769
772
  .db-input:has(input:not([data-custom-validity]):is(:required, [minlength], [maxlength], [pattern], [type=color], [type=date], [type=datetime-local], [type=email], [type=file], [type=hidden], [type=month], [type=number], [type=range], [type=tel], [type=time], [type=url], [type=week]):user-invalid) {
773
+ --db-icon-color: var(--db-critical-on-bg-basic-emphasis-100-default);
770
774
  /* stylelint-disable-next-line at-rule-empty-line-before */
771
775
  }
772
776
  .db-input:has(input:not([data-custom-validity]):is(:required, [minlength], [maxlength], [pattern], [type=color], [type=date], [type=datetime-local], [type=email], [type=file], [type=hidden], [type=month], [type=number], [type=range], [type=tel], [type=time], [type=url], [type=week]):user-invalid) input,
@@ -786,6 +790,7 @@ input[type=radio]:checked) input:is([type=date],
786
790
  display: none;
787
791
  }
788
792
  .db-input:has(input[data-custom-validity=invalid]), .db-input[data-custom-validity=invalid] {
793
+ --db-icon-color: var(--db-critical-on-bg-basic-emphasis-100-default);
789
794
  /* stylelint-disable-next-line at-rule-empty-line-before */
790
795
  }
791
796
  .db-input:has(input[data-custom-validity=invalid]) input,
@@ -844,14 +849,29 @@ input[type=radio]:checked) input:is([type=date],
844
849
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
845
850
  /* see https://developer.mozilla.org/en-US/docs/Web/CSS/field-sizing */
846
851
  }
847
- .db-input input:hover:not(:disabled, [aria-disabled=true]) {
852
+ .db-input input:hover:not(:disabled,
853
+ [aria-disabled=true],
854
+ [tabindex="-1"],
855
+ :has(:disabled)) {
848
856
  cursor: var(--db-overwrite-cursor, pointer);
849
857
  background-color: var(--db-adaptive-bg-basic-transparent-semi-hovered);
850
858
  }
851
- .db-input input:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-input input:hover:not(:disabled, [aria-disabled=true]):is(input) {
859
+ .db-input input:hover:not(:disabled,
860
+ [aria-disabled=true],
861
+ [tabindex="-1"],
862
+ :has(:disabled)):is(textarea), .db-input input:hover:not(:disabled,
863
+ [aria-disabled=true],
864
+ [tabindex="-1"],
865
+ :has(:disabled)):is(input) {
852
866
  cursor: initial;
853
867
  }
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)) {
868
+ .db-input input:hover:not(:disabled,
869
+ [aria-disabled=true],
870
+ [tabindex="-1"],
871
+ :has(:disabled)):is(input[type=checkbox]), .db-input input:hover:not(:disabled,
872
+ [aria-disabled=true],
873
+ [tabindex="-1"],
874
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
855
875
  cursor: pointer;
856
876
  }
857
877
  .db-input input[data-field-sizing=content] {
@@ -948,6 +968,14 @@ input:focus-visible)::after {
948
968
  opacity: 1;
949
969
  }
950
970
  @supports selector(::-webkit-calendar-picker-indicator) {
971
+ .db-input:has(input[type=week]) {
972
+ --db-form-component-padding-inline-end: calc(var(--db-icon-font-size) + var(--db-spacing-fixed-sm) + var(--db-spacing-fixed-xs));
973
+ }
974
+ .db-input:has(input[type=date]), .db-input:has(input[type=datetime-local]) {
975
+ --db-form-component-padding-inline-end: calc(
976
+ 1lh + var(--db-spacing-fixed-xs)
977
+ );
978
+ }
951
979
  .db-input:has(input[type=date]):not([data-show-icon-trailing=false])::after, .db-input:has(input[type=week]):not([data-show-icon-trailing=false])::after, .db-input:has(input[type=datetime-local]):not([data-show-icon-trailing=false])::after, .db-input:has(input[type=month]):not([data-show-icon-trailing=false])::after {
952
980
  --db-icon-trailing: "calendar";
953
981
  margin-inline-start: var(--db-icon-margin-start, var(--db-spacing-fixed-xs));
@@ -70,6 +70,17 @@ $icon-padding: calc(
70
70
  // This @supports should exclude Mozilla Firefox
71
71
  // TODO: Reevaluate after Mozilla is supporting week and month input types
72
72
  @supports selector(::-webkit-calendar-picker-indicator) {
73
+ &:has(input[type="week"]) {
74
+ --db-form-component-padding-inline-end: #{$icon-padding};
75
+ }
76
+
77
+ &:has(input[type="date"]),
78
+ &:has(input[type="datetime-local"]) {
79
+ --db-form-component-padding-inline-end: calc(
80
+ 1lh + #{variables.$db-spacing-fixed-xs}
81
+ );
82
+ }
83
+
73
84
  &:has(input[type="date"]),
74
85
  &:has(input[type="week"]),
75
86
  &:has(input[type="datetime-local"]),
@@ -113,10 +113,12 @@
113
113
 
114
114
  @keyframes popover-animation {
115
115
  0% {
116
+ pointer-events: none;
116
117
  opacity: 0;
117
118
  transform: translate(var(--db-popover-center-x, var(--db-popover-translate-x, 0%)), var(--db-popover-center-y, var(--db-popover-translate-y, 0%)));
118
119
  }
119
120
  100% {
121
+ pointer-events: auto;
120
122
  opacity: 1;
121
123
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
122
124
  }
@@ -145,6 +147,7 @@
145
147
  text-transform: none;
146
148
  overflow: clip;
147
149
  vertical-align: var(--db-icon-vertical-align, middle);
150
+ /* stylelint-disable-next-line db-ux/use-sizing */
148
151
  block-size: var(--db-icon-font-size, 1.5rem);
149
152
  aspect-ratio: 1;
150
153
  flex-shrink: 0;
@@ -177,24 +180,54 @@
177
180
  color: var(--db-adaptive-on-bg-basic-emphasis-100-default);
178
181
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
179
182
  }
180
- .db-link:hover:not(:disabled, [aria-disabled=true]) {
183
+ .db-link:hover:not(:disabled,
184
+ [aria-disabled=true],
185
+ [tabindex="-1"],
186
+ :has(:disabled)) {
181
187
  cursor: var(--db-overwrite-cursor, pointer);
182
188
  color: color-mix(in srgb, transparent 25%, var(--db-adaptive-on-bg-basic-emphasis-100-default));
183
189
  }
184
- .db-link:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-link:hover:not(:disabled, [aria-disabled=true]):is(input) {
190
+ .db-link:hover:not(:disabled,
191
+ [aria-disabled=true],
192
+ [tabindex="-1"],
193
+ :has(:disabled)):is(textarea), .db-link:hover:not(:disabled,
194
+ [aria-disabled=true],
195
+ [tabindex="-1"],
196
+ :has(:disabled)):is(input) {
185
197
  cursor: initial;
186
198
  }
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)) {
199
+ .db-link:hover:not(:disabled,
200
+ [aria-disabled=true],
201
+ [tabindex="-1"],
202
+ :has(:disabled)):is(input[type=checkbox]), .db-link:hover:not(:disabled,
203
+ [aria-disabled=true],
204
+ [tabindex="-1"],
205
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
188
206
  cursor: pointer;
189
207
  }
190
- .db-link:active:not(:disabled, [aria-disabled=true]) {
208
+ .db-link:active:not(:disabled,
209
+ [aria-disabled=true],
210
+ [tabindex="-1"],
211
+ :has(:disabled)) {
191
212
  cursor: var(--db-overwrite-cursor, pointer);
192
213
  color: color-mix(in srgb, transparent 50%, var(--db-adaptive-on-bg-basic-emphasis-100-default));
193
214
  }
194
- .db-link:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-link:active:not(:disabled, [aria-disabled=true]):is(input) {
215
+ .db-link:active:not(:disabled,
216
+ [aria-disabled=true],
217
+ [tabindex="-1"],
218
+ :has(:disabled)):is(textarea), .db-link:active:not(:disabled,
219
+ [aria-disabled=true],
220
+ [tabindex="-1"],
221
+ :has(:disabled)):is(input) {
195
222
  cursor: initial;
196
223
  }
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)) {
224
+ .db-link:active:not(:disabled,
225
+ [aria-disabled=true],
226
+ [tabindex="-1"],
227
+ :has(:disabled)):is(input[type=checkbox]), .db-link:active:not(:disabled,
228
+ [aria-disabled=true],
229
+ [tabindex="-1"],
230
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
198
231
  cursor: pointer;
199
232
  }
200
233
 
@@ -246,24 +279,54 @@
246
279
  color: var(--db-brand-on-bg-basic-emphasis-80-default);
247
280
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
248
281
  }
249
- .db-link[data-variant=brand]:hover:not(:disabled, [aria-disabled=true]) {
282
+ .db-link[data-variant=brand]:hover:not(:disabled,
283
+ [aria-disabled=true],
284
+ [tabindex="-1"],
285
+ :has(:disabled)) {
250
286
  cursor: var(--db-overwrite-cursor, pointer);
251
287
  color: var(--db-brand-on-bg-basic-emphasis-80-hovered);
252
288
  }
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) {
289
+ .db-link[data-variant=brand]:hover:not(:disabled,
290
+ [aria-disabled=true],
291
+ [tabindex="-1"],
292
+ :has(:disabled)):is(textarea), .db-link[data-variant=brand]:hover:not(:disabled,
293
+ [aria-disabled=true],
294
+ [tabindex="-1"],
295
+ :has(:disabled)):is(input) {
254
296
  cursor: initial;
255
297
  }
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)) {
298
+ .db-link[data-variant=brand]:hover:not(:disabled,
299
+ [aria-disabled=true],
300
+ [tabindex="-1"],
301
+ :has(:disabled)):is(input[type=checkbox]), .db-link[data-variant=brand]:hover:not(:disabled,
302
+ [aria-disabled=true],
303
+ [tabindex="-1"],
304
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
257
305
  cursor: pointer;
258
306
  }
259
- .db-link[data-variant=brand]:active:not(:disabled, [aria-disabled=true]) {
307
+ .db-link[data-variant=brand]:active:not(:disabled,
308
+ [aria-disabled=true],
309
+ [tabindex="-1"],
310
+ :has(:disabled)) {
260
311
  cursor: var(--db-overwrite-cursor, pointer);
261
312
  color: var(--db-brand-on-bg-basic-emphasis-80-pressed);
262
313
  }
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) {
314
+ .db-link[data-variant=brand]:active:not(:disabled,
315
+ [aria-disabled=true],
316
+ [tabindex="-1"],
317
+ :has(:disabled)):is(textarea), .db-link[data-variant=brand]:active:not(:disabled,
318
+ [aria-disabled=true],
319
+ [tabindex="-1"],
320
+ :has(:disabled)):is(input) {
264
321
  cursor: initial;
265
322
  }
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)) {
323
+ .db-link[data-variant=brand]:active:not(:disabled,
324
+ [aria-disabled=true],
325
+ [tabindex="-1"],
326
+ :has(:disabled)):is(input[type=checkbox]), .db-link[data-variant=brand]:active:not(:disabled,
327
+ [aria-disabled=true],
328
+ [tabindex="-1"],
329
+ :has(:disabled)):is(input[type=radio]:not(:checked)) {
267
330
  cursor: pointer;
268
331
  }
269
332
  .db-link[data-size=small] {