@synergy-design-system/metadata 1.0.0 → 3.0.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.
Files changed (731) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/README.md +96 -0
  3. package/data/core/asset/asset:sick2018-icons.json +89042 -0
  4. package/data/core/asset/asset:sick2018-logos.json +28 -0
  5. package/data/core/asset/asset:sick2018-system-icons.json +52 -0
  6. package/data/core/asset/asset:sick2025-icons-fill.json +152214 -0
  7. package/data/core/asset/asset:sick2025-icons-outline.json +152214 -0
  8. package/data/core/asset/asset:sick2025-logos.json +34 -0
  9. package/data/core/asset/asset:sick2025-system-icons.json +52 -0
  10. package/data/core/component/component:syn-accordion.json +189 -0
  11. package/data/core/component/component:syn-alert.json +244 -0
  12. package/data/core/component/component:syn-badge.json +183 -0
  13. package/data/core/component/component:syn-breadcrumb-item.json +139 -0
  14. package/data/core/component/component:syn-breadcrumb.json +188 -0
  15. package/data/core/component/component:syn-button-group.json +200 -0
  16. package/data/core/component/component:syn-button.json +273 -0
  17. package/data/core/component/component:syn-card.json +205 -0
  18. package/data/core/component/component:syn-checkbox.json +259 -0
  19. package/data/core/component/component:syn-combobox.json +421 -0
  20. package/data/core/component/component:syn-details.json +222 -0
  21. package/data/core/component/component:syn-dialog.json +219 -0
  22. package/data/core/component/component:syn-divider.json +178 -0
  23. package/data/core/component/component:syn-drawer.json +268 -0
  24. package/data/core/component/component:syn-dropdown.json +211 -0
  25. package/data/core/component/component:syn-file.json +284 -0
  26. package/data/core/component/component:syn-header.json +235 -0
  27. package/data/core/component/component:syn-icon-button.json +223 -0
  28. package/data/core/component/component:syn-icon.json +166 -0
  29. package/data/core/component/component:syn-input.json +352 -0
  30. package/data/core/component/component:syn-menu-item.json +218 -0
  31. package/data/core/component/component:syn-menu-label.json +139 -0
  32. package/data/core/component/component:syn-menu.json +161 -0
  33. package/data/core/component/component:syn-nav-item.json +259 -0
  34. package/data/core/component/component:syn-optgroup.json +126 -0
  35. package/data/core/component/component:syn-option.json +182 -0
  36. package/data/core/component/component:syn-pagination.json +125 -0
  37. package/data/core/component/component:syn-popup.json +138 -0
  38. package/data/core/component/component:syn-prio-nav.json +167 -0
  39. package/data/core/component/component:syn-progress-bar.json +183 -0
  40. package/data/core/component/component:syn-progress-ring.json +190 -0
  41. package/data/core/component/component:syn-radio-button.json +114 -0
  42. package/data/core/component/component:syn-radio-group.json +262 -0
  43. package/data/core/component/component:syn-radio.json +214 -0
  44. package/data/core/component/component:syn-range-tick.json +166 -0
  45. package/data/core/component/component:syn-range.json +333 -0
  46. package/data/core/component/component:syn-select.json +347 -0
  47. package/data/core/component/component:syn-side-nav.json +234 -0
  48. package/data/core/component/component:syn-spinner.json +172 -0
  49. package/data/core/component/component:syn-switch.json +232 -0
  50. package/data/core/component/component:syn-tab-group.json +230 -0
  51. package/data/core/component/component:syn-tab-panel.json +139 -0
  52. package/data/core/component/component:syn-tab.json +149 -0
  53. package/data/core/component/component:syn-tag-group.json +168 -0
  54. package/data/core/component/component:syn-tag.json +173 -0
  55. package/data/core/component/component:syn-textarea.json +276 -0
  56. package/data/core/component/component:syn-tooltip.json +233 -0
  57. package/data/core/component/component:syn-validate.json +245 -0
  58. package/data/core/setup/setup:angular-components-module.json +36 -0
  59. package/data/core/setup/setup:angular-forms-module.json +37 -0
  60. package/data/core/setup/setup:angular-package.json +56 -0
  61. package/data/core/setup/setup:angular-validators-module.json +37 -0
  62. package/data/core/setup/setup:assets-package.json +56 -0
  63. package/data/core/setup/setup:components-package.json +59 -0
  64. package/data/core/setup/setup:fonts-package.json +46 -0
  65. package/data/core/setup/setup:react-package.json +60 -0
  66. package/data/core/setup/setup:styles-package.json +48 -0
  67. package/data/core/setup/setup:synergy-migrations.json +63 -0
  68. package/data/core/setup/setup:tokens-package.json +66 -0
  69. package/data/core/setup/setup:vue-package.json +50 -0
  70. package/data/core/style/style:syn-body.json +37 -0
  71. package/data/core/style/style:syn-heading.json +37 -0
  72. package/data/core/style/style:syn-link-list.json +37 -0
  73. package/data/core/style/style:syn-link.json +37 -0
  74. package/data/core/style/style:syn-table-cell.json +37 -0
  75. package/data/core/style/style:syn-table.json +37 -0
  76. package/data/core/style/style:syn-weight.json +37 -0
  77. package/data/core/template/template:appshell.json +22 -0
  78. package/data/core/template/template:breadcrumb.json +22 -0
  79. package/data/core/template/template:footer.json +22 -0
  80. package/data/core/template/template:forms.json +22 -0
  81. package/data/core/template/template:localization.json +22 -0
  82. package/data/core/template/template:table.json +22 -0
  83. package/data/core/template/template:tag-group.json +22 -0
  84. package/data/core/token/token:tokens-figma-variables-sick2018-dark-json.json +32 -0
  85. package/data/core/token/token:tokens-figma-variables-sick2018-light-json.json +32 -0
  86. package/data/core/token/token:tokens-figma-variables-sick2025-dark-json.json +32 -0
  87. package/data/core/token/token:tokens-figma-variables-sick2025-light-json.json +32 -0
  88. package/data/core/token/token:tokens-js-index-d-ts.json +31 -0
  89. package/data/core/token/token:tokens-js-index-js.json +31 -0
  90. package/data/core/token/token:tokens-scss-tokens-scss.json +31 -0
  91. package/data/core/token/token:tokens-themes-sick2018-dark-css.json +32 -0
  92. package/data/core/token/token:tokens-themes-sick2018-light-css.json +32 -0
  93. package/data/core/token/token:tokens-themes-sick2025-dark-css.json +32 -0
  94. package/data/core/token/token:tokens-themes-sick2025-light-css.json +32 -0
  95. package/data/core/utility/utility:fonts-sick-intl.json +35 -0
  96. package/data/index.json +1754 -0
  97. package/data/layers/examples/component/component:syn-accordion.md +410 -0
  98. package/data/layers/examples/component/component:syn-alert.md +262 -0
  99. package/data/layers/examples/component/component:syn-badge.md +102 -0
  100. package/data/layers/examples/component/component:syn-breadcrumb-item.md +16 -0
  101. package/data/layers/examples/component/component:syn-breadcrumb.md +110 -0
  102. package/data/layers/examples/component/component:syn-button-group.md +183 -0
  103. package/data/layers/examples/component/component:syn-button.md +289 -0
  104. package/data/layers/examples/component/component:syn-card.md +257 -0
  105. package/data/layers/examples/component/component:syn-checkbox.md +159 -0
  106. package/data/layers/examples/component/component:syn-combobox.md +629 -0
  107. package/data/layers/examples/component/component:syn-details.md +202 -0
  108. package/data/layers/examples/component/component:syn-dialog.md +349 -0
  109. package/data/layers/examples/component/component:syn-divider.md +57 -0
  110. package/data/layers/examples/component/component:syn-drawer.md +346 -0
  111. package/data/layers/examples/component/component:syn-dropdown.md +165 -0
  112. package/data/layers/examples/component/component:syn-file.md +192 -0
  113. package/data/layers/examples/component/component:syn-header.md +171 -0
  114. package/data/layers/examples/component/component:syn-icon-button.md +141 -0
  115. package/data/layers/examples/component/component:syn-icon.md +130 -0
  116. package/data/layers/examples/component/component:syn-input.md +294 -0
  117. package/data/layers/examples/component/component:syn-menu-item.md +132 -0
  118. package/data/layers/examples/component/component:syn-menu-label.md +17 -0
  119. package/data/layers/examples/component/component:syn-menu.md +66 -0
  120. package/data/layers/examples/component/component:syn-nav-item.md +154 -0
  121. package/data/layers/examples/component/component:syn-optgroup.md +67 -0
  122. package/data/layers/examples/component/component:syn-option.md +54 -0
  123. package/data/layers/examples/component/component:syn-pagination.md +92 -0
  124. package/data/layers/examples/component/component:syn-popup.md +705 -0
  125. package/data/layers/examples/component/component:syn-prio-nav.md +42 -0
  126. package/data/layers/examples/component/component:syn-progress-bar.md +87 -0
  127. package/data/layers/examples/component/component:syn-progress-ring.md +99 -0
  128. package/data/layers/examples/component/component:syn-radio-group.md +184 -0
  129. package/data/layers/examples/component/component:syn-radio.md +93 -0
  130. package/data/layers/examples/component/component:syn-range-tick.md +110 -0
  131. package/data/layers/examples/component/component:syn-range.md +403 -0
  132. package/data/layers/examples/component/component:syn-select.md +359 -0
  133. package/data/layers/examples/component/component:syn-side-nav.md +627 -0
  134. package/data/layers/examples/component/component:syn-spinner.md +45 -0
  135. package/data/layers/examples/component/component:syn-switch.md +113 -0
  136. package/data/layers/examples/component/component:syn-tab-group.md +318 -0
  137. package/data/layers/examples/component/component:syn-tab-panel.md +38 -0
  138. package/data/layers/examples/component/component:syn-tab.md +11 -0
  139. package/data/layers/examples/component/component:syn-tag-group.md +197 -0
  140. package/data/layers/examples/component/component:syn-tag.md +60 -0
  141. package/data/layers/examples/component/component:syn-textarea.md +153 -0
  142. package/data/layers/examples/component/component:syn-tooltip.md +220 -0
  143. package/data/layers/examples/component/component:syn-validate.md +349 -0
  144. package/data/layers/examples/style/style:syn-body.md +5 -0
  145. package/data/layers/examples/style/style:syn-heading.md +5 -0
  146. package/data/layers/examples/style/style:syn-link-list.md +213 -0
  147. package/data/layers/examples/style/style:syn-link.md +116 -0
  148. package/data/layers/examples/style/style:syn-table-cell.md +127 -0
  149. package/data/layers/examples/style/style:syn-table.md +201 -0
  150. package/data/layers/examples/style/style:syn-weight.md +5 -0
  151. package/data/layers/examples/template/template:appshell.md +2274 -0
  152. package/data/layers/examples/template/template:breadcrumb.md +240 -0
  153. package/data/layers/examples/template/template:footer.md +353 -0
  154. package/data/layers/examples/template/template:forms.md +536 -0
  155. package/data/layers/examples/template/template:localization.md +263 -0
  156. package/data/layers/examples/template/template:table.md +1143 -0
  157. package/data/layers/examples/template/template:tag-group.md +419 -0
  158. package/data/layers/full/assets/sick2018/js/index.ts +2167 -0
  159. package/data/layers/full/assets/sick2025/js/filled.ts +3704 -0
  160. package/data/layers/full/assets/sick2025/js/outline.ts +3704 -0
  161. package/data/layers/full/component/component:syn-accordion/angular/accordion.component.ts +80 -0
  162. package/data/layers/full/component/component:syn-accordion/components/accordion.component.ts +111 -0
  163. package/data/layers/full/component/component:syn-accordion/components/accordion.styles.ts +15 -0
  164. package/data/layers/full/component/component:syn-accordion/components/accordion.ts +12 -0
  165. package/data/layers/full/component/component:syn-accordion/react/SynAccordionJSXElement.ts +1 -0
  166. package/data/layers/full/component/component:syn-accordion/react/accordion.ts +30 -0
  167. package/data/layers/full/component/component:syn-accordion/vue/SynVueAccordion.vue +64 -0
  168. package/data/layers/full/component/component:syn-alert/angular/alert.component.ts +169 -0
  169. package/data/layers/full/component/component:syn-alert/components/alert.component.ts +322 -0
  170. package/data/layers/full/component/component:syn-alert/components/alert.styles.ts +203 -0
  171. package/data/layers/full/component/component:syn-alert/components/alert.ts +13 -0
  172. package/data/layers/full/component/component:syn-alert/react/SynAlertJSXElement.ts +9 -0
  173. package/data/layers/full/component/component:syn-alert/react/alert.ts +60 -0
  174. package/data/layers/full/component/component:syn-alert/vue/SynVueAlert.vue +135 -0
  175. package/data/layers/full/component/component:syn-badge/angular/badge.component.ts +53 -0
  176. package/data/layers/full/component/component:syn-badge/components/badge.component.ts +58 -0
  177. package/data/layers/full/component/component:syn-badge/components/badge.custom.styles.ts +62 -0
  178. package/data/layers/full/component/component:syn-badge/components/badge.styles.ts +52 -0
  179. package/data/layers/full/component/component:syn-badge/components/badge.ts +13 -0
  180. package/data/layers/full/component/component:syn-badge/react/SynBadgeJSXElement.ts +1 -0
  181. package/data/layers/full/component/component:syn-badge/react/badge.ts +29 -0
  182. package/data/layers/full/component/component:syn-badge/vue/SynVueBadge.vue +53 -0
  183. package/data/layers/full/component/component:syn-breadcrumb/angular/breadcrumb.component.ts +58 -0
  184. package/data/layers/full/component/component:syn-breadcrumb/components/breadcrumb.component.ts +103 -0
  185. package/data/layers/full/component/component:syn-breadcrumb/components/breadcrumb.custom.styles.ts +5 -0
  186. package/data/layers/full/component/component:syn-breadcrumb/components/breadcrumb.styles.ts +11 -0
  187. package/data/layers/full/component/component:syn-breadcrumb/components/breadcrumb.ts +13 -0
  188. package/data/layers/full/component/component:syn-breadcrumb/react/SynBreadcrumbJSXElement.ts +1 -0
  189. package/data/layers/full/component/component:syn-breadcrumb/react/breadcrumb.ts +32 -0
  190. package/data/layers/full/component/component:syn-breadcrumb/vue/SynVueBreadcrumb.vue +58 -0
  191. package/data/layers/full/component/component:syn-breadcrumb-item/angular/breadcrumb-item.component.ts +88 -0
  192. package/data/layers/full/component/component:syn-breadcrumb-item/components/breadcrumb-item.component.ts +132 -0
  193. package/data/layers/full/component/component:syn-breadcrumb-item/components/breadcrumb-item.custom.styles.ts +78 -0
  194. package/data/layers/full/component/component:syn-breadcrumb-item/components/breadcrumb-item.styles.ts +88 -0
  195. package/data/layers/full/component/component:syn-breadcrumb-item/components/breadcrumb-item.ts +13 -0
  196. package/data/layers/full/component/component:syn-breadcrumb-item/react/SynBreadcrumbItemJSXElement.ts +4 -0
  197. package/data/layers/full/component/component:syn-breadcrumb-item/react/breadcrumb-item.ts +37 -0
  198. package/data/layers/full/component/component:syn-breadcrumb-item/vue/SynVueBreadcrumbItem.vue +76 -0
  199. package/data/layers/full/component/component:syn-button/angular/button.component.ts +318 -0
  200. package/data/layers/full/component/component:syn-button/components/button.component.ts +315 -0
  201. package/data/layers/full/component/component:syn-button/components/button.custom.styles.ts +245 -0
  202. package/data/layers/full/component/component:syn-button/components/button.styles.ts +361 -0
  203. package/data/layers/full/component/component:syn-button/components/button.ts +13 -0
  204. package/data/layers/full/component/component:syn-button/react/SynButtonJSXElement.ts +8 -0
  205. package/data/layers/full/component/component:syn-button/react/button.ts +56 -0
  206. package/data/layers/full/component/component:syn-button/vue/SynVueButton.vue +204 -0
  207. package/data/layers/full/component/component:syn-button-group/angular/button-group.component.ts +79 -0
  208. package/data/layers/full/component/component:syn-button-group/components/button-group.component.ts +171 -0
  209. package/data/layers/full/component/component:syn-button-group/components/button-group.custom.styles.ts +5 -0
  210. package/data/layers/full/component/component:syn-button-group/components/button-group.styles.ts +14 -0
  211. package/data/layers/full/component/component:syn-button-group/components/button-group.ts +13 -0
  212. package/data/layers/full/component/component:syn-button-group/react/SynButtonGroupJSXElement.ts +1 -0
  213. package/data/layers/full/component/component:syn-button-group/react/button-group.ts +29 -0
  214. package/data/layers/full/component/component:syn-button-group/vue/SynVueButtonGroup.vue +67 -0
  215. package/data/layers/full/component/component:syn-card/angular/card.component.ts +83 -0
  216. package/data/layers/full/component/component:syn-card/components/card.component.ts +65 -0
  217. package/data/layers/full/component/component:syn-card/components/card.custom.styles.ts +60 -0
  218. package/data/layers/full/component/component:syn-card/components/card.styles.ts +70 -0
  219. package/data/layers/full/component/component:syn-card/components/card.ts +13 -0
  220. package/data/layers/full/component/component:syn-card/react/SynCardJSXElement.ts +1 -0
  221. package/data/layers/full/component/component:syn-card/react/card.ts +41 -0
  222. package/data/layers/full/component/component:syn-card/vue/SynVueCard.vue +73 -0
  223. package/data/layers/full/component/component:syn-checkbox/angular/checkbox.component.ts +273 -0
  224. package/data/layers/full/component/component:syn-checkbox/components/checkbox.component.ts +287 -0
  225. package/data/layers/full/component/component:syn-checkbox/components/checkbox.styles.ts +183 -0
  226. package/data/layers/full/component/component:syn-checkbox/components/checkbox.ts +13 -0
  227. package/data/layers/full/component/component:syn-checkbox/react/SynCheckboxJSXElement.ts +10 -0
  228. package/data/layers/full/component/component:syn-checkbox/react/checkbox.ts +64 -0
  229. package/data/layers/full/component/component:syn-checkbox/vue/SynVueCheckbox.vue +191 -0
  230. package/data/layers/full/component/component:syn-combobox/angular/combobox.component.ts +516 -0
  231. package/data/layers/full/component/component:syn-combobox/components/combobox.component.ts +1684 -0
  232. package/data/layers/full/component/component:syn-combobox/components/combobox.styles.ts +393 -0
  233. package/data/layers/full/component/component:syn-combobox/components/combobox.ts +12 -0
  234. package/data/layers/full/component/component:syn-combobox/components/option-renderer.ts +47 -0
  235. package/data/layers/full/component/component:syn-combobox/components/utils.ts +134 -0
  236. package/data/layers/full/component/component:syn-combobox/react/SynComboboxJSXElement.ts +16 -0
  237. package/data/layers/full/component/component:syn-combobox/react/combobox.ts +118 -0
  238. package/data/layers/full/component/component:syn-combobox/vue/SynVueCombobox.vue +350 -0
  239. package/data/layers/full/component/component:syn-details/angular/details.component.ts +186 -0
  240. package/data/layers/full/component/component:syn-details/components/details.component.ts +261 -0
  241. package/data/layers/full/component/component:syn-details/components/details.styles.ts +181 -0
  242. package/data/layers/full/component/component:syn-details/components/details.ts +13 -0
  243. package/data/layers/full/component/component:syn-details/react/SynDetailsJSXElement.ts +9 -0
  244. package/data/layers/full/component/component:syn-details/react/details.ts +65 -0
  245. package/data/layers/full/component/component:syn-details/vue/SynVueDetails.vue +136 -0
  246. package/data/layers/full/component/component:syn-dialog/angular/dialog.component.ts +201 -0
  247. package/data/layers/full/component/component:syn-dialog/components/dialog.component.ts +367 -0
  248. package/data/layers/full/component/component:syn-dialog/components/dialog.styles.ts +130 -0
  249. package/data/layers/full/component/component:syn-dialog/components/dialog.ts +13 -0
  250. package/data/layers/full/component/component:syn-dialog/react/SynDialogJSXElement.ts +11 -0
  251. package/data/layers/full/component/component:syn-dialog/react/dialog.ts +91 -0
  252. package/data/layers/full/component/component:syn-dialog/vue/SynVueDialog.vue +169 -0
  253. package/data/layers/full/component/component:syn-divider/angular/divider.component.ts +55 -0
  254. package/data/layers/full/component/component:syn-divider/components/divider.component.ts +34 -0
  255. package/data/layers/full/component/component:syn-divider/components/divider.styles.ts +22 -0
  256. package/data/layers/full/component/component:syn-divider/components/divider.ts +13 -0
  257. package/data/layers/full/component/component:syn-divider/react/SynDividerJSXElement.ts +1 -0
  258. package/data/layers/full/component/component:syn-divider/react/divider.ts +29 -0
  259. package/data/layers/full/component/component:syn-divider/vue/SynVueDivider.vue +51 -0
  260. package/data/layers/full/component/component:syn-drawer/angular/drawer.component.ts +234 -0
  261. package/data/layers/full/component/component:syn-drawer/components/drawer.component.ts +489 -0
  262. package/data/layers/full/component/component:syn-drawer/components/drawer.custom.styles.ts +78 -0
  263. package/data/layers/full/component/component:syn-drawer/components/drawer.styles.ts +158 -0
  264. package/data/layers/full/component/component:syn-drawer/components/drawer.ts +13 -0
  265. package/data/layers/full/component/component:syn-drawer/react/SynDrawerJSXElement.ts +11 -0
  266. package/data/layers/full/component/component:syn-drawer/react/drawer.ts +98 -0
  267. package/data/layers/full/component/component:syn-drawer/vue/SynVueDrawer.vue +188 -0
  268. package/data/layers/full/component/component:syn-dropdown/angular/dropdown.component.ts +208 -0
  269. package/data/layers/full/component/component:syn-dropdown/components/dropdown.component.ts +469 -0
  270. package/data/layers/full/component/component:syn-dropdown/components/dropdown.styles.ts +51 -0
  271. package/data/layers/full/component/component:syn-dropdown/components/dropdown.ts +13 -0
  272. package/data/layers/full/component/component:syn-dropdown/react/SynDropdownJSXElement.ts +9 -0
  273. package/data/layers/full/component/component:syn-dropdown/react/dropdown.ts +59 -0
  274. package/data/layers/full/component/component:syn-dropdown/vue/SynVueDropdown.vue +152 -0
  275. package/data/layers/full/component/component:syn-file/angular/file.component.ts +372 -0
  276. package/data/layers/full/component/component:syn-file/components/file.component.ts +645 -0
  277. package/data/layers/full/component/component:syn-file/components/file.styles.ts +197 -0
  278. package/data/layers/full/component/component:syn-file/components/file.ts +12 -0
  279. package/data/layers/full/component/component:syn-file/react/SynFileJSXElement.ts +10 -0
  280. package/data/layers/full/component/component:syn-file/react/file.ts +85 -0
  281. package/data/layers/full/component/component:syn-file/vue/SynVueFile.vue +256 -0
  282. package/data/layers/full/component/component:syn-header/angular/header.component.ts +149 -0
  283. package/data/layers/full/component/component:syn-header/components/header.component.ts +310 -0
  284. package/data/layers/full/component/component:syn-header/components/header.styles.ts +143 -0
  285. package/data/layers/full/component/component:syn-header/components/header.ts +12 -0
  286. package/data/layers/full/component/component:syn-header/react/SynHeaderJSXElement.ts +8 -0
  287. package/data/layers/full/component/component:syn-header/react/header.ts +68 -0
  288. package/data/layers/full/component/component:syn-header/vue/SynVueHeader.vue +126 -0
  289. package/data/layers/full/component/component:syn-icon/angular/icon.component.ts +115 -0
  290. package/data/layers/full/component/component:syn-icon/components/icon.component.ts +227 -0
  291. package/data/layers/full/component/component:syn-icon/components/icon.custom.styles.ts +5 -0
  292. package/data/layers/full/component/component:syn-icon/components/icon.styles.ts +18 -0
  293. package/data/layers/full/component/component:syn-icon/components/icon.ts +13 -0
  294. package/data/layers/full/component/component:syn-icon/components/library.default.ts +10 -0
  295. package/data/layers/full/component/component:syn-icon/components/library.migration.ts +317 -0
  296. package/data/layers/full/component/component:syn-icon/components/library.system.ts +46 -0
  297. package/data/layers/full/component/component:syn-icon/components/library.ts +54 -0
  298. package/data/layers/full/component/component:syn-icon/components/sick2018-system-icons.ts +37 -0
  299. package/data/layers/full/component/component:syn-icon/components/sick2025-system-icons.ts +34 -0
  300. package/data/layers/full/component/component:syn-icon/react/SynIconJSXElement.ts +4 -0
  301. package/data/layers/full/component/component:syn-icon/react/icon.ts +41 -0
  302. package/data/layers/full/component/component:syn-icon/vue/SynVueIcon.vue +100 -0
  303. package/data/layers/full/component/component:syn-icon-button/angular/icon-button.component.ts +185 -0
  304. package/data/layers/full/component/component:syn-icon-button/components/icon-button.component.ts +147 -0
  305. package/data/layers/full/component/component:syn-icon-button/components/icon-button.custom.styles.ts +79 -0
  306. package/data/layers/full/component/component:syn-icon-button/components/icon-button.styles.ts +52 -0
  307. package/data/layers/full/component/component:syn-icon-button/components/icon-button.ts +13 -0
  308. package/data/layers/full/component/component:syn-icon-button/react/SynIconButtonJSXElement.ts +4 -0
  309. package/data/layers/full/component/component:syn-icon-button/react/icon-button.ts +42 -0
  310. package/data/layers/full/component/component:syn-icon-button/vue/SynVueIconButton.vue +132 -0
  311. package/data/layers/full/component/component:syn-input/angular/input.component.ts +608 -0
  312. package/data/layers/full/component/component:syn-input/components/formatter.ts +75 -0
  313. package/data/layers/full/component/component:syn-input/components/input.component.ts +941 -0
  314. package/data/layers/full/component/component:syn-input/components/input.custom.styles.ts +278 -0
  315. package/data/layers/full/component/component:syn-input/components/input.styles.ts +280 -0
  316. package/data/layers/full/component/component:syn-input/components/input.ts +13 -0
  317. package/data/layers/full/component/component:syn-input/components/strategies.ts +79 -0
  318. package/data/layers/full/component/component:syn-input/react/SynInputJSXElement.ts +12 -0
  319. package/data/layers/full/component/component:syn-input/react/input.ts +91 -0
  320. package/data/layers/full/component/component:syn-input/vue/SynVueInput.vue +370 -0
  321. package/data/layers/full/component/component:syn-menu/angular/menu.component.ts +52 -0
  322. package/data/layers/full/component/component:syn-menu/components/menu.component.ts +191 -0
  323. package/data/layers/full/component/component:syn-menu/components/menu.styles.ts +37 -0
  324. package/data/layers/full/component/component:syn-menu/components/menu.ts +13 -0
  325. package/data/layers/full/component/component:syn-menu/react/SynMenuJSXElement.ts +4 -0
  326. package/data/layers/full/component/component:syn-menu/react/menu.ts +36 -0
  327. package/data/layers/full/component/component:syn-menu/vue/SynVueMenu.vue +48 -0
  328. package/data/layers/full/component/component:syn-menu-item/angular/menu-item.component.ts +121 -0
  329. package/data/layers/full/component/component:syn-menu-item/components/menu-item.component.ts +201 -0
  330. package/data/layers/full/component/component:syn-menu-item/components/menu-item.styles.ts +285 -0
  331. package/data/layers/full/component/component:syn-menu-item/components/menu-item.ts +13 -0
  332. package/data/layers/full/component/component:syn-menu-item/components/submenu-controller.ts +285 -0
  333. package/data/layers/full/component/component:syn-menu-item/react/SynMenuItemJSXElement.ts +1 -0
  334. package/data/layers/full/component/component:syn-menu-item/react/menu-item.ts +45 -0
  335. package/data/layers/full/component/component:syn-menu-item/vue/SynVueMenuItem.vue +91 -0
  336. package/data/layers/full/component/component:syn-menu-label/angular/menu-label.component.ts +48 -0
  337. package/data/layers/full/component/component:syn-menu-label/components/menu-label.component.ts +46 -0
  338. package/data/layers/full/component/component:syn-menu-label/components/menu-label.styles.ts +31 -0
  339. package/data/layers/full/component/component:syn-menu-label/components/menu-label.ts +13 -0
  340. package/data/layers/full/component/component:syn-menu-label/react/SynMenuLabelJSXElement.ts +1 -0
  341. package/data/layers/full/component/component:syn-menu-label/react/menu-label.ts +35 -0
  342. package/data/layers/full/component/component:syn-menu-label/vue/SynVueMenuLabel.vue +41 -0
  343. package/data/layers/full/component/component:syn-nav-item/angular/nav-item.component.ts +242 -0
  344. package/data/layers/full/component/component:syn-nav-item/components/nav-item.component.ts +491 -0
  345. package/data/layers/full/component/component:syn-nav-item/components/nav-item.styles.ts +333 -0
  346. package/data/layers/full/component/component:syn-nav-item/components/nav-item.ts +12 -0
  347. package/data/layers/full/component/component:syn-nav-item/react/SynNavItemJSXElement.ts +9 -0
  348. package/data/layers/full/component/component:syn-nav-item/react/nav-item.ts +82 -0
  349. package/data/layers/full/component/component:syn-nav-item/vue/SynVueNavItem.vue +182 -0
  350. package/data/layers/full/component/component:syn-optgroup/angular/optgroup.component.ts +79 -0
  351. package/data/layers/full/component/component:syn-optgroup/components/optgroup.component.ts +176 -0
  352. package/data/layers/full/component/component:syn-optgroup/components/optgroup.styles.ts +61 -0
  353. package/data/layers/full/component/component:syn-optgroup/components/optgroup.ts +13 -0
  354. package/data/layers/full/component/component:syn-optgroup/react/SynOptgroupJSXElement.ts +1 -0
  355. package/data/layers/full/component/component:syn-optgroup/react/optgroup.ts +41 -0
  356. package/data/layers/full/component/component:syn-optgroup/vue/SynVueOptgroup.vue +71 -0
  357. package/data/layers/full/component/component:syn-option/angular/option.component.ts +79 -0
  358. package/data/layers/full/component/component:syn-option/components/option-size.styles.ts +37 -0
  359. package/data/layers/full/component/component:syn-option/components/option.component.ts +191 -0
  360. package/data/layers/full/component/component:syn-option/components/option.styles.ts +165 -0
  361. package/data/layers/full/component/component:syn-option/components/option.ts +13 -0
  362. package/data/layers/full/component/component:syn-option/components/utility.ts +11 -0
  363. package/data/layers/full/component/component:syn-option/react/SynOptionJSXElement.ts +1 -0
  364. package/data/layers/full/component/component:syn-option/react/option.ts +37 -0
  365. package/data/layers/full/component/component:syn-option/vue/SynVueOption.vue +71 -0
  366. package/data/layers/full/component/component:syn-pagination/angular/pagination.component.ts +201 -0
  367. package/data/layers/full/component/component:syn-pagination/components/pagination.component.ts +452 -0
  368. package/data/layers/full/component/component:syn-pagination/components/pagination.styles.ts +128 -0
  369. package/data/layers/full/component/component:syn-pagination/components/pagination.ts +12 -0
  370. package/data/layers/full/component/component:syn-pagination/components/utility.ts +123 -0
  371. package/data/layers/full/component/component:syn-pagination/react/SynPaginationJSXElement.ts +7 -0
  372. package/data/layers/full/component/component:syn-pagination/react/pagination.ts +56 -0
  373. package/data/layers/full/component/component:syn-pagination/vue/SynVuePagination.vue +144 -0
  374. package/data/layers/full/component/component:syn-popup/angular/popup.component.ts +372 -0
  375. package/data/layers/full/component/component:syn-popup/components/popup.component.ts +582 -0
  376. package/data/layers/full/component/component:syn-popup/components/popup.styles.ts +70 -0
  377. package/data/layers/full/component/component:syn-popup/components/popup.ts +13 -0
  378. package/data/layers/full/component/component:syn-popup/react/SynPopupJSXElement.ts +4 -0
  379. package/data/layers/full/component/component:syn-popup/react/popup.ts +55 -0
  380. package/data/layers/full/component/component:syn-popup/vue/SynVuePopup.vue +233 -0
  381. package/data/layers/full/component/component:syn-prio-nav/angular/prio-nav.component.ts +67 -0
  382. package/data/layers/full/component/component:syn-prio-nav/components/prio-nav.component.ts +288 -0
  383. package/data/layers/full/component/component:syn-prio-nav/components/prio-nav.styles.ts +48 -0
  384. package/data/layers/full/component/component:syn-prio-nav/components/prio-nav.ts +12 -0
  385. package/data/layers/full/component/component:syn-prio-nav/components/utils.ts +57 -0
  386. package/data/layers/full/component/component:syn-prio-nav/react/SynPrioNavJSXElement.ts +1 -0
  387. package/data/layers/full/component/component:syn-prio-nav/react/prio-nav.ts +54 -0
  388. package/data/layers/full/component/component:syn-prio-nav/vue/SynVuePrioNav.vue +60 -0
  389. package/data/layers/full/component/component:syn-progress-bar/angular/progress-bar.component.ts +85 -0
  390. package/data/layers/full/component/component:syn-progress-bar/components/progress-bar.component.ts +67 -0
  391. package/data/layers/full/component/component:syn-progress-bar/components/progress-bar.custom.styles.ts +24 -0
  392. package/data/layers/full/component/component:syn-progress-bar/components/progress-bar.styles.ts +87 -0
  393. package/data/layers/full/component/component:syn-progress-bar/components/progress-bar.ts +13 -0
  394. package/data/layers/full/component/component:syn-progress-bar/react/SynProgressBarJSXElement.ts +1 -0
  395. package/data/layers/full/component/component:syn-progress-bar/react/progress-bar.ts +37 -0
  396. package/data/layers/full/component/component:syn-progress-bar/vue/SynVueProgressBar.vue +71 -0
  397. package/data/layers/full/component/component:syn-progress-ring/angular/progress-ring.component.ts +72 -0
  398. package/data/layers/full/component/component:syn-progress-ring/components/progress-ring.component.ts +83 -0
  399. package/data/layers/full/component/component:syn-progress-ring/components/progress-ring.custom.styles.ts +19 -0
  400. package/data/layers/full/component/component:syn-progress-ring/components/progress-ring.styles.ts +70 -0
  401. package/data/layers/full/component/component:syn-progress-ring/components/progress-ring.ts +13 -0
  402. package/data/layers/full/component/component:syn-progress-ring/react/SynProgressRingJSXElement.ts +4 -0
  403. package/data/layers/full/component/component:syn-progress-ring/react/progress-ring.ts +37 -0
  404. package/data/layers/full/component/component:syn-progress-ring/vue/SynVueProgressRing.vue +66 -0
  405. package/data/layers/full/component/component:syn-radio/angular/radio.component.ts +122 -0
  406. package/data/layers/full/component/component:syn-radio/components/radio.component.ts +131 -0
  407. package/data/layers/full/component/component:syn-radio/components/radio.styles.ts +179 -0
  408. package/data/layers/full/component/component:syn-radio/components/radio.ts +13 -0
  409. package/data/layers/full/component/component:syn-radio/react/SynRadioJSXElement.ts +4 -0
  410. package/data/layers/full/component/component:syn-radio/react/radio.ts +48 -0
  411. package/data/layers/full/component/component:syn-radio/vue/SynVueRadio.vue +104 -0
  412. package/data/layers/full/component/component:syn-radio-button/angular/radio-button.component.ts +123 -0
  413. package/data/layers/full/component/component:syn-radio-button/components/radio-button.component.ts +142 -0
  414. package/data/layers/full/component/component:syn-radio-button/components/radio-button.styles.ts +30 -0
  415. package/data/layers/full/component/component:syn-radio-button/components/radio-button.ts +13 -0
  416. package/data/layers/full/component/component:syn-radio-button/react/SynRadioButtonJSXElement.ts +4 -0
  417. package/data/layers/full/component/component:syn-radio-button/react/radio-button.ts +49 -0
  418. package/data/layers/full/component/component:syn-radio-button/vue/SynVueRadioButton.vue +105 -0
  419. package/data/layers/full/component/component:syn-radio-group/angular/radio-group.component.ts +204 -0
  420. package/data/layers/full/component/component:syn-radio-group/components/radio-group.component.ts +440 -0
  421. package/data/layers/full/component/component:syn-radio-group/components/radio-group.styles.ts +58 -0
  422. package/data/layers/full/component/component:syn-radio-group/components/radio-group.ts +13 -0
  423. package/data/layers/full/component/component:syn-radio-group/react/SynRadioGroupJSXElement.ts +8 -0
  424. package/data/layers/full/component/component:syn-radio-group/react/radio-group.ts +56 -0
  425. package/data/layers/full/component/component:syn-radio-group/vue/SynVueRadioGroup.vue +158 -0
  426. package/data/layers/full/component/component:syn-range/angular/range.component.ts +347 -0
  427. package/data/layers/full/component/component:syn-range/components/range.component.ts +933 -0
  428. package/data/layers/full/component/component:syn-range/components/range.styles.ts +310 -0
  429. package/data/layers/full/component/component:syn-range/components/range.ts +12 -0
  430. package/data/layers/full/component/component:syn-range/components/utility.ts +38 -0
  431. package/data/layers/full/component/component:syn-range/react/SynRangeJSXElement.ts +11 -0
  432. package/data/layers/full/component/component:syn-range/react/range.ts +92 -0
  433. package/data/layers/full/component/component:syn-range/vue/SynVueRange.vue +245 -0
  434. package/data/layers/full/component/component:syn-range-tick/angular/range-tick.component.ts +59 -0
  435. package/data/layers/full/component/component:syn-range-tick/components/range-tick.component.ts +50 -0
  436. package/data/layers/full/component/component:syn-range-tick/components/range-tick.styles.ts +34 -0
  437. package/data/layers/full/component/component:syn-range-tick/components/range-tick.ts +12 -0
  438. package/data/layers/full/component/component:syn-range-tick/react/SynRangeTickJSXElement.ts +1 -0
  439. package/data/layers/full/component/component:syn-range-tick/react/range-tick.ts +33 -0
  440. package/data/layers/full/component/component:syn-range-tick/vue/SynVueRangeTick.vue +57 -0
  441. package/data/layers/full/component/component:syn-select/angular/select.component.ts +439 -0
  442. package/data/layers/full/component/component:syn-select/components/select.component.ts +1056 -0
  443. package/data/layers/full/component/component:syn-select/components/select.styles.ts +380 -0
  444. package/data/layers/full/component/component:syn-select/components/select.ts +13 -0
  445. package/data/layers/full/component/component:syn-select/components/utility.ts +41 -0
  446. package/data/layers/full/component/component:syn-select/react/SynSelectJSXElement.ts +15 -0
  447. package/data/layers/full/component/component:syn-select/react/select.ts +101 -0
  448. package/data/layers/full/component/component:syn-select/vue/SynVueSelect.vue +301 -0
  449. package/data/layers/full/component/component:syn-side-nav/angular/side-nav.component.ts +210 -0
  450. package/data/layers/full/component/component:syn-side-nav/components/side-nav.component.ts +458 -0
  451. package/data/layers/full/component/component:syn-side-nav/components/side-nav.styles.ts +142 -0
  452. package/data/layers/full/component/component:syn-side-nav/components/side-nav.ts +12 -0
  453. package/data/layers/full/component/component:syn-side-nav/react/SynSideNavJSXElement.ts +9 -0
  454. package/data/layers/full/component/component:syn-side-nav/react/side-nav.ts +95 -0
  455. package/data/layers/full/component/component:syn-side-nav/vue/SynVueSideNav.vue +188 -0
  456. package/data/layers/full/component/component:syn-spinner/angular/spinner.component.ts +44 -0
  457. package/data/layers/full/component/component:syn-spinner/components/spinner.component.ts +35 -0
  458. package/data/layers/full/component/component:syn-spinner/components/spinner.custom.styles.ts +32 -0
  459. package/data/layers/full/component/component:syn-spinner/components/spinner.styles.ts +48 -0
  460. package/data/layers/full/component/component:syn-spinner/components/spinner.ts +13 -0
  461. package/data/layers/full/component/component:syn-spinner/react/SynSpinnerJSXElement.ts +1 -0
  462. package/data/layers/full/component/component:syn-spinner/react/spinner.ts +31 -0
  463. package/data/layers/full/component/component:syn-spinner/vue/SynVueSpinner.vue +35 -0
  464. package/data/layers/full/component/component:syn-switch/angular/switch.component.ts +257 -0
  465. package/data/layers/full/component/component:syn-switch/components/switch.component.ts +279 -0
  466. package/data/layers/full/component/component:syn-switch/components/switch.styles.ts +252 -0
  467. package/data/layers/full/component/component:syn-switch/components/switch.ts +13 -0
  468. package/data/layers/full/component/component:syn-switch/react/SynSwitchJSXElement.ts +10 -0
  469. package/data/layers/full/component/component:syn-switch/react/switch.ts +63 -0
  470. package/data/layers/full/component/component:syn-switch/vue/SynVueSwitch.vue +183 -0
  471. package/data/layers/full/component/component:syn-tab/angular/tab.component.ts +109 -0
  472. package/data/layers/full/component/component:syn-tab/components/tab.component.ts +125 -0
  473. package/data/layers/full/component/component:syn-tab/components/tab.custom.styles.ts +94 -0
  474. package/data/layers/full/component/component:syn-tab/components/tab.styles.ts +70 -0
  475. package/data/layers/full/component/component:syn-tab/components/tab.ts +13 -0
  476. package/data/layers/full/component/component:syn-tab/react/SynTabJSXElement.ts +4 -0
  477. package/data/layers/full/component/component:syn-tab/react/tab.ts +42 -0
  478. package/data/layers/full/component/component:syn-tab/vue/SynVueTab.vue +91 -0
  479. package/data/layers/full/component/component:syn-tab-group/angular/tab-group.component.ts +166 -0
  480. package/data/layers/full/component/component:syn-tab-group/components/tab-group.component.ts +551 -0
  481. package/data/layers/full/component/component:syn-tab-group/components/tab-group.custom.styles.ts +218 -0
  482. package/data/layers/full/component/component:syn-tab-group/components/tab-group.styles.ts +193 -0
  483. package/data/layers/full/component/component:syn-tab-group/components/tab-group.ts +13 -0
  484. package/data/layers/full/component/component:syn-tab-group/react/SynTabGroupJSXElement.ts +4 -0
  485. package/data/layers/full/component/component:syn-tab-group/react/tab-group.ts +58 -0
  486. package/data/layers/full/component/component:syn-tab-group/vue/SynVueTabGroup.vue +126 -0
  487. package/data/layers/full/component/component:syn-tab-panel/angular/tab-panel.component.ts +68 -0
  488. package/data/layers/full/component/component:syn-tab-panel/components/tab-panel.component.ts +60 -0
  489. package/data/layers/full/component/component:syn-tab-panel/components/tab-panel.custom.styles.ts +8 -0
  490. package/data/layers/full/component/component:syn-tab-panel/components/tab-panel.styles.ts +20 -0
  491. package/data/layers/full/component/component:syn-tab-panel/components/tab-panel.ts +13 -0
  492. package/data/layers/full/component/component:syn-tab-panel/react/SynTabPanelJSXElement.ts +1 -0
  493. package/data/layers/full/component/component:syn-tab-panel/react/tab-panel.ts +31 -0
  494. package/data/layers/full/component/component:syn-tab-panel/vue/SynVueTabPanel.vue +60 -0
  495. package/data/layers/full/component/component:syn-tag/angular/tag.component.ts +83 -0
  496. package/data/layers/full/component/component:syn-tag/components/tag.component.ts +83 -0
  497. package/data/layers/full/component/component:syn-tag/components/tag.custom.styles.ts +121 -0
  498. package/data/layers/full/component/component:syn-tag/components/tag.styles.ts +58 -0
  499. package/data/layers/full/component/component:syn-tag/components/tag.ts +13 -0
  500. package/data/layers/full/component/component:syn-tag/react/SynTagJSXElement.ts +4 -0
  501. package/data/layers/full/component/component:syn-tag/react/tag.ts +43 -0
  502. package/data/layers/full/component/component:syn-tag/vue/SynVueTag.vue +81 -0
  503. package/data/layers/full/component/component:syn-tag-group/angular/tag-group.component.ts +83 -0
  504. package/data/layers/full/component/component:syn-tag-group/components/tag-group.component.ts +95 -0
  505. package/data/layers/full/component/component:syn-tag-group/components/tag-group.styles.ts +49 -0
  506. package/data/layers/full/component/component:syn-tag-group/components/tag-group.ts +12 -0
  507. package/data/layers/full/component/component:syn-tag-group/react/SynTagGroupJSXElement.ts +1 -0
  508. package/data/layers/full/component/component:syn-tag-group/react/tag-group.ts +33 -0
  509. package/data/layers/full/component/component:syn-tag-group/vue/SynVueTagGroup.vue +69 -0
  510. package/data/layers/full/component/component:syn-textarea/angular/textarea.component.ts +396 -0
  511. package/data/layers/full/component/component:syn-textarea/components/textarea.component.ts +400 -0
  512. package/data/layers/full/component/component:syn-textarea/components/textarea.styles.ts +208 -0
  513. package/data/layers/full/component/component:syn-textarea/components/textarea.ts +13 -0
  514. package/data/layers/full/component/component:syn-textarea/react/SynTextareaJSXElement.ts +10 -0
  515. package/data/layers/full/component/component:syn-textarea/react/textarea.ts +60 -0
  516. package/data/layers/full/component/component:syn-textarea/vue/SynVueTextarea.vue +244 -0
  517. package/data/layers/full/component/component:syn-tooltip/angular/tooltip.component.ts +196 -0
  518. package/data/layers/full/component/component:syn-tooltip/components/tooltip.component.ts +312 -0
  519. package/data/layers/full/component/component:syn-tooltip/components/tooltip.styles.ts +62 -0
  520. package/data/layers/full/component/component:syn-tooltip/components/tooltip.ts +13 -0
  521. package/data/layers/full/component/component:syn-tooltip/react/SynTooltipJSXElement.ts +9 -0
  522. package/data/layers/full/component/component:syn-tooltip/react/tooltip.ts +63 -0
  523. package/data/layers/full/component/component:syn-tooltip/vue/SynVueTooltip.vue +150 -0
  524. package/data/layers/full/component/component:syn-validate/angular/validate.component.ts +137 -0
  525. package/data/layers/full/component/component:syn-validate/components/utility.ts +160 -0
  526. package/data/layers/full/component/component:syn-validate/components/validate.component.ts +590 -0
  527. package/data/layers/full/component/component:syn-validate/components/validate.styles.ts +9 -0
  528. package/data/layers/full/component/component:syn-validate/components/validate.ts +12 -0
  529. package/data/layers/full/component/component:syn-validate/react/SynValidateJSXElement.ts +1 -0
  530. package/data/layers/full/component/component:syn-validate/react/validate.ts +44 -0
  531. package/data/layers/full/component/component:syn-validate/vue/SynVueValidate.vue +107 -0
  532. package/data/layers/full/fonts/sick-intl/LICENSE +3 -0
  533. package/data/layers/full/fonts/sick-intl/font.css +17 -0
  534. package/data/layers/full/setup/setup:angular-components-module/angular/index.ts +53 -0
  535. package/data/layers/full/setup/setup:angular-components-module/angular/synergy.module.ts +115 -0
  536. package/data/layers/full/setup/setup:angular-forms-module/angular/forms.module.ts +92 -0
  537. package/data/layers/full/setup/setup:angular-package/angular/CHANGELOG.md +628 -0
  538. package/data/layers/full/setup/setup:angular-package/angular/LIMITATIONS.md +32 -0
  539. package/data/layers/full/setup/setup:angular-package/angular/README.md +393 -0
  540. package/data/layers/full/setup/setup:angular-package/angular/index.ts +9 -0
  541. package/data/layers/full/setup/setup:angular-package/angular/package.json +64 -0
  542. package/data/layers/full/setup/setup:angular-validators-module/angular/validators.ts +125 -0
  543. package/data/layers/full/setup/setup:assets-package/assets/BREAKING_CHANGES.md +305 -0
  544. package/data/layers/full/setup/setup:assets-package/assets/CHANGELOG.md +382 -0
  545. package/data/layers/full/setup/setup:assets-package/assets/README.md +103 -0
  546. package/data/layers/full/setup/setup:assets-package/assets/package.json +98 -0
  547. package/data/layers/full/setup/setup:components-package/components/BREAKING_CHANGES.md +908 -0
  548. package/data/layers/full/setup/setup:components-package/components/CHANGELOG.md +2166 -0
  549. package/data/layers/full/setup/setup:components-package/components/LIMITATIONS.md +433 -0
  550. package/data/layers/full/setup/setup:components-package/components/README.md +231 -0
  551. package/data/layers/full/setup/setup:components-package/components/package.json +125 -0
  552. package/data/layers/full/setup/setup:components-package/docs/icon-usage.md +411 -0
  553. package/data/layers/full/setup/setup:components-package/docs/prerequisites.md +319 -0
  554. package/data/layers/full/setup/setup:fonts-package/fonts/CHANGELOG.md +65 -0
  555. package/data/layers/full/setup/setup:fonts-package/fonts/README.md +164 -0
  556. package/data/layers/full/setup/setup:fonts-package/fonts/package.json +72 -0
  557. package/data/layers/full/setup/setup:react-package/react/CHANGELOG.md +551 -0
  558. package/data/layers/full/setup/setup:react-package/react/LIMITATIONS.md +31 -0
  559. package/data/layers/full/setup/setup:react-package/react/README.md +262 -0
  560. package/data/layers/full/setup/setup:react-package/react/index.ts +53 -0
  561. package/data/layers/full/setup/setup:react-package/react/package.json +54 -0
  562. package/data/layers/full/setup/setup:react-package/react/syn-jsx-elements.ts +2830 -0
  563. package/data/layers/full/setup/setup:styles-package/styles/BREAKING_CHANGES.md +105 -0
  564. package/data/layers/full/setup/setup:styles-package/styles/CHANGELOG.md +196 -0
  565. package/data/layers/full/setup/setup:styles-package/styles/README.md +132 -0
  566. package/data/layers/full/setup/setup:styles-package/styles/package.json +57 -0
  567. package/data/layers/full/setup/setup:synergy-migrations/components/BREAKING_CHANGES.md +908 -0
  568. package/data/layers/full/setup/setup:synergy-migrations/davinci/basic-elements.md +1859 -0
  569. package/data/layers/full/setup/setup:synergy-migrations/migration/index.md +57 -0
  570. package/data/layers/full/setup/setup:synergy-migrations/migration/v2-2018-to-v2-2025.md +481 -0
  571. package/data/layers/full/setup/setup:synergy-migrations/migration/v2-2018-to-v3-2018.md +147 -0
  572. package/data/layers/full/setup/setup:synergy-migrations/migration/v2-2018-to-v3-2025.md +150 -0
  573. package/data/layers/full/setup/setup:synergy-migrations/migration/v2-2025-to-v3-2025.md +133 -0
  574. package/data/layers/full/setup/setup:tokens-package/tokens/BREAKING_CHANGES.md +180 -0
  575. package/data/layers/full/setup/setup:tokens-package/tokens/CHANGELOG.md +967 -0
  576. package/data/layers/full/setup/setup:tokens-package/tokens/README.md +435 -0
  577. package/data/layers/full/setup/setup:tokens-package/tokens/package.json +81 -0
  578. package/data/layers/full/setup/setup:vue-package/vue/CHANGELOG.md +618 -0
  579. package/data/layers/full/setup/setup:vue-package/vue/LIMITATIONS.md +53 -0
  580. package/data/layers/full/setup/setup:vue-package/vue/README.md +252 -0
  581. package/data/layers/full/setup/setup:vue-package/vue/index.ts +53 -0
  582. package/data/layers/full/setup/setup:vue-package/vue/package.json +58 -0
  583. package/data/layers/full/styles/link/index.css +89 -0
  584. package/data/layers/full/styles/link-list/index.css +51 -0
  585. package/data/layers/full/styles/tables/table-cell.css +125 -0
  586. package/data/layers/full/styles/tables/table.css +16 -0
  587. package/data/layers/full/styles/typography/body.css +19 -0
  588. package/data/layers/full/styles/typography/heading.css +19 -0
  589. package/data/layers/full/styles/typography/weight.css +16 -0
  590. package/data/layers/full/tokens/figma-variables/sick2018-dark.json +2268 -0
  591. package/data/layers/full/tokens/figma-variables/sick2018-light.json +2268 -0
  592. package/data/layers/full/tokens/figma-variables/sick2025-dark.json +2268 -0
  593. package/data/layers/full/tokens/figma-variables/sick2025-light.json +2268 -0
  594. package/data/layers/full/tokens/js/index.d.ts +2224 -0
  595. package/data/layers/full/tokens/js/index.js +2224 -0
  596. package/data/layers/full/tokens/scss/_tokens.scss +448 -0
  597. package/data/layers/full/tokens/themes/sick2018_dark.css +454 -0
  598. package/data/layers/full/tokens/themes/sick2018_light.css +454 -0
  599. package/data/layers/full/tokens/themes/sick2025_dark.css +454 -0
  600. package/data/layers/full/tokens/themes/sick2025_light.css +454 -0
  601. package/data/layers/interface/component/component:syn-accordion.json +95 -0
  602. package/data/layers/interface/component/component:syn-accordion.md +57 -0
  603. package/data/layers/interface/component/component:syn-alert.json +182 -0
  604. package/data/layers/interface/component/component:syn-alert.md +135 -0
  605. package/data/layers/interface/component/component:syn-badge.json +43 -0
  606. package/data/layers/interface/component/component:syn-badge.md +39 -0
  607. package/data/layers/interface/component/component:syn-breadcrumb-item.json +114 -0
  608. package/data/layers/interface/component/component:syn-breadcrumb-item.md +64 -0
  609. package/data/layers/interface/component/component:syn-breadcrumb.json +61 -0
  610. package/data/layers/interface/component/component:syn-breadcrumb.md +44 -0
  611. package/data/layers/interface/component/component:syn-button-group.json +86 -0
  612. package/data/layers/interface/component/component:syn-button-group.md +57 -0
  613. package/data/layers/interface/component/component:syn-button.json +424 -0
  614. package/data/layers/interface/component/component:syn-button.md +287 -0
  615. package/data/layers/interface/component/component:syn-card.json +86 -0
  616. package/data/layers/interface/component/component:syn-card.md +55 -0
  617. package/data/layers/interface/component/component:syn-checkbox.json +330 -0
  618. package/data/layers/interface/component/component:syn-checkbox.md +237 -0
  619. package/data/layers/interface/component/component:syn-combobox.json +667 -0
  620. package/data/layers/interface/component/component:syn-combobox.md +388 -0
  621. package/data/layers/interface/component/component:syn-details.json +202 -0
  622. package/data/layers/interface/component/component:syn-details.md +129 -0
  623. package/data/layers/interface/component/component:syn-dialog.json +194 -0
  624. package/data/layers/interface/component/component:syn-dialog.md +136 -0
  625. package/data/layers/interface/component/component:syn-divider.json +39 -0
  626. package/data/layers/interface/component/component:syn-divider.md +31 -0
  627. package/data/layers/interface/component/component:syn-drawer.json +239 -0
  628. package/data/layers/interface/component/component:syn-drawer.md +154 -0
  629. package/data/layers/interface/component/component:syn-dropdown.json +272 -0
  630. package/data/layers/interface/component/component:syn-dropdown.md +171 -0
  631. package/data/layers/interface/component/component:syn-file.json +445 -0
  632. package/data/layers/interface/component/component:syn-file.md +280 -0
  633. package/data/layers/interface/component/component:syn-header.json +149 -0
  634. package/data/layers/interface/component/component:syn-header.md +102 -0
  635. package/data/layers/interface/component/component:syn-icon-button.json +201 -0
  636. package/data/layers/interface/component/component:syn-icon-button.md +157 -0
  637. package/data/layers/interface/component/component:syn-icon.json +105 -0
  638. package/data/layers/interface/component/component:syn-icon.md +77 -0
  639. package/data/layers/interface/component/component:syn-input.json +758 -0
  640. package/data/layers/interface/component/component:syn-input.md +522 -0
  641. package/data/layers/interface/component/component:syn-menu-item.json +185 -0
  642. package/data/layers/interface/component/component:syn-menu-item.md +100 -0
  643. package/data/layers/interface/component/component:syn-menu-label.json +36 -0
  644. package/data/layers/interface/component/component:syn-menu-label.md +34 -0
  645. package/data/layers/interface/component/component:syn-menu.json +41 -0
  646. package/data/layers/interface/component/component:syn-menu.md +32 -0
  647. package/data/layers/interface/component/component:syn-nav-item.json +269 -0
  648. package/data/layers/interface/component/component:syn-nav-item.md +198 -0
  649. package/data/layers/interface/component/component:syn-optgroup.json +98 -0
  650. package/data/layers/interface/component/component:syn-optgroup.md +60 -0
  651. package/data/layers/interface/component/component:syn-option.json +149 -0
  652. package/data/layers/interface/component/component:syn-option.md +74 -0
  653. package/data/layers/interface/component/component:syn-pagination.json +200 -0
  654. package/data/layers/interface/component/component:syn-pagination.md +128 -0
  655. package/data/layers/interface/component/component:syn-popup.json +360 -0
  656. package/data/layers/interface/component/component:syn-popup.md +258 -0
  657. package/data/layers/interface/component/component:syn-prio-nav.json +51 -0
  658. package/data/layers/interface/component/component:syn-prio-nav.md +43 -0
  659. package/data/layers/interface/component/component:syn-progress-bar.json +81 -0
  660. package/data/layers/interface/component/component:syn-progress-bar.md +59 -0
  661. package/data/layers/interface/component/component:syn-progress-ring.json +74 -0
  662. package/data/layers/interface/component/component:syn-progress-ring.md +49 -0
  663. package/data/layers/interface/component/component:syn-radio-button.json +164 -0
  664. package/data/layers/interface/component/component:syn-radio-button.md +102 -0
  665. package/data/layers/interface/component/component:syn-radio-group.json +259 -0
  666. package/data/layers/interface/component/component:syn-radio-group.md +161 -0
  667. package/data/layers/interface/component/component:syn-radio.json +140 -0
  668. package/data/layers/interface/component/component:syn-radio.md +88 -0
  669. package/data/layers/interface/component/component:syn-range-tick.json +51 -0
  670. package/data/layers/interface/component/component:syn-range-tick.md +41 -0
  671. package/data/layers/interface/component/component:syn-range.json +429 -0
  672. package/data/layers/interface/component/component:syn-range.md +266 -0
  673. package/data/layers/interface/component/component:syn-select.json +580 -0
  674. package/data/layers/interface/component/component:syn-select.md +341 -0
  675. package/data/layers/interface/component/component:syn-side-nav.json +189 -0
  676. package/data/layers/interface/component/component:syn-side-nav.md +123 -0
  677. package/data/layers/interface/component/component:syn-spinner.json +21 -0
  678. package/data/layers/interface/component/component:syn-spinner.md +24 -0
  679. package/data/layers/interface/component/component:syn-switch.json +301 -0
  680. package/data/layers/interface/component/component:syn-switch.md +220 -0
  681. package/data/layers/interface/component/component:syn-tab-group.json +234 -0
  682. package/data/layers/interface/component/component:syn-tab-group.md +120 -0
  683. package/data/layers/interface/component/component:syn-tab-panel.json +64 -0
  684. package/data/layers/interface/component/component:syn-tab-panel.md +48 -0
  685. package/data/layers/interface/component/component:syn-tab.json +121 -0
  686. package/data/layers/interface/component/component:syn-tab.md +80 -0
  687. package/data/layers/interface/component/component:syn-tag-group.json +98 -0
  688. package/data/layers/interface/component/component:syn-tag-group.md +61 -0
  689. package/data/layers/interface/component/component:syn-tag.json +78 -0
  690. package/data/layers/interface/component/component:syn-tag.md +63 -0
  691. package/data/layers/interface/component/component:syn-textarea.json +532 -0
  692. package/data/layers/interface/component/component:syn-textarea.md +350 -0
  693. package/data/layers/interface/component/component:syn-tooltip.json +216 -0
  694. package/data/layers/interface/component/component:syn-tooltip.md +154 -0
  695. package/data/layers/interface/component/component:syn-validate.json +226 -0
  696. package/data/layers/interface/component/component:syn-validate.md +102 -0
  697. package/data/manifest.json +47 -0
  698. package/data/schemas/core-entity.schema.json +130 -0
  699. package/data/schemas/layer-ref.schema.json +22 -0
  700. package/data/schemas/manifest.schema.json +76 -0
  701. package/dist/index.d.ts +5 -0
  702. package/dist/index.js +5 -0
  703. package/dist/public/domains/assets.d.ts +34 -0
  704. package/dist/public/domains/assets.js +238 -0
  705. package/dist/public/domains/clusters.d.ts +21 -0
  706. package/dist/public/domains/clusters.js +189 -0
  707. package/dist/public/domains/components.d.ts +66 -0
  708. package/dist/public/domains/components.js +286 -0
  709. package/dist/public/domains/fonts.d.ts +21 -0
  710. package/dist/public/domains/fonts.js +141 -0
  711. package/dist/public/domains/migrations.d.ts +13 -0
  712. package/dist/public/domains/migrations.js +59 -0
  713. package/dist/public/domains/setup.d.ts +39 -0
  714. package/dist/public/domains/setup.js +144 -0
  715. package/dist/public/domains/styles.d.ts +47 -0
  716. package/dist/public/domains/styles.js +182 -0
  717. package/dist/public/domains/templates.d.ts +47 -0
  718. package/dist/public/domains/templates.js +182 -0
  719. package/dist/public/domains/tokens.d.ts +46 -0
  720. package/dist/public/domains/tokens.js +165 -0
  721. package/dist/public/index.d.ts +21 -0
  722. package/dist/public/index.js +11 -0
  723. package/dist/public/store.d.ts +19 -0
  724. package/dist/public/store.js +184 -0
  725. package/dist/public/types.d.ts +374 -0
  726. package/dist/public/types.js +5 -0
  727. package/dist/public/utils.d.ts +48 -0
  728. package/dist/public/utils.js +98 -0
  729. package/package.json +49 -7
  730. package/LICENSE +0 -9
  731. package/src/index.js +0 -1
@@ -0,0 +1,2274 @@
1
+ ## Side Navigation
2
+
3
+ The side navigation opens when the user clicks on the burger menu. As the side navigation opens, a transparent mask fades in and the navigation overlaps the content area. To close the navigation, the user must either click on the close icon or anywhere on the content area to the right of the side navigation.
4
+
5
+ ```html
6
+ <!-- .synergy-demo-application -->
7
+ <div class="synergy-demo-application" id="appshell-side-navigation">
8
+ <!-- header -->
9
+ <syn-header label="Synergy">
10
+ <!-- meta-navigation -->
11
+ <nav slot="meta-navigation">
12
+ <syn-dropdown>
13
+ <syn-icon-button
14
+ color="neutral"
15
+ name="more_vert"
16
+ label="More"
17
+ slot="trigger"
18
+ ></syn-icon-button>
19
+ <syn-menu>
20
+ <syn-menu-item>Menu Item</syn-menu-item>
21
+ <syn-menu-item>Menu Item</syn-menu-item>
22
+ <syn-menu-item>Menu Item</syn-menu-item>
23
+ <syn-menu-item>Menu Item</syn-menu-item>
24
+ <syn-menu-item>Menu Item</syn-menu-item>
25
+ </syn-menu>
26
+ </syn-dropdown>
27
+ </nav>
28
+ <!-- /meta-navigation -->
29
+ </syn-header>
30
+ <!-- /header -->
31
+
32
+ <!-- .synergy-demo-content -->
33
+ <div class="synergy-demo-content">
34
+ <!-- side-navigation -->
35
+ <syn-side-nav variant="default">
36
+ <syn-nav-item current="">
37
+ <syn-icon name="home" slot="prefix"></syn-icon>
38
+ Start
39
+ </syn-nav-item>
40
+ <syn-nav-item divider="">
41
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
42
+ Workspaces
43
+ </syn-nav-item>
44
+ <syn-nav-item divider="">
45
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
46
+ Documents
47
+ </syn-nav-item>
48
+ <syn-nav-item divider="">
49
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
50
+ Cloud
51
+ </syn-nav-item>
52
+ <syn-nav-item divider="">
53
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
54
+ Feedback
55
+ </syn-nav-item>
56
+
57
+ <syn-nav-item slot="footer">
58
+ <syn-icon name="settings" slot="prefix"></syn-icon>
59
+ Settings
60
+ </syn-nav-item>
61
+ <syn-nav-item slot="footer" divider="">
62
+ <syn-icon name="logout" slot="prefix"></syn-icon>
63
+ Logout
64
+ </syn-nav-item>
65
+ </syn-side-nav>
66
+ <!-- /side-navigation -->
67
+
68
+ <main class="synergy-demo-main">
69
+ <h1>Start Page Content</h1>
70
+ Replace this slot
71
+ </main>
72
+
73
+ <!-- footer -->
74
+ <style>
75
+ .synergy-footer-demo {
76
+ container-type: inline-size;
77
+ }
78
+
79
+ .footer-content {
80
+ align-items: center;
81
+ display: flex;
82
+ flex-direction: row;
83
+ gap: var(--syn-spacing-x-large);
84
+ justify-content: space-between;
85
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
86
+ }
87
+
88
+ .copyright {
89
+ font: var(--syn-body-small-bold);
90
+ margin: 0;
91
+ }
92
+
93
+ @container (max-width: 640px) {
94
+ .syn-link-list {
95
+ flex-direction: column;
96
+ }
97
+
98
+ .footer-content {
99
+ align-items: flex-start;
100
+ flex-direction: column;
101
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
102
+ }
103
+ }
104
+ </style>
105
+ <footer class="synergy-footer-demo">
106
+ <nav class="footer-content" aria-label="Footer navigation">
107
+ <ul
108
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
109
+ >
110
+ <li>
111
+ <a
112
+ class="syn-link syn-link--small syn-link--quiet"
113
+ href="https://www.sick.com/imprint"
114
+ >
115
+ Imprint
116
+ </a>
117
+ </li>
118
+ <li>
119
+ <a
120
+ class="syn-link syn-link--small syn-link--quiet"
121
+ href="https://www.sick.com/tac"
122
+ >
123
+ Terms and conditions
124
+ </a>
125
+ </li>
126
+ <li>
127
+ <a
128
+ class="syn-link syn-link--small syn-link--quiet"
129
+ href="https://www.sick.com/terms-of-use"
130
+ >
131
+ Terms of use
132
+ </a>
133
+ </li>
134
+ <li>
135
+ <a
136
+ class="syn-link syn-link--small syn-link--quiet"
137
+ href="https://www.sick.com/dataprotection"
138
+ >
139
+ Privacy Policy
140
+ </a>
141
+ </li>
142
+ </ul>
143
+ <p class="copyright">© 2025 SICK AG</p>
144
+ </nav>
145
+ </footer>
146
+ <!-- /footer -->
147
+ </div>
148
+ <!-- /.synergy-demo-content -->
149
+ </div>
150
+ <!-- /.synergy-demo-application -->
151
+
152
+ <style>
153
+ body {
154
+ margin: 0 !important;
155
+ padding: 0 !important;
156
+ }
157
+
158
+ #storybook-root,
159
+ #root-inner {
160
+ height: 100%;
161
+ }
162
+
163
+ .synergy-demo-application {
164
+ container-type: inline-size;
165
+ display: flex;
166
+ flex-direction: column;
167
+ height: 100%;
168
+ min-height: 550px;
169
+ }
170
+
171
+ .synergy-demo-content {
172
+ background: var(--syn-page-background-color-muted);
173
+ display: flex;
174
+ flex: 1 0 auto;
175
+ flex-direction: column;
176
+ height: 1%;
177
+ position: relative;
178
+ }
179
+
180
+ .synergy-demo-content-inner {
181
+ container-type: inline-size;
182
+ display: flex;
183
+ flex: 1 1 auto;
184
+ flex-direction: column;
185
+ }
186
+
187
+ .synergy-demo-main {
188
+ align-items: center;
189
+ border: 1px dashed #9747ff;
190
+ border-radius: var(--syn-border-radius-medium);
191
+ color: #9747ff;
192
+ display: flex;
193
+ flex: 1 0 auto;
194
+ flex-direction: column;
195
+ font: var(--syn-body-small-bold);
196
+ justify-content: center;
197
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
198
+ padding: 0 var(--syn-spacing-small);
199
+ }
200
+
201
+ @container (max-width: 640px) {
202
+ .synergy-demo-main {
203
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
204
+ }
205
+ }
206
+
207
+ .synergy-demo-main h1 {
208
+ color: var(--syn-typography-color-text);
209
+ font: var(--syn-heading-large);
210
+ margin: 0;
211
+ text-align: center;
212
+ }
213
+ </style>
214
+
215
+ <script type="module">
216
+ // This is only done because in storybooks
217
+ // doc overview multiple side-navs and headers exist.
218
+ // Per default, the header will connect to the first side-nav automatically.
219
+ const applications = document.querySelectorAll("#appshell-side-navigation");
220
+
221
+ Array.from(applications).forEach((application, index) => {
222
+ const selector = "story-loaded-".concat(index);
223
+ if (!application.classList.contains(selector)) {
224
+ const header = application.querySelector("syn-header");
225
+ const sideNav = application.querySelector("syn-side-nav");
226
+ if (sideNav && header) {
227
+ header.connectSideNavigation(sideNav);
228
+ } else if (!sideNav && header) {
229
+ header.burgerMenu = "hidden";
230
+ }
231
+ application.classList.add(selector);
232
+ }
233
+ });
234
+ </script>
235
+
236
+ <script type="module">
237
+ // This emulates a click on the side-nav and updates the main content
238
+ // This will usually be provided by the application itself, e.g. via
239
+ // built in routing functions like angular-router, react-router or vue-router
240
+ const elm = document.getElementById("appshell-side-navigation");
241
+ const nav = elm.querySelector("syn-side-nav");
242
+ const mainContent = elm.querySelector("main");
243
+ const headline = mainContent.querySelector("h1");
244
+
245
+ // Hide the header in case we are using the top navigation
246
+ if ("syn-side-nav" === "syn-prio-nav") {
247
+ const header = elm.querySelector("syn-header");
248
+ header.showBurgerMenu = false;
249
+ }
250
+
251
+ /**
252
+ * This function will handle the click events on all syn-nav-items
253
+ */
254
+ const navItemClickEvent = (e) => {
255
+ const target = e.target.closest("syn-nav-item");
256
+ if (!target) {
257
+ return;
258
+ }
259
+
260
+ // Update the main page headline to reflect the change
261
+ const navItemText = target.innerText.trim();
262
+ headline.innerText = navItemText + " Page Content";
263
+
264
+ // Update the current indicator
265
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
266
+ item.removeAttribute("current");
267
+ if (item === target) {
268
+ item.setAttribute("current", "");
269
+ }
270
+ });
271
+ };
272
+
273
+ // Add the listener to the given navigation
274
+ nav.addEventListener("click", navItemClickEvent);
275
+ </script>
276
+ ```
277
+
278
+ ---
279
+
280
+ ## Side Navigation Shrinking Content
281
+
282
+ The side navigation opens when the user clicks on the burger menu. As the side navigation opens, the content area shrinks. To close the navigation, the user must click on the close icon.
283
+
284
+ ```html
285
+ <!-- .synergy-demo-application -->
286
+ <div class="synergy-demo-application" id="appshell-shrink">
287
+ <!-- header -->
288
+ <syn-header label="Synergy">
289
+ <!-- meta-navigation -->
290
+ <nav slot="meta-navigation">
291
+ <syn-dropdown>
292
+ <syn-icon-button
293
+ color="neutral"
294
+ name="more_vert"
295
+ label="More"
296
+ slot="trigger"
297
+ ></syn-icon-button>
298
+ <syn-menu>
299
+ <syn-menu-item>Menu Item</syn-menu-item>
300
+ <syn-menu-item>Menu Item</syn-menu-item>
301
+ <syn-menu-item>Menu Item</syn-menu-item>
302
+ <syn-menu-item>Menu Item</syn-menu-item>
303
+ <syn-menu-item>Menu Item</syn-menu-item>
304
+ </syn-menu>
305
+ </syn-dropdown>
306
+ </nav>
307
+ <!-- /meta-navigation -->
308
+ </syn-header>
309
+ <!-- /header -->
310
+
311
+ <!-- .synergy-demo-content -->
312
+ <div class="synergy-demo-content">
313
+ <!-- side-navigation -->
314
+ <syn-side-nav no-focus-trapping="" open="" variant="default">
315
+ <syn-nav-item current="">
316
+ <syn-icon name="home" slot="prefix"></syn-icon>
317
+ Start
318
+ </syn-nav-item>
319
+ <syn-nav-item divider="">
320
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
321
+ Workspaces
322
+ </syn-nav-item>
323
+ <syn-nav-item divider="">
324
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
325
+ Documents
326
+ </syn-nav-item>
327
+ <syn-nav-item divider="">
328
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
329
+ Cloud
330
+ </syn-nav-item>
331
+ <syn-nav-item divider="">
332
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
333
+ Feedback
334
+ </syn-nav-item>
335
+
336
+ <syn-nav-item slot="footer">
337
+ <syn-icon name="settings" slot="prefix"></syn-icon>
338
+ Settings
339
+ </syn-nav-item>
340
+ <syn-nav-item slot="footer" divider="">
341
+ <syn-icon name="logout" slot="prefix"></syn-icon>
342
+ Logout
343
+ </syn-nav-item>
344
+ </syn-side-nav>
345
+ <!-- /side-navigation -->
346
+
347
+ <div class="synergy-demo-content-inner">
348
+ <main class="synergy-demo-main">
349
+ <h1>Start Page Content</h1>
350
+ Replace this slot
351
+ </main>
352
+
353
+ <!-- footer -->
354
+ <style>
355
+ .synergy-footer-demo {
356
+ container-type: inline-size;
357
+ }
358
+
359
+ .footer-content {
360
+ align-items: center;
361
+ display: flex;
362
+ flex-direction: row;
363
+ gap: var(--syn-spacing-x-large);
364
+ justify-content: space-between;
365
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
366
+ }
367
+
368
+ .copyright {
369
+ font: var(--syn-body-small-bold);
370
+ margin: 0;
371
+ }
372
+
373
+ @container (max-width: 640px) {
374
+ .syn-link-list {
375
+ flex-direction: column;
376
+ }
377
+
378
+ .footer-content {
379
+ align-items: flex-start;
380
+ flex-direction: column;
381
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
382
+ }
383
+ }
384
+ </style>
385
+ <footer class="synergy-footer-demo">
386
+ <nav class="footer-content" aria-label="Footer navigation">
387
+ <ul
388
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
389
+ >
390
+ <li>
391
+ <a
392
+ class="syn-link syn-link--small syn-link--quiet"
393
+ href="https://www.sick.com/imprint"
394
+ >
395
+ Imprint
396
+ </a>
397
+ </li>
398
+ <li>
399
+ <a
400
+ class="syn-link syn-link--small syn-link--quiet"
401
+ href="https://www.sick.com/tac"
402
+ >
403
+ Terms and conditions
404
+ </a>
405
+ </li>
406
+ <li>
407
+ <a
408
+ class="syn-link syn-link--small syn-link--quiet"
409
+ href="https://www.sick.com/terms-of-use"
410
+ >
411
+ Terms of use
412
+ </a>
413
+ </li>
414
+ <li>
415
+ <a
416
+ class="syn-link syn-link--small syn-link--quiet"
417
+ href="https://www.sick.com/dataprotection"
418
+ >
419
+ Privacy Policy
420
+ </a>
421
+ </li>
422
+ </ul>
423
+ <p class="copyright">© 2025 SICK AG</p>
424
+ </nav>
425
+ </footer>
426
+ <!-- /footer -->
427
+ </div>
428
+ </div>
429
+ <!-- /.synergy-demo-content -->
430
+ </div>
431
+ <!-- /.synergy-demo-application -->
432
+
433
+ <style>
434
+ body {
435
+ margin: 0 !important;
436
+ padding: 0 !important;
437
+ }
438
+
439
+ #storybook-root,
440
+ #root-inner {
441
+ height: 100%;
442
+ }
443
+
444
+ .synergy-demo-application {
445
+ container-type: inline-size;
446
+ display: flex;
447
+ flex-direction: column;
448
+ height: 100%;
449
+ min-height: 550px;
450
+ }
451
+
452
+ .synergy-demo-content {
453
+ background: var(--syn-page-background-color-muted);
454
+ display: flex;
455
+ flex: 1 0 auto;
456
+ flex-direction: column;
457
+ height: 1%;
458
+ position: relative;
459
+ }
460
+
461
+ .synergy-demo-content-inner {
462
+ container-type: inline-size;
463
+ display: flex;
464
+ flex: 1 1 auto;
465
+ flex-direction: column;
466
+ }
467
+
468
+ .synergy-demo-main {
469
+ align-items: center;
470
+ border: 1px dashed #9747ff;
471
+ border-radius: var(--syn-border-radius-medium);
472
+ color: #9747ff;
473
+ display: flex;
474
+ flex: 1 0 auto;
475
+ flex-direction: column;
476
+ font: var(--syn-body-small-bold);
477
+ justify-content: center;
478
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
479
+ padding: 0 var(--syn-spacing-small);
480
+ }
481
+
482
+ @container (max-width: 640px) {
483
+ .synergy-demo-main {
484
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
485
+ }
486
+ }
487
+
488
+ .synergy-demo-main h1 {
489
+ color: var(--syn-typography-color-text);
490
+ font: var(--syn-heading-large);
491
+ margin: 0;
492
+ text-align: center;
493
+ }
494
+ </style>
495
+
496
+ <style>
497
+ #appshell-shrink {
498
+ /**
499
+ * Set this variable to the wanted size of the side-nav
500
+ * Make sure the value stays in sync, otherwise the parts may overlap
501
+ */
502
+ --appshell-shrink-nav-open-width: 320px;
503
+
504
+ syn-side-nav::part(overlay) {
505
+ display: none;
506
+ }
507
+
508
+ .synergy-demo-content-inner {
509
+ /**
510
+ * Set the initial margin left. Needed because we
511
+ * create the page with the side-bar open
512
+ */
513
+ margin-left: var(--appshell-shrink-nav-open-width);
514
+ }
515
+
516
+ /**
517
+ * Show a transition effect for users that do not have reduced motion enabled
518
+ */
519
+ @media (prefers-reduced-motion: no-preference) {
520
+ .synergy-demo-content-inner {
521
+ transition: margin-left 250ms;
522
+ }
523
+ }
524
+ }
525
+ </style>
526
+
527
+ <script type="module">
528
+ // This is only done because in storybooks
529
+ // doc overview multiple side-navs and headers exist.
530
+ // Per default, the header will connect to the first side-nav automatically.
531
+ const applications = document.querySelectorAll("#appshell-shrink");
532
+
533
+ Array.from(applications).forEach((application, index) => {
534
+ const selector = "story-loaded-".concat(index);
535
+ if (!application.classList.contains(selector)) {
536
+ const header = application.querySelector("syn-header");
537
+ const sideNav = application.querySelector("syn-side-nav");
538
+ if (sideNav && header) {
539
+ header.connectSideNavigation(sideNav);
540
+ } else if (!sideNav && header) {
541
+ header.burgerMenu = "hidden";
542
+ }
543
+ application.classList.add(selector);
544
+ }
545
+ });
546
+ </script>
547
+
548
+ <script type="module">
549
+ // This emulates a click on the side-nav and updates the main content
550
+ // This will usually be provided by the application itself, e.g. via
551
+ // built in routing functions like angular-router, react-router or vue-router
552
+ const elm = document.getElementById("appshell-shrink");
553
+ const nav = elm.querySelector("syn-side-nav");
554
+ const mainContent = elm.querySelector("main");
555
+ const headline = mainContent.querySelector("h1");
556
+
557
+ // Hide the header in case we are using the top navigation
558
+ if ("syn-side-nav" === "syn-prio-nav") {
559
+ const header = elm.querySelector("syn-header");
560
+ header.showBurgerMenu = false;
561
+ }
562
+
563
+ /**
564
+ * This function will handle the click events on all syn-nav-items
565
+ */
566
+ const navItemClickEvent = (e) => {
567
+ const target = e.target.closest("syn-nav-item");
568
+ if (!target) {
569
+ return;
570
+ }
571
+
572
+ // Update the main page headline to reflect the change
573
+ const navItemText = target.innerText.trim();
574
+ headline.innerText = navItemText + " Page Content";
575
+
576
+ // Update the current indicator
577
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
578
+ item.removeAttribute("current");
579
+ if (item === target) {
580
+ item.setAttribute("current", "");
581
+ }
582
+ });
583
+ };
584
+
585
+ // Add the listener to the given navigation
586
+ nav.addEventListener("click", navItemClickEvent);
587
+ </script>
588
+
589
+ <script type="module">
590
+ // This script will make sure the margin of the content area
591
+ // is adjusted when the side-bar is opened or closed.
592
+ // Make sure to use the same value as in the css variable above
593
+ const sideNav = document
594
+ .getElementById("appshell-shrink")
595
+ .querySelector("syn-side-nav");
596
+ const demoContent = document
597
+ .getElementById("appshell-shrink")
598
+ .querySelector(".synergy-demo-content-inner");
599
+ sideNav.addEventListener("syn-show", () => {
600
+ demoContent.style.marginLeft = "var(--appshell-shrink-nav-open-width)";
601
+ });
602
+ sideNav.addEventListener("syn-hide", () => {
603
+ demoContent.style.marginLeft = "0px";
604
+ });
605
+ </script>
606
+ ```
607
+
608
+ ---
609
+
610
+ ## Rail Navigation (Desktop)
611
+
612
+ The navigation opens when the user hovers over it. As the navigation opens, it overlaps the content area. To close the navigation, the user simply hovers outside of it.
613
+
614
+ ```html
615
+ <!-- .synergy-demo-application -->
616
+ <div class="synergy-demo-application" id="appshell-rail-desktop">
617
+ <!-- header -->
618
+ <syn-header label="Synergy">
619
+ <!-- meta-navigation -->
620
+ <nav slot="meta-navigation">
621
+ <syn-dropdown>
622
+ <syn-icon-button
623
+ color="neutral"
624
+ name="more_vert"
625
+ label="More"
626
+ slot="trigger"
627
+ ></syn-icon-button>
628
+ <syn-menu>
629
+ <syn-menu-item>Menu Item</syn-menu-item>
630
+ <syn-menu-item>Menu Item</syn-menu-item>
631
+ <syn-menu-item>Menu Item</syn-menu-item>
632
+ <syn-menu-item>Menu Item</syn-menu-item>
633
+ <syn-menu-item>Menu Item</syn-menu-item>
634
+ </syn-menu>
635
+ </syn-dropdown>
636
+ </nav>
637
+ <!-- /meta-navigation -->
638
+ </syn-header>
639
+ <!-- /header -->
640
+
641
+ <!-- .synergy-demo-content -->
642
+ <div class="synergy-demo-content">
643
+ <!-- side-navigation -->
644
+ <syn-side-nav variant="rail">
645
+ <syn-nav-item current="">
646
+ <syn-icon name="home" slot="prefix"></syn-icon>
647
+ Start
648
+ </syn-nav-item>
649
+ <syn-nav-item divider="">
650
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
651
+ Workspaces
652
+ </syn-nav-item>
653
+ <syn-nav-item divider="">
654
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
655
+ Documents
656
+ </syn-nav-item>
657
+ <syn-nav-item divider="">
658
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
659
+ Cloud
660
+ </syn-nav-item>
661
+ <syn-nav-item divider="">
662
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
663
+ Feedback
664
+ </syn-nav-item>
665
+
666
+ <syn-nav-item slot="footer">
667
+ <syn-icon name="settings" slot="prefix"></syn-icon>
668
+ Settings
669
+ </syn-nav-item>
670
+ <syn-nav-item slot="footer" divider="">
671
+ <syn-icon name="logout" slot="prefix"></syn-icon>
672
+ Logout
673
+ </syn-nav-item>
674
+ </syn-side-nav>
675
+ <!-- /side-navigation -->
676
+
677
+ <div class="synergy-demo-content-inner">
678
+ <main class="synergy-demo-main">
679
+ <h1>Start Page Content</h1>
680
+ Replace this slot
681
+ </main>
682
+
683
+ <!-- footer -->
684
+ <style>
685
+ .synergy-footer-demo {
686
+ container-type: inline-size;
687
+ }
688
+
689
+ .footer-content {
690
+ align-items: center;
691
+ display: flex;
692
+ flex-direction: row;
693
+ gap: var(--syn-spacing-x-large);
694
+ justify-content: space-between;
695
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
696
+ }
697
+
698
+ .copyright {
699
+ font: var(--syn-body-small-bold);
700
+ margin: 0;
701
+ }
702
+
703
+ @container (max-width: 640px) {
704
+ .syn-link-list {
705
+ flex-direction: column;
706
+ }
707
+
708
+ .footer-content {
709
+ align-items: flex-start;
710
+ flex-direction: column;
711
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
712
+ }
713
+ }
714
+ </style>
715
+ <footer class="synergy-footer-demo">
716
+ <nav class="footer-content" aria-label="Footer navigation">
717
+ <ul
718
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
719
+ >
720
+ <li>
721
+ <a
722
+ class="syn-link syn-link--small syn-link--quiet"
723
+ href="https://www.sick.com/imprint"
724
+ >
725
+ Imprint
726
+ </a>
727
+ </li>
728
+ <li>
729
+ <a
730
+ class="syn-link syn-link--small syn-link--quiet"
731
+ href="https://www.sick.com/tac"
732
+ >
733
+ Terms and conditions
734
+ </a>
735
+ </li>
736
+ <li>
737
+ <a
738
+ class="syn-link syn-link--small syn-link--quiet"
739
+ href="https://www.sick.com/terms-of-use"
740
+ >
741
+ Terms of use
742
+ </a>
743
+ </li>
744
+ <li>
745
+ <a
746
+ class="syn-link syn-link--small syn-link--quiet"
747
+ href="https://www.sick.com/dataprotection"
748
+ >
749
+ Privacy Policy
750
+ </a>
751
+ </li>
752
+ </ul>
753
+ <p class="copyright">© 2025 SICK AG</p>
754
+ </nav>
755
+ </footer>
756
+ <!-- /footer -->
757
+ </div>
758
+ </div>
759
+ <!-- /.synergy-demo-content -->
760
+ </div>
761
+ <!-- /.synergy-demo-application -->
762
+
763
+ <style>
764
+ body {
765
+ margin: 0 !important;
766
+ padding: 0 !important;
767
+ }
768
+
769
+ #storybook-root,
770
+ #root-inner {
771
+ height: 100%;
772
+ }
773
+
774
+ .synergy-demo-application {
775
+ container-type: inline-size;
776
+ display: flex;
777
+ flex-direction: column;
778
+ height: 100%;
779
+ min-height: 550px;
780
+ }
781
+
782
+ .synergy-demo-content {
783
+ background: var(--syn-page-background-color-muted);
784
+ display: flex;
785
+ flex: 1 0 auto;
786
+ flex-direction: column;
787
+ height: 1%;
788
+ position: relative;
789
+ }
790
+
791
+ .synergy-demo-content-inner {
792
+ container-type: inline-size;
793
+ display: flex;
794
+ flex: 1 1 auto;
795
+ flex-direction: column;
796
+ }
797
+
798
+ .synergy-demo-main {
799
+ align-items: center;
800
+ border: 1px dashed #9747ff;
801
+ border-radius: var(--syn-border-radius-medium);
802
+ color: #9747ff;
803
+ display: flex;
804
+ flex: 1 0 auto;
805
+ flex-direction: column;
806
+ font: var(--syn-body-small-bold);
807
+ justify-content: center;
808
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
809
+ padding: 0 var(--syn-spacing-small);
810
+ }
811
+
812
+ @container (max-width: 640px) {
813
+ .synergy-demo-main {
814
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
815
+ }
816
+ }
817
+
818
+ .synergy-demo-main h1 {
819
+ color: var(--syn-typography-color-text);
820
+ font: var(--syn-heading-large);
821
+ margin: 0;
822
+ text-align: center;
823
+ }
824
+ </style>
825
+
826
+ <script type="module">
827
+ // This is only done because in storybooks
828
+ // doc overview multiple side-navs and headers exist.
829
+ // Per default, the header will connect to the first side-nav automatically.
830
+ const applications = document.querySelectorAll("#appshell-rail-desktop");
831
+
832
+ Array.from(applications).forEach((application, index) => {
833
+ const selector = "story-loaded-".concat(index);
834
+ if (!application.classList.contains(selector)) {
835
+ const header = application.querySelector("syn-header");
836
+ const sideNav = application.querySelector("syn-side-nav");
837
+ if (sideNav && header) {
838
+ header.connectSideNavigation(sideNav);
839
+ } else if (!sideNav && header) {
840
+ header.burgerMenu = "hidden";
841
+ }
842
+ application.classList.add(selector);
843
+ }
844
+ });
845
+ </script>
846
+
847
+ <script type="module">
848
+ // This emulates a click on the side-nav and updates the main content
849
+ // This will usually be provided by the application itself, e.g. via
850
+ // built in routing functions like angular-router, react-router or vue-router
851
+ const elm = document.getElementById("appshell-rail-desktop");
852
+ const nav = elm.querySelector("syn-side-nav");
853
+ const mainContent = elm.querySelector("main");
854
+ const headline = mainContent.querySelector("h1");
855
+
856
+ // Hide the header in case we are using the top navigation
857
+ if ("syn-side-nav" === "syn-prio-nav") {
858
+ const header = elm.querySelector("syn-header");
859
+ header.showBurgerMenu = false;
860
+ }
861
+
862
+ /**
863
+ * This function will handle the click events on all syn-nav-items
864
+ */
865
+ const navItemClickEvent = (e) => {
866
+ const target = e.target.closest("syn-nav-item");
867
+ if (!target) {
868
+ return;
869
+ }
870
+
871
+ // Update the main page headline to reflect the change
872
+ const navItemText = target.innerText.trim();
873
+ headline.innerText = navItemText + " Page Content";
874
+
875
+ // Update the current indicator
876
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
877
+ item.removeAttribute("current");
878
+ if (item === target) {
879
+ item.setAttribute("current", "");
880
+ }
881
+ });
882
+ };
883
+
884
+ // Add the listener to the given navigation
885
+ nav.addEventListener("click", navItemClickEvent);
886
+ </script>
887
+
888
+ <style>
889
+ #appshell-rail-desktop .synergy-demo-content {
890
+ flex-direction: row;
891
+ }
892
+
893
+ @media (max-width: 420px) {
894
+ #appshell-rail-desktop syn-side-nav {
895
+ --side-nav-open-width: 306px;
896
+ }
897
+ }
898
+ </style>
899
+ ```
900
+
901
+ ---
902
+
903
+ ## ↳ Tablet
904
+
905
+ The navigation opens when the user touches it. As the side navigation opens, a transparent mask fades in and the navigation overlaps the content area. To close the navigation, the user must touch anywhere on the content area to the right of the side navigation.
906
+
907
+ ```html
908
+ <!-- .synergy-demo-application -->
909
+ <div class="synergy-demo-application" id="appshell-rail-desktop">
910
+ <!-- header -->
911
+ <syn-header label="Synergy">
912
+ <!-- meta-navigation -->
913
+ <nav slot="meta-navigation">
914
+ <syn-dropdown>
915
+ <syn-icon-button
916
+ color="neutral"
917
+ name="more_vert"
918
+ label="More"
919
+ slot="trigger"
920
+ ></syn-icon-button>
921
+ <syn-menu>
922
+ <syn-menu-item>Menu Item</syn-menu-item>
923
+ <syn-menu-item>Menu Item</syn-menu-item>
924
+ <syn-menu-item>Menu Item</syn-menu-item>
925
+ <syn-menu-item>Menu Item</syn-menu-item>
926
+ <syn-menu-item>Menu Item</syn-menu-item>
927
+ </syn-menu>
928
+ </syn-dropdown>
929
+ </nav>
930
+ <!-- /meta-navigation -->
931
+ </syn-header>
932
+ <!-- /header -->
933
+
934
+ <!-- .synergy-demo-content -->
935
+ <div class="synergy-demo-content">
936
+ <!-- side-navigation -->
937
+ <syn-side-nav variant="rail">
938
+ <syn-nav-item current="">
939
+ <syn-icon name="home" slot="prefix"></syn-icon>
940
+ Start
941
+ </syn-nav-item>
942
+ <syn-nav-item divider="">
943
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
944
+ Workspaces
945
+ </syn-nav-item>
946
+ <syn-nav-item divider="">
947
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
948
+ Documents
949
+ </syn-nav-item>
950
+ <syn-nav-item divider="">
951
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
952
+ Cloud
953
+ </syn-nav-item>
954
+ <syn-nav-item divider="">
955
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
956
+ Feedback
957
+ </syn-nav-item>
958
+
959
+ <syn-nav-item slot="footer">
960
+ <syn-icon name="settings" slot="prefix"></syn-icon>
961
+ Settings
962
+ </syn-nav-item>
963
+ <syn-nav-item slot="footer" divider="">
964
+ <syn-icon name="logout" slot="prefix"></syn-icon>
965
+ Logout
966
+ </syn-nav-item>
967
+ </syn-side-nav>
968
+ <!-- /side-navigation -->
969
+
970
+ <div class="synergy-demo-content-inner">
971
+ <main class="synergy-demo-main">
972
+ <h1>Start Page Content</h1>
973
+ Replace this slot
974
+ </main>
975
+
976
+ <!-- footer -->
977
+ <style>
978
+ .synergy-footer-demo {
979
+ container-type: inline-size;
980
+ }
981
+
982
+ .footer-content {
983
+ align-items: center;
984
+ display: flex;
985
+ flex-direction: row;
986
+ gap: var(--syn-spacing-x-large);
987
+ justify-content: space-between;
988
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
989
+ }
990
+
991
+ .copyright {
992
+ font: var(--syn-body-small-bold);
993
+ margin: 0;
994
+ }
995
+
996
+ @container (max-width: 640px) {
997
+ .syn-link-list {
998
+ flex-direction: column;
999
+ }
1000
+
1001
+ .footer-content {
1002
+ align-items: flex-start;
1003
+ flex-direction: column;
1004
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
1005
+ }
1006
+ }
1007
+ </style>
1008
+ <footer class="synergy-footer-demo">
1009
+ <nav class="footer-content" aria-label="Footer navigation">
1010
+ <ul
1011
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
1012
+ >
1013
+ <li>
1014
+ <a
1015
+ class="syn-link syn-link--small syn-link--quiet"
1016
+ href="https://www.sick.com/imprint"
1017
+ >
1018
+ Imprint
1019
+ </a>
1020
+ </li>
1021
+ <li>
1022
+ <a
1023
+ class="syn-link syn-link--small syn-link--quiet"
1024
+ href="https://www.sick.com/tac"
1025
+ >
1026
+ Terms and conditions
1027
+ </a>
1028
+ </li>
1029
+ <li>
1030
+ <a
1031
+ class="syn-link syn-link--small syn-link--quiet"
1032
+ href="https://www.sick.com/terms-of-use"
1033
+ >
1034
+ Terms of use
1035
+ </a>
1036
+ </li>
1037
+ <li>
1038
+ <a
1039
+ class="syn-link syn-link--small syn-link--quiet"
1040
+ href="https://www.sick.com/dataprotection"
1041
+ >
1042
+ Privacy Policy
1043
+ </a>
1044
+ </li>
1045
+ </ul>
1046
+ <p class="copyright">© 2025 SICK AG</p>
1047
+ </nav>
1048
+ </footer>
1049
+ <!-- /footer -->
1050
+ </div>
1051
+ </div>
1052
+ <!-- /.synergy-demo-content -->
1053
+ </div>
1054
+ <!-- /.synergy-demo-application -->
1055
+
1056
+ <style>
1057
+ body {
1058
+ margin: 0 !important;
1059
+ padding: 0 !important;
1060
+ }
1061
+
1062
+ #storybook-root,
1063
+ #root-inner {
1064
+ height: 100%;
1065
+ }
1066
+
1067
+ .synergy-demo-application {
1068
+ container-type: inline-size;
1069
+ display: flex;
1070
+ flex-direction: column;
1071
+ height: 100%;
1072
+ min-height: 550px;
1073
+ }
1074
+
1075
+ .synergy-demo-content {
1076
+ background: var(--syn-page-background-color-muted);
1077
+ display: flex;
1078
+ flex: 1 0 auto;
1079
+ flex-direction: column;
1080
+ height: 1%;
1081
+ position: relative;
1082
+ }
1083
+
1084
+ .synergy-demo-content-inner {
1085
+ container-type: inline-size;
1086
+ display: flex;
1087
+ flex: 1 1 auto;
1088
+ flex-direction: column;
1089
+ }
1090
+
1091
+ .synergy-demo-main {
1092
+ align-items: center;
1093
+ border: 1px dashed #9747ff;
1094
+ border-radius: var(--syn-border-radius-medium);
1095
+ color: #9747ff;
1096
+ display: flex;
1097
+ flex: 1 0 auto;
1098
+ flex-direction: column;
1099
+ font: var(--syn-body-small-bold);
1100
+ justify-content: center;
1101
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
1102
+ padding: 0 var(--syn-spacing-small);
1103
+ }
1104
+
1105
+ @container (max-width: 640px) {
1106
+ .synergy-demo-main {
1107
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
1108
+ }
1109
+ }
1110
+
1111
+ .synergy-demo-main h1 {
1112
+ color: var(--syn-typography-color-text);
1113
+ font: var(--syn-heading-large);
1114
+ margin: 0;
1115
+ text-align: center;
1116
+ }
1117
+ </style>
1118
+
1119
+ <script type="module">
1120
+ // This is only done because in storybooks
1121
+ // doc overview multiple side-navs and headers exist.
1122
+ // Per default, the header will connect to the first side-nav automatically.
1123
+ const applications = document.querySelectorAll("#appshell-rail-desktop");
1124
+
1125
+ Array.from(applications).forEach((application, index) => {
1126
+ const selector = "story-loaded-".concat(index);
1127
+ if (!application.classList.contains(selector)) {
1128
+ const header = application.querySelector("syn-header");
1129
+ const sideNav = application.querySelector("syn-side-nav");
1130
+ if (sideNav && header) {
1131
+ header.connectSideNavigation(sideNav);
1132
+ } else if (!sideNav && header) {
1133
+ header.burgerMenu = "hidden";
1134
+ }
1135
+ application.classList.add(selector);
1136
+ }
1137
+ });
1138
+ </script>
1139
+
1140
+ <script type="module">
1141
+ // This emulates a click on the side-nav and updates the main content
1142
+ // This will usually be provided by the application itself, e.g. via
1143
+ // built in routing functions like angular-router, react-router or vue-router
1144
+ const elm = document.getElementById("appshell-rail-desktop");
1145
+ const nav = elm.querySelector("syn-side-nav");
1146
+ const mainContent = elm.querySelector("main");
1147
+ const headline = mainContent.querySelector("h1");
1148
+
1149
+ // Hide the header in case we are using the top navigation
1150
+ if ("syn-side-nav" === "syn-prio-nav") {
1151
+ const header = elm.querySelector("syn-header");
1152
+ header.showBurgerMenu = false;
1153
+ }
1154
+
1155
+ /**
1156
+ * This function will handle the click events on all syn-nav-items
1157
+ */
1158
+ const navItemClickEvent = (e) => {
1159
+ const target = e.target.closest("syn-nav-item");
1160
+ if (!target) {
1161
+ return;
1162
+ }
1163
+
1164
+ // Update the main page headline to reflect the change
1165
+ const navItemText = target.innerText.trim();
1166
+ headline.innerText = navItemText + " Page Content";
1167
+
1168
+ // Update the current indicator
1169
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
1170
+ item.removeAttribute("current");
1171
+ if (item === target) {
1172
+ item.setAttribute("current", "");
1173
+ }
1174
+ });
1175
+ };
1176
+
1177
+ // Add the listener to the given navigation
1178
+ nav.addEventListener("click", navItemClickEvent);
1179
+ </script>
1180
+
1181
+ <style>
1182
+ #appshell-rail-desktop .synergy-demo-content {
1183
+ flex-direction: row;
1184
+ }
1185
+
1186
+ @media (max-width: 420px) {
1187
+ #appshell-rail-desktop syn-side-nav {
1188
+ --side-nav-open-width: 306px;
1189
+ }
1190
+ }
1191
+ </style>
1192
+ ```
1193
+
1194
+ ---
1195
+
1196
+ ## Sticky Navigation (Desktop)
1197
+
1198
+ General BehaviourThe navigation maintains its compact width until the user clicks the “show sidebar” icon at the bottom. When the navigation expands, it shifts the content area. To reduce the navigation's width, the user simply clicks “Hide sidebar” again.
1199
+
1200
+ ```html
1201
+ <!-- .synergy-demo-application -->
1202
+ <div class="synergy-demo-application" id="appshell-sticky-desktop">
1203
+ <!-- header -->
1204
+ <syn-header label="Synergy">
1205
+ <!-- meta-navigation -->
1206
+ <nav slot="meta-navigation">
1207
+ <syn-dropdown>
1208
+ <syn-icon-button
1209
+ color="neutral"
1210
+ name="more_vert"
1211
+ label="More"
1212
+ slot="trigger"
1213
+ ></syn-icon-button>
1214
+ <syn-menu>
1215
+ <syn-menu-item>Menu Item</syn-menu-item>
1216
+ <syn-menu-item>Menu Item</syn-menu-item>
1217
+ <syn-menu-item>Menu Item</syn-menu-item>
1218
+ <syn-menu-item>Menu Item</syn-menu-item>
1219
+ <syn-menu-item>Menu Item</syn-menu-item>
1220
+ </syn-menu>
1221
+ </syn-dropdown>
1222
+ </nav>
1223
+ <!-- /meta-navigation -->
1224
+ </syn-header>
1225
+ <!-- /header -->
1226
+
1227
+ <!-- .synergy-demo-content -->
1228
+ <div class="synergy-demo-content">
1229
+ <!-- side-navigation -->
1230
+ <syn-side-nav variant="sticky">
1231
+ <syn-nav-item current="">
1232
+ <syn-icon name="home" slot="prefix"></syn-icon>
1233
+ Start
1234
+ </syn-nav-item>
1235
+ <syn-nav-item divider="">
1236
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
1237
+ Workspaces
1238
+ </syn-nav-item>
1239
+ <syn-nav-item divider="">
1240
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
1241
+ Documents
1242
+ </syn-nav-item>
1243
+ <syn-nav-item divider="">
1244
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
1245
+ Cloud
1246
+ </syn-nav-item>
1247
+ <syn-nav-item divider="">
1248
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
1249
+ Feedback
1250
+ </syn-nav-item>
1251
+ </syn-side-nav>
1252
+ <!-- /side-navigation -->
1253
+
1254
+ <div class="synergy-demo-content-inner">
1255
+ <main class="synergy-demo-main">
1256
+ <h1>Start Page Content</h1>
1257
+ Replace this slot
1258
+ </main>
1259
+
1260
+ <!-- footer -->
1261
+ <style>
1262
+ .synergy-footer-demo {
1263
+ container-type: inline-size;
1264
+ }
1265
+
1266
+ .footer-content {
1267
+ align-items: center;
1268
+ display: flex;
1269
+ flex-direction: row;
1270
+ gap: var(--syn-spacing-x-large);
1271
+ justify-content: space-between;
1272
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
1273
+ }
1274
+
1275
+ .copyright {
1276
+ font: var(--syn-body-small-bold);
1277
+ margin: 0;
1278
+ }
1279
+
1280
+ @container (max-width: 640px) {
1281
+ .syn-link-list {
1282
+ flex-direction: column;
1283
+ }
1284
+
1285
+ .footer-content {
1286
+ align-items: flex-start;
1287
+ flex-direction: column;
1288
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
1289
+ }
1290
+ }
1291
+ </style>
1292
+ <footer class="synergy-footer-demo">
1293
+ <nav class="footer-content" aria-label="Footer navigation">
1294
+ <ul
1295
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
1296
+ >
1297
+ <li>
1298
+ <a
1299
+ class="syn-link syn-link--small syn-link--quiet"
1300
+ href="https://www.sick.com/imprint"
1301
+ >
1302
+ Imprint
1303
+ </a>
1304
+ </li>
1305
+ <li>
1306
+ <a
1307
+ class="syn-link syn-link--small syn-link--quiet"
1308
+ href="https://www.sick.com/tac"
1309
+ >
1310
+ Terms and conditions
1311
+ </a>
1312
+ </li>
1313
+ <li>
1314
+ <a
1315
+ class="syn-link syn-link--small syn-link--quiet"
1316
+ href="https://www.sick.com/terms-of-use"
1317
+ >
1318
+ Terms of use
1319
+ </a>
1320
+ </li>
1321
+ <li>
1322
+ <a
1323
+ class="syn-link syn-link--small syn-link--quiet"
1324
+ href="https://www.sick.com/dataprotection"
1325
+ >
1326
+ Privacy Policy
1327
+ </a>
1328
+ </li>
1329
+ </ul>
1330
+ <p class="copyright">© 2025 SICK AG</p>
1331
+ </nav>
1332
+ </footer>
1333
+ <!-- /footer -->
1334
+ </div>
1335
+ </div>
1336
+ <!-- /.synergy-demo-content -->
1337
+ </div>
1338
+ <!-- /.synergy-demo-application -->
1339
+
1340
+ <style>
1341
+ body {
1342
+ margin: 0 !important;
1343
+ padding: 0 !important;
1344
+ }
1345
+
1346
+ #storybook-root,
1347
+ #root-inner {
1348
+ height: 100%;
1349
+ }
1350
+
1351
+ .synergy-demo-application {
1352
+ container-type: inline-size;
1353
+ display: flex;
1354
+ flex-direction: column;
1355
+ height: 100%;
1356
+ min-height: 550px;
1357
+ }
1358
+
1359
+ .synergy-demo-content {
1360
+ background: var(--syn-page-background-color-muted);
1361
+ display: flex;
1362
+ flex: 1 0 auto;
1363
+ flex-direction: column;
1364
+ height: 1%;
1365
+ position: relative;
1366
+ }
1367
+
1368
+ .synergy-demo-content-inner {
1369
+ container-type: inline-size;
1370
+ display: flex;
1371
+ flex: 1 1 auto;
1372
+ flex-direction: column;
1373
+ }
1374
+
1375
+ .synergy-demo-main {
1376
+ align-items: center;
1377
+ border: 1px dashed #9747ff;
1378
+ border-radius: var(--syn-border-radius-medium);
1379
+ color: #9747ff;
1380
+ display: flex;
1381
+ flex: 1 0 auto;
1382
+ flex-direction: column;
1383
+ font: var(--syn-body-small-bold);
1384
+ justify-content: center;
1385
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
1386
+ padding: 0 var(--syn-spacing-small);
1387
+ }
1388
+
1389
+ @container (max-width: 640px) {
1390
+ .synergy-demo-main {
1391
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
1392
+ }
1393
+ }
1394
+
1395
+ .synergy-demo-main h1 {
1396
+ color: var(--syn-typography-color-text);
1397
+ font: var(--syn-heading-large);
1398
+ margin: 0;
1399
+ text-align: center;
1400
+ }
1401
+ </style>
1402
+
1403
+ <script type="module">
1404
+ // This is only done because in storybooks
1405
+ // doc overview multiple side-navs and headers exist.
1406
+ // Per default, the header will connect to the first side-nav automatically.
1407
+ const applications = document.querySelectorAll("#appshell-sticky-desktop");
1408
+
1409
+ Array.from(applications).forEach((application, index) => {
1410
+ const selector = "story-loaded-".concat(index);
1411
+ if (!application.classList.contains(selector)) {
1412
+ const header = application.querySelector("syn-header");
1413
+ const sideNav = application.querySelector("syn-side-nav");
1414
+ if (sideNav && header) {
1415
+ header.connectSideNavigation(sideNav);
1416
+ } else if (!sideNav && header) {
1417
+ header.burgerMenu = "hidden";
1418
+ }
1419
+ application.classList.add(selector);
1420
+ }
1421
+ });
1422
+ </script>
1423
+
1424
+ <script type="module">
1425
+ // This emulates a click on the side-nav and updates the main content
1426
+ // This will usually be provided by the application itself, e.g. via
1427
+ // built in routing functions like angular-router, react-router or vue-router
1428
+ const elm = document.getElementById("appshell-sticky-desktop");
1429
+ const nav = elm.querySelector("syn-side-nav");
1430
+ const mainContent = elm.querySelector("main");
1431
+ const headline = mainContent.querySelector("h1");
1432
+
1433
+ // Hide the header in case we are using the top navigation
1434
+ if ("syn-side-nav" === "syn-prio-nav") {
1435
+ const header = elm.querySelector("syn-header");
1436
+ header.showBurgerMenu = false;
1437
+ }
1438
+
1439
+ /**
1440
+ * This function will handle the click events on all syn-nav-items
1441
+ */
1442
+ const navItemClickEvent = (e) => {
1443
+ const target = e.target.closest("syn-nav-item");
1444
+ if (!target) {
1445
+ return;
1446
+ }
1447
+
1448
+ // Update the main page headline to reflect the change
1449
+ const navItemText = target.innerText.trim();
1450
+ headline.innerText = navItemText + " Page Content";
1451
+
1452
+ // Update the current indicator
1453
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
1454
+ item.removeAttribute("current");
1455
+ if (item === target) {
1456
+ item.setAttribute("current", "");
1457
+ }
1458
+ });
1459
+ };
1460
+
1461
+ // Add the listener to the given navigation
1462
+ nav.addEventListener("click", navItemClickEvent);
1463
+ </script>
1464
+
1465
+ <style>
1466
+ #appshell-sticky-desktop .synergy-demo-content {
1467
+ flex-direction: row;
1468
+ }
1469
+
1470
+ @media (max-width: 420px) {
1471
+ #appshell-sticky-desktop syn-side-nav {
1472
+ --side-nav-open-width: 306px;
1473
+ }
1474
+ }
1475
+ </style>
1476
+ ```
1477
+
1478
+ ---
1479
+
1480
+ ## ↳ Tablet
1481
+
1482
+ General BehaviourThe navigation maintains its compact width until the user clicks the “show sidebar” icon at the bottom. When the navigation expands, it shifts the content area. To reduce the navigation's width, the user simply clicks “Hide sidebar” again.
1483
+
1484
+ ```html
1485
+ <!-- .synergy-demo-application -->
1486
+ <div class="synergy-demo-application" id="appshell-sticky-desktop">
1487
+ <!-- header -->
1488
+ <syn-header label="Synergy">
1489
+ <!-- meta-navigation -->
1490
+ <nav slot="meta-navigation">
1491
+ <syn-dropdown>
1492
+ <syn-icon-button
1493
+ color="neutral"
1494
+ name="more_vert"
1495
+ label="More"
1496
+ slot="trigger"
1497
+ ></syn-icon-button>
1498
+ <syn-menu>
1499
+ <syn-menu-item>Menu Item</syn-menu-item>
1500
+ <syn-menu-item>Menu Item</syn-menu-item>
1501
+ <syn-menu-item>Menu Item</syn-menu-item>
1502
+ <syn-menu-item>Menu Item</syn-menu-item>
1503
+ <syn-menu-item>Menu Item</syn-menu-item>
1504
+ </syn-menu>
1505
+ </syn-dropdown>
1506
+ </nav>
1507
+ <!-- /meta-navigation -->
1508
+ </syn-header>
1509
+ <!-- /header -->
1510
+
1511
+ <!-- .synergy-demo-content -->
1512
+ <div class="synergy-demo-content">
1513
+ <!-- side-navigation -->
1514
+ <syn-side-nav variant="sticky">
1515
+ <syn-nav-item current="">
1516
+ <syn-icon name="home" slot="prefix"></syn-icon>
1517
+ Start
1518
+ </syn-nav-item>
1519
+ <syn-nav-item divider="">
1520
+ <syn-icon name="spoke" slot="prefix"></syn-icon>
1521
+ Workspaces
1522
+ </syn-nav-item>
1523
+ <syn-nav-item divider="">
1524
+ <syn-icon name="insert_drive_file" slot="prefix"></syn-icon>
1525
+ Documents
1526
+ </syn-nav-item>
1527
+ <syn-nav-item divider="">
1528
+ <syn-icon name="wb_cloudy" slot="prefix"></syn-icon>
1529
+ Cloud
1530
+ </syn-nav-item>
1531
+ <syn-nav-item divider="">
1532
+ <syn-icon name="volunteer_activism" slot="prefix"></syn-icon>
1533
+ Feedback
1534
+ </syn-nav-item>
1535
+ </syn-side-nav>
1536
+ <!-- /side-navigation -->
1537
+
1538
+ <div class="synergy-demo-content-inner">
1539
+ <main class="synergy-demo-main">
1540
+ <h1>Start Page Content</h1>
1541
+ Replace this slot
1542
+ </main>
1543
+
1544
+ <!-- footer -->
1545
+ <style>
1546
+ .synergy-footer-demo {
1547
+ container-type: inline-size;
1548
+ }
1549
+
1550
+ .footer-content {
1551
+ align-items: center;
1552
+ display: flex;
1553
+ flex-direction: row;
1554
+ gap: var(--syn-spacing-x-large);
1555
+ justify-content: space-between;
1556
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
1557
+ }
1558
+
1559
+ .copyright {
1560
+ font: var(--syn-body-small-bold);
1561
+ margin: 0;
1562
+ }
1563
+
1564
+ @container (max-width: 640px) {
1565
+ .syn-link-list {
1566
+ flex-direction: column;
1567
+ }
1568
+
1569
+ .footer-content {
1570
+ align-items: flex-start;
1571
+ flex-direction: column;
1572
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
1573
+ }
1574
+ }
1575
+ </style>
1576
+ <footer class="synergy-footer-demo">
1577
+ <nav class="footer-content" aria-label="Footer navigation">
1578
+ <ul
1579
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
1580
+ >
1581
+ <li>
1582
+ <a
1583
+ class="syn-link syn-link--small syn-link--quiet"
1584
+ href="https://www.sick.com/imprint"
1585
+ >
1586
+ Imprint
1587
+ </a>
1588
+ </li>
1589
+ <li>
1590
+ <a
1591
+ class="syn-link syn-link--small syn-link--quiet"
1592
+ href="https://www.sick.com/tac"
1593
+ >
1594
+ Terms and conditions
1595
+ </a>
1596
+ </li>
1597
+ <li>
1598
+ <a
1599
+ class="syn-link syn-link--small syn-link--quiet"
1600
+ href="https://www.sick.com/terms-of-use"
1601
+ >
1602
+ Terms of use
1603
+ </a>
1604
+ </li>
1605
+ <li>
1606
+ <a
1607
+ class="syn-link syn-link--small syn-link--quiet"
1608
+ href="https://www.sick.com/dataprotection"
1609
+ >
1610
+ Privacy Policy
1611
+ </a>
1612
+ </li>
1613
+ </ul>
1614
+ <p class="copyright">© 2025 SICK AG</p>
1615
+ </nav>
1616
+ </footer>
1617
+ <!-- /footer -->
1618
+ </div>
1619
+ </div>
1620
+ <!-- /.synergy-demo-content -->
1621
+ </div>
1622
+ <!-- /.synergy-demo-application -->
1623
+
1624
+ <style>
1625
+ body {
1626
+ margin: 0 !important;
1627
+ padding: 0 !important;
1628
+ }
1629
+
1630
+ #storybook-root,
1631
+ #root-inner {
1632
+ height: 100%;
1633
+ }
1634
+
1635
+ .synergy-demo-application {
1636
+ container-type: inline-size;
1637
+ display: flex;
1638
+ flex-direction: column;
1639
+ height: 100%;
1640
+ min-height: 550px;
1641
+ }
1642
+
1643
+ .synergy-demo-content {
1644
+ background: var(--syn-page-background-color-muted);
1645
+ display: flex;
1646
+ flex: 1 0 auto;
1647
+ flex-direction: column;
1648
+ height: 1%;
1649
+ position: relative;
1650
+ }
1651
+
1652
+ .synergy-demo-content-inner {
1653
+ container-type: inline-size;
1654
+ display: flex;
1655
+ flex: 1 1 auto;
1656
+ flex-direction: column;
1657
+ }
1658
+
1659
+ .synergy-demo-main {
1660
+ align-items: center;
1661
+ border: 1px dashed #9747ff;
1662
+ border-radius: var(--syn-border-radius-medium);
1663
+ color: #9747ff;
1664
+ display: flex;
1665
+ flex: 1 0 auto;
1666
+ flex-direction: column;
1667
+ font: var(--syn-body-small-bold);
1668
+ justify-content: center;
1669
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
1670
+ padding: 0 var(--syn-spacing-small);
1671
+ }
1672
+
1673
+ @container (max-width: 640px) {
1674
+ .synergy-demo-main {
1675
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
1676
+ }
1677
+ }
1678
+
1679
+ .synergy-demo-main h1 {
1680
+ color: var(--syn-typography-color-text);
1681
+ font: var(--syn-heading-large);
1682
+ margin: 0;
1683
+ text-align: center;
1684
+ }
1685
+ </style>
1686
+
1687
+ <script type="module">
1688
+ // This is only done because in storybooks
1689
+ // doc overview multiple side-navs and headers exist.
1690
+ // Per default, the header will connect to the first side-nav automatically.
1691
+ const applications = document.querySelectorAll("#appshell-sticky-desktop");
1692
+
1693
+ Array.from(applications).forEach((application, index) => {
1694
+ const selector = "story-loaded-".concat(index);
1695
+ if (!application.classList.contains(selector)) {
1696
+ const header = application.querySelector("syn-header");
1697
+ const sideNav = application.querySelector("syn-side-nav");
1698
+ if (sideNav && header) {
1699
+ header.connectSideNavigation(sideNav);
1700
+ } else if (!sideNav && header) {
1701
+ header.burgerMenu = "hidden";
1702
+ }
1703
+ application.classList.add(selector);
1704
+ }
1705
+ });
1706
+ </script>
1707
+
1708
+ <script type="module">
1709
+ // This emulates a click on the side-nav and updates the main content
1710
+ // This will usually be provided by the application itself, e.g. via
1711
+ // built in routing functions like angular-router, react-router or vue-router
1712
+ const elm = document.getElementById("appshell-sticky-desktop");
1713
+ const nav = elm.querySelector("syn-side-nav");
1714
+ const mainContent = elm.querySelector("main");
1715
+ const headline = mainContent.querySelector("h1");
1716
+
1717
+ // Hide the header in case we are using the top navigation
1718
+ if ("syn-side-nav" === "syn-prio-nav") {
1719
+ const header = elm.querySelector("syn-header");
1720
+ header.showBurgerMenu = false;
1721
+ }
1722
+
1723
+ /**
1724
+ * This function will handle the click events on all syn-nav-items
1725
+ */
1726
+ const navItemClickEvent = (e) => {
1727
+ const target = e.target.closest("syn-nav-item");
1728
+ if (!target) {
1729
+ return;
1730
+ }
1731
+
1732
+ // Update the main page headline to reflect the change
1733
+ const navItemText = target.innerText.trim();
1734
+ headline.innerText = navItemText + " Page Content";
1735
+
1736
+ // Update the current indicator
1737
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
1738
+ item.removeAttribute("current");
1739
+ if (item === target) {
1740
+ item.setAttribute("current", "");
1741
+ }
1742
+ });
1743
+ };
1744
+
1745
+ // Add the listener to the given navigation
1746
+ nav.addEventListener("click", navItemClickEvent);
1747
+ </script>
1748
+
1749
+ <style>
1750
+ #appshell-sticky-desktop .synergy-demo-content {
1751
+ flex-direction: row;
1752
+ }
1753
+
1754
+ @media (max-width: 420px) {
1755
+ #appshell-sticky-desktop syn-side-nav {
1756
+ --side-nav-open-width: 306px;
1757
+ }
1758
+ }
1759
+ </style>
1760
+ ```
1761
+
1762
+ ---
1763
+
1764
+ ## Top Navigation
1765
+
1766
+ The top navigation can be combined with a light grey background.This variant is suitable, for example, in combination with cards to achieve a dashboard look and feel.
1767
+
1768
+ ```html
1769
+ <!-- .synergy-demo-application -->
1770
+ <div class="synergy-demo-application" id="appshell-top-navigation">
1771
+ <!-- header -->
1772
+ <syn-header label="Synergy">
1773
+ <!-- prio-nav -->
1774
+ <syn-prio-nav slot="navigation">
1775
+ <syn-nav-item current="" horizontal="">Home</syn-nav-item>
1776
+ <syn-nav-item horizontal="">Documents</syn-nav-item>
1777
+ <syn-nav-item horizontal="">Applications</syn-nav-item>
1778
+ <syn-nav-item horizontal="">Teams</syn-nav-item>
1779
+ </syn-prio-nav>
1780
+ <!-- /prio-nav -->
1781
+
1782
+ <!-- meta-navigation -->
1783
+ <nav slot="meta-navigation">
1784
+ <syn-dropdown>
1785
+ <syn-icon-button
1786
+ color="neutral"
1787
+ name="more_vert"
1788
+ label="More"
1789
+ slot="trigger"
1790
+ ></syn-icon-button>
1791
+ <syn-menu>
1792
+ <syn-menu-item>Menu Item</syn-menu-item>
1793
+ <syn-menu-item>Menu Item</syn-menu-item>
1794
+ <syn-menu-item>Menu Item</syn-menu-item>
1795
+ <syn-menu-item>Menu Item</syn-menu-item>
1796
+ <syn-menu-item>Menu Item</syn-menu-item>
1797
+ </syn-menu>
1798
+ </syn-dropdown>
1799
+ </nav>
1800
+ <!-- /meta-navigation -->
1801
+ </syn-header>
1802
+ <!-- /header -->
1803
+
1804
+ <!-- .synergy-demo-content -->
1805
+ <div class="synergy-demo-content">
1806
+ <main class="synergy-demo-main">
1807
+ <h1>Start Page Content</h1>
1808
+ Replace this slot
1809
+ </main>
1810
+
1811
+ <!-- footer -->
1812
+ <style>
1813
+ .synergy-footer-demo {
1814
+ container-type: inline-size;
1815
+ }
1816
+
1817
+ .footer-content {
1818
+ align-items: center;
1819
+ display: flex;
1820
+ flex-direction: row;
1821
+ gap: var(--syn-spacing-x-large);
1822
+ justify-content: space-between;
1823
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
1824
+ }
1825
+
1826
+ .copyright {
1827
+ font: var(--syn-body-small-bold);
1828
+ margin: 0;
1829
+ }
1830
+
1831
+ @container (max-width: 640px) {
1832
+ .syn-link-list {
1833
+ flex-direction: column;
1834
+ }
1835
+
1836
+ .footer-content {
1837
+ align-items: flex-start;
1838
+ flex-direction: column;
1839
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
1840
+ }
1841
+ }
1842
+ </style>
1843
+ <footer class="synergy-footer-demo">
1844
+ <nav class="footer-content" aria-label="Footer navigation">
1845
+ <ul
1846
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
1847
+ >
1848
+ <li>
1849
+ <a
1850
+ class="syn-link syn-link--small syn-link--quiet"
1851
+ href="https://www.sick.com/imprint"
1852
+ >
1853
+ Imprint
1854
+ </a>
1855
+ </li>
1856
+ <li>
1857
+ <a
1858
+ class="syn-link syn-link--small syn-link--quiet"
1859
+ href="https://www.sick.com/tac"
1860
+ >
1861
+ Terms and conditions
1862
+ </a>
1863
+ </li>
1864
+ <li>
1865
+ <a
1866
+ class="syn-link syn-link--small syn-link--quiet"
1867
+ href="https://www.sick.com/terms-of-use"
1868
+ >
1869
+ Terms of use
1870
+ </a>
1871
+ </li>
1872
+ <li>
1873
+ <a
1874
+ class="syn-link syn-link--small syn-link--quiet"
1875
+ href="https://www.sick.com/dataprotection"
1876
+ >
1877
+ Privacy Policy
1878
+ </a>
1879
+ </li>
1880
+ </ul>
1881
+ <p class="copyright">© 2025 SICK AG</p>
1882
+ </nav>
1883
+ </footer>
1884
+ <!-- /footer -->
1885
+ </div>
1886
+ <!-- /.synergy-demo-content -->
1887
+ </div>
1888
+ <!-- /.synergy-demo-application -->
1889
+
1890
+ <style>
1891
+ body {
1892
+ margin: 0 !important;
1893
+ padding: 0 !important;
1894
+ }
1895
+
1896
+ #storybook-root,
1897
+ #root-inner {
1898
+ height: 100%;
1899
+ }
1900
+
1901
+ .synergy-demo-application {
1902
+ container-type: inline-size;
1903
+ display: flex;
1904
+ flex-direction: column;
1905
+ height: 100%;
1906
+ min-height: 550px;
1907
+ }
1908
+
1909
+ .synergy-demo-content {
1910
+ background: var(--syn-page-background-color-muted);
1911
+ display: flex;
1912
+ flex: 1 0 auto;
1913
+ flex-direction: column;
1914
+ height: 1%;
1915
+ position: relative;
1916
+ }
1917
+
1918
+ .synergy-demo-content-inner {
1919
+ container-type: inline-size;
1920
+ display: flex;
1921
+ flex: 1 1 auto;
1922
+ flex-direction: column;
1923
+ }
1924
+
1925
+ .synergy-demo-main {
1926
+ align-items: center;
1927
+ border: 1px dashed #9747ff;
1928
+ border-radius: var(--syn-border-radius-medium);
1929
+ color: #9747ff;
1930
+ display: flex;
1931
+ flex: 1 0 auto;
1932
+ flex-direction: column;
1933
+ font: var(--syn-body-small-bold);
1934
+ justify-content: center;
1935
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
1936
+ padding: 0 var(--syn-spacing-small);
1937
+ }
1938
+
1939
+ @container (max-width: 640px) {
1940
+ .synergy-demo-main {
1941
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
1942
+ }
1943
+ }
1944
+
1945
+ .synergy-demo-main h1 {
1946
+ color: var(--syn-typography-color-text);
1947
+ font: var(--syn-heading-large);
1948
+ margin: 0;
1949
+ text-align: center;
1950
+ }
1951
+ </style>
1952
+
1953
+ <script type="module">
1954
+ // This emulates a click on the side-nav and updates the main content
1955
+ // This will usually be provided by the application itself, e.g. via
1956
+ // built in routing functions like angular-router, react-router or vue-router
1957
+ const elm = document.getElementById("appshell-top-navigation");
1958
+ const nav = elm.querySelector("syn-prio-nav");
1959
+ const mainContent = elm.querySelector("main");
1960
+ const headline = mainContent.querySelector("h1");
1961
+
1962
+ // Hide the header in case we are using the top navigation
1963
+ if ("syn-prio-nav" === "syn-prio-nav") {
1964
+ const header = elm.querySelector("syn-header");
1965
+ header.showBurgerMenu = false;
1966
+ }
1967
+
1968
+ /**
1969
+ * This function will handle the click events on all syn-nav-items
1970
+ */
1971
+ const navItemClickEvent = (e) => {
1972
+ const target = e.target.closest("syn-nav-item");
1973
+ if (!target) {
1974
+ return;
1975
+ }
1976
+
1977
+ // Update the main page headline to reflect the change
1978
+ const navItemText = target.innerText.trim();
1979
+ headline.innerText = navItemText + " Page Content";
1980
+
1981
+ // Update the current indicator
1982
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
1983
+ item.removeAttribute("current");
1984
+ if (item === target) {
1985
+ item.setAttribute("current", "");
1986
+ }
1987
+ });
1988
+ };
1989
+
1990
+ // Add the listener to the given navigation
1991
+ nav.addEventListener("click", navItemClickEvent);
1992
+ </script>
1993
+
1994
+ <script type="module">
1995
+ // This is only done because in storybooks
1996
+ // doc overview multiple side-navs and headers exist.
1997
+ // Per default, the header will connect to the first side-nav automatically.
1998
+ const applications = document.querySelectorAll("#appshell-top-navigation");
1999
+
2000
+ Array.from(applications).forEach((application, index) => {
2001
+ const selector = "story-loaded-".concat(index);
2002
+ if (!application.classList.contains(selector)) {
2003
+ const header = application.querySelector("syn-header");
2004
+ const sideNav = application.querySelector("syn-side-nav");
2005
+ if (sideNav && header) {
2006
+ header.connectSideNavigation(sideNav);
2007
+ } else if (!sideNav && header) {
2008
+ header.burgerMenu = "hidden";
2009
+ }
2010
+ application.classList.add(selector);
2011
+ }
2012
+ });
2013
+ </script>
2014
+ ```
2015
+
2016
+ ---
2017
+
2018
+ ## Alternative Background
2019
+
2020
+ Additionally the top navigation can be combined with an alternative background.
2021
+
2022
+ ```html
2023
+ <!-- .synergy-demo-application -->
2024
+ <div class="synergy-demo-application" id="appshell-white-background">
2025
+ <!-- header -->
2026
+ <syn-header label="Synergy">
2027
+ <!-- prio-nav -->
2028
+ <syn-prio-nav slot="navigation">
2029
+ <syn-nav-item current="" horizontal="">Home</syn-nav-item>
2030
+ <syn-nav-item horizontal="">Documents</syn-nav-item>
2031
+ <syn-nav-item horizontal="">Applications</syn-nav-item>
2032
+ <syn-nav-item horizontal="">Teams</syn-nav-item>
2033
+ </syn-prio-nav>
2034
+ <!-- /prio-nav -->
2035
+
2036
+ <!-- meta-navigation -->
2037
+ <nav slot="meta-navigation">
2038
+ <syn-dropdown>
2039
+ <syn-icon-button
2040
+ color="neutral"
2041
+ name="more_vert"
2042
+ label="More"
2043
+ slot="trigger"
2044
+ ></syn-icon-button>
2045
+ <syn-menu>
2046
+ <syn-menu-item>Menu Item</syn-menu-item>
2047
+ <syn-menu-item>Menu Item</syn-menu-item>
2048
+ <syn-menu-item>Menu Item</syn-menu-item>
2049
+ <syn-menu-item>Menu Item</syn-menu-item>
2050
+ <syn-menu-item>Menu Item</syn-menu-item>
2051
+ </syn-menu>
2052
+ </syn-dropdown>
2053
+ </nav>
2054
+ <!-- /meta-navigation -->
2055
+ </syn-header>
2056
+ <!-- /header -->
2057
+
2058
+ <!-- .synergy-demo-content -->
2059
+ <div class="synergy-demo-content">
2060
+ <main class="synergy-demo-main">
2061
+ <h1>Start Page Content</h1>
2062
+ Replace this slot
2063
+ </main>
2064
+
2065
+ <!-- footer -->
2066
+ <style>
2067
+ .synergy-footer-demo {
2068
+ container-type: inline-size;
2069
+ }
2070
+
2071
+ .footer-content {
2072
+ align-items: center;
2073
+ display: flex;
2074
+ flex-direction: row;
2075
+ gap: var(--syn-spacing-x-large);
2076
+ justify-content: space-between;
2077
+ padding: var(--syn-spacing-large) var(--syn-spacing-2x-large);
2078
+ }
2079
+
2080
+ .copyright {
2081
+ font: var(--syn-body-small-bold);
2082
+ margin: 0;
2083
+ }
2084
+
2085
+ @container (max-width: 640px) {
2086
+ .syn-link-list {
2087
+ flex-direction: column;
2088
+ }
2089
+
2090
+ .footer-content {
2091
+ align-items: flex-start;
2092
+ flex-direction: column;
2093
+ padding: var(--syn-spacing-large) var(--syn-spacing-medium);
2094
+ }
2095
+ }
2096
+ </style>
2097
+ <footer class="synergy-footer-demo">
2098
+ <nav class="footer-content" aria-label="Footer navigation">
2099
+ <ul
2100
+ class="syn-link-list syn-link-list--small syn-link-list--horizontal"
2101
+ >
2102
+ <li>
2103
+ <a
2104
+ class="syn-link syn-link--small syn-link--quiet"
2105
+ href="https://www.sick.com/imprint"
2106
+ >
2107
+ Imprint
2108
+ </a>
2109
+ </li>
2110
+ <li>
2111
+ <a
2112
+ class="syn-link syn-link--small syn-link--quiet"
2113
+ href="https://www.sick.com/tac"
2114
+ >
2115
+ Terms and conditions
2116
+ </a>
2117
+ </li>
2118
+ <li>
2119
+ <a
2120
+ class="syn-link syn-link--small syn-link--quiet"
2121
+ href="https://www.sick.com/terms-of-use"
2122
+ >
2123
+ Terms of use
2124
+ </a>
2125
+ </li>
2126
+ <li>
2127
+ <a
2128
+ class="syn-link syn-link--small syn-link--quiet"
2129
+ href="https://www.sick.com/dataprotection"
2130
+ >
2131
+ Privacy Policy
2132
+ </a>
2133
+ </li>
2134
+ </ul>
2135
+ <p class="copyright">© 2025 SICK AG</p>
2136
+ </nav>
2137
+ </footer>
2138
+ <!-- /footer -->
2139
+ </div>
2140
+ <!-- /.synergy-demo-content -->
2141
+ </div>
2142
+ <!-- /.synergy-demo-application -->
2143
+
2144
+ <style>
2145
+ body {
2146
+ margin: 0 !important;
2147
+ padding: 0 !important;
2148
+ }
2149
+
2150
+ #storybook-root,
2151
+ #root-inner {
2152
+ height: 100%;
2153
+ }
2154
+
2155
+ .synergy-demo-application {
2156
+ container-type: inline-size;
2157
+ display: flex;
2158
+ flex-direction: column;
2159
+ height: 100%;
2160
+ min-height: 550px;
2161
+ }
2162
+
2163
+ .synergy-demo-content {
2164
+ background: var(--syn-page-background-color-muted);
2165
+ display: flex;
2166
+ flex: 1 0 auto;
2167
+ flex-direction: column;
2168
+ height: 1%;
2169
+ position: relative;
2170
+ }
2171
+
2172
+ .synergy-demo-content-inner {
2173
+ container-type: inline-size;
2174
+ display: flex;
2175
+ flex: 1 1 auto;
2176
+ flex-direction: column;
2177
+ }
2178
+
2179
+ .synergy-demo-main {
2180
+ align-items: center;
2181
+ border: 1px dashed #9747ff;
2182
+ border-radius: var(--syn-border-radius-medium);
2183
+ color: #9747ff;
2184
+ display: flex;
2185
+ flex: 1 0 auto;
2186
+ flex-direction: column;
2187
+ font: var(--syn-body-small-bold);
2188
+ justify-content: center;
2189
+ margin: var(--syn-spacing-2x-large) var(--syn-spacing-2x-large) 0;
2190
+ padding: 0 var(--syn-spacing-small);
2191
+ }
2192
+
2193
+ @container (max-width: 640px) {
2194
+ .synergy-demo-main {
2195
+ margin: var(--syn-spacing-medium) var(--syn-spacing-medium) 0;
2196
+ }
2197
+ }
2198
+
2199
+ .synergy-demo-main h1 {
2200
+ color: var(--syn-typography-color-text);
2201
+ font: var(--syn-heading-large);
2202
+ margin: 0;
2203
+ text-align: center;
2204
+ }
2205
+ </style>
2206
+
2207
+ <script type="module">
2208
+ // This emulates a click on the side-nav and updates the main content
2209
+ // This will usually be provided by the application itself, e.g. via
2210
+ // built in routing functions like angular-router, react-router or vue-router
2211
+ const elm = document.getElementById("appshell-white-background");
2212
+ const nav = elm.querySelector("syn-prio-nav");
2213
+ const mainContent = elm.querySelector("main");
2214
+ const headline = mainContent.querySelector("h1");
2215
+
2216
+ // Hide the header in case we are using the top navigation
2217
+ if ("syn-prio-nav" === "syn-prio-nav") {
2218
+ const header = elm.querySelector("syn-header");
2219
+ header.showBurgerMenu = false;
2220
+ }
2221
+
2222
+ /**
2223
+ * This function will handle the click events on all syn-nav-items
2224
+ */
2225
+ const navItemClickEvent = (e) => {
2226
+ const target = e.target.closest("syn-nav-item");
2227
+ if (!target) {
2228
+ return;
2229
+ }
2230
+
2231
+ // Update the main page headline to reflect the change
2232
+ const navItemText = target.innerText.trim();
2233
+ headline.innerText = navItemText + " Page Content";
2234
+
2235
+ // Update the current indicator
2236
+ nav.querySelectorAll("syn-nav-item").forEach((item) => {
2237
+ item.removeAttribute("current");
2238
+ if (item === target) {
2239
+ item.setAttribute("current", "");
2240
+ }
2241
+ });
2242
+ };
2243
+
2244
+ // Add the listener to the given navigation
2245
+ nav.addEventListener("click", navItemClickEvent);
2246
+ </script>
2247
+
2248
+ <script type="module">
2249
+ // This is only done because in storybooks
2250
+ // doc overview multiple side-navs and headers exist.
2251
+ // Per default, the header will connect to the first side-nav automatically.
2252
+ const applications = document.querySelectorAll("#appshell-white-background");
2253
+
2254
+ Array.from(applications).forEach((application, index) => {
2255
+ const selector = "story-loaded-".concat(index);
2256
+ if (!application.classList.contains(selector)) {
2257
+ const header = application.querySelector("syn-header");
2258
+ const sideNav = application.querySelector("syn-side-nav");
2259
+ if (sideNav && header) {
2260
+ header.connectSideNavigation(sideNav);
2261
+ } else if (!sideNav && header) {
2262
+ header.burgerMenu = "hidden";
2263
+ }
2264
+ application.classList.add(selector);
2265
+ }
2266
+ });
2267
+ </script>
2268
+
2269
+ <style>
2270
+ #appshell-white-background .synergy-demo-content {
2271
+ background: var(--syn-panel-background-color);
2272
+ }
2273
+ </style>
2274
+ ```