@synergy-design-system/mcp 2.13.4 → 2.14.1
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.
- package/CHANGELOG.md +21 -0
- package/metadata/checksum.txt +1 -1
- package/metadata/packages/components/components/syn-dialog/component.styles.ts +43 -35
- package/metadata/packages/components/components/syn-dialog/component.ts +30 -22
- package/metadata/packages/components/static/CHANGELOG.md +29 -56
- package/metadata/packages/styles/index.css +1 -1
- package/metadata/packages/styles/link-list.css +1 -1
- package/metadata/packages/styles/link.css +1 -1
- package/metadata/packages/styles/tables.css +1 -1
- package/metadata/packages/styles/typography.css +1 -1
- package/metadata/packages/tokens/CHANGELOG.md +4 -0
- package/metadata/packages/tokens/dark.css +1 -1
- package/metadata/packages/tokens/index.js +1 -1
- package/metadata/packages/tokens/light.css +1 -1
- package/metadata/packages/tokens/sick2018_dark.css +1 -1
- package/metadata/packages/tokens/sick2018_light.css +1 -1
- package/metadata/packages/tokens/sick2025_dark.css +1 -1
- package/metadata/packages/tokens/sick2025_light.css +1 -1
- package/metadata/static/templates/localization.md +279 -0
- package/package.json +5 -5
- package/metadata/packages/components/components/syn-dialog/component.custom.styles.ts +0 -60
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,26 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 2.14.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1252](https://github.com/synergy-design-system/synergy-design-system/pull/1252) [`9d36167`](https://github.com/synergy-design-system/synergy-design-system/commit/9d36167d35ebbdd43820d520140d6823e1331ea1) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-04-20
|
|
8
|
+
|
|
9
|
+
fix: 🐛 syn-dialog has broken scrolling when slotting scrollable children (#1249)
|
|
10
|
+
|
|
11
|
+
## 2.14.0
|
|
12
|
+
|
|
13
|
+
### Minor Changes
|
|
14
|
+
|
|
15
|
+
- [#1247](https://github.com/synergy-design-system/synergy-design-system/pull/1247) [`b3ab501`](https://github.com/synergy-design-system/synergy-design-system/commit/b3ab50132ec4ab770b79fa32b1334a1054c60746) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-04-15
|
|
16
|
+
|
|
17
|
+
feat: ✨ Updates to the Synergy translation System (#452, #1242, #1248)
|
|
18
|
+
|
|
19
|
+
This release adds translations for all officially supported languages, as well as documentation about how to use Synergies translation system.
|
|
20
|
+
It also removes unneeded dependencies from the components package:
|
|
21
|
+
- `@shoelace-style/translate` has reached end of live. We forked the original code to make sure it receives updates in Synergy if needed.
|
|
22
|
+
- `@shoelace-style/animation` was never used internally.
|
|
23
|
+
|
|
3
24
|
## 2.13.4
|
|
4
25
|
|
|
5
26
|
### Patch Changes
|
package/metadata/checksum.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
1
|
+
b270e08896f2966f7f6efa8f2dbde907
|
|
@@ -1,39 +1,35 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
2
1
|
import { css } from 'lit';
|
|
3
2
|
|
|
4
3
|
export default css`
|
|
5
|
-
/* stylelint-disable */
|
|
6
4
|
:host {
|
|
7
5
|
--width: 31rem;
|
|
8
|
-
--header-spacing: var(--syn-spacing-large);
|
|
9
|
-
--body-spacing: var(--syn-spacing-large);
|
|
10
|
-
--footer-spacing: var(--syn-spacing-large);
|
|
6
|
+
--header-spacing: var(--syn-spacing-large) var(--syn-spacing-x-small) var(--syn-spacing-large) var(--syn-spacing-large);
|
|
7
|
+
--body-spacing: var(--syn-spacing-medium) var(--syn-spacing-large);
|
|
8
|
+
--footer-spacing: var(--syn-spacing-medium) var(--syn-spacing-large) var(--syn-spacing-large) var(--syn-spacing-medium);
|
|
11
9
|
|
|
12
10
|
display: contents;
|
|
13
11
|
}
|
|
14
12
|
|
|
15
13
|
.dialog {
|
|
16
|
-
display: flex;
|
|
17
14
|
align-items: center;
|
|
15
|
+
display: flex;
|
|
16
|
+
inset: 0;
|
|
18
17
|
justify-content: center;
|
|
19
18
|
position: fixed;
|
|
20
|
-
top: 0;
|
|
21
|
-
right: 0;
|
|
22
|
-
bottom: 0;
|
|
23
|
-
left: 0;
|
|
24
19
|
z-index: var(--syn-z-index-dialog);
|
|
25
20
|
}
|
|
26
21
|
|
|
27
22
|
.dialog__panel {
|
|
23
|
+
background-color: var(--syn-panel-background-color);
|
|
24
|
+
border: var(--syn-spacing-4x-small) solid var(--syn-panel-border-color);
|
|
25
|
+
border-radius: var(--syn-border-radius-none);
|
|
26
|
+
box-shadow: var(--syn-shadow-large);
|
|
28
27
|
display: flex;
|
|
29
28
|
flex-direction: column;
|
|
30
|
-
z-index: 2;
|
|
31
|
-
width: var(--width);
|
|
32
|
-
max-width: calc(100% - var(--syn-spacing-2x-large));
|
|
33
29
|
max-height: calc(100% - var(--syn-spacing-2x-large));
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
30
|
+
max-width: calc(100% - var(--syn-spacing-2x-large));
|
|
31
|
+
width: var(--width);
|
|
32
|
+
z-index: 2;
|
|
37
33
|
}
|
|
38
34
|
|
|
39
35
|
.dialog__panel:focus {
|
|
@@ -41,7 +37,7 @@ export default css`
|
|
|
41
37
|
}
|
|
42
38
|
|
|
43
39
|
/* Ensure there's enough vertical padding for phones that don't update vh when chrome appears (e.g. iPhone) */
|
|
44
|
-
@media screen and (
|
|
40
|
+
@media screen and (width <= 420px) {
|
|
45
41
|
.dialog__panel {
|
|
46
42
|
max-height: 80vh;
|
|
47
43
|
}
|
|
@@ -53,48 +49,62 @@ export default css`
|
|
|
53
49
|
}
|
|
54
50
|
|
|
55
51
|
.dialog__header {
|
|
56
|
-
flex: 0 0 auto;
|
|
57
52
|
display: flex;
|
|
53
|
+
flex: 0 0 auto;
|
|
58
54
|
}
|
|
59
55
|
|
|
60
56
|
.dialog__title {
|
|
61
57
|
flex: 1 1 auto;
|
|
62
58
|
font: inherit;
|
|
63
|
-
font-
|
|
64
|
-
|
|
65
|
-
|
|
59
|
+
font-family: var(--syn-font-sans);
|
|
60
|
+
font-size: var(--syn-font-size-x-large);
|
|
61
|
+
font-weight: var(--syn-font-weight-bold);
|
|
62
|
+
line-height: var(--syn-line-height-normal);
|
|
66
63
|
margin: 0;
|
|
64
|
+
padding: var(--header-spacing);
|
|
67
65
|
}
|
|
68
66
|
|
|
69
67
|
.dialog__header-actions {
|
|
70
|
-
|
|
68
|
+
align-items: flex-start;
|
|
71
69
|
display: flex;
|
|
70
|
+
flex-shrink: 0;
|
|
72
71
|
flex-wrap: wrap;
|
|
72
|
+
gap: var(--syn-spacing-x-small);
|
|
73
73
|
justify-content: end;
|
|
74
|
-
|
|
75
|
-
|
|
74
|
+
padding: var(--syn-spacing-large) var(--syn-spacing-small) var(--syn-spacing-large) 0;
|
|
75
|
+
}
|
|
76
|
+
|
|
77
|
+
/**
|
|
78
|
+
* We need this to make sure we are big enough as defined in the layout
|
|
79
|
+
* When omitting this statement, we will get rounding problems via line-height
|
|
80
|
+
*/
|
|
81
|
+
.dialog__title,
|
|
82
|
+
.dialog__header-actions {
|
|
83
|
+
min-height: 88px;
|
|
76
84
|
}
|
|
77
85
|
|
|
78
86
|
.dialog__header-actions syn-icon-button,
|
|
79
87
|
.dialog__header-actions ::slotted(syn-icon-button) {
|
|
80
|
-
flex: 0 0 auto;
|
|
81
|
-
display: flex;
|
|
82
88
|
align-items: center;
|
|
83
|
-
|
|
89
|
+
color: var(--syn-color-neutral-950);
|
|
90
|
+
display: flex;
|
|
91
|
+
flex: 0 0 auto;
|
|
92
|
+
font-size: var(--syn-font-size-x-large);
|
|
84
93
|
}
|
|
85
94
|
|
|
86
95
|
.dialog__body {
|
|
87
|
-
flex: 1 1 auto;
|
|
88
96
|
display: block;
|
|
89
|
-
|
|
97
|
+
flex: 1 1 auto;
|
|
90
98
|
overflow: auto;
|
|
91
99
|
-webkit-overflow-scrolling: touch;
|
|
100
|
+
padding: var(--body-spacing);
|
|
101
|
+
will-change: transform; /* #1249: Fixes Chrome scroll issues when using multiple scrollable items as content */
|
|
92
102
|
}
|
|
93
103
|
|
|
94
104
|
.dialog__footer {
|
|
95
105
|
flex: 0 0 auto;
|
|
96
|
-
text-align: right;
|
|
97
106
|
padding: var(--footer-spacing);
|
|
107
|
+
text-align: right;
|
|
98
108
|
}
|
|
99
109
|
|
|
100
110
|
.dialog__footer ::slotted(syn-button:not(:first-of-type)) {
|
|
@@ -106,12 +116,10 @@ export default css`
|
|
|
106
116
|
}
|
|
107
117
|
|
|
108
118
|
.dialog__overlay {
|
|
109
|
-
|
|
110
|
-
top: 0;
|
|
111
|
-
right: 0;
|
|
112
|
-
bottom: 0;
|
|
113
|
-
left: 0;
|
|
119
|
+
backdrop-filter: blur(var(--syn-overlay-background-blur)); /* #946: Add background blur for sick 2025 */
|
|
114
120
|
background-color: var(--syn-overlay-background-color);
|
|
121
|
+
inset: 0;
|
|
122
|
+
position: fixed;
|
|
115
123
|
}
|
|
116
124
|
|
|
117
125
|
@media (forced-colors: active) {
|
|
@@ -1,14 +1,15 @@
|
|
|
1
|
-
/* eslint-disable */
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-floating-promises */
|
|
2
|
+
import { classMap } from 'lit/directives/class-map.js';
|
|
3
|
+
import { html } from 'lit';
|
|
4
|
+
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
5
|
+
import { property, query } from 'lit/decorators.js';
|
|
6
|
+
import type { CSSResultGroup } from 'lit';
|
|
2
7
|
import { animateTo, stopAnimations } from '../../internal/animate.js';
|
|
3
8
|
import { blurActiveElement } from '../../internal/closeActiveElement.js';
|
|
4
|
-
import { classMap } from 'lit/directives/class-map.js';
|
|
5
9
|
import { getAnimation, setDefaultAnimation } from '../../utilities/animation-registry.js';
|
|
6
10
|
import { HasSlotController } from '../../internal/slot.js';
|
|
7
|
-
import { html } from 'lit';
|
|
8
|
-
import { ifDefined } from 'lit/directives/if-defined.js';
|
|
9
11
|
import { LocalizeController } from '../../utilities/localize.js';
|
|
10
12
|
import { lockBodyScrolling, unlockBodyScrolling } from '../../internal/scroll.js';
|
|
11
|
-
import { property, query } from 'lit/decorators.js';
|
|
12
13
|
import { waitForEvent } from '../../internal/event.js';
|
|
13
14
|
import { watch } from '../../internal/watch.js';
|
|
14
15
|
import componentStyles from '../../styles/component.styles.js';
|
|
@@ -16,8 +17,6 @@ import Modal from '../../internal/modal.js';
|
|
|
16
17
|
import SynergyElement from '../../internal/synergy-element.js';
|
|
17
18
|
import SynIconButton from '../icon-button/icon-button.component.js';
|
|
18
19
|
import styles from './dialog.styles.js';
|
|
19
|
-
import customStyles from './dialog.custom.styles.js';
|
|
20
|
-
import type { CSSResultGroup } from 'lit';
|
|
21
20
|
|
|
22
21
|
/**
|
|
23
22
|
* @summary Dialogs, sometimes called "modals", appear above the page and require the user's immediate attention.
|
|
@@ -70,26 +69,33 @@ import type { CSSResultGroup } from 'lit';
|
|
|
70
69
|
* the third-party modal opens. Upon closing, call `modal.deactivateExternal()` to restore Synergy's focus trapping.
|
|
71
70
|
*/
|
|
72
71
|
export default class SynDialog extends SynergyElement {
|
|
73
|
-
static styles: CSSResultGroup = [componentStyles, styles
|
|
72
|
+
static styles: CSSResultGroup = [componentStyles, styles];
|
|
73
|
+
|
|
74
74
|
static dependencies = {
|
|
75
|
-
'syn-icon-button': SynIconButton
|
|
75
|
+
'syn-icon-button': SynIconButton,
|
|
76
76
|
};
|
|
77
77
|
|
|
78
78
|
private readonly hasSlotController = new HasSlotController(this, 'footer');
|
|
79
|
+
|
|
79
80
|
private readonly localize = new LocalizeController(this);
|
|
81
|
+
|
|
80
82
|
private originalTrigger: HTMLElement | null;
|
|
83
|
+
|
|
81
84
|
public modal = new Modal(this);
|
|
85
|
+
|
|
82
86
|
private closeWatcher: CloseWatcher | null;
|
|
83
87
|
|
|
84
88
|
@query('.dialog') dialog: HTMLElement;
|
|
89
|
+
|
|
85
90
|
@query('.dialog__panel') panel: HTMLElement;
|
|
91
|
+
|
|
86
92
|
@query('.dialog__overlay') overlay: HTMLElement;
|
|
87
93
|
|
|
88
94
|
/**
|
|
89
95
|
* Indicates whether or not the dialog is open. You can toggle this attribute to show and hide the dialog, or you can
|
|
90
96
|
* use the `show()` and `hide()` methods and this attribute will reflect the dialog's open state.
|
|
91
97
|
*/
|
|
92
|
-
@property({
|
|
98
|
+
@property({ reflect: true, type: Boolean }) open = false;
|
|
93
99
|
|
|
94
100
|
/**
|
|
95
101
|
* The dialog's label as displayed in the header. You should always include a relevant label even when using
|
|
@@ -101,7 +107,7 @@ export default class SynDialog extends SynergyElement {
|
|
|
101
107
|
* Disables the header. This will also remove the default close button, so please ensure you provide an easy,
|
|
102
108
|
* accessible way for users to dismiss the dialog.
|
|
103
109
|
*/
|
|
104
|
-
@property({ attribute: 'no-header',
|
|
110
|
+
@property({ attribute: 'no-header', reflect: true, type: Boolean }) noHeader = false;
|
|
105
111
|
|
|
106
112
|
firstUpdated() {
|
|
107
113
|
this.dialog.hidden = !this.open;
|
|
@@ -123,7 +129,7 @@ export default class SynDialog extends SynergyElement {
|
|
|
123
129
|
private requestClose(source: 'close-button' | 'keyboard' | 'overlay') {
|
|
124
130
|
const slRequestClose = this.emit('syn-request-close', {
|
|
125
131
|
cancelable: true,
|
|
126
|
-
detail: { source }
|
|
132
|
+
detail: { source },
|
|
127
133
|
});
|
|
128
134
|
|
|
129
135
|
if (slRequestClose.defaultPrevented) {
|
|
@@ -205,7 +211,7 @@ export default class SynDialog extends SynergyElement {
|
|
|
205
211
|
const overlayAnimation = getAnimation(this, 'dialog.overlay.show', { dir: this.localize.dir() });
|
|
206
212
|
await Promise.all([
|
|
207
213
|
animateTo(this.panel, panelAnimation.keyframes, panelAnimation.options),
|
|
208
|
-
animateTo(this.overlay, overlayAnimation.keyframes, overlayAnimation.options)
|
|
214
|
+
animateTo(this.overlay, overlayAnimation.keyframes, overlayAnimation.options),
|
|
209
215
|
]);
|
|
210
216
|
|
|
211
217
|
this.emit('syn-after-show');
|
|
@@ -229,7 +235,7 @@ export default class SynDialog extends SynergyElement {
|
|
|
229
235
|
}),
|
|
230
236
|
animateTo(this.panel, panelAnimation.keyframes, panelAnimation.options).then(() => {
|
|
231
237
|
this.panel.hidden = true;
|
|
232
|
-
})
|
|
238
|
+
}),
|
|
233
239
|
]);
|
|
234
240
|
|
|
235
241
|
this.dialog.hidden = true;
|
|
@@ -271,13 +277,14 @@ export default class SynDialog extends SynergyElement {
|
|
|
271
277
|
}
|
|
272
278
|
|
|
273
279
|
render() {
|
|
280
|
+
/* eslint-disable lit-a11y/click-events-have-key-events */
|
|
274
281
|
return html`
|
|
275
282
|
<div
|
|
276
283
|
part="base"
|
|
277
284
|
class=${classMap({
|
|
278
285
|
dialog: true,
|
|
286
|
+
'dialog--has-footer': this.hasSlotController.test('footer'),
|
|
279
287
|
'dialog--open': this.open,
|
|
280
|
-
'dialog--has-footer': this.hasSlotController.test('footer')
|
|
281
288
|
})}
|
|
282
289
|
>
|
|
283
290
|
<div part="overlay" class="dialog__overlay" @click=${() => this.requestClose('overlay')} tabindex="-1"></div>
|
|
@@ -324,36 +331,37 @@ export default class SynDialog extends SynergyElement {
|
|
|
324
331
|
</div>
|
|
325
332
|
</div>
|
|
326
333
|
`;
|
|
334
|
+
/* eslint-enable lit-a11y/click-events-have-key-events */
|
|
327
335
|
}
|
|
328
336
|
}
|
|
329
337
|
|
|
330
338
|
setDefaultAnimation('dialog.show', {
|
|
331
339
|
keyframes: [
|
|
332
340
|
{ opacity: 0, scale: 0.8 },
|
|
333
|
-
{ opacity: 1, scale: 1 }
|
|
341
|
+
{ opacity: 1, scale: 1 },
|
|
334
342
|
],
|
|
335
|
-
options: { duration: 250, easing: 'ease' }
|
|
343
|
+
options: { duration: 250, easing: 'ease' },
|
|
336
344
|
});
|
|
337
345
|
|
|
338
346
|
setDefaultAnimation('dialog.hide', {
|
|
339
347
|
keyframes: [
|
|
340
348
|
{ opacity: 1, scale: 1 },
|
|
341
|
-
{ opacity: 0, scale: 0.8 }
|
|
349
|
+
{ opacity: 0, scale: 0.8 },
|
|
342
350
|
],
|
|
343
|
-
options: { duration: 250, easing: 'ease' }
|
|
351
|
+
options: { duration: 250, easing: 'ease' },
|
|
344
352
|
});
|
|
345
353
|
|
|
346
354
|
setDefaultAnimation('dialog.denyClose', {
|
|
347
355
|
keyframes: [{ scale: 1 }, { scale: 1.02 }, { scale: 1 }],
|
|
348
|
-
options: { duration: 250 }
|
|
356
|
+
options: { duration: 250 },
|
|
349
357
|
});
|
|
350
358
|
|
|
351
359
|
setDefaultAnimation('dialog.overlay.show', {
|
|
352
360
|
keyframes: [{ opacity: 0 }, { opacity: 1 }],
|
|
353
|
-
options: { duration: 250 }
|
|
361
|
+
options: { duration: 250 },
|
|
354
362
|
});
|
|
355
363
|
|
|
356
364
|
setDefaultAnimation('dialog.overlay.hide', {
|
|
357
365
|
keyframes: [{ opacity: 1 }, { opacity: 0 }],
|
|
358
|
-
options: { duration: 250 }
|
|
366
|
+
options: { duration: 250 },
|
|
359
367
|
});
|
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.11.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1252](https://github.com/synergy-design-system/synergy-design-system/pull/1252) [`9d36167`](https://github.com/synergy-design-system/synergy-design-system/commit/9d36167d35ebbdd43820d520140d6823e1331ea1) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-04-20
|
|
8
|
+
|
|
9
|
+
fix: 🐛 syn-dialog has broken scrolling when slotting scrollable children (#1249)
|
|
10
|
+
|
|
11
|
+
- Updated dependencies []:
|
|
12
|
+
- @synergy-design-system/tokens@3.11.1
|
|
13
|
+
|
|
14
|
+
## 3.11.0
|
|
15
|
+
|
|
16
|
+
### Minor Changes
|
|
17
|
+
|
|
18
|
+
- [#1247](https://github.com/synergy-design-system/synergy-design-system/pull/1247) [`b3ab501`](https://github.com/synergy-design-system/synergy-design-system/commit/b3ab50132ec4ab770b79fa32b1334a1054c60746) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-04-15
|
|
19
|
+
|
|
20
|
+
feat: ✨ Updates to the Synergy translation System (#452, #1242, #1248)
|
|
21
|
+
|
|
22
|
+
This release adds translations for all officially supported languages, as well as documentation about how to use Synergies translation system.
|
|
23
|
+
It also removes unneeded dependencies from the components package:
|
|
24
|
+
- `@shoelace-style/translate` has reached end of live. We forked the original code to make sure it receives updates in Synergy if needed.
|
|
25
|
+
- `@shoelace-style/animation` was never used internally.
|
|
26
|
+
|
|
27
|
+
### Patch Changes
|
|
28
|
+
|
|
29
|
+
- Updated dependencies []:
|
|
30
|
+
- @synergy-design-system/tokens@3.11.0
|
|
31
|
+
|
|
3
32
|
## 3.10.5
|
|
4
33
|
|
|
5
34
|
### Patch Changes
|
|
@@ -71,62 +100,6 @@
|
|
|
71
100
|
This release adds the possiblity to use `<syn-divider>` as a separator between items in the `<syn-header>` metanavigation.
|
|
72
101
|
It will automatically set the correct `height` on vertically aligned `<syn-dividers>`.
|
|
73
102
|
|
|
74
|
-
You may use it via:
|
|
75
|
-
|
|
76
|
-
```html
|
|
77
|
-
<syn-header label="App Name">
|
|
78
|
-
<nav slot="meta-navigation">
|
|
79
|
-
<syn-icon-button
|
|
80
|
-
name="settings_outline"
|
|
81
|
-
label="Settings"
|
|
82
|
-
></syn-icon-button>
|
|
83
|
-
<syn-icon-button
|
|
84
|
-
name="insert_chart_outlined"
|
|
85
|
-
label="Analytics"
|
|
86
|
-
></syn-icon-button>
|
|
87
|
-
<syn-divider vertical></syn-divider>
|
|
88
|
-
<syn-icon-button name="dark_mode" label="Dark Mode"></syn-icon-button>
|
|
89
|
-
<syn-divider vertical></syn-divider>
|
|
90
|
-
<syn-icon-button name="language" label="Language"></syn-icon-button>
|
|
91
|
-
<syn-icon-button name="login" label="Login"></syn-icon-button>
|
|
92
|
-
</nav>
|
|
93
|
-
</syn-header>
|
|
94
|
-
```
|
|
95
|
-
|
|
96
|
-
or via directly slotting the `<syn-divider>` via
|
|
97
|
-
|
|
98
|
-
```html
|
|
99
|
-
<syn-header label="App Name">
|
|
100
|
-
<syn-icon-button
|
|
101
|
-
slot="meta-navigation"
|
|
102
|
-
name="settings_outline"
|
|
103
|
-
label="Settings"
|
|
104
|
-
></syn-icon-button>
|
|
105
|
-
<syn-icon-button
|
|
106
|
-
slot="meta-navigation"
|
|
107
|
-
name="insert_chart_outlined"
|
|
108
|
-
label="Analytics"
|
|
109
|
-
></syn-icon-button>
|
|
110
|
-
<syn-divider vertical slot="meta-navigation"></syn-divider>
|
|
111
|
-
<syn-icon-button
|
|
112
|
-
slot="meta-navigation"
|
|
113
|
-
name="dark_mode"
|
|
114
|
-
label="Dark Mode"
|
|
115
|
-
></syn-icon-button>
|
|
116
|
-
<syn-divider vertical slot="meta-navigation"></syn-divider>
|
|
117
|
-
<syn-icon-button
|
|
118
|
-
slot="meta-navigation"
|
|
119
|
-
name="language"
|
|
120
|
-
label="Language"
|
|
121
|
-
></syn-icon-button>
|
|
122
|
-
<syn-icon-button
|
|
123
|
-
slot="meta-navigation"
|
|
124
|
-
name="login"
|
|
125
|
-
label="Login"
|
|
126
|
-
></syn-icon-button>
|
|
127
|
-
</syn-header>
|
|
128
|
-
```
|
|
129
|
-
|
|
130
103
|
`<syn-header>` now also exposes a new `cssproperty` `--metanavigation-item-size` that can be used to define the size of rendered `<syn-icon-buttons>`, as well as the height of `<syn-divider>`
|
|
131
104
|
|
|
132
105
|
### Patch Changes
|
|
@@ -0,0 +1,279 @@
|
|
|
1
|
+
## Dynamically Set Localizations
|
|
2
|
+
|
|
3
|
+
This example shows how to dynamically set localizations for Synergy components. This can be useful if you want to allow users to change the language of your application on the fly.
|
|
4
|
+
|
|
5
|
+
```html
|
|
6
|
+
<!-- .synergy-demo-application -->
|
|
7
|
+
<div id="localization-demo-story" class="synergy-demo-application">
|
|
8
|
+
<!-- header -->
|
|
9
|
+
<syn-header label="Localization Demo" sticky="" burger-menu="hidden">
|
|
10
|
+
<!-- meta-navigation -->
|
|
11
|
+
<nav slot="meta-navigation">
|
|
12
|
+
<syn-dropdown placement="bottom-start">
|
|
13
|
+
<div slot="trigger">
|
|
14
|
+
<syn-tooltip content="Change language" placement="bottom">
|
|
15
|
+
<syn-icon-button
|
|
16
|
+
color="neutral"
|
|
17
|
+
name="language"
|
|
18
|
+
label="Choose language"
|
|
19
|
+
size="inherit"
|
|
20
|
+
></syn-icon-button>
|
|
21
|
+
</syn-tooltip>
|
|
22
|
+
</div>
|
|
23
|
+
<syn-menu role="menu">
|
|
24
|
+
<syn-menu-item
|
|
25
|
+
type="checkbox"
|
|
26
|
+
value="cs"
|
|
27
|
+
role="menuitemcheckbox"
|
|
28
|
+
aria-checked="false"
|
|
29
|
+
aria-disabled="false"
|
|
30
|
+
tabindex="0"
|
|
31
|
+
>Čeština</syn-menu-item
|
|
32
|
+
>
|
|
33
|
+
|
|
34
|
+
<syn-menu-item
|
|
35
|
+
type="checkbox"
|
|
36
|
+
value="da"
|
|
37
|
+
role="menuitemcheckbox"
|
|
38
|
+
aria-checked="false"
|
|
39
|
+
aria-disabled="false"
|
|
40
|
+
tabindex="-1"
|
|
41
|
+
>Dansk</syn-menu-item
|
|
42
|
+
>
|
|
43
|
+
|
|
44
|
+
<syn-menu-item
|
|
45
|
+
type="checkbox"
|
|
46
|
+
checked=""
|
|
47
|
+
value="de"
|
|
48
|
+
role="menuitemcheckbox"
|
|
49
|
+
aria-checked="true"
|
|
50
|
+
aria-disabled="false"
|
|
51
|
+
tabindex="-1"
|
|
52
|
+
>Deutsch</syn-menu-item
|
|
53
|
+
>
|
|
54
|
+
|
|
55
|
+
<syn-menu-item
|
|
56
|
+
type="checkbox"
|
|
57
|
+
value="en"
|
|
58
|
+
role="menuitemcheckbox"
|
|
59
|
+
aria-checked="false"
|
|
60
|
+
aria-disabled="false"
|
|
61
|
+
tabindex="-1"
|
|
62
|
+
>English</syn-menu-item
|
|
63
|
+
>
|
|
64
|
+
|
|
65
|
+
<syn-menu-item
|
|
66
|
+
type="checkbox"
|
|
67
|
+
value="es"
|
|
68
|
+
role="menuitemcheckbox"
|
|
69
|
+
aria-checked="false"
|
|
70
|
+
aria-disabled="false"
|
|
71
|
+
tabindex="-1"
|
|
72
|
+
>Español</syn-menu-item
|
|
73
|
+
>
|
|
74
|
+
|
|
75
|
+
<syn-menu-item
|
|
76
|
+
type="checkbox"
|
|
77
|
+
value="fi"
|
|
78
|
+
role="menuitemcheckbox"
|
|
79
|
+
aria-checked="false"
|
|
80
|
+
aria-disabled="false"
|
|
81
|
+
tabindex="-1"
|
|
82
|
+
>Suomi</syn-menu-item
|
|
83
|
+
>
|
|
84
|
+
|
|
85
|
+
<syn-menu-item
|
|
86
|
+
type="checkbox"
|
|
87
|
+
value="fr"
|
|
88
|
+
role="menuitemcheckbox"
|
|
89
|
+
aria-checked="false"
|
|
90
|
+
aria-disabled="false"
|
|
91
|
+
tabindex="-1"
|
|
92
|
+
>Français</syn-menu-item
|
|
93
|
+
>
|
|
94
|
+
|
|
95
|
+
<syn-menu-item
|
|
96
|
+
type="checkbox"
|
|
97
|
+
value="it"
|
|
98
|
+
role="menuitemcheckbox"
|
|
99
|
+
aria-checked="false"
|
|
100
|
+
aria-disabled="false"
|
|
101
|
+
tabindex="-1"
|
|
102
|
+
>Italian</syn-menu-item
|
|
103
|
+
>
|
|
104
|
+
|
|
105
|
+
<syn-menu-item
|
|
106
|
+
type="checkbox"
|
|
107
|
+
value="ja"
|
|
108
|
+
role="menuitemcheckbox"
|
|
109
|
+
aria-checked="false"
|
|
110
|
+
aria-disabled="false"
|
|
111
|
+
tabindex="-1"
|
|
112
|
+
>日本語</syn-menu-item
|
|
113
|
+
>
|
|
114
|
+
|
|
115
|
+
<syn-menu-item
|
|
116
|
+
type="checkbox"
|
|
117
|
+
value="ko"
|
|
118
|
+
role="menuitemcheckbox"
|
|
119
|
+
aria-checked="false"
|
|
120
|
+
aria-disabled="false"
|
|
121
|
+
tabindex="-1"
|
|
122
|
+
>한국어</syn-menu-item
|
|
123
|
+
>
|
|
124
|
+
|
|
125
|
+
<syn-menu-item
|
|
126
|
+
type="checkbox"
|
|
127
|
+
value="nl"
|
|
128
|
+
role="menuitemcheckbox"
|
|
129
|
+
aria-checked="false"
|
|
130
|
+
aria-disabled="false"
|
|
131
|
+
tabindex="-1"
|
|
132
|
+
>Nederlands</syn-menu-item
|
|
133
|
+
>
|
|
134
|
+
|
|
135
|
+
<syn-menu-item
|
|
136
|
+
type="checkbox"
|
|
137
|
+
value="pl"
|
|
138
|
+
role="menuitemcheckbox"
|
|
139
|
+
aria-checked="false"
|
|
140
|
+
aria-disabled="false"
|
|
141
|
+
tabindex="-1"
|
|
142
|
+
>Polski</syn-menu-item
|
|
143
|
+
>
|
|
144
|
+
|
|
145
|
+
<syn-menu-item
|
|
146
|
+
type="checkbox"
|
|
147
|
+
value="pt-BR"
|
|
148
|
+
role="menuitemcheckbox"
|
|
149
|
+
aria-checked="false"
|
|
150
|
+
aria-disabled="false"
|
|
151
|
+
tabindex="-1"
|
|
152
|
+
>Português (Brasil)</syn-menu-item
|
|
153
|
+
>
|
|
154
|
+
|
|
155
|
+
<syn-menu-item
|
|
156
|
+
type="checkbox"
|
|
157
|
+
value="ru"
|
|
158
|
+
role="menuitemcheckbox"
|
|
159
|
+
aria-checked="false"
|
|
160
|
+
aria-disabled="false"
|
|
161
|
+
tabindex="-1"
|
|
162
|
+
>Русский</syn-menu-item
|
|
163
|
+
>
|
|
164
|
+
|
|
165
|
+
<syn-menu-item
|
|
166
|
+
type="checkbox"
|
|
167
|
+
value="sv"
|
|
168
|
+
role="menuitemcheckbox"
|
|
169
|
+
aria-checked="false"
|
|
170
|
+
aria-disabled="false"
|
|
171
|
+
tabindex="-1"
|
|
172
|
+
>Svenska</syn-menu-item
|
|
173
|
+
>
|
|
174
|
+
|
|
175
|
+
<syn-menu-item
|
|
176
|
+
type="checkbox"
|
|
177
|
+
value="tr"
|
|
178
|
+
role="menuitemcheckbox"
|
|
179
|
+
aria-checked="false"
|
|
180
|
+
aria-disabled="false"
|
|
181
|
+
tabindex="-1"
|
|
182
|
+
>Türkçe</syn-menu-item
|
|
183
|
+
>
|
|
184
|
+
|
|
185
|
+
<syn-menu-item
|
|
186
|
+
type="checkbox"
|
|
187
|
+
value="zh-cn"
|
|
188
|
+
role="menuitemcheckbox"
|
|
189
|
+
aria-checked="false"
|
|
190
|
+
aria-disabled="false"
|
|
191
|
+
tabindex="-1"
|
|
192
|
+
>简体中文</syn-menu-item
|
|
193
|
+
>
|
|
194
|
+
|
|
195
|
+
<syn-menu-item
|
|
196
|
+
type="checkbox"
|
|
197
|
+
value="zh-tw"
|
|
198
|
+
role="menuitemcheckbox"
|
|
199
|
+
aria-checked="false"
|
|
200
|
+
aria-disabled="false"
|
|
201
|
+
tabindex="-1"
|
|
202
|
+
>正體中文</syn-menu-item
|
|
203
|
+
>
|
|
204
|
+
</syn-menu>
|
|
205
|
+
</syn-dropdown>
|
|
206
|
+
</nav>
|
|
207
|
+
<!-- /meta-navigation -->
|
|
208
|
+
</syn-header>
|
|
209
|
+
<!-- /header -->
|
|
210
|
+
|
|
211
|
+
<!-- .synergy-demo-content -->
|
|
212
|
+
<div class="synergy-demo-content">
|
|
213
|
+
<main class="synergy-demo-main">
|
|
214
|
+
<syn-card shadow="">
|
|
215
|
+
<h1 class="syn-heading--3x-large">
|
|
216
|
+
Current selected language:
|
|
217
|
+
<span>Deutsch</span>
|
|
218
|
+
</h1>
|
|
219
|
+
<p>
|
|
220
|
+
The following example demonstrates the usage of the
|
|
221
|
+
<code><syn-file></code> component with different language
|
|
222
|
+
settings. The first item will adapt to the currently selected
|
|
223
|
+
language, while the second one uses a fixed
|
|
224
|
+
<code>lang="en"</code> attribute, making it fixed to English
|
|
225
|
+
regardless of the selected language.
|
|
226
|
+
</p>
|
|
227
|
+
<p>
|
|
228
|
+
Try changing the language using the dropdown in the header to see how
|
|
229
|
+
the first file input updates its translations accordingly.
|
|
230
|
+
</p>
|
|
231
|
+
<div class="form">
|
|
232
|
+
<syn-file droparea="" size="medium" form=""></syn-file>
|
|
233
|
+
<syn-file droparea="" lang="en" size="medium" form=""></syn-file>
|
|
234
|
+
</div>
|
|
235
|
+
</syn-card>
|
|
236
|
+
</main>
|
|
237
|
+
<!-- /.synergy-demo-main -->
|
|
238
|
+
</div>
|
|
239
|
+
<!-- /.synergy-demo-content -->
|
|
240
|
+
</div>
|
|
241
|
+
<!-- /.synergy-demo-application -->
|
|
242
|
+
|
|
243
|
+
<style>
|
|
244
|
+
body {
|
|
245
|
+
margin: 0 !important;
|
|
246
|
+
padding: 0 !important;
|
|
247
|
+
}
|
|
248
|
+
|
|
249
|
+
.synergy-demo-application {
|
|
250
|
+
display: flex;
|
|
251
|
+
flex-direction: column;
|
|
252
|
+
}
|
|
253
|
+
|
|
254
|
+
.synergy-demo-content {
|
|
255
|
+
background: var(--syn-page-background-color-muted);
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
.synergy-demo-main {
|
|
259
|
+
display: flex;
|
|
260
|
+
flex-direction: column;
|
|
261
|
+
font: var(--syn-body-medium);
|
|
262
|
+
margin: var(--syn-spacing-medium);
|
|
263
|
+
|
|
264
|
+
h1 {
|
|
265
|
+
margin: 0 0 var(--syn-spacing-medium);
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
.form {
|
|
269
|
+
display: flex;
|
|
270
|
+
flex-direction: row;
|
|
271
|
+
gap: var(--syn-spacing-medium);
|
|
272
|
+
|
|
273
|
+
syn-file {
|
|
274
|
+
flex-basis: calc(50% - var(--syn-spacing-medium) / 2);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
</style>
|
|
279
|
+
```
|
package/package.json
CHANGED
|
@@ -28,12 +28,12 @@
|
|
|
28
28
|
"serve-handler": "^6.1.7",
|
|
29
29
|
"ts-jest": "^29.4.6",
|
|
30
30
|
"typescript": "^5.9.3",
|
|
31
|
+
"@synergy-design-system/components": "3.11.1",
|
|
32
|
+
"@synergy-design-system/docs": "0.1.0",
|
|
31
33
|
"@synergy-design-system/eslint-config-syn": "^0.1.0",
|
|
32
|
-
"@synergy-design-system/components": "3.10.5",
|
|
33
|
-
"@synergy-design-system/tokens": "^3.10.5",
|
|
34
34
|
"@synergy-design-system/fonts": "1.0.5",
|
|
35
|
-
"@synergy-design-system/
|
|
36
|
-
"@synergy-design-system/
|
|
35
|
+
"@synergy-design-system/styles": "2.0.3",
|
|
36
|
+
"@synergy-design-system/tokens": "^3.11.1"
|
|
37
37
|
},
|
|
38
38
|
"exports": {
|
|
39
39
|
".": {
|
|
@@ -67,7 +67,7 @@
|
|
|
67
67
|
"directory": "packages/mcp"
|
|
68
68
|
},
|
|
69
69
|
"type": "module",
|
|
70
|
-
"version": "2.
|
|
70
|
+
"version": "2.14.1",
|
|
71
71
|
"scripts": {
|
|
72
72
|
"build": "pnpm run build:ts && pnpm run build:metadata && pnpm build:hash",
|
|
73
73
|
"build:all": "pnpm run build && pnpm run build:storybook",
|
|
@@ -1,60 +0,0 @@
|
|
|
1
|
-
import { css } from 'lit';
|
|
2
|
-
|
|
3
|
-
export default css`
|
|
4
|
-
:host {
|
|
5
|
-
/**
|
|
6
|
-
* Used as the default padding for the dialog title
|
|
7
|
-
*/
|
|
8
|
-
--header-spacing: var(--syn-spacing-large) var(--syn-spacing-x-small) var(--syn-spacing-large) var(--syn-spacing-large);
|
|
9
|
-
|
|
10
|
-
/**
|
|
11
|
-
* Defines the default body spacing
|
|
12
|
-
*/
|
|
13
|
-
--body-spacing: var(--syn-spacing-medium) var(--syn-spacing-large);
|
|
14
|
-
|
|
15
|
-
/**
|
|
16
|
-
* Defines the default footer spacing
|
|
17
|
-
*/
|
|
18
|
-
--footer-spacing: var(--syn-spacing-medium) var(--syn-spacing-large) var(--syn-spacing-large) var(--syn-spacing-medium);
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
.dialog__panel {
|
|
22
|
-
border: var(--syn-spacing-4x-small) solid var(--syn-panel-border-color);
|
|
23
|
-
border-radius: var(--syn-border-radius-none);
|
|
24
|
-
box-shadow: var(--syn-shadow-large);
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
.dialog__header-actions {
|
|
28
|
-
align-items: flex-start;
|
|
29
|
-
gap: var(--syn-spacing-x-small);
|
|
30
|
-
padding: var(--syn-spacing-large) var(--syn-spacing-small) var(--syn-spacing-large) 0;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/* Overlay Background */
|
|
34
|
-
.dialog__overlay {
|
|
35
|
-
/* #946: Add background blur for sick 2025 */
|
|
36
|
-
backdrop-filter: blur(var(--syn-overlay-background-blur));
|
|
37
|
-
}
|
|
38
|
-
|
|
39
|
-
/**
|
|
40
|
-
* We need this to make sure we are big enough as defined in the layout
|
|
41
|
-
* When omitting this statement, we will get rounding problems via line-height
|
|
42
|
-
*/
|
|
43
|
-
.dialog__title,
|
|
44
|
-
.dialog__header-actions {
|
|
45
|
-
min-height: 88px;
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
.dialog__header-actions syn-icon-button,
|
|
49
|
-
.dialog__header-actions ::slotted(syn-icon-button) {
|
|
50
|
-
color: var(--syn-color-neutral-950);
|
|
51
|
-
font-size: var(--syn-font-size-x-large);
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.dialog__title {
|
|
55
|
-
font-family: var(--syn-font-sans);
|
|
56
|
-
font-size: var(--syn-font-size-x-large);
|
|
57
|
-
font-weight: var(--syn-font-weight-bold);
|
|
58
|
-
line-height: var(--syn-line-height-normal);
|
|
59
|
-
}
|
|
60
|
-
`;
|