@synergy-design-system/mcp 1.0.0 → 1.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.
package/CHANGELOG.md CHANGED
@@ -1 +1,15 @@
1
1
  # Changelog
2
+
3
+ # [@synergy-design-system/mcp-v1.1.0](https://github.com/synergy-design-system/synergy-design-system/compare/mcp/1.0.0...mcp/1.1.0) (2025-08-08)
4
+
5
+
6
+ ### Features
7
+
8
+ * ✨ syn-icon: Provide a function to switch the icon set to brand2025 ([#974](https://github.com/synergy-design-system/synergy-design-system/issues/974)) ([1482e34](https://github.com/synergy-design-system/synergy-design-system/commit/1482e34f21ce80b9ad6f25e760f87de13d5f70db))
9
+
10
+ # @synergy-design-system/mcp-v1.0.0 (2025-08-07)
11
+
12
+
13
+ ### Features
14
+
15
+ * ✨ MCP: Initial release ([#931](https://github.com/synergy-design-system/synergy-design-system/pull/931)) ([5f511ca](https://github.com/synergy-design-system/synergy-design-system/commit/5f511ca4305981f90e589a5f634e58d0e4e834ee))
@@ -22,6 +22,11 @@ const staticFilesToCopy = [
22
22
  getAbsolutePath('../../../../packages/components/BREAKING_CHANGES.md'),
23
23
  componentMigrationPath,
24
24
  ],
25
+ // Copy the v3 migration guide
26
+ [
27
+ getAbsolutePath('../../../../packages/docs/src/static/migration-synergy-v3.md'),
28
+ componentMigrationPath,
29
+ ],
25
30
  ];
26
31
  /**
27
32
  * Sets up all data from the components and framework packages and adds them to the static metadata.
@@ -3,7 +3,7 @@ import { z } from 'zod';
3
3
  import * as availableIconsets from '@synergy-design-system/assets';
4
4
  import { getAssetsMetaData, getStructuredMetaData, } from '../utilities/index.js';
5
5
  const iconsetListAliases = {
6
- brand2018Icons: [
6
+ sick2018Icons: [
7
7
  'current',
8
8
  'default',
9
9
  'legacy',
@@ -12,7 +12,7 @@ const iconsetListAliases = {
12
12
  'brand2018',
13
13
  'sick2018',
14
14
  ],
15
- brand2025Icons: [
15
+ sick2025Icons: [
16
16
  'synergy2025',
17
17
  'new',
18
18
  'next',
@@ -21,6 +21,7 @@ const iconsetListAliases = {
21
21
  'v3',
22
22
  ],
23
23
  };
24
+ const DEFAULT_LIMIT = 5;
24
25
  /**
25
26
  * Simple tool to list all available assets in the Synergy Design System.
26
27
  * This tool fetches the asset data from the Synergy package and formats it for display.
@@ -34,7 +35,7 @@ export const assetInfoTool = (server) => {
34
35
  filter: z
35
36
  .string()
36
37
  .optional()
37
- .describe('A filter to apply to the icon names. If provided, only icons matching this filter will be returned.'),
38
+ .describe('A filter to apply to the icon names. If provided, only icons matching this filter will be returned. Supports multiple filters separated by "|" (e.g., "home|search|menu" to find icons containing any of these terms).'),
38
39
  iconset: z
39
40
  .enum([
40
41
  'current', // Special key, maps to 2018 currently, should map to 2025 in the next major version
@@ -56,9 +57,9 @@ export const assetInfoTool = (server) => {
56
57
  .describe('The name of the icon set to retrieve icons from.'),
57
58
  limit: z
58
59
  .number()
59
- .default(5)
60
+ .default(DEFAULT_LIMIT)
60
61
  .optional()
61
- .describe('The maximum number of icons to return. Defaults to 5.'),
62
+ .describe(`The maximum number of icons to return. Defaults to ${DEFAULT_LIMIT}. When using multiple filters (pipe-separated), this limit applies per filter term.`),
62
63
  },
63
64
  title: 'Available Icons',
64
65
  }, async ({ filter, iconset, limit, }) => {
@@ -66,18 +67,44 @@ export const assetInfoTool = (server) => {
66
67
  const setToUse = iconset
67
68
  ? Object
68
69
  .entries(iconsetListAliases)
69
- .find(([, aliases]) => aliases.includes(iconset))?.[0] || 'brand2018Icons'
70
- : 'brand2018Icons';
70
+ .find(([, aliases]) => aliases.includes(iconset))?.[0] || 'sick2018Icons'
71
+ : 'sick2018Icons';
71
72
  const foundIconSet = typeof availableIconsets[setToUse] !== undefined
72
73
  ? availableIconsets[setToUse]
73
- : availableIconsets.brand2018Icons;
74
+ : availableIconsets.sick2018Icons;
74
75
  // Filter the icons if a filter is provided
75
- const availableIcons = Object
76
- .keys(foundIconSet)
77
- .filter(iconName => iconName.toLowerCase().includes(filter?.toLowerCase() || ''));
78
- // Limit the number of icons returned
79
- const limitedIcons = (limit ?? 5) > 0
80
- ? availableIcons.slice(0, limit ?? 5)
76
+ // Support pipe-separated filters (e.g., "icon1|icon2|icon3") for multiple icon matching
77
+ let availableIcons;
78
+ if (!filter) {
79
+ availableIcons = Object.keys(foundIconSet);
80
+ }
81
+ else {
82
+ const lowerFilter = filter.toLowerCase();
83
+ // Check if filter contains pipe separator for multiple filters
84
+ if (lowerFilter.includes('|')) {
85
+ const filterTerms = lowerFilter.split('|').map(term => term.trim());
86
+ const iconsPerTerm = [];
87
+ // For each filter term, find matching icons and apply limit per term
88
+ filterTerms.forEach(term => {
89
+ const matchingIcons = Object
90
+ .keys(foundIconSet)
91
+ .filter(iconName => iconName.toLowerCase().includes(term))
92
+ .slice(0, limit ?? DEFAULT_LIMIT); // Apply limit per filter term
93
+ iconsPerTerm.push(...matchingIcons);
94
+ });
95
+ // Remove duplicates while preserving order
96
+ availableIcons = [...new Set(iconsPerTerm)];
97
+ }
98
+ else {
99
+ // Original single filter behavior
100
+ availableIcons = Object
101
+ .keys(foundIconSet)
102
+ .filter(iconName => iconName.toLowerCase().includes(lowerFilter));
103
+ }
104
+ }
105
+ // For single filters or no filter, apply the limit normally
106
+ const limitedIcons = (!filter || !filter.includes('|')) && (limit ?? DEFAULT_LIMIT) > 0
107
+ ? availableIcons.slice(0, limit ?? DEFAULT_LIMIT)
81
108
  : availableIcons;
82
109
  const icons = limitedIcons.map(icon => `- ${icon}`).join('\n');
83
110
  const content = [
@@ -85,12 +112,17 @@ export const assetInfoTool = (server) => {
85
112
  text: `Available icons in iconset "${setToUse}":`,
86
113
  type: 'text',
87
114
  },
115
+ {
116
+ text: `Showing ${limitedIcons.length} of ${availableIcons.length} icons`,
117
+ type: 'text',
118
+ },
88
119
  {
89
120
  text: icons,
90
121
  type: 'text',
91
122
  },
92
123
  ];
93
124
  const aiRules = await getStructuredMetaData('../../metadata/static/assets');
125
+ const assetData = await getAssetsMetaData((fileName) => !fileName.toLowerCase().startsWith('changelog'));
94
126
  return {
95
127
  content: [
96
128
  {
@@ -98,7 +130,7 @@ export const assetInfoTool = (server) => {
98
130
  type: 'text',
99
131
  },
100
132
  {
101
- text: JSON.stringify(await getAssetsMetaData(), null, 2),
133
+ text: JSON.stringify(assetData, null, 2),
102
134
  type: 'text',
103
135
  },
104
136
  ...content,
@@ -23,12 +23,12 @@ export const assetListTool = (server) => {
23
23
  },
24
24
  {
25
25
  description: 'The original set of icons from the Synergy Design System. Use this for projects using Synergy Major Version 2.0.',
26
- iconset: 'brand2018Icons',
26
+ iconset: 'sick2018Icons',
27
27
  title: 'Synergy 2018 Icons',
28
28
  },
29
29
  {
30
30
  description: 'New icon set for the brand 2025 refresh. Use this for projects using Synergy Major Version 3.0.',
31
- iconset: 'brand2025Icons',
31
+ iconset: 'sick2025Icons',
32
32
  title: 'Synergy 2025 Icons',
33
33
  },
34
34
  ], null, 2),
@@ -1 +1,2 @@
1
- export declare const getAssetsMetaData: () => Promise<(import("./metadata.js").MetadataFile | null)[]>;
1
+ import { type Filter } from './metadata.js';
2
+ export declare const getAssetsMetaData: (filter?: Filter) => Promise<(import("./metadata.js").MetadataFile | null)[]>;
@@ -1,3 +1,3 @@
1
1
  import { assetsPath, } from './config.js';
2
2
  import { getStructuredMetaData, } from './metadata.js';
3
- export const getAssetsMetaData = async () => getStructuredMetaData(assetsPath);
3
+ export const getAssetsMetaData = async (filter) => getStructuredMetaData(assetsPath, filter);
@@ -1 +1 @@
1
- 48e9a3c531b7ab3b5986ea7e542258f4
1
+ 8100ce028a0fb7f45f1ca769f98c0007
@@ -1,3 +1,10 @@
1
+ # [@synergy-design-system/assets-v1.18.0](https://github.com/synergy-design-system/synergy-design-system/compare/assets/1.17.0...assets/1.18.0) (2025-08-08)
2
+
3
+
4
+ ### Features
5
+
6
+ * ✨ syn-icon: Provide a function to switch the icon set to brand2025 ([#974](https://github.com/synergy-design-system/synergy-design-system/issues/974)) ([1482e34](https://github.com/synergy-design-system/synergy-design-system/commit/1482e34f21ce80b9ad6f25e760f87de13d5f70db))
7
+
1
8
  # [@synergy-design-system/assets-v1.17.0](https://github.com/synergy-design-system/synergy-design-system/compare/assets/1.16.1...assets/1.17.0) (2025-07-14)
2
9
 
3
10
 
@@ -40,9 +40,10 @@ This package is taking care about getting assets (like logos, system icons and d
40
40
  The folder structure of the assets corresponds to the structure of the Figma page.
41
41
 
42
42
  - **src/component-thumbnails** contains thumbnails from figma components used in Storybook
43
- - **src/icons:** contains the standard icons based on [Material Icons](https://fonts.google.com/icons)
43
+ - **src/icons:** contains the standard icons based on [Material Icons](https://fonts.google.com/icons) for SICK 2018 brand revision. Use those icons when using Synergy V2
44
44
  - **src/logos:** contains the variants of the SICK brand logo
45
- - **src/system-icons:** contains a small subset of icons, that are internally used by the Synergy components
45
+ - **src/system-icons:** contains a small subset of icons, that are internally used by the Synergy components. Default for Synergy V2.
46
+ - **src/system-icons-sick2025:** contains a small subset of icons, that are internally used by the Synergy components. Used from Synergy V3 onward.
46
47
 
47
48
  > **Note:** All assets from figma, which should not appear in this package (e.g. documentation), will start with an underscore (e.g. \_my-doc-for-an-asset). This assets are getting filtered and ignored by this package.
48
49
 
@@ -43,6 +43,15 @@ export default css`
43
43
  top: -2px;
44
44
  }
45
45
 
46
+ /**
47
+ * #920: The new icons are instances in figma.
48
+ * The width of the system icon is 12px x 12px, so there is no inner padding.
49
+ * To accommodate for this, we need to set the width and height of the icon to 50% to get the same result as before.
50
+ */
51
+ .radio__checked-icon {
52
+ scale: 0.5;
53
+ }
54
+
46
55
  /* /Fix#456 */
47
56
 
48
57
  /* Size modifiers */
@@ -0,0 +1,50 @@
1
+ # Migration to Synergy 3.0
2
+
3
+ This document outlines the changes and migration steps required to upgrade from Synergy 2.x to the new Synergy 3.0.
4
+
5
+ > Please note that this migration is still in progress, and some features may not be fully implemented yet. We recommend reviewing the [GitHub repository](https://github.com/orgs/synergy-design-system/projects/2/views/37) for the latest updates.
6
+
7
+ ## Roadmap
8
+
9
+ We are currently working on the migration to Synergy 3.0, which includes significant updates to the brand appearance, fonts and icon library.
10
+ This migration will ensure that your application remains up-to-date with the latest design standards and functionality improvements.
11
+
12
+ It is currently not adviced to use the new version in production, as we are still finalizing the migration process.
13
+ However, you can start preparing your codebase for the upcoming changes.
14
+
15
+ A roadmap and current status of the migration can be found in our [GitHub repository](https://github.com/orgs/synergy-design-system/projects/2/views/37).
16
+
17
+ ## Breaking Changes
18
+
19
+ ### Icons
20
+
21
+ #### System Icon Library
22
+
23
+ Some Synergy components depend on a set of icons that must always be available. To make sure those components display correctly, even if the `@synergy-design-system/assets` package is not installed or configured properly, these icons are baked into Synergies core directly.
24
+
25
+ Components that use those icons include:
26
+
27
+ - `<syn-header>`: Uses the SICK logo if not told otherwise
28
+ - `<syn-select>`: Shows a caret sign to indicate the possibility to open the select box.
29
+ - `<syn-alert>`: Shows an "x" icon to be able to close the alert dialog.
30
+
31
+ As Synergy transitions to the new SICK brand, the icon library has been updated to include a new iconset.
32
+ For backwards compatibility, Synergy will ship two system icon libraries during the 2.0 support cycle.
33
+ For applications that plan to continue using Synergy 2.0, there **are no changes needed** to the icon library.
34
+ For applications that want to use the new icon library, we have added a new utility function `setSystemIconLibrary`.
35
+ After calling this function, the system icon library will be set to the new iconset.
36
+
37
+ > Make sure to call this function before rendering any components that use the system icon library!
38
+
39
+ ```javascript
40
+ import { setSystemIconLibrary } from "@synergy-design-system/icons";
41
+ setSystemIconLibrary("sick2025");
42
+ ```
43
+
44
+ ## Migration Steps
45
+
46
+ These steps are only needed when switching to the new Synergy 3.0 layout.
47
+
48
+ 1. Always make sure to use the latest versions of the Synergy packages. You can check for updates using your package manager.
49
+ 2. Call `setSystemIconLibrary` with `sick2025` to enable the new system icons.
50
+ 3. Adjust your bundler to copy the new icons to your build output. This is necessary to ensure that the new icons are available in your application.
@@ -1,3 +1,10 @@
1
+ # [@synergy-design-system/components-v2.40.0](https://github.com/synergy-design-system/synergy-design-system/compare/components/2.39.2...components/2.40.0) (2025-08-08)
2
+
3
+
4
+ ### Features
5
+
6
+ * ✨ syn-icon: Provide a function to switch the icon set to brand2025 ([#974](https://github.com/synergy-design-system/synergy-design-system/issues/974)) ([1482e34](https://github.com/synergy-design-system/synergy-design-system/commit/1482e34f21ce80b9ad6f25e760f87de13d5f70db))
7
+
1
8
  # [@synergy-design-system/components-v2.39.2](https://github.com/synergy-design-system/synergy-design-system/compare/components/2.39.1...components/2.39.2) (2025-08-05)
2
9
 
3
10
 
@@ -4,7 +4,13 @@ As an llm, I want you to obey to the following rules:
4
4
 
5
5
  - The migration is available as a markdown document
6
6
 
7
- The following formatting rules are used for the migration guides:
7
+ The following formatting rules are used for the list of breaking changes:
8
8
 
9
9
  - Each headline 2 (`##`) defines a major version of the new major release
10
10
  - Each headline 3 (`###`) describes a component or feature that was changed
11
+
12
+ Migration from Synergy 2.0 to Synergy 3.0 (a.k.a. Brand Update):
13
+
14
+ - There are handwritten lists of changes that highlight the differences between Synergy V2 and Synergy V3.
15
+ - The document is structured as a list of breaking changes.
16
+ - The list of breaking changes is structured into blocks that define the change and a list of migration steps.
@@ -28,6 +28,29 @@ The default base path of the icon library is set to **assets/icons/**.
28
28
  To make the <syn-icon> work out of the box, without configuring anything, the used icons can be copied to this path in you application.
29
29
  This can either be done manually or with the help of the bundler.
30
30
 
31
+ ### Differences in icon usage between Synergy 2.0 and Synergy 3.0
32
+
33
+ With the upgrade to Synergy 3.0, new icons will be used.
34
+ Those icons are already available as assets in the \`@synergy-design-system/assets\` package.
35
+ When using the new icons, you have to make sure that the icons are available in the \`assets/icons/\` directory of your project as outlined below.
36
+
37
+ System icons come bundled with the \`@synergy-design-system/components\` package. You may switch to the new icons with the new \`setSystemIconLibrary\` utility provided.
38
+ Please have a look at the following example to see how to switch the icon library.
39
+ Note that if you do not call this function, it will default to the 2018 icon library, which is used in Synergy 2.0 until Synergy 3.0 is released.
40
+
41
+ ```javascript
42
+ import { setSystemIconLibrary } from "@synergy-design-system/components";
43
+
44
+ // Switch to the 2025 icon library
45
+ setDefaultIconLibrary("sick2025");
46
+
47
+ // Switch back to the 2018 icon library
48
+ setDefaultIconLibrary("sick2018");
49
+
50
+ // Switch to the default icon library (2018 for Synergy 2.0, 2025 for Synergy 3.0)
51
+ setDefaultIconLibrary();
52
+ ```
53
+
31
54
  #### Angular + Webpack
32
55
 
33
56
  Including assets from another library can be achieved in angular via configuring the assets configuration in the angular.json file.
@@ -130,6 +153,7 @@ This can be done in multiple ways:
130
153
 
131
154
  The `createSpriteSheet` function is provided by the `@synergy-design-system/assets` package.
132
155
  It takes an array of icon keys and returns a string representation of the SVG sprite sheet, intended to be saved into the file system.
156
+ You may also provide an optional second argument to specify the icon set to use, either `sick2018` or `sick2025`. If not provided, it will default to `sick2018` for Synergy V2 and `sick2025` for Synergy V3.
133
157
  As we do not know how exactly you want to use the spritesheet, we will just print it to the console in the following example.
134
158
 
135
159
  ```typescript
@@ -141,6 +165,14 @@ const icons = [
141
165
  "battery_charging_full",
142
166
  "notifications",
143
167
  ];
168
+
169
+ // V2 iconsheet
170
+ const sheet = createSpriteSheet(icons, "sick2018");
171
+
172
+ // V3 iconsheet
173
+ const sheet = createSpriteSheet(icons, "sick2025");
174
+
175
+ // Automatically chooses the default, depending on the version of Synergy you are using
144
176
  const sheet = createSpriteSheet(icons);
145
177
 
146
178
  console.log(sheet);
@@ -154,7 +186,12 @@ cd my-project
154
186
 
155
187
  # Create the spritesheet on the command line.
156
188
  # You will need to provide a list of icons to include in the spritesheet.
189
+ # Provide the wanted iconset with the --iconset flag.
157
190
  # The following command will make sure to save the spritesheet to the file icons.svg
191
+
192
+ # Generates the icons from the 2025 iconset
193
+ npx syn-create-spritesheet --icons=warning,inventory,battery_charging_full,notifications --iconset=sick2025 > public/icons.svg
194
+
158
195
  npx syn-create-spritesheet --icons=warning,inventory,battery_charging_full,notifications > public/icons.svg
159
196
  ```
160
197
 
package/package.json CHANGED
@@ -11,7 +11,7 @@
11
11
  "globby": "^14.1.0",
12
12
  "serve-handler": "^6.1.6",
13
13
  "zod": "^3.25.67",
14
- "@synergy-design-system/assets": "1.17.0"
14
+ "@synergy-design-system/assets": "1.18.0"
15
15
  },
16
16
  "description": "MCP Server for the Synergy Design System",
17
17
  "devDependencies": {
@@ -30,11 +30,11 @@
30
30
  "semantic-release-monorepo": "7.0.5",
31
31
  "ts-jest": "^29.4.0",
32
32
  "typescript": "^5.8.3",
33
- "@synergy-design-system/docs": "0.1.0",
34
- "@synergy-design-system/styles": "1.7.2",
33
+ "@synergy-design-system/components": "2.40.0",
35
34
  "@synergy-design-system/eslint-config-syn": "^0.1.0",
36
- "@synergy-design-system/components": "2.39.2",
37
- "@synergy-design-system/tokens": "^2.22.0"
35
+ "@synergy-design-system/docs": "0.1.0",
36
+ "@synergy-design-system/tokens": "^2.22.0",
37
+ "@synergy-design-system/styles": "1.7.2"
38
38
  },
39
39
  "exports": {
40
40
  ".": {
@@ -119,7 +119,7 @@
119
119
  "directory": "packages/mcp"
120
120
  },
121
121
  "type": "module",
122
- "version": "1.0.0",
122
+ "version": "1.1.0",
123
123
  "scripts": {
124
124
  "build": "pnpm run build:ts && pnpm run build:metadata && pnpm build:hash",
125
125
  "build:all": "pnpm run build && pnpm run build:storybook",