@synergy-design-system/mcp 1.41.2 → 2.1.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 (101) hide show
  1. package/CHANGELOG.md +38 -0
  2. package/README.md +43 -8
  3. package/dist/build/assets.js +1 -0
  4. package/dist/build/static.js +15 -7
  5. package/dist/build/styles.js +1 -0
  6. package/dist/build/tokens.js +1 -0
  7. package/dist/tools/asset-info.js +4 -4
  8. package/dist/tools/index.d.ts +1 -0
  9. package/dist/tools/index.js +1 -0
  10. package/dist/tools/migration-info.d.ts +10 -1
  11. package/dist/tools/migration-info.js +74 -12
  12. package/dist/tools/migration-list.d.ts +10 -0
  13. package/dist/tools/migration-list.js +122 -0
  14. package/dist/utilities/migration.d.ts +3 -1
  15. package/dist/utilities/migration.js +25 -2
  16. package/metadata/checksum.txt +1 -1
  17. package/metadata/packages/angular/README.md +1 -1
  18. package/metadata/packages/assets/BREAKING_CHANGES.md +305 -0
  19. package/metadata/packages/assets/CHANGELOG.md +18 -0
  20. package/metadata/packages/assets/README.md +39 -22
  21. package/metadata/packages/components/components/syn-alert/component.custom.styles.ts +20 -20
  22. package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +10 -10
  23. package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +1 -1
  24. package/metadata/packages/components/components/syn-button/component.custom.styles.ts +38 -24
  25. package/metadata/packages/components/components/syn-button-group/component.angular.ts +24 -0
  26. package/metadata/packages/components/components/syn-button-group/component.custom.styles.ts +5 -0
  27. package/metadata/packages/components/components/syn-button-group/component.ts +77 -2
  28. package/metadata/packages/components/components/syn-button-group/component.vue +12 -0
  29. package/metadata/packages/components/components/syn-checkbox/component.custom.styles.ts +7 -7
  30. package/metadata/packages/components/components/syn-combobox/component.angular.ts +0 -17
  31. package/metadata/packages/components/components/syn-combobox/component.ts +0 -9
  32. package/metadata/packages/components/components/syn-combobox/component.vue +0 -9
  33. package/metadata/packages/components/components/syn-details/component.custom.styles.ts +1 -1
  34. package/metadata/packages/components/components/syn-dialog/component.custom.styles.ts +1 -1
  35. package/metadata/packages/components/components/syn-dropdown/component.angular.ts +0 -17
  36. package/metadata/packages/components/components/syn-dropdown/component.ts +0 -8
  37. package/metadata/packages/components/components/syn-dropdown/component.vue +0 -9
  38. package/metadata/packages/components/components/syn-file/component.styles.ts +6 -6
  39. package/metadata/packages/components/components/syn-header/component.styles.ts +7 -7
  40. package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +8 -8
  41. package/metadata/packages/components/components/syn-input/component.custom.styles.ts +3 -3
  42. package/metadata/packages/components/components/syn-input/component.ts +2 -3
  43. package/metadata/packages/components/components/syn-menu-item/component.custom.styles.ts +11 -11
  44. package/metadata/packages/components/components/syn-nav-item/component.styles.ts +3 -3
  45. package/metadata/packages/components/components/syn-optgroup/component.styles.ts +1 -1
  46. package/metadata/packages/components/components/syn-option/component.custom.styles.ts +13 -13
  47. package/metadata/packages/components/components/syn-popup/component.angular.ts +0 -16
  48. package/metadata/packages/components/components/syn-popup/component.ts +3 -10
  49. package/metadata/packages/components/components/syn-popup/component.vue +0 -10
  50. package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +2 -2
  51. package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +2 -2
  52. package/metadata/packages/components/components/syn-radio/component.custom.styles.ts +7 -7
  53. package/metadata/packages/components/components/syn-range/component.styles.ts +9 -9
  54. package/metadata/packages/components/components/syn-range/component.ts +0 -1
  55. package/metadata/packages/components/components/syn-range-tick/component.styles.ts +1 -1
  56. package/metadata/packages/components/components/syn-select/component.angular.ts +0 -17
  57. package/metadata/packages/components/components/syn-select/component.ts +0 -8
  58. package/metadata/packages/components/components/syn-select/component.vue +0 -9
  59. package/metadata/packages/components/components/syn-side-nav/component.angular.ts +0 -21
  60. package/metadata/packages/components/components/syn-side-nav/component.ts +1 -36
  61. package/metadata/packages/components/components/syn-side-nav/component.vue +0 -13
  62. package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +2 -2
  63. package/metadata/packages/components/components/syn-switch/component.custom.styles.ts +16 -16
  64. package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +3 -3
  65. package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +2 -2
  66. package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +1 -1
  67. package/metadata/packages/components/components/syn-tooltip/component.angular.ts +0 -18
  68. package/metadata/packages/components/components/syn-tooltip/component.ts +1 -10
  69. package/metadata/packages/components/components/syn-tooltip/component.vue +0 -10
  70. package/metadata/packages/components/migration/BREAKING_CHANGES.md +433 -14
  71. package/metadata/packages/components/static/CHANGELOG.md +61 -0
  72. package/metadata/packages/components/static/LIMITATIONS.md +141 -35
  73. package/metadata/packages/styles/BREAKING_CHANGES.md +105 -0
  74. package/metadata/packages/styles/CHANGELOG.md +26 -0
  75. package/metadata/packages/styles/index.css +9 -9
  76. package/metadata/packages/styles/link-list.css +1 -1
  77. package/metadata/packages/styles/link.css +2 -2
  78. package/metadata/packages/styles/tables.css +8 -8
  79. package/metadata/packages/styles/typography.css +1 -1
  80. package/metadata/packages/tokens/BREAKING_CHANGES.md +180 -0
  81. package/metadata/packages/tokens/CHANGELOG.md +30 -0
  82. package/metadata/packages/tokens/README.md +2 -0
  83. package/metadata/packages/tokens/dark.css +237 -236
  84. package/metadata/packages/tokens/index.js +6 -1
  85. package/metadata/packages/tokens/light.css +221 -220
  86. package/metadata/packages/tokens/sick2018_dark.css +4 -3
  87. package/metadata/packages/tokens/sick2018_light.css +4 -3
  88. package/metadata/packages/tokens/sick2025_dark.css +4 -3
  89. package/metadata/packages/tokens/sick2025_light.css +4 -3
  90. package/metadata/static/components/syn-badge/docs.md +2 -14
  91. package/metadata/static/components/syn-button-group/docs.md +259 -0
  92. package/metadata/static/components/syn-popup/docs.md +10 -29
  93. package/metadata/static/components/syn-range/docs.md +1 -1
  94. package/metadata/static/migration/index.md +51 -11
  95. package/metadata/{packages/components/migration/migration-synergy-v3.md → static/migration/v2-2018-to-v2-2025.md} +1 -1
  96. package/metadata/static/migration/v2-2018-to-v3-2018.md +147 -0
  97. package/metadata/static/migration/v2-2018-to-v3-2025.md +150 -0
  98. package/metadata/static/migration/v2-2025-to-v3-2025.md +133 -0
  99. package/metadata/static/templates/appshell.md +8 -8
  100. package/metadata/static/templates/footer.md +1 -1
  101. package/package.json +5 -5
@@ -52,4 +52,28 @@ devices when interacting with the control and is strongly recommended.
52
52
  get label(): SynButtonGroup['label'] {
53
53
  return this.nativeElement.label;
54
54
  }
55
+
56
+ /**
57
+ * The button-groups size.
58
+ * This affects all buttons within the group.
59
+ */
60
+ @Input()
61
+ set size(v: SynButtonGroup['size']) {
62
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.size = v));
63
+ }
64
+ get size(): SynButtonGroup['size'] {
65
+ return this.nativeElement.size;
66
+ }
67
+
68
+ /**
69
+ * The button-group's theme variant.
70
+ * This affects all buttons within the group.
71
+ */
72
+ @Input()
73
+ set variant(v: SynButtonGroup['variant']) {
74
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.variant = v));
75
+ }
76
+ get variant(): SynButtonGroup['variant'] {
77
+ return this.nativeElement.variant;
78
+ }
55
79
  }
@@ -0,0 +1,5 @@
1
+ import { css } from 'lit';
2
+
3
+ export default css`
4
+ /* Write custom CSS here */
5
+ `;
@@ -11,7 +11,11 @@ import { property, query, state } from 'lit/decorators.js';
11
11
  import componentStyles from '../../styles/component.styles.js';
12
12
  import SynergyElement from '../../internal/synergy-element.js';
13
13
  import styles from './button-group.styles.js';
14
+ import customStyles from './button-group.custom.styles.js';
14
15
  import type { CSSResultGroup } from 'lit';
16
+ import type SynButton from '../button/button.component.js';
17
+ import type SynRadioButton from '../radio-button/radio-button.component.js';
18
+ import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';
15
19
 
16
20
  /**
17
21
  * @summary Button groups can be used to group related buttons into sections.
@@ -23,8 +27,9 @@ import type { CSSResultGroup } from 'lit';
23
27
  *
24
28
  * @csspart base - The component's base wrapper.
25
29
  */
30
+ @enableDefaultSettings('SynButtonGroup')
26
31
  export default class SynButtonGroup extends SynergyElement {
27
- static styles: CSSResultGroup = [componentStyles, styles];
32
+ static styles: CSSResultGroup = [componentStyles, styles, customStyles];
28
33
 
29
34
  @query('slot') defaultSlot: HTMLSlotElement;
30
35
 
@@ -36,6 +41,14 @@ export default class SynButtonGroup extends SynergyElement {
36
41
  */
37
42
  @property() label = '';
38
43
 
44
+ /** The button-groups size. This affects all buttons within the group. */
45
+ @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';
46
+
47
+ /** The button-group's theme variant. This affects all buttons within the group. */
48
+ @property({ reflect: true }) variant: 'filled' | 'outline' = 'outline';
49
+
50
+ private mutationObserver: MutationObserver;
51
+
39
52
  private handleFocus(event: Event) {
40
53
  const button = findButton(event.target as HTMLElement);
41
54
  button?.toggleAttribute('data-syn-button-group__button--focus', true);
@@ -61,9 +74,15 @@ export default class SynButtonGroup extends SynergyElement {
61
74
 
62
75
  slottedElements.forEach(el => {
63
76
  const index = slottedElements.indexOf(el);
64
- const button = findButton(el);
77
+ const button = findButton(el) as SynButton | SynRadioButton;
65
78
 
66
79
  if (button) {
80
+ button.size = this.size;
81
+
82
+ if (button.tagName.toLowerCase() === 'syn-button') {
83
+ (button as SynButton).variant = this.variant;
84
+ }
85
+
67
86
  button.toggleAttribute('data-syn-button-group__button', true);
68
87
  button.toggleAttribute('data-syn-button-group__button--first', index === 0);
69
88
  button.toggleAttribute('data-syn-button-group__button--inner', index > 0 && index < slottedElements.length - 1);
@@ -76,6 +95,62 @@ export default class SynButtonGroup extends SynergyElement {
76
95
  });
77
96
  }
78
97
 
98
+ firstUpdated() {
99
+ const startObserving = () => {
100
+ this.mutationObserver.observe(this, {
101
+ subtree: true,
102
+ attributes: true,
103
+ attributeFilter: ['size', 'variant'],
104
+ });
105
+ };
106
+
107
+ this.mutationObserver = new MutationObserver((entries) => {
108
+ // Temporarily disconnect to prevent infinite loop
109
+ this.mutationObserver.disconnect();
110
+
111
+ // Check if the button-group itself changed or its children
112
+ const buttonGroupChanged = entries.some(entry => entry.target === this);
113
+ const childrenChanged = entries.some(entry => entry.target !== this);
114
+
115
+ if (childrenChanged) {
116
+ // Handle child button changes (existing logic)
117
+ entries
118
+ .filter(entry => entry.target !== this)
119
+ .forEach(entry => {
120
+ const target = entry.target as HTMLElement;
121
+ const button = findButton(target) as SynButton | SynRadioButton;
122
+
123
+ if (button) {
124
+ // Unset the size property to allow button-group to control it
125
+ button.size = undefined as any;
126
+
127
+ // Also unset variant for syn-buttons
128
+ if (button.tagName.toLowerCase() === 'syn-button') {
129
+ (button as SynButton).variant = undefined as any;
130
+ }
131
+ }
132
+ });
133
+ }
134
+
135
+ // Handle both cases: button-group changes and child changes
136
+ if (buttonGroupChanged || childrenChanged) {
137
+ this.handleSlotChange();
138
+ }
139
+
140
+ // Reconnect observer after changes are done
141
+ this.updateComplete.then(() => {
142
+ startObserving();
143
+ });
144
+ });
145
+
146
+ startObserving();
147
+ }
148
+
149
+ disconnectedCallback() {
150
+ super.disconnectedCallback();
151
+ this.mutationObserver?.disconnect();
152
+ }
153
+
79
154
  render() {
80
155
  // eslint-disable-next-line lit-a11y/mouse-events-have-key-events
81
156
  return html`
@@ -35,6 +35,18 @@ const props = defineProps<{
35
35
  devices when interacting with the control and is strongly recommended.
36
36
  */
37
37
  label?: SynButtonGroup['label'];
38
+
39
+ /**
40
+ * The button-groups size.
41
+ * This affects all buttons within the group.
42
+ */
43
+ size?: SynButtonGroup['size'];
44
+
45
+ /**
46
+ * The button-group's theme variant.
47
+ * This affects all buttons within the group.
48
+ */
49
+ variant?: SynButtonGroup['variant'];
38
50
  }>();
39
51
 
40
52
  // Make sure prop binding only forwards the props that are actually there.
@@ -11,7 +11,7 @@ export default css`
11
11
  }
12
12
 
13
13
  .checkbox__control {
14
- border-radius: var(--syn-checkbox-border-radius, var(--syn-input-border-radius-small));
14
+ border-radius: var(--syn-checkbox-border-radius);
15
15
 
16
16
  /* #1083: This adds spacing around multi-line labels */
17
17
  margin: 0.1em 0;
@@ -20,8 +20,8 @@ export default css`
20
20
  /* Checked/indeterminate */
21
21
  .checkbox--checked .checkbox__control,
22
22
  .checkbox--indeterminate .checkbox__control {
23
- background-color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
24
- border-color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
23
+ background-color: var(--syn-interactive-emphasis-color);
24
+ border-color: var(--syn-interactive-emphasis-color);
25
25
  }
26
26
 
27
27
  :host([data-user-invalid]) .checkbox__control {
@@ -56,8 +56,8 @@ export default css`
56
56
  */
57
57
  .checkbox.checkbox--checked:not(.checkbox--disabled):hover .checkbox__control,
58
58
  .checkbox.checkbox--indeterminate:not(.checkbox--disabled):hover .checkbox__control {
59
- background-color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
60
- border-color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
59
+ background-color: var(--syn-interactive-emphasis-color-hover);
60
+ border-color: var(--syn-interactive-emphasis-color-hover);
61
61
  }
62
62
 
63
63
  /*
@@ -74,8 +74,8 @@ export default css`
74
74
  /* Checked/indeterminate */
75
75
  .checkbox.checkbox--checked:not(.checkbox--disabled):active .checkbox__control,
76
76
  .checkbox.checkbox--indeterminate:not(.checkbox--disabled):active .checkbox__control {
77
- background: var(--syn-interactive-emphasis-color-active, var(--syn-color-primary-900));
78
- border-color: var(--syn-interactive-emphasis-color-active, var(--syn-color-primary-900));
77
+ background: var(--syn-interactive-emphasis-color-active);
78
+ border-color: var(--syn-interactive-emphasis-color-active);
79
79
  }
80
80
 
81
81
  .checkbox__label {
@@ -242,23 +242,6 @@ and `hide()` methods and this attribute will reflect the combobox's open state.
242
242
  return this.nativeElement.open;
243
243
  }
244
244
 
245
- /**
246
- * Enable this option to prevent the listbox from being clipped,
247
- when the component is placed inside a container with `overflow: auto|scroll`.
248
- Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
249
-
250
- @deprecated This property is deprecated and will be removed in the next major version.
251
- */
252
- @Input()
253
- set hoist(v: '' | SynCombobox['hoist']) {
254
- this._ngZone.runOutsideAngular(
255
- () => (this.nativeElement.hoist = v === '' || v),
256
- );
257
- }
258
- get hoist(): SynCombobox['hoist'] {
259
- return this.nativeElement.hoist;
260
- }
261
-
262
245
  /**
263
246
  * The combobox's label.
264
247
  * If you need to display HTML, use the `label` slot instead.
@@ -169,14 +169,6 @@ export default class SynCombobox extends SynergyElement implements SynergyFormCo
169
169
  */
170
170
  @property({ reflect: true, type: Boolean }) open = false;
171
171
 
172
- /**
173
- * Enable this option to prevent the listbox from being clipped,
174
- * when the component is placed inside a container with `overflow: auto|scroll`.
175
- * Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
176
- * @deprecated This property is deprecated and will be removed in the next major version.
177
- */
178
- @property({ type: Boolean }) hoist = false;
179
-
180
172
  /** The combobox's label. If you need to display HTML, use the `label` slot instead. */
181
173
  @property() label = '';
182
174
 
@@ -1002,7 +994,6 @@ export default class SynCombobox extends SynergyElement implements SynergyFormCo
1002
994
  'combobox--top': this.placement === 'top',
1003
995
  })}
1004
996
  placement=${`${this.placement}-start`}
1005
- strategy=${this.hoist ? 'fixed' : 'absolute'}
1006
997
  flip
1007
998
  shift
1008
999
  sync="width"
@@ -120,15 +120,6 @@ and `hide()` methods and this attribute will reflect the combobox's open state.
120
120
  */
121
121
  open?: SynCombobox['open'];
122
122
 
123
- /**
124
- * Enable this option to prevent the listbox from being clipped,
125
- when the component is placed inside a container with `overflow: auto|scroll`.
126
- Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
127
-
128
- @deprecated This property is deprecated and will be removed in the next major version.
129
- */
130
- hoist?: SynCombobox['hoist'];
131
-
132
123
  /**
133
124
  * The combobox's label.
134
125
  * If you need to display HTML, use the `label` slot instead.
@@ -39,7 +39,7 @@ export default css`
39
39
  * we have to adjust the rotation of the icon when the details is open.
40
40
  */
41
41
  .details--open .details__summary-icon {
42
- rotate: var(--syn-details-open-rotation, 360deg);
42
+ rotate: var(--syn-details-open-rotation);
43
43
  }
44
44
 
45
45
  /**
@@ -33,7 +33,7 @@ export default css`
33
33
  /* Overlay Background */
34
34
  .dialog__overlay {
35
35
  /* #946: Add background blur for sick 2025 */
36
- backdrop-filter: blur(var(--syn-overlay-background-blur, 0));
36
+ backdrop-filter: blur(var(--syn-overlay-background-blur));
37
37
  }
38
38
 
39
39
  /**
@@ -154,23 +154,6 @@ dropdowns that allow for multiple interactions.
154
154
  return this.nativeElement.skidding;
155
155
  }
156
156
 
157
- /**
158
- * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
159
- `overflow: auto|scroll`.
160
- * Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
161
-
162
- @deprecated This property is deprecated and will be removed in the next major version.
163
- */
164
- @Input()
165
- set hoist(v: '' | SynDropdown['hoist']) {
166
- this._ngZone.runOutsideAngular(
167
- () => (this.nativeElement.hoist = v === '' || v),
168
- );
169
- }
170
- get hoist(): SynDropdown['hoist'] {
171
- return this.nativeElement.hoist;
172
- }
173
-
174
157
  /**
175
158
  * Syncs the popup width or height to that of the trigger element.
176
159
  */
@@ -108,13 +108,6 @@ export default class SynDropdown extends SynergyElement {
108
108
  /** The distance in pixels from which to offset the panel along its trigger. */
109
109
  @property({ type: Number }) skidding = 0;
110
110
 
111
- /**
112
- * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
113
- * `overflow: auto|scroll`. Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
114
- * @deprecated This property is deprecated and will be removed in the next major version.
115
- */
116
- @property({ type: Boolean }) hoist = false;
117
-
118
111
  /**
119
112
  * Syncs the popup width or height to that of the trigger element.
120
113
  */
@@ -438,7 +431,6 @@ export default class SynDropdown extends SynergyElement {
438
431
  placement=${this.placement}
439
432
  distance=${this.distance}
440
433
  skidding=${this.skidding}
441
- strategy=${this.hoist ? 'fixed' : 'absolute'}
442
434
  flip
443
435
  shift
444
436
  auto-size="vertical"
@@ -84,15 +84,6 @@ dropdowns that allow for multiple interactions.
84
84
  */
85
85
  skidding?: SynDropdown['skidding'];
86
86
 
87
- /**
88
- * Enable this option to prevent the panel from being clipped when the component is placed inside a container with
89
- `overflow: auto|scroll`.
90
- * Hoisting uses a fixed positioning strategy that works in many, but not all, scenarios.
91
-
92
- @deprecated This property is deprecated and will be removed in the next major version.
93
- */
94
- hoist?: SynDropdown['hoist'];
95
-
96
87
  /**
97
88
  * Syncs the popup width or height to that of the trigger element.
98
89
  */
@@ -77,13 +77,13 @@ export default css`
77
77
  */
78
78
  .form-control--user-dragging:not([disabled]) .button::part(base) {
79
79
  background: none;
80
- border-color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
81
- color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
80
+ border-color: var(--syn-interactive-emphasis-color-hover);
81
+ color: var(--syn-interactive-emphasis-color-hover);
82
82
  }
83
83
 
84
84
  /* Drop Area */
85
85
  .droparea {
86
- --highlight-color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
86
+ --highlight-color: var(--syn-interactive-emphasis-color);
87
87
 
88
88
  border: var(--syn-input-border-width) dashed var(--syn-input-border-color);
89
89
  border-radius: var(--syn-input-border-radius-medium);
@@ -93,7 +93,7 @@ export default css`
93
93
  }
94
94
 
95
95
  .droparea:focus-visible {
96
- border: var(--syn-input-border-width) dashed var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
96
+ border: var(--syn-input-border-width) dashed var(--syn-interactive-emphasis-color);
97
97
  outline: var(--syn-focus-ring);
98
98
  outline-offset: var(--syn-focus-ring-offset);
99
99
  }
@@ -161,12 +161,12 @@ export default css`
161
161
 
162
162
  :host(:not([disabled])) .form-control--user-dragging .droparea {
163
163
  background: var(--syn-color-primary-50);
164
- border: var(--syn-input-border-width) solid var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
164
+ border: var(--syn-input-border-width) solid var(--syn-interactive-emphasis-color);
165
165
  cursor: pointer;
166
166
  }
167
167
 
168
168
  :host(:not([disabled])) .droparea:not(:focus-visible):hover {
169
- --highlight-color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
169
+ --highlight-color: var(--syn-interactive-emphasis-color-hover);
170
170
 
171
171
  border: var(--syn-input-border-width) dashed var(--syn-input-border-color-hover);
172
172
  cursor: pointer;
@@ -7,7 +7,7 @@ export default css`
7
7
 
8
8
  .header {
9
9
  background: var(--syn-panel-background-color);
10
- box-shadow: inset 0 -1px 0 0 var(--syn-header-border-color, var(--syn-color-neutral-400));
10
+ box-shadow: inset 0 -1px 0 0 var(--syn-header-border-color);
11
11
  }
12
12
 
13
13
  /**
@@ -39,7 +39,7 @@ export default css`
39
39
  */
40
40
  .header__logo ::slotted(a),
41
41
  .header__logo ::slotted(a:hover) {
42
- color: var(--syn-logo-color, var(--syn-color-primary-600));
42
+ color: var(--syn-logo-color);
43
43
  }
44
44
 
45
45
  .header__logo ::slotted(a:is(:focus-visible)) {
@@ -52,7 +52,7 @@ export default css`
52
52
  */
53
53
  .header__logo syn-icon,
54
54
  .header__logo syn-icon::part(svg) {
55
- color: var(--syn-logo-color, var(--syn-color-primary-600));
55
+ color: var(--syn-logo-color);
56
56
  height: 32px;
57
57
  width: auto;
58
58
  }
@@ -78,7 +78,7 @@ export default css`
78
78
  }
79
79
 
80
80
  .header__meta-navigation ::slotted(*) {
81
- color: var(--syn-interactive-quiet-color, var(--syn-color-neutral-950));
81
+ color: var(--syn-interactive-quiet-color);
82
82
  display: contents;
83
83
  font-size: var(--syn-font-size-x-large);
84
84
  }
@@ -97,7 +97,7 @@ export default css`
97
97
  align-items: center;
98
98
  background: none;
99
99
  border: none;
100
- color: var(--syn-interactive-quiet-color, var(--syn-color-neutral-950));
100
+ color: var(--syn-interactive-quiet-color);
101
101
  cursor: pointer;
102
102
  display: flex;
103
103
  font-size: var(--syn-font-size-x-large);
@@ -107,11 +107,11 @@ export default css`
107
107
  }
108
108
 
109
109
  .header__burger-menu-toggle:hover {
110
- color: var(--syn-interactive-quiet-color-hover, var(--syn-color-primary-600));
110
+ color: var(--syn-interactive-quiet-color-hover);
111
111
  }
112
112
 
113
113
  .header__burger-menu-toggle:active {
114
- color: var(--syn-interactive-quiet-color-active, var(--syn-color-primary-700));
114
+ color: var(--syn-interactive-quiet-color-active);
115
115
  }
116
116
 
117
117
  .header__burger-menu-toggle:focus-visible {
@@ -16,7 +16,7 @@ export default css`
16
16
 
17
17
  /* Remove round borders */
18
18
  .icon-button:focus-visible {
19
- border-radius: var(--syn-icon-button-focus-ring-border-radius, var(--syn-border-radius-none));
19
+ border-radius: var(--syn-icon-button-focus-ring-border-radius);
20
20
  }
21
21
 
22
22
  /* Colors */
@@ -26,31 +26,31 @@ export default css`
26
26
 
27
27
  :host([color="primary"]),
28
28
  :host([color="primary"]) .icon-button:focus-visible:not(.icon-button--disabled) {
29
- color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
29
+ color: var(--syn-interactive-emphasis-color);
30
30
  }
31
31
 
32
32
  :host([color="primary"]) .icon-button:hover:not(.icon-button--disabled) {
33
- color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
33
+ color: var(--syn-interactive-emphasis-color-hover);
34
34
  }
35
35
 
36
36
  :host([color="primary"]) .icon-button:active:not(.icon-button--disabled) {
37
- color: var(--syn-interactive-emphasis-color-active, var(--syn-color-primary-950));
37
+ color: var(--syn-interactive-emphasis-color-active);
38
38
  }
39
39
 
40
40
  :host([color="neutral"]) {
41
- color: var(--syn-interactive-quiet-color, var(--syn-typography-color-text));
41
+ color: var(--syn-interactive-quiet-color);
42
42
  }
43
43
 
44
44
  :host([color="neutral"]) .icon-button:hover:not(.icon-button--disabled) {
45
- color: var(--syn-interactive-quiet-color-hover, var(--syn-color-primary-600));
45
+ color: var(--syn-interactive-quiet-color-hover);
46
46
  }
47
47
 
48
48
  :host([color="neutral"]) .icon-button:active:not(.icon-button--disabled) {
49
- color: var(--syn-interactive-quiet-color-active, var(--syn-color-primary-700));
49
+ color: var(--syn-interactive-quiet-color-active);
50
50
  }
51
51
 
52
52
  :host([color="neutral"]) .icon-button:focus-visible:not(.icon-button--disabled):not(:hover) {
53
- color: var(--syn-interactive-quiet-color, var(--syn-typography-color-text));
53
+ color: var(--syn-interactive-quiet-color);
54
54
  }
55
55
 
56
56
  /* Sizes */
@@ -225,7 +225,7 @@ export default css`
225
225
  align-items: center;
226
226
  background: none;
227
227
  border: none;
228
- color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
228
+ color: var(--syn-interactive-emphasis-color);
229
229
  cursor: pointer;
230
230
  display: flex;
231
231
  padding: var(--syn-spacing-x-small);
@@ -245,11 +245,11 @@ export default css`
245
245
  }
246
246
 
247
247
  .input__number-stepper-button:hover:not([disabled]) {
248
- color: var(--syn-interactive-emphasis-color-hover, var(--syn-color-primary-900));
248
+ color: var(--syn-interactive-emphasis-color-hover);
249
249
  }
250
250
 
251
251
  .input__number-stepper-button:active:not([disabled]) {
252
- color: var(--syn-interactive-emphasis-color-active, var(--syn-color-primary-950));
252
+ color: var(--syn-interactive-emphasis-color-active);
253
253
  }
254
254
 
255
255
  .input__number-stepper-button[disabled] {
@@ -264,7 +264,7 @@ export default class SynInput extends SynergyElement implements SynergyFormContr
264
264
  type: Number,
265
265
  }) maxFractionDigits: number;
266
266
 
267
- #numericStrategy: NumericStrategy = nativeNumericStrategy;
267
+ #numericStrategy: NumericStrategy = modernNumericStrategy;
268
268
 
269
269
  /**
270
270
  * Defines the strategy for handling numbers in the numeric input.
@@ -305,8 +305,7 @@ export default class SynInput extends SynergyElement implements SynergyFormContr
305
305
  }
306
306
 
307
307
  /**
308
- * @default nativeNumericStrategy
309
- * @todo: This must be changed to "modern" in Synergy@3
308
+ * @default modernNumericStrategy
310
309
  */
311
310
  get numericStrategy(): 'native' | 'modern' | Partial<NumericStrategy> {
312
311
  return this.#numericStrategy;
@@ -31,7 +31,7 @@ export default css`
31
31
  /* Border Radius needs to be increased to cover the outline */
32
32
  border-radius: calc(var(--syn-focus-ring-border-radius) + var(--menuitem-inset-border-vertical));
33
33
  border-width: var(--menuitem-inset-border-horizontal) var(--menuitem-inset-border-vertical);
34
- color: var(--syn-option-color, var(--syn-typography-color-text));
34
+ color: var(--syn-option-color);
35
35
  font-size: var(--menuitem-font-size);
36
36
 
37
37
  /* Height is dependent on line-height of .option__label, which does not fit completely to layout */
@@ -40,7 +40,7 @@ export default css`
40
40
  }
41
41
 
42
42
  :host(:focus-visible) .menu-item {
43
- background-color: var(--syn-option-background-color-active, var(--syn-color-neutral-1000));
43
+ background-color: var(--syn-option-background-color-active);
44
44
  }
45
45
 
46
46
  /** #429: Use token for opacity */
@@ -64,26 +64,26 @@ export default css`
64
64
  */
65
65
  .menu-item .menu-item__prefix::slotted(syn-icon),
66
66
  .menu-item .menu-item__suffix::slotted(syn-icon) {
67
- color: var(--syn-option-icon-color, var(--syn-typography-color-text));
67
+ color: var(--syn-option-icon-color);
68
68
  font-size: var(--syn-font-size-x-large);
69
69
  }
70
70
 
71
71
  :host(:hover) .menu-item .menu-item__prefix::slotted(syn-icon),
72
72
  :host(:hover) .menu-item__suffix::slotted(syn-icon) {
73
- color: var(--syn-option-icon-color-hover, var(--syn-typography-color-text-inverted));
73
+ color: var(--syn-option-icon-color-hover);
74
74
  }
75
75
 
76
76
  :host(:focus-visible) .menu-item .menu-item__prefix::slotted(syn-icon),
77
77
  :host(:focus-visible) .menu-item .menu-item__suffix::slotted(syn-icon) {
78
- color: var(--syn-option-icon-color-active, var(--syn-typography-color-text-inverted));
78
+ color: var(--syn-option-icon-color-active);
79
79
  }
80
80
 
81
81
  /* Adjust background and text color for focused elements */
82
82
  /* stylelint-disable selector-not-notation, plugin/no-unsupported-browser-features */
83
83
  :host(:hover:not([aria-disabled='true'], :focus-visible)) .menu-item,
84
84
  .menu-item--submenu-expanded {
85
- background-color: var(--syn-option-background-color-hover, var(--syn-color-neutral-1000));
86
- color: var(--syn-option-color-hover, var(--syn-typography-color-text-inverted));
85
+ background-color: var(--syn-option-background-color-hover);
86
+ color: var(--syn-option-color-hover);
87
87
  }
88
88
  /* stylelint-enable selector-not-notation, plugin/no-unsupported-browser-features */
89
89
 
@@ -106,7 +106,7 @@ export default css`
106
106
  }
107
107
 
108
108
  .menu-item .menu-item__check {
109
- color: var(--syn-option-check-color, var(--syn-color-primary-600));
109
+ color: var(--syn-option-check-color);
110
110
  margin-inline-end: var(--syn-spacing-small);
111
111
  }
112
112
 
@@ -121,11 +121,11 @@ export default css`
121
121
  * Make sure the checkbox is also visible when the item is active
122
122
  */
123
123
  :host(:focus-visible) .menu-item--checked .menu-item__check {
124
- color: var(--syn-option-check-color-active, var(--syn-color-neutral-0));
124
+ color: var(--syn-option-check-color-active);
125
125
  }
126
126
 
127
127
  :host(:hover) .menu-item--checked .menu-item__check {
128
- color: var(--syn-option-check-color-hover, var(--syn-color-neutral-0));
128
+ color: var(--syn-option-check-color-hover);
129
129
  }
130
130
 
131
131
  /**
@@ -159,7 +159,7 @@ export default css`
159
159
  .menu-item--loading syn-spinner {
160
160
  --track-width: 2px;
161
161
 
162
- color: var(--syn-interactive-emphasis-color, var(--syn-color-primary-700));
162
+ color: var(--syn-interactive-emphasis-color);
163
163
  font-size: var(--syn-font-size-medium);
164
164
  left: calc(var(--menuitem-padding) - var(--menuitem-inset-border-vertical));
165
165
  }
@@ -103,7 +103,7 @@ export default css`
103
103
  * Basic set up for the nav item prefix.
104
104
  */
105
105
  .nav-item:not(.nav-item--disabled)::before {
106
- background: var(--syn-interactive-background-color-hover, var(--syn-color-neutral-50));
106
+ background: var(--syn-interactive-background-color-hover);
107
107
  content: '';
108
108
  display: block;
109
109
  height: 100%;
@@ -127,7 +127,7 @@ export default css`
127
127
  * #443: Add support for active state
128
128
  */
129
129
  .nav-item:not(.nav-item--disabled):active::before {
130
- background: var(--syn-interactive-background-color-active, var(--syn-color-neutral-50));
130
+ background: var(--syn-interactive-background-color-active);
131
131
  opacity: 1;
132
132
  }
133
133
 
@@ -267,7 +267,7 @@ export default css`
267
267
  }
268
268
 
269
269
  .current-indicator--visible {
270
- background: var(--syn-interactive-emphasis-color, var(--syn-color-primary-600));
270
+ background: var(--syn-interactive-emphasis-color);
271
271
  }
272
272
 
273
273
  .nav-item--horizontal .current-indicator {