@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 +10 -0
- package/metadata/checksum.txt +1 -1
- package/metadata/packages/components/components/syn-tag-group/component.angular.ts +83 -0
- package/metadata/packages/components/components/syn-tag-group/component.react.ts +33 -0
- package/metadata/packages/components/components/syn-tag-group/component.styles.ts +49 -0
- package/metadata/packages/components/components/syn-tag-group/component.ts +95 -0
- package/metadata/packages/components/components/syn-tag-group/component.vue +69 -0
- package/metadata/packages/components/static/CHANGELOG.md +15 -0
- package/metadata/packages/tokens/CHANGELOG.md +10 -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/components/syn-tag-group/docs.md +269 -0
- package/metadata/static/templates/tag-group.md +833 -0
- package/package.json +5 -5
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
|
package/metadata/checksum.txt
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
|
|
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
|