@synergy-design-system/mcp 0.1.0 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (450) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +539 -3
  3. package/dist/bin/create-checksum.d.ts +2 -0
  4. package/dist/bin/create-checksum.js +23 -0
  5. package/dist/bin/start.d.ts +2 -0
  6. package/dist/bin/start.js +8 -0
  7. package/dist/build/assets.d.ts +4 -0
  8. package/dist/build/assets.js +57 -0
  9. package/dist/build/build.d.ts +1 -0
  10. package/dist/build/build.js +33 -0
  11. package/dist/build/components.d.ts +4 -0
  12. package/dist/build/components.js +132 -0
  13. package/dist/build/frameworks.d.ts +4 -0
  14. package/dist/build/frameworks.js +61 -0
  15. package/dist/build/static.d.ts +4 -0
  16. package/dist/build/static.js +57 -0
  17. package/dist/build/styles.d.ts +4 -0
  18. package/dist/build/styles.js +58 -0
  19. package/dist/build/tokens.d.ts +4 -0
  20. package/dist/build/tokens.js +59 -0
  21. package/dist/server.d.ts +6 -0
  22. package/dist/server.js +20 -0
  23. package/dist/tools/asset-info.d.ts +8 -0
  24. package/dist/tools/asset-info.js +140 -0
  25. package/dist/tools/asset-list.d.ts +6 -0
  26. package/dist/tools/asset-list.js +40 -0
  27. package/dist/tools/component-info.d.ts +6 -0
  28. package/dist/tools/component-info.js +35 -0
  29. package/dist/tools/component-list.d.ts +7 -0
  30. package/dist/tools/component-list.js +42 -0
  31. package/dist/tools/davinci-migration.d.ts +3 -0
  32. package/dist/tools/davinci-migration.js +66 -0
  33. package/dist/tools/framework-info.d.ts +7 -0
  34. package/dist/tools/framework-info.js +59 -0
  35. package/dist/tools/index.d.ts +13 -0
  36. package/dist/tools/index.js +13 -0
  37. package/dist/tools/migration-info.d.ts +6 -0
  38. package/dist/tools/migration-info.js +27 -0
  39. package/dist/tools/styles-info.d.ts +7 -0
  40. package/dist/tools/styles-info.js +28 -0
  41. package/dist/tools/styles-list.d.ts +7 -0
  42. package/dist/tools/styles-list.js +42 -0
  43. package/dist/tools/template-info.d.ts +6 -0
  44. package/dist/tools/template-info.js +34 -0
  45. package/dist/tools/template-list.d.ts +7 -0
  46. package/dist/tools/template-list.js +42 -0
  47. package/dist/tools/tokens.d.ts +7 -0
  48. package/dist/tools/tokens.js +24 -0
  49. package/dist/tools/version.d.ts +7 -0
  50. package/dist/tools/version.js +51 -0
  51. package/dist/utilities/assets.d.ts +2 -0
  52. package/dist/utilities/assets.js +3 -0
  53. package/dist/utilities/checksum.d.ts +36 -0
  54. package/dist/utilities/checksum.js +93 -0
  55. package/dist/utilities/components.d.ts +25 -0
  56. package/dist/utilities/components.js +86 -0
  57. package/dist/utilities/config.d.ts +76 -0
  58. package/dist/utilities/config.js +77 -0
  59. package/dist/utilities/file.d.ts +12 -0
  60. package/dist/utilities/file.js +31 -0
  61. package/dist/utilities/index.d.ts +12 -0
  62. package/dist/utilities/index.js +12 -0
  63. package/dist/utilities/metadata.d.ts +28 -0
  64. package/dist/utilities/metadata.js +57 -0
  65. package/dist/utilities/migration.d.ts +1 -0
  66. package/dist/utilities/migration.js +10 -0
  67. package/dist/utilities/stdio.d.ts +14 -0
  68. package/dist/utilities/stdio.js +60 -0
  69. package/dist/utilities/storybook/build-docs.d.ts +2 -0
  70. package/dist/utilities/storybook/build-docs.js +42 -0
  71. package/dist/utilities/storybook/configs.d.ts +13 -0
  72. package/dist/utilities/storybook/configs.js +85 -0
  73. package/dist/utilities/storybook/docs-scraper.d.ts +26 -0
  74. package/dist/utilities/storybook/docs-scraper.js +97 -0
  75. package/dist/utilities/storybook/index.d.ts +5 -0
  76. package/dist/utilities/storybook/index.js +4 -0
  77. package/dist/utilities/storybook/scraper.d.ts +14 -0
  78. package/dist/utilities/storybook/scraper.js +196 -0
  79. package/dist/utilities/storybook/storybook-manager.d.ts +29 -0
  80. package/dist/utilities/storybook/storybook-manager.js +139 -0
  81. package/dist/utilities/storybook/types.d.ts +22 -0
  82. package/dist/utilities/storybook/types.js +1 -0
  83. package/dist/utilities/styles.d.ts +6 -0
  84. package/dist/utilities/styles.js +24 -0
  85. package/dist/utilities/templates.d.ts +12 -0
  86. package/dist/utilities/templates.js +28 -0
  87. package/dist/utilities/tokens.d.ts +1 -0
  88. package/dist/utilities/tokens.js +21 -0
  89. package/dist/utilities/version.d.ts +10 -0
  90. package/dist/utilities/version.js +21 -0
  91. package/metadata/checksum.txt +1 -0
  92. package/metadata/davinci-migration/migration-guide.md +1859 -0
  93. package/metadata/packages/angular/LIMITATIONS.md +32 -0
  94. package/metadata/packages/angular/README.md +393 -0
  95. package/metadata/packages/assets/CHANGELOG.md +196 -0
  96. package/metadata/packages/assets/README.md +79 -0
  97. package/metadata/packages/components/components/syn-accordion/component.angular.ts +80 -0
  98. package/metadata/packages/components/components/syn-accordion/component.react.ts +30 -0
  99. package/metadata/packages/components/components/syn-accordion/component.styles.ts +15 -0
  100. package/metadata/packages/components/components/syn-accordion/component.ts +111 -0
  101. package/metadata/packages/components/components/syn-accordion/component.vue +64 -0
  102. package/metadata/packages/components/components/syn-alert/component.angular.ts +158 -0
  103. package/metadata/packages/components/components/syn-alert/component.custom.styles.ts +90 -0
  104. package/metadata/packages/components/components/syn-alert/component.react.ts +60 -0
  105. package/metadata/packages/components/components/syn-alert/component.styles.ts +110 -0
  106. package/metadata/packages/components/components/syn-alert/component.ts +324 -0
  107. package/metadata/packages/components/components/syn-alert/component.vue +130 -0
  108. package/metadata/packages/components/components/syn-badge/component.angular.ts +53 -0
  109. package/metadata/packages/components/components/syn-badge/component.custom.styles.ts +61 -0
  110. package/metadata/packages/components/components/syn-badge/component.react.ts +29 -0
  111. package/metadata/packages/components/components/syn-badge/component.styles.ts +59 -0
  112. package/metadata/packages/components/components/syn-badge/component.ts +65 -0
  113. package/metadata/packages/components/components/syn-badge/component.vue +53 -0
  114. package/metadata/packages/components/components/syn-breadcrumb/component.angular.ts +58 -0
  115. package/metadata/packages/components/components/syn-breadcrumb/component.custom.styles.ts +5 -0
  116. package/metadata/packages/components/components/syn-breadcrumb/component.react.ts +32 -0
  117. package/metadata/packages/components/components/syn-breadcrumb/component.styles.ts +18 -0
  118. package/metadata/packages/components/components/syn-breadcrumb/component.ts +110 -0
  119. package/metadata/packages/components/components/syn-breadcrumb/component.vue +58 -0
  120. package/metadata/packages/components/components/syn-breadcrumb-item/component.angular.ts +88 -0
  121. package/metadata/packages/components/components/syn-breadcrumb-item/component.custom.styles.ts +74 -0
  122. package/metadata/packages/components/components/syn-breadcrumb-item/component.react.ts +37 -0
  123. package/metadata/packages/components/components/syn-breadcrumb-item/component.styles.ts +95 -0
  124. package/metadata/packages/components/components/syn-breadcrumb-item/component.ts +139 -0
  125. package/metadata/packages/components/components/syn-breadcrumb-item/component.vue +76 -0
  126. package/metadata/packages/components/components/syn-button/component.angular.ts +318 -0
  127. package/metadata/packages/components/components/syn-button/component.custom.styles.ts +206 -0
  128. package/metadata/packages/components/components/syn-button/component.react.ts +56 -0
  129. package/metadata/packages/components/components/syn-button/component.styles.ts +368 -0
  130. package/metadata/packages/components/components/syn-button/component.ts +322 -0
  131. package/metadata/packages/components/components/syn-button/component.vue +204 -0
  132. package/metadata/packages/components/components/syn-button-group/component.angular.ts +55 -0
  133. package/metadata/packages/components/components/syn-button-group/component.react.ts +29 -0
  134. package/metadata/packages/components/components/syn-button-group/component.styles.ts +21 -0
  135. package/metadata/packages/components/components/syn-button-group/component.ts +103 -0
  136. package/metadata/packages/components/components/syn-button-group/component.vue +55 -0
  137. package/metadata/packages/components/components/syn-card/component.angular.ts +69 -0
  138. package/metadata/packages/components/components/syn-card/component.custom.styles.ts +55 -0
  139. package/metadata/packages/components/components/syn-card/component.react.ts +41 -0
  140. package/metadata/packages/components/components/syn-card/component.styles.ts +77 -0
  141. package/metadata/packages/components/components/syn-card/component.ts +68 -0
  142. package/metadata/packages/components/components/syn-card/component.vue +67 -0
  143. package/metadata/packages/components/components/syn-checkbox/component.angular.ts +260 -0
  144. package/metadata/packages/components/components/syn-checkbox/component.custom.styles.ts +53 -0
  145. package/metadata/packages/components/components/syn-checkbox/component.react.ts +64 -0
  146. package/metadata/packages/components/components/syn-checkbox/component.styles.ts +130 -0
  147. package/metadata/packages/components/components/syn-checkbox/component.ts +291 -0
  148. package/metadata/packages/components/components/syn-checkbox/component.vue +186 -0
  149. package/metadata/packages/components/components/syn-combobox/component.angular.ts +436 -0
  150. package/metadata/packages/components/components/syn-combobox/component.custom.styles.ts +35 -0
  151. package/metadata/packages/components/components/syn-combobox/component.react.ts +109 -0
  152. package/metadata/packages/components/components/syn-combobox/component.styles.ts +406 -0
  153. package/metadata/packages/components/components/syn-combobox/component.ts +1139 -0
  154. package/metadata/packages/components/components/syn-combobox/component.vue +304 -0
  155. package/metadata/packages/components/components/syn-details/component.angular.ts +184 -0
  156. package/metadata/packages/components/components/syn-details/component.custom.styles.ts +140 -0
  157. package/metadata/packages/components/components/syn-details/component.react.ts +63 -0
  158. package/metadata/packages/components/components/syn-details/component.styles.ts +90 -0
  159. package/metadata/packages/components/components/syn-details/component.ts +266 -0
  160. package/metadata/packages/components/components/syn-details/component.vue +134 -0
  161. package/metadata/packages/components/components/syn-dialog/component.angular.ts +201 -0
  162. package/metadata/packages/components/components/syn-dialog/component.custom.styles.ts +54 -0
  163. package/metadata/packages/components/components/syn-dialog/component.react.ts +91 -0
  164. package/metadata/packages/components/components/syn-dialog/component.styles.ts +129 -0
  165. package/metadata/packages/components/components/syn-dialog/component.ts +366 -0
  166. package/metadata/packages/components/components/syn-dialog/component.vue +169 -0
  167. package/metadata/packages/components/components/syn-divider/component.angular.ts +55 -0
  168. package/metadata/packages/components/components/syn-divider/component.custom.styles.ts +8 -0
  169. package/metadata/packages/components/components/syn-divider/component.react.ts +29 -0
  170. package/metadata/packages/components/components/syn-divider/component.styles.ts +31 -0
  171. package/metadata/packages/components/components/syn-divider/component.ts +42 -0
  172. package/metadata/packages/components/components/syn-divider/component.vue +51 -0
  173. package/metadata/packages/components/components/syn-drawer/component.angular.ts +234 -0
  174. package/metadata/packages/components/components/syn-drawer/component.custom.styles.ts +78 -0
  175. package/metadata/packages/components/components/syn-drawer/component.react.ts +98 -0
  176. package/metadata/packages/components/components/syn-drawer/component.styles.ts +165 -0
  177. package/metadata/packages/components/components/syn-drawer/component.ts +496 -0
  178. package/metadata/packages/components/components/syn-drawer/component.vue +188 -0
  179. package/metadata/packages/components/components/syn-dropdown/component.angular.ts +223 -0
  180. package/metadata/packages/components/components/syn-dropdown/component.custom.styles.ts +5 -0
  181. package/metadata/packages/components/components/syn-dropdown/component.react.ts +59 -0
  182. package/metadata/packages/components/components/syn-dropdown/component.styles.ts +60 -0
  183. package/metadata/packages/components/components/syn-dropdown/component.ts +484 -0
  184. package/metadata/packages/components/components/syn-dropdown/component.vue +159 -0
  185. package/metadata/packages/components/components/syn-file/component.angular.ts +359 -0
  186. package/metadata/packages/components/components/syn-file/component.react.ts +85 -0
  187. package/metadata/packages/components/components/syn-file/component.styles.ts +179 -0
  188. package/metadata/packages/components/components/syn-file/component.ts +631 -0
  189. package/metadata/packages/components/components/syn-file/component.vue +251 -0
  190. package/metadata/packages/components/components/syn-header/component.angular.ts +132 -0
  191. package/metadata/packages/components/components/syn-header/component.react.ts +65 -0
  192. package/metadata/packages/components/components/syn-header/component.styles.ts +128 -0
  193. package/metadata/packages/components/components/syn-header/component.ts +260 -0
  194. package/metadata/packages/components/components/syn-header/component.vue +117 -0
  195. package/metadata/packages/components/components/syn-icon/component.angular.ts +115 -0
  196. package/metadata/packages/components/components/syn-icon/component.custom.styles.ts +5 -0
  197. package/metadata/packages/components/components/syn-icon/component.react.ts +41 -0
  198. package/metadata/packages/components/components/syn-icon/component.styles.ts +25 -0
  199. package/metadata/packages/components/components/syn-icon/component.ts +234 -0
  200. package/metadata/packages/components/components/syn-icon/component.vue +100 -0
  201. package/metadata/packages/components/components/syn-icon-button/component.angular.ts +185 -0
  202. package/metadata/packages/components/components/syn-icon-button/component.custom.styles.ts +68 -0
  203. package/metadata/packages/components/components/syn-icon-button/component.react.ts +42 -0
  204. package/metadata/packages/components/components/syn-icon-button/component.styles.ts +59 -0
  205. package/metadata/packages/components/components/syn-icon-button/component.ts +154 -0
  206. package/metadata/packages/components/components/syn-icon-button/component.vue +132 -0
  207. package/metadata/packages/components/components/syn-input/component.angular.ts +606 -0
  208. package/metadata/packages/components/components/syn-input/component.custom.styles.ts +278 -0
  209. package/metadata/packages/components/components/syn-input/component.react.ts +91 -0
  210. package/metadata/packages/components/components/syn-input/component.styles.ts +287 -0
  211. package/metadata/packages/components/components/syn-input/component.ts +942 -0
  212. package/metadata/packages/components/components/syn-input/component.vue +370 -0
  213. package/metadata/packages/components/components/syn-menu/component.angular.ts +52 -0
  214. package/metadata/packages/components/components/syn-menu/component.custom.styles.ts +29 -0
  215. package/metadata/packages/components/components/syn-menu/component.react.ts +36 -0
  216. package/metadata/packages/components/components/syn-menu/component.styles.ts +27 -0
  217. package/metadata/packages/components/components/syn-menu/component.ts +199 -0
  218. package/metadata/packages/components/components/syn-menu/component.vue +48 -0
  219. package/metadata/packages/components/components/syn-menu-item/component.angular.ts +121 -0
  220. package/metadata/packages/components/components/syn-menu-item/component.custom.styles.ts +128 -0
  221. package/metadata/packages/components/components/syn-menu-item/component.react.ts +45 -0
  222. package/metadata/packages/components/components/syn-menu-item/component.styles.ts +164 -0
  223. package/metadata/packages/components/components/syn-menu-item/component.ts +209 -0
  224. package/metadata/packages/components/components/syn-menu-item/component.vue +91 -0
  225. package/metadata/packages/components/components/syn-menu-label/component.angular.ts +48 -0
  226. package/metadata/packages/components/components/syn-menu-label/component.custom.styles.ts +24 -0
  227. package/metadata/packages/components/components/syn-menu-label/component.react.ts +35 -0
  228. package/metadata/packages/components/components/syn-menu-label/component.styles.ts +28 -0
  229. package/metadata/packages/components/components/syn-menu-label/component.ts +54 -0
  230. package/metadata/packages/components/components/syn-menu-label/component.vue +41 -0
  231. package/metadata/packages/components/components/syn-nav-item/component.angular.ts +242 -0
  232. package/metadata/packages/components/components/syn-nav-item/component.react.ts +82 -0
  233. package/metadata/packages/components/components/syn-nav-item/component.styles.ts +337 -0
  234. package/metadata/packages/components/components/syn-nav-item/component.ts +492 -0
  235. package/metadata/packages/components/components/syn-nav-item/component.vue +182 -0
  236. package/metadata/packages/components/components/syn-optgroup/component.angular.ts +79 -0
  237. package/metadata/packages/components/components/syn-optgroup/component.react.ts +41 -0
  238. package/metadata/packages/components/components/syn-optgroup/component.styles.ts +59 -0
  239. package/metadata/packages/components/components/syn-optgroup/component.ts +176 -0
  240. package/metadata/packages/components/components/syn-optgroup/component.vue +71 -0
  241. package/metadata/packages/components/components/syn-option/component.angular.ts +79 -0
  242. package/metadata/packages/components/components/syn-option/component.custom.styles.ts +81 -0
  243. package/metadata/packages/components/components/syn-option/component.react.ts +37 -0
  244. package/metadata/packages/components/components/syn-option/component.styles.ts +96 -0
  245. package/metadata/packages/components/components/syn-option/component.ts +174 -0
  246. package/metadata/packages/components/components/syn-option/component.vue +71 -0
  247. package/metadata/packages/components/components/syn-popup/component.angular.ts +385 -0
  248. package/metadata/packages/components/components/syn-popup/component.react.ts +55 -0
  249. package/metadata/packages/components/components/syn-popup/component.styles.ts +70 -0
  250. package/metadata/packages/components/components/syn-popup/component.ts +583 -0
  251. package/metadata/packages/components/components/syn-popup/component.vue +240 -0
  252. package/metadata/packages/components/components/syn-prio-nav/component.angular.ts +67 -0
  253. package/metadata/packages/components/components/syn-prio-nav/component.react.ts +54 -0
  254. package/metadata/packages/components/components/syn-prio-nav/component.styles.ts +48 -0
  255. package/metadata/packages/components/components/syn-prio-nav/component.ts +287 -0
  256. package/metadata/packages/components/components/syn-prio-nav/component.vue +60 -0
  257. package/metadata/packages/components/components/syn-progress-bar/component.angular.ts +85 -0
  258. package/metadata/packages/components/components/syn-progress-bar/component.custom.styles.ts +22 -0
  259. package/metadata/packages/components/components/syn-progress-bar/component.react.ts +37 -0
  260. package/metadata/packages/components/components/syn-progress-bar/component.styles.ts +94 -0
  261. package/metadata/packages/components/components/syn-progress-bar/component.ts +74 -0
  262. package/metadata/packages/components/components/syn-progress-bar/component.vue +71 -0
  263. package/metadata/packages/components/components/syn-progress-ring/component.angular.ts +72 -0
  264. package/metadata/packages/components/components/syn-progress-ring/component.custom.styles.ts +17 -0
  265. package/metadata/packages/components/components/syn-progress-ring/component.react.ts +37 -0
  266. package/metadata/packages/components/components/syn-progress-ring/component.styles.ts +77 -0
  267. package/metadata/packages/components/components/syn-progress-ring/component.ts +90 -0
  268. package/metadata/packages/components/components/syn-progress-ring/component.vue +66 -0
  269. package/metadata/packages/components/components/syn-radio/component.angular.ts +109 -0
  270. package/metadata/packages/components/components/syn-radio/component.custom.styles.ts +73 -0
  271. package/metadata/packages/components/components/syn-radio/component.react.ts +48 -0
  272. package/metadata/packages/components/components/syn-radio/component.styles.ts +124 -0
  273. package/metadata/packages/components/components/syn-radio/component.ts +129 -0
  274. package/metadata/packages/components/components/syn-radio/component.vue +99 -0
  275. package/metadata/packages/components/components/syn-radio-button/component.angular.ts +123 -0
  276. package/metadata/packages/components/components/syn-radio-button/component.react.ts +49 -0
  277. package/metadata/packages/components/components/syn-radio-button/component.styles.ts +37 -0
  278. package/metadata/packages/components/components/syn-radio-button/component.ts +149 -0
  279. package/metadata/packages/components/components/syn-radio-button/component.vue +105 -0
  280. package/metadata/packages/components/components/syn-radio-group/component.angular.ts +204 -0
  281. package/metadata/packages/components/components/syn-radio-group/component.custom.styles.ts +22 -0
  282. package/metadata/packages/components/components/syn-radio-group/component.react.ts +56 -0
  283. package/metadata/packages/components/components/syn-radio-group/component.styles.ts +44 -0
  284. package/metadata/packages/components/components/syn-radio-group/component.ts +418 -0
  285. package/metadata/packages/components/components/syn-radio-group/component.vue +158 -0
  286. package/metadata/packages/components/components/syn-range/component.angular.ts +334 -0
  287. package/metadata/packages/components/components/syn-range/component.react.ts +92 -0
  288. package/metadata/packages/components/components/syn-range/component.styles.ts +284 -0
  289. package/metadata/packages/components/components/syn-range/component.ts +878 -0
  290. package/metadata/packages/components/components/syn-range/component.vue +240 -0
  291. package/metadata/packages/components/components/syn-range-tick/component.angular.ts +59 -0
  292. package/metadata/packages/components/components/syn-range-tick/component.react.ts +33 -0
  293. package/metadata/packages/components/components/syn-range-tick/component.styles.ts +34 -0
  294. package/metadata/packages/components/components/syn-range-tick/component.ts +50 -0
  295. package/metadata/packages/components/components/syn-range-tick/component.vue +57 -0
  296. package/metadata/packages/components/components/syn-resize-observer/component.styles.ts +16 -0
  297. package/metadata/packages/components/components/syn-resize-observer/component.ts +98 -0
  298. package/metadata/packages/components/components/syn-select/component.angular.ts +441 -0
  299. package/metadata/packages/components/components/syn-select/component.custom.styles.ts +176 -0
  300. package/metadata/packages/components/components/syn-select/component.react.ts +101 -0
  301. package/metadata/packages/components/components/syn-select/component.styles.ts +316 -0
  302. package/metadata/packages/components/components/syn-select/component.ts +1054 -0
  303. package/metadata/packages/components/components/syn-select/component.vue +303 -0
  304. package/metadata/packages/components/components/syn-side-nav/component.angular.ts +231 -0
  305. package/metadata/packages/components/components/syn-side-nav/component.react.ts +95 -0
  306. package/metadata/packages/components/components/syn-side-nav/component.styles.ts +160 -0
  307. package/metadata/packages/components/components/syn-side-nav/component.ts +492 -0
  308. package/metadata/packages/components/components/syn-side-nav/component.vue +201 -0
  309. package/metadata/packages/components/components/syn-spinner/component.angular.ts +44 -0
  310. package/metadata/packages/components/components/syn-spinner/component.custom.styles.ts +31 -0
  311. package/metadata/packages/components/components/syn-spinner/component.react.ts +31 -0
  312. package/metadata/packages/components/components/syn-spinner/component.styles.ts +55 -0
  313. package/metadata/packages/components/components/syn-spinner/component.ts +42 -0
  314. package/metadata/packages/components/components/syn-spinner/component.vue +35 -0
  315. package/metadata/packages/components/components/syn-switch/component.angular.ts +244 -0
  316. package/metadata/packages/components/components/syn-switch/component.custom.styles.ts +112 -0
  317. package/metadata/packages/components/components/syn-switch/component.react.ts +63 -0
  318. package/metadata/packages/components/components/syn-switch/component.styles.ts +177 -0
  319. package/metadata/packages/components/components/syn-switch/component.ts +274 -0
  320. package/metadata/packages/components/components/syn-switch/component.vue +178 -0
  321. package/metadata/packages/components/components/syn-tab/component.angular.ts +109 -0
  322. package/metadata/packages/components/components/syn-tab/component.custom.styles.ts +92 -0
  323. package/metadata/packages/components/components/syn-tab/component.react.ts +42 -0
  324. package/metadata/packages/components/components/syn-tab/component.styles.ts +77 -0
  325. package/metadata/packages/components/components/syn-tab/component.ts +132 -0
  326. package/metadata/packages/components/components/syn-tab/component.vue +91 -0
  327. package/metadata/packages/components/components/syn-tab-group/component.angular.ts +166 -0
  328. package/metadata/packages/components/components/syn-tab-group/component.custom.styles.ts +248 -0
  329. package/metadata/packages/components/components/syn-tab-group/component.react.ts +58 -0
  330. package/metadata/packages/components/components/syn-tab-group/component.styles.ts +200 -0
  331. package/metadata/packages/components/components/syn-tab-group/component.ts +557 -0
  332. package/metadata/packages/components/components/syn-tab-group/component.vue +126 -0
  333. package/metadata/packages/components/components/syn-tab-panel/component.angular.ts +68 -0
  334. package/metadata/packages/components/components/syn-tab-panel/component.custom.styles.ts +8 -0
  335. package/metadata/packages/components/components/syn-tab-panel/component.react.ts +31 -0
  336. package/metadata/packages/components/components/syn-tab-panel/component.styles.ts +27 -0
  337. package/metadata/packages/components/components/syn-tab-panel/component.ts +67 -0
  338. package/metadata/packages/components/components/syn-tab-panel/component.vue +60 -0
  339. package/metadata/packages/components/components/syn-tag/component.angular.ts +83 -0
  340. package/metadata/packages/components/components/syn-tag/component.custom.styles.ts +120 -0
  341. package/metadata/packages/components/components/syn-tag/component.react.ts +43 -0
  342. package/metadata/packages/components/components/syn-tag/component.styles.ts +65 -0
  343. package/metadata/packages/components/components/syn-tag/component.ts +90 -0
  344. package/metadata/packages/components/components/syn-tag/component.vue +81 -0
  345. package/metadata/packages/components/components/syn-textarea/component.angular.ts +394 -0
  346. package/metadata/packages/components/components/syn-textarea/component.custom.styles.ts +18 -0
  347. package/metadata/packages/components/components/syn-textarea/component.react.ts +60 -0
  348. package/metadata/packages/components/components/syn-textarea/component.styles.ts +187 -0
  349. package/metadata/packages/components/components/syn-textarea/component.ts +401 -0
  350. package/metadata/packages/components/components/syn-textarea/component.vue +244 -0
  351. package/metadata/packages/components/components/syn-tooltip/component.angular.ts +212 -0
  352. package/metadata/packages/components/components/syn-tooltip/component.custom.styles.ts +13 -0
  353. package/metadata/packages/components/components/syn-tooltip/component.react.ts +63 -0
  354. package/metadata/packages/components/components/syn-tooltip/component.styles.ts +64 -0
  355. package/metadata/packages/components/components/syn-tooltip/component.ts +319 -0
  356. package/metadata/packages/components/components/syn-tooltip/component.vue +158 -0
  357. package/metadata/packages/components/components/syn-validate/component.angular.ts +128 -0
  358. package/metadata/packages/components/components/syn-validate/component.react.ts +36 -0
  359. package/metadata/packages/components/components/syn-validate/component.styles.ts +9 -0
  360. package/metadata/packages/components/components/syn-validate/component.ts +437 -0
  361. package/metadata/packages/components/components/syn-validate/component.vue +98 -0
  362. package/metadata/packages/components/migration/BREAKING_CHANGES.md +489 -0
  363. package/metadata/packages/components/migration/migration-synergy-v3.md +50 -0
  364. package/metadata/packages/components/static/CHANGELOG.md +1107 -0
  365. package/metadata/packages/components/static/LIMITATIONS.md +269 -0
  366. package/metadata/packages/components/static/README.md +248 -0
  367. package/metadata/packages/react/LIMITATIONS.md +31 -0
  368. package/metadata/packages/react/README.md +262 -0
  369. package/metadata/packages/styles/CHANGELOG.md +76 -0
  370. package/metadata/packages/styles/README.md +132 -0
  371. package/metadata/packages/styles/index.css +309 -0
  372. package/metadata/packages/styles/link-list.css +47 -0
  373. package/metadata/packages/styles/link.css +79 -0
  374. package/metadata/packages/styles/tables.css +143 -0
  375. package/metadata/packages/styles/typography.css +52 -0
  376. package/metadata/packages/tokens/CHANGELOG.md +431 -0
  377. package/metadata/packages/tokens/README.md +408 -0
  378. package/metadata/packages/tokens/dark.css +268 -0
  379. package/metadata/packages/tokens/index.js +1294 -0
  380. package/metadata/packages/tokens/light.css +268 -0
  381. package/metadata/packages/vue/LIMITATIONS.md +53 -0
  382. package/metadata/packages/vue/README.md +252 -0
  383. package/metadata/static/angular/index.md +6 -0
  384. package/metadata/static/assets/index.md +10 -0
  385. package/metadata/static/component-info/index.md +24 -0
  386. package/metadata/static/component-list/index.md +34 -0
  387. package/metadata/static/components/index.md +10 -0
  388. package/metadata/static/components/syn-accordion/docs.md +428 -0
  389. package/metadata/static/components/syn-alert/docs.md +231 -0
  390. package/metadata/static/components/syn-badge/docs.md +128 -0
  391. package/metadata/static/components/syn-breadcrumb/docs.md +265 -0
  392. package/metadata/static/components/syn-breadcrumb-item/docs.md +49 -0
  393. package/metadata/static/components/syn-button/docs.md +402 -0
  394. package/metadata/static/components/syn-card/docs.md +273 -0
  395. package/metadata/static/components/syn-checkbox/docs.md +77 -0
  396. package/metadata/static/components/syn-combobox/docs.md +2402 -0
  397. package/metadata/static/components/syn-details/docs.md +220 -0
  398. package/metadata/static/components/syn-dialog/docs.md +222 -0
  399. package/metadata/static/components/syn-divider/docs.md +77 -0
  400. package/metadata/static/components/syn-drawer/docs.md +271 -0
  401. package/metadata/static/components/syn-dropdown/docs.md +316 -0
  402. package/metadata/static/components/syn-file/docs.md +215 -0
  403. package/metadata/static/components/syn-header/docs.md +134 -0
  404. package/metadata/static/components/syn-icon/docs.md +177 -0
  405. package/metadata/static/components/syn-icon-button/docs.md +142 -0
  406. package/metadata/static/components/syn-input/docs.md +460 -0
  407. package/metadata/static/components/syn-menu/docs.md +162 -0
  408. package/metadata/static/components/syn-menu-item/docs.md +196 -0
  409. package/metadata/static/components/syn-menu-label/docs.md +29 -0
  410. package/metadata/static/components/syn-nav-item/docs.md +161 -0
  411. package/metadata/static/components/syn-optgroup/docs.md +167 -0
  412. package/metadata/static/components/syn-option/docs.md +137 -0
  413. package/metadata/static/components/syn-prio-nav/docs.md +54 -0
  414. package/metadata/static/components/syn-progress-bar/docs.md +77 -0
  415. package/metadata/static/components/syn-progress-ring/docs.md +89 -0
  416. package/metadata/static/components/syn-radio/docs.md +123 -0
  417. package/metadata/static/components/syn-radio-group/docs.md +363 -0
  418. package/metadata/static/components/syn-range/docs.md +419 -0
  419. package/metadata/static/components/syn-range-tick/docs.md +110 -0
  420. package/metadata/static/components/syn-select/docs.md +730 -0
  421. package/metadata/static/components/syn-side-nav/docs.md +593 -0
  422. package/metadata/static/components/syn-spinner/docs.md +45 -0
  423. package/metadata/static/components/syn-switch/docs.md +74 -0
  424. package/metadata/static/components/syn-tab/docs.md +47 -0
  425. package/metadata/static/components/syn-tab-group/docs.md +1094 -0
  426. package/metadata/static/components/syn-tab-panel/docs.md +91 -0
  427. package/metadata/static/components/syn-tag/docs.md +50 -0
  428. package/metadata/static/components/syn-textarea/docs.md +215 -0
  429. package/metadata/static/components/syn-tooltip/docs.md +144 -0
  430. package/metadata/static/components/syn-validate/docs.md +225 -0
  431. package/metadata/static/migration/index.md +16 -0
  432. package/metadata/static/react/index.md +8 -0
  433. package/metadata/static/setup/icon-usage.md +276 -0
  434. package/metadata/static/setup/prerequisites.md +171 -0
  435. package/metadata/static/styles/index.md +11 -0
  436. package/metadata/static/styles/syn-body.md +5 -0
  437. package/metadata/static/styles/syn-heading.md +5 -0
  438. package/metadata/static/styles/syn-link-list.md +325 -0
  439. package/metadata/static/styles/syn-link.md +156 -0
  440. package/metadata/static/styles/syn-table-cell.md +125 -0
  441. package/metadata/static/styles/syn-table.md +201 -0
  442. package/metadata/static/styles/syn-weight.md +5 -0
  443. package/metadata/static/templates/appshell.md +2061 -0
  444. package/metadata/static/templates/breadcrumb.md +375 -0
  445. package/metadata/static/templates/footer.md +342 -0
  446. package/metadata/static/templates/forms.md +369 -0
  447. package/metadata/static/templates/index.md +9 -0
  448. package/metadata/static/templates/table.md +1426 -0
  449. package/metadata/static/vue/index.md +6 -0
  450. package/package.json +109 -4
@@ -0,0 +1,85 @@
1
+ import storybookOutput from '@synergy-design-system/docs/dist/index.json' with { type: 'json' };
2
+ import { staticComponentPath, staticStylesPath, templatesPath, } from '../config.js';
3
+ /**
4
+ * Get stories from Storybook output based on a prefix.
5
+ * @param prefix Prefix to filter stories by
6
+ * @returns List of stories matching the prefix
7
+ */
8
+ const getStoriesFromStorybook = (prefix) => {
9
+ const foundStories = Object
10
+ .entries(storybookOutput.entries)
11
+ .filter(([key]) => key.startsWith(`${prefix}-`) && key.endsWith('-docs'))
12
+ .map(([, value]) => value)
13
+ .reduce((acc, story) => {
14
+ const componentName = story.id.split('--')[0].replace(`${prefix}-`, '');
15
+ acc[componentName] = story.id;
16
+ return acc;
17
+ }, {});
18
+ return foundStories;
19
+ };
20
+ const componentStories = getStoriesFromStorybook('components');
21
+ const styleStories = getStoriesFromStorybook('styles');
22
+ const templateStories = getStoriesFromStorybook('templates');
23
+ /**
24
+ * Configuration for scraping component documentation
25
+ */
26
+ export const componentScrapingConfig = {
27
+ formatContent: (component, stories) => {
28
+ const content = stories.map(story => `
29
+ ## ${story.heading}
30
+
31
+ ${story.description}
32
+
33
+ \`\`\`html
34
+ ${story.example}
35
+ \`\`\`
36
+ `).join('\n---\n');
37
+ return content;
38
+ },
39
+ generateOutputPath: (component) => `${staticComponentPath}/${component}/docs.md`,
40
+ generateStoryId: (component) => componentStories[component],
41
+ getItems: async () => Object.keys(componentStories),
42
+ outputPath: staticComponentPath,
43
+ };
44
+ /**
45
+ * Configuration for scraping styles documentation
46
+ */
47
+ export const stylesScrapingConfig = {
48
+ formatContent: (style, stories) => {
49
+ const content = stories.map(story => `
50
+ ## ${story.heading}
51
+
52
+ ${story.description}
53
+
54
+ \`\`\`html
55
+ ${story.example}
56
+ \`\`\`
57
+ `).join('\n---\n');
58
+ return content;
59
+ },
60
+ generateOutputPath: (style) => `${staticStylesPath}/${style}.md`,
61
+ generateStoryId: (component) => styleStories[component],
62
+ getItems: async () => Object.keys(styleStories),
63
+ outputPath: staticStylesPath,
64
+ };
65
+ /**
66
+ * Configuration for scraping template documentation
67
+ */
68
+ export const templateScrapingConfig = {
69
+ formatContent: (template, stories) => {
70
+ const content = stories.map(story => `
71
+ ## ${story.heading}
72
+
73
+ ${story.description}
74
+
75
+ \`\`\`html
76
+ ${story.example}
77
+ \`\`\`
78
+ `).join('\n---\n');
79
+ return content;
80
+ },
81
+ generateOutputPath: (template) => `${templatesPath}/${template}.md`,
82
+ generateStoryId: (component) => templateStories[component],
83
+ getItems: async () => Object.keys(templateStories),
84
+ outputPath: staticStylesPath,
85
+ };
@@ -0,0 +1,26 @@
1
+ import { ScrapingConfig } from './types.js';
2
+ export declare class DocsScraper {
3
+ private baseUrl;
4
+ constructor(baseUrl?: string);
5
+ /**
6
+ * Run the scraping process for a specific configuration
7
+ */
8
+ scrapeWithConfig(config: ScrapingConfig): Promise<void>;
9
+ /**
10
+ * Scrape component documentation
11
+ */
12
+ scrapeComponents(): Promise<void>;
13
+ /**
14
+ * Scrape styles documentation
15
+ */
16
+ scrapeStyles(): Promise<void>;
17
+ /**
18
+ * Scrape styles documentation
19
+ */
20
+ scrapeTemplates(): Promise<void>;
21
+ /**
22
+ * Scrape all documentation types
23
+ */
24
+ scrapeAll(): Promise<void>;
25
+ }
26
+ export declare function runDocsScraper(type?: 'components' | 'styles' | 'templates' | 'all', baseUrl?: string): Promise<void>;
@@ -0,0 +1,97 @@
1
+ /* eslint-disable no-console */
2
+ import { StorybookScraper } from './scraper.js';
3
+ import { componentScrapingConfig, stylesScrapingConfig, templateScrapingConfig, } from './configs.js';
4
+ export class DocsScraper {
5
+ baseUrl;
6
+ constructor(baseUrl = 'http://localhost:6006') {
7
+ this.baseUrl = baseUrl;
8
+ }
9
+ /**
10
+ * Run the scraping process for a specific configuration
11
+ */
12
+ async scrapeWithConfig(config) {
13
+ try {
14
+ console.log(`Using Storybook server at ${this.baseUrl}`);
15
+ // Create scraper and run
16
+ const scraper = new StorybookScraper(config);
17
+ await scraper.scrapeAll(this.baseUrl);
18
+ }
19
+ catch (error) {
20
+ console.error('Error during scraping process:', error);
21
+ throw error;
22
+ }
23
+ }
24
+ /**
25
+ * Scrape component documentation
26
+ */
27
+ async scrapeComponents() {
28
+ console.log('Starting component documentation scraping...');
29
+ await this.scrapeWithConfig(componentScrapingConfig);
30
+ }
31
+ /**
32
+ * Scrape styles documentation
33
+ */
34
+ async scrapeStyles() {
35
+ console.log('Starting styles documentation scraping...');
36
+ await this.scrapeWithConfig(stylesScrapingConfig);
37
+ }
38
+ /**
39
+ * Scrape styles documentation
40
+ */
41
+ async scrapeTemplates() {
42
+ console.log('Starting templates documentation scraping...');
43
+ await this.scrapeWithConfig(templateScrapingConfig);
44
+ }
45
+ /**
46
+ * Scrape all documentation types
47
+ */
48
+ async scrapeAll() {
49
+ console.log('Starting comprehensive documentation scraping...');
50
+ try {
51
+ console.log(`Using Storybook server at ${this.baseUrl}`);
52
+ // Scrape components
53
+ console.log('Scraping component documentation...');
54
+ const componentScraper = new StorybookScraper(componentScrapingConfig);
55
+ await componentScraper.scrapeAll(this.baseUrl);
56
+ // Scrape styles
57
+ console.log('Scraping styles documentation...');
58
+ const stylesScraper = new StorybookScraper(stylesScrapingConfig);
59
+ await stylesScraper.scrapeAll(this.baseUrl);
60
+ // Scrape templates
61
+ console.log('Scraping templates documentation...');
62
+ const templatesScraper = new StorybookScraper(templateScrapingConfig);
63
+ await templatesScraper.scrapeAll(this.baseUrl);
64
+ console.log('All documentation scraping completed successfully!');
65
+ }
66
+ catch (error) {
67
+ console.error('Error during comprehensive scraping process:', error);
68
+ throw error;
69
+ }
70
+ }
71
+ }
72
+ // CLI usage helper
73
+ export async function runDocsScraper(type = 'all', baseUrl = 'http://localhost:6006') {
74
+ const scraper = new DocsScraper(baseUrl);
75
+ try {
76
+ switch (type) {
77
+ case 'components':
78
+ await scraper.scrapeComponents();
79
+ break;
80
+ case 'styles':
81
+ await scraper.scrapeStyles();
82
+ break;
83
+ case 'templates':
84
+ await scraper.scrapeTemplates();
85
+ break;
86
+ case 'all':
87
+ await scraper.scrapeAll();
88
+ break;
89
+ default:
90
+ throw new Error(`Unknown scraping type: ${type}`);
91
+ }
92
+ }
93
+ catch (error) {
94
+ console.error('Scraping failed:', error);
95
+ throw error;
96
+ }
97
+ }
@@ -0,0 +1,5 @@
1
+ export { StaticServerManager } from './storybook-manager.js';
2
+ export { StorybookScraper } from './scraper.js';
3
+ export { DocsScraper, runDocsScraper } from './docs-scraper.js';
4
+ export { componentScrapingConfig, stylesScrapingConfig } from './configs.js';
5
+ export type { ScrapingConfig, ScrapedStory, StorybookServer } from './types.js';
@@ -0,0 +1,4 @@
1
+ export { StaticServerManager } from './storybook-manager.js';
2
+ export { StorybookScraper } from './scraper.js';
3
+ export { DocsScraper, runDocsScraper } from './docs-scraper.js';
4
+ export { componentScrapingConfig, stylesScrapingConfig } from './configs.js';
@@ -0,0 +1,14 @@
1
+ import { Browser } from 'playwright';
2
+ import { ScrapedStory, ScrapingConfig } from './types.js';
3
+ export declare class StorybookScraper {
4
+ private config;
5
+ constructor(config: ScrapingConfig);
6
+ /**
7
+ * Scrape a single story from Storybook
8
+ */
9
+ static scrapeStoryDocs(storyId: string, baseUrl?: string, browser?: Browser): Promise<ScrapedStory[]>;
10
+ /**
11
+ * Scrape all configured items and write documentation
12
+ */
13
+ scrapeAll(baseUrl?: string): Promise<void>;
14
+ }
@@ -0,0 +1,196 @@
1
+ /* eslint-disable no-console */
2
+ import { dirname } from 'node:path';
3
+ import { mkdir, writeFile } from 'node:fs/promises';
4
+ import { chromium } from 'playwright';
5
+ import prettier from 'prettier';
6
+ export class StorybookScraper {
7
+ config;
8
+ constructor(config) {
9
+ this.config = config;
10
+ }
11
+ /**
12
+ * Scrape a single story from Storybook
13
+ */
14
+ static async scrapeStoryDocs(storyId, baseUrl = 'http://localhost:6006', browser) {
15
+ const shouldCloseBrowser = !browser;
16
+ const browserInstance = browser || await chromium.launch({
17
+ headless: true,
18
+ });
19
+ const page = await browserInstance.newPage({
20
+ viewport: {
21
+ height: 768,
22
+ width: 1024,
23
+ },
24
+ });
25
+ const scrapingReport = {
26
+ error: null,
27
+ foundStories: 0,
28
+ processedStories: 0,
29
+ status: 'pending',
30
+ storyDetails: [],
31
+ storyId,
32
+ };
33
+ try {
34
+ // Navigate to the Storybook docs page
35
+ await page.goto(`${baseUrl}/iframe?viewMode=docs&id=${storyId}&globals=`);
36
+ // Wait for the content to load
37
+ await page.waitForSelector('.sb-anchor');
38
+ // Extract the stories metadata first
39
+ // We get basic info and identify stories that need iframe content
40
+ const storyMetadata = await page.evaluate(() => Array.from(document.querySelectorAll('.sb-anchor'))
41
+ .map((story, index) => {
42
+ const description = story.querySelector(':scope > p')?.textContent || '';
43
+ const exampleSource = story.querySelector('.sb-story #root-inner')?.innerHTML || '';
44
+ const heading = story.querySelector('h3')?.textContent || '';
45
+ const hasIframe = !!story.querySelector('.sb-story iframe');
46
+ return {
47
+ description,
48
+ exampleSource,
49
+ hasIframe,
50
+ heading,
51
+ index,
52
+ };
53
+ })
54
+ .filter(x => x.heading));
55
+ // Process each story and handle iframe content if needed
56
+ const results = await Promise.all(storyMetadata.map(async (storyMeta) => {
57
+ let { exampleSource } = storyMeta;
58
+ // If no inline content and there's an iframe, try to get content from iframe
59
+ if (!exampleSource && storyMeta.hasIframe) {
60
+ try {
61
+ const storySection = page.locator('.sb-anchor').nth(storyMeta.index);
62
+ const frame = await storySection.frameLocator('iframe');
63
+ const frameContent = await frame.locator('#root-inner').innerHTML();
64
+ exampleSource = frameContent || '';
65
+ }
66
+ catch (error) {
67
+ // If iframe content extraction fails, continue with empty content
68
+ console.log(`Failed to extract iframe content for story "${storyMeta.heading}"`);
69
+ }
70
+ }
71
+ // Replace all lit internal comments
72
+ // Lit comments look like this: <!----> or <!--?lit$SOMENUMBER$-->
73
+ const example = exampleSource
74
+ // Remove comments that start with ?lit (with any content after)
75
+ .replace(/<!--\?lit\$[^>]*-->/g, '')
76
+ // Remove empty comments
77
+ .replace(/<!--\s*-->/g, '')
78
+ // Clean up any resulting multiple consecutive whitespace/newlines
79
+ .replace(/\n\s*\n\s*\n/g, '\n\n')
80
+ // Remove all data attributes as they may be dynamic data
81
+ .replace(/ data-[^=]+="[^"]*"/g, '')
82
+ // Trim leading/trailing whitespace
83
+ .trim();
84
+ return {
85
+ description: storyMeta.description,
86
+ example,
87
+ heading: storyMeta.heading,
88
+ };
89
+ }));
90
+ // Filter out stories without examples
91
+ const validResults = results.filter(x => x.heading && x.example);
92
+ scrapingReport.foundStories = validResults.length;
93
+ if (validResults.length === 0) {
94
+ throw new Error(`No stories found for ${storyId}`);
95
+ }
96
+ const processedStories = await Promise.all(validResults.map(async (story, index) => {
97
+ try {
98
+ const formattedExample = await prettier.format(story.example, {
99
+ parser: 'html',
100
+ });
101
+ scrapingReport.storyDetails.push({
102
+ heading: story.heading,
103
+ status: 'success',
104
+ });
105
+ scrapingReport.processedStories += 1;
106
+ return {
107
+ description: story.description,
108
+ example: formattedExample,
109
+ heading: story.heading,
110
+ };
111
+ }
112
+ catch (error) {
113
+ const errorMessage = error instanceof Error ? error.message : 'Unknown error';
114
+ scrapingReport.storyDetails.push({
115
+ error: errorMessage,
116
+ heading: story.heading || `Story ${index + 1}`,
117
+ status: 'error',
118
+ });
119
+ throw error;
120
+ }
121
+ }));
122
+ scrapingReport.status = 'success';
123
+ return processedStories;
124
+ }
125
+ catch (error) {
126
+ scrapingReport.error = error instanceof Error ? error : new Error(String(error));
127
+ scrapingReport.status = 'error';
128
+ return [];
129
+ }
130
+ finally {
131
+ await page.close();
132
+ if (shouldCloseBrowser) {
133
+ await browserInstance.close();
134
+ }
135
+ // Generate final report
136
+ if (scrapingReport.status !== 'success') {
137
+ console.log(`📊 Scraping Report for ${storyId}:`);
138
+ console.log(' Status: ❌ Error');
139
+ console.log(` Found Stories: ${scrapingReport.foundStories}`);
140
+ console.log(` Processed Stories: ${scrapingReport.processedStories}`);
141
+ if (scrapingReport.storyDetails.length > 0) {
142
+ console.log(' Story Details:');
143
+ scrapingReport.storyDetails.forEach((detail, index) => {
144
+ const statusIcon = detail.status === 'success' ? '✅' : '❌';
145
+ console.log(` ${index + 1}. ${statusIcon} ${detail.heading}`);
146
+ if (detail.error) {
147
+ console.log(` Error: ${detail.error}`);
148
+ }
149
+ });
150
+ }
151
+ if (scrapingReport.error) {
152
+ console.log(` Error Details: ${scrapingReport.error.message}`);
153
+ }
154
+ console.log(''); // Empty line for readability
155
+ }
156
+ }
157
+ }
158
+ /**
159
+ * Scrape all configured items and write documentation
160
+ */
161
+ async scrapeAll(baseUrl = 'http://localhost:6006') {
162
+ console.log('Starting scraping process...');
163
+ const items = await this.config.getItems();
164
+ // Create a single browser instance for all scraping operations
165
+ const browser = await chromium.launch({
166
+ headless: true,
167
+ });
168
+ try {
169
+ const scrapedPages = await Promise.all(items.map(async (item) => {
170
+ const storyId = this.config.generateStoryId(item);
171
+ const stories = await StorybookScraper.scrapeStoryDocs(storyId, baseUrl, browser);
172
+ return {
173
+ item,
174
+ stories,
175
+ };
176
+ }));
177
+ console.log('Writing documentation files...');
178
+ // Write out the results
179
+ await Promise.all(scrapedPages.map(async ({ item, stories }) => {
180
+ const filePath = this.config.generateOutputPath(item);
181
+ // Ensure the directory exists before writing
182
+ const dir = dirname(filePath);
183
+ await mkdir(dir, { recursive: true });
184
+ const content = await prettier.format(this.config.formatContent(item, stories), {
185
+ parser: 'markdown',
186
+ });
187
+ await writeFile(filePath, content, 'utf-8');
188
+ }));
189
+ console.log('Scraping process completed successfully!');
190
+ }
191
+ finally {
192
+ // Always close the browser, even if an error occurs
193
+ await browser.close();
194
+ }
195
+ }
196
+ }
@@ -0,0 +1,29 @@
1
+ import { StorybookServer } from './types.js';
2
+ export declare class StaticServerManager {
3
+ private server;
4
+ private serverInfo;
5
+ /**
6
+ * Check if a port is available
7
+ */
8
+ private static isPortAvailable;
9
+ /**
10
+ * Find an available port starting from the default port
11
+ */
12
+ private static findAvailablePort;
13
+ /**
14
+ * Start the static file server for Storybook
15
+ */
16
+ start(port?: number): Promise<StorybookServer>;
17
+ /**
18
+ * Stop the static server
19
+ */
20
+ stop(): Promise<void>;
21
+ /**
22
+ * Get the current server information
23
+ */
24
+ getServer(): StorybookServer | null;
25
+ /**
26
+ * Check if static server is currently running
27
+ */
28
+ isRunning(): boolean;
29
+ }
@@ -0,0 +1,139 @@
1
+ /* eslint-disable no-console */
2
+ import { createServer } from 'http';
3
+ import { promisify } from 'node:util';
4
+ import { exec } from 'node:child_process';
5
+ import { dirname, resolve } from 'path';
6
+ import { fileURLToPath } from 'url';
7
+ // eslint-disable-next-line import/no-extraneous-dependencies
8
+ import handler from 'serve-handler';
9
+ const execAsync = promisify(exec);
10
+ // Get current directory for resolving the Storybook build path
11
+ const filename = fileURLToPath(import.meta.url);
12
+ const currentDir = dirname(filename);
13
+ export class StaticServerManager {
14
+ server = null;
15
+ serverInfo = null;
16
+ /**
17
+ * Check if a port is available
18
+ */
19
+ static async isPortAvailable(port) {
20
+ try {
21
+ const { stdout } = await execAsync(`lsof -ti:${port}`);
22
+ return stdout.trim() === '';
23
+ }
24
+ catch {
25
+ return true;
26
+ }
27
+ }
28
+ /**
29
+ * Find an available port starting from the default port
30
+ */
31
+ static async findAvailablePort(startPort = 6006) {
32
+ let port = startPort;
33
+ // eslint-disable-next-line no-await-in-loop
34
+ while (!(await StaticServerManager.isPortAvailable(port))) {
35
+ port += 1;
36
+ if (port > startPort + 100) {
37
+ throw new Error('Could not find available port for static server');
38
+ }
39
+ }
40
+ return port;
41
+ }
42
+ /**
43
+ * Start the static file server for Storybook
44
+ */
45
+ async start(port = 6006) {
46
+ if (this.serverInfo?.isRunning) {
47
+ console.log('Static server is already running');
48
+ return this.serverInfo;
49
+ }
50
+ const availablePort = await StaticServerManager.findAvailablePort(port);
51
+ const url = `http://localhost:${availablePort}`;
52
+ const storybookDistPath = resolve(currentDir, '../../../../docs/dist');
53
+ console.log(`Starting static server on port ${availablePort}...`);
54
+ console.log(`Serving files from: ${storybookDistPath}`);
55
+ this.server = createServer((request, response) => {
56
+ // Add custom URL rewriting before serve-handler
57
+ const originalUrl = request.url || '';
58
+ // Handle iframe.html -> iframe rewrite manually
59
+ if (originalUrl.startsWith('/iframe.html')) {
60
+ const rewrittenUrl = originalUrl.replace('/iframe.html', '/iframe');
61
+ request.url = rewrittenUrl;
62
+ }
63
+ return handler(request, response, {
64
+ headers: [
65
+ {
66
+ headers: [
67
+ {
68
+ key: 'Cache-Control',
69
+ value: 'public, max-age=3600',
70
+ },
71
+ ],
72
+ source: '**',
73
+ },
74
+ ],
75
+ public: storybookDistPath,
76
+ });
77
+ });
78
+ // Start listening and wait for the server to be ready
79
+ await new Promise((resolvePromise, reject) => {
80
+ if (!this.server) {
81
+ reject(new Error('Server instance not created'));
82
+ return;
83
+ }
84
+ // Handle server errors
85
+ this.server.on('error', (error) => {
86
+ console.error('Static server error:', error);
87
+ reject(error);
88
+ });
89
+ // Server is ready when listening event fires
90
+ this.server.on('listening', () => {
91
+ console.log(`✓ Static server started successfully at ${url}`);
92
+ resolvePromise();
93
+ });
94
+ // Start the server
95
+ this.server.listen(availablePort);
96
+ });
97
+ this.serverInfo = {
98
+ isRunning: true,
99
+ port: availablePort,
100
+ url,
101
+ };
102
+ console.log(`Static server ready at ${url}`);
103
+ return this.serverInfo;
104
+ }
105
+ /**
106
+ * Stop the static server
107
+ */
108
+ async stop() {
109
+ if (!this.server || !this.serverInfo) {
110
+ console.log('No static server to stop');
111
+ return;
112
+ }
113
+ console.log('Stopping static server...');
114
+ await new Promise((resolvePromise) => {
115
+ if (!this.server) {
116
+ resolvePromise();
117
+ return;
118
+ }
119
+ this.server.close(() => {
120
+ this.serverInfo = null;
121
+ this.server = null;
122
+ console.log('Static server stopped successfully');
123
+ resolvePromise();
124
+ });
125
+ });
126
+ }
127
+ /**
128
+ * Get the current server information
129
+ */
130
+ getServer() {
131
+ return this.serverInfo;
132
+ }
133
+ /**
134
+ * Check if static server is currently running
135
+ */
136
+ isRunning() {
137
+ return this.serverInfo?.isRunning ?? false;
138
+ }
139
+ }
@@ -0,0 +1,22 @@
1
+ export interface ScrapingConfig {
2
+ /** The output directory path */
3
+ outputPath: string;
4
+ /** Function to get the list of items to scrape */
5
+ getItems: () => Promise<string[]> | string[];
6
+ /** Function to generate the story ID from an item */
7
+ generateStoryId: (item: string) => string;
8
+ /** Function to generate the output file path from an item */
9
+ generateOutputPath: (item: string) => string;
10
+ /** Function to format the scraped content */
11
+ formatContent: (item: string, stories: ScrapedStory[]) => string;
12
+ }
13
+ export interface ScrapedStory {
14
+ heading: string;
15
+ description: string;
16
+ example: string;
17
+ }
18
+ export interface StorybookServer {
19
+ port: number;
20
+ url: string;
21
+ isRunning: boolean;
22
+ }
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,6 @@
1
+ export declare const getStylesMetaData: () => Promise<(import("./metadata.js").MetadataFile | null)[]>;
2
+ /**
3
+ * Get a list of all available styles in the Synergy Design System.
4
+ * @returns A list of all available styles in the Synergy Design System.
5
+ */
6
+ export declare const getAvailableStyles: () => Promise<string[]>;
@@ -0,0 +1,24 @@
1
+ import fs from 'node:fs/promises';
2
+ import { staticStylesPath, stylesPath, } from './config.js';
3
+ import { getAbsolutePath } from './file.js';
4
+ import { getStructuredMetaData, } from './metadata.js';
5
+ export const getStylesMetaData = async () => {
6
+ const data = await getStructuredMetaData(stylesPath);
7
+ const additionalData = await getStructuredMetaData(staticStylesPath);
8
+ return [
9
+ ...data,
10
+ ...additionalData,
11
+ ];
12
+ };
13
+ /**
14
+ * Get a list of all available styles in the Synergy Design System.
15
+ * @returns A list of all available styles in the Synergy Design System.
16
+ */
17
+ export const getAvailableStyles = async () => {
18
+ const absolutePath = getAbsolutePath(`${stylesPath}`);
19
+ const files = await fs.readdir(absolutePath, { withFileTypes: true });
20
+ const styles = files
21
+ .filter(file => file.isFile() && file.name !== 'index.css' && file.name.endsWith('css'))
22
+ .map(file => file.name.replace('.css', ''));
23
+ return styles;
24
+ };
@@ -0,0 +1,12 @@
1
+ export declare const getTemplateMetaData: () => Promise<(import("./metadata.js").MetadataFile | null)[]>;
2
+ /**
3
+ * Get a list of all available templates in the Synergy Design System.
4
+ * @returns A list of all available templates in the Synergy Design System.
5
+ */
6
+ export declare const getAvailableTemplates: () => Promise<string[]>;
7
+ /**
8
+ * Get information about a specific template in the Synergy Design System.
9
+ * @param template The name of the template to get information about, e.g., 'appshell'.
10
+ * @returns Structured metadata for the specified template.
11
+ */
12
+ export declare const getInfoForTemplate: (template: string) => Promise<(import("./metadata.js").MetadataFile | null)[]>;