@db-ux/core-components 4.13.1-angular-signal-forms12-ac097f6 → 4.14.0-shell-52d18db

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 (105) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/agent/Best-Practise_Common-AI-Mistakes.md +3 -3
  3. package/build/components/accordion/accordion.css +33 -6
  4. package/build/components/accordion/accordion.scss +25 -0
  5. package/build/components/accordion-item/accordion-item.css +9 -14
  6. package/build/components/accordion-item/accordion-item.scss +5 -3
  7. package/build/components/badge/badge.css +1 -1
  8. package/build/components/badge/badge.scss +1 -1
  9. package/build/components/button/button.css +0 -8
  10. package/build/components/button/button.scss +0 -11
  11. package/build/components/checkbox/checkbox.css +6 -11
  12. package/build/components/control-panel-brand/control-panel-brand.css +53 -0
  13. package/build/components/control-panel-brand/control-panel-brand.scss +48 -0
  14. package/build/components/control-panel-desktop/control-panel-desktop.css +579 -0
  15. package/build/components/control-panel-desktop/control-panel-desktop.scss +30 -0
  16. package/build/components/control-panel-flat-icon/control-panel-flat-icon.css +258 -0
  17. package/build/components/control-panel-flat-icon/control-panel-flat-icon.scss +239 -0
  18. package/build/components/control-panel-meta/control-panel-meta.css +14 -0
  19. package/build/components/control-panel-meta/control-panel-meta.scss +15 -0
  20. package/build/components/control-panel-mobile/control-panel-mobile.css +442 -0
  21. package/build/components/control-panel-mobile/control-panel-mobile.scss +119 -0
  22. package/build/components/control-panel-navigation/control-panel-navigation.css +402 -0
  23. package/build/components/control-panel-navigation/control-panel-navigation.scss +186 -0
  24. package/build/components/control-panel-navigation-item/control-panel-navigation-item.css +87 -0
  25. package/build/components/control-panel-navigation-item/control-panel-navigation-item.scss +39 -0
  26. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group-menu-popover.css +21 -0
  27. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group-menu-popover.scss +129 -0
  28. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group-menu-tree.css +35 -0
  29. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group-menu-tree.scss +36 -0
  30. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group.css +158 -0
  31. package/build/components/control-panel-navigation-item-group/control-panel-navigation-item-group.scss +80 -0
  32. package/build/components/control-panel-primary-actions/control-panel-primary-actions.css +12 -0
  33. package/build/components/control-panel-primary-actions/control-panel-primary-actions.scss +7 -0
  34. package/build/components/control-panel-secondary-actions/control-panel-secondary-actions.css +12 -0
  35. package/build/components/control-panel-secondary-actions/control-panel-secondary-actions.scss +7 -0
  36. package/build/components/control-panel-skip-navigation/control-panel-skip-navigation.css +23 -0
  37. package/build/components/control-panel-skip-navigation/control-panel-skip-navigation.scss +25 -0
  38. package/build/components/custom-button/custom-button.css +15 -20
  39. package/build/components/custom-button/custom-button.scss +1 -1
  40. package/build/components/custom-select/custom-select.css +17 -16
  41. package/build/components/custom-select/custom-select.scss +1 -1
  42. package/build/components/custom-select-dropdown/custom-select-dropdown.css +39 -26
  43. package/build/components/custom-select-form-field/custom-select-form-field.css +6 -11
  44. package/build/components/custom-select-list/custom-select-list.css +6 -11
  45. package/build/components/custom-select-list-item/custom-select-list-item.css +24 -19
  46. package/build/components/divider/divider.css +18 -8
  47. package/build/components/drawer/drawer.css +79 -157
  48. package/build/components/drawer/drawer.scss +130 -170
  49. package/build/components/drawer-footer/drawer-footer.css +34 -0
  50. package/build/components/drawer-footer/drawer-footer.scss +11 -0
  51. package/build/components/drawer-header/drawer-header.css +38 -0
  52. package/build/components/drawer-header/drawer-header.scss +17 -0
  53. package/build/components/header/header.css +81 -46
  54. package/build/components/header/header.scss +34 -21
  55. package/build/components/input/input.css +6 -11
  56. package/build/components/link/link.css +12 -2
  57. package/build/components/navigation/navigation.css +6 -11
  58. package/build/components/navigation-item/navigation-item.css +45 -30
  59. package/build/components/navigation-item/navigation-item.scss +28 -13
  60. package/build/components/notification/notification.css +12 -2
  61. package/build/components/page/page.css +8 -0
  62. package/build/components/page/page.scss +8 -0
  63. package/build/components/radio/radio.css +6 -11
  64. package/build/components/select/select.css +6 -11
  65. package/build/components/shell/shell-desktop.css +475 -0
  66. package/build/components/shell/shell-desktop.scss +105 -0
  67. package/build/components/shell/shell-mobile.css +441 -0
  68. package/build/components/shell/shell-mobile.scss +148 -0
  69. package/build/components/shell/shell.css +1670 -0
  70. package/build/components/shell/shell.scss +70 -0
  71. package/build/components/shell-content/shell-content.css +34 -0
  72. package/build/components/shell-content/shell-content.scss +53 -0
  73. package/build/components/shell-sub-navigation/shell-sub-navigation.css +51 -0
  74. package/build/components/shell-sub-navigation/shell-sub-navigation.scss +184 -0
  75. package/build/components/stack/stack-web-component.css +1 -0
  76. package/build/components/stack/stack.css +1 -0
  77. package/build/components/switch/switch.css +6 -11
  78. package/build/components/tab-item/tab-item.css +6 -11
  79. package/build/components/tab-list/tab-list.css +6 -11
  80. package/build/components/table/table.css +6 -11
  81. package/build/components/tabs/tabs.css +50 -33
  82. package/build/components/tabs/tabs.scss +10 -55
  83. package/build/components/tag/tag.css +7 -10
  84. package/build/components/tag/tag.scss +1 -5
  85. package/build/components/textarea/textarea.css +6 -11
  86. package/build/styles/absolute.css +7 -7
  87. package/build/styles/bundle.css +7 -7
  88. package/build/styles/index.css +6 -6
  89. package/build/styles/index.scss +18 -2
  90. package/build/styles/internal/_component.scss +4 -0
  91. package/build/styles/internal/_control-panel-actions.scss +11 -0
  92. package/build/styles/internal/_control-panel-desktop.scss +412 -0
  93. package/build/styles/internal/_control-panel-mobile.scss +107 -0
  94. package/build/styles/internal/_custom-elements.scss +32 -7
  95. package/build/styles/internal/_icon-passing.scss +20 -10
  96. package/build/styles/internal/_link-components.scss +11 -2
  97. package/build/styles/internal/_navigation-item.scss +122 -0
  98. package/build/styles/internal/_scrollbar.scss +71 -0
  99. package/build/styles/relative.css +7 -7
  100. package/build/styles/rollup.css +7 -7
  101. package/build/styles/visually-hidden.css +1 -1
  102. package/build/styles/wc-workarounds.css +1 -1
  103. package/build/styles/wc-workarounds.scss +11 -0
  104. package/build/styles/webpack.css +7 -7
  105. package/package.json +3 -3
@@ -320,6 +320,7 @@
320
320
  }
321
321
  .db-header {
322
322
  /* stylelint-disable-next-line at-rule-empty-line-before */
323
+ /* jscpd:ignore-start */
323
324
  }
324
325
  .db-header[data-width=small] {
325
326
  margin-inline: auto;
@@ -333,6 +334,9 @@
333
334
  margin-inline: auto;
334
335
  max-inline-size: 90em;
335
336
  }
337
+ .db-header {
338
+ /* jscpd:ignore-end */
339
+ }
336
340
  .db-header .db-link:not([hidden]) {
337
341
  display: inline-block;
338
342
  }
@@ -391,17 +395,22 @@
391
395
  content: "";
392
396
  background-color: var(--db-divider-bg-color);
393
397
  position: absolute;
398
+ /* jscpd:ignore-start */
394
399
  block-size: var(--db-border-width-3xs);
395
400
  inset-block-start: 0;
396
401
  inset-inline: 0;
397
- /* stylelint-disable-next-line at-rule-empty-line-before */
402
+ /* stylelint-disable-next-line db-ux/use-border-color */
398
403
  }
399
404
  @media (forced-colors: active) {
400
- .db-header-meta-navigation {
401
- /* stylelint-disable-next-line no-invalid-position-declaration, db-ux/use-border-color */
402
- border: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
405
+ .db-header-meta-navigation::before {
406
+ /* stylelint-disable-next-line db-ux/use-border-color */
407
+ border-block-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
403
408
  }
404
409
  }
410
+ .db-header-meta-navigation::before {
411
+ /* stylelint-disable-next-line at-rule-empty-line-before */
412
+ /* jscpd:ignore-end */
413
+ }
405
414
  .db-header-meta-navigation {
406
415
  /* stylelint-disable-next-line media-query-no-invalid */
407
416
  }
@@ -448,16 +457,19 @@
448
457
  content: "";
449
458
  background-color: var(--db-divider-bg-color);
450
459
  position: absolute;
460
+ /* jscpd:ignore-start */
451
461
  inline-size: var(--db-border-width-3xs);
452
462
  inset-inline-start: 0;
453
463
  inset-block: 0;
464
+ /* stylelint-disable-next-line db-ux/use-border-color */
454
465
  /* stylelint-disable-next-line at-rule-empty-line-before */
466
+ /* jscpd:ignore-end */
455
467
  }
456
468
  }
457
469
  @media (min-width: 64em) and (forced-colors: active) {
458
- .db-header-navigation-container:not([data-force-mobile]), .db-header-navigation-container[data-force-mobile=false] {
459
- /* stylelint-disable-next-line no-invalid-position-declaration, db-ux/use-border-color */
460
- border: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
470
+ .db-header-navigation-container:not([data-force-mobile])::before, .db-header-navigation-container[data-force-mobile=false]::before {
471
+ /* stylelint-disable-next-line db-ux/use-border-color */
472
+ border-inline-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
461
473
  }
462
474
  }
463
475
  @media (min-width: 64em) {
@@ -506,17 +518,22 @@
506
518
  content: "";
507
519
  background-color: var(--db-divider-bg-color);
508
520
  position: absolute;
521
+ /* jscpd:ignore-start */
509
522
  inline-size: var(--db-border-width-3xs);
510
523
  inset-inline-start: 0;
511
524
  inset-block: 0;
512
- /* stylelint-disable-next-line at-rule-empty-line-before */
525
+ /* stylelint-disable-next-line db-ux/use-border-color */
513
526
  }
514
527
  @media (forced-colors: active) {
515
- .db-header-action-container {
516
- /* stylelint-disable-next-line no-invalid-position-declaration, db-ux/use-border-color */
517
- border: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
528
+ .db-header-action-container::before {
529
+ /* stylelint-disable-next-line db-ux/use-border-color */
530
+ border-inline-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
518
531
  }
519
532
  }
533
+ .db-header-action-container::before {
534
+ /* stylelint-disable-next-line at-rule-empty-line-before */
535
+ /* jscpd:ignore-end */
536
+ }
520
537
  .db-header-action-container {
521
538
  /* stylelint-disable-next-line media-query-no-invalid */
522
539
  }
@@ -551,38 +568,15 @@
551
568
  flex-shrink: 0;
552
569
  }
553
570
 
554
- .db-header-secondary-action {
555
- flex: 0 1 auto;
556
- flex-grow: 0;
557
- flex-shrink: 0;
558
- padding-block-start: var(--db-spacing-fixed-xs);
559
- --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
560
- position: var(--db-tooltip-parent-position, relative);
561
- }
562
- .db-header-secondary-action[data-emphasis=strong] {
563
- --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
564
- }
565
- .db-header-secondary-action::before {
566
- content: "";
567
- background-color: var(--db-divider-bg-color);
568
- position: absolute;
569
- block-size: var(--db-border-width-3xs);
570
- inset-block-start: 0;
571
- inset-inline: 0;
572
- /* stylelint-disable-next-line at-rule-empty-line-before */
573
- }
574
- @media (forced-colors: active) {
575
- .db-header-secondary-action {
576
- /* stylelint-disable-next-line no-invalid-position-declaration, db-ux/use-border-color */
577
- border: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
578
- }
579
- }
580
571
  .db-header-secondary-action {
581
572
  /* stylelint-disable-next-line media-query-no-invalid */
582
573
  }
583
574
  @media (min-width: 64em) {
584
- .db-header-secondary-action:not([data-force-mobile])::before, .db-header-secondary-action[data-force-mobile=false]::before {
585
- display: none;
575
+ .db-header-secondary-action:not([data-force-mobile]), .db-header-secondary-action[data-force-mobile=false] {
576
+ flex: 0 1 auto;
577
+ flex-grow: 0;
578
+ flex-shrink: 0;
579
+ padding-block-start: var(--db-spacing-fixed-xs);
586
580
  }
587
581
  }
588
582
  .db-header-secondary-action {
@@ -601,7 +595,6 @@
601
595
  }
602
596
 
603
597
  .db-header-navigation {
604
- padding-block: var(--db-spacing-fixed-md);
605
598
  /* stylelint-disable-next-line media-query-no-invalid */
606
599
  }
607
600
  @media (min-width: 64em) {
@@ -620,7 +613,6 @@
620
613
  .db-header-navigation,
621
614
  .db-header-secondary-action {
622
615
  gap: var(--db-spacing-fixed-sm);
623
- padding-inline: var(--db-spacing-fixed-md);
624
616
  /* stylelint-disable-next-line media-query-no-invalid */
625
617
  }
626
618
  @media (min-width: 64em) {
@@ -637,11 +629,7 @@
637
629
  }
638
630
 
639
631
  .db-header-drawer {
640
- --db-drawer-content-padding-inline: 0;
641
- --db-drawer-header-padding-block-end: calc(
642
- 1px + var(--db-spacing-fixed-xs)
643
- );
644
- padding-block-end: 0;
632
+ --db-drawer-content-padding: 0;
645
633
  }
646
634
  .db-header-drawer .db-drawer-content:not([hidden]) {
647
635
  display: flex;
@@ -651,6 +639,53 @@
651
639
  block-size: 100%;
652
640
  overflow: hidden;
653
641
  }
642
+ .db-header-drawer .db-drawer-content .db-header-navigation {
643
+ display: flex;
644
+ flex-direction: column;
645
+ block-size: 100%;
646
+ overflow-x: hidden;
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
+ }
649
+ .db-header-drawer .db-drawer-content {
650
+ /* jscpd:ignore-start */
651
+ }
652
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation {
653
+ /* stylelint-disable-next-line db-ux/use-spacings */
654
+ padding: var(--db-spacing-fixed-xs) max(var(--db-spacing-fixed-sm), max(env(safe-area-inset-left), env(safe-area-inset-right)));
655
+ margin-block-start: auto;
656
+ flex-flow: column nowrap;
657
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-60-default);
658
+ position: var(--db-tooltip-parent-position, relative);
659
+ }
660
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation[data-emphasis=strong] {
661
+ --db-divider-bg-color: var(--db-adaptive-on-bg-basic-emphasis-70-default);
662
+ }
663
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
664
+ content: "";
665
+ background-color: var(--db-divider-bg-color);
666
+ position: absolute;
667
+ /* jscpd:ignore-start */
668
+ block-size: var(--db-border-width-3xs);
669
+ inset-block-start: 0;
670
+ inset-inline: 0;
671
+ /* stylelint-disable-next-line db-ux/use-border-color */
672
+ }
673
+ @media (forced-colors: active) {
674
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
675
+ /* stylelint-disable-next-line db-ux/use-border-color */
676
+ border-block-start: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
677
+ }
678
+ }
679
+ .db-header-drawer .db-drawer-content .db-header-meta-navigation::before {
680
+ /* stylelint-disable-next-line at-rule-empty-line-before */
681
+ /* jscpd:ignore-end */
682
+ }
683
+ .db-header-drawer .db-drawer-content {
684
+ /* jscpd:ignore-end */
685
+ }
686
+ .db-header-drawer .db-drawer-footer:has(.db-header-secondary-action:empty) {
687
+ display: none;
688
+ }
654
689
 
655
690
  /* Only for Desktop */
656
691
  .db-header-meta-navigation:not([hidden]),
@@ -20,6 +20,7 @@
20
20
  --db-drawer-max-width: #{screen-sizes.$db-breakpoint-sm};
21
21
  }
22
22
 
23
+ /* jscpd:ignore-start */
23
24
  &[data-width="small"] {
24
25
  margin-inline: auto;
25
26
  max-inline-size: screen-sizes.$db-breakpoint-sm;
@@ -35,6 +36,8 @@
35
36
  max-inline-size: screen-sizes.$db-breakpoint-lg;
36
37
  }
37
38
 
39
+ /* jscpd:ignore-end */
40
+
38
41
  .db-link {
39
42
  @include helpers.display(inline-block);
40
43
  }
@@ -186,17 +189,11 @@
186
189
  }
187
190
 
188
191
  .db-header-secondary-action {
189
- flex: 0 1 auto;
190
- flex-grow: 0;
191
- flex-shrink: 0;
192
- padding-block-start: variables.$db-spacing-fixed-xs;
193
-
194
- @include helpers.divider("top");
195
-
196
192
  @include screen-sizes.screen("md") {
197
- &::before {
198
- display: none;
199
- }
193
+ flex: 0 1 auto;
194
+ flex-grow: 0;
195
+ flex-shrink: 0;
196
+ padding-block-start: variables.$db-spacing-fixed-xs;
200
197
  }
201
198
  }
202
199
 
@@ -211,8 +208,6 @@
211
208
  }
212
209
 
213
210
  .db-header-navigation {
214
- padding-block: variables.$db-spacing-fixed-md;
215
-
216
211
  @include screen-sizes.screen("md") {
217
212
  margin-inline: variables.$db-spacing-fixed-lg;
218
213
  }
@@ -223,7 +218,6 @@
223
218
  @include helpers.display(flex);
224
219
 
225
220
  gap: variables.$db-spacing-fixed-sm;
226
- padding-inline: variables.$db-spacing-fixed-md;
227
221
 
228
222
  @include screen-sizes.screen("md") {
229
223
  gap: variables.$db-spacing-fixed-xs;
@@ -232,14 +226,7 @@
232
226
  }
233
227
 
234
228
  .db-header-drawer {
235
- --db-drawer-content-padding-inline: 0;
236
-
237
- // 1px for box shadow of header
238
- --db-drawer-header-padding-block-end: calc(
239
- 1px + #{variables.$db-spacing-fixed-xs}
240
- );
241
-
242
- padding-block-end: 0;
229
+ --db-drawer-content-padding: 0;
243
230
 
244
231
  .db-drawer-content {
245
232
  @include helpers.display(flex);
@@ -247,6 +234,32 @@
247
234
  flex-direction: column;
248
235
  block-size: 100%;
249
236
  overflow: hidden;
237
+
238
+ .db-header-navigation {
239
+ display: flex;
240
+ flex-direction: column;
241
+ block-size: 100%;
242
+ overflow-x: hidden;
243
+ padding: variables.$db-spacing-fixed-xs
244
+ component.$drawer-content-padding-inline;
245
+ }
246
+
247
+ /* jscpd:ignore-start */
248
+ .db-header-meta-navigation {
249
+ /* stylelint-disable-next-line db-ux/use-spacings */
250
+ padding: variables.$db-spacing-fixed-xs
251
+ component.$drawer-content-padding-inline;
252
+ margin-block-start: auto;
253
+ flex-flow: column nowrap;
254
+
255
+ @include helpers.divider("top");
256
+ }
257
+
258
+ /* jscpd:ignore-end */
259
+ }
260
+
261
+ .db-drawer-footer:has(.db-header-secondary-action:empty) {
262
+ display: none;
250
263
  }
251
264
  }
252
265
 
@@ -1,18 +1,13 @@
1
1
  .db-input[data-hide-label=true] > label, .db-visually-hidden,
2
2
  [data-visually-hidden=true] {
3
- clip: rect(0, 0, 0, 0) !important;
4
- overflow: hidden !important;
5
- white-space: nowrap !important;
6
- font-size: 0 !important;
7
- all: initial;
8
- inset-block-start: 0 !important;
9
- block-size: 1px !important;
10
3
  position: absolute !important;
4
+ inset-block-start: 0 !important;
11
5
  inline-size: 1px !important;
12
- border-width: 0 !important;
13
- border-style: initial !important;
14
- border-color: initial !important;
15
- border-image: initial !important;
6
+ block-size: 1px !important;
7
+ overflow: hidden !important;
8
+ clip: rect(0, 0, 0, 0) !important;
9
+ white-space: nowrap !important;
10
+ border: 0 !important;
16
11
  padding: 0 !important;
17
12
  pointer-events: none !important;
18
13
  }
@@ -82,10 +82,17 @@
82
82
  }
83
83
 
84
84
  .db-link a:not([hidden]), .db-link:not([hidden]) {
85
- display: inline-block;
85
+ display: inline-flex;
86
+ }
87
+ .db-link a, .db-link {
88
+ align-items: center;
89
+ }
90
+ .db-link a:not([data-wrap=true]):not([hidden]), .db-link:not([data-wrap=true]):not([hidden]) {
91
+ display: inline-flex;
86
92
  }
87
93
  .db-link a:not([data-wrap=true]), .db-link:not([data-wrap=true]) {
88
- block-size: var(--db-sizing-sm);
94
+ block-size: 1lh;
95
+ align-items: center;
89
96
  }
90
97
 
91
98
  .db-link {
@@ -122,6 +129,9 @@
122
129
  opacity: var(--db-opacity-md);
123
130
  pointer-events: none;
124
131
  }
132
+ .db-link::after {
133
+ text-decoration: none;
134
+ }
125
135
 
126
136
  .db-link {
127
137
  --db-icon-margin-start: var(--db-spacing-fixed-2xs);
@@ -1,18 +1,13 @@
1
1
  .db-visually-hidden,
2
2
  [data-visually-hidden=true] {
3
- clip: rect(0, 0, 0, 0) !important;
4
- overflow: hidden !important;
5
- white-space: nowrap !important;
6
- font-size: 0 !important;
7
- all: initial;
8
- inset-block-start: 0 !important;
9
- block-size: 1px !important;
10
3
  position: absolute !important;
4
+ inset-block-start: 0 !important;
11
5
  inline-size: 1px !important;
12
- border-width: 0 !important;
13
- border-style: initial !important;
14
- border-color: initial !important;
15
- border-image: initial !important;
6
+ block-size: 1px !important;
7
+ overflow: hidden !important;
8
+ clip: rect(0, 0, 0, 0) !important;
9
+ white-space: nowrap !important;
10
+ border: 0 !important;
16
11
  padding: 0 !important;
17
12
  pointer-events: none !important;
18
13
  }
@@ -148,17 +148,16 @@
148
148
  }
149
149
  .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false])::before, .db-navigation-item[data-icon]:not([data-show-icon=false])::before {
150
150
  position: absolute;
151
- inset-block-start: calc(50% - 0.5em);
152
- inset-inline-start: var(--db-icon-passing-inline-start, var(--db-spacing-fixed-sm));
151
+ inset-block-start: var(--db-icon-passing-inset-block-start, calc(50% - 0.5em));
152
+ inset-inline-start: var(--db-icon-passing-inset-inline-start, var(--db-spacing-fixed-sm));
153
153
  pointer-events: none;
154
154
  z-index: 1;
155
155
  }
156
- .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 {
157
- --db-padding-inline-start: calc(
158
- var(--db-spacing-fixed-sm) + var(--db-icon-margin-end, var(--db-spacing-fixed-xs)) + 1lh
159
- );
156
+ .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false]) > :is(label, button, a),
157
+ .db-navigation-item[data-icon-leading]:not([data-show-icon-leading=false]) > * > :is(label, button, a), .db-navigation-item[data-icon]:not([data-show-icon=false]) > :is(label, button, a),
158
+ .db-navigation-item[data-icon]:not([data-show-icon=false]) > * > :is(label, button, a) {
160
159
  /* stylelint-disable-next-line db-ux/use-spacings */
161
- padding-inline-start: var(--db-padding-inline-start);
160
+ padding-inline-start: var(--db-icon-passing-padding-inline-start, calc(var(--db-spacing-fixed-sm) + var(--db-icon-margin-end, var(--db-spacing-fixed-xs)) + var(--db-icon-font-size)));
162
161
  }
163
162
  .db-navigation-item:not([hidden]) {
164
163
  display: inline-flex;
@@ -261,12 +260,18 @@
261
260
  content: var(--db-icon-trailing, attr(data-icon-trailing))/"";
262
261
  }
263
262
  }
263
+ .db-navigation-item {
264
+ /* jscpd:ignore-start */
265
+ }
264
266
  .db-navigation-item:has([aria-current=page]) > :is(a, button), .db-navigation-item:has([data-active=true]) > :is(a, button), .db-navigation-item[aria-current=page] > :is(a, button), .db-navigation-item[data-active=true] > :is(a, button) {
265
267
  font-weight: 700;
266
268
  }
267
269
  .db-navigation-item:not([data-width=full]) .db-navigation-item-expand-button::after {
268
270
  --db-icon-margin-start: var(--db-spacing-fixed-sm);
269
271
  }
272
+ .db-navigation-item {
273
+ /* jscpd:ignore-end */
274
+ }
270
275
  .db-navigation-item[data-width=full] {
271
276
  inline-size: 100%;
272
277
  }
@@ -278,6 +283,8 @@
278
283
  pointer-events: none;
279
284
  }
280
285
 
286
+ /* jscpd:ignore-start */
287
+ /* jscpd:ignore-end */
281
288
  .db-sub-navigation {
282
289
  margin: 0;
283
290
  }
@@ -287,39 +294,30 @@
287
294
  .db-sub-navigation {
288
295
  flex-direction: column;
289
296
  z-index: 70;
290
- inset-inline-start: 0;
291
297
  background-color: var(--db-adaptive-bg-basic-level-1-default);
292
298
  visibility: hidden;
293
299
  }
294
300
  .db-sub-navigation[data-force-mobile=true] {
295
- padding: var(--db-spacing-fixed-md);
296
- inline-size: calc(100% - var(--db-spacing-fixed-xl));
301
+ padding: var(--db-spacing-fixed-xs) max(var(--db-spacing-fixed-sm), max(env(safe-area-inset-left), env(safe-area-inset-right)));
302
+ inline-size: 100%;
303
+ max-inline-size: var(--db-drawer-max-width, var(--db-drawer-max-width-horizontal));
297
304
  position: fixed;
298
305
  overflow: hidden auto;
299
- inset-inline-start: var(--db-spacing-fixed-xl);
300
- }
301
- .db-drawer-container[data-direction=left] .db-sub-navigation[data-force-mobile=true] {
302
- inset-inline: auto var(--db-spacing-fixed-xl);
303
- }
304
- .db-sub-navigation[data-force-mobile=true] {
305
- inset-block: calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs))) calc(var(--db-sizing-md) + var(--db-spacing-fixed-xs) * 2);
306
+ inset-inline-end: 0;
307
+ inset-block: calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs)) + env(safe-area-inset-top)) calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs)) + env(safe-area-inset-bottom));
306
308
  }
307
309
  .db-sub-navigation {
308
310
  /* stylelint-disable-next-line media-query-no-invalid */
309
311
  }
310
312
  @media (max-width: 63.9375em) {
311
313
  .db-sub-navigation {
312
- padding: var(--db-spacing-fixed-md);
313
- inline-size: calc(100% - var(--db-spacing-fixed-xl));
314
+ padding: var(--db-spacing-fixed-xs) max(var(--db-spacing-fixed-sm), max(env(safe-area-inset-left), env(safe-area-inset-right)));
315
+ inline-size: 100%;
316
+ max-inline-size: var(--db-drawer-max-width, var(--db-drawer-max-width-horizontal));
314
317
  position: fixed;
315
318
  overflow: hidden auto;
316
- inset-inline-start: var(--db-spacing-fixed-xl);
317
- }
318
- .db-drawer-container[data-direction=left] .db-sub-navigation {
319
- inset-inline: auto var(--db-spacing-fixed-xl);
320
- }
321
- .db-sub-navigation {
322
- inset-block: calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs))) calc(var(--db-sizing-md) + var(--db-spacing-fixed-xs) * 2);
319
+ inset-inline-end: 0;
320
+ inset-block: calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs)) + env(safe-area-inset-top)) calc(calc(var(--db-sizing-md) + 2 * var(--db-spacing-fixed-xs)) + env(safe-area-inset-bottom));
323
321
  }
324
322
  }
325
323
  .db-sub-navigation {
@@ -354,6 +352,9 @@
354
352
  .db-sub-navigation:not([data-force-mobile])[data-force-close=true], .db-sub-navigation[data-force-mobile=false][data-force-close=true] {
355
353
  pointer-events: none;
356
354
  }
355
+ .db-sub-navigation:not([data-force-mobile]), .db-sub-navigation[data-force-mobile=false] {
356
+ /* jscpd:ignore-start */
357
+ }
357
358
  .db-sub-navigation:not([data-force-mobile])::before, .db-sub-navigation[data-force-mobile=false]::before {
358
359
  content: "";
359
360
  position: absolute;
@@ -362,6 +363,9 @@
362
363
  block-size: calc(var(--db-spacing-fixed-3xs) + var(--db-spacing-fixed-md));
363
364
  inset-block-start: calc(-1 * var(--db-spacing-fixed-md) - var(--db-spacing-fixed-3xs));
364
365
  }
366
+ .db-sub-navigation:not([data-force-mobile]), .db-sub-navigation[data-force-mobile=false] {
367
+ /* jscpd:ignore-end */
368
+ }
365
369
  .db-sub-navigation:not([data-force-mobile]) .db-sub-navigation, .db-sub-navigation[data-force-mobile=false] .db-sub-navigation {
366
370
  inset-block-start: calc(-50% + var(--db-spacing-fixed-xs) + 1px);
367
371
  inset-inline-start: calc(100% + var(--db-spacing-fixed-xs));
@@ -381,6 +385,9 @@
381
385
  inset-block: auto 0;
382
386
  transform: translateX(100%) scaleX(-1);
383
387
  }
388
+ .db-sub-navigation:not([data-force-mobile]) .db-sub-navigation, .db-sub-navigation[data-force-mobile=false] .db-sub-navigation {
389
+ /* jscpd:ignore-start */
390
+ }
384
391
  .db-sub-navigation:not([data-force-mobile]) .db-sub-navigation::before, .db-sub-navigation[data-force-mobile=false] .db-sub-navigation::before {
385
392
  content: "";
386
393
  position: absolute;
@@ -402,6 +409,9 @@
402
409
  block-size: 100%;
403
410
  inline-size: var(--db-spacing-fixed-xs);
404
411
  }
412
+ .db-sub-navigation:not([data-force-mobile]) .db-sub-navigation, .db-sub-navigation[data-force-mobile=false] .db-sub-navigation {
413
+ /* jscpd:ignore-end */
414
+ }
405
415
  }
406
416
  .db-sub-navigation {
407
417
  /* stylelint-disable-next-line at-rule-empty-line-before */
@@ -434,14 +444,19 @@
434
444
  content: "";
435
445
  background-color: var(--db-divider-bg-color);
436
446
  position: absolute;
447
+ /* jscpd:ignore-start */
437
448
  block-size: var(--db-border-width-3xs);
438
449
  inset-block-end: 0;
439
450
  inset-inline: 0;
440
- /* stylelint-disable-next-line at-rule-empty-line-before */
451
+ /* stylelint-disable-next-line db-ux/use-border-color */
441
452
  }
442
453
  @media (forced-colors: active) {
443
- .db-mobile-navigation-back {
444
- /* stylelint-disable-next-line no-invalid-position-declaration, db-ux/use-border-color */
445
- border: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
454
+ .db-mobile-navigation-back::before {
455
+ /* stylelint-disable-next-line db-ux/use-border-color */
456
+ border-block-end: var(--db-border-width-3xs) solid var(--db-divider-bg-color);
446
457
  }
447
458
  }
459
+ .db-mobile-navigation-back::before {
460
+ /* stylelint-disable-next-line at-rule-empty-line-before */
461
+ /* jscpd:ignore-end */
462
+ }
@@ -140,6 +140,7 @@
140
140
  }
141
141
  }
142
142
 
143
+ /* jscpd:ignore-start */
143
144
  &:has([aria-current="page"]),
144
145
  &:has([data-active="true"]),
145
146
  &[aria-current="page"],
@@ -157,6 +158,8 @@
157
158
  }
158
159
  }
159
160
 
161
+ /* jscpd:ignore-end */
162
+
160
163
  &[data-width="full"] {
161
164
  inline-size: 100%;
162
165
 
@@ -173,21 +176,28 @@
173
176
  }
174
177
  }
175
178
 
176
- @mixin sub-navigation-mobile() {
177
- padding: variables.$db-spacing-fixed-md;
178
- inline-size: calc(100% - #{variables.$db-spacing-fixed-xl});
179
+ /* jscpd:ignore-start */
180
+ @mixin sub-navigation-item-mobile() {
181
+ padding: variables.$db-spacing-fixed-xs
182
+ component.$drawer-content-padding-inline;
183
+ inline-size: 100%;
184
+ max-inline-size: var(
185
+ --db-drawer-max-width,
186
+ var(--db-drawer-max-width-horizontal)
187
+ );
179
188
  position: fixed;
180
189
  overflow: hidden auto;
181
- inset-inline-start: variables.$db-spacing-fixed-xl;
182
-
183
- .db-drawer-container[data-direction="left"] & {
184
- inset-inline: auto variables.$db-spacing-fixed-xl;
185
- }
186
-
187
- inset-block: calc(#{component.$min-mobile-header-height})
188
- calc(#{variables.$db-sizing-md} + #{variables.$db-spacing-fixed-xs} * 2);
190
+ inset-inline-end: 0;
191
+ inset-block: calc(
192
+ #{component.$min-mobile-header-height} + env(safe-area-inset-top)
193
+ )
194
+ calc(
195
+ #{component.$min-mobile-header-height} + env(safe-area-inset-bottom)
196
+ );
189
197
  }
190
198
 
199
+ /* jscpd:ignore-end */
200
+
191
201
  .db-sub-navigation {
192
202
  @extend %component-border;
193
203
 
@@ -197,12 +207,11 @@
197
207
 
198
208
  flex-direction: column;
199
209
  z-index: 70;
200
- inset-inline-start: 0;
201
210
  background-color: colors.$db-adaptive-bg-basic-level-1-default;
202
211
  visibility: hidden;
203
212
 
204
213
  @include screen-sizes.screen("md", "max") {
205
- @include sub-navigation-mobile;
214
+ @include sub-navigation-item-mobile;
206
215
  }
207
216
 
208
217
  @include screen-sizes.screen("md") {
@@ -233,6 +242,7 @@
233
242
  pointer-events: none;
234
243
  }
235
244
 
245
+ /* jscpd:ignore-start */
236
246
  &::before {
237
247
  content: "";
238
248
  position: absolute;
@@ -250,6 +260,8 @@
250
260
  );
251
261
  }
252
262
 
263
+ /* jscpd:ignore-end */
264
+
253
265
  .db-sub-navigation {
254
266
  // 1px for box shadow
255
267
  inset-block-start: calc(
@@ -282,6 +294,7 @@
282
294
  }
283
295
  }
284
296
 
297
+ /* jscpd:ignore-start */
285
298
  &::before {
286
299
  content: "";
287
300
  position: absolute;
@@ -309,6 +322,8 @@
309
322
  block-size: 100%;
310
323
  inline-size: variables.$db-spacing-fixed-xs;
311
324
  }
325
+
326
+ /* jscpd:ignore-end */
312
327
  }
313
328
  }
314
329