@db-ux/core-components 4.14.0 → 5.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (62) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/build/components/accordion-item/accordion-item.css +0 -1
  3. package/build/components/brand/brand.css +0 -1
  4. package/build/components/brand/brand.scss +0 -1
  5. package/build/components/button/button.css +4 -9
  6. package/build/components/checkbox/checkbox.css +0 -3
  7. package/build/components/checkbox/checkbox.scss +0 -2
  8. package/build/components/custom-button/custom-button.css +8 -13
  9. package/build/components/custom-button/custom-button.scss +2 -3
  10. package/build/components/custom-select/custom-select.css +0 -1
  11. package/build/components/custom-select-list-item/custom-select-list-item.css +6 -2
  12. package/build/components/custom-select-list-item/custom-select-list-item.scss +8 -3
  13. package/build/components/drawer/drawer.css +94 -166
  14. package/build/components/drawer/drawer.scss +160 -176
  15. package/build/components/drawer-footer/drawer-footer.css +34 -0
  16. package/build/components/drawer-footer/drawer-footer.scss +11 -0
  17. package/build/components/drawer-header/drawer-header.css +38 -0
  18. package/build/components/drawer-header/drawer-header.scss +17 -0
  19. package/build/components/header/header.css +50 -40
  20. package/build/components/header/header.scss +35 -21
  21. package/build/components/icon/icon.css +0 -6
  22. package/build/components/infotext/infotext.css +0 -4
  23. package/build/components/infotext/infotext.scss +0 -2
  24. package/build/components/input/input.css +0 -5
  25. package/build/components/link/link.css +5 -5
  26. package/build/components/link/link.scss +8 -3
  27. package/build/components/navigation/navigation.css +1 -2
  28. package/build/components/navigation/navigation.scss +2 -2
  29. package/build/components/navigation-item/navigation-item.css +15 -27
  30. package/build/components/navigation-item/navigation-item.scss +17 -21
  31. package/build/components/notification/notification.css +0 -1
  32. package/build/components/notification/notification.scss +0 -2
  33. package/build/components/select/select.css +6 -1
  34. package/build/components/select/select.scss +7 -0
  35. package/build/components/switch/switch.css +0 -3
  36. package/build/components/switch/switch.scss +0 -1
  37. package/build/components/tab-item/tab-item.css +120 -98
  38. package/build/components/tab-item/tab-item.scss +89 -90
  39. package/build/components/tab-list/tab-list.css +38 -36
  40. package/build/components/tab-list/tab-list.scss +11 -9
  41. package/build/components/tab-panel/tab-panel.css +30 -4
  42. package/build/components/tab-panel/tab-panel.scss +60 -2
  43. package/build/components/table/table.css +0 -4
  44. package/build/components/table-row/table-row.css +0 -4
  45. package/build/components/table-row/table-row.scss +0 -5
  46. package/build/components/tabs/tabs.css +152 -263
  47. package/build/components/tabs/tabs.scss +243 -198
  48. package/build/components/tag/tag.css +2 -21
  49. package/build/components/tag/tag.scss +5 -7
  50. package/build/styles/absolute.css +11 -11
  51. package/build/styles/bundle.css +11 -11
  52. package/build/styles/index.css +10 -10
  53. package/build/styles/index.scss +3 -1
  54. package/build/styles/internal/_button-components.scss +7 -4
  55. package/build/styles/internal/_component.scss +4 -0
  56. package/build/styles/internal/_custom-elements.scss +3 -2
  57. package/build/styles/internal/_icon-passing.scss +9 -10
  58. package/build/styles/relative.css +11 -11
  59. package/build/styles/rollup.css +11 -11
  60. package/build/styles/wc-workarounds.css +1 -1
  61. package/build/styles/webpack.css +11 -11
  62. package/package.json +6 -6
@@ -6,176 +6,181 @@
6
6
  @use "../../styles/internal/component";
7
7
  @use "../../styles/dialog-init";
8
8
 
9
- %direction-right {
10
- transform: translateX(110%);
11
- inset-inline: auto 0;
9
+ %container-size-horizontal {
10
+ inline-size: calc(
11
+ var(--db-drawer-inline-size) - var(
12
+ --db-drawer-container-backdrop-spacing,
13
+ 0px
14
+ )
15
+ );
16
+ min-inline-size: var(--db-drawer-min-width, auto);
17
+ max-inline-size: var(
18
+ --db-drawer-max-width,
19
+ var(--db-drawer-max-width-horizontal)
20
+ );
21
+
22
+ &:not([data-container-size]),
23
+ &[data-container-size="small"] {
24
+ --db-drawer-max-width-horizontal: #{variables.$db-container-xs};
25
+ }
12
26
 
13
- &[data-rounded="true"] {
14
- border-start-start-radius: variables.$db-border-radius-sm;
15
- border-end-start-radius: variables.$db-border-radius-sm;
27
+ &[data-container-size="medium"] {
28
+ --db-drawer-max-width-horizontal: #{variables.$db-container-lg};
29
+ }
30
+
31
+ &[data-container-size="large"] {
32
+ --db-drawer-max-width-horizontal: #{variables.$db-container-3xl};
16
33
  }
17
34
  }
18
35
 
19
- %direction-left {
20
- transform: translateX(-110%);
21
- inset-inline: 0 auto;
36
+ %container-size-vertical {
37
+ block-size: calc(
38
+ var(--db-drawer-block-size) - var(
39
+ --db-drawer-container-backdrop-spacing,
40
+ 0px
41
+ )
42
+ );
43
+ min-block-size: var(--db-drawer-min-height, auto);
44
+ max-block-size: var(
45
+ --db-drawer-max-height,
46
+ var(--db-drawer-max-height-vertical)
47
+ );
48
+
49
+ &[data-container-size="small"] {
50
+ --db-drawer-max-height-vertical: calc(var(--db-drawer-block-size) / 3);
51
+ }
22
52
 
23
- &[data-rounded="true"] {
24
- border-start-end-radius: variables.$db-border-radius-sm;
25
- border-end-end-radius: variables.$db-border-radius-sm;
53
+ &[data-container-size="medium"] {
54
+ --db-drawer-max-height-vertical: calc(var(--db-drawer-block-size) / 2);
26
55
  }
27
- }
28
56
 
29
- %full-horizontal {
30
- &:not([data-width="full"]) {
31
- /// Sets the maximum height of the drawer
32
- /// @propertyname max-block-size
33
- /// @cssprop --db-drawer-max-height
34
- /// @default calc(100% - #{variables.$db-spacing-fixed-xl})
35
- /* stylelint-disable-next-line db-ux/use-sizing */
36
- max-block-size: var(
37
- --db-drawer-max-height,
38
- calc(100% - #{variables.$db-spacing-fixed-xl})
57
+ &:not([data-container-size]),
58
+ &[data-container-size="large"] {
59
+ --db-drawer-max-height-vertical: calc(
60
+ (var(--db-drawer-block-size) / 3) * 2
39
61
  );
40
- /* stylelint-disable-next-line db-ux/use-sizing */
41
- min-block-size: var(--db-drawer-min-height, auto);
42
- max-inline-size: none;
43
62
  }
44
63
  }
45
64
 
46
- %direction-up {
47
- @extend %full-horizontal;
65
+ %direction-from-left-to-right {
66
+ @extend %container-size-horizontal;
48
67
 
49
- transform: translateY(110%);
50
- inset: auto 0 0;
68
+ &:not([data-transition="open"]) {
69
+ transform: translateX(-110%);
70
+ }
71
+
72
+ inset-inline: 0 auto;
51
73
 
52
74
  &[data-rounded="true"] {
53
75
  border-start-end-radius: variables.$db-border-radius-sm;
54
- border-start-start-radius: variables.$db-border-radius-sm;
76
+ border-end-end-radius: variables.$db-border-radius-sm;
55
77
  }
56
78
  }
57
79
 
58
- %direction-down {
59
- @extend %full-horizontal;
80
+ %direction-from-right-to-left {
81
+ @extend %container-size-horizontal;
60
82
 
61
- transform: translateY(-110%);
62
- inset: 0 0 auto;
83
+ &:not([data-transition="open"]) {
84
+ transform: translateX(110%);
85
+ }
86
+
87
+ inset-inline: auto 0;
63
88
 
64
89
  &[data-rounded="true"] {
65
- border-end-end-radius: variables.$db-border-radius-sm;
90
+ border-start-start-radius: variables.$db-border-radius-sm;
66
91
  border-end-start-radius: variables.$db-border-radius-sm;
67
92
  }
68
93
  }
69
94
 
70
- $spacings: (
71
- "small": (
72
- "block": variables.$db-spacing-fixed-xs,
73
- "inline": variables.$db-spacing-fixed-md
74
- ),
75
- "medium": (
76
- "block": variables.$db-spacing-fixed-sm,
77
- "inline": variables.$db-spacing-fixed-lg
78
- ),
79
- "large": (
80
- "block": variables.$db-spacing-fixed-md,
81
- "inline": variables.$db-spacing-fixed-xl
82
- ),
83
- "none": (
84
- "block": 0,
85
- "inline": 0
86
- )
87
- );
88
-
89
- @mixin get-spacing($spacing) {
90
- /* stylelint-disable-next-line block-no-redundant-nested-style-rules */
91
- & {
92
- padding-block: map.get($spacing, "block");
95
+ %direction-from-bottom-to-top {
96
+ @extend %container-size-vertical;
97
+
98
+ &:not([data-transition="open"]) {
99
+ transform: translateY(110%);
93
100
  }
94
101
 
95
- .db-drawer-header {
96
- // We need this variable to overwrite it inside the header
97
- /// Controls the bottom padding inside the drawer header
98
- /// @propertyname padding-block-end
99
- /// @cssprop --db-drawer-header-padding-block-end
100
- /// @default #{map.get($spacing, "block")}
101
- /* stylelint-disable-next-line db-ux/use-spacings */
102
- padding-block-end: var(
103
- --db-drawer-header-padding-block-end,
104
- #{map.get($spacing, "block")}
105
- );
106
- padding-inline: map.get($spacing, "inline");
102
+ inset: auto 0 0;
103
+
104
+ &[data-rounded="true"] {
105
+ border-start-end-radius: variables.$db-border-radius-sm;
106
+ border-start-start-radius: variables.$db-border-radius-sm;
107
107
  }
108
+ }
108
109
 
109
- .db-drawer-content {
110
- // We need this variable to overwrite it inside the header
111
- /// Controls left/right padding inside the drawer content area
112
- /// @propertyname padding-inline
113
- /// @cssprop --db-drawer-content-padding-inline
114
- /// @default #{map.get($spacing, "inline")}
115
- /* stylelint-disable-next-line db-ux/use-spacings */
116
- padding-inline: var(
117
- --db-drawer-content-padding-inline,
118
- #{map.get($spacing, "inline")}
119
- );
110
+ %direction-from-top-to-bottom {
111
+ @extend %container-size-vertical;
120
112
 
121
- // TODO: Evaluate whether we need overflow: hidden and that for only specifically set y here.
122
- overflow-y: auto;
123
- overflow-block: auto;
113
+ &:not([data-transition="open"]) {
114
+ transform: translateY(-110%);
115
+ }
116
+
117
+ inset: 0 0 auto;
118
+
119
+ &[data-rounded="true"] {
120
+ border-end-end-radius: variables.$db-border-radius-sm;
121
+ border-end-start-radius: variables.$db-border-radius-sm;
124
122
  }
125
123
  }
126
124
 
127
- %spacing-drawer {
128
- @each $name, $spacing in $spacings {
129
- @if $name == "medium" {
130
- @include get-spacing($spacing);
125
+ %drawer-safe-area {
126
+ &:not(:has(.db-drawer-footer)) {
127
+ > .db-drawer-content {
128
+ margin-block-end: env(safe-area-inset-bottom);
131
129
  }
130
+ }
132
131
 
133
- &[data-spacing="#{$name}"] {
134
- @include get-spacing($spacing);
132
+ &:has(.db-drawer-footer) {
133
+ .db-drawer-footer {
134
+ padding-block-end: calc(
135
+ #{variables.$db-spacing-fixed-xs} + env(safe-area-inset-bottom)
136
+ );
135
137
  }
136
138
  }
137
139
  }
138
140
 
139
141
  .db-drawer {
140
142
  .db-drawer-container {
141
- @extend %spacing-drawer;
143
+ @extend %drawer-safe-area;
142
144
 
143
- display: flex;
144
- flex-direction: column;
145
+ // Close delay: 0s by default (reduced motion), set to transition duration
146
+ // when motion is allowed. Read by JS to schedule dialog.close().
147
+ --db-drawer-close-delay: 0;
148
+
149
+ @media (prefers-reduced-motion: no-preference) {
150
+ --db-drawer-close-delay: #{variables.$db-transition-duration-extra-slow};
151
+ }
152
+
153
+ display: grid;
154
+ grid-template-rows:
155
+ [header] auto
156
+ [main] 1fr
157
+ [footer] auto;
145
158
  background-color: colors.$db-adaptive-bg-basic-level-1-default;
146
- block-size: 100%;
147
- inline-size: 100%;
159
+ inline-size: var(--db-drawer-inline-size);
160
+ block-size: var(--db-drawer-block-size);
148
161
  position: fixed;
149
162
  box-shadow: variables.$db-elevation-md;
150
163
 
151
- &:not([data-width="full"]) {
152
- /// Sets the maximum width of the drawer
153
- /// and some default values for the drawer
154
- /// @propertyname max-inline-size
155
- /// @cssprop --db-drawer-max-width
156
- /// @default calc(100% - #{variables.$db-spacing-fixed-xl})
157
- ///
158
- /// @example css - Wide drawer
159
- /// .db-drawer-wide {
160
- /// --db-drawer-max-width: 800px;
161
- /// }
162
- /// <div class="db-drawer db-drawer-wide">
163
- /// <!-- wide drawer -->
164
- /// </div>
165
- /* stylelint-disable-next-line db-ux/use-sizing */
166
- max-inline-size: var(
167
- --db-drawer-max-width,
168
- calc(100% - #{variables.$db-spacing-fixed-xl})
164
+ > .db-drawer-content {
165
+ overflow-y: auto;
166
+ overscroll-behavior: contain;
167
+ padding: var(
168
+ --db-drawer-content-padding,
169
+ variables.$db-spacing-fixed-xs
170
+ component.$drawer-content-padding-inline
169
171
  );
170
- /* stylelint-disable-next-line db-ux/use-sizing */
171
- min-inline-size: var(--db-drawer-min-width, auto);
172
+ }
173
+
174
+ &[data-show-spacing="true"] {
175
+ // We use the size of a button for this spacing to make sure backdrop is clickable
176
+ --db-drawer-container-backdrop-spacing: #{variables.$db-sizing-md};
172
177
 
173
178
  &:not([data-direction]),
174
- &[data-direction="right"] {
179
+ &[data-direction="to-left"] {
175
180
  border-inline-start: component.$component-border;
176
181
  }
177
182
 
178
- &[data-direction="left"] {
183
+ &[data-direction="to-right"] {
179
184
  border-inline-end: component.$component-border;
180
185
  }
181
186
 
@@ -198,104 +203,83 @@ $spacings: (
198
203
  #{variables.$db-transition-timing-emotional};
199
204
  }
200
205
 
201
- &:not([data-direction]),
202
- &[data-direction="right"] {
203
- @extend %direction-right;
206
+ &[data-direction="to-right"] {
207
+ @extend %direction-from-left-to-right;
204
208
  }
205
209
 
206
- &[data-direction="left"] {
207
- @extend %direction-left;
210
+ &:not([data-direction]),
211
+ &[data-direction="to-left"] {
212
+ @extend %direction-from-right-to-left;
208
213
  }
209
214
 
210
215
  &[data-direction="up"] {
211
- @extend %direction-up;
216
+ @extend %direction-from-bottom-to-top;
212
217
  }
213
218
 
214
219
  &[data-direction="down"] {
215
- @extend %direction-down;
220
+ @extend %direction-from-top-to-bottom;
216
221
  }
222
+ }
217
223
 
218
- .db-drawer-header {
219
- display: none;
220
-
221
- @include helpers.divider("bottom");
222
-
223
- .db-drawer-header-text {
224
- margin-block: auto;
225
- font-weight: 700;
226
- }
227
-
228
- .button-close-drawer {
229
- margin-inline-start: auto;
224
+ &:not([data-position="absolute"]) {
225
+ --db-drawer-inline-size: 100lvw;
226
+ --db-drawer-block-size: 100lvh;
230
227
 
231
- // angular-workaround
232
- button {
233
- margin-inline-start: auto;
228
+ &[open] {
229
+ .db-drawer-container {
230
+ &[data-transition="open"] {
231
+ transform: none;
234
232
  }
235
- }
236
233
 
237
- &:has(.button-close-drawer),
238
- &:has(:not(.db-drawer-header-text:empty)) {
239
- display: flex;
234
+ &[data-transition="close"] {
235
+ @media (prefers-reduced-motion: no-preference) {
236
+ transition: transform var(--db-drawer-close-delay)
237
+ #{variables.$db-transition-timing-emotional};
238
+ }
239
+ }
240
240
  }
241
241
  }
242
242
  }
243
243
 
244
244
  &[data-position="absolute"] {
245
+ --db-drawer-inline-size: 100%;
246
+ --db-drawer-block-size: 100%;
247
+
245
248
  position: absolute;
246
249
  z-index: 3;
247
250
  inset: 0;
248
- block-size: 100%;
249
- inline-size: 100%;
250
251
  background-color: transparent;
252
+ inline-size: var(--db-drawer-inline-size);
253
+ block-size: var(--db-drawer-block-size);
251
254
 
252
255
  &[open] {
253
256
  display: flex;
257
+
258
+ .db-drawer-container[data-transition="close"] {
259
+ position: relative;
260
+ }
254
261
  }
255
262
 
256
263
  &:not([data-direction]),
257
- &[data-direction="right"],
258
- &[data-direction="left"] {
264
+ &[data-direction="to-right"],
265
+ &[data-direction="to-left"] {
259
266
  flex-direction: column;
260
267
  }
261
268
 
262
- &[data-direction="left"],
269
+ &[data-direction="to-right"],
263
270
  &[data-direction="down"] {
264
- align-items: start;
271
+ align-items: flex-start;
265
272
  }
266
273
 
267
274
  &:not([data-direction]),
268
- &[data-direction="right"],
275
+ &[data-direction="to-left"],
269
276
  &[data-direction="up"] {
270
- align-items: end;
271
- }
272
-
273
- .db-drawer-container {
274
- position: relative;
277
+ align-items: flex-end;
275
278
  }
276
- }
277
279
 
278
- &[open] {
279
280
  .db-drawer-container {
280
281
  &[data-transition="open"] {
281
- &:not([data-direction]),
282
- &[data-direction="right"],
283
- &[data-direction="left"] {
284
- transform: none;
285
- }
286
-
287
- &[data-direction="up"],
288
- &[data-direction="down"] {
289
- transform: none;
290
- }
291
- }
292
-
293
- &[data-transition="close"] {
294
- @media (prefers-reduced-motion: no-preference) {
295
- transition: transform
296
- #{variables.$db-transition-duration-slow}
297
- #{variables.$db-transition-timing-emotional};
298
- }
282
+ position: relative;
299
283
  }
300
284
  }
301
285
  }
@@ -0,0 +1,34 @@
1
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
2
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
3
+ /* Variants for adaptive components like input, select, notification, ... */
4
+ .db-drawer-footer {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: var(--db-spacing-fixed-sm);
8
+ padding: var(--db-spacing-fixed-xs) var(--db-spacing-fixed-sm);
9
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
10
+ position: var(--db-tooltip-parent-position, relative);
11
+ }
12
+ .db-drawer-footer[data-emphasis=strong] {
13
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
14
+ }
15
+ .db-drawer-footer::before {
16
+ content: "";
17
+ background-color: var(--db-divider-bg-color);
18
+ position: absolute;
19
+ /* jscpd:ignore-start */
20
+ block-size: var(--db-border-width-3xs);
21
+ inset-block-start: 0;
22
+ inset-inline: 0;
23
+ /* stylelint-disable-next-line db-ux/use-border-color */
24
+ }
25
+ @media (forced-colors: active) {
26
+ .db-drawer-footer::before {
27
+ /* stylelint-disable-next-line db-ux/use-border-color */
28
+ border-block-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
29
+ }
30
+ }
31
+ .db-drawer-footer::before {
32
+ /* stylelint-disable-next-line at-rule-empty-line-before */
33
+ /* jscpd:ignore-end */
34
+ }
@@ -0,0 +1,11 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+ @use "@db-ux/core-foundations/build/styles/helpers";
3
+
4
+ .db-drawer-footer {
5
+ display: flex;
6
+ flex-direction: column;
7
+ gap: variables.$db-spacing-fixed-sm;
8
+ padding: variables.$db-spacing-fixed-xs variables.$db-spacing-fixed-sm;
9
+
10
+ @include helpers.divider("top");
11
+ }
@@ -0,0 +1,38 @@
1
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
2
+ /* stylelint-disable-next-line scss/dollar-variable-colon-space-after */
3
+ /* Variants for adaptive components like input, select, notification, ... */
4
+ .db-drawer-header {
5
+ display: flex;
6
+ gap: var(--db-spacing-fixed-sm);
7
+ align-items: center;
8
+ padding: calc(var(--db-spacing-fixed-xs) + env(safe-area-inset-top)) var(--db-spacing-fixed-sm) var(--db-spacing-fixed-xs);
9
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
10
+ position: var(--db-tooltip-parent-position, relative);
11
+ }
12
+ .db-drawer-header[data-emphasis=strong] {
13
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
14
+ }
15
+ .db-drawer-header::before {
16
+ content: "";
17
+ background-color: var(--db-divider-bg-color);
18
+ position: absolute;
19
+ /* jscpd:ignore-start */
20
+ block-size: var(--db-border-width-3xs);
21
+ inset-block-end: 0;
22
+ inset-inline: 0;
23
+ /* stylelint-disable-next-line db-ux/use-border-color */
24
+ }
25
+ @media (forced-colors: active) {
26
+ .db-drawer-header::before {
27
+ /* stylelint-disable-next-line db-ux/use-border-color */
28
+ border-block-end: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
29
+ }
30
+ }
31
+ .db-drawer-header::before {
32
+ /* stylelint-disable-next-line at-rule-empty-line-before */
33
+ /* jscpd:ignore-end */
34
+ }
35
+ .db-drawer-header .db-drawer-header-container {
36
+ font-weight: bold;
37
+ margin-inline-end: auto;
38
+ }
@@ -0,0 +1,17 @@
1
+ @use "@db-ux/core-foundations/build/styles/variables";
2
+ @use "@db-ux/core-foundations/build/styles/helpers";
3
+
4
+ .db-drawer-header {
5
+ display: flex;
6
+ gap: variables.$db-spacing-fixed-sm;
7
+ align-items: center;
8
+ padding: calc(#{variables.$db-spacing-fixed-xs} + env(safe-area-inset-top))
9
+ variables.$db-spacing-fixed-sm variables.$db-spacing-fixed-xs;
10
+
11
+ @include helpers.divider("bottom");
12
+
13
+ .db-drawer-header-container {
14
+ font-weight: bold;
15
+ margin-inline-end: auto;
16
+ }
17
+ }
@@ -564,43 +564,15 @@
564
564
  flex-shrink: 0;
565
565
  }
566
566
 
567
- .db-header-secondary-action {
568
- flex: 0 1 auto;
569
- flex-grow: 0;
570
- flex-shrink: 0;
571
- padding-block-start: var(--db-spacing-fixed-xs);
572
- --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
573
- position: var(--db-tooltip-parent-position, relative);
574
- }
575
- .db-header-secondary-action[data-emphasis=strong] {
576
- --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
577
- }
578
- .db-header-secondary-action::before {
579
- content: "";
580
- background-color: var(--db-divider-bg-color);
581
- position: absolute;
582
- /* jscpd:ignore-start */
583
- block-size: var(--db-border-width-3xs);
584
- inset-block-start: 0;
585
- inset-inline: 0;
586
- /* stylelint-disable-next-line db-ux/use-border-color */
587
- }
588
- @media (forced-colors: active) {
589
- .db-header-secondary-action::before {
590
- /* stylelint-disable-next-line db-ux/use-border-color */
591
- border-block-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
592
- }
593
- }
594
- .db-header-secondary-action::before {
595
- /* stylelint-disable-next-line at-rule-empty-line-before */
596
- /* jscpd:ignore-end */
597
- }
598
567
  .db-header-secondary-action {
599
568
  /* stylelint-disable-next-line media-query-no-invalid */
600
569
  }
601
570
  @media (min-width: 64em) {
602
- .db-header-secondary-action:not([data-force-mobile])::before, .db-header-secondary-action[data-force-mobile=false]::before {
603
- display: none;
571
+ .db-header-secondary-action:not([data-force-mobile]), .db-header-secondary-action[data-force-mobile=false] {
572
+ flex: 0 1 auto;
573
+ flex-grow: 0;
574
+ flex-shrink: 0;
575
+ padding-block-start: var(--db-spacing-fixed-xs);
604
576
  }
605
577
  }
606
578
  .db-header-secondary-action {
@@ -619,7 +591,6 @@
619
591
  }
620
592
 
621
593
  .db-header-navigation {
622
- padding-block: var(--db-spacing-fixed-md);
623
594
  /* stylelint-disable-next-line media-query-no-invalid */
624
595
  }
625
596
  @media (min-width: 64em) {
@@ -638,7 +609,6 @@
638
609
  .db-header-navigation,
639
610
  .db-header-secondary-action {
640
611
  gap: var(--db-spacing-fixed-sm);
641
- padding-inline: var(--db-spacing-fixed-md);
642
612
  /* stylelint-disable-next-line media-query-no-invalid */
643
613
  }
644
614
  @media (min-width: 64em) {
@@ -655,11 +625,7 @@
655
625
  }
656
626
 
657
627
  .db-header-drawer {
658
- --db-drawer-content-padding-inline: 0;
659
- --db-drawer-header-padding-block-end: calc(
660
- 1px + var(--db-spacing-fixed-xs)
661
- );
662
- padding-block-end: 0;
628
+ --db-drawer-content-padding: 0;
663
629
  }
664
630
  .db-header-drawer .db-drawer-content:not([hidden]) {
665
631
  display: flex;
@@ -669,6 +635,50 @@
669
635
  block-size: 100%;
670
636
  overflow: hidden;
671
637
  }
638
+ .db-header-drawer .db-drawer-content .db-header-navigation {
639
+ display: flex;
640
+ flex-direction: column;
641
+ block-size: 100%;
642
+ overflow-x: hidden;
643
+ padding: var(--db-spacing-fixed-xs) max(var(--db-spacing-fixed-sm), max(env(safe-area-inset-left), env(safe-area-inset-right)));
644
+ }
645
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation {
646
+ /* stylelint-disable-next-line db-ux/use-spacings */
647
+ padding: var(--db-spacing-fixed-xs) max(var(--db-spacing-fixed-sm), max(env(safe-area-inset-left), env(safe-area-inset-right)));
648
+ margin-block-start: auto;
649
+ flex-flow: column nowrap;
650
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
651
+ position: var(--db-tooltip-parent-position, relative);
652
+ }
653
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation[data-emphasis=strong] {
654
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
655
+ }
656
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
657
+ content: "";
658
+ background-color: var(--db-divider-bg-color);
659
+ position: absolute;
660
+ /* jscpd:ignore-start */
661
+ block-size: var(--db-border-width-3xs);
662
+ inset-block-start: 0;
663
+ inset-inline: 0;
664
+ /* stylelint-disable-next-line db-ux/use-border-color */
665
+ }
666
+ @media (forced-colors: active) {
667
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
668
+ /* stylelint-disable-next-line db-ux/use-border-color */
669
+ border-block-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
670
+ }
671
+ }
672
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
673
+ /* stylelint-disable-next-line at-rule-empty-line-before */
674
+ /* jscpd:ignore-end */
675
+ }
676
+ .db-header-drawer .db-drawer-footer:has(.db-header-secondary-action:empty) {
677
+ display: none;
678
+ }
679
+ .db-header-drawer:has(.db-drawer-footer:has(.db-header-secondary-action:empty)) .db-drawer-content {
680
+ margin-block-end: env(safe-area-inset-bottom);
681
+ }
672
682
 
673
683
  /* Only for Desktop */
674
684
  .db-header-meta-navigation:not([hidden]),