@sbb-esta/lyne-elements 2.5.1 → 2.6.0

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 (226) hide show
  1. package/autocomplete/autocomplete-base-element.d.ts +19 -20
  2. package/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  3. package/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  4. package/autocomplete-grid/autocomplete-grid-button.js +7 -7
  5. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +2 -2
  6. package/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  7. package/autocomplete.js +143 -134
  8. package/chip/chip/chip.d.ts +32 -0
  9. package/chip/chip/chip.d.ts.map +1 -0
  10. package/chip/chip-group/chip-group.d.ts +100 -0
  11. package/chip/chip-group/chip-group.d.ts.map +1 -0
  12. package/chip/chip-group.d.ts +2 -0
  13. package/chip/chip-group.d.ts.map +1 -0
  14. package/chip/chip-group.js +225 -0
  15. package/chip/chip.d.ts +2 -0
  16. package/chip/chip.d.ts.map +1 -0
  17. package/chip/chip.js +85 -0
  18. package/chip.d.ts +3 -0
  19. package/chip.d.ts.map +1 -0
  20. package/chip.js +2 -0
  21. package/clock/clock.d.ts.map +1 -1
  22. package/clock.js +1 -1
  23. package/core/controllers/id-observer-controller.d.ts +21 -0
  24. package/core/controllers/id-observer-controller.d.ts.map +1 -0
  25. package/core/controllers/media-matchers-controller.d.ts.map +1 -1
  26. package/core/controllers.d.ts +2 -1
  27. package/core/controllers.d.ts.map +1 -1
  28. package/core/controllers.js +135 -80
  29. package/core/datetime/native-date-adapter.d.ts.map +1 -1
  30. package/core/datetime.js +8 -3
  31. package/core/dom/find-referenced-element.d.ts +1 -0
  32. package/core/dom/find-referenced-element.d.ts.map +1 -1
  33. package/core/dom/input-element.d.ts +3 -1
  34. package/core/dom/input-element.d.ts.map +1 -1
  35. package/core/i18n/i18n.d.ts +3 -0
  36. package/core/i18n/i18n.d.ts.map +1 -1
  37. package/core/i18n.js +135 -117
  38. package/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  39. package/core/mixins.js +64 -59
  40. package/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  41. package/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  42. package/core/overlay/position.d.ts +1 -1
  43. package/core/overlay/position.d.ts.map +1 -1
  44. package/core/styles/core.scss +89 -24
  45. package/core/styles/image.scss +1 -1
  46. package/core/styles/mixins/table.scss +63 -26
  47. package/core/styles/table.scss +16 -0
  48. package/core/testing/scroll.d.ts +1 -0
  49. package/core/testing/scroll.d.ts.map +1 -1
  50. package/core/testing/wait-for-image-ready.d.ts.map +1 -1
  51. package/core/testing.js +8 -5
  52. package/core.css +90 -34
  53. package/custom-elements.json +1588 -650
  54. package/datepicker/datepicker/datepicker.d.ts +4 -4
  55. package/datepicker/datepicker/datepicker.d.ts.map +1 -1
  56. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -3
  57. package/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  58. package/datepicker/datepicker-toggle.js +30 -34
  59. package/datepicker/datepicker.js +103 -105
  60. package/development/autocomplete/autocomplete-base-element.d.ts +19 -20
  61. package/development/autocomplete/autocomplete-base-element.d.ts.map +1 -1
  62. package/development/autocomplete-grid/autocomplete-grid-button/autocomplete-grid-button.d.ts.map +1 -1
  63. package/development/autocomplete-grid/autocomplete-grid-button.js +3 -3
  64. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts +2 -2
  65. package/development/autocomplete-grid/autocomplete-grid-optgroup/autocomplete-grid-optgroup.d.ts.map +1 -1
  66. package/development/autocomplete-grid/autocomplete-grid-optgroup.js +1 -1
  67. package/development/autocomplete.js +103 -79
  68. package/development/chip/chip/chip.d.ts +32 -0
  69. package/development/chip/chip/chip.d.ts.map +1 -0
  70. package/development/chip/chip-group/chip-group.d.ts +100 -0
  71. package/development/chip/chip-group/chip-group.d.ts.map +1 -0
  72. package/development/chip/chip-group.d.ts +2 -0
  73. package/development/chip/chip-group.d.ts.map +1 -0
  74. package/development/chip/chip-group.js +349 -0
  75. package/development/chip/chip.d.ts +2 -0
  76. package/development/chip/chip.d.ts.map +1 -0
  77. package/development/chip/chip.js +212 -0
  78. package/development/chip.d.ts +3 -0
  79. package/development/chip.d.ts.map +1 -0
  80. package/development/chip.js +3 -0
  81. package/development/clock/clock.d.ts.map +1 -1
  82. package/development/clock.js +5 -2
  83. package/development/core/controllers/id-observer-controller.d.ts +21 -0
  84. package/development/core/controllers/id-observer-controller.d.ts.map +1 -0
  85. package/development/core/controllers/media-matchers-controller.d.ts.map +1 -1
  86. package/development/core/controllers.d.ts +2 -1
  87. package/development/core/controllers.d.ts.map +1 -1
  88. package/development/core/controllers.js +116 -44
  89. package/development/core/datetime/native-date-adapter.d.ts.map +1 -1
  90. package/development/core/datetime.js +6 -2
  91. package/development/core/dom/find-referenced-element.d.ts +1 -0
  92. package/development/core/dom/find-referenced-element.d.ts.map +1 -1
  93. package/development/core/dom/input-element.d.ts +3 -1
  94. package/development/core/dom/input-element.d.ts.map +1 -1
  95. package/development/core/dom.js +1 -1
  96. package/development/core/i18n/i18n.d.ts +3 -0
  97. package/development/core/i18n/i18n.d.ts.map +1 -1
  98. package/development/core/i18n.js +23 -2
  99. package/development/core/mixins/form-associated-input-mixin.d.ts.map +1 -1
  100. package/development/core/mixins.js +12 -3
  101. package/development/core/overlay/overlay-trigger-attributes.d.ts +1 -1
  102. package/development/core/overlay/overlay-trigger-attributes.d.ts.map +1 -1
  103. package/development/core/overlay/position.d.ts +1 -1
  104. package/development/core/overlay/position.d.ts.map +1 -1
  105. package/development/core/overlay.js +1 -1
  106. package/development/core/testing/scroll.d.ts +1 -0
  107. package/development/core/testing/scroll.d.ts.map +1 -1
  108. package/development/core/testing/wait-for-image-ready.d.ts.map +1 -1
  109. package/development/core/testing.js +6 -2
  110. package/development/datepicker/datepicker/datepicker.d.ts +4 -4
  111. package/development/datepicker/datepicker/datepicker.d.ts.map +1 -1
  112. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts +0 -3
  113. package/development/datepicker/datepicker-toggle/datepicker-toggle.d.ts.map +1 -1
  114. package/development/datepicker/datepicker-toggle.js +4 -12
  115. package/development/datepicker/datepicker.js +46 -43
  116. package/development/dialog/dialog-title/dialog-title.d.ts +0 -1
  117. package/development/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  118. package/development/dialog/dialog-title.js +2 -5
  119. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -2
  120. package/development/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  121. package/development/expansion-panel/expansion-panel.js +2 -7
  122. package/development/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  123. package/development/flip-card/flip-card-details.js +3 -3
  124. package/development/form-field/form-field/form-field.d.ts.map +1 -1
  125. package/development/form-field/form-field.js +12 -145
  126. package/development/header/header/header.d.ts +6 -7
  127. package/development/header/header/header.d.ts.map +1 -1
  128. package/development/header/header.js +45 -34
  129. package/development/menu/menu/menu.d.ts +7 -8
  130. package/development/menu/menu/menu.d.ts.map +1 -1
  131. package/development/menu/menu.js +42 -41
  132. package/development/navigation/navigation/navigation.d.ts +7 -8
  133. package/development/navigation/navigation/navigation.d.ts.map +1 -1
  134. package/development/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  135. package/development/navigation/navigation-marker.js +3 -3
  136. package/development/navigation/navigation-section/navigation-section.d.ts +8 -9
  137. package/development/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  138. package/development/navigation/navigation-section.js +50 -47
  139. package/development/navigation/navigation.js +42 -40
  140. package/development/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  141. package/development/option/optgroup/optgroup.d.ts +2 -2
  142. package/development/option/optgroup/optgroup.d.ts.map +1 -1
  143. package/development/option/optgroup.js +3 -3
  144. package/development/option/option/option-base-element.d.ts.map +1 -1
  145. package/development/option/option.js +3 -3
  146. package/development/paginator/paginator.js +12 -1
  147. package/development/popover/popover/popover.d.ts +8 -7
  148. package/development/popover/popover/popover.d.ts.map +1 -1
  149. package/development/popover/popover.js +28 -35
  150. package/development/select/select.d.ts +1 -1
  151. package/development/select/select.d.ts.map +1 -1
  152. package/development/select.js +15 -15
  153. package/development/selection-expansion-panel/selection-expansion-panel.d.ts +0 -2
  154. package/development/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  155. package/development/selection-expansion-panel.js +2 -7
  156. package/development/sidebar/sidebar/sidebar.d.ts.map +1 -1
  157. package/development/sidebar/sidebar.js +3 -3
  158. package/development/stepper/step/step.d.ts +15 -1
  159. package/development/stepper/step/step.d.ts.map +1 -1
  160. package/development/stepper/step-label.js +2 -2
  161. package/development/stepper/step.js +23 -3
  162. package/development/stepper/stepper/stepper.d.ts +1 -0
  163. package/development/stepper/stepper/stepper.d.ts.map +1 -1
  164. package/development/stepper/stepper.js +5 -1
  165. package/development/table/table-wrapper.js +2 -1
  166. package/development/time-input/time-input.d.ts +6 -8
  167. package/development/time-input/time-input.d.ts.map +1 -1
  168. package/development/time-input.js +42 -44
  169. package/dialog/dialog-title/dialog-title.d.ts +0 -1
  170. package/dialog/dialog-title/dialog-title.d.ts.map +1 -1
  171. package/dialog/dialog-title.js +18 -21
  172. package/expansion-panel/expansion-panel/expansion-panel.d.ts +0 -2
  173. package/expansion-panel/expansion-panel/expansion-panel.d.ts.map +1 -1
  174. package/expansion-panel/expansion-panel.js +53 -56
  175. package/flip-card/flip-card-details/flip-card-details.d.ts.map +1 -1
  176. package/flip-card/flip-card-details.js +8 -8
  177. package/form-field/form-field/form-field.d.ts.map +1 -1
  178. package/form-field/form-field.js +102 -97
  179. package/header/header/header.d.ts +6 -7
  180. package/header/header/header.d.ts.map +1 -1
  181. package/header/header.js +72 -70
  182. package/index.d.ts +4 -0
  183. package/index.js +4 -0
  184. package/menu/menu/menu.d.ts +7 -8
  185. package/menu/menu/menu.d.ts.map +1 -1
  186. package/menu/menu.js +73 -73
  187. package/navigation/navigation/navigation.d.ts +7 -8
  188. package/navigation/navigation/navigation.d.ts.map +1 -1
  189. package/navigation/navigation-marker/navigation-marker.d.ts.map +1 -1
  190. package/navigation/navigation-marker.js +4 -4
  191. package/navigation/navigation-section/navigation-section.d.ts +8 -9
  192. package/navigation/navigation-section/navigation-section.d.ts.map +1 -1
  193. package/navigation/navigation-section.js +75 -77
  194. package/navigation/navigation.js +70 -70
  195. package/option/optgroup/optgroup-base-element.d.ts.map +1 -1
  196. package/option/optgroup/optgroup.d.ts +2 -2
  197. package/option/optgroup/optgroup.d.ts.map +1 -1
  198. package/option/optgroup.js +13 -13
  199. package/option/option/option-base-element.d.ts.map +1 -1
  200. package/option/option.js +2 -2
  201. package/package.json +16 -1
  202. package/paginator/paginator.js +44 -44
  203. package/popover/popover/popover.d.ts +8 -7
  204. package/popover/popover/popover.d.ts.map +1 -1
  205. package/popover/popover.js +73 -73
  206. package/select/select.d.ts +1 -1
  207. package/select/select.d.ts.map +1 -1
  208. package/select.js +68 -67
  209. package/selection-expansion-panel/selection-expansion-panel.d.ts +0 -2
  210. package/selection-expansion-panel/selection-expansion-panel.d.ts.map +1 -1
  211. package/selection-expansion-panel.js +10 -13
  212. package/sidebar/sidebar/sidebar.d.ts.map +1 -1
  213. package/sidebar/sidebar.js +2 -2
  214. package/standard-theme.css +166 -79
  215. package/stepper/step/step.d.ts +15 -1
  216. package/stepper/step/step.d.ts.map +1 -1
  217. package/stepper/step-label.js +1 -1
  218. package/stepper/step.js +36 -22
  219. package/stepper/stepper/stepper.d.ts +1 -0
  220. package/stepper/stepper/stepper.d.ts.map +1 -1
  221. package/stepper/stepper.js +19 -16
  222. package/table/table-wrapper.js +4 -4
  223. package/table.css +75 -44
  224. package/time-input/time-input.d.ts +6 -8
  225. package/time-input/time-input.d.ts.map +1 -1
  226. package/time-input.js +66 -73
@@ -18,9 +18,6 @@
18
18
  --sbb-table-caption-color: var(--sbb-color-granite);
19
19
  --sbb-table-caption-margin-block-start: var(--sbb-spacing-fixed-4x);
20
20
 
21
- background-color: var(--sbb-table-background-color);
22
- border: var(--sbb-table-border);
23
- border-radius: var(--sbb-table-border-radius);
24
21
  border-spacing: 0;
25
22
  caption-side: bottom;
26
23
  color: var(--sbb-table-color);
@@ -28,8 +25,32 @@
28
25
  }
29
26
 
30
27
  thead {
31
- & > tr > th {
32
- @include table-header-cell;
28
+ & > tr {
29
+ @include table-header-row;
30
+
31
+ &:first-of-type {
32
+ & > th {
33
+ border-block-start: var(--sbb-table-border);
34
+ }
35
+
36
+ // Border radius on top-left corner
37
+ & > th:first-of-type {
38
+ border-start-start-radius: var(--sbb-table-border-radius);
39
+ }
40
+
41
+ // Border radius on top-right corner
42
+ & > th:last-of-type {
43
+ border-start-end-radius: var(--sbb-table-border-radius);
44
+ }
45
+ }
46
+
47
+ & > th {
48
+ @include table-header-cell;
49
+
50
+ &:first-of-type {
51
+ border-inline-start: var(--sbb-table-border);
52
+ }
53
+ }
33
54
  }
34
55
  }
35
56
 
@@ -39,6 +60,22 @@
39
60
 
40
61
  & > td {
41
62
  @include table-data-cell;
63
+
64
+ &:first-of-type {
65
+ border-inline-start: var(--sbb-table-border);
66
+ }
67
+ }
68
+
69
+ &:last-of-type {
70
+ // Border radius on bottom-left corner
71
+ & > td:first-of-type {
72
+ border-end-start-radius: var(--sbb-table-border-radius);
73
+ }
74
+
75
+ // Border radius on bottom-right corner
76
+ & > td:last-of-type {
77
+ border-end-end-radius: var(--sbb-table-border-radius);
78
+ }
42
79
  }
43
80
  }
44
81
  }
@@ -48,40 +85,36 @@
48
85
  }
49
86
  }
50
87
 
88
+ @mixin table-header-row {
89
+ // If there is more than one header row, only the last one has the bottom border
90
+ &:last-of-type > th {
91
+ border-bottom: var(--sbb-table-border);
92
+ }
93
+ }
94
+
51
95
  @mixin table-header-cell {
52
96
  @include typo.text-xs--bold;
53
97
 
54
- border-bottom: var(--sbb-table-border);
55
- border-right: var(--sbb-table-border);
98
+ background-color: var(--sbb-table-background-color);
99
+ border-inline-end: var(--sbb-table-border);
56
100
  padding-block: var(--sbb-table-header-padding-block);
57
101
  padding-inline: var(--sbb-table-header-padding-inline);
58
102
  text-align: left;
59
-
60
- // To avoid double border
61
- &:last-of-type {
62
- border-right: none;
63
- }
64
103
  }
65
104
 
105
+ // @deprecated No longer used internally.
66
106
  @mixin table-data-row {
67
- // To avoid double borders
68
- &:first-of-type td {
69
- border-top: none;
70
- }
107
+ // empty
71
108
  }
72
109
 
73
110
  @mixin table-data-cell {
74
111
  @include typo.text-s--regular;
75
112
 
76
- border-top: var(--sbb-table-border);
77
- border-right: var(--sbb-table-border);
113
+ background-color: var(--sbb-table-background-color);
114
+ border-block-end: var(--sbb-table-border);
115
+ border-inline-end: var(--sbb-table-border);
78
116
  padding-block: var(--sbb-table-cell-padding-block);
79
117
  padding-inline: var(--sbb-table-cell-padding-inline);
80
-
81
- // To avoid double border
82
- &:last-of-type {
83
- border-right: none;
84
- }
85
118
  }
86
119
 
87
120
  @mixin table-caption {
@@ -93,15 +126,19 @@
93
126
  text-align: left;
94
127
  }
95
128
 
129
+ @mixin table-filter {
130
+ padding-block-start: 0 !important;
131
+ }
132
+
96
133
  @mixin table--striped {
97
- tbody tr:nth-child(odd) {
134
+ tbody tr:nth-child(odd) :is(th, td) {
98
135
  @include table-row--striped;
99
136
  }
100
137
  }
101
138
 
102
139
  @mixin table--unstriped {
103
- tbody tr:nth-child(odd) {
104
- background-color: unset;
140
+ tbody tr:nth-child(odd) :is(th, td) {
141
+ background-color: var(--sbb-table-background-color);
105
142
  }
106
143
  }
107
144
 
@@ -40,6 +40,10 @@ sbb-table-wrapper[negative] .sbb-table,
40
40
  }
41
41
  }
42
42
 
43
+ .sbb-table-header-row {
44
+ @include table.table-header-row;
45
+ }
46
+
43
47
  .sbb-table-header-cell {
44
48
  @include table.table-header-cell;
45
49
  }
@@ -60,6 +64,18 @@ sbb-table-wrapper[negative] .sbb-table,
60
64
  @include table.table-caption;
61
65
  }
62
66
 
67
+ .sbb-table-filter {
68
+ @include table.table-filter;
69
+ }
70
+
71
+ .sbb-table-sticky {
72
+ // Note that the table can either set this class or an inline style to make something sticky.
73
+ // We set the style as `!important` so that we get an identical specificity in both cases
74
+ // and to avoid cases where user styles have a higher specificity.
75
+ position: sticky !important;
76
+ }
77
+
78
+ // TODO: In future, move to the 'sbb-lean' theme
63
79
  html.sbb-lean .sbb-table:not(.sbb-table-xs, .sbb-table-m) {
64
80
  @include table.table--s;
65
81
  }
@@ -1,6 +1,7 @@
1
1
  /**
2
2
  * Can be used in tests where scroll events are not triggered by default.
3
3
  * @param options ScrollToOptions
4
+ * @deprecated Will be removed with next major version
4
5
  */
5
6
  export declare function mockScrollTo(options: ScrollToOptions): void;
6
7
  //# sourceMappingURL=scroll.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/testing/scroll.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAM3D"}
1
+ {"version":3,"file":"scroll.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/testing/scroll.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAM3D"}
@@ -1 +1 @@
1
- {"version":3,"file":"wait-for-image-ready.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/testing/wait-for-image-ready.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAC3C,qBAAqB,SAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,CAkCf"}
1
+ {"version":3,"file":"wait-for-image-ready.d.ts","sourceRoot":"","sources":["../../../../src/elements/core/testing/wait-for-image-ready.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGtD,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,gBAAgB,GAAG,eAAe,EAC3C,qBAAqB,SAAW,GAC/B,OAAO,CAAC,IAAI,CAAC,CAwCf"}
package/core/testing.js CHANGED
@@ -1,4 +1,4 @@
1
- import { isSafari as m } from "./dom.js";
1
+ import { isSafari as a } from "./dom.js";
2
2
  class p {
3
3
  get count() {
4
4
  return this._count;
@@ -28,8 +28,8 @@ class p {
28
28
  {
29
29
  let r, s;
30
30
  const n = {
31
- promise: new Promise((a, l) => {
32
- r = a, s = l;
31
+ promise: new Promise((l, m) => {
32
+ r = l, s = m;
33
33
  }),
34
34
  resolve: r,
35
35
  reject: s
@@ -74,11 +74,14 @@ async function _(t, e = 2 * 1e3) {
74
74
  const i = t.localName === "sbb-image" ? ((r = t.shadowRoot) == null ? void 0 : r.querySelector(".sbb-image__img")) ?? null : t;
75
75
  if (!i)
76
76
  throw new Error("img tag not found");
77
- t.complete ? await i.decode() : await new Promise((s, o) => {
77
+ t.complete ? await i.decode().then(() => {
78
+ if (a && t.localName === "sbb-image")
79
+ return new Promise((s) => setTimeout(s, 100));
80
+ }) : await new Promise((s, o) => {
78
81
  const n = setTimeout(() => o("image loading timeout"), e);
79
82
  t.addEventListener("load", () => {
80
83
  clearTimeout(n), i.decode().then(() => {
81
- m && t.localName === "sbb-image" ? setTimeout(s, 100) : s();
84
+ a && t.localName === "sbb-image" ? setTimeout(s, 100) : s();
82
85
  });
83
86
  }), t.addEventListener("error", () => {
84
87
  clearTimeout(n), o("image error");
package/core.css CHANGED
@@ -1162,21 +1162,59 @@ html {
1162
1162
  opacity: 1;
1163
1163
  }
1164
1164
 
1165
- sbb-form-field :where(input, textarea):disabled::placeholder {
1166
- color: var(--sbb-color-granite);
1167
- -webkit-text-fill-color: var(--sbb-color-granite);
1165
+ sbb-form-field :where(input, select, textarea, sbb-select, sbb-date-input) {
1166
+ --sbb-text-font-size: var(--sbb-font-size-text-m);
1167
+ font-family: var(--sbb-typo-font-family);
1168
+ font-weight: normal;
1169
+ line-height: var(--sbb-typo-line-height-body-text);
1170
+ letter-spacing: var(--sbb-typo-letter-spacing-body-text);
1171
+ font-size: var(--sbb-text-font-size);
1172
+ overflow: hidden;
1173
+ white-space: nowrap;
1174
+ text-overflow: ellipsis;
1175
+ outline: none;
1176
+ border: none;
1177
+ background-color: transparent;
1178
+ padding: 0;
1179
+ -webkit-appearance: none;
1180
+ outline: none !important;
1181
+ overflow: var(--sbb-form-field-overflow);
1182
+ width: 100%;
1183
+ box-sizing: border-box;
1184
+ color: var(--sbb-form-field-text-color);
1185
+ -webkit-text-fill-color: var(--sbb-form-field-text-color);
1186
+ opacity: 1;
1187
+ background-color: transparent;
1188
+ font-size: var(--sbb-form-field-input-text-size) !important;
1189
+ font-family: var(--sbb-typo-font-family) !important;
1190
+ line-height: var(--sbb-typo-line-height-body-text) !important;
1168
1191
  }
1169
- sbb-form-field[floating-label] :where(input, textarea)::placeholder, sbb-form-field[floating-label] sbb-date-input::after {
1170
- color: transparent;
1171
- -webkit-text-fill-color: transparent;
1192
+ sbb-form-field :where(input, select, textarea, sbb-select, sbb-date-input)::placeholder {
1193
+ color: var(--sbb-color-metal);
1194
+ -webkit-text-fill-color: var(--sbb-color-metal);
1195
+ opacity: 1;
1196
+ }
1197
+ sbb-form-field[floating-label] :where(input, select, textarea, sbb-select)::placeholder, sbb-form-field[floating-label] sbb-date-input::after {
1198
+ color: transparent !important;
1199
+ -webkit-text-fill-color: transparent !important;
1172
1200
  }
1173
1201
  @media (forced-colors: active) {
1174
- sbb-form-field[floating-label] :where(input, textarea)::placeholder, sbb-form-field[floating-label] sbb-date-input::after {
1175
- color: Canvas;
1176
- -webkit-text-fill-color: Canvas;
1202
+ sbb-form-field[floating-label] :where(input, select, textarea, sbb-select)::placeholder, sbb-form-field[floating-label] sbb-date-input::after {
1203
+ color: Canvas !important;
1204
+ -webkit-text-fill-color: Canvas !important;
1177
1205
  }
1178
1206
  }
1179
- sbb-form-field textarea {
1207
+ sbb-form-field:not([floating-label]) :where(input, select, textarea, sbb-select):disabled::placeholder {
1208
+ color: var(--sbb-color-granite);
1209
+ -webkit-text-fill-color: var(--sbb-color-granite);
1210
+ }
1211
+ sbb-form-field :where(select) {
1212
+ vertical-align: middle;
1213
+ }
1214
+ sbb-form-field :where(select, sbb-select) {
1215
+ padding-inline-end: var(--sbb-form-field-select-inline-padding-end);
1216
+ }
1217
+ sbb-form-field :where(textarea) {
1180
1218
  --sbb-scrollbar-thumb-width: 0.125rem;
1181
1219
  --sbb-scrollbar-thumb-width-hover: 0.25rem;
1182
1220
  --sbb-scrollbar-width-firefox: thin;
@@ -1185,34 +1223,44 @@ sbb-form-field textarea {
1185
1223
  --sbb-scrollbar-track-color: transparent;
1186
1224
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
1187
1225
  }
1188
- sbb-form-field textarea::-webkit-scrollbar {
1226
+ sbb-form-field :where(textarea)::-webkit-scrollbar {
1189
1227
  width: var(--sbb-scrollbar-width);
1190
1228
  height: var(--sbb-scrollbar-width);
1191
1229
  background-color: var(--sbb-scrollbar-track-color, transparent);
1192
1230
  }
1193
- sbb-form-field textarea::-webkit-scrollbar-corner {
1231
+ sbb-form-field :where(textarea)::-webkit-scrollbar-corner {
1194
1232
  background-color: var(--sbb-scrollbar-track-color, transparent);
1195
1233
  }
1196
- sbb-form-field textarea::-webkit-scrollbar-thumb {
1234
+ sbb-form-field :where(textarea)::-webkit-scrollbar-thumb {
1197
1235
  background-color: var(--sbb-scrollbar-color, currentcolor);
1198
1236
  border: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;
1199
1237
  border-radius: var(--sbb-border-radius-4x);
1200
1238
  background-clip: padding-box;
1201
1239
  }
1202
- sbb-form-field textarea::-webkit-scrollbar-thumb:hover {
1240
+ sbb-form-field :where(textarea)::-webkit-scrollbar-thumb:hover {
1203
1241
  background-color: var(--sbb-scrollbar-color-hover, currentcolor);
1204
1242
  border-width: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)));
1205
1243
  }
1206
- sbb-form-field textarea::-webkit-scrollbar-button, sbb-form-field textarea::-webkit-scrollbar-corner {
1244
+ sbb-form-field :where(textarea)::-webkit-scrollbar-button, sbb-form-field :where(textarea)::-webkit-scrollbar-corner {
1207
1245
  display: none;
1208
1246
  }
1209
1247
  @supports not selector(::-webkit-scrollbar) {
1210
- sbb-form-field textarea {
1248
+ sbb-form-field :where(textarea) {
1211
1249
  scrollbar-width: var(--sbb-scrollbar-width-firefox);
1212
1250
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
1213
1251
  }
1214
1252
  }
1215
- sbb-form-field[negative] textarea {
1253
+ sbb-form-field :where(textarea) {
1254
+ position: relative;
1255
+ resize: none;
1256
+ white-space: break-spaces;
1257
+ overflow-y: auto;
1258
+ min-height: calc(var(--sbb-typo-line-height-body-text) * 1em);
1259
+ }
1260
+ sbb-form-field[size=l] :where(textarea) {
1261
+ padding-block-end: 0.34375rem;
1262
+ }
1263
+ sbb-form-field[negative] :where(textarea) {
1216
1264
  --sbb-scrollbar-thumb-width: 0.125rem;
1217
1265
  --sbb-scrollbar-thumb-width-hover: 0.25rem;
1218
1266
  --sbb-scrollbar-width-firefox: thin;
@@ -1221,29 +1269,29 @@ sbb-form-field[negative] textarea {
1221
1269
  --sbb-scrollbar-track-color: transparent;
1222
1270
  --sbb-scrollbar-width: var(--sbb-spacing-fixed-3x);
1223
1271
  }
1224
- sbb-form-field[negative] textarea::-webkit-scrollbar {
1272
+ sbb-form-field[negative] :where(textarea)::-webkit-scrollbar {
1225
1273
  width: var(--sbb-scrollbar-width);
1226
1274
  height: var(--sbb-scrollbar-width);
1227
1275
  background-color: var(--sbb-scrollbar-track-color, transparent);
1228
1276
  }
1229
- sbb-form-field[negative] textarea::-webkit-scrollbar-corner {
1277
+ sbb-form-field[negative] :where(textarea)::-webkit-scrollbar-corner {
1230
1278
  background-color: var(--sbb-scrollbar-track-color, transparent);
1231
1279
  }
1232
- sbb-form-field[negative] textarea::-webkit-scrollbar-thumb {
1280
+ sbb-form-field[negative] :where(textarea)::-webkit-scrollbar-thumb {
1233
1281
  background-color: var(--sbb-scrollbar-color, currentcolor);
1234
1282
  border: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width))) solid transparent;
1235
1283
  border-radius: var(--sbb-border-radius-4x);
1236
1284
  background-clip: padding-box;
1237
1285
  }
1238
- sbb-form-field[negative] textarea::-webkit-scrollbar-thumb:hover {
1286
+ sbb-form-field[negative] :where(textarea)::-webkit-scrollbar-thumb:hover {
1239
1287
  background-color: var(--sbb-scrollbar-color-hover, currentcolor);
1240
1288
  border-width: calc(0.5 * (var(--sbb-scrollbar-width) - var(--sbb-scrollbar-thumb-width-hover)));
1241
1289
  }
1242
- sbb-form-field[negative] textarea::-webkit-scrollbar-button, sbb-form-field[negative] textarea::-webkit-scrollbar-corner {
1290
+ sbb-form-field[negative] :where(textarea)::-webkit-scrollbar-button, sbb-form-field[negative] :where(textarea)::-webkit-scrollbar-corner {
1243
1291
  display: none;
1244
1292
  }
1245
1293
  @supports not selector(::-webkit-scrollbar) {
1246
- sbb-form-field[negative] textarea {
1294
+ sbb-form-field[negative] :where(textarea) {
1247
1295
  scrollbar-width: var(--sbb-scrollbar-width-firefox);
1248
1296
  scrollbar-color: var(--sbb-scrollbar-color, currentcolor) var(--sbb-scrollbar-track-color, transparent);
1249
1297
  }
@@ -1326,7 +1374,7 @@ img {
1326
1374
  }
1327
1375
 
1328
1376
  sbb-container > [slot=image]:is(sbb-image, img),
1329
- sbb-container > [slot=image] :is(sbb-image, img) {
1377
+ sbb-container > [slot=image] :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1330
1378
  --sbb-image-object-fit: cover;
1331
1379
  border-radius: var(--sbb-container-background-border-radius);
1332
1380
  height: 100%;
@@ -1334,7 +1382,7 @@ sbb-container > [slot=image] :is(sbb-image, img) {
1334
1382
  }
1335
1383
 
1336
1384
  sbb-flip-card-summary > [slot=image]:is(sbb-image, img),
1337
- sbb-flip-card-summary > [slot=image] :is(sbb-image, img) {
1385
+ sbb-flip-card-summary > [slot=image] :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1338
1386
  --sbb-image-aspect-ratio: auto;
1339
1387
  --sbb-image-object-fit: cover;
1340
1388
  border-radius: 0;
@@ -1343,14 +1391,14 @@ sbb-flip-card-summary > [slot=image] :is(sbb-image, img) {
1343
1391
  }
1344
1392
 
1345
1393
  sbb-lead-container > [slot=image]:is(sbb-image, img, picture),
1346
- sbb-lead-container > [slot=image] :is(sbb-image, img, picture) {
1394
+ sbb-lead-container > [slot=image] :is(sbb-image, img, picture):not(.sbb-figure-overlap-image) {
1347
1395
  --sbb-image-aspect-ratio: var(--sbb-lead-container-image-ratio);
1348
1396
  --sbb-image-object-fit: cover;
1349
1397
  border-radius: var(--sbb-lead-container-image-border-radius);
1350
1398
  }
1351
1399
 
1352
1400
  sbb-message > [slot=image]:is(sbb-image, img),
1353
- sbb-message > [slot=image] :is(sbb-image, img) {
1401
+ sbb-message > [slot=image] :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1354
1402
  border-radius: var(--sbb-message-image-border-radius);
1355
1403
  }
1356
1404
 
@@ -1367,22 +1415,22 @@ sbb-message > [slot=image] :is(sbb-image, img) {
1367
1415
  --sbb-teaser-image-brightness: var(--sbb-teaser-image-brightness-hover);
1368
1416
  }
1369
1417
  }
1370
- :is(sbb-teaser, sbb-teaser-hero, sbb-teaser-product) :is(sbb-image, img) {
1418
+ :is(sbb-teaser, sbb-teaser-hero, sbb-teaser-product) :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1371
1419
  will-change: filter;
1372
1420
  filter: brightness(var(--sbb-teaser-image-brightness, 1));
1373
1421
  transition: filter var(--sbb-teaser-image-animation-duration) var(--sbb-teaser-image-animation-easing);
1374
1422
  }
1375
1423
 
1376
- :is(sbb-teaser-product, sbb-teaser-product-static) :is(sbb-image, img) {
1424
+ :is(sbb-teaser-product, sbb-teaser-product-static) :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1377
1425
  border-radius: 0;
1378
1426
  --sbb-image-object-fit: cover;
1379
1427
  --sbb-image-aspect-ratio: 16 / 9;
1380
1428
  }
1381
- :is(sbb-teaser-product, sbb-teaser-product-static) img {
1429
+ :is(sbb-teaser-product, sbb-teaser-product-static) img:not(.sbb-figure-overlap-image) {
1382
1430
  place-self: stretch;
1383
1431
  }
1384
1432
 
1385
- sbb-teaser :is(sbb-image, img) {
1433
+ sbb-teaser :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1386
1434
  --sbb-image-object-fit: cover;
1387
1435
  --sbb-image-aspect-ratio: 4 / 3;
1388
1436
  transition-property: filter, scale;
@@ -1390,16 +1438,16 @@ sbb-teaser :is(sbb-image, img) {
1390
1438
  scale: var(--sbb-teaser-scale, 1);
1391
1439
  }
1392
1440
 
1393
- :is(sbb-teaser-hero) :is(sbb-image, img) {
1441
+ sbb-teaser-hero :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1394
1442
  --sbb-image-aspect-ratio: 1 / 1;
1395
1443
  border-radius: 0;
1396
1444
  }
1397
1445
  @media (min-width: calc(37.5rem)) {
1398
- :is(sbb-teaser-hero) :is(sbb-image, img) {
1446
+ sbb-teaser-hero :is(sbb-image, img):not(.sbb-figure-overlap-image) {
1399
1447
  --sbb-image-aspect-ratio: 16 / 9;
1400
1448
  }
1401
1449
  }
1402
- :is(sbb-teaser-hero) img {
1450
+ sbb-teaser-hero img:not(.sbb-figure-overlap-image) {
1403
1451
  display: block;
1404
1452
  align-self: stretch;
1405
1453
  width: 100%;
@@ -1478,4 +1526,12 @@ sbb-sidebar:has(sbb-sidebar-title) {
1478
1526
 
1479
1527
  sbb-header + :where(sbb-sidebar-container, sbb-icon-sidebar-container) {
1480
1528
  margin-block-start: var(--sbb-header-height);
1529
+ }
1530
+
1531
+ .sbb-select-trigger {
1532
+ width: 100%;
1533
+ height: var(--sbb-size-element-xs);
1534
+ }
1535
+ sbb-form-field .sbb-select-trigger {
1536
+ top: 0;
1481
1537
  }