@db-ux/core-components 4.6.1 → 4.7.0-tabs-34782eb

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 (49) hide show
  1. package/CHANGELOG.md +28 -16
  2. package/build/components/accordion-item/accordion-item.css +5 -3
  3. package/build/components/badge/badge.css +13 -7
  4. package/build/components/brand/brand.css +3 -3
  5. package/build/components/button/button.css +3 -1
  6. package/build/components/card/card.css +10 -6
  7. package/build/components/checkbox/checkbox.css +25 -21
  8. package/build/components/custom-button/custom-button.css +3 -1
  9. package/build/components/custom-select/custom-select.css +19 -15
  10. package/build/components/custom-select-dropdown/custom-select-dropdown.css +11 -3
  11. package/build/components/custom-select-form-field/custom-select-form-field.css +8 -6
  12. package/build/components/custom-select-list/custom-select-list.css +4 -2
  13. package/build/components/custom-select-list-item/custom-select-list-item.css +7 -5
  14. package/build/components/drawer/drawer.css +3 -3
  15. package/build/components/header/header.css +115 -60
  16. package/build/components/icon/icon.css +4 -2
  17. package/build/components/infotext/infotext.css +15 -15
  18. package/build/components/input/input.css +12 -10
  19. package/build/components/navigation/navigation.css +28 -12
  20. package/build/components/navigation-item/navigation-item.css +39 -19
  21. package/build/components/notification/notification.css +5 -5
  22. package/build/components/notification/notification.scss +1 -1
  23. package/build/components/page/page.css +13 -11
  24. package/build/components/popover/popover.css +25 -13
  25. package/build/components/radio/radio.css +10 -8
  26. package/build/components/section/section.css +3 -3
  27. package/build/components/select/select.css +11 -11
  28. package/build/components/select/select.scss +4 -4
  29. package/build/components/stack/stack-web-component.css +3 -3
  30. package/build/components/stack/stack.css +3 -3
  31. package/build/components/switch/switch.css +30 -20
  32. package/build/components/tab-item/tab-item.css +133 -157
  33. package/build/components/tab-item/tab-item.scss +105 -103
  34. package/build/components/tab-list/tab-list.css +46 -36
  35. package/build/components/tab-list/tab-list.scss +11 -9
  36. package/build/components/tab-panel/tab-panel.css +1 -2
  37. package/build/components/tab-panel/tab-panel.scss +2 -5
  38. package/build/components/tabs/tabs.css +227 -236
  39. package/build/components/tabs/tabs.scss +214 -234
  40. package/build/components/tag/tag.css +32 -11
  41. package/build/components/textarea/textarea.css +27 -17
  42. package/build/components/tooltip/tooltip.css +19 -9
  43. package/build/styles/absolute.css +32 -18
  44. package/build/styles/bundle.css +32 -18
  45. package/build/styles/index.css +31 -17
  46. package/build/styles/relative.css +32 -18
  47. package/build/styles/rollup.css +32 -18
  48. package/build/styles/webpack.css +32 -18
  49. package/package.json +6 -6
@@ -1,4 +1,7 @@
1
1
  /* Variants for adaptive components like input, select, notification, ... */
2
+ .db-stack:not([hidden]) {
3
+ display: flex;
4
+ }
2
5
  .db-stack {
3
6
  gap: var(--db-spacing-fixed-sm);
4
7
  justify-content: flex-start;
@@ -6,9 +9,6 @@
6
9
  inline-size: 100%;
7
10
  overflow: auto;
8
11
  }
9
- .db-stack:not([hidden]) {
10
- display: flex;
11
- }
12
12
  .db-stack:is([data-direction=column], :not([data-direction])) {
13
13
  flex-direction: column;
14
14
  }
@@ -1,4 +1,7 @@
1
1
  /* Variants for adaptive components like input, select, notification, ... */
2
+ .db-stack:not([hidden]) {
3
+ display: flex;
4
+ }
2
5
  .db-stack {
3
6
  gap: var(--db-spacing-fixed-sm);
4
7
  justify-content: flex-start;
@@ -6,9 +9,6 @@
6
9
  inline-size: 100%;
7
10
  overflow: auto;
8
11
  }
9
- .db-stack:not([hidden]) {
10
- display: flex;
11
- }
12
12
  .db-stack:is([data-direction=column], :not([data-direction])) {
13
13
  flex-direction: column;
14
14
  }
@@ -101,9 +101,6 @@
101
101
 
102
102
  .db-switch {
103
103
  user-select: none;
104
- /* stylelint-disable-next-line at-rule-empty-line-before */
105
- /* stylelint-disable-next-line at-rule-empty-line-before */
106
- /* Label position (leading/trailing) */
107
104
  }
108
105
  .db-switch:not([data-hide-asterisk=true]):has(input:required):is(label)::after,
109
106
  .db-switch:not([data-hide-asterisk=true]):has(input:required) > label::after, .db-switch:not([data-hide-asterisk=true])[data-required=true]:is(label)::after,
@@ -122,16 +119,16 @@
122
119
  .db-switch:has(input:disabled) {
123
120
  opacity: var(--db-opacity-md);
124
121
  }
122
+ .db-switch:is(label):not([hidden]),
123
+ .db-switch > label:not([hidden]) {
124
+ display: flex;
125
+ }
125
126
  .db-switch:is(label),
126
127
  .db-switch > label {
127
128
  align-items: flex-start;
128
129
  position: relative;
129
130
  color: var(--db-check-element-label-color, var(--db-adaptive-on-bg-basic-emphasis-100-default));
130
131
  }
131
- .db-switch:is(label):not([hidden]),
132
- .db-switch > label:not([hidden]) {
133
- display: flex;
134
- }
135
132
  .db-switch input {
136
133
  background-color: var(--db-adaptive-bg-basic-transparent-full-default);
137
134
  place-content: center center;
@@ -196,14 +193,14 @@
196
193
  --db-successful-on-bg-inverted-default
197
194
  );
198
195
  }
199
- .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
200
- .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext {
201
- /* stylelint-disable-next-line at-rule-empty-line-before */
202
- }
203
196
  .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
204
197
  .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
205
198
  display: flex;
206
199
  }
200
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
201
+ .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext {
202
+ /* stylelint-disable-next-line at-rule-empty-line-before */
203
+ }
207
204
  .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
208
205
  .db-switch:has(input:not([data-custom-validity]):required:user-valid):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
209
206
  display: none;
@@ -230,6 +227,9 @@
230
227
  --db-successful-bg-inverted-contrast-low-pressed
231
228
  );
232
229
  }
230
+ .db-switch {
231
+ /* stylelint-disable-next-line at-rule-empty-line-before */
232
+ }
233
233
  .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) {
234
234
  --db-check-element-border-color: var(
235
235
  --db-successful-on-bg-basic-emphasis-70-default
@@ -247,16 +247,16 @@
247
247
  --db-successful-on-bg-inverted-default
248
248
  );
249
249
  }
250
- .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
251
- .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext, .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
252
- .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext {
253
- /* stylelint-disable-next-line at-rule-empty-line-before */
254
- }
255
250
  .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
256
251
  .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext[data-semantic=successful]:not([hidden]),
257
252
  .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext[data-semantic=successful]:not([hidden]) {
258
253
  display: flex;
259
254
  }
255
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
256
+ .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext, .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext,
257
+ .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext {
258
+ /* stylelint-disable-next-line at-rule-empty-line-before */
259
+ }
260
260
  .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
261
261
  .db-switch:has(input[data-custom-validity=valid]):has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]), .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > db-infotext > .db-infotext:not([data-semantic]):not([hidden]),
262
262
  .db-switch[data-custom-validity=valid]:has(.db-infotext[data-semantic=successful]) > .db-infotext:not([data-semantic]):not([hidden]) {
@@ -331,6 +331,9 @@
331
331
  --db-critical-bg-inverted-contrast-low-pressed
332
332
  );
333
333
  }
334
+ .db-switch {
335
+ /* stylelint-disable-next-line at-rule-empty-line-before */
336
+ }
334
337
  .db-switch:has(input[data-custom-validity=invalid]), .db-switch[data-custom-validity=invalid] {
335
338
  --db-check-element-border-color: var(
336
339
  --db-critical-on-bg-basic-emphasis-70-default
@@ -388,14 +391,15 @@
388
391
  inline-size: calc(var(--db-icon-font-size) * 2 + 0.125rem);
389
392
  block-size: var(--db-icon-font-size);
390
393
  box-sizing: content-box;
394
+ }
395
+ .db-switch input:not([hidden]) {
396
+ display: flex;
397
+ }
398
+ .db-switch input {
391
399
  align-items: center;
392
400
  /* stylelint-disable-next-line db-ux/use-spacings */
393
401
  gap: 0.125rem;
394
402
  border-radius: var(--db-border-radius-full);
395
- /* positioned at the end of the track: track length - 100% (thumb width) */
396
- }
397
- .db-switch input:not([hidden]) {
398
- display: flex;
399
403
  }
400
404
  .db-switch input:not([data-show-icon-trailing=false])::after {
401
405
  --db-icon-trailing: "cross";
@@ -435,6 +439,9 @@
435
439
  content: "•"/"";
436
440
  }
437
441
  }
442
+ .db-switch input {
443
+ /* positioned at the end of the track: track length - 100% (thumb width) */
444
+ }
438
445
  .db-switch input:checked {
439
446
  --thumb-offset-x: calc(100% + 0.125rem);
440
447
  --db-icon-color: var(--db-adaptive-on-bg-inverted-default);
@@ -500,6 +507,9 @@
500
507
  transform: translateX(calc(-100% - 0.125rem));
501
508
  transform-origin: center right;
502
509
  }
510
+ .db-switch {
511
+ /* Label position (leading/trailing) */
512
+ }
503
513
  .db-switch:not([data-variant=leading]) > label {
504
514
  flex-direction: row;
505
515
  }
@@ -1,193 +1,169 @@
1
1
  /* Variants for adaptive components like input, select, notification, ... */
2
- .db-visually-hidden,
3
- [data-visually-hidden=true] {
4
- clip: rect(0, 0, 0, 0) !important;
5
- overflow: hidden !important;
6
- white-space: nowrap !important;
7
- font-size: 0 !important;
8
- all: initial;
9
- inset-block-start: 0 !important;
10
- block-size: 1px !important;
11
- position: absolute !important;
12
- inline-size: 1px !important;
13
- border-width: 0 !important;
14
- border-style: initial !important;
15
- border-color: initial !important;
16
- border-image: initial !important;
17
- padding: 0 !important;
18
- pointer-events: none !important;
2
+ .db-tab-item .db-tab-label[data-icon]:not([data-show-icon=false])::before {
3
+ color: var(--db-icon-color, inherit);
4
+ display: inline-block;
5
+ /*** icon - placeholder ***/
6
+ font-family: var(--db-icon-font-family, var(--db-icon-default-font-family, "db-ux-default", "icon-font-fallback")) !important;
7
+ font-size: var(--db-icon-font-size, 1.5rem);
8
+ -webkit-font-smoothing: antialiased;
9
+ -moz-osx-font-smoothing: grayscale;
10
+ font-style: normal;
11
+ font-variant: normal;
12
+ font-weight: var(--db-icon-font-weight, normal);
13
+ line-height: 1;
14
+ /* stylelint-disable-next-line declaration-property-value-no-unknown */
15
+ speak: none;
16
+ /* stylelint-disable-next-line declaration-property-value-no-unknown */
17
+ speak: never;
18
+ text-transform: none;
19
+ overflow: clip;
20
+ vertical-align: var(--db-icon-vertical-align, middle);
21
+ /* stylelint-disable-next-line db-ux/use-sizing */
22
+ block-size: var(--db-icon-font-size, 1.5rem);
23
+ aspect-ratio: 1;
24
+ flex-shrink: 0;
25
+ content: var(--db-icon, attr(data-icon));
26
+ }
27
+ @supports (content: ""/"") {
28
+ .db-tab-item .db-tab-label[data-icon]:not([data-show-icon=false])::before {
29
+ content: var(--db-icon, attr(data-icon))/"";
30
+ }
31
+ }
32
+ @media aural {
33
+ .db-tab-item .db-tab-label[data-icon]:not([data-show-icon=false])::before {
34
+ content: none;
35
+ }
36
+ }
37
+ @media speech {
38
+ .db-tab-item .db-tab-label[data-icon]:not([data-show-icon=false])::before {
39
+ content: none;
40
+ }
41
+ }
42
+
43
+ [data-density=expressive] .db-tab-item {
44
+ font: var(--db-type-body-lg);
45
+ /* Those variables are only for components to calculate heights and change icons */
46
+ --db-icon-font-weight: var(--db-base-body-icon-weight-lg);
47
+ --db-icon-font-size: var(--db-base-body-icon-font-size-lg);
19
48
  }
20
49
 
21
- .db-tab-item input:not([data-disable-focus=true]):focus-visible::before {
22
- outline: var(--db-border-width-2xs) solid var(--db-focus-outline-color, var(--db-informational-on-bg-basic-emphasis-70-default));
23
- outline-offset: var(--db-border-width-xs);
24
- box-shadow: 0 0 0 var(--db-border-width-xs) var(--db-focus-box-shadow-bg-color, transparent);
50
+ [data-density=functional] .db-tab-item {
51
+ font: var(--db-type-body-sm);
52
+ /* Those variables are only for components to calculate heights and change icons */
53
+ --db-icon-font-weight: var(--db-base-body-icon-weight-sm);
54
+ --db-icon-font-size: var(--db-base-body-icon-font-size-sm);
55
+ }
56
+
57
+ .db-tab-item::after {
58
+ content: "";
59
+ position: absolute;
60
+ border-radius: var(--db-border-radius-xs);
25
61
  }
26
62
  @media (prefers-reduced-motion: no-preference) {
27
- .db-tab-item input:not([data-disable-focus=true]):focus-visible::before {
28
- transition: outline var(--db-transition-duration-extra-fast), box-shadow var(--db-transition-duration-extra-fast);
63
+ .db-tab-item::after {
64
+ transition: height var(--db-transition-duration-fast) var(--db-transition-timing-emotional), width var(--db-transition-duration-fast) var(--db-transition-timing-emotional);
29
65
  }
30
66
  }
31
- .db-tab-item input:not([data-disable-focus=true]):not([type=radio], [role=switch]):focus-visible::before {
32
- border-radius: var(--db-border-radius-xs);
67
+
68
+ db-tab-item,
69
+ dbtabitem {
70
+ display: contents;
71
+ vertical-align: top;
33
72
  }
34
73
 
35
74
  .db-tab-item {
36
75
  position: relative;
37
- list-style-type: "";
38
- border-radius: var(--db-border-radius-sm);
39
- }
40
- .db-tab-item:not([hidden]) {
41
- display: inline-flex;
42
- }
43
- .db-tab-item:has(input:disabled) {
44
- opacity: var(--db-opacity-md);
45
- }
46
- .db-tab-item label {
47
76
  background-color: var(--db-adaptive-bg-basic-transparent-full-default);
48
77
  padding: var(--db-spacing-fixed-xs);
78
+ overflow: visible;
49
79
  align-items: center;
80
+ justify-content: center;
50
81
  white-space: nowrap;
51
82
  border: 0;
52
83
  border-radius: var(--db-border-radius-sm);
53
- overflow: hidden;
54
- text-overflow: ellipsis;
55
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
56
- /* stylelint-disable-next-line a11y/selector-pseudo-class-focus */
57
- }
58
- .db-tab-item label:not([hidden]) {
59
- display: inline-block;
84
+ cursor: pointer;
85
+ font: inherit;
86
+ color: inherit;
87
+ flex-shrink: 0;
88
+ z-index: 2;
89
+ max-inline-size: var(--db-sizing-2xl);
90
+ }
91
+ @media screen and (forced-colors: active) {
92
+ .db-tab-item {
93
+ border: var(--db-border-width-xs) solid transparent;
94
+ }
60
95
  }
61
- .db-tab-item label:hover:not(:disabled,
62
- [aria-disabled=true],
63
- [tabindex="-1"],
64
- :has(:disabled)) {
65
- cursor: var(--db-overwrite-cursor, pointer);
96
+ @media screen and (prefers-reduced-motion: no-preference) {
97
+ .db-tab-item {
98
+ transition: background-color var(--db-transition-duration-fast);
99
+ }
66
100
  }
67
- .db-tab-item label:hover:not(:disabled,
68
- [aria-disabled=true],
69
- [tabindex="-1"],
70
- :has(:disabled)):has(:not(input:disabled)) {
71
- background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
101
+ .db-tab-item .db-tab-label {
102
+ max-inline-size: 100%;
72
103
  }
73
- .db-tab-item label:hover:not(:disabled,
74
- [aria-disabled=true],
75
- [tabindex="-1"],
76
- :has(:disabled)):has(input:disabled) {
77
- cursor: initial;
104
+ .db-tab-item .db-tab-label:not([hidden]) {
105
+ display: block;
78
106
  }
79
- .db-tab-item label:hover:not(:disabled,
80
- [aria-disabled=true],
81
- [tabindex="-1"],
82
- :has(:disabled)):is(textarea), .db-tab-item label:hover:not(:disabled,
83
- [aria-disabled=true],
84
- [tabindex="-1"],
85
- :has(:disabled)):is(input) {
86
- cursor: initial;
87
- }
88
- .db-tab-item label:hover:not(:disabled,
89
- [aria-disabled=true],
90
- [tabindex="-1"],
91
- :has(:disabled)):is(input[type=checkbox]), .db-tab-item label:hover:not(:disabled,
92
- [aria-disabled=true],
93
- [tabindex="-1"],
94
- :has(:disabled)):is(input[type=radio]:not(:checked)) {
95
- cursor: pointer;
107
+ .db-tab-item .db-tab-label:not([data-icon-trailing])::after {
108
+ content: attr(data-label);
109
+ font-weight: 700;
110
+ display: block;
111
+ block-size: 0;
112
+ font-size: 0;
113
+ line-height: 0;
114
+ padding: 0;
115
+ margin: 0;
116
+ overflow: hidden;
117
+ visibility: hidden;
96
118
  }
97
- .db-tab-item label:hover:not(:disabled,
98
- [aria-disabled=true],
99
- [tabindex="-1"],
100
- :has(:disabled)) {
101
- cursor: var(--db-overwrite-cursor, pointer);
119
+ .db-tab-item .db-tab-label[data-icon]:not([data-show-icon=false])::before {
120
+ margin-inline-end: var(--db-spacing-fixed-xs);
121
+ vertical-align: middle;
102
122
  }
103
- .db-tab-item label:hover:not(:disabled,
104
- [aria-disabled=true],
105
- [tabindex="-1"],
106
- :has(:disabled)):has(:not(input:disabled)) {
107
- background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
123
+ .db-tab-item[data-no-text=true] .db-tab-label[data-icon]::before {
124
+ margin-inline-end: 0;
108
125
  }
109
- .db-tab-item label:hover:not(:disabled,
110
- [aria-disabled=true],
111
- [tabindex="-1"],
112
- :has(:disabled)):has(input:disabled) {
113
- cursor: initial;
126
+ .db-tab-item[data-no-text=true] .db-tab-label::after {
127
+ content: none;
114
128
  }
115
- .db-tab-item label:hover:not(:disabled,
116
- [aria-disabled=true],
117
- [tabindex="-1"],
118
- :has(:disabled)):is(textarea), .db-tab-item label:hover:not(:disabled,
119
- [aria-disabled=true],
120
- [tabindex="-1"],
121
- :has(:disabled)):is(input) {
122
- cursor: initial;
129
+ [data-orientation=vertical] .db-tab-item .db-tab-label {
130
+ overflow: hidden;
131
+ text-overflow: ellipsis;
132
+ white-space: nowrap;
123
133
  }
124
- .db-tab-item label:hover:not(:disabled,
125
- [aria-disabled=true],
126
- [tabindex="-1"],
127
- :has(:disabled)):is(input[type=checkbox]), .db-tab-item label:hover:not(:disabled,
128
- [aria-disabled=true],
129
- [tabindex="-1"],
130
- :has(:disabled)):is(input[type=radio]:not(:checked)) {
131
- cursor: pointer;
134
+ .db-tab-item:not([hidden]) {
135
+ display: flex;
132
136
  }
133
- .db-tab-item label:has(input:checked) {
134
- font-weight: 700;
137
+ [data-density=functional] .db-tab-item {
138
+ padding: var(--db-spacing-fixed-2xs);
135
139
  }
136
- .db-tab-item label[data-icon] {
137
- padding-inline-start: calc(var(--db-spacing-fixed-xs) + var(--db-spacing-fixed-sm) + var(--db-icon-font-size));
140
+ [data-density=expressive] .db-tab-item {
141
+ padding: var(--db-spacing-fixed-sm);
138
142
  }
139
- .db-tab-item label[data-icon]::before {
140
- position: absolute;
141
- transform: translateY(-50%);
142
- inset-block-start: 50%;
143
- inset-inline-start: calc(0% + var(--db-spacing-fixed-xs));
143
+ .db-tab-item::after {
144
+ inline-size: 0;
145
+ block-size: var(--db-border-width-xs);
144
146
  }
145
- .db-tab-item label[data-icon-trailing] {
146
- padding-inline-end: calc(var(--db-spacing-fixed-xs) + var(--db-spacing-fixed-sm) + var(--db-icon-font-size));
147
+ @media screen and (prefers-reduced-motion: no-preference) {
148
+ .db-tab-item::after {
149
+ transition: block-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional), inline-size var(--db-transition-duration-fast) var(--db-transition-timing-emotional) !important;
150
+ }
147
151
  }
148
- .db-tab-item label[data-icon-trailing]::after {
149
- position: absolute;
150
- transform: translateY(-50%);
151
- inset-block-start: 50%;
152
- inset-inline-end: calc(0% + var(--db-spacing-fixed-xs));
152
+ [data-orientation=vertical] .db-tab-item::after {
153
+ inline-size: var(--db-border-width-xs);
154
+ block-size: 0;
153
155
  }
154
- .db-tab-item label:is([data-no-text], [data-no-text=true]) {
155
- font-size: 0 !important;
156
- /* stylelint-disable-next-line at-rule-empty-line-before */
157
- padding: 0;
158
- inline-size: calc(calc(var(--db-spacing-fixed-xs) + var(--db-spacing-fixed-sm) + var(--db-icon-font-size)) - var(--db-spacing-fixed-2xs));
159
- block-size: calc(var(--db-icon-font-size) + var(--db-spacing-fixed-xs));
156
+ [data-orientation=vertical] .db-tab-item {
157
+ max-inline-size: 100%;
158
+ flex-shrink: 1;
160
159
  }
161
- .db-tab-item label:is([data-no-text], [data-no-text=true])::before {
162
- --db-icon-margin-end: 0;
160
+ .db-tab-item[aria-selected=true], .db-tab-item[data-active=true] {
161
+ font-weight: 700;
163
162
  }
164
- .db-tab-item label:is([data-no-text], [data-no-text=true])::before {
165
- margin-inline-end: 0;
163
+ .db-tab-item:disabled {
164
+ opacity: var(--db-opacity-md);
165
+ cursor: initial;
166
166
  }
167
- .db-tab-item input {
168
- position: absolute;
169
- appearance: none;
170
- inline-size: 100%;
171
- margin-inline-end: initial;
172
- inset: 0;
173
- background-color: var(--db-adaptive-bg-basic-transparent-full-default);
174
- border-radius: var(--db-border-radius-sm);
175
- z-index: -1;
176
- /*
177
- focus must be set on input:
178
- - parent label tag may use before AND after for displaying icons
179
- - placed on li.db-tab-item focus would get cut off partially by by overflow hidden (orientation vertical)
180
- */
181
- }
182
- .db-tab-item input:focus-visible:is(input[type=radio]) {
183
- outline: none;
184
- box-shadow: none;
185
- }
186
- .db-tab-item input:focus-visible::before {
187
- content: "";
188
- position: absolute;
189
- inset: 0;
190
- border-radius: var(--db-border-radius-sm);
191
- z-index: 10;
192
- pointer-events: none;
167
+ .db-tab-item:not(:disabled):hover, .db-tab-item:not(:disabled):focus-visible {
168
+ background-color: var(--db-adaptive-bg-basic-transparent-full-hovered);
193
169
  }