@synergy-design-system/mcp 2.8.2 → 2.9.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.
package/CHANGELOG.md CHANGED
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 2.9.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
8
+
9
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
10
+
11
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
12
+
3
13
  ## 2.8.2
4
14
 
5
15
  ### Patch Changes
@@ -1 +1 @@
1
- 5682e415ee9342f4cf05aadd3e23b010
1
+ 9b61dd848d186c06c6cdfc4646c64d6f
@@ -0,0 +1,83 @@
1
+ // ---------------------------------------------------------------------
2
+ // 🔒 AUTOGENERATED @synergy-design-system/angular wrappers for @synergy-design-system/components
3
+ // Please do not edit this file directly!
4
+ // It will get recreated when running pnpm build.
5
+ // ---------------------------------------------------------------------
6
+ import {
7
+ Component,
8
+ ElementRef,
9
+ NgZone,
10
+ Input,
11
+ Output,
12
+ EventEmitter,
13
+ AfterContentInit,
14
+ } from '@angular/core';
15
+ import type { SynTagGroup } from '@synergy-design-system/components';
16
+
17
+ import '@synergy-design-system/components/components/tag-group/tag-group.js';
18
+
19
+ /**
20
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
21
+ * It arranges tags in flexible rows and supports different sizes and layouts.
22
+ * Tags can be removable, icon‑based, or purely textual.
23
+ *
24
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
25
+ * @status stable
26
+ *
27
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
28
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
29
+ *
30
+ * @csspart base - The component's base wrapper.
31
+ * @csspart tag-label - The tag group's label.
32
+ */
33
+ @Component({
34
+ selector: 'syn-tag-group',
35
+ standalone: true,
36
+ template: '<ng-content></ng-content>',
37
+ })
38
+ export class SynTagGroupComponent {
39
+ public nativeElement: SynTagGroup;
40
+ private _ngZone: NgZone;
41
+
42
+ constructor(e: ElementRef, ngZone: NgZone) {
43
+ this.nativeElement = e.nativeElement;
44
+ this._ngZone = ngZone;
45
+ }
46
+
47
+ /**
48
+ * The tag group's label.
49
+ * If you need to display HTML, use the `label` slot instead.
50
+ */
51
+ @Input()
52
+ set label(v: SynTagGroup['label']) {
53
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.label = v));
54
+ }
55
+ get label(): SynTagGroup['label'] {
56
+ return this.nativeElement.label;
57
+ }
58
+
59
+ /**
60
+ * Controls the label position.
61
+ * Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
62
+ */
63
+ @Input()
64
+ set labelPosition(v: SynTagGroup['labelPosition']) {
65
+ this._ngZone.runOutsideAngular(
66
+ () => (this.nativeElement.labelPosition = v),
67
+ );
68
+ }
69
+ get labelPosition(): SynTagGroup['labelPosition'] {
70
+ return this.nativeElement.labelPosition;
71
+ }
72
+
73
+ /**
74
+ * The size that should be applied to all slotted `<syn-tag>` elements
75
+ */
76
+ @Input()
77
+ set size(v: SynTagGroup['size']) {
78
+ this._ngZone.runOutsideAngular(() => (this.nativeElement.size = v));
79
+ }
80
+ get size(): SynTagGroup['size'] {
81
+ return this.nativeElement.size;
82
+ }
83
+ }
@@ -0,0 +1,33 @@
1
+ // ---------------------------------------------------------------------
2
+ // 🔒 AUTOGENERATED @synergy-design-system/react wrappers for @synergy-design-system/components
3
+ // Please do not edit this file directly!
4
+ // It will get recreated when running pnpm build.
5
+ // ---------------------------------------------------------------------
6
+ import * as React from 'react';
7
+ import { createComponent } from '@lit/react';
8
+ import Component from '@synergy-design-system/components/components/tag-group/tag-group.component.js';
9
+
10
+ const tagName = 'syn-tag-group';
11
+ Component.define('syn-tag-group');
12
+
13
+ /**
14
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
15
+ * It arranges tags in flexible rows and supports different sizes and layouts.
16
+ * Tags can be removable, icon‑based, or purely textual.
17
+ *
18
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
19
+ * @status stable
20
+ *
21
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
22
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
23
+ *
24
+ * @csspart base - The component's base wrapper.
25
+ * @csspart tag-label - The tag group's label.
26
+ */
27
+ export const SynTagGroup = createComponent({
28
+ displayName: 'SynTagGroup',
29
+ elementClass: Component,
30
+ events: {},
31
+ react: React,
32
+ tagName,
33
+ });
@@ -0,0 +1,49 @@
1
+ import { css } from 'lit';
2
+
3
+ export default css`
4
+ :host {
5
+ --tag-group-item-gap: var(--syn-spacing-x-small);
6
+ --tag-group-label-gap: var(--syn-spacing-x-small);
7
+ --tag-group-label-font: var(--syn-body-medium-semibold);
8
+
9
+ display: block;
10
+ }
11
+
12
+ .tag-group {
13
+ align-items: anchor-center;
14
+ display: flex;
15
+ flex-wrap: wrap;
16
+ gap: var(--tag-group-item-gap);
17
+ }
18
+
19
+ /* Label Styles */
20
+ .tag-group__label {
21
+ color: var(--syn-input-label-color);
22
+ display: block;
23
+ font: var(--tag-group-label-font);
24
+ }
25
+
26
+ .tag-group--top .tag-group__label {
27
+ /**
28
+ * When calculating the margin-bottom, we have to take the gap of .tag-group into account.
29
+ * We dont want to remove the row-gap above, as otherwise the gap between multi line tags would be 0.
30
+ * By subtracting the row-gap from the label gap, we ensure that the distance between the label and the first row of tags is consistent.
31
+ */
32
+ margin-bottom: calc(var(--tag-group-label-gap) - var(--syn-spacing-2x-small));
33
+ order: -1;
34
+ width: 100%;
35
+ }
36
+
37
+ /* Size Modifiers */
38
+ .tag-group--small {
39
+ --tag-group-item-gap: var(--syn-spacing-2x-small);
40
+ --tag-group-label-gap: var(--syn-spacing-x-small);
41
+ --tag-group-label-font: var(--syn-body-small-semibold);
42
+ }
43
+
44
+ .tag-group--large {
45
+ --tag-group-item-gap: var(--syn-spacing-small);
46
+ --tag-group-label-gap: var(--syn-spacing-x-small);
47
+ --tag-group-label-font: var(--syn-body-large-semibold);
48
+ }
49
+ `;
@@ -0,0 +1,95 @@
1
+ import { html } from 'lit';
2
+ import { property, queryAssignedElements } from 'lit/decorators.js';
3
+ import type { CSSResultGroup } from 'lit';
4
+ import { classMap } from 'lit/directives/class-map.js';
5
+ import { HasSlotController } from '../../internal/slot.js';
6
+ import SynergyElement from '../../internal/synergy-element.js';
7
+ import { watch } from '../../internal/watch.js';
8
+ import componentStyles from '../../styles/component.styles.js';
9
+ import styles from './tag-group.styles.js';
10
+ import type SynTag from '../tag/tag.component.js';
11
+ import { enableDefaultSettings } from '../../utilities/defaultSettings/decorator.js';
12
+
13
+ /**
14
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
15
+ * It arranges tags in flexible rows and supports different sizes and layouts.
16
+ * Tags can be removable, icon‑based, or purely textual.
17
+ *
18
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
19
+ * @status stable
20
+ *
21
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
22
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
23
+ *
24
+ * @csspart base - The component's base wrapper.
25
+ * @csspart tag-label - The tag group's label.
26
+ */
27
+ @enableDefaultSettings('SynTagGroup')
28
+ export default class SynTagGroup extends SynergyElement {
29
+ static styles: CSSResultGroup = [
30
+ componentStyles,
31
+ styles,
32
+ ];
33
+
34
+ @queryAssignedElements({ selector: 'syn-tag' }) tagsInDefaultSlot!: SynTag[];
35
+
36
+ private readonly hasSlotController = new HasSlotController(this, 'label');
37
+
38
+ /** The tag group's label. If you need to display HTML, use the `label` slot instead. */
39
+ @property() label = '';
40
+
41
+ /**
42
+ * Controls the label position. Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
43
+ */
44
+ @property({ attribute: 'label-position', reflect: true }) labelPosition: 'top' | 'start' = 'top';
45
+
46
+ /** The size that should be applied to all slotted `<syn-tag>` elements */
47
+ @property({ reflect: true }) size: 'small' | 'medium' | 'large' = 'medium';
48
+
49
+ private adjustTagSize() {
50
+ this.tagsInDefaultSlot.forEach(tag => {
51
+ tag.setAttribute('size', this.size);
52
+ });
53
+ }
54
+
55
+ @watch('size', { waitUntilFirstUpdate: true })
56
+ handleSizeChange() {
57
+ this.adjustTagSize();
58
+ }
59
+
60
+ handleSlotChange() {
61
+ this.adjustTagSize();
62
+ }
63
+
64
+ render() {
65
+ const hasLabelSlot = this.hasSlotController.test('label');
66
+ const hasLabel = this.label ? true : !!hasLabelSlot;
67
+
68
+ /* eslint-disable @typescript-eslint/unbound-method */
69
+ return html`
70
+ <div
71
+ part="base"
72
+ class=${classMap({
73
+ 'tag-group': true,
74
+ 'tag-group--large': this.size === 'large',
75
+ 'tag-group--medium': this.size === 'medium',
76
+ 'tag-group--small': this.size === 'small',
77
+ 'tag-group--start': this.labelPosition === 'start',
78
+ 'tag-group--top': this.labelPosition === 'top',
79
+ })}
80
+ >
81
+
82
+ <span
83
+ part="tag-label"
84
+ class="tag-group__label"
85
+ aria-hidden=${hasLabel ? 'false' : 'true'}
86
+ >
87
+ <slot name="label">${this.label}</slot>
88
+ </span>
89
+
90
+ <slot @slotchange=${this.handleSlotChange}></slot>
91
+ </div>
92
+ `;
93
+ /* eslint-enable @typescript-eslint/unbound-method */
94
+ }
95
+ }
@@ -0,0 +1,69 @@
1
+ <script setup lang="ts">
2
+ // ---------------------------------------------------------------------
3
+ // 🔒 AUTOGENERATED @synergy-design-system/vue wrappers for @synergy-design-system/components
4
+ // Please do not edit this file directly!
5
+ // It will get recreated when running pnpm build.
6
+ // ---------------------------------------------------------------------
7
+
8
+ /**
9
+ * @summary A tag group is used to display multiple tags that belong together, often representing selected filters, categories, or user‑generated labels.
10
+ * It arranges tags in flexible rows and supports different sizes and layouts.
11
+ * Tags can be removable, icon‑based, or purely textual.
12
+ *
13
+ * @documentation https://synergy-design-system.github.io/?path=/docs/components-syn-tag-group--docs
14
+ * @status stable
15
+ *
16
+ * @slot - The tag group's main content. Must be `<syn-tag />` elements.
17
+ * @slot label - The tag group's label. Alternatively, you can use the `label` attribute.
18
+ *
19
+ * @csspart base - The component's base wrapper.
20
+ * @csspart tag-label - The tag group's label.
21
+ */
22
+ import { computed, ref } from 'vue';
23
+ import '@synergy-design-system/components/components/tag-group/tag-group.js';
24
+
25
+ import type { SynTagGroup } from '@synergy-design-system/components';
26
+
27
+ // DOM Reference to the element
28
+ const nativeElement = ref<SynTagGroup>();
29
+
30
+ defineExpose({
31
+ nativeElement,
32
+ });
33
+
34
+ // Map attributes
35
+ const props = defineProps<{
36
+ /**
37
+ * The tag group's label.
38
+ * If you need to display HTML, use the `label` slot instead.
39
+ */
40
+ label?: SynTagGroup['label'];
41
+
42
+ /**
43
+ * Controls the label position.
44
+ * Use 'top' to place the label above the tags, or 'start' to place it to the begin of the tag group.
45
+ */
46
+ labelPosition?: SynTagGroup['labelPosition'];
47
+
48
+ /**
49
+ * The size that should be applied to all slotted `<syn-tag>` elements
50
+ */
51
+ size?: SynTagGroup['size'];
52
+ }>();
53
+
54
+ // Make sure prop binding only forwards the props that are actually there.
55
+ // This is needed because :param="param" also adds an empty attribute
56
+ // when using web-components, which breaks optional arguments like size in SynInput
57
+ // @see https://github.com/vuejs/core/issues/5190#issuecomment-1003112498
58
+ const visibleProps = computed(() =>
59
+ Object.fromEntries(
60
+ Object.entries(props).filter(([, value]) => typeof value !== 'undefined'),
61
+ ),
62
+ );
63
+ </script>
64
+
65
+ <template>
66
+ <syn-tag-group v-bind="visibleProps" ref="nativeElement">
67
+ <slot></slot>
68
+ </syn-tag-group>
69
+ </template>
@@ -1,5 +1,20 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
8
+
9
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
10
+
11
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
12
+
13
+ ### Patch Changes
14
+
15
+ - Updated dependencies [[`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302)]:
16
+ - @synergy-design-system/tokens@3.7.0
17
+
3
18
  ## 3.6.2
4
19
 
5
20
  ### Patch Changes
@@ -1,5 +1,15 @@
1
1
  # Changelog
2
2
 
3
+ ## 3.7.0
4
+
5
+ ### Minor Changes
6
+
7
+ - [#1193](https://github.com/synergy-design-system/synergy-design-system/pull/1193) [`c7f6a8b`](https://github.com/synergy-design-system/synergy-design-system/commit/c7f6a8bc8ed2eb76c5f9510c1d499f6feca5d302) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-03-06
8
+
9
+ feat: ✨ Add new component `<syn-tag-group>` (#1152)
10
+
11
+ Adds a new component `<syn-tag-group>`, including templates how to use this component.
12
+
3
13
  ## 3.6.2
4
14
 
5
15
  ## 3.6.1
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  */
5
5
 
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @synergy-design-system/tokens version 3.6.1
2
+ * @synergy-design-system/tokens version 3.6.2
3
3
  * SICK Global UX Foundation
4
4
  * Do not edit directly, this file was auto-generated.
5
5
  */