@solid-design-system/mcp 0.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 (569) hide show
  1. package/CHANGELOG.md +1 -0
  2. package/LICENSE.md +10 -0
  3. package/README.md +408 -0
  4. package/dist/bin/start.d.ts +2 -0
  5. package/dist/bin/start.js +8 -0
  6. package/dist/build/build.d.ts +1 -0
  7. package/dist/build/build.js +36 -0
  8. package/dist/build/components.d.ts +9 -0
  9. package/dist/build/components.js +264 -0
  10. package/dist/build/icons.d.ts +12 -0
  11. package/dist/build/icons.js +79 -0
  12. package/dist/build/package-docs.d.ts +1 -0
  13. package/dist/build/package-docs.js +67 -0
  14. package/dist/build/static.d.ts +4 -0
  15. package/dist/build/static.js +39 -0
  16. package/dist/build/styles.d.ts +9 -0
  17. package/dist/build/styles.js +178 -0
  18. package/dist/build/templates.d.ts +1 -0
  19. package/dist/build/templates.js +239 -0
  20. package/dist/build/tokens.d.ts +4 -0
  21. package/dist/build/tokens.js +105 -0
  22. package/dist/server.d.ts +6 -0
  23. package/dist/server.js +20 -0
  24. package/dist/tools/components.d.ts +12 -0
  25. package/dist/tools/components.js +175 -0
  26. package/dist/tools/icon-search.d.ts +7 -0
  27. package/dist/tools/icon-search.js +184 -0
  28. package/dist/tools/index.d.ts +7 -0
  29. package/dist/tools/index.js +7 -0
  30. package/dist/tools/quickstart.d.ts +2 -0
  31. package/dist/tools/quickstart.js +104 -0
  32. package/dist/tools/styles.d.ts +12 -0
  33. package/dist/tools/styles.js +167 -0
  34. package/dist/tools/templates.d.ts +11 -0
  35. package/dist/tools/templates.js +146 -0
  36. package/dist/tools/tokens.d.ts +7 -0
  37. package/dist/tools/tokens.js +198 -0
  38. package/dist/tools/version.d.ts +7 -0
  39. package/dist/tools/version.js +50 -0
  40. package/dist/utilities/components.d.ts +8 -0
  41. package/dist/utilities/components.js +24 -0
  42. package/dist/utilities/config.d.ts +40 -0
  43. package/dist/utilities/config.js +44 -0
  44. package/dist/utilities/file.d.ts +12 -0
  45. package/dist/utilities/file.js +28 -0
  46. package/dist/utilities/index.d.ts +10 -0
  47. package/dist/utilities/index.js +10 -0
  48. package/dist/utilities/input.d.ts +9 -0
  49. package/dist/utilities/input.js +19 -0
  50. package/dist/utilities/metadata.d.ts +33 -0
  51. package/dist/utilities/metadata.js +55 -0
  52. package/dist/utilities/stdio.d.ts +14 -0
  53. package/dist/utilities/stdio.js +57 -0
  54. package/dist/utilities/styles.d.ts +16 -0
  55. package/dist/utilities/styles.js +47 -0
  56. package/dist/utilities/templates.d.ts +5 -0
  57. package/dist/utilities/templates.js +18 -0
  58. package/dist/utilities/tokens.d.ts +6 -0
  59. package/dist/utilities/tokens.js +42 -0
  60. package/dist/utilities/version.d.ts +28 -0
  61. package/dist/utilities/version.js +21 -0
  62. package/metadata/packages/components/docs/customization.md +101 -0
  63. package/metadata/packages/components/docs/form-controls.md +28 -0
  64. package/metadata/packages/components/docs/installation.md +271 -0
  65. package/metadata/packages/components/docs/localization.md +158 -0
  66. package/metadata/packages/components/docs/usage.md +182 -0
  67. package/metadata/packages/components/sd-accordion/info.md +82 -0
  68. package/metadata/packages/components/sd-accordion/stories/open.md +8 -0
  69. package/metadata/packages/components/sd-accordion/stories/summary.md +17 -0
  70. package/metadata/packages/components/sd-accordion-group/info.md +70 -0
  71. package/metadata/packages/components/sd-accordion-group/stories/close-others.md +24 -0
  72. package/metadata/packages/components/sd-audio/info.md +80 -0
  73. package/metadata/packages/components/sd-audio/stories/animated.md +34 -0
  74. package/metadata/packages/components/sd-audio/stories/inverted.md +36 -0
  75. package/metadata/packages/components/sd-audio/stories/no-timestamps.md +34 -0
  76. package/metadata/packages/components/sd-audio/stories/reverse.md +35 -0
  77. package/metadata/packages/components/sd-audio/stories/speed.md +38 -0
  78. package/metadata/packages/components/sd-audio/stories/transcript.md +36 -0
  79. package/metadata/packages/components/sd-badge/info.md +69 -0
  80. package/metadata/packages/components/sd-badge/stories/inverted.md +9 -0
  81. package/metadata/packages/components/sd-badge/stories/overflow.md +11 -0
  82. package/metadata/packages/components/sd-badge/stories/size.md +13 -0
  83. package/metadata/packages/components/sd-badge/stories/variant.md +40 -0
  84. package/metadata/packages/components/sd-brandshape/info.md +65 -0
  85. package/metadata/packages/components/sd-brandshape/stories/image-translate-y.md +13 -0
  86. package/metadata/packages/components/sd-brandshape/stories/shapes.md +22 -0
  87. package/metadata/packages/components/sd-brandshape/stories/transparent-variants.md +24 -0
  88. package/metadata/packages/components/sd-brandshape/stories/variant.md +95 -0
  89. package/metadata/packages/components/sd-breadcrumb/info.md +57 -0
  90. package/metadata/packages/components/sd-breadcrumb-item/info.md +42 -0
  91. package/metadata/packages/components/sd-button/info.md +120 -0
  92. package/metadata/packages/components/sd-button/stories/as-link.md +12 -0
  93. package/metadata/packages/components/sd-button/stories/disabled.md +10 -0
  94. package/metadata/packages/components/sd-button/stories/icon.md +10 -0
  95. package/metadata/packages/components/sd-button/stories/inverted.md +10 -0
  96. package/metadata/packages/components/sd-button/stories/loading.md +10 -0
  97. package/metadata/packages/components/sd-button/stories/size.md +13 -0
  98. package/metadata/packages/components/sd-button/stories/variants.md +15 -0
  99. package/metadata/packages/components/sd-button/stories/visually-disabled.md +23 -0
  100. package/metadata/packages/components/sd-carousel/info.md +99 -0
  101. package/metadata/packages/components/sd-carousel/stories/autoplay-interval.md +66 -0
  102. package/metadata/packages/components/sd-carousel/stories/autoplay.md +23 -0
  103. package/metadata/packages/components/sd-carousel/stories/fade.md +18 -0
  104. package/metadata/packages/components/sd-carousel/stories/inverted.md +17 -0
  105. package/metadata/packages/components/sd-carousel/stories/loop.md +17 -0
  106. package/metadata/packages/components/sd-carousel/stories/slides-per-move.md +49 -0
  107. package/metadata/packages/components/sd-carousel/stories/slides-per-page.md +23 -0
  108. package/metadata/packages/components/sd-carousel/stories/variant.md +32 -0
  109. package/metadata/packages/components/sd-carousel-item/info.md +26 -0
  110. package/metadata/packages/components/sd-checkbox/info.md +88 -0
  111. package/metadata/packages/components/sd-checkbox/stories/checked.md +7 -0
  112. package/metadata/packages/components/sd-checkbox/stories/disabled.md +7 -0
  113. package/metadata/packages/components/sd-checkbox/stories/indeterminate.md +7 -0
  114. package/metadata/packages/components/sd-checkbox/stories/invalid.md +22 -0
  115. package/metadata/packages/components/sd-checkbox/stories/required.md +7 -0
  116. package/metadata/packages/components/sd-checkbox/stories/size.md +14 -0
  117. package/metadata/packages/components/sd-checkbox/stories/visually-disabled.md +11 -0
  118. package/metadata/packages/components/sd-checkbox-group/info.md +71 -0
  119. package/metadata/packages/components/sd-checkbox-group/stories/help-text.md +13 -0
  120. package/metadata/packages/components/sd-checkbox-group/stories/label.md +10 -0
  121. package/metadata/packages/components/sd-checkbox-group/stories/orientation.md +19 -0
  122. package/metadata/packages/components/sd-checkbox-group/stories/size.md +21 -0
  123. package/metadata/packages/components/sd-combobox/info.md +170 -0
  124. package/metadata/packages/components/sd-combobox/stories/async-options.md +27 -0
  125. package/metadata/packages/components/sd-combobox/stories/clearable.md +13 -0
  126. package/metadata/packages/components/sd-combobox/stories/custom-filter.md +20 -0
  127. package/metadata/packages/components/sd-combobox/stories/disabled.md +13 -0
  128. package/metadata/packages/components/sd-combobox/stories/floating-label.md +14 -0
  129. package/metadata/packages/components/sd-combobox/stories/focus.md +11 -0
  130. package/metadata/packages/components/sd-combobox/stories/help-text.md +36 -0
  131. package/metadata/packages/components/sd-combobox/stories/icons.md +15 -0
  132. package/metadata/packages/components/sd-combobox/stories/invalid.md +29 -0
  133. package/metadata/packages/components/sd-combobox/stories/label.md +26 -0
  134. package/metadata/packages/components/sd-combobox/stories/max-options-visible.md +23 -0
  135. package/metadata/packages/components/sd-combobox/stories/multiple.md +24 -0
  136. package/metadata/packages/components/sd-combobox/stories/placeholder.md +13 -0
  137. package/metadata/packages/components/sd-combobox/stories/placement.md +29 -0
  138. package/metadata/packages/components/sd-combobox/stories/required.md +20 -0
  139. package/metadata/packages/components/sd-combobox/stories/search.md +13 -0
  140. package/metadata/packages/components/sd-combobox/stories/size.md +38 -0
  141. package/metadata/packages/components/sd-combobox/stories/suggestion-container-height.md +12 -0
  142. package/metadata/packages/components/sd-combobox/stories/valid.md +29 -0
  143. package/metadata/packages/components/sd-combobox/stories/visually-disabled.md +17 -0
  144. package/metadata/packages/components/sd-datepicker/info.md +159 -0
  145. package/metadata/packages/components/sd-datepicker/stories/alignment.md +10 -0
  146. package/metadata/packages/components/sd-datepicker/stories/disabled-dates.md +11 -0
  147. package/metadata/packages/components/sd-datepicker/stories/disabled-weekends.md +7 -0
  148. package/metadata/packages/components/sd-datepicker/stories/disabled.md +8 -0
  149. package/metadata/packages/components/sd-datepicker/stories/floating-label.md +8 -0
  150. package/metadata/packages/components/sd-datepicker/stories/help-text.md +11 -0
  151. package/metadata/packages/components/sd-datepicker/stories/invalid.md +15 -0
  152. package/metadata/packages/components/sd-datepicker/stories/label.md +11 -0
  153. package/metadata/packages/components/sd-datepicker/stories/placeholder.md +7 -0
  154. package/metadata/packages/components/sd-datepicker/stories/range.md +7 -0
  155. package/metadata/packages/components/sd-datepicker/stories/required.md +7 -0
  156. package/metadata/packages/components/sd-datepicker/stories/size.md +14 -0
  157. package/metadata/packages/components/sd-datepicker/stories/valid.md +16 -0
  158. package/metadata/packages/components/sd-datepicker/stories/visible-month.md +7 -0
  159. package/metadata/packages/components/sd-datepicker/stories/visually-disabled.md +11 -0
  160. package/metadata/packages/components/sd-dialog/info.md +89 -0
  161. package/metadata/packages/components/sd-dialog/stories/headline.md +22 -0
  162. package/metadata/packages/components/sd-dialog/stories/no-close-button.md +32 -0
  163. package/metadata/packages/components/sd-dialog/stories/open.md +72 -0
  164. package/metadata/packages/components/sd-divider/info.md +51 -0
  165. package/metadata/packages/components/sd-divider/stories/inverted.md +7 -0
  166. package/metadata/packages/components/sd-divider/stories/orientation.md +11 -0
  167. package/metadata/packages/components/sd-divider/stories/size.md +10 -0
  168. package/metadata/packages/components/sd-drawer/info.md +89 -0
  169. package/metadata/packages/components/sd-drawer/stories/no-header.md +16 -0
  170. package/metadata/packages/components/sd-drawer/stories/open.md +23 -0
  171. package/metadata/packages/components/sd-drawer/stories/placement.md +23 -0
  172. package/metadata/packages/components/sd-dropdown/info.md +86 -0
  173. package/metadata/packages/components/sd-dropdown/stories/disabled.md +8 -0
  174. package/metadata/packages/components/sd-dropdown/stories/distance.md +8 -0
  175. package/metadata/packages/components/sd-dropdown/stories/no-auto-size.md +10 -0
  176. package/metadata/packages/components/sd-dropdown/stories/no-flip.md +8 -0
  177. package/metadata/packages/components/sd-dropdown/stories/open.md +8 -0
  178. package/metadata/packages/components/sd-dropdown/stories/placement.md +20 -0
  179. package/metadata/packages/components/sd-dropdown/stories/rounded.md +10 -0
  180. package/metadata/packages/components/sd-dropdown/stories/skidding.md +8 -0
  181. package/metadata/packages/components/sd-dropdown/stories/stay-open.md +12 -0
  182. package/metadata/packages/components/sd-expandable/info.md +79 -0
  183. package/metadata/packages/components/sd-expandable/stories/gradient.md +75 -0
  184. package/metadata/packages/components/sd-expandable/stories/inverted.md +33 -0
  185. package/metadata/packages/components/sd-expandable/stories/open.md +60 -0
  186. package/metadata/packages/components/sd-flipcard/info.md +84 -0
  187. package/metadata/packages/components/sd-flipcard/stories/aspect-ratios.md +26 -0
  188. package/metadata/packages/components/sd-flipcard/stories/flip-direction.md +17 -0
  189. package/metadata/packages/components/sd-flipcard/stories/placement.md +17 -0
  190. package/metadata/packages/components/sd-flipcard/stories/variants.md +51 -0
  191. package/metadata/packages/components/sd-header/info.md +60 -0
  192. package/metadata/packages/components/sd-header/stories/fixed.md +9 -0
  193. package/metadata/packages/components/sd-icon/info.md +35 -0
  194. package/metadata/packages/components/sd-icon/stories/color.md +15 -0
  195. package/metadata/packages/components/sd-icon/stories/custom-libraries.md +119 -0
  196. package/metadata/packages/components/sd-icon/stories/label.md +12 -0
  197. package/metadata/packages/components/sd-icon/stories/libraries.md +38 -0
  198. package/metadata/packages/components/sd-icon/stories/name.md +36 -0
  199. package/metadata/packages/components/sd-icon/stories/size.md +10 -0
  200. package/metadata/packages/components/sd-include/info.md +20 -0
  201. package/metadata/packages/components/sd-input/info.md +176 -0
  202. package/metadata/packages/components/sd-input/stories/clearable.md +7 -0
  203. package/metadata/packages/components/sd-input/stories/disabled.md +7 -0
  204. package/metadata/packages/components/sd-input/stories/floating-label.md +8 -0
  205. package/metadata/packages/components/sd-input/stories/help-text.md +11 -0
  206. package/metadata/packages/components/sd-input/stories/icon.md +13 -0
  207. package/metadata/packages/components/sd-input/stories/invalid.md +14 -0
  208. package/metadata/packages/components/sd-input/stories/label.md +11 -0
  209. package/metadata/packages/components/sd-input/stories/max-length.md +7 -0
  210. package/metadata/packages/components/sd-input/stories/max.md +7 -0
  211. package/metadata/packages/components/sd-input/stories/min-length.md +7 -0
  212. package/metadata/packages/components/sd-input/stories/min.md +7 -0
  213. package/metadata/packages/components/sd-input/stories/pattern.md +7 -0
  214. package/metadata/packages/components/sd-input/stories/placeholder.md +7 -0
  215. package/metadata/packages/components/sd-input/stories/read-only.md +8 -0
  216. package/metadata/packages/components/sd-input/stories/required.md +7 -0
  217. package/metadata/packages/components/sd-input/stories/size.md +14 -0
  218. package/metadata/packages/components/sd-input/stories/spin-buttons.md +14 -0
  219. package/metadata/packages/components/sd-input/stories/toggle-password.md +8 -0
  220. package/metadata/packages/components/sd-input/stories/type.md +80 -0
  221. package/metadata/packages/components/sd-input/stories/valid.md +15 -0
  222. package/metadata/packages/components/sd-input/stories/value.md +7 -0
  223. package/metadata/packages/components/sd-input/stories/visually-disabled.md +11 -0
  224. package/metadata/packages/components/sd-link/info.md +80 -0
  225. package/metadata/packages/components/sd-link/stories/as-link.md +12 -0
  226. package/metadata/packages/components/sd-link/stories/disabled.md +7 -0
  227. package/metadata/packages/components/sd-link/stories/icon.md +14 -0
  228. package/metadata/packages/components/sd-link/stories/inverted.md +7 -0
  229. package/metadata/packages/components/sd-link/stories/size.md +13 -0
  230. package/metadata/packages/components/sd-link/stories/standalone.md +29 -0
  231. package/metadata/packages/components/sd-link/stories/visually-disabled.md +17 -0
  232. package/metadata/packages/components/sd-loader/info.md +54 -0
  233. package/metadata/packages/components/sd-loader/stories/default.md +5 -0
  234. package/metadata/packages/components/sd-loader/stories/size.md +15 -0
  235. package/metadata/packages/components/sd-loader/stories/variants.md +19 -0
  236. package/metadata/packages/components/sd-map-marker/info.md +74 -0
  237. package/metadata/packages/components/sd-map-marker/stories/animated.md +13 -0
  238. package/metadata/packages/components/sd-map-marker/stories/as-link.md +13 -0
  239. package/metadata/packages/components/sd-map-marker/stories/not-interactive.md +11 -0
  240. package/metadata/packages/components/sd-map-marker/stories/slot.md +8 -0
  241. package/metadata/packages/components/sd-map-marker/stories/state.md +47 -0
  242. package/metadata/packages/components/sd-map-marker/stories/variant.md +21 -0
  243. package/metadata/packages/components/sd-menu/info.md +68 -0
  244. package/metadata/packages/components/sd-menu/stories/checkmark.md +12 -0
  245. package/metadata/packages/components/sd-menu/stories/disabled.md +12 -0
  246. package/metadata/packages/components/sd-menu/stories/grouping.md +20 -0
  247. package/metadata/packages/components/sd-menu/stories/icon.md +80 -0
  248. package/metadata/packages/components/sd-menu/stories/submenu.md +18 -0
  249. package/metadata/packages/components/sd-menu-item/info.md +36 -0
  250. package/metadata/packages/components/sd-menu-item/stories/checkmark.md +5 -0
  251. package/metadata/packages/components/sd-menu-item/stories/disabled.md +5 -0
  252. package/metadata/packages/components/sd-menu-item/stories/icon-indent.md +8 -0
  253. package/metadata/packages/components/sd-navigation-item/info.md +98 -0
  254. package/metadata/packages/components/sd-navigation-item/stories/accordion.md +15 -0
  255. package/metadata/packages/components/sd-navigation-item/stories/as-link.md +7 -0
  256. package/metadata/packages/components/sd-navigation-item/stories/chevron.md +10 -0
  257. package/metadata/packages/components/sd-navigation-item/stories/current.md +8 -0
  258. package/metadata/packages/components/sd-navigation-item/stories/description.md +11 -0
  259. package/metadata/packages/components/sd-navigation-item/stories/disabled.md +5 -0
  260. package/metadata/packages/components/sd-navigation-item/stories/divider.md +6 -0
  261. package/metadata/packages/components/sd-navigation-item/stories/indented.md +8 -0
  262. package/metadata/packages/components/sd-navigation-item/stories/orientation.md +6 -0
  263. package/metadata/packages/components/sd-navigation-item/stories/relaxed.md +8 -0
  264. package/metadata/packages/components/sd-navigation-item/stories/separated.md +14 -0
  265. package/metadata/packages/components/sd-navigation-item/stories/size.md +13 -0
  266. package/metadata/packages/components/sd-navigation-item/stories/stacked.md +8 -0
  267. package/metadata/packages/components/sd-notification/info.md +135 -0
  268. package/metadata/packages/components/sd-notification/stories/closable.md +13 -0
  269. package/metadata/packages/components/sd-notification/stories/duration-indicator.md +15 -0
  270. package/metadata/packages/components/sd-notification/stories/duration.md +16 -0
  271. package/metadata/packages/components/sd-notification/stories/open.md +5 -0
  272. package/metadata/packages/components/sd-notification/stories/toast-bottom-center.md +53 -0
  273. package/metadata/packages/components/sd-notification/stories/toast-notification.md +67 -0
  274. package/metadata/packages/components/sd-notification/stories/variants.md +20 -0
  275. package/metadata/packages/components/sd-optgroup/info.md +55 -0
  276. package/metadata/packages/components/sd-optgroup/stories/disabled.md +13 -0
  277. package/metadata/packages/components/sd-option/info.md +65 -0
  278. package/metadata/packages/components/sd-option/stories/checkbox.md +19 -0
  279. package/metadata/packages/components/sd-option/stories/disabled.md +22 -0
  280. package/metadata/packages/components/sd-option/stories/selected.md +23 -0
  281. package/metadata/packages/components/sd-option/stories/size.md +26 -0
  282. package/metadata/packages/components/sd-popup/info.md +66 -0
  283. package/metadata/packages/components/sd-progress-bar/info.md +73 -0
  284. package/metadata/packages/components/sd-progress-bar/stories/custom-height.md +5 -0
  285. package/metadata/packages/components/sd-progress-bar/stories/inverted.md +9 -0
  286. package/metadata/packages/components/sd-progress-bar/stories/label.md +16 -0
  287. package/metadata/packages/components/sd-progress-bar/stories/loading.md +5 -0
  288. package/metadata/packages/components/sd-progress-bar/stories/value-formatter.md +20 -0
  289. package/metadata/packages/components/sd-progress-bar/stories/value-max.md +6 -0
  290. package/metadata/packages/components/sd-progress-bar/stories/value-position.md +11 -0
  291. package/metadata/packages/components/sd-quickfact/info.md +84 -0
  292. package/metadata/packages/components/sd-quickfact/stories/expandable.md +46 -0
  293. package/metadata/packages/components/sd-quickfact/stories/open.md +15 -0
  294. package/metadata/packages/components/sd-quickfact/stories/summary.md +13 -0
  295. package/metadata/packages/components/sd-radio/info.md +47 -0
  296. package/metadata/packages/components/sd-radio/stories/disabled.md +9 -0
  297. package/metadata/packages/components/sd-radio/stories/invalid.md +22 -0
  298. package/metadata/packages/components/sd-radio/stories/size.md +26 -0
  299. package/metadata/packages/components/sd-radio/stories/visually-disabled.md +11 -0
  300. package/metadata/packages/components/sd-radio-button/info.md +81 -0
  301. package/metadata/packages/components/sd-radio-button/stories/checked.md +20 -0
  302. package/metadata/packages/components/sd-radio-button/stories/disabled.md +20 -0
  303. package/metadata/packages/components/sd-radio-button/stories/icon.md +17 -0
  304. package/metadata/packages/components/sd-radio-button/stories/label.md +19 -0
  305. package/metadata/packages/components/sd-radio-button/stories/size.md +54 -0
  306. package/metadata/packages/components/sd-radio-button/stories/visually-disabled.md +26 -0
  307. package/metadata/packages/components/sd-radio-group/info.md +91 -0
  308. package/metadata/packages/components/sd-radio-group/stories/disabled.md +10 -0
  309. package/metadata/packages/components/sd-radio-group/stories/help-text.md +12 -0
  310. package/metadata/packages/components/sd-radio-group/stories/invalid.md +23 -0
  311. package/metadata/packages/components/sd-radio-group/stories/label.md +9 -0
  312. package/metadata/packages/components/sd-radio-group/stories/orientation.md +20 -0
  313. package/metadata/packages/components/sd-radio-group/stories/required.md +28 -0
  314. package/metadata/packages/components/sd-radio-group/stories/size.md +20 -0
  315. package/metadata/packages/components/sd-range/info.md +101 -0
  316. package/metadata/packages/components/sd-range/stories/tooltip-formatter.md +13 -0
  317. package/metadata/packages/components/sd-range-tick/info.md +21 -0
  318. package/metadata/packages/components/sd-scrollable/info.md +87 -0
  319. package/metadata/packages/components/sd-scrollable/stories/buttons.md +15 -0
  320. package/metadata/packages/components/sd-scrollable/stories/inset.md +15 -0
  321. package/metadata/packages/components/sd-scrollable/stories/orientation.md +32 -0
  322. package/metadata/packages/components/sd-scrollable/stories/scrollbar.md +15 -0
  323. package/metadata/packages/components/sd-scrollable/stories/shadows.md +15 -0
  324. package/metadata/packages/components/sd-scrollable/stories/step.md +15 -0
  325. package/metadata/packages/components/sd-select/info.md +155 -0
  326. package/metadata/packages/components/sd-select/stories/clearable.md +13 -0
  327. package/metadata/packages/components/sd-select/stories/disabled.md +13 -0
  328. package/metadata/packages/components/sd-select/stories/floating-label.md +14 -0
  329. package/metadata/packages/components/sd-select/stories/help-text.md +23 -0
  330. package/metadata/packages/components/sd-select/stories/invalid.md +30 -0
  331. package/metadata/packages/components/sd-select/stories/label.md +23 -0
  332. package/metadata/packages/components/sd-select/stories/max-options-visible.md +24 -0
  333. package/metadata/packages/components/sd-select/stories/multiple.md +14 -0
  334. package/metadata/packages/components/sd-select/stories/placeholder.md +13 -0
  335. package/metadata/packages/components/sd-select/stories/placement.md +24 -0
  336. package/metadata/packages/components/sd-select/stories/required.md +13 -0
  337. package/metadata/packages/components/sd-select/stories/size.md +34 -0
  338. package/metadata/packages/components/sd-select/stories/use-tags.md +14 -0
  339. package/metadata/packages/components/sd-select/stories/valid.md +29 -0
  340. package/metadata/packages/components/sd-select/stories/visually-disabled.md +17 -0
  341. package/metadata/packages/components/sd-skeleton/info.md +57 -0
  342. package/metadata/packages/components/sd-skeleton/stories/variants.md +13 -0
  343. package/metadata/packages/components/sd-spinner/info.md +53 -0
  344. package/metadata/packages/components/sd-spinner/stories/size.md +15 -0
  345. package/metadata/packages/components/sd-spinner/stories/variants.md +43 -0
  346. package/metadata/packages/components/sd-step/info.md +80 -0
  347. package/metadata/packages/components/sd-step/stories/as-link.md +9 -0
  348. package/metadata/packages/components/sd-step/stories/current.md +9 -0
  349. package/metadata/packages/components/sd-step/stories/description-and-label-using-attributes.md +7 -0
  350. package/metadata/packages/components/sd-step/stories/description.md +28 -0
  351. package/metadata/packages/components/sd-step/stories/disabled.md +9 -0
  352. package/metadata/packages/components/sd-step/stories/horizontal-inline.md +9 -0
  353. package/metadata/packages/components/sd-step/stories/icon.md +10 -0
  354. package/metadata/packages/components/sd-step/stories/label.md +7 -0
  355. package/metadata/packages/components/sd-step/stories/no-tail.md +9 -0
  356. package/metadata/packages/components/sd-step/stories/not-interactive.md +9 -0
  357. package/metadata/packages/components/sd-step/stories/orientation.md +15 -0
  358. package/metadata/packages/components/sd-step/stories/size.md +19 -0
  359. package/metadata/packages/components/sd-step/stories/waiting.md +9 -0
  360. package/metadata/packages/components/sd-step-group/info.md +74 -0
  361. package/metadata/packages/components/sd-step-group/stories/active-step.md +17 -0
  362. package/metadata/packages/components/sd-step-group/stories/horizontal-inline.md +17 -0
  363. package/metadata/packages/components/sd-step-group/stories/icon.md +20 -0
  364. package/metadata/packages/components/sd-step-group/stories/manual-state.md +23 -0
  365. package/metadata/packages/components/sd-step-group/stories/not-interactive.md +17 -0
  366. package/metadata/packages/components/sd-step-group/stories/orientation.md +39 -0
  367. package/metadata/packages/components/sd-step-group/stories/size.md +53 -0
  368. package/metadata/packages/components/sd-switch/info.md +79 -0
  369. package/metadata/packages/components/sd-switch/stories/checked.md +5 -0
  370. package/metadata/packages/components/sd-switch/stories/disabled.md +5 -0
  371. package/metadata/packages/components/sd-switch/stories/invalid.md +18 -0
  372. package/metadata/packages/components/sd-switch/stories/required.md +5 -0
  373. package/metadata/packages/components/sd-tab/info.md +42 -0
  374. package/metadata/packages/components/sd-tab/stories/active.md +44 -0
  375. package/metadata/packages/components/sd-tab/stories/disabled.md +20 -0
  376. package/metadata/packages/components/sd-tab/stories/icon.md +29 -0
  377. package/metadata/packages/components/sd-tab/stories/variant.md +42 -0
  378. package/metadata/packages/components/sd-tab/stories/visually-disabled.md +24 -0
  379. package/metadata/packages/components/sd-tab-group/info.md +88 -0
  380. package/metadata/packages/components/sd-tab-group/stories/activation.md +52 -0
  381. package/metadata/packages/components/sd-tab-group/stories/scrollable.md +66 -0
  382. package/metadata/packages/components/sd-tab-panel/info.md +26 -0
  383. package/metadata/packages/components/sd-tab-panel/stories/open.md +9 -0
  384. package/metadata/packages/components/sd-tag/info.md +75 -0
  385. package/metadata/packages/components/sd-tag/stories/as-link.md +12 -0
  386. package/metadata/packages/components/sd-tag/stories/disabled.md +10 -0
  387. package/metadata/packages/components/sd-tag/stories/icon.md +10 -0
  388. package/metadata/packages/components/sd-tag/stories/removable.md +22 -0
  389. package/metadata/packages/components/sd-tag/stories/selected.md +20 -0
  390. package/metadata/packages/components/sd-tag/stories/size.md +11 -0
  391. package/metadata/packages/components/sd-teaser/info.md +85 -0
  392. package/metadata/packages/components/sd-teaser/stories/breakpoint.md +28 -0
  393. package/metadata/packages/components/sd-teaser/stories/default-and-headline-slot.md +14 -0
  394. package/metadata/packages/components/sd-teaser/stories/distribution.md +13 -0
  395. package/metadata/packages/components/sd-teaser/stories/inset.md +12 -0
  396. package/metadata/packages/components/sd-teaser/stories/media-slot.md +14 -0
  397. package/metadata/packages/components/sd-teaser/stories/meta-slot.md +16 -0
  398. package/metadata/packages/components/sd-teaser/stories/reverse.md +14 -0
  399. package/metadata/packages/components/sd-teaser/stories/variant.md +34 -0
  400. package/metadata/packages/components/sd-teaser-media/info.md +86 -0
  401. package/metadata/packages/components/sd-teaser-media/stories/default-media-and-headline-slot.md +15 -0
  402. package/metadata/packages/components/sd-teaser-media/stories/expandable-slot.md +10 -0
  403. package/metadata/packages/components/sd-teaser-media/stories/meta-slot.md +9 -0
  404. package/metadata/packages/components/sd-teaser-media/stories/variant.md +78 -0
  405. package/metadata/packages/components/sd-textarea/info.md +132 -0
  406. package/metadata/packages/components/sd-textarea/stories/disabled.md +7 -0
  407. package/metadata/packages/components/sd-textarea/stories/floating-label.md +8 -0
  408. package/metadata/packages/components/sd-textarea/stories/help-text.md +11 -0
  409. package/metadata/packages/components/sd-textarea/stories/invalid.md +24 -0
  410. package/metadata/packages/components/sd-textarea/stories/label.md +11 -0
  411. package/metadata/packages/components/sd-textarea/stories/max-length.md +15 -0
  412. package/metadata/packages/components/sd-textarea/stories/min-length.md +15 -0
  413. package/metadata/packages/components/sd-textarea/stories/placeholder.md +7 -0
  414. package/metadata/packages/components/sd-textarea/stories/readonly.md +16 -0
  415. package/metadata/packages/components/sd-textarea/stories/required.md +7 -0
  416. package/metadata/packages/components/sd-textarea/stories/rows.md +11 -0
  417. package/metadata/packages/components/sd-textarea/stories/size.md +16 -0
  418. package/metadata/packages/components/sd-textarea/stories/valid.md +22 -0
  419. package/metadata/packages/components/sd-textarea/stories/visually-disabled.md +18 -0
  420. package/metadata/packages/components/sd-theme-listener/info.md +20 -0
  421. package/metadata/packages/components/sd-theme-listener/stories/default.md +31 -0
  422. package/metadata/packages/components/sd-tooltip/info.md +101 -0
  423. package/metadata/packages/components/sd-tooltip/stories/close-trigger.md +19 -0
  424. package/metadata/packages/components/sd-tooltip/stories/custom-trigger.md +20 -0
  425. package/metadata/packages/components/sd-tooltip/stories/disabled.md +5 -0
  426. package/metadata/packages/components/sd-tooltip/stories/hoist.md +7 -0
  427. package/metadata/packages/components/sd-tooltip/stories/placement.md +43 -0
  428. package/metadata/packages/components/sd-tooltip/stories/size.md +11 -0
  429. package/metadata/packages/components/sd-tooltip/stories/trigger.md +10 -0
  430. package/metadata/packages/components/sd-video/info.md +70 -0
  431. package/metadata/packages/components/sd-video/stories/playing.md +11 -0
  432. package/metadata/packages/components/sd-video/stories/video-element-with-poster-slot.md +24 -0
  433. package/metadata/packages/icons/default/content.json +2267 -0
  434. package/metadata/packages/icons/default/system.json +1112 -0
  435. package/metadata/packages/icons/sd-multi-theming/content.json +27 -0
  436. package/metadata/packages/icons/sd-multi-theming/system.json +307 -0
  437. package/metadata/packages/icons/sd-status-assets/status.json +37 -0
  438. package/metadata/packages/quickstart/docs/quickstart.md +50 -0
  439. package/metadata/packages/styles/docs/installation.md +161 -0
  440. package/metadata/packages/styles/docs/usage.md +11 -0
  441. package/metadata/packages/styles/sd-chip/info.md +49 -0
  442. package/metadata/packages/styles/sd-chip/stories/variants.md +40 -0
  443. package/metadata/packages/styles/sd-container/info.md +39 -0
  444. package/metadata/packages/styles/sd-container/stories/custom-padding.md +7 -0
  445. package/metadata/packages/styles/sd-container/stories/padding.md +7 -0
  446. package/metadata/packages/styles/sd-container/stories/triangle-border.md +26 -0
  447. package/metadata/packages/styles/sd-container/stories/triangle-color.md +12 -0
  448. package/metadata/packages/styles/sd-container/stories/triangle-position.md +27 -0
  449. package/metadata/packages/styles/sd-container/stories/variants.md +36 -0
  450. package/metadata/packages/styles/sd-copyright/info.md +41 -0
  451. package/metadata/packages/styles/sd-copyright/stories/no-shadow.md +13 -0
  452. package/metadata/packages/styles/sd-copyright/stories/orientation.md +16 -0
  453. package/metadata/packages/styles/sd-copyright/stories/placement.md +21 -0
  454. package/metadata/packages/styles/sd-copyright/stories/variants.md +15 -0
  455. package/metadata/packages/styles/sd-display/info.md +42 -0
  456. package/metadata/packages/styles/sd-display/stories/inverted.md +7 -0
  457. package/metadata/packages/styles/sd-display/stories/size.md +13 -0
  458. package/metadata/packages/styles/sd-flag/info.md +45 -0
  459. package/metadata/packages/styles/sd-flag/stories/variants.md +40 -0
  460. package/metadata/packages/styles/sd-footnotes/info.md +49 -0
  461. package/metadata/packages/styles/sd-footnotes/stories/inverted.md +11 -0
  462. package/metadata/packages/styles/sd-footnotes/stories/variants.md +19 -0
  463. package/metadata/packages/styles/sd-headline/info.md +56 -0
  464. package/metadata/packages/styles/sd-headline/stories/inline.md +14 -0
  465. package/metadata/packages/styles/sd-headline/stories/inverted.md +7 -0
  466. package/metadata/packages/styles/sd-headline/stories/sizes.md +21 -0
  467. package/metadata/packages/styles/sd-hidden-links/info.md +55 -0
  468. package/metadata/packages/styles/sd-hidden-links/stories/debug.md +12 -0
  469. package/metadata/packages/styles/sd-hidden-links/stories/multiple-links.md +13 -0
  470. package/metadata/packages/styles/sd-hidden-links/stories/stack-links.md +10 -0
  471. package/metadata/packages/styles/sd-hidden-links/stories/surrounding-content.md +54 -0
  472. package/metadata/packages/styles/sd-hidden-links/stories/title-for-multiple-links.md +34 -0
  473. package/metadata/packages/styles/sd-interactive/info.md +50 -0
  474. package/metadata/packages/styles/sd-interactive/stories/disabled.md +6 -0
  475. package/metadata/packages/styles/sd-interactive/stories/inverted.md +7 -0
  476. package/metadata/packages/styles/sd-interactive/stories/reset.md +30 -0
  477. package/metadata/packages/styles/sd-leadtext/info.md +41 -0
  478. package/metadata/packages/styles/sd-leadtext/stories/inverted.md +11 -0
  479. package/metadata/packages/styles/sd-leadtext/stories/size.md +19 -0
  480. package/metadata/packages/styles/sd-list/info.md +49 -0
  481. package/metadata/packages/styles/sd-list/stories/inverted.md +20 -0
  482. package/metadata/packages/styles/sd-list/stories/levels.md +62 -0
  483. package/metadata/packages/styles/sd-list/stories/orientation.md +34 -0
  484. package/metadata/packages/styles/sd-list/stories/variants.md +34 -0
  485. package/metadata/packages/styles/sd-mark/info.md +30 -0
  486. package/metadata/packages/styles/sd-media/info.md +50 -0
  487. package/metadata/packages/styles/sd-media/stories/description.md +8 -0
  488. package/metadata/packages/styles/sd-media/stories/inverted.md +14 -0
  489. package/metadata/packages/styles/sd-meta/info.md +38 -0
  490. package/metadata/packages/styles/sd-meta/stories/inverted.md +11 -0
  491. package/metadata/packages/styles/sd-meta/stories/pipe.md +7 -0
  492. package/metadata/packages/styles/sd-meta/stories/size.md +11 -0
  493. package/metadata/packages/styles/sd-meta/stories/variants.md +11 -0
  494. package/metadata/packages/styles/sd-pagination/info.md +60 -0
  495. package/metadata/packages/styles/sd-pagination/stories/hidden-headline.md +37 -0
  496. package/metadata/packages/styles/sd-pagination/stories/inverted.md +36 -0
  497. package/metadata/packages/styles/sd-pagination/stories/truncation.md +34 -0
  498. package/metadata/packages/styles/sd-pagination/stories/variants.md +51 -0
  499. package/metadata/packages/styles/sd-paragraph/info.md +39 -0
  500. package/metadata/packages/styles/sd-paragraph/stories/inverted.md +11 -0
  501. package/metadata/packages/styles/sd-paragraph/stories/size.md +19 -0
  502. package/metadata/packages/styles/sd-prose/info.md +49 -0
  503. package/metadata/packages/styles/sd-prose/stories/full-width.md +22 -0
  504. package/metadata/packages/styles/sd-prose/stories/inverted.md +11 -0
  505. package/metadata/packages/styles/sd-prose/stories/styling-options.md +108 -0
  506. package/metadata/packages/styles/sd-status-badge/info.md +44 -0
  507. package/metadata/packages/styles/sd-status-badge/stories/variants.md +27 -0
  508. package/metadata/packages/styles/sd-table/info.md +43 -0
  509. package/metadata/packages/styles/sd-table/stories/slot.md +11 -0
  510. package/metadata/packages/styles/sd-table-cell/info.md +61 -0
  511. package/metadata/packages/styles/sd-table-cell/stories/divider.md +19 -0
  512. package/metadata/packages/styles/sd-table-cell/stories/shadow.md +137 -0
  513. package/metadata/packages/styles/sd-table-cell/stories/variants.md +39 -0
  514. package/metadata/packages/templates/accordion-group.md +163 -0
  515. package/metadata/packages/templates/audio.md +194 -0
  516. package/metadata/packages/templates/autocomplete.md +213 -0
  517. package/metadata/packages/templates/badge.md +149 -0
  518. package/metadata/packages/templates/bottom-navigation.md +263 -0
  519. package/metadata/packages/templates/brandshape.md +81 -0
  520. package/metadata/packages/templates/breadcrumb.md +361 -0
  521. package/metadata/packages/templates/button.md +107 -0
  522. package/metadata/packages/templates/carousel.md +64 -0
  523. package/metadata/packages/templates/checkbox-group.md +81 -0
  524. package/metadata/packages/templates/chip.md +35 -0
  525. package/metadata/packages/templates/combobox.md +92 -0
  526. package/metadata/packages/templates/datepicker.md +44 -0
  527. package/metadata/packages/templates/dialog.md +270 -0
  528. package/metadata/packages/templates/drawer.md +185 -0
  529. package/metadata/packages/templates/dropdown.md +52 -0
  530. package/metadata/packages/templates/expandable.md +61 -0
  531. package/metadata/packages/templates/flag.md +38 -0
  532. package/metadata/packages/templates/flipcard.md +66 -0
  533. package/metadata/packages/templates/footnotes.md +80 -0
  534. package/metadata/packages/templates/forms.md +248 -0
  535. package/metadata/packages/templates/header-navigation.md +1951 -0
  536. package/metadata/packages/templates/headline.md +204 -0
  537. package/metadata/packages/templates/input.md +27 -0
  538. package/metadata/packages/templates/interactive.md +28 -0
  539. package/metadata/packages/templates/link.md +83 -0
  540. package/metadata/packages/templates/list.md +27 -0
  541. package/metadata/packages/templates/map-marker.md +15 -0
  542. package/metadata/packages/templates/mark.md +39 -0
  543. package/metadata/packages/templates/media.md +22 -0
  544. package/metadata/packages/templates/menu.md +93 -0
  545. package/metadata/packages/templates/notification.md +100 -0
  546. package/metadata/packages/templates/pagination.md +340 -0
  547. package/metadata/packages/templates/quickfact.md +267 -0
  548. package/metadata/packages/templates/quote.md +97 -0
  549. package/metadata/packages/templates/radio-button-group.md +24 -0
  550. package/metadata/packages/templates/radio-group.md +51 -0
  551. package/metadata/packages/templates/range.md +135 -0
  552. package/metadata/packages/templates/select.md +63 -0
  553. package/metadata/packages/templates/skeleton.md +32 -0
  554. package/metadata/packages/templates/status-badge.md +252 -0
  555. package/metadata/packages/templates/step-group.md +150 -0
  556. package/metadata/packages/templates/supernumber.md +178 -0
  557. package/metadata/packages/templates/switch.md +51 -0
  558. package/metadata/packages/templates/tab-group.md +157 -0
  559. package/metadata/packages/templates/table.md +2612 -0
  560. package/metadata/packages/templates/tag.md +230 -0
  561. package/metadata/packages/templates/teaser-media.md +164 -0
  562. package/metadata/packages/templates/teaser.md +320 -0
  563. package/metadata/packages/templates/tooltip.md +104 -0
  564. package/metadata/packages/templates/video.md +71 -0
  565. package/metadata/packages/tokens/docs/installation.md +445 -0
  566. package/metadata/packages/tokens/docs/usage.md +338 -0
  567. package/metadata/packages/tokens/themes.json +3 -0
  568. package/metadata/packages/tokens/tokens.json +185 -0
  569. package/package.json +76 -0
@@ -0,0 +1,264 @@
1
+ import { rmSync } from 'node:fs';
2
+ import fs from 'node:fs/promises';
3
+ import { basename, dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import ora from 'ora';
6
+ import { componentPath, createPath } from '../utilities/index.js';
7
+ /** Absolute path to the docs stories/components directory */
8
+ const DOCS_COMPONENTS_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../../docs/src/stories/components');
9
+ const normalizeMdxTemplateEscapes = (text) => text.replace(/\\`/g, '`');
10
+ const extractMdxContent = async (mdxPath) => {
11
+ try {
12
+ const raw = await fs.readFile(mdxPath, 'utf-8');
13
+ const match = raw.match(/export const content = `([\s\S]*?)`;/);
14
+ if (!match)
15
+ return { docs: null };
16
+ const full = match[1]
17
+ .split('\n')
18
+ .filter(line => !line.trimStart().startsWith('<DefaultStory') && !line.trimStart().startsWith('<DocumentationLinks'))
19
+ .join('\n')
20
+ .trim();
21
+ let docs = full.replace(/####\s+Related (?:Components|Templates)\n+((?:.*\n)*?)(?=\n####|\n###|$)/g, '');
22
+ docs = docs.replace(/^\[.*?\]\(\.\/?path=.*?\)\n?/gm, '');
23
+ docs = docs.replace(/\nVisit <sd-link[\s\S]*$/, '');
24
+ docs = normalizeMdxTemplateEscapes(docs.trim());
25
+ return { docs: docs || null };
26
+ }
27
+ catch {
28
+ return { docs: null };
29
+ }
30
+ };
31
+ /**
32
+ * Extracts the content of a lit-html template literal starting at `startIndex`
33
+ * (immediately after the opening backtick of `html\``).
34
+ */
35
+ const extractHtmlLiteral = (source, startIndex) => {
36
+ let i = startIndex;
37
+ let depth = 0;
38
+ while (i < source.length) {
39
+ const c = source[i];
40
+ if (depth === 0 && c === '`')
41
+ return source.slice(startIndex, i);
42
+ if (c === '$' && source[i + 1] === '{') {
43
+ depth++;
44
+ i += 2;
45
+ continue;
46
+ }
47
+ if (depth > 0) {
48
+ if (c === '{')
49
+ depth++;
50
+ else if (c === '}')
51
+ depth--;
52
+ }
53
+ i++;
54
+ }
55
+ return source.slice(startIndex);
56
+ };
57
+ const dedent = (str) => {
58
+ const lines = str.split('\n');
59
+ while (lines.length && !lines[0].trim())
60
+ lines.shift();
61
+ while (lines.length && !lines[lines.length - 1].trim())
62
+ lines.pop();
63
+ if (!lines.length)
64
+ return '';
65
+ const indent = Math.min(...lines.filter(l => l.trim()).map(l => l.match(/^(\s*)/)?.[1].length ?? 0));
66
+ return lines.map(l => l.slice(indent)).join('\n');
67
+ };
68
+ /** Converts PascalCase/camelCase to kebab-case. e.g. "NoShadow" → "no-shadow" */
69
+ const toKebab = (s) => s.replace(/([A-Z])/g, (_, c, i) => (i === 0 ? c.toLowerCase() : `-${c.toLowerCase()}`));
70
+ /**
71
+ * Extracts stories from a component .stories.ts file.
72
+ * Only stories with a JSDoc comment AND a direct html` literal are included.
73
+ * Default/generateTemplate stories are skipped.
74
+ */
75
+ const extractStories = async (storiesPath) => {
76
+ let source;
77
+ try {
78
+ source = await fs.readFile(storiesPath, 'utf-8');
79
+ }
80
+ catch {
81
+ return [];
82
+ }
83
+ const stories = [];
84
+ // Match: optional JSDoc, then `export const ExportName = {`
85
+ const pattern = /(\/\*\*([\s\S]*?)\*\/\s*)?^export const (\w+) = \{/gm;
86
+ let match;
87
+ while ((match = pattern.exec(source)) !== null) {
88
+ const exportName = match[3];
89
+ if (exportName === 'default')
90
+ continue;
91
+ const jsdocRaw = match[2] ?? '';
92
+ // Clean up JSDoc: remove leading " * " on each line
93
+ const description = jsdocRaw
94
+ .split('\n')
95
+ .map(l => l.replace(/^\s*\*\s?/, '').trim())
96
+ .filter(Boolean)
97
+ .join('\n')
98
+ .trim();
99
+ // Find `html`` directly inside the render function (not inside generateTemplate)
100
+ const blockStart = match.index + match[0].length;
101
+ const blockSlice = source.slice(blockStart);
102
+ // Skip if this story uses generateTemplate
103
+ const nextExportIdx = blockSlice.search(/\nexport const /);
104
+ const block = nextExportIdx === -1 ? blockSlice : blockSlice.slice(0, nextExportIdx);
105
+ if (block.includes('generateTemplate('))
106
+ continue;
107
+ const htmlIdx = block.indexOf('html`');
108
+ if (htmlIdx === -1)
109
+ continue;
110
+ const rawHtml = extractHtmlLiteral(block, htmlIdx + 5);
111
+ const html = dedent(rawHtml);
112
+ if (!html)
113
+ continue;
114
+ stories.push({ slug: toKebab(exportName), description, html });
115
+ }
116
+ return stories;
117
+ };
118
+ const normalizeVersionedTagNames = (text) => text.replace(/\bsd-\d+(?:-\d+){2}-/g, 'sd-');
119
+ const formatPropMeta = (type, defaultVal) => {
120
+ const parts = [];
121
+ if (type)
122
+ parts.push(type.replace(/\s*\|\s*/g, '|'));
123
+ if (defaultVal !== '' && defaultVal !== undefined)
124
+ parts.push(`default=${defaultVal}`);
125
+ return parts.join(', ');
126
+ };
127
+ const extractApiSections = (decl) => {
128
+ const tagName = decl.tagName ?? '';
129
+ const summary = normalizeVersionedTagNames(decl.summary ?? '');
130
+ const members = (decl.members ?? []);
131
+ const propsLines = members
132
+ .filter(m => m.kind === 'field' && !m.privacy && m.description)
133
+ .map(m => {
134
+ const meta = normalizeVersionedTagNames(formatPropMeta(m.type?.text ?? '', m.default ?? ''));
135
+ const attrSuffix = m.attribute && m.attribute !== m.name ? ` [attr: ${m.attribute}]` : '';
136
+ const description = m.description ? normalizeVersionedTagNames(m.description) : '';
137
+ return `- prop.${m.name}${attrSuffix}: ${meta}${description ? ` — ${description}` : ''}`;
138
+ });
139
+ const eventLines = (decl.events ?? []).map(e => {
140
+ const name = normalizeVersionedTagNames(e.name);
141
+ const description = normalizeVersionedTagNames(e.description ?? '');
142
+ return `- event.${name}: ${description}`;
143
+ });
144
+ const slotLines = (decl.slots ?? []).map(s => {
145
+ const description = normalizeVersionedTagNames(s.description ?? '');
146
+ return `- slot.${s.name || 'default'}: ${description}`;
147
+ });
148
+ const partLines = (decl.cssParts ?? []).map(p => {
149
+ const description = normalizeVersionedTagNames(p.description ?? '');
150
+ return `- part.${p.name}: ${description}`;
151
+ });
152
+ return {
153
+ tagName,
154
+ summary,
155
+ props: propsLines.join('\n'),
156
+ events: eventLines.join('\n'),
157
+ slots: slotLines.join('\n'),
158
+ parts: partLines.join('\n')
159
+ };
160
+ };
161
+ const loadManifestApiMap = async () => {
162
+ const candidates = [
163
+ '../components/dist/custom-elements.json',
164
+ '../components/dist-versioned/custom-elements.json',
165
+ '../components/cdn/custom-elements.json'
166
+ ];
167
+ for (const relPath of candidates) {
168
+ const absPath = join(process.cwd(), relPath);
169
+ try {
170
+ const raw = await fs.readFile(absPath, 'utf-8');
171
+ const parsed = JSON.parse(raw);
172
+ const modules = parsed.modules ?? [];
173
+ const map = new Map();
174
+ const declarations = modules
175
+ .filter(module => module.declarations?.some(declaration => declaration.tagName))
176
+ .map(module => module.declarations?.find(declaration => declaration.tagName))
177
+ .filter(Boolean);
178
+ for (const declaration of declarations) {
179
+ const api = extractApiSections(declaration);
180
+ if (!api.tagName)
181
+ continue;
182
+ const normalizedTagName = api.tagName.replace(/^sd-\d+-\d+-\d+-/, 'sd-');
183
+ map.set(normalizedTagName, { ...api, tagName: normalizedTagName });
184
+ }
185
+ return map;
186
+ }
187
+ catch {
188
+ // Try next candidate path.
189
+ }
190
+ }
191
+ return new Map();
192
+ };
193
+ const extractSummaryFromDocs = (docs) => {
194
+ if (!docs)
195
+ return '';
196
+ const lines = docs
197
+ .split('\n')
198
+ .map(line => line.trim())
199
+ .filter(Boolean);
200
+ for (const line of lines) {
201
+ if (line.startsWith('#'))
202
+ continue;
203
+ if (line.startsWith('<'))
204
+ continue;
205
+ if (line.startsWith('['))
206
+ continue;
207
+ if (line.startsWith('####') || line.startsWith('###'))
208
+ break;
209
+ return line;
210
+ }
211
+ return '';
212
+ };
213
+ const getComponentNames = async () => {
214
+ const files = await fs.readdir(DOCS_COMPONENTS_DIR);
215
+ const mdxNames = files.filter(file => file.endsWith('.mdx')).map(file => basename(file, '.mdx'));
216
+ const storyNames = files
217
+ .filter(file => /^[a-z0-9-]+\.stories\.ts$/.test(file))
218
+ .map(file => basename(file, '.stories.ts'));
219
+ return [...new Set([...mdxNames, ...storyNames])].sort();
220
+ };
221
+ export const buildComponents = async () => {
222
+ const spinner = ora({ prefixText: 'Components:', text: 'Generating static metadata...' }).start();
223
+ try {
224
+ const componentNames = await getComponentNames();
225
+ const apiMap = await loadManifestApiMap();
226
+ spinner.text = 'Cleaning up old metadata...';
227
+ rmSync(componentPath, { recursive: true, force: true });
228
+ spinner.succeed('Old metadata cleaned up.');
229
+ await createPath(componentPath);
230
+ spinner.text = 'Generating components metadata...';
231
+ await Promise.all(componentNames.map(async (name) => {
232
+ const tagName = `sd-${name}`;
233
+ const [{ docs }, stories] = await Promise.all([
234
+ extractMdxContent(join(DOCS_COMPONENTS_DIR, `${name}.mdx`)),
235
+ extractStories(join(DOCS_COMPONENTS_DIR, `${name}.stories.ts`))
236
+ ]);
237
+ const manifestApi = apiMap.get(tagName);
238
+ const summary = manifestApi?.summary || extractSummaryFromDocs(docs);
239
+ const api = manifestApi
240
+ ? { ...manifestApi, summary }
241
+ : {
242
+ tagName,
243
+ summary,
244
+ props: '',
245
+ events: '',
246
+ slots: '',
247
+ parts: ''
248
+ };
249
+ // Store intermediate JSON — buildTemplates will finalise into info.md + story files
250
+ const intermediate = {
251
+ api,
252
+ docs,
253
+ stories,
254
+ templates: []
255
+ };
256
+ await fs.writeFile(join(componentPath, `${tagName}.json`), JSON.stringify(intermediate));
257
+ }));
258
+ spinner.succeed('Components metadata generated successfully.');
259
+ }
260
+ catch (error) {
261
+ spinner.fail(`Failed to generate components metadata. Error: ${error}`);
262
+ throw error;
263
+ }
264
+ };
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Fetches icon metadata from the CDN and writes compact JSON files per library:
3
+ * metadata/packages/icons/default/content.json — default library content icons
4
+ * metadata/packages/icons/default/system.json — default library UI/system icons
5
+ * metadata/packages/icons/sd-status-assets/status.json — status indicator icons
6
+ * metadata/packages/icons/sd-multi-theming/content.json — multi-theme content icons
7
+ * metadata/packages/icons/sd-multi-theming/system.json — multi-theme system icons
8
+ *
9
+ * Each icon: { technicalId, displayNameDe, tags }
10
+ * Use as <sd-icon name="content/{technicalId}"> or <sd-icon name="system/{technicalId}">
11
+ */
12
+ export declare const buildIcons: () => Promise<void>;
@@ -0,0 +1,79 @@
1
+ import fs from 'node:fs/promises';
2
+ import { mkdirSync, rmSync } from 'node:fs';
3
+ import { join, resolve } from 'node:path';
4
+ import ora from 'ora';
5
+ import { iconsPath } from '../utilities/index.js';
6
+ const CONTENT_URL = 'https://celum-icons.fe.union-investment.de/union-investment/content.json';
7
+ const SYSTEM_URL = 'https://celum-icons.fe.union-investment.de/union-investment/system.json';
8
+ const MULTI_THEMING_CONTENT_URL = 'https://celum-icons.fe.union-investment.de/vb/content.json';
9
+ const MULTI_THEMING_SYSTEM_URL = 'https://celum-icons.fe.union-investment.de/vb/system.json';
10
+ const STATUS_LIBRARY_SOURCE = resolve(iconsPath, '../../../../../packages/components/src/components/icon/library.status.ts');
11
+ const toLabel = (iconId) => iconId
12
+ .replace(/^status-/, '')
13
+ .split('-')
14
+ .map(part => part.charAt(0).toUpperCase() + part.slice(1))
15
+ .join(' ');
16
+ const getStatusIcons = async () => {
17
+ const source = await fs.readFile(STATUS_LIBRARY_SOURCE, 'utf-8');
18
+ const ids = [...source.matchAll(/'(?<id>status-[^']+)'\s*:/g)]
19
+ .map(match => match.groups?.id)
20
+ .filter((id) => Boolean(id));
21
+ return ids.map(id => ({
22
+ technicalId: id,
23
+ displayNameDe: toLabel(id),
24
+ tags: []
25
+ }));
26
+ };
27
+ const fetchIcons = async (url) => {
28
+ const res = await fetch(url);
29
+ if (!res.ok)
30
+ throw new Error(`Failed to fetch ${url}: ${res.status} ${res.statusText}`);
31
+ const data = (await res.json());
32
+ return data.map(({ technicalId, displayNameDe, tags }) => ({
33
+ technicalId,
34
+ displayNameDe,
35
+ tags: tags ?? []
36
+ }));
37
+ };
38
+ /**
39
+ * Fetches icon metadata from the CDN and writes compact JSON files per library:
40
+ * metadata/packages/icons/default/content.json — default library content icons
41
+ * metadata/packages/icons/default/system.json — default library UI/system icons
42
+ * metadata/packages/icons/sd-status-assets/status.json — status indicator icons
43
+ * metadata/packages/icons/sd-multi-theming/content.json — multi-theme content icons
44
+ * metadata/packages/icons/sd-multi-theming/system.json — multi-theme system icons
45
+ *
46
+ * Each icon: { technicalId, displayNameDe, tags }
47
+ * Use as <sd-icon name="content/{technicalId}"> or <sd-icon name="system/{technicalId}">
48
+ */
49
+ export const buildIcons = async () => {
50
+ const spinner = ora({
51
+ prefixText: 'Icons:',
52
+ text: 'Fetching icon metadata from CDN...'
53
+ }).start();
54
+ try {
55
+ rmSync(iconsPath, { recursive: true, force: true });
56
+ mkdirSync(join(iconsPath, 'default'), { recursive: true });
57
+ mkdirSync(join(iconsPath, 'sd-status-assets'), { recursive: true });
58
+ mkdirSync(join(iconsPath, 'sd-multi-theming'), { recursive: true });
59
+ const [content, system, multiThemingContent, multiThemingSystem, statusIcons] = await Promise.all([
60
+ fetchIcons(CONTENT_URL),
61
+ fetchIcons(SYSTEM_URL),
62
+ fetchIcons(MULTI_THEMING_CONTENT_URL),
63
+ fetchIcons(MULTI_THEMING_SYSTEM_URL),
64
+ getStatusIcons()
65
+ ]);
66
+ await Promise.all([
67
+ fs.writeFile(join(iconsPath, 'default', 'content.json'), JSON.stringify(content, null, 2)),
68
+ fs.writeFile(join(iconsPath, 'default', 'system.json'), JSON.stringify(system, null, 2)),
69
+ fs.writeFile(join(iconsPath, 'sd-status-assets', 'status.json'), JSON.stringify(statusIcons, null, 2)),
70
+ fs.writeFile(join(iconsPath, 'sd-multi-theming', 'content.json'), JSON.stringify(multiThemingContent, null, 2)),
71
+ fs.writeFile(join(iconsPath, 'sd-multi-theming', 'system.json'), JSON.stringify(multiThemingSystem, null, 2))
72
+ ]);
73
+ spinner.succeed(`Icon metadata generated successfully (${content.length} default content, ${system.length} default system, ${multiThemingContent.length} multi-theming content, ${multiThemingSystem.length} multi-theming system, ${statusIcons.length} status).`);
74
+ }
75
+ catch (error) {
76
+ spinner.fail(`Failed to generate icon metadata. Error: ${error}`);
77
+ throw error;
78
+ }
79
+ };
@@ -0,0 +1 @@
1
+ export declare const buildPackageDocs: () => Promise<void>;
@@ -0,0 +1,67 @@
1
+ import fs from 'node:fs/promises';
2
+ import { mkdirSync } from 'node:fs';
3
+ import { dirname, join, basename, extname } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import ora from 'ora';
6
+ import { componentPackageDocsPath, quickstartPackageDocsPath, stylePackageDocsPath, tokenPackageDocsPath } from '../utilities/index.js';
7
+ const SKIP = new Set(['changelog', 'contributing', 'migration', 'index', '_rolesinfo']);
8
+ /** Absolute path to the docs stories/packages directory */
9
+ const DOCS_PACKAGES_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../../docs/src/stories/packages');
10
+ /**
11
+ * Strip Storybook-specific syntax from MDX, returning plain Markdown.
12
+ */
13
+ const cleanMdx = (raw) => raw
14
+ // Remove import lines
15
+ .replace(/^import\s+.*\n/gm, '')
16
+ // Remove <Meta .../> (single or multi-line)
17
+ .replace(/<Meta\s[^>]*\/>/gs, '')
18
+ // Remove html:preview fences → plain html
19
+ .replace(/```html:preview/g, '```html')
20
+ // Remove any remaining JSX-style self-closing tags from storybook
21
+ .replace(/<[A-Z][A-Za-z]*\s[^>]*\/>/gs, '')
22
+ // Collapse multiple blank lines
23
+ .replace(/\n{3,}/g, '\n\n')
24
+ .trim();
25
+ const buildDocsForPackage = async (sourceDir, outputDir, label) => {
26
+ const spinner = ora({ prefixText: 'MCP:', text: `Building ${label} package docs...` }).start();
27
+ mkdirSync(outputDir, { recursive: true });
28
+ let entries;
29
+ try {
30
+ entries = await fs.readdir(sourceDir);
31
+ }
32
+ catch {
33
+ spinner.warn(`${label} source dir not found: ${sourceDir}`);
34
+ return;
35
+ }
36
+ const mdxFiles = entries.filter(f => {
37
+ if (extname(f) !== '.mdx')
38
+ return false;
39
+ const slug = basename(f, '.mdx').toLowerCase().replace(/\s+/g, '-');
40
+ return !SKIP.has(slug);
41
+ });
42
+ await Promise.all(mdxFiles.map(async (file) => {
43
+ const raw = await fs.readFile(join(sourceDir, file), 'utf-8');
44
+ const cleaned = cleanMdx(raw);
45
+ const slug = basename(file, '.mdx').toLowerCase().replace(/\s+/g, '-');
46
+ await fs.writeFile(join(outputDir, `${slug}.md`), cleaned, 'utf-8');
47
+ }));
48
+ spinner.succeed(`${label} package docs: ${mdxFiles.length} file(s) written to ${outputDir}`);
49
+ };
50
+ const buildSingleDoc = async (sourceFile, outputFile, label) => {
51
+ const spinner = ora({ prefixText: 'MCP:', text: `Building ${label}...` }).start();
52
+ try {
53
+ const raw = await fs.readFile(sourceFile, 'utf-8');
54
+ mkdirSync(dirname(outputFile), { recursive: true });
55
+ await fs.writeFile(outputFile, cleanMdx(raw), 'utf-8');
56
+ spinner.succeed(`${label}: written to ${outputFile}`);
57
+ }
58
+ catch {
59
+ spinner.warn(`${label} source file not found: ${sourceFile}`);
60
+ }
61
+ };
62
+ export const buildPackageDocs = async () => {
63
+ await buildSingleDoc(join(DOCS_PACKAGES_DIR, 'Quickstart.mdx'), join(quickstartPackageDocsPath, 'quickstart.md'), 'Quickstart doc');
64
+ await buildDocsForPackage(join(DOCS_PACKAGES_DIR, 'components'), componentPackageDocsPath, 'Components');
65
+ await buildDocsForPackage(join(DOCS_PACKAGES_DIR, 'styles'), stylePackageDocsPath, 'Styles');
66
+ await buildDocsForPackage(join(DOCS_PACKAGES_DIR, 'tokens'), tokenPackageDocsPath, 'Tokens');
67
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Sets up all data from the components and framework packages and adds them to the static metadata.
3
+ */
4
+ export declare const buildStaticFiles: () => Promise<void>;
@@ -0,0 +1,39 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { copyFile } from 'node:fs/promises';
3
+ import { basename, join } from 'node:path';
4
+ import ora from 'ora';
5
+ import { componentPath, createPath, getAbsolutePath } from '../utilities/index.js';
6
+ /**
7
+ * List of static files that should be copied to the static metadata directory.
8
+ */
9
+ const staticFilesToCopy = [
10
+ // Copy the breaking changes guide into the components metadata directory
11
+ [getAbsolutePath('../../../../packages/components/BREAKING_CHANGES.md'), componentPath]
12
+ ];
13
+ /**
14
+ * Sets up all data from the components and framework packages and adds them to the static metadata.
15
+ */
16
+ export const buildStaticFiles = async () => {
17
+ const spinner = ora({
18
+ prefixText: 'Static files:',
19
+ text: 'Generating static metadata...'
20
+ }).start();
21
+ try {
22
+ // Create the wanted directories if they don't exist
23
+ const createAllPaths = Promise.all(staticFilesToCopy.map(([, target]) => createPath(target)));
24
+ await createAllPaths;
25
+ const staticFiles = staticFilesToCopy
26
+ .filter(file => existsSync(file.at(0)))
27
+ .map(([staticFile, target]) => {
28
+ const targetFileName = join(target, basename(staticFile));
29
+ return copyFile(staticFile, targetFileName);
30
+ });
31
+ await Promise.all(staticFiles);
32
+ spinner.succeed('Static metadata generated successfully.');
33
+ spinner.succeed('Generation of metadata generated successfully.');
34
+ }
35
+ catch (error) {
36
+ spinner.fail(`Failed to generate components metadata. Error: ${error}`);
37
+ throw error;
38
+ }
39
+ };
@@ -0,0 +1,9 @@
1
+ export interface Story {
2
+ /** kebab-case slug used as the filename, e.g. "no-shadow" */
3
+ slug: string;
4
+ /** JSDoc description extracted from the comment above the export */
5
+ description: string;
6
+ /** Rendered HTML content */
7
+ html: string;
8
+ }
9
+ export declare const buildStyles: () => Promise<void>;
@@ -0,0 +1,178 @@
1
+ import fs from 'node:fs/promises';
2
+ import { rmSync } from 'node:fs';
3
+ import { dirname, join } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import ora from 'ora';
6
+ import { createPath, stylesPath } from '../utilities/index.js';
7
+ /** Absolute path to the docs stories/styles directory */
8
+ const DOCS_STYLES_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../../docs/src/stories/styles');
9
+ /** Absolute path to the styles CSS modules directory */
10
+ const STYLES_MODULES_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../../styles/src/modules');
11
+ /**
12
+ * Extracts the `@summary` tag value from a CSS module file's JSDoc comment.
13
+ */
14
+ const extractCssSummary = async (cssPath) => {
15
+ try {
16
+ const raw = await fs.readFile(cssPath, 'utf-8');
17
+ const match = raw.match(/\*\s+@summary\s+(.+)/);
18
+ return match ? match[1].trim() : null;
19
+ }
20
+ catch {
21
+ return null;
22
+ }
23
+ };
24
+ const extractMdxContent = async (mdxPath) => {
25
+ try {
26
+ const raw = await fs.readFile(mdxPath, 'utf-8');
27
+ const match = raw.match(/export const content = `([\s\S]*?)`;/);
28
+ if (!match)
29
+ return { docs: null, relatedTemplates: [] };
30
+ const full = match[1]
31
+ .split('\n')
32
+ .filter(line => !line.trimStart().startsWith('<DefaultStory') && !line.trimStart().startsWith('<DocumentationLinks'))
33
+ .join('\n')
34
+ .trim();
35
+ const relTemplBlock = full.match(/####\s+Related Templates\n+([\s\S]*?)(?=\n####|\n###|$)/);
36
+ const relatedTemplates = [];
37
+ if (relTemplBlock) {
38
+ const linkMatches = [...relTemplBlock[1].matchAll(/\[(.*?)\]\(.\/\?path=\/docs\/templates-([\w-]+)/g)];
39
+ relatedTemplates.push(...linkMatches.map(m => m[2]));
40
+ }
41
+ let docs = full.replace(/####\s+Related (?:Components|Templates)\n+((?:.*\n)*?)(?=\n####|\n###|$)/g, '');
42
+ docs = docs.replace(/^\[.*?\]\(\.\/?path=.*?\)\n?/gm, '');
43
+ docs = docs.replace(/\nVisit <sd-link[\s\S]*$/, '');
44
+ docs = docs.trim();
45
+ return { docs: docs || null, relatedTemplates };
46
+ }
47
+ catch {
48
+ return { docs: null, relatedTemplates: [] };
49
+ }
50
+ };
51
+ /**
52
+ * Extracts the content of a lit-html template literal starting at `startIndex`
53
+ * (immediately after the opening backtick of `html\``).
54
+ */
55
+ const extractHtmlLiteral = (source, startIndex) => {
56
+ let i = startIndex;
57
+ let depth = 0;
58
+ while (i < source.length) {
59
+ const c = source[i];
60
+ if (depth === 0 && c === '`')
61
+ return source.slice(startIndex, i);
62
+ if (c === '$' && source[i + 1] === '{') {
63
+ depth++;
64
+ i += 2;
65
+ continue;
66
+ }
67
+ if (depth > 0) {
68
+ if (c === '{')
69
+ depth++;
70
+ else if (c === '}')
71
+ depth--;
72
+ }
73
+ i++;
74
+ }
75
+ return source.slice(startIndex);
76
+ };
77
+ const dedent = (str) => {
78
+ const lines = str.split('\n');
79
+ while (lines.length && !lines[0].trim())
80
+ lines.shift();
81
+ while (lines.length && !lines[lines.length - 1].trim())
82
+ lines.pop();
83
+ if (!lines.length)
84
+ return '';
85
+ const indent = Math.min(...lines.filter(l => l.trim()).map(l => l.match(/^(\s*)/)?.[1].length ?? 0));
86
+ return lines.map(l => l.slice(indent)).join('\n');
87
+ };
88
+ /** Converts PascalCase/camelCase to kebab-case. e.g. "NoShadow" → "no-shadow" */
89
+ const toKebab = (s) => s.replace(/([A-Z])/g, (_, c, i) => (i === 0 ? c.toLowerCase() : `-${c.toLowerCase()}`));
90
+ /**
91
+ * Extracts stories from a style .stories.ts file.
92
+ * Only stories with a JSDoc comment AND a direct html` literal are included.
93
+ * Default/generateTemplate stories are skipped.
94
+ */
95
+ const extractStories = async (storiesPath) => {
96
+ let source;
97
+ try {
98
+ source = await fs.readFile(storiesPath, 'utf-8');
99
+ }
100
+ catch {
101
+ return [];
102
+ }
103
+ const stories = [];
104
+ // Match: optional JSDoc, then `export const ExportName = {`
105
+ const pattern = /(\/\*\*([\s\S]*?)\*\/\s*)?^export const (\w+) = \{/gm;
106
+ let match;
107
+ while ((match = pattern.exec(source)) !== null) {
108
+ const exportName = match[3];
109
+ if (exportName === 'default')
110
+ continue;
111
+ const jsdocRaw = match[2] ?? '';
112
+ // Clean up JSDoc: remove leading " * " on each line
113
+ const description = jsdocRaw
114
+ .split('\n')
115
+ .map(l => l.replace(/^\s*\*\s?/, '').trim())
116
+ .filter(Boolean)
117
+ .join('\n')
118
+ .trim();
119
+ // Find `html`` directly inside the render function (not inside generateTemplate)
120
+ const blockStart = match.index + match[0].length;
121
+ const blockSlice = source.slice(blockStart);
122
+ // Skip if this story uses generateTemplate
123
+ const nextExportIdx = blockSlice.search(/\nexport const /);
124
+ const block = nextExportIdx === -1 ? blockSlice : blockSlice.slice(0, nextExportIdx);
125
+ if (block.includes('generateTemplate('))
126
+ continue;
127
+ const htmlIdx = block.indexOf('html`');
128
+ if (htmlIdx === -1)
129
+ continue;
130
+ const rawHtml = extractHtmlLiteral(block, htmlIdx + 5);
131
+ const html = dedent(rawHtml);
132
+ if (!html)
133
+ continue;
134
+ stories.push({ slug: toKebab(exportName), description, html });
135
+ }
136
+ return stories;
137
+ };
138
+ export const buildStyles = async () => {
139
+ const spinner = ora();
140
+ try {
141
+ spinner.start('Generating styles metadata...');
142
+ // Remove existing metadata
143
+ rmSync(stylesPath, { recursive: true, force: true });
144
+ await createPath(stylesPath);
145
+ // List all .mdx files in the styles docs directory to get style names
146
+ const docsDir = await fs.readdir(DOCS_STYLES_DIR);
147
+ const styleNames = new Set();
148
+ for (const file of docsDir) {
149
+ if (file.endsWith('.mdx')) {
150
+ // Extract style name from filename: "display.mdx" → "display"
151
+ const name = file.replace('.mdx', '');
152
+ styleNames.add(name);
153
+ }
154
+ }
155
+ spinner.text = 'Generating styles metadata...';
156
+ await Promise.all(Array.from(styleNames).map(async (name) => {
157
+ const [{ docs, relatedTemplates }, stories, summary] = await Promise.all([
158
+ extractMdxContent(join(DOCS_STYLES_DIR, `${name}.mdx`)),
159
+ extractStories(join(DOCS_STYLES_DIR, `${name}.stories.ts`)),
160
+ extractCssSummary(join(STYLES_MODULES_DIR, `${name}.css`))
161
+ ]);
162
+ // Store intermediate JSON — buildTemplates will finalise into info.md + story files
163
+ const intermediate = {
164
+ summary,
165
+ docs,
166
+ relatedTemplates,
167
+ stories,
168
+ classNames: [] // Placeholder; CSS class extraction can be added later
169
+ };
170
+ await fs.writeFile(join(stylesPath, `sd-${name}.json`), JSON.stringify(intermediate));
171
+ }));
172
+ spinner.succeed('Styles metadata generated successfully.');
173
+ }
174
+ catch (error) {
175
+ spinner.fail(`Failed to generate styles metadata. Error: ${error}`);
176
+ throw error;
177
+ }
178
+ };
@@ -0,0 +1 @@
1
+ export declare const buildTemplates: () => Promise<void>;