@synergy-design-system/metadata 3.11.1 → 3.12.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/data/core/setup/setup:angular-components-module.json +1 -1
- package/data/core/setup/setup:angular-forms-module.json +1 -1
- package/data/core/setup/setup:angular-package.json +2 -2
- package/data/core/setup/setup:angular-validators-module.json +1 -1
- package/data/core/setup/setup:components-package.json +2 -2
- package/data/core/setup/setup:react-package.json +2 -2
- package/data/core/setup/setup:tokens-package.json +2 -2
- package/data/core/setup/setup:vue-package.json +2 -2
- package/data/core/token/token:tokens-charts-js-index-d-ts.json +1 -1
- package/data/core/token/token:tokens-charts-js-index-js.json +1 -1
- package/data/core/token/token:tokens-charts-scss-tokens-scss.json +1 -1
- package/data/core/token/token:tokens-charts-themes-sick2025-dark-css.json +1 -1
- package/data/core/token/token:tokens-charts-themes-sick2025-light-css.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2018-dark-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2018-light-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2025-dark-json.json +1 -1
- package/data/core/token/token:tokens-figma-variables-sick2025-light-json.json +1 -1
- package/data/core/token/token:tokens-js-index-d-ts.json +1 -1
- package/data/core/token/token:tokens-js-index-js.json +1 -1
- package/data/core/token/token:tokens-scss-tokens-scss.json +1 -1
- package/data/core/token/token:tokens-themes-sick2018-dark-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2018-light-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2025-dark-css.json +1 -1
- package/data/core/token/token:tokens-themes-sick2025-light-css.json +1 -1
- package/data/index.json +1 -1
- package/data/layers/full/component/component:syn-dropdown/components/dropdown.component.ts +14 -0
- package/data/layers/full/component/component:syn-select/components/select.component.ts +12 -0
- package/data/layers/full/setup/setup:angular-package/angular/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:angular-package/angular/package.json +1 -1
- package/data/layers/full/setup/setup:components-package/components/CHANGELOG.md +13 -0
- package/data/layers/full/setup/setup:components-package/components/LIMITATIONS.md +55 -0
- package/data/layers/full/setup/setup:components-package/components/package.json +1 -1
- package/data/layers/full/setup/setup:react-package/react/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:react-package/react/package.json +1 -1
- package/data/layers/full/setup/setup:tokens-package/tokens/CHANGELOG.md +2 -0
- package/data/layers/full/setup/setup:tokens-package/tokens/package.json +1 -1
- package/data/layers/full/setup/setup:vue-package/vue/CHANGELOG.md +8 -0
- package/data/layers/full/setup/setup:vue-package/vue/package.json +1 -1
- package/data/layers/full/tokens/charts/js/index.d.ts +1 -1
- package/data/layers/full/tokens/charts/js/index.js +1 -1
- package/data/layers/full/tokens/charts/scss/_tokens.scss +1 -1
- package/data/layers/full/tokens/charts/themes/sick2025_dark.css +1 -1
- package/data/layers/full/tokens/charts/themes/sick2025_light.css +1 -1
- package/data/layers/full/tokens/js/index.d.ts +1 -1
- package/data/layers/full/tokens/js/index.js +1 -1
- package/data/layers/full/tokens/scss/_tokens.scss +1 -1
- package/data/layers/full/tokens/themes/sick2018_dark.css +1 -1
- package/data/layers/full/tokens/themes/sick2018_light.css +1 -1
- package/data/layers/full/tokens/themes/sick2025_dark.css +1 -1
- package/data/layers/full/tokens/themes/sick2025_light.css +1 -1
- package/data/manifest.json +1 -1
- package/package.json +5 -5
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.12.0
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1298](https://github.com/synergy-design-system/synergy-design-system/pull/1298) [`49e5b92`](https://github.com/synergy-design-system/synergy-design-system/commit/49e5b92f06c0600c5e8612834cb34e0f7c2a474a) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-08
|
|
8
|
+
|
|
9
|
+
fix: 🐛 `<syn-select>` and `<syn-dropdown>` not opening correctly when slotted in `<syn-dialog>` or `<syn-drawer>` ([#1297](https://github.com/synergy-design-system/synergy-design-system/issues/1297))
|
|
10
|
+
|
|
11
|
+
This release fixes an issue with multiple Synergy components automatically closing when opened in a `<syn-dialog>` or `<syn-drawer>` element in Chromium based browsers. This happens because Chromium now uses a more aggressive method of checking the active focused element when using `popover`.
|
|
12
|
+
|
|
3
13
|
## 3.11.1
|
|
4
14
|
|
|
5
15
|
### Patch Changes
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"custom": {
|
|
3
3
|
"framework": "angular",
|
|
4
4
|
"packageName": "@synergy-design-system/angular",
|
|
5
|
-
"packageVersion": "3.15.
|
|
5
|
+
"packageVersion": "3.15.3",
|
|
6
6
|
"subpathExports": [
|
|
7
7
|
".",
|
|
8
8
|
"./components/*",
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"name": "Angular Framework Package",
|
|
40
40
|
"package": "angular",
|
|
41
41
|
"relations": [],
|
|
42
|
-
"since": "3.15.
|
|
42
|
+
"since": "3.15.3",
|
|
43
43
|
"sources": [
|
|
44
44
|
"packages/angular/README.md",
|
|
45
45
|
"packages/angular/CHANGELOG.md",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"custom": {
|
|
3
3
|
"packageName": "@synergy-design-system/components",
|
|
4
|
-
"packageVersion": "3.15.
|
|
4
|
+
"packageVersion": "3.15.3"
|
|
5
5
|
},
|
|
6
6
|
"id": "setup:components-package",
|
|
7
7
|
"kind": "setup",
|
|
@@ -40,7 +40,7 @@
|
|
|
40
40
|
"name": "Components Package",
|
|
41
41
|
"package": "components",
|
|
42
42
|
"relations": [],
|
|
43
|
-
"since": "3.15.
|
|
43
|
+
"since": "3.15.3",
|
|
44
44
|
"sources": [
|
|
45
45
|
"packages/components/README.md",
|
|
46
46
|
"packages/components/CHANGELOG.md",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"custom": {
|
|
3
3
|
"framework": "react",
|
|
4
4
|
"packageName": "@synergy-design-system/react",
|
|
5
|
-
"packageVersion": "3.15.
|
|
5
|
+
"packageVersion": "3.15.3",
|
|
6
6
|
"subpathExports": [
|
|
7
7
|
".",
|
|
8
8
|
"./components/*",
|
|
@@ -42,7 +42,7 @@
|
|
|
42
42
|
"name": "React Framework Package",
|
|
43
43
|
"package": "react",
|
|
44
44
|
"relations": [],
|
|
45
|
-
"since": "3.15.
|
|
45
|
+
"since": "3.15.3",
|
|
46
46
|
"sources": [
|
|
47
47
|
"packages/react/README.md",
|
|
48
48
|
"packages/react/CHANGELOG.md",
|
|
@@ -32,7 +32,7 @@
|
|
|
32
32
|
"./themes/*"
|
|
33
33
|
],
|
|
34
34
|
"packageName": "@synergy-design-system/tokens",
|
|
35
|
-
"packageVersion": "3.15.
|
|
35
|
+
"packageVersion": "3.15.3"
|
|
36
36
|
},
|
|
37
37
|
"id": "setup:tokens-package",
|
|
38
38
|
"kind": "setup",
|
|
@@ -59,7 +59,7 @@
|
|
|
59
59
|
"name": "Tokens Package",
|
|
60
60
|
"package": "tokens",
|
|
61
61
|
"relations": [],
|
|
62
|
-
"since": "3.15.
|
|
62
|
+
"since": "3.15.3",
|
|
63
63
|
"sources": [
|
|
64
64
|
"packages/tokens/BREAKING_CHANGES.md",
|
|
65
65
|
"packages/tokens/CHANGELOG.md",
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"custom": {
|
|
3
3
|
"framework": "vue",
|
|
4
4
|
"packageName": "@synergy-design-system/vue",
|
|
5
|
-
"packageVersion": "3.15.
|
|
5
|
+
"packageVersion": "3.15.3"
|
|
6
6
|
},
|
|
7
7
|
"id": "setup:vue-package",
|
|
8
8
|
"kind": "setup",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"name": "Vue Framework Package",
|
|
34
34
|
"package": "vue",
|
|
35
35
|
"relations": [],
|
|
36
|
-
"since": "3.15.
|
|
36
|
+
"since": "3.15.3",
|
|
37
37
|
"sources": [
|
|
38
38
|
"packages/vue/README.md",
|
|
39
39
|
"packages/vue/CHANGELOG.md",
|
package/data/index.json
CHANGED
|
@@ -136,6 +136,12 @@ export default class SynDropdown extends SynergyElement {
|
|
|
136
136
|
}
|
|
137
137
|
}
|
|
138
138
|
|
|
139
|
+
private getContainingModalHost() {
|
|
140
|
+
return this.closest('syn-dialog, syn-drawer') as
|
|
141
|
+
| (HTMLElement & { modal?: { activateExternal(): void; deactivateExternal(): void } })
|
|
142
|
+
| null;
|
|
143
|
+
}
|
|
144
|
+
|
|
139
145
|
getMenu() {
|
|
140
146
|
return this.panel.assignedElements({ flatten: true }).find(el => el.tagName.toLowerCase() === 'syn-menu') as
|
|
141
147
|
| SynMenu
|
|
@@ -354,6 +360,10 @@ export default class SynDropdown extends SynergyElement {
|
|
|
354
360
|
|
|
355
361
|
addOpenListeners() {
|
|
356
362
|
this.panel.addEventListener('syn-select', this.handlePanelSelect);
|
|
363
|
+
|
|
364
|
+
// #1297: If the dropdown is inside a dialog, temporarily disable its focus trap while the popup is open because popup content can move to the browser top layer.
|
|
365
|
+
this.getContainingModalHost()?.modal?.activateExternal();
|
|
366
|
+
|
|
357
367
|
if ('CloseWatcher' in window) {
|
|
358
368
|
this.closeWatcher?.destroy();
|
|
359
369
|
this.closeWatcher = new CloseWatcher();
|
|
@@ -373,6 +383,10 @@ export default class SynDropdown extends SynergyElement {
|
|
|
373
383
|
this.panel.removeEventListener('syn-select', this.handlePanelSelect);
|
|
374
384
|
this.panel.removeEventListener('keydown', this.handleKeyDown);
|
|
375
385
|
}
|
|
386
|
+
|
|
387
|
+
// #1297: If the dropdown is inside a dialog, temporarily disable its focus trap while the popup is open because popup content can move to the browser top layer.
|
|
388
|
+
this.getContainingModalHost()?.modal?.deactivateExternal();
|
|
389
|
+
|
|
376
390
|
document.removeEventListener('keydown', this.handleDocumentKeyDown);
|
|
377
391
|
document.removeEventListener('mousedown', this.handleDocumentMouseDown);
|
|
378
392
|
this.closeWatcher?.destroy();
|
|
@@ -94,6 +94,12 @@ export default class SynSelect extends SynergyElement implements SynergyFormCont
|
|
|
94
94
|
private selectedOptionObserver: MutationObserver;
|
|
95
95
|
private isUserInput: boolean = false;
|
|
96
96
|
|
|
97
|
+
private getContainingModalHost() {
|
|
98
|
+
return this.closest('syn-dialog, syn-drawer') as
|
|
99
|
+
| (HTMLElement & { modal?: { activateExternal(): void; deactivateExternal(): void } })
|
|
100
|
+
| null;
|
|
101
|
+
}
|
|
102
|
+
|
|
97
103
|
@query('.select') popup: SynPopup;
|
|
98
104
|
@query('.select__combobox') combobox: HTMLSlotElement;
|
|
99
105
|
@query('.select__display-input') displayInput: HTMLInputElement;
|
|
@@ -300,6 +306,9 @@ export default class SynSelect extends SynergyElement implements SynergyFormCont
|
|
|
300
306
|
document.addEventListener('keydown', this.handleDocumentKeyDown);
|
|
301
307
|
document.addEventListener('mousedown', this.handleDocumentMouseDown);
|
|
302
308
|
|
|
309
|
+
// #1297: If the select is inside a dialog, we need to activate the dialog's modal to prevent focus from escaping the dialog while the select is open
|
|
310
|
+
this.getContainingModalHost()?.modal?.activateExternal();
|
|
311
|
+
|
|
303
312
|
// If the component is rendered in a shadow root, we need to attach the focusin listener there too
|
|
304
313
|
if (this.getRootNode() !== document) {
|
|
305
314
|
this.getRootNode().addEventListener('focusin', this.handleDocumentFocusIn);
|
|
@@ -322,6 +331,9 @@ export default class SynSelect extends SynergyElement implements SynergyFormCont
|
|
|
322
331
|
document.removeEventListener('keydown', this.handleDocumentKeyDown);
|
|
323
332
|
document.removeEventListener('mousedown', this.handleDocumentMouseDown);
|
|
324
333
|
|
|
334
|
+
// #1297: If the select is inside a dialog, we need to activate the dialog's modal to prevent focus from escaping the dialog while the select is open
|
|
335
|
+
this.getContainingModalHost()?.modal?.deactivateExternal();
|
|
336
|
+
|
|
325
337
|
if (this.getRootNode() !== document) {
|
|
326
338
|
this.getRootNode().removeEventListener('focusin', this.handleDocumentFocusIn);
|
|
327
339
|
}
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @synergy-design-system/angular
|
|
2
2
|
|
|
3
|
+
## 3.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`49e5b92`](https://github.com/synergy-design-system/synergy-design-system/commit/49e5b92f06c0600c5e8612834cb34e0f7c2a474a)]:
|
|
8
|
+
- @synergy-design-system/components@3.15.3
|
|
9
|
+
- @synergy-design-system/tokens@3.15.3
|
|
10
|
+
|
|
3
11
|
## 3.15.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
"url": "https://github.com/synergy-design-system/synergy-design-system.git",
|
|
23
23
|
"directory": "packages/angular"
|
|
24
24
|
},
|
|
25
|
-
"version": "3.15.
|
|
25
|
+
"version": "3.15.3",
|
|
26
26
|
"scripts": {
|
|
27
27
|
"_build": "pnpm _clean && ng-packagr -c tsconfig.lib.json && pnpm _after-build",
|
|
28
28
|
"_clean": "rm -rf ../_private/angular-demo/.angular",
|
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 3.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [#1298](https://github.com/synergy-design-system/synergy-design-system/pull/1298) [`49e5b92`](https://github.com/synergy-design-system/synergy-design-system/commit/49e5b92f06c0600c5e8612834cb34e0f7c2a474a) Thanks [@schilchSICKAG](https://github.com/schilchSICKAG)! - Released on: 2026-06-08
|
|
8
|
+
|
|
9
|
+
fix: 🐛 `<syn-select>` and `<syn-dropdown>` not opening correctly when slotted in `<syn-dialog>` or `<syn-drawer>` ([#1297](https://github.com/synergy-design-system/synergy-design-system/issues/1297))
|
|
10
|
+
|
|
11
|
+
This release fixes an issue with multiple Synergy components automatically closing when opened in a `<syn-dialog>` or `<syn-drawer>` element in Chromium based browsers. This happens because Chromium now uses a more aggressive method of checking the active focused element when using `popover`.
|
|
12
|
+
|
|
13
|
+
- Updated dependencies []:
|
|
14
|
+
- @synergy-design-system/tokens@3.15.3
|
|
15
|
+
|
|
3
16
|
## 3.15.2
|
|
4
17
|
|
|
5
18
|
### Patch Changes
|
|
@@ -301,6 +301,61 @@ In other cases, make sure to suppress the other elements' emitted `syn-hide` eve
|
|
|
301
301
|
|
|
302
302
|
---
|
|
303
303
|
|
|
304
|
+
<h2 id="syn-dialog-focus-trap-top-layer">Keyboard focus jumps to the modal close button when popup components are used inside `<syn-dialog>` or `<syn-drawer>`</h2>
|
|
305
|
+
|
|
306
|
+
<h3 id="syn-dialog-focus-trap-top-layer-meta">Meta Information</h3>
|
|
307
|
+
|
|
308
|
+
- Framework version: ALL
|
|
309
|
+
- Synergy version: <= 3.15.2
|
|
310
|
+
- Browsers: Chrome >= 149.0.7827.54, Edge >= 149.0.4022.52
|
|
311
|
+
- Issues: [#1297](https://github.com/synergy-design-system/synergy-design-system/issues/1297)
|
|
312
|
+
|
|
313
|
+
<h3 id="syn-dialog-focus-trap-top-layer-description">Description</h3>
|
|
314
|
+
|
|
315
|
+
When using keyboard navigation in popup-based components (e.g. `<syn-select>` or `<syn-dropdown>`) inside an open `<syn-dialog>` or `<syn-drawer>`, focus may jump to the modal close button instead of staying on popup menu items.
|
|
316
|
+
|
|
317
|
+
<h3 id="syn-dialog-focus-trap-top-layer-cause">Cause</h3>
|
|
318
|
+
|
|
319
|
+
Some browsers render popup content in the top layer. In this case, the focused popup element may no longer be detected as part of the modal subtree. The modal focus trap then treats focus as escaped and moves it back to the first tabbable modal element (often the close button).
|
|
320
|
+
|
|
321
|
+
<h3 id="syn-dialog-focus-trap-top-layer-solution">Proposed Solution</h3>
|
|
322
|
+
|
|
323
|
+
When opening a popup inside a dialog or drawer, temporarily disable the host modal focus trap with `modalHost.modal.activateExternal()`. Re-enable it after closing with `modalHost.modal.deactivateExternal()`.
|
|
324
|
+
|
|
325
|
+
<h4 id="syn-dialog-focus-trap-top-layer-problem">Problem</h4>
|
|
326
|
+
|
|
327
|
+
```html
|
|
328
|
+
<syn-dialog open>
|
|
329
|
+
<my-custom-popup-select></my-custom-popup-select>
|
|
330
|
+
</syn-dialog>
|
|
331
|
+
|
|
332
|
+
<syn-drawer open>
|
|
333
|
+
<my-custom-popup-select></my-custom-popup-select>
|
|
334
|
+
</syn-drawer>
|
|
335
|
+
|
|
336
|
+
<script type="module">
|
|
337
|
+
// Inside my-custom-popup-select keyboard handling
|
|
338
|
+
// Focus may jump to the modal close button on ArrowDown
|
|
339
|
+
</script>
|
|
340
|
+
```
|
|
341
|
+
|
|
342
|
+
<h4 id="syn-dialog-focus-trap-top-layer-solution-example">Solution</h4>
|
|
343
|
+
|
|
344
|
+
```js
|
|
345
|
+
// Example component logic
|
|
346
|
+
const modalHost = this.closest("syn-dialog, syn-drawer");
|
|
347
|
+
|
|
348
|
+
function onOpenPopup() {
|
|
349
|
+
modalHost?.modal?.activateExternal();
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
function onClosePopup() {
|
|
353
|
+
modalHost?.modal?.deactivateExternal();
|
|
354
|
+
}
|
|
355
|
+
```
|
|
356
|
+
|
|
357
|
+
---
|
|
358
|
+
|
|
304
359
|
<h2 id="syn-nav-item-click-events">Click events for `syn-nav-item` are not fired when clicking slotted items (e.g. icons)</h2>
|
|
305
360
|
|
|
306
361
|
<h3 id="syn-nav-item-click-events-meta">Meta Information</h3>
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @synergy-design-system/react
|
|
2
2
|
|
|
3
|
+
## 3.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`49e5b92`](https://github.com/synergy-design-system/synergy-design-system/commit/49e5b92f06c0600c5e8612834cb34e0f7c2a474a)]:
|
|
8
|
+
- @synergy-design-system/components@3.15.3
|
|
9
|
+
- @synergy-design-system/tokens@3.15.3
|
|
10
|
+
|
|
3
11
|
## 3.15.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
|
@@ -1,5 +1,13 @@
|
|
|
1
1
|
# @synergy-design-system/vue
|
|
2
2
|
|
|
3
|
+
## 3.15.3
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- Updated dependencies [[`49e5b92`](https://github.com/synergy-design-system/synergy-design-system/commit/49e5b92f06c0600c5e8612834cb34e0f7c2a474a)]:
|
|
8
|
+
- @synergy-design-system/components@3.15.3
|
|
9
|
+
- @synergy-design-system/tokens@3.15.3
|
|
10
|
+
|
|
3
11
|
## 3.15.2
|
|
4
12
|
|
|
5
13
|
### Patch Changes
|
package/data/manifest.json
CHANGED
package/package.json
CHANGED
|
@@ -22,12 +22,12 @@
|
|
|
22
22
|
"serve-handler": "^6.1.7",
|
|
23
23
|
"typescript": "^5.9.3",
|
|
24
24
|
"zod": "^4.4.3",
|
|
25
|
-
"@synergy-design-system/components": "3.15.
|
|
25
|
+
"@synergy-design-system/components": "3.15.3",
|
|
26
26
|
"@synergy-design-system/docs": "0.1.0",
|
|
27
|
-
"@synergy-design-system/fonts": "1.0.7",
|
|
28
27
|
"@synergy-design-system/eslint-config-syn": "^0.1.0",
|
|
29
|
-
"@synergy-design-system/
|
|
30
|
-
"@synergy-design-system/styles": "2.1.1"
|
|
28
|
+
"@synergy-design-system/fonts": "1.0.7",
|
|
29
|
+
"@synergy-design-system/styles": "2.1.1",
|
|
30
|
+
"@synergy-design-system/tokens": "^3.15.3"
|
|
31
31
|
},
|
|
32
32
|
"exports": {
|
|
33
33
|
".": {
|
|
@@ -70,7 +70,7 @@
|
|
|
70
70
|
},
|
|
71
71
|
"types": "./dist/index.d.ts",
|
|
72
72
|
"type": "module",
|
|
73
|
-
"version": "3.
|
|
73
|
+
"version": "3.12.0",
|
|
74
74
|
"scripts": {
|
|
75
75
|
"build:all": "METADATA_LOG_LEVEL=info pnpm run build:ts && RUN_STORYBOOK_SCRAPER=true pnpm run build:data",
|
|
76
76
|
"build": "METADATA_LOG_LEVEL=info pnpm run build:ts && pnpm run build:data",
|