@synergy-design-system/mcp 2.6.1 → 2.8.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 (78) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/utilities/storybook/scraper.js +14 -3
  3. package/metadata/checksum.txt +1 -1
  4. package/metadata/packages/components/components/syn-alert/component.styles.ts +126 -26
  5. package/metadata/packages/components/components/syn-alert/component.ts +1 -2
  6. package/metadata/packages/components/components/syn-checkbox/component.angular.ts +13 -0
  7. package/metadata/packages/components/components/syn-checkbox/component.styles.ts +99 -39
  8. package/metadata/packages/components/components/syn-checkbox/component.ts +13 -10
  9. package/metadata/packages/components/components/syn-checkbox/component.vue +5 -0
  10. package/metadata/packages/components/components/syn-combobox/component.angular.ts +13 -0
  11. package/metadata/packages/components/components/syn-combobox/component.styles.ts +216 -193
  12. package/metadata/packages/components/components/syn-combobox/component.ts +68 -39
  13. package/metadata/packages/components/components/syn-combobox/component.vue +5 -0
  14. package/metadata/packages/components/components/syn-file/component.angular.ts +13 -0
  15. package/metadata/packages/components/components/syn-file/component.styles.ts +20 -3
  16. package/metadata/packages/components/components/syn-file/component.ts +19 -5
  17. package/metadata/packages/components/components/syn-file/component.vue +5 -0
  18. package/metadata/packages/components/components/syn-input/component.ts +1 -2
  19. package/metadata/packages/components/components/syn-popup/component.styles.ts +24 -17
  20. package/metadata/packages/components/components/syn-popup/component.ts +1 -2
  21. package/metadata/packages/components/components/syn-radio/component.angular.ts +13 -0
  22. package/metadata/packages/components/components/syn-radio/component.styles.ts +91 -29
  23. package/metadata/packages/components/components/syn-radio/component.ts +19 -10
  24. package/metadata/packages/components/components/syn-radio/component.vue +5 -0
  25. package/metadata/packages/components/components/syn-radio-group/component.styles.ts +30 -9
  26. package/metadata/packages/components/components/syn-radio-group/component.ts +61 -32
  27. package/metadata/packages/components/components/syn-range/component.angular.ts +13 -0
  28. package/metadata/packages/components/components/syn-range/component.styles.ts +27 -3
  29. package/metadata/packages/components/components/syn-range/component.ts +17 -5
  30. package/metadata/packages/components/components/syn-range/component.vue +5 -0
  31. package/metadata/packages/components/components/syn-select/component.angular.ts +13 -0
  32. package/metadata/packages/components/components/syn-select/component.styles.ts +222 -151
  33. package/metadata/packages/components/components/syn-select/component.ts +30 -15
  34. package/metadata/packages/components/components/syn-select/component.vue +5 -0
  35. package/metadata/packages/components/components/syn-switch/component.angular.ts +13 -0
  36. package/metadata/packages/components/components/syn-switch/component.styles.ts +145 -63
  37. package/metadata/packages/components/components/syn-switch/component.ts +16 -4
  38. package/metadata/packages/components/components/syn-switch/component.vue +5 -0
  39. package/metadata/packages/components/components/syn-textarea/component.styles.ts +55 -27
  40. package/metadata/packages/components/components/syn-textarea/component.ts +1 -3
  41. package/metadata/packages/components/components/syn-tooltip/component.styles.ts +15 -10
  42. package/metadata/packages/components/components/syn-tooltip/component.ts +13 -5
  43. package/metadata/packages/components/components/syn-validate/component.angular.ts +9 -0
  44. package/metadata/packages/components/components/syn-validate/component.react.ts +8 -0
  45. package/metadata/packages/components/components/syn-validate/component.ts +106 -8
  46. package/metadata/packages/components/components/syn-validate/component.vue +9 -0
  47. package/metadata/packages/components/static/CHANGELOG.md +43 -0
  48. package/metadata/packages/tokens/CHANGELOG.md +33 -0
  49. package/metadata/packages/tokens/dark.css +7 -1
  50. package/metadata/packages/tokens/index.js +31 -1
  51. package/metadata/packages/tokens/light.css +7 -1
  52. package/metadata/packages/tokens/sick2018_dark.css +7 -1
  53. package/metadata/packages/tokens/sick2018_light.css +7 -1
  54. package/metadata/packages/tokens/sick2025_dark.css +7 -1
  55. package/metadata/packages/tokens/sick2025_light.css +7 -1
  56. package/metadata/static/components/syn-checkbox/docs.md +36 -0
  57. package/metadata/static/components/syn-combobox/docs.md +138 -0
  58. package/metadata/static/components/syn-file/docs.md +24 -0
  59. package/metadata/static/components/syn-input/docs.md +1 -1
  60. package/metadata/static/components/syn-radio/docs.md +21 -0
  61. package/metadata/static/components/syn-radio-group/docs.md +46 -0
  62. package/metadata/static/components/syn-range/docs.md +19 -0
  63. package/metadata/static/components/syn-select/docs.md +81 -0
  64. package/metadata/static/components/syn-switch/docs.md +22 -0
  65. package/metadata/static/components/syn-textarea/docs.md +1 -1
  66. package/metadata/static/components/syn-tooltip/docs.md +73 -0
  67. package/metadata/static/components/syn-validate/docs.md +33 -6
  68. package/package.json +4 -4
  69. package/metadata/packages/components/components/syn-alert/component.custom.styles.ts +0 -136
  70. package/metadata/packages/components/components/syn-checkbox/component.custom.styles.ts +0 -86
  71. package/metadata/packages/components/components/syn-combobox/component.custom.styles.ts +0 -122
  72. package/metadata/packages/components/components/syn-popup/component.custom.styles.ts +0 -18
  73. package/metadata/packages/components/components/syn-radio/component.custom.styles.ts +0 -86
  74. package/metadata/packages/components/components/syn-radio-group/component.custom.styles.ts +0 -25
  75. package/metadata/packages/components/components/syn-select/component.custom.styles.ts +0 -175
  76. package/metadata/packages/components/components/syn-switch/component.custom.styles.ts +0 -141
  77. package/metadata/packages/components/components/syn-textarea/component.custom.styles.ts +0 -48
  78. package/metadata/packages/components/components/syn-tooltip/component.custom.styles.ts +0 -13
@@ -1,19 +1,36 @@
1
- /* eslint-disable */
2
1
  import { css } from 'lit';
2
+ import sharedOptionSize from '../option/option-size.styles.js';
3
3
 
4
4
  export default css`
5
- /* stylelint-disable */
5
+ /* stylelint-disable property-no-vendor-prefix */
6
+ /* stylelint-disable no-descending-specificity */
6
7
  :host {
7
- display: block;
8
+ /* Size-dependent CSS custom properties - defaults to medium */
9
+ --syn-combobox-input-border-radius: var(--syn-input-border-radius-medium);
10
+ --syn-combobox-input-font-size: var(--syn-input-font-size-medium);
11
+ --syn-combobox-input-height: var(--syn-input-height-medium);
12
+ --syn-combobox-input-spacing: var(--syn-input-spacing-medium);
13
+ --syn-combobox-clear-font-size: var(--syn-spacing-large);
14
+ --syn-combobox-clear-margin: var(--syn-spacing-small);
15
+ --syn-combobox-prefix-suffix-margin: var(--syn-input-spacing-small);
16
+ --syn-combobox-icon-font-size: var(--syn-font-size-x-large);
17
+ --syn-combobox-expand-icon-font-size: var(--syn-spacing-large);
18
+ --syn-combobox-tags-gap: var(--syn-spacing-x-small);
19
+ --syn-combobox-tags-margin: var(--syn-input-spacing-small);
20
+ --syn-combobox-no-results-font-size: var(--syn-input-font-size-medium);
21
+ --syn-combobox-no-results-height: var(--syn-input-height-medium);
22
+ --syn-combobox-no-results-padding: var(--syn-spacing-small) var(--syn-spacing-medium) var(--syn-spacing-small) 52px;
23
+
24
+ display: block;
8
25
  }
9
26
 
10
27
  /** The popup */
11
28
  .combobox {
12
- flex: 1 1 auto;
13
29
  display: inline-flex;
14
- width: 100%;
30
+ flex: 1 1 auto;
15
31
  position: relative;
16
32
  vertical-align: middle;
33
+ width: 100%;
17
34
  }
18
35
 
19
36
  .combobox::part(popup) {
@@ -30,61 +47,73 @@ export default css`
30
47
 
31
48
  /* Combobox */
32
49
  .combobox__inputs {
33
- flex: 1;
34
- display: flex;
35
- width: 100%;
36
- min-width: 0;
37
- position: relative;
38
50
  align-items: center;
39
- justify-content: start;
51
+ border-radius: var(--syn-combobox-input-border-radius);
52
+ cursor: pointer;
53
+ display: flex;
54
+ flex: 1;
40
55
  font-family: var(--syn-input-font-family);
56
+ font-size: var(--syn-combobox-input-font-size);
41
57
  font-weight: var(--syn-input-font-weight);
58
+ justify-content: start;
42
59
  letter-spacing: var(--syn-input-letter-spacing);
43
- vertical-align: middle;
60
+ min-height: var(--syn-combobox-input-height);
61
+ min-width: 0;
44
62
  overflow: hidden;
45
- cursor: pointer;
63
+ padding-block: 0;
64
+ padding-inline: var(--syn-combobox-input-spacing);
65
+ position: relative;
46
66
  transition:
47
67
  var(--syn-transition-fast) color,
48
68
  var(--syn-transition-fast) border,
49
69
  var(--syn-transition-fast) box-shadow,
50
70
  var(--syn-transition-fast) background-color;
71
+ vertical-align: middle;
72
+ width: 100%;
51
73
  }
52
74
 
53
75
  .combobox__display-input {
54
- position: relative;
55
- width: 100%;
56
- font: inherit;
57
- border: none;
76
+ -webkit-appearance: none;
77
+ appearance: none;
58
78
  background: none;
79
+ border: none;
59
80
  color: var(--syn-input-color);
60
81
  cursor: inherit;
82
+ flex: 1;
83
+ font: inherit;
84
+ margin: 0;
85
+ min-width: var(--syn-spacing-2x-large);
61
86
  overflow: hidden;
62
87
  padding: 0;
63
- margin: 0;
64
- -webkit-appearance: none;
88
+ position: relative;
89
+ width: unset;
65
90
  }
66
91
 
67
92
  .combobox__display-input::placeholder {
68
93
  color: var(--syn-input-placeholder-color);
69
94
  }
70
95
 
71
- .combobox:not(.combobox--disabled):hover .combobox__display-input {
72
- color: var(--syn-input-color-hover);
73
- }
74
-
75
96
  .combobox__display-input:focus {
76
97
  outline: none;
77
98
  }
78
99
 
100
+ .combobox:not(.combobox--disabled):not(.combobox--readonly) .combobox__display-input {
101
+ cursor: text;
102
+ }
103
+
104
+ .combobox:not(.combobox--disabled):hover:not(.combobox--readonly) .combobox__display-input {
105
+ color: var(--syn-input-color-hover);
106
+ }
107
+
79
108
  .combobox__value-input {
80
- position: absolute;
81
- top: 0;
82
- left: 0;
83
- width: 100%;
84
109
  height: 100%;
85
- padding: 0;
110
+ left: 0;
86
111
  margin: 0;
87
112
  opacity: 0;
113
+ padding: 0;
114
+ position: absolute;
115
+ top: 0;
116
+ width: 100%;
88
117
  z-index: -1;
89
118
  }
90
119
 
@@ -98,92 +127,86 @@ export default css`
98
127
  background-color: var(--syn-input-background-color-disabled);
99
128
  border-color: var(--syn-input-border-color-disabled);
100
129
  color: var(--syn-input-color-disabled);
101
- opacity: 0.5;
102
130
  cursor: not-allowed;
131
+ opacity: var(--syn-input-disabled-opacity); /** #429: Use token for opacity */
103
132
  outline: none;
104
133
  }
105
134
 
106
- .combobox--standard:not(.combobox--disabled).combobox--open .combobox__inputs,
107
- .combobox--standard:not(.combobox--disabled).combobox--focused .combobox__inputs {
108
- background-color: var(--syn-input-background-color-focus);
109
- border-color: var(--syn-input-border-color-focus);
110
- box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-color);
111
- }
112
-
113
- /* Sizes */
114
- .combobox--small .combobox__inputs {
115
- border-radius: var(--syn-input-border-radius-small);
116
- font-size: var(--syn-input-font-size-small);
117
- min-height: var(--syn-input-height-small);
118
- padding-block: 0;
119
- padding-inline: var(--syn-input-spacing-small);
120
- }
121
-
122
- .combobox--small .combobox__clear {
123
- margin-inline-start: var(--syn-input-spacing-small);
124
- }
125
-
126
- .combobox--small .combobox__prefix::slotted(*) {
127
- margin-inline-end: var(--syn-input-spacing-small);
128
- }
129
-
130
- .combobox--medium .combobox__inputs {
131
- border-radius: var(--syn-input-border-radius-medium);
132
- font-size: var(--syn-input-font-size-medium);
133
- min-height: var(--syn-input-height-medium);
134
- padding-block: 0;
135
- padding-inline: var(--syn-input-spacing-medium);
136
- }
137
-
138
- .combobox--medium .combobox__clear {
139
- margin-inline-start: var(--syn-input-spacing-medium);
140
- }
141
-
142
- .combobox--medium .combobox__prefix::slotted(*) {
143
- margin-inline-end: var(--syn-input-spacing-medium);
144
- }
145
-
146
- .combobox--large .combobox__inputs {
147
- border-radius: var(--syn-input-border-radius-large);
148
- font-size: var(--syn-input-font-size-large);
149
- min-height: var(--syn-input-height-large);
150
- padding-block: 0;
151
- padding-inline: var(--syn-input-spacing-large);
152
- }
153
-
154
- .combobox--large .combobox__clear {
155
- margin-inline-start: var(--syn-input-spacing-large);
135
+ /* Change combobox border on hover */
136
+ .combobox:not(.combobox--disabled):not(.combobox--readonly):hover .combobox__inputs {
137
+ border-color: var(--syn-input-border-color-hover);
156
138
  }
157
139
 
158
- .combobox--large .combobox__prefix::slotted(*) {
159
- margin-inline-end: var(--syn-input-spacing-large);
140
+ /* Size variants */
141
+ .combobox--small {
142
+ --syn-combobox-input-border-radius: var(--syn-input-border-radius-small);
143
+ --syn-combobox-input-font-size: var(--syn-input-font-size-small);
144
+ --syn-combobox-input-height: var(--syn-input-height-small);
145
+ --syn-combobox-input-spacing: var(--syn-input-spacing-small);
146
+ --syn-combobox-clear-font-size: var(--syn-spacing-medium);
147
+ --syn-combobox-clear-margin: var(--syn-input-spacing-small);
148
+ --syn-combobox-prefix-suffix-margin: var(--syn-spacing-x-small);
149
+ --syn-combobox-icon-font-size: var(--syn-font-size-medium);
150
+ --syn-combobox-expand-icon-font-size: var(--syn-spacing-medium);
151
+ --syn-combobox-tags-gap: var(--syn-spacing-2x-small);
152
+ --syn-combobox-tags-margin: var(--syn-spacing-x-small);
153
+ --syn-combobox-no-results-font-size: var(--syn-input-font-size-small);
154
+ --syn-combobox-no-results-height: var(--syn-input-height-small);
155
+ --syn-combobox-no-results-padding: 0 var(--syn-spacing-small) 0 40px;
156
+ }
157
+
158
+ .combobox--large {
159
+ --syn-combobox-input-border-radius: var(--syn-input-border-radius-large);
160
+ --syn-combobox-input-font-size: var(--syn-input-font-size-large);
161
+ --syn-combobox-input-height: var(--syn-input-height-large);
162
+ --syn-combobox-input-spacing: var(--syn-input-spacing-large);
163
+ --syn-combobox-clear-font-size: var(--syn-spacing-x-large);
164
+ --syn-combobox-clear-margin: var(--syn-input-spacing-large);
165
+ --syn-combobox-prefix-suffix-margin: var(--syn-input-spacing-medium);
166
+ --syn-combobox-icon-font-size: var(--syn-font-size-2x-large);
167
+ --syn-combobox-expand-icon-font-size: var(--syn-spacing-x-large);
168
+ --syn-combobox-tags-gap: var(--syn-spacing-small);
169
+ --syn-combobox-tags-margin: var(--syn-input-spacing-medium);
170
+ --syn-combobox-no-results-font-size: var(--syn-input-font-size-large);
171
+ --syn-combobox-no-results-height: var(--syn-input-height-large);
172
+ --syn-combobox-no-results-padding: 0 var(--syn-spacing-large) 0 68px;
160
173
  }
161
174
 
162
- /* Prefix and Suffix */
175
+ /* Prefix and Suffix */
163
176
  .combobox__prefix,
164
177
  .combobox__suffix {
165
- flex: 0;
166
- display: inline-flex;
167
178
  align-items: center;
168
- color: var(--syn-input-placeholder-color);
179
+ color: var(--syn-input-icon-color);
180
+ display: inline-flex;
181
+ flex: 0;
182
+ }
183
+
184
+ .combobox__prefix::slotted(*) {
185
+ margin-inline-end: var(--syn-combobox-prefix-suffix-margin);
169
186
  }
170
187
 
171
188
  .combobox__suffix::slotted(*) {
172
- margin-inline-start: var(--syn-spacing-small);
189
+ margin-inline-start: var(--syn-combobox-prefix-suffix-margin);
190
+ }
191
+
192
+ .combobox__suffix::slotted(syn-icon),
193
+ .combobox__prefix::slotted(syn-icon) {
194
+ font-size: var(--syn-combobox-icon-font-size);
173
195
  }
174
196
 
175
197
  /* Clear button */
176
198
  .combobox__clear {
177
- display: inline-flex;
178
199
  align-items: center;
179
- justify-content: center;
180
- font-size: inherit;
181
- color: var(--syn-input-icon-color);
182
- border: none;
183
200
  background: none;
201
+ border: none;
202
+ color: var(--syn-input-icon-icon-clearable-color);
203
+ cursor: pointer;
204
+ display: inline-flex;
205
+ font-size: var(--syn-combobox-clear-font-size);
206
+ justify-content: center;
207
+ margin-inline-start: var(--syn-combobox-clear-margin);
184
208
  padding: 0;
185
209
  transition: var(--syn-transition-fast) color;
186
- cursor: pointer;
187
210
  }
188
211
 
189
212
  .combobox__clear:hover {
@@ -196,12 +219,14 @@ export default css`
196
219
 
197
220
  /* Expand icon */
198
221
  .combobox__expand-icon {
199
- flex: 0 0 auto;
200
- display: flex;
201
222
  align-items: center;
202
- transition: var(--syn-transition-medium) rotate ease;
203
- rotate: 0;
223
+ color: var(--syn-color-neutral-950);
224
+ display: flex;
225
+ flex: 0 0 auto;
226
+ font-size: var(--syn-combobox-expand-icon-font-size);
204
227
  margin-inline-start: var(--syn-spacing-small);
228
+ rotate: 0deg;
229
+ transition: var(--syn-transition-medium) rotate ease;
205
230
  }
206
231
 
207
232
  .combobox--open .combobox__expand-icon {
@@ -210,23 +235,21 @@ export default css`
210
235
 
211
236
  /* Listbox */
212
237
  .combobox__listbox {
238
+ background: var(--syn-panel-background-color);
239
+ border: solid var(--syn-panel-border-width) var(--syn-panel-border-color);
240
+ border-radius: var(--syn-input-border-radius-medium);
241
+ box-shadow: var(--syn-shadow-medium);
213
242
  display: block;
214
- position: relative;
215
243
  font-family: var(--syn-font-sans);
216
244
  font-size: var(--syn-font-size-medium);
217
245
  font-weight: var(--syn-font-weight-normal);
218
- box-shadow: var(--syn-shadow-large);
219
- background: var(--syn-panel-background-color);
220
- border: solid var(--syn-panel-border-width) var(--syn-panel-border-color);
221
- border-radius: var(--syn-border-radius-medium);
222
- padding-block: var(--syn-spacing-x-small);
223
- padding-inline: 0;
246
+ max-height: var(--auto-size-available-height); /* Make sure it adheres to the popup's auto size */
247
+ max-width: var(--auto-size-available-width);
224
248
  overflow: auto;
225
249
  overscroll-behavior: none;
226
-
227
- /* Make sure it adheres to the popup's auto size */
228
- max-width: var(--auto-size-available-width);
229
- max-height: var(--auto-size-available-height);
250
+ padding-block: var(--syn-spacing-x-small);
251
+ padding-inline: 0;
252
+ position: relative;
230
253
  }
231
254
 
232
255
  .combobox__listbox ::slotted(syn-divider) {
@@ -234,129 +257,114 @@ export default css`
234
257
  }
235
258
 
236
259
  .combobox__listbox ::slotted(small) {
260
+ color: var(--syn-color-neutral-500);
237
261
  display: block;
238
262
  font-size: var(--syn-font-size-small);
239
263
  font-weight: var(--syn-font-weight-semibold);
240
- color: var(--syn-color-neutral-500);
241
264
  padding-block: var(--syn-spacing-2x-small);
242
265
  padding-inline: var(--syn-spacing-x-large);
243
266
  }
244
267
 
245
-
246
- /** #429: Use token for opacity */
247
- .combobox--standard.combobox--disabled .combobox__inputs {
248
- opacity: var(--syn-input-disabled-opacity);
249
- }
250
-
251
- /**
252
- * Invalid user data
253
- */
254
- :host([data-user-invalid]) .combobox__inputs {
255
- border-color: var(--syn-input-border-color-focus-error);
268
+ /* Multi Select */
269
+ .combobox__tags {
270
+ align-items: center;
271
+ display: flex;
272
+ flex-wrap: wrap;
273
+ gap: var(--syn-combobox-tags-gap);
274
+ margin-inline-start: var(--syn-spacing-2x-small);
256
275
  }
257
276
 
258
- :host([data-user-invalid]) .combobox--standard:not(.combobox--disabled).combobox--open .combobox__inputs,
259
- :host([data-user-invalid]) .combobox--standard:not(.combobox--disabled).combobox--focused .combobox__inputs {
260
- border-color: var(--syn-input-border-color-focus-error);
261
- box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-error);
277
+ .combobox__tags::slotted(syn-tag) {
278
+ cursor: pointer !important;
262
279
  }
263
280
 
264
- /* Clear button */
265
- .combobox__clear {
266
- color: var(--syn-input-icon-icon-clearable-color);
267
- font-size: var(--syn-spacing-large);
281
+ .combobox--disabled .combobox__tags,
282
+ .combobox--disabled .combobox__tags::slotted(syn-tag) {
283
+ cursor: not-allowed !important;
268
284
  }
269
285
 
270
- .combobox--small .combobox__clear {
271
- font-size: var(--syn-spacing-medium);
286
+ .combobox--tags-visible .combobox__tags {
287
+ margin-inline-end: var(--syn-combobox-tags-margin);
272
288
  }
273
289
 
274
- .combobox--large .combobox__clear {
275
- font-size: var(--syn-spacing-x-large);
290
+ .listbox__options ::slotted(syn-option[hidden]),
291
+ .listbox__options ::slotted(syn-optgroup[hidden]) {
292
+ display: none;
276
293
  }
277
294
 
278
- .combobox--medium .combobox__clear {
279
- margin-inline-start: var(--syn-spacing-small);
280
- }
281
-
282
- /* Expand icon */
283
- .combobox__expand-icon {
295
+ .listbox__no-results {
296
+ align-items: center;
284
297
  color: var(--syn-color-neutral-950);
285
- margin-inline-start: var(--syn-spacing-small);
286
- }
287
-
288
- .combobox--small .combobox__expand-icon {
289
- font-size: var(--syn-spacing-medium);
290
- }
291
-
292
- .combobox--medium .combobox__expand-icon {
293
- font-size: var(--syn-spacing-large);
294
- }
295
-
296
- .combobox--large .combobox__expand-icon {
297
- font-size: var(--syn-spacing-x-large);
298
- }
299
-
300
- /* Change combobox border on hover */
301
- .combobox:not(.combobox--disabled):hover .combobox__inputs {
302
- border-color: var(--syn-input-border-color-hover);
303
- }
304
-
305
- /* Prefix and Suffix */
306
-
307
- /* Small */
308
- .combobox--small .combobox__prefix::slotted(*) {
309
- margin-inline-end: var(--syn-spacing-x-small);
298
+ display: flex;
299
+ font-size: var(--syn-combobox-no-results-font-size);
300
+ font-weight: var(--syn-font-weight-normal);
301
+ min-height: var(--syn-combobox-no-results-height);
302
+ padding: var(--syn-combobox-no-results-padding);
310
303
  }
311
304
 
312
- .combobox--small .combobox__suffix::slotted(*) {
313
- margin-inline-start: var(--syn-spacing-x-small);
305
+ /**
306
+ * #850: Allow to measure the size of the combobox.
307
+ * This is needed so we can automatically size and truncate the tags in the <syn-combobox multiple> component.
308
+ * Scoped to multiple to not break the single select per accident.
309
+ * Scoped to when placeholder is not visible to not break the placeholder visualization
310
+ */
311
+ :host([multiple]) :not(.combobox--placeholder-visible).combobox--tags-visible > .combobox__inputs > .combobox__tags {
312
+ min-width: 85px;
313
+ overflow: hidden;
314
314
  }
315
315
 
316
- .combobox--small .combobox__suffix::slotted(syn-icon),
317
- .combobox--small .combobox__prefix::slotted(syn-icon) {
318
- font-size: var(--syn-font-size-medium);
316
+ :host([multiple]) .combobox__tags > div {
317
+ display: contents;
319
318
  }
320
319
 
321
- /* Medium */
322
- .combobox--medium .combobox__prefix::slotted(*) {
323
- margin-inline-end: var(--syn-input-spacing-small);
324
- }
320
+ :host([multiple]) .combobox__tags > div > syn-tag {
321
+ --syn-tag-position-adjustment: var(--syn-spacing-3x-small);
325
322
 
326
- .combobox--medium .combobox__suffix::slotted(*) {
327
- margin-inline-start: var(--syn-input-spacing-small);
323
+ max-width: var(--syn-select-tag-max-width);
328
324
  }
329
325
 
330
- .combobox--medium .combobox__suffix::slotted(syn-icon),
331
- .combobox--medium .combobox__prefix::slotted(syn-icon) {
332
- font-size: var(--syn-font-size-x-large);
326
+ :host([multiple]) .combobox__tags > div > syn-tag::part(content) {
327
+ display: initial;
328
+ overflow: hidden;
329
+ text-overflow: ellipsis;
330
+ white-space: nowrap;
333
331
  }
334
332
 
335
- /* Large */
336
- .combobox--large .combobox__prefix::slotted(*) {
337
- margin-inline-end: var(--syn-input-spacing-medium);
333
+ /*
334
+ This class is needed to be able to hide the options as long as the popup close animation is running.
335
+ As otherwise the listbox would flicker because the options are shown again when the value is reset to empty string.
336
+ */
337
+ .options__hide {
338
+ /* We need to set the slot to something different than display: contents to be able to hide it. Also it should not take any space so we remove the height */
339
+ display: block;
340
+ height: 0;
341
+ opacity: 0;
338
342
  }
339
343
 
340
- .combobox--large .combobox__suffix::slotted(*) {
341
- margin-inline-start: var(--syn-input-spacing-medium);
344
+ /**
345
+ * Invalid user data
346
+ */
347
+ :host([data-user-invalid]) .combobox__inputs {
348
+ border-color: var(--syn-input-border-color-focus-error);
342
349
  }
343
350
 
344
- .combobox--large .combobox__suffix::slotted(syn-icon),
345
- .combobox--large .combobox__prefix::slotted(syn-icon) {
346
- font-size: var(--syn-font-size-2x-large);
351
+ :host([data-user-invalid]) .combobox--standard:not(.combobox--disabled).combobox--open .combobox__inputs,
352
+ :host([data-user-invalid]) .combobox--standard:not(.combobox--disabled).combobox--focused .combobox__inputs {
353
+ border-color: var(--syn-input-border-color-focus-error);
354
+ box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-error);
347
355
  }
348
356
 
349
- .combobox__prefix,
350
- .combobox__suffix {
351
- color: var(--syn-input-icon-color);
357
+ .combobox--standard:not(.combobox--disabled).combobox--open .combobox__inputs,
358
+ .combobox--standard:not(.combobox--disabled).combobox--focused .combobox__inputs {
359
+ background-color: var(--syn-input-background-color-focus);
360
+ border-color: var(--syn-input-border-color-focus);
361
+ box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-color);
352
362
  }
353
363
 
354
-
355
-
356
- /* Listbox */
357
- .combobox__listbox {
358
- border-radius: var(--syn-input-border-radius-medium);
359
- box-shadow: var(--syn-shadow-medium);
364
+ .combobox--standard.combobox--readonly.combobox--focused .combobox__inputs {
365
+ background: var(--syn-readonly-background-color);
366
+ border-color: var(--syn-input-border-color-focus);
367
+ box-shadow: 0 0 0 var(--syn-focus-ring-width) var(--syn-input-focus-ring-color);
360
368
  }
361
369
 
362
370
  /**
@@ -367,4 +375,19 @@ export default css`
367
375
  .combobox__listbox ::slotted(syn-optgroup:first-of-type) {
368
376
  --display-divider: none;
369
377
  }
378
+
379
+ /**
380
+ * #1172: Add support for readonly
381
+ */
382
+ .combobox--readonly .combobox__inputs {
383
+ background: var(--syn-readonly-background-color);
384
+ border-color: var(--syn-readonly-background-color);
385
+ cursor: default;
386
+ }
387
+
388
+ .combobox--readonly .combobox__expand-icon {
389
+ color: var(--syn-readonly-icon-color-expand);
390
+ }
391
+
392
+ ${sharedOptionSize}
370
393
  `;