@db-ux/core-components 1.1.1 → 2.0.0-0-custom-select-16b8cce

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 (75) hide show
  1. package/README.md +1 -1
  2. package/build/assets/icons/LICENCES.json +6 -0
  3. package/build/assets/icons/circular_arrows.svg +1 -0
  4. package/build/assets/icons/fonts/all/db-ux.woff2 +0 -0
  5. package/build/assets/icons/fonts/default/db-ux.woff2 +0 -0
  6. package/build/assets/icons/fonts/default_12/db-ux.woff2 +0 -0
  7. package/build/assets/icons/fonts/default_14/db-ux.woff2 +0 -0
  8. package/build/assets/icons/fonts/default_16/db-ux.woff2 +0 -0
  9. package/build/assets/icons/fonts/default_20/db-ux.woff2 +0 -0
  10. package/build/assets/icons/fonts/default_24/db-ux.woff2 +0 -0
  11. package/build/assets/icons/fonts/default_28/db-ux.woff2 +0 -0
  12. package/build/assets/icons/fonts/default_32/db-ux.woff2 +0 -0
  13. package/build/assets/icons/fonts/default_48/db-ux.woff2 +0 -0
  14. package/build/assets/icons/fonts/default_64/db-ux.woff2 +0 -0
  15. package/build/assets/icons/fonts/filled/db-ux.woff2 +0 -0
  16. package/build/assets/icons/fonts/filled_12/db-ux.woff2 +0 -0
  17. package/build/assets/icons/fonts/filled_14/db-ux.woff2 +0 -0
  18. package/build/assets/icons/fonts/filled_16/db-ux.woff2 +0 -0
  19. package/build/assets/icons/fonts/filled_20/db-ux.woff2 +0 -0
  20. package/build/assets/icons/fonts/filled_24/db-ux.woff2 +0 -0
  21. package/build/assets/icons/fonts/filled_28/db-ux.woff2 +0 -0
  22. package/build/assets/icons/fonts/filled_32/db-ux.woff2 +0 -0
  23. package/build/assets/icons/fonts/filled_48/db-ux.woff2 +0 -0
  24. package/build/assets/icons/fonts/filled_64/db-ux.woff2 +0 -0
  25. package/build/components/accordion/accordion.css +1 -1
  26. package/build/components/accordion-item/accordion-item.css +7 -2
  27. package/build/components/badge/badge.css +56 -4
  28. package/build/components/badge/badge.scss +1 -1
  29. package/build/components/button/button.css +4 -4
  30. package/build/components/card/card.css +6 -6
  31. package/build/components/checkbox/checkbox.css +60 -57
  32. package/build/components/custom-select/custom-select.css +1028 -0
  33. package/build/components/custom-select/custom-select.scss +172 -0
  34. package/build/components/custom-select-dropdown/custom-select-dropdown.css +402 -0
  35. package/build/components/custom-select-dropdown/custom-select-dropdown.scss +86 -0
  36. package/build/components/custom-select-form-field/custom-select-form-field.css +49 -0
  37. package/build/components/custom-select-form-field/custom-select-form-field.scss +24 -0
  38. package/build/components/custom-select-list/custom-select-list.css +48 -0
  39. package/build/components/custom-select-list/custom-select-list.scss +35 -0
  40. package/build/components/custom-select-list-item/custom-select-list-item.css +187 -0
  41. package/build/components/custom-select-list-item/custom-select-list-item.scss +99 -0
  42. package/build/components/divider/divider.css +2 -2
  43. package/build/components/drawer/drawer.css +6 -1
  44. package/build/components/header/header.css +4 -4
  45. package/build/components/input/input.css +71 -61
  46. package/build/components/input/input.scss +1 -5
  47. package/build/components/link/link.css +9 -4
  48. package/build/components/navigation-item/navigation-item.css +8 -3
  49. package/build/components/notification/notification.css +7 -2
  50. package/build/components/popover/popover.css +5 -0
  51. package/build/components/radio/radio.css +57 -54
  52. package/build/components/select/select.css +84 -75
  53. package/build/components/select/select.scss +4 -49
  54. package/build/components/switch/switch.css +64 -61
  55. package/build/components/tab-item/tab-item.css +5 -5
  56. package/build/components/tab-list/tab-list.css +17 -3
  57. package/build/components/tag/tag.css +40 -35
  58. package/build/components/textarea/textarea.css +93 -65
  59. package/build/components/textarea/textarea.scss +1 -1
  60. package/build/components/tooltip/tooltip.css +6 -1
  61. package/build/components/tooltip/tooltip.scss +2 -2
  62. package/build/styles/_select-components.scss +50 -0
  63. package/build/styles/absolute.css +32 -32
  64. package/build/styles/component-animations.css +1 -1
  65. package/build/styles/index.css +31 -31
  66. package/build/styles/index.scss +5 -0
  67. package/build/styles/internal/_custom-elements.scss +3 -0
  68. package/build/styles/internal/_form-components.scss +81 -70
  69. package/build/styles/internal/_scrollbar.scss +14 -3
  70. package/build/styles/internal/_tag-components.scss +20 -2
  71. package/build/styles/relative.css +32 -32
  72. package/build/styles/rollup.css +32 -32
  73. package/build/styles/wc-workarounds.css +1 -1
  74. package/build/styles/webpack.css +32 -32
  75. package/package.json +6 -5
@@ -5,26 +5,13 @@
5
5
  @use "@db-ux/core-foundations/build/styles/fonts";
6
6
  @use "../../styles/internal/form-components";
7
7
  @use "../../styles/internal/component";
8
-
9
- %select-icon {
10
- @extend %dropdown-icon;
11
-
12
- &[data-icon] {
13
- --db-form-has-before: 1;
14
- }
15
- }
16
-
17
- $has-before-padding: calc(
18
- var(--db-form-has-before) *
19
- (#{form-components.$icon-size-sm} + #{variables.$db-spacing-fixed-sm})
20
- );
8
+ @use "../../styles/select-components";
21
9
 
22
10
  .db-select {
23
- --db-form-component-padding-inline-end: calc(
24
- #{form-components.$font-size-height} + #{variables.$db-spacing-fixed-sm}
25
- );
11
+ --db-form-component-padding-inline-end: #{select-components.$select-icon-padding};
26
12
  // shared from form-components
27
13
  @extend %select-icon;
14
+ @extend %select-placeholder;
28
15
 
29
16
  min-inline-size: calc(
30
17
  4 * #{variables.$db-sizing-md} + var(--db-form-has-before) *
@@ -34,7 +21,7 @@ $has-before-padding: calc(
34
21
  @include form-components.set-default-form-component(select);
35
22
 
36
23
  select {
37
- text-indent: $has-before-padding;
24
+ text-indent: select-components.$has-before-padding;
38
25
  }
39
26
 
40
27
  // Most likely this wouldn't work on MacOS, but we're still progressively enhancing Windows by this
@@ -43,38 +30,6 @@ $has-before-padding: calc(
43
30
  color: colors.$db-adaptive-on-bg-basic-emphasis-100-default;
44
31
  }
45
32
 
46
- &[data-hide-label="true"] {
47
- --db-label-visible-height: 0;
48
- --db-label-visible-spacing: 1;
49
- }
50
-
51
- [id$="-placeholder"] {
52
- @extend %db-overwrite-font-size-md;
53
-
54
- position: absolute;
55
- pointer-events: none;
56
- // we use the top of the element, the size of the label+label-margin-bottom and the font-size of the select/2
57
- // for functional we have some rounding issues for rem, so we need 1px less
58
- inset-block-start: calc(
59
- 0% +
60
- (
61
- #{form-components.$label-size-height-xs} +
62
- #{variables.$db-spacing-fixed-xs}
63
- ) *
64
- var(--db-label-visible-height, 1) +
65
- var(--db-type-body-font-size-md) /
66
- 2 - var(--db-density-functional, 0) * 1px
67
- );
68
- inset-inline: $has-before-padding;
69
- margin-inline-start: variables.$db-spacing-fixed-sm;
70
- overflow: hidden;
71
- white-space: nowrap;
72
- text-overflow: ellipsis;
73
- inline-size: calc(
74
- 100% - var(--db-form-component-padding-inline-end) -
75
- #{$has-before-padding} - #{variables.$db-spacing-fixed-sm}
76
- );
77
- }
78
33
 
79
34
  &:has(> select option:checked:not([hidden])) {
80
35
  [id$="-placeholder"] {
@@ -394,7 +394,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
394
394
  user-select: none;
395
395
  }
396
396
  .db-switch:has(input:required):is(label)::after,
397
- .db-switch:has(input:required) label::after {
397
+ .db-switch:has(input:required) > label::after, .db-switch[data-required=true]:is(label)::after,
398
+ .db-switch[data-required=true] > label::after {
398
399
  content: "*";
399
400
  content: "*"/"";
400
401
  /* stylelint-disable-next-line db-ux/use-spacings */
@@ -434,7 +435,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
434
435
  --db-icon-color: var(--db-successful-on-bg-inverted-default);
435
436
  }
436
437
  .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
437
- cursor: pointer;
438
+ cursor: var(--db-overwrite-cursor, pointer);
438
439
  background-color: var(--db-successful-bg-inverted-contrast-high-hovered);
439
440
  }
440
441
  .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -444,7 +445,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
444
445
  cursor: pointer;
445
446
  }
446
447
  .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
447
- cursor: pointer;
448
+ cursor: var(--db-overwrite-cursor, pointer);
448
449
  background-color: var(--db-successful-bg-inverted-contrast-high-pressed);
449
450
  }
450
451
  .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input:not([data-custom-validity]):required:user-valid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
@@ -454,19 +455,19 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
454
455
  cursor: pointer;
455
456
  }
456
457
  .db-switch:has(input:not([data-custom-validity]):required:user-valid):is(label),
457
- .db-switch:has(input:not([data-custom-validity]):required:user-valid) label {
458
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid) > label {
458
459
  color: var(--db-successful-on-bg-basic-emphasis-80-default);
459
460
  }
460
- .db-switch:has(input[data-custom-validity=valid]) .db-infotext {
461
+ .db-switch:has(input[data-custom-validity=valid]) .db-infotext, .db-switch[data-custom-validity=valid] .db-infotext {
461
462
  /* stylelint-disable-next-line at-rule-empty-line-before */
462
463
  }
463
- .db-switch:has(input[data-custom-validity=valid]) .db-infotext[data-semantic=successful] {
464
+ .db-switch:has(input[data-custom-validity=valid]) .db-infotext[data-semantic=successful], .db-switch[data-custom-validity=valid] .db-infotext[data-semantic=successful] {
464
465
  display: flex;
465
466
  }
466
- .db-switch:has(input[data-custom-validity=valid]) .db-infotext:not([data-semantic]) {
467
+ .db-switch:has(input[data-custom-validity=valid]) .db-infotext:not([data-semantic]), .db-switch[data-custom-validity=valid] .db-infotext:not([data-semantic]) {
467
468
  display: none;
468
469
  }
469
- .db-switch:has(input[data-custom-validity=valid]) input {
470
+ .db-switch:has(input[data-custom-validity=valid]) input, .db-switch[data-custom-validity=valid] input {
470
471
  --db-adaptive-bg-basic-transparent-semi: var(
471
472
  --db-successful-bg-basic-transparent-semi-default
472
473
  );
@@ -477,41 +478,42 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
477
478
  --db-successful-bg-basic-transparent-pressed
478
479
  );
479
480
  }
480
- .db-switch:has(input[data-custom-validity=valid]) input:not(:checked), .db-switch:has(input[data-custom-validity=valid]) input:is([type=radio]) {
481
+ .db-switch:has(input[data-custom-validity=valid]) input:not(:checked), .db-switch:has(input[data-custom-validity=valid]) input:is([type=radio]), .db-switch[data-custom-validity=valid] input:not(:checked), .db-switch[data-custom-validity=valid] input:is([type=radio]) {
481
482
  --db-check-element-border-color: var(
482
483
  --db-successful-on-bg-basic-emphasis-70-default
483
484
  );
484
485
  }
485
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked {
486
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked, .db-switch[data-custom-validity=valid] input:not([type=radio]):checked {
486
487
  background-color: var(--db-successful-bg-inverted-contrast-high-default);
487
488
  color: var(--db-successful-on-bg-inverted-default);
488
489
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
489
490
  }
490
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked::before, .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked::after {
491
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked::before, .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked::after, .db-switch[data-custom-validity=valid] input:not([type=radio]):checked::before, .db-switch[data-custom-validity=valid] input:not([type=radio]):checked::after {
491
492
  --db-icon-color: var(--db-successful-on-bg-inverted-default);
492
493
  }
493
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
494
- cursor: pointer;
494
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
495
+ cursor: var(--db-overwrite-cursor, pointer);
495
496
  background-color: var(--db-successful-bg-inverted-contrast-high-hovered);
496
497
  }
497
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
498
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
498
499
  cursor: initial;
499
500
  }
500
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
501
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
501
502
  cursor: pointer;
502
503
  }
503
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
504
- cursor: pointer;
504
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
505
+ cursor: var(--db-overwrite-cursor, pointer);
505
506
  background-color: var(--db-successful-bg-inverted-contrast-high-pressed);
506
507
  }
507
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
508
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
508
509
  cursor: initial;
509
510
  }
510
- .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
511
+ .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=valid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-custom-validity=valid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
511
512
  cursor: pointer;
512
513
  }
513
514
  .db-switch:has(input[data-custom-validity=valid]):is(label),
514
- .db-switch:has(input[data-custom-validity=valid]) label {
515
+ .db-switch:has(input[data-custom-validity=valid]) > label, .db-switch[data-custom-validity=valid]:is(label),
516
+ .db-switch[data-custom-validity=valid] > label {
515
517
  color: var(--db-successful-on-bg-basic-emphasis-80-default);
516
518
  }
517
519
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid) .db-infotext[data-semantic=critical] {
@@ -545,7 +547,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
545
547
  --db-icon-color: var(--db-successful-on-bg-inverted-default);
546
548
  }
547
549
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
548
- cursor: pointer;
550
+ cursor: var(--db-overwrite-cursor, pointer);
549
551
  background-color: var(--db-successful-bg-inverted-contrast-high-hovered);
550
552
  }
551
553
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -555,7 +557,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
555
557
  cursor: pointer;
556
558
  }
557
559
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
558
- cursor: pointer;
560
+ cursor: var(--db-overwrite-cursor, pointer);
559
561
  background-color: var(--db-successful-bg-inverted-contrast-high-pressed);
560
562
  }
561
563
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input:not([data-custom-validity]):required:user-invalid) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
@@ -565,16 +567,16 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
565
567
  cursor: pointer;
566
568
  }
567
569
  .db-switch:has(input:not([data-custom-validity]):required:user-invalid):is(label),
568
- .db-switch:has(input:not([data-custom-validity]):required:user-invalid) label {
570
+ .db-switch:has(input:not([data-custom-validity]):required:user-invalid) > label {
569
571
  color: var(--db-critical-on-bg-basic-emphasis-80-default);
570
572
  }
571
- .db-switch:has(input[data-custom-validity=invalid]) .db-infotext[data-semantic=critical] {
573
+ .db-switch:has(input[data-custom-validity=invalid]) .db-infotext[data-semantic=critical], .db-switch[data-custom-validity=invalid] .db-infotext[data-semantic=critical] {
572
574
  display: flex;
573
575
  }
574
- .db-switch:has(input[data-custom-validity=invalid]) .db-infotext:not([data-semantic]) {
576
+ .db-switch:has(input[data-custom-validity=invalid]) .db-infotext:not([data-semantic]), .db-switch[data-custom-validity=invalid] .db-infotext:not([data-semantic]) {
575
577
  display: none;
576
578
  }
577
- .db-switch:has(input[data-custom-validity=invalid]) input {
579
+ .db-switch:has(input[data-custom-validity=invalid]) input, .db-switch[data-custom-validity=invalid] input {
578
580
  --db-adaptive-bg-basic-transparent-semi: var(
579
581
  --db-critical-bg-basic-transparent-semi-default
580
582
  );
@@ -585,83 +587,84 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
585
587
  --db-critical-bg-basic-transparent-pressed
586
588
  );
587
589
  }
588
- .db-switch:has(input[data-custom-validity=invalid]) input:not(:checked), .db-switch:has(input[data-custom-validity=invalid]) input:is([type=radio]) {
590
+ .db-switch:has(input[data-custom-validity=invalid]) input:not(:checked), .db-switch:has(input[data-custom-validity=invalid]) input:is([type=radio]), .db-switch[data-custom-validity=invalid] input:not(:checked), .db-switch[data-custom-validity=invalid] input:is([type=radio]) {
589
591
  --db-check-element-border-color: var(
590
592
  --db-critical-on-bg-basic-emphasis-70-default
591
593
  );
592
594
  }
593
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked {
595
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked, .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked {
594
596
  background-color: var(--db-successful-bg-inverted-contrast-high-default);
595
597
  color: var(--db-successful-on-bg-inverted-default);
596
598
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
597
599
  }
598
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked::before, .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked::after {
600
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked::before, .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked::after, .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked::before, .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked::after {
599
601
  --db-icon-color: var(--db-successful-on-bg-inverted-default);
600
602
  }
601
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
602
- cursor: pointer;
603
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]) {
604
+ cursor: var(--db-overwrite-cursor, pointer);
603
605
  background-color: var(--db-successful-bg-inverted-contrast-high-hovered);
604
606
  }
605
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
607
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
606
608
  cursor: initial;
607
609
  }
608
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
610
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
609
611
  cursor: pointer;
610
612
  }
611
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
612
- cursor: pointer;
613
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]) {
614
+ cursor: var(--db-overwrite-cursor, pointer);
613
615
  background-color: var(--db-successful-bg-inverted-contrast-high-pressed);
614
616
  }
615
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
617
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input) {
616
618
  cursor: initial;
617
619
  }
618
- .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
620
+ .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:has(input[data-custom-validity=invalid]) input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch[data-custom-validity=invalid] input:not([type=radio]):checked:active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
619
621
  cursor: pointer;
620
622
  }
621
623
  .db-switch:has(input[data-custom-validity=invalid]):is(label),
622
- .db-switch:has(input[data-custom-validity=invalid]) label {
624
+ .db-switch:has(input[data-custom-validity=invalid]) > label, .db-switch[data-custom-validity=invalid]:is(label),
625
+ .db-switch[data-custom-validity=invalid] > label {
623
626
  color: var(--db-critical-on-bg-basic-emphasis-80-default);
624
627
  }
625
628
  .db-switch:has(input:disabled) {
626
629
  opacity: 0.4;
627
630
  }
628
631
  .db-switch:is(label),
629
- .db-switch label {
632
+ .db-switch > label {
630
633
  display: flex;
631
634
  align-items: flex-start;
632
635
  position: relative;
633
636
  gap: var(--db-spacing-fixed-xs);
634
637
  }
635
638
  .db-switch:is(label):not(:has(input:disabled)),
636
- .db-switch label:not(:has(input:disabled)) {
639
+ .db-switch > label:not(:has(input:disabled)) {
637
640
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
638
641
  }
639
642
  .db-switch:is(label):not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]),
640
- .db-switch label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]) {
641
- cursor: pointer;
643
+ .db-switch > label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]) {
644
+ cursor: var(--db-overwrite-cursor, pointer);
642
645
  }
643
646
  .db-switch:is(label):not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:is(label):not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input),
644
- .db-switch label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(textarea),
645
- .db-switch label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input) {
647
+ .db-switch > label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(textarea),
648
+ .db-switch > label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input) {
646
649
  cursor: initial;
647
650
  }
648
651
  .db-switch:is(label):not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:is(label):not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)),
649
- .db-switch label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]),
650
- .db-switch label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
652
+ .db-switch > label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]),
653
+ .db-switch > label:not(:has(input:disabled)):hover:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
651
654
  cursor: pointer;
652
655
  }
653
656
  .db-switch:is(label):not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]),
654
- .db-switch label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]) {
655
- cursor: pointer;
657
+ .db-switch > label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]) {
658
+ cursor: var(--db-overwrite-cursor, pointer);
656
659
  }
657
660
  .db-switch:is(label):not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:is(label):not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input),
658
- .db-switch label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(textarea),
659
- .db-switch label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input) {
661
+ .db-switch > label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(textarea),
662
+ .db-switch > label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input) {
660
663
  cursor: initial;
661
664
  }
662
665
  .db-switch:is(label):not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]), .db-switch:is(label):not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)),
663
- .db-switch label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]),
664
- .db-switch label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
666
+ .db-switch > label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=checkbox]),
667
+ .db-switch > label:not(:has(input:disabled)):active:not(:disabled, [aria-disabled=true]):is(input[type=radio]:not(:checked)) {
665
668
  cursor: pointer;
666
669
  }
667
670
  .db-switch input {
@@ -677,7 +680,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
677
680
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
678
681
  }
679
682
  .db-switch input:hover:not(:disabled, [aria-disabled=true]) {
680
- cursor: pointer;
683
+ cursor: var(--db-overwrite-cursor, pointer);
681
684
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
682
685
  }
683
686
  .db-switch input:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch input:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -687,7 +690,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
687
690
  cursor: pointer;
688
691
  }
689
692
  .db-switch input:active:not(:disabled, [aria-disabled=true]) {
690
- cursor: pointer;
693
+ cursor: var(--db-overwrite-cursor, pointer);
691
694
  background-color: var(--db-adaptive-bg-basic-transparent-pressed);
692
695
  }
693
696
  .db-switch input:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch input:active:not(:disabled, [aria-disabled=true]):is(input) {
@@ -706,7 +709,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
706
709
  margin-inline-end: 0;
707
710
  }
708
711
  .db-switch:active:not(:disabled, [aria-disabled=true]) {
709
- cursor: pointer;
712
+ cursor: var(--db-overwrite-cursor, pointer);
710
713
  }
711
714
  .db-switch:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch:active:not(:disabled, [aria-disabled=true]):is(input) {
712
715
  cursor: initial;
@@ -769,7 +772,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
769
772
  --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
770
773
  }
771
774
  .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]) {
772
- cursor: pointer;
775
+ cursor: var(--db-overwrite-cursor, pointer);
773
776
  background-color: var(--db-adaptive-bg-inverted-contrast-max-hovered);
774
777
  }
775
778
  .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -779,7 +782,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
779
782
  cursor: pointer;
780
783
  }
781
784
  .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]) {
782
- cursor: pointer;
785
+ cursor: var(--db-overwrite-cursor, pointer);
783
786
  background-color: var(--db-adaptive-bg-inverted-contrast-max-pressed);
784
787
  }
785
788
  .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input) {
@@ -789,7 +792,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
789
792
  cursor: pointer;
790
793
  }
791
794
  .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]) {
792
- cursor: pointer;
795
+ cursor: var(--db-overwrite-cursor, pointer);
793
796
  border-color: var(--db-adaptive-on-bg-basic-emphasis-100-hovered);
794
797
  }
795
798
  .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:hover:not(:disabled, [aria-disabled=true]):is(input) {
@@ -799,7 +802,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
799
802
  cursor: pointer;
800
803
  }
801
804
  .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]) {
802
- cursor: pointer;
805
+ cursor: var(--db-overwrite-cursor, pointer);
803
806
  border-color: var(--db-adaptive-on-bg-basic-emphasis-100-pressed);
804
807
  }
805
808
  .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(textarea), .db-switch > input:checked:active:not(:disabled, [aria-disabled=true]):is(input) {
@@ -842,7 +845,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
842
845
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
843
846
  }
844
847
  .db-switch[data-emphasis=strong] > input:hover:not(:disabled, [aria-disabled=true]) {
845
- cursor: pointer;
848
+ cursor: var(--db-overwrite-cursor, pointer);
846
849
  background-color: var(--db-adaptive-bg-inverted-contrast-low-hovered);
847
850
  border-color: var(--db-adaptive-on-bg-basic-emphasis-70-hovered);
848
851
  }
@@ -853,7 +856,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
853
856
  cursor: pointer;
854
857
  }
855
858
  .db-switch[data-emphasis=strong] > input:active:not(:disabled, [aria-disabled=true]) {
856
- cursor: pointer;
859
+ cursor: var(--db-overwrite-cursor, pointer);
857
860
  background-color: var(--db-adaptive-bg-inverted-contrast-low-pressed);
858
861
  border-color: var(--db-adaptive-on-bg-basic-emphasis-70-pressed);
859
862
  }
@@ -25,16 +25,16 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
25
25
  pointer-events: none !important;
26
26
  }
27
27
 
28
- .db-tab-item input:focus-visible::before {
28
+ .db-tab-item input:not([data-disable-focus=true]):focus-visible::before {
29
29
  outline: var(--db-border-height-2xs) solid var(--db-focus-outline-color, var(--db-informational-on-bg-basic-emphasis-80-default));
30
30
  outline-offset: var(--db-border-height-xs);
31
31
  box-shadow: 0 0 0 var(--db-border-height-xs) var(--db-focus-box-shadow-bg-color, transparent);
32
32
  }
33
- .db-tab-item input:not([type=radio], [role=switch]):focus-visible::before {
33
+ .db-tab-item input:not([data-disable-focus=true]):not([type=radio], [role=switch]):focus-visible::before {
34
34
  border-radius: var(--db-border-radius-xs);
35
35
  }
36
36
  @media screen and (prefers-reduced-motion: no-preference) {
37
- .db-tab-item input:focus-visible::before {
37
+ .db-tab-item input:not([data-disable-focus=true]):focus-visible::before {
38
38
  transition: outline var(--db-transition-duration-extra-fast), box-shadow var(--db-transition-duration-extra-fast);
39
39
  }
40
40
  }
@@ -68,7 +68,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
68
68
  /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
69
69
  }
70
70
  .db-tab-item label:hover:not(:disabled, [aria-disabled=true]) {
71
- cursor: pointer;
71
+ cursor: var(--db-overwrite-cursor, pointer);
72
72
  }
73
73
  .db-tab-item label:hover:not(:disabled, [aria-disabled=true]):has(:not(input:disabled)) {
74
74
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
@@ -83,7 +83,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
83
83
  cursor: pointer;
84
84
  }
85
85
  .db-tab-item label:hover:not(:disabled, [aria-disabled=true]) {
86
- cursor: pointer;
86
+ cursor: var(--db-overwrite-cursor, pointer);
87
87
  }
88
88
  .db-tab-item label:hover:not(:disabled, [aria-disabled=true]):has(:not(input:disabled)) {
89
89
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
@@ -103,6 +103,11 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
103
103
  transform: translate(var(--db-popover-center-x, 0%), var(--db-popover-center-y, 0%));
104
104
  }
105
105
  }
106
+ @keyframes rotate {
107
+ 100% {
108
+ transform: rotate(1turn);
109
+ }
110
+ }
106
111
  /**
107
112
  Generates 3 types of placeholders, e.g:
108
113
  - %db-component-variables-md
@@ -121,6 +126,8 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
121
126
  /* Buttons */
122
127
  /* Up */
123
128
  /* Down */
129
+ /* Left */
130
+ /* Right */
124
131
  }
125
132
  .db-tab-list > ul::-webkit-scrollbar {
126
133
  z-index: 3;
@@ -133,7 +140,7 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
133
140
  background-color: var(--db-adaptive-bg-basic-transparent-hovered);
134
141
  }
135
142
  .db-tab-list > ul:read-only::-webkit-scrollbar-track, .db-tab-list > ul:read-only::-webkit-scrollbar-button:single-button {
136
- background-color: var(--db-adaptive-bg-basic-level-1-default) !important;
143
+ background-color: var(--db-adaptive-bg-basic-level-1-default);
137
144
  }
138
145
  .db-tab-list > ul::-webkit-scrollbar-track {
139
146
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);
@@ -155,10 +162,17 @@ paddings/gaps in an application e.g. the <main> should have a responsive padding
155
162
  background-color: var(--db-adaptive-bg-basic-transparent-pressed);
156
163
  }
157
164
  .db-tab-list > ul::-webkit-scrollbar-button:single-button:vertical:decrement {
158
- background-image: var(--db-textarea-scrollbar-button-decrement);
165
+ border-start-end-radius: var(--db-border-radius-xs);
166
+ background-image: var(--db-scrollbar-button-vertical-decrement);
159
167
  }
160
168
  .db-tab-list > ul::-webkit-scrollbar-button:single-button:vertical:increment {
161
- background-image: var(--db-textarea-scrollbar-button-increment);
169
+ background-image: var(--db-scrollbar-button-vertical-increment);
170
+ }
171
+ .db-tab-list > ul::-webkit-scrollbar-button:single-button:horizontal:decrement {
172
+ background-image: var(--db-scrollbar-button-horizontal-decrement);
173
+ }
174
+ .db-tab-list > ul::-webkit-scrollbar-button:single-button:horizontal:increment {
175
+ background-image: var(--db-scrollbar-button-horizontal-increment);
162
176
  }
163
177
  .db-tab-list > ul[data-variant=floating]::-webkit-resizer {
164
178
  background-color: var(--db-adaptive-bg-basic-transparent-semi-default);