@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,239 @@
1
+ import fs from 'node:fs/promises';
2
+ import { mkdirSync, rmSync } from 'node:fs';
3
+ import { dirname, join, basename } from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import ora from 'ora';
6
+ import { componentPath, createPath, templatesPackagePath, stylesPath } from '../utilities/index.js';
7
+ /** Absolute path to the docs stories/templates directory */
8
+ const DOCS_TEMPLATES_DIR = join(dirname(fileURLToPath(import.meta.url)), '../../../docs/src/stories/templates');
9
+ const extractComponents = (source) => {
10
+ const matches = [...source.matchAll(/\bsd-[\w-]+/g)].map(m => m[0]);
11
+ return [...new Set(matches)].sort();
12
+ };
13
+ const extractTemplateLiteralContent = (source, startIndex) => {
14
+ let i = startIndex;
15
+ let depth = 0;
16
+ while (i < source.length) {
17
+ const c = source[i];
18
+ if (depth === 0 && c === '`')
19
+ return source.slice(startIndex, i);
20
+ if (c === '$' && source[i + 1] === '{') {
21
+ depth++;
22
+ i += 2;
23
+ continue;
24
+ }
25
+ if (depth > 0) {
26
+ if (c === '{')
27
+ depth++;
28
+ else if (c === '}')
29
+ depth--;
30
+ }
31
+ i++;
32
+ }
33
+ return source.slice(startIndex);
34
+ };
35
+ const dedent = (str) => {
36
+ const lines = str.split('\n');
37
+ while (lines.length && !lines[0].trim())
38
+ lines.shift();
39
+ while (lines.length && !lines[lines.length - 1].trim())
40
+ lines.pop();
41
+ if (!lines.length)
42
+ return '';
43
+ const indent = Math.min(...lines.filter(l => l.trim()).map(l => l.match(/^(\s*)/)?.[1].length ?? 0));
44
+ return lines.map(l => l.slice(indent)).join('\n');
45
+ };
46
+ const exportNameToTitle = (name) => name.replace(/([A-Z])/g, ' $1').trim();
47
+ const extractDefaultTitle = (source) => {
48
+ const match = source.match(/title:\s*['"]Templates\/([^'"]+)['"]/);
49
+ return match ? match[1] : null;
50
+ };
51
+ const extractExamples = (source) => {
52
+ const examples = [];
53
+ const exportPattern = /^export const (\w+) = \{/gm;
54
+ let match;
55
+ while ((match = exportPattern.exec(source)) !== null) {
56
+ const exportName = match[1];
57
+ const blockStart = match.index + match[0].length;
58
+ const nameMatch = source.slice(blockStart, blockStart + 500).match(/name:\s*['"]([^'"]+)['"]/);
59
+ const exampleName = nameMatch ? nameMatch[1] : exportNameToTitle(exportName);
60
+ const blockSlice = source.slice(blockStart);
61
+ const htmlIdx = blockSlice.indexOf('html`');
62
+ if (htmlIdx === -1)
63
+ continue;
64
+ const rawHtml = extractTemplateLiteralContent(source, blockStart + htmlIdx + 5);
65
+ const html = dedent(rawHtml);
66
+ if (!html)
67
+ continue;
68
+ examples.push({ name: exampleName, html });
69
+ }
70
+ return examples;
71
+ };
72
+ const extractSection = (docs, heading) => {
73
+ const re = new RegExp(`###\\s+${heading}\\n+([\\s\\S]*?)(?=\\n+###(?!#)|$)`, 'i');
74
+ const m = docs.match(re);
75
+ return m ? m[1].trim() : '';
76
+ };
77
+ const promoteSubheadings = (block) => block.replace(/^####\s+/gm, '### ');
78
+ export const buildTemplates = async () => {
79
+ const spinner = ora({ prefixText: 'Templates:', text: 'Generating static metadata...' }).start();
80
+ try {
81
+ spinner.text = 'Cleaning up old metadata...';
82
+ rmSync(templatesPackagePath, { recursive: true, force: true });
83
+ spinner.succeed('Old metadata cleaned up.');
84
+ await createPath(templatesPackagePath);
85
+ spinner.text = 'Generating templates metadata...';
86
+ const storyFiles = (await fs.readdir(DOCS_TEMPLATES_DIR)).filter(f => f.endsWith('.stories.ts'));
87
+ await Promise.all(storyFiles.map(async (file) => {
88
+ const name = basename(file, '.stories.ts');
89
+ const source = await fs.readFile(join(DOCS_TEMPLATES_DIR, file), 'utf-8');
90
+ const components = extractComponents(source);
91
+ const examples = extractExamples(source);
92
+ const title = extractDefaultTitle(source) ?? name;
93
+ const frontmatter = [
94
+ '---',
95
+ `name: ${name}`,
96
+ `title: ${title}`,
97
+ 'components:',
98
+ ...components.map(c => ` - ${c}`),
99
+ 'version: 1.0.0',
100
+ '---'
101
+ ].join('\n');
102
+ const content = [
103
+ frontmatter,
104
+ ...examples.map(example => `## Template: ${example.name}\n\n\`\`\`html\n${example.html}\n\`\`\``)
105
+ ].join('\n\n');
106
+ await fs.writeFile(join(templatesPackagePath, `${name}.md`), content);
107
+ }));
108
+ spinner.succeed('Templates metadata generated successfully.');
109
+ spinner.text = 'Finalising component metadata into subdirectories...';
110
+ const compFiles = (await fs.readdir(componentPath)).filter(f => f.endsWith('.json'));
111
+ // Write final metadata
112
+ await Promise.all(compFiles.map(async (file) => {
113
+ const tagName = basename(file, '.json');
114
+ const raw = await fs.readFile(join(componentPath, file), 'utf-8').catch(() => null);
115
+ if (!raw)
116
+ return;
117
+ const { api, docs, stories: examples } = JSON.parse(raw);
118
+ const exampleSlugList = examples.map(example => example.slug);
119
+ // Create component subdirectory and stories subfolder
120
+ const compDir = join(componentPath, tagName);
121
+ const storiesDir = join(compDir, 'stories');
122
+ mkdirSync(storiesDir, { recursive: true });
123
+ // Write per-story files into stories/ subfolder
124
+ await Promise.all(examples.map(example => {
125
+ const lines = [];
126
+ if (example.description)
127
+ lines.push(example.description, '');
128
+ lines.push('```html', example.html, '```');
129
+ return fs.writeFile(join(storiesDir, `${example.slug}.md`), lines.join('\n'));
130
+ }));
131
+ // CSS parts — names only, no descriptions
132
+ const partNames = api.parts
133
+ ? api.parts
134
+ .split('\n')
135
+ .map(line => line.replace(/^part\.([\w-]+):.*/, 'part.$1'))
136
+ .filter(Boolean)
137
+ : [];
138
+ // Build info.md sections
139
+ const sections = [];
140
+ // Overview
141
+ sections.push(`## Overview\n\n\`<${tagName}>\` — ${api.summary}`);
142
+ // API section with sub-headings
143
+ const apiSubSections = [];
144
+ if (exampleSlugList.length) {
145
+ apiSubSections.push(`### Examples\n\nUse the components tool by passing the args \`component\` and \`example\` for any of these combinations:\n\n${exampleSlugList.map(example => `- component: ${tagName}, example: ${example}`).join('\n')}`);
146
+ }
147
+ if (api.props)
148
+ apiSubSections.push(`### Key Properties\n\n${api.props}`);
149
+ if (api.events)
150
+ apiSubSections.push(`### Events\n\n${api.events}`);
151
+ if (api.slots)
152
+ apiSubSections.push(`### Slots\n\n${api.slots}`);
153
+ if (partNames.length)
154
+ apiSubSections.push(`### CSS Parts\n\n${partNames.join('\n')}`);
155
+ if (apiSubSections.length)
156
+ sections.push(`## API\n\n${apiSubSections.join('\n\n')}`);
157
+ // Guidelines section
158
+ if (docs) {
159
+ const guideSubSections = [];
160
+ const useCases = extractSection(docs, 'Common Use Cases');
161
+ if (useCases)
162
+ guideSubSections.push(`### Use Cases\n\n${useCases}`);
163
+ const guidelines = extractSection(docs, 'Usage Guidelines');
164
+ if (guidelines)
165
+ guideSubSections.push(`### Rules\n\n${promoteSubheadings(guidelines)}`);
166
+ const accessibility = extractSection(docs, 'Accessibility Information');
167
+ if (accessibility)
168
+ guideSubSections.push(`### Accessibility\n\n${accessibility}`);
169
+ if (guideSubSections.length)
170
+ sections.push(`## Guidelines\n\n${guideSubSections.join('\n\n')}`);
171
+ }
172
+ await fs.writeFile(join(compDir, 'info.md'), sections.join('\n\n'));
173
+ // Remove intermediate JSON
174
+ await fs.unlink(join(componentPath, file)).catch(() => null);
175
+ }));
176
+ spinner.succeed('Component subdirectories finalised.');
177
+ // Finalize styles metadata: convert intermediate JSON to subdirectories with info.md + stories/
178
+ spinner.text = 'Finalising style metadata into subdirectories...';
179
+ const styleFiles = (await fs.readdir(stylesPath)).filter(f => f.endsWith('.json'));
180
+ await Promise.all(styleFiles.map(async (file) => {
181
+ const styleName = basename(file, '.json');
182
+ const raw = await fs.readFile(join(stylesPath, file), 'utf-8').catch(() => null);
183
+ if (!raw)
184
+ return;
185
+ const { summary, docs, relatedTemplates, stories: examples } = JSON.parse(raw);
186
+ const exampleSlugList = examples.map(example => example.slug);
187
+ // Create style subdirectory and stories subfolder
188
+ const styleDir = join(stylesPath, styleName);
189
+ const storiesDir = join(styleDir, 'stories');
190
+ mkdirSync(storiesDir, { recursive: true });
191
+ // Write per-story files into stories/ subfolder
192
+ await Promise.all(examples.map(example => {
193
+ const lines = [];
194
+ if (example.description)
195
+ lines.push(example.description, '');
196
+ lines.push('```html', example.html, '```');
197
+ return fs.writeFile(join(storiesDir, `${example.slug}.md`), lines.join('\n'));
198
+ }));
199
+ // Build info.md sections
200
+ const sections = [];
201
+ // Overview
202
+ sections.push(`## Overview\n\n\`${styleName}\`${summary ? ` – ${summary}` : ' style utility'}`);
203
+ // API section with sub-headings
204
+ const apiSubSections = [];
205
+ if (exampleSlugList.length) {
206
+ apiSubSections.push(`### Examples\n\nUse the styles tool (with \`style\` + \`example\` args) to retrieve the HTML for any of these examples:\n\n${exampleSlugList.map(example => `- ${styleName}/${example}`).join('\n')}`);
207
+ }
208
+ if (apiSubSections.length)
209
+ sections.push(`## API\n\n${apiSubSections.join('\n\n')}`);
210
+ // Guidelines section
211
+ if (docs) {
212
+ const guideSubSections = [];
213
+ const useCases = extractSection(docs, 'Common Use Cases');
214
+ if (useCases)
215
+ guideSubSections.push(`### Use Cases\n\n${useCases}`);
216
+ const guidelines = extractSection(docs, 'Usage Guidelines');
217
+ if (guidelines)
218
+ guideSubSections.push(`### Rules\n\n${promoteSubheadings(guidelines)}`);
219
+ const accessibility = extractSection(docs, 'Accessibility Information');
220
+ if (accessibility)
221
+ guideSubSections.push(`### Accessibility\n\n${accessibility}`);
222
+ if (guideSubSections.length)
223
+ sections.push(`## Guidelines\n\n${guideSubSections.join('\n\n')}`);
224
+ }
225
+ // Related Templates
226
+ if (relatedTemplates.length) {
227
+ sections.push(`### Related Templates\n\n${relatedTemplates.map(t => `- ${t}`).join('\n')}\n\nUse the templates tool (with \`template\` arg) to retrieve the full code for any of these templates.`);
228
+ }
229
+ await fs.writeFile(join(styleDir, 'info.md'), sections.join('\n\n'));
230
+ // Remove intermediate JSON
231
+ await fs.unlink(join(stylesPath, file)).catch(() => null);
232
+ }));
233
+ spinner.succeed('Style subdirectories finalised.');
234
+ }
235
+ catch (error) {
236
+ spinner.fail(`Failed to generate templates metadata. Error: ${error}`);
237
+ throw error;
238
+ }
239
+ };
@@ -0,0 +1,4 @@
1
+ /**
2
+ * Sets up all wanted data from the tokens package and adds it to the static metadata.
3
+ */
4
+ export declare const buildTokens: () => Promise<void>;
@@ -0,0 +1,105 @@
1
+ import fs from 'node:fs/promises';
2
+ import { rmSync } from 'node:fs';
3
+ import { fileURLToPath } from 'url';
4
+ import path from 'path';
5
+ import { globby } from 'globby';
6
+ import ora from 'ora';
7
+ import { createPath, tokensPath } from '../utilities/index.js';
8
+ /**
9
+ * Minimal list of token metadata files to copy.
10
+ * Keep only essential docs; token/theme indexes are generated as compact JSON.
11
+ */
12
+ const filesToCopy = [];
13
+ const extractTokenNamesFromTailwind = (content) => {
14
+ const themeMatch = content.match(/@theme\s+inline\s*\{([\s\S]*?)\n\}/);
15
+ if (!themeMatch)
16
+ return [];
17
+ const themeBlock = themeMatch[1];
18
+ const propertyNames = [];
19
+ const propRegex = /^\s*(--[\w\\/.-]+)\s*:/gm;
20
+ let match;
21
+ while ((match = propRegex.exec(themeBlock)) !== null) {
22
+ propertyNames.push(match[1]);
23
+ }
24
+ return propertyNames;
25
+ };
26
+ const getAvailableThemes = async (moduleDir) => {
27
+ const candidates = ['dist/themes', 'themes'];
28
+ for (const relPath of candidates) {
29
+ const absPath = path.join(moduleDir, relPath);
30
+ try {
31
+ const entries = await fs.readdir(absPath, { withFileTypes: true });
32
+ const themes = entries
33
+ .filter(entry => entry.isDirectory())
34
+ .map(entry => entry.name)
35
+ .sort();
36
+ if (themes.length)
37
+ return themes;
38
+ }
39
+ catch {
40
+ // Try next candidate path.
41
+ }
42
+ }
43
+ return [];
44
+ };
45
+ const readTailwindThemeFile = async (moduleDir) => {
46
+ const candidates = ['dist/themes/tailwind.css', 'themes/tailwind.css', 'dist/tailwind.css', 'tailwind.css'];
47
+ for (const relPath of candidates) {
48
+ try {
49
+ return await fs.readFile(path.join(moduleDir, relPath), 'utf-8');
50
+ }
51
+ catch {
52
+ // Try next candidate path.
53
+ }
54
+ }
55
+ throw new Error(`Could not find tailwind.css in tokens package. Checked: ${candidates.map(candidate => `'${candidate}'`).join(', ')}`);
56
+ };
57
+ /**
58
+ * Sets up all wanted data from the tokens package and adds it to the static metadata.
59
+ */
60
+ export const buildTokens = async () => {
61
+ const spinner = ora({
62
+ prefixText: 'Tokens:',
63
+ text: 'Generating static metadata...'
64
+ }).start();
65
+ try {
66
+ spinner.text = 'Cleaning up old metadata...';
67
+ rmSync(tokensPath, { recursive: true, force: true });
68
+ spinner.succeed('Old metadata cleaned up.');
69
+ spinner.text = 'Creating new metadata directory...';
70
+ // Create the tokens directory if it doesn't exist
71
+ await createPath(tokensPath);
72
+ spinner.succeed('New metadata directory created.');
73
+ spinner.text = 'Copying files to metadata directory...';
74
+ // Get the module's root directory
75
+ // Use dist/theme.js as the resolve anchor (it's a valid export of the package).
76
+ // dirname gives us dist/, so one '../' reaches the package root.
77
+ const moduleUrl = import.meta.resolve('@solid-design-system/tokens/dist/theme.js');
78
+ const modulePath = fileURLToPath(moduleUrl);
79
+ const moduleDir = path.join(path.dirname(modulePath), '../');
80
+ // Process the files (placeholder for actual logic)
81
+ const contents = await globby(filesToCopy, {
82
+ cwd: moduleDir,
83
+ onlyFiles: true
84
+ });
85
+ // Write files sequentially because multiple theme files share the same basename
86
+ // (e.g. `icons.css`), and parallel copy operations can corrupt output.
87
+ for (const file of contents) {
88
+ const sourcePath = path.join(moduleDir, file);
89
+ const destPath = path.join(tokensPath, path.basename(file));
90
+ await fs.copyFile(sourcePath, destPath);
91
+ }
92
+ // Persist a compact token index instead of shipping full Tailwind metadata file.
93
+ const tailwindContent = await readTailwindThemeFile(moduleDir);
94
+ const tokens = extractTokenNamesFromTailwind(tailwindContent);
95
+ await fs.writeFile(path.join(tokensPath, 'tokens.json'), JSON.stringify({ tokens }, null, 2));
96
+ // Persist an explicit list of available themes without copying every theme CSS file.
97
+ const themes = await getAvailableThemes(moduleDir);
98
+ await fs.writeFile(path.join(tokensPath, 'themes.json'), JSON.stringify({ themes }, null, 2));
99
+ spinner.succeed('Tokens metadata generated successfully.');
100
+ }
101
+ catch (error) {
102
+ spinner.fail(`Failed to generate tokens metadata. Error: ${error}`);
103
+ throw error; // Re-throw to handle it in the calling function
104
+ }
105
+ };
@@ -0,0 +1,6 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Creates a new instance of the MCP server configured for the Solid Design System.
4
+ * @returns A new instance of the MCP server configured for the Solid Design System.
5
+ */
6
+ export declare const createServer: () => McpServer;
package/dist/server.js ADDED
@@ -0,0 +1,20 @@
1
+ import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ import * as tools from './tools/index.js';
3
+ import { getVersion } from './utilities/version.js';
4
+ /**
5
+ * Creates a new instance of the MCP server configured for the Solid Design System.
6
+ * @returns A new instance of the MCP server configured for the Solid Design System.
7
+ */
8
+ export const createServer = () => {
9
+ const version = getVersion();
10
+ const server = new McpServer({
11
+ description: 'A server for the Solid Design System that provides tools to interact with components and resources.',
12
+ name: 'solid design system',
13
+ title: 'Solid Design System MCP Server',
14
+ version
15
+ });
16
+ Object.values(tools).forEach(tool => {
17
+ tool(server);
18
+ });
19
+ return server;
20
+ };
@@ -0,0 +1,12 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Tool: components
4
+ *
5
+ * Unified entry point for everything component-related.
6
+ *
7
+ * - No args → list all sd-* components + list all package docs topics
8
+ * - `component` only → full spec (usage guidelines + API)
9
+ * - `component` + `example` → HTML example for that example
10
+ * - `doc` → package-level guide (Installation, Localization, Customization, …)
11
+ */
12
+ export declare const componentsTool: (server: McpServer) => void;
@@ -0,0 +1,175 @@
1
+ import fs from 'node:fs/promises';
2
+ import { join, basename, extname } from 'node:path';
3
+ import { z } from 'zod';
4
+ import { componentPath, componentPackageDocsPath, getAvailableComponents } from '../utilities/index.js';
5
+ import { normalizeSafeSlug } from '../utilities/input.js';
6
+ const readIfExists = async (filePath) => {
7
+ try {
8
+ return await fs.readFile(filePath, 'utf-8');
9
+ }
10
+ catch {
11
+ return null;
12
+ }
13
+ };
14
+ /** Lists all package-level doc slugs (e.g. "installation", "localization"). */
15
+ const getAvailablePackageDocs = async () => {
16
+ try {
17
+ const entries = await fs.readdir(componentPackageDocsPath, { withFileTypes: true });
18
+ return entries
19
+ .filter(d => d.isFile() && extname(d.name) === '.md')
20
+ .map(d => basename(d.name, '.md'))
21
+ .sort();
22
+ }
23
+ catch {
24
+ return [];
25
+ }
26
+ };
27
+ /**
28
+ * Tool: components
29
+ *
30
+ * Unified entry point for everything component-related.
31
+ *
32
+ * - No args → list all sd-* components + list all package docs topics
33
+ * - `component` only → full spec (usage guidelines + API)
34
+ * - `component` + `example` → HTML example for that example
35
+ * - `doc` → package-level guide (Installation, Localization, Customization, …)
36
+ */
37
+ export const componentsTool = (server) => {
38
+ server.registerTool('components', {
39
+ description: `Solid Design System components.
40
+ - Call without arguments to list all sd-* components and available package docs.
41
+ - Pass \`component\` (e.g. "sd-button" or "button") to get the full component specification, including API, events, slots, examples, and guidelines.
42
+ - Pass \`component\` + \`example\` (e.g. component="sd-button", example="inverted") to get one HTML usage example.
43
+ - Pass \`doc\` (e.g. "localization") to get a package-level guide.
44
+ - Do not combine \`doc\` with \`component\` or \`example\`.`,
45
+ inputSchema: {
46
+ component: z
47
+ .string()
48
+ .optional()
49
+ .describe('Component tag name (e.g. "sd-button" or "button"). Omit to see the full list.'),
50
+ example: z
51
+ .string()
52
+ .optional()
53
+ .describe('Slug for an HTML usage example (e.g. "inverted" or "no-shadow"). ' +
54
+ 'Requires `component`. Use component alone first to see available example slugs.'),
55
+ doc: z
56
+ .string()
57
+ .optional()
58
+ .describe('Package-level guide slug (e.g. "localization", "installation", "customization"). ' +
59
+ 'Omit to see all available topics.')
60
+ },
61
+ title: 'Components'
62
+ }, async ({ component, example, doc }) => {
63
+ // Validate if doc is combined with component/example - not allowed
64
+ if (doc && (component || example)) {
65
+ return {
66
+ content: [
67
+ {
68
+ type: 'text',
69
+ text: 'Invalid arguments: `doc` cannot be combined with `component` or `example`. Use either `doc` alone or a component query.'
70
+ }
71
+ ]
72
+ };
73
+ }
74
+ // Validate if `example` is provided without `component` - not allowed
75
+ if (example && !component) {
76
+ return {
77
+ content: [
78
+ {
79
+ type: 'text',
80
+ text: 'Invalid arguments: `example` requires `component`. Use both together, e.g. component="sd-button", example="inverted".'
81
+ }
82
+ ]
83
+ };
84
+ }
85
+ // --- package-level doc ---
86
+ if (doc) {
87
+ const safeDoc = normalizeSafeSlug(doc);
88
+ if (!safeDoc) {
89
+ return {
90
+ content: [
91
+ { type: 'text', text: 'Invalid arguments: `doc` contains an invalid path. Use a listed doc slug.' }
92
+ ]
93
+ };
94
+ }
95
+ const content = await readIfExists(join(componentPackageDocsPath, `${safeDoc}.md`));
96
+ if (!content) {
97
+ const available = await getAvailablePackageDocs();
98
+ return {
99
+ content: [
100
+ {
101
+ type: 'text',
102
+ text: `No package doc found for "${safeDoc}". Available docs:\n` + available.map(d => `- ${d}`).join('\n')
103
+ }
104
+ ]
105
+ };
106
+ }
107
+ return { content: [{ type: 'text', text: content }] };
108
+ }
109
+ // --- specific component example (HTML example) ---
110
+ if (component && example) {
111
+ component = component.trim().toLowerCase();
112
+ component = component.startsWith('sd-') ? component : `sd-${component}`;
113
+ const safeExample = normalizeSafeSlug(example);
114
+ if (!safeExample) {
115
+ return {
116
+ content: [
117
+ {
118
+ type: 'text',
119
+ text: 'Invalid arguments: `example` contains an invalid path. Use a listed example slug.'
120
+ }
121
+ ]
122
+ };
123
+ }
124
+ const exampleMd = await readIfExists(join(componentPath, component, 'stories', `${safeExample}.md`));
125
+ if (!exampleMd) {
126
+ return {
127
+ content: [
128
+ {
129
+ type: 'text',
130
+ text: `No example "${safeExample}" found for "${component}". Use \`component\` alone to see available examples.`
131
+ }
132
+ ]
133
+ };
134
+ }
135
+ return { content: [{ type: 'text', text: exampleMd }] };
136
+ }
137
+ // --- specific component spec ---
138
+ if (component) {
139
+ component = component.trim().toLowerCase();
140
+ component = component.startsWith('sd-') ? component : `sd-${component}`;
141
+ const infoMd = await readIfExists(join(componentPath, component, 'info.md'));
142
+ if (!infoMd) {
143
+ return {
144
+ content: [
145
+ {
146
+ type: 'text',
147
+ text: `No metadata found for "${component}". Call \`components\` without arguments to see all available components.`
148
+ }
149
+ ]
150
+ };
151
+ }
152
+ const text = '> IMPORTANT: Only use properties, events and slots listed in the API below.\n' +
153
+ '> Never invent attributes not present in this specification.\n\n' +
154
+ infoMd;
155
+ return { content: [{ type: 'text', text }] };
156
+ }
157
+ // --- no args: index ---
158
+ const [components, packageDocs] = await Promise.all([getAvailableComponents(), getAvailablePackageDocs()]);
159
+ const text = [
160
+ '## Solid Design System Components',
161
+ '',
162
+ 'These are the ONLY valid sd-* components — never invent components not in this list.',
163
+ 'Use `component` to get the full spec for any specific component.',
164
+ '',
165
+ components.map(c => (c.description ? `- ${c.name} – ${c.description}` : `- ${c.name}`)).join('\n'),
166
+ '',
167
+ '## Package Docs',
168
+ '',
169
+ 'Use `doc` to retrieve any of the following guides:',
170
+ '',
171
+ packageDocs.map(d => `- ${d}`).join('\n')
172
+ ].join('\n');
173
+ return { content: [{ type: 'text', text }] };
174
+ });
175
+ };
@@ -0,0 +1,7 @@
1
+ import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
2
+ /**
3
+ * Tool: icon-search
4
+ * Searches the Solid Design System icon library by multiple keywords (EN + DE).
5
+ * Deduplicates and ranks results across all keywords so the LLM can pick the best fit.
6
+ */
7
+ export declare const iconSearchTool: (server: McpServer) => void;