@central-design-system/skills 4.0.0-alpha.6

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 (321) hide show
  1. package/.claude-plugin/plugin.json +6 -0
  2. package/README.md +218 -0
  3. package/bin/cds-skills.mjs +124 -0
  4. package/package.json +33 -0
  5. package/skills/cds-builder/GENERATION.md +44 -0
  6. package/skills/cds-builder/SKILL.md +308 -0
  7. package/skills/cds-builder/references/component-decision-tree.md +310 -0
  8. package/skills/cds-builder/references/components/cds-app/api.md +19 -0
  9. package/skills/cds-builder/references/components/cds-app/tokens.md +12 -0
  10. package/skills/cds-builder/references/components/cds-autocomplete/api.md +155 -0
  11. package/skills/cds-builder/references/components/cds-autocomplete/examples.md +447 -0
  12. package/skills/cds-builder/references/components/cds-autocomplete/guidelines.md +10 -0
  13. package/skills/cds-builder/references/components/cds-autocomplete/tokens.md +19 -0
  14. package/skills/cds-builder/references/components/cds-avatar/api.md +35 -0
  15. package/skills/cds-builder/references/components/cds-avatar/examples.md +240 -0
  16. package/skills/cds-builder/references/components/cds-avatar/guidelines.md +10 -0
  17. package/skills/cds-builder/references/components/cds-avatar/tokens.md +32 -0
  18. package/skills/cds-builder/references/components/cds-badge/api.md +44 -0
  19. package/skills/cds-builder/references/components/cds-badge/examples.md +332 -0
  20. package/skills/cds-builder/references/components/cds-badge/guidelines.md +10 -0
  21. package/skills/cds-builder/references/components/cds-badge/tokens.md +32 -0
  22. package/skills/cds-builder/references/components/cds-breadcrumbs/api.md +83 -0
  23. package/skills/cds-builder/references/components/cds-breadcrumbs/examples.md +219 -0
  24. package/skills/cds-builder/references/components/cds-breadcrumbs/guidelines.md +10 -0
  25. package/skills/cds-builder/references/components/cds-breadcrumbs/tokens.md +24 -0
  26. package/skills/cds-builder/references/components/cds-button/api.md +66 -0
  27. package/skills/cds-builder/references/components/cds-button/examples.md +324 -0
  28. package/skills/cds-builder/references/components/cds-button/guidelines.md +10 -0
  29. package/skills/cds-builder/references/components/cds-button/tokens.md +190 -0
  30. package/skills/cds-builder/references/components/cds-button-group/api.md +27 -0
  31. package/skills/cds-builder/references/components/cds-button-group/examples.md +33 -0
  32. package/skills/cds-builder/references/components/cds-button-group/tokens.md +17 -0
  33. package/skills/cds-builder/references/components/cds-button-toggle/api.md +51 -0
  34. package/skills/cds-builder/references/components/cds-button-toggle/examples.md +278 -0
  35. package/skills/cds-builder/references/components/cds-button-toggle/guidelines.md +10 -0
  36. package/skills/cds-builder/references/components/cds-button-toggle/tokens.md +13 -0
  37. package/skills/cds-builder/references/components/cds-card/api.md +221 -0
  38. package/skills/cds-builder/references/components/cds-card/examples.md +652 -0
  39. package/skills/cds-builder/references/components/cds-card/guidelines.md +10 -0
  40. package/skills/cds-builder/references/components/cds-card/tokens.md +46 -0
  41. package/skills/cds-builder/references/components/cds-carousel/api.md +107 -0
  42. package/skills/cds-builder/references/components/cds-carousel/examples.md +444 -0
  43. package/skills/cds-builder/references/components/cds-carousel/guidelines.md +10 -0
  44. package/skills/cds-builder/references/components/cds-carousel/tokens.md +17 -0
  45. package/skills/cds-builder/references/components/cds-checkbox/api.md +93 -0
  46. package/skills/cds-builder/references/components/cds-checkbox/examples.md +319 -0
  47. package/skills/cds-builder/references/components/cds-checkbox/guidelines.md +10 -0
  48. package/skills/cds-builder/references/components/cds-checkbox/tokens.md +18 -0
  49. package/skills/cds-builder/references/components/cds-checkbox-button/api.md +56 -0
  50. package/skills/cds-builder/references/components/cds-checkbox-button/examples.md +29 -0
  51. package/skills/cds-builder/references/components/cds-checkbox-button/tokens.md +56 -0
  52. package/skills/cds-builder/references/components/cds-combobox/api.md +158 -0
  53. package/skills/cds-builder/references/components/cds-combobox/examples.md +264 -0
  54. package/skills/cds-builder/references/components/cds-combobox/guidelines.md +10 -0
  55. package/skills/cds-builder/references/components/cds-combobox/tokens.md +19 -0
  56. package/skills/cds-builder/references/components/cds-counter/api.md +24 -0
  57. package/skills/cds-builder/references/components/cds-counter/examples.md +93 -0
  58. package/skills/cds-builder/references/components/cds-counter/tokens.md +11 -0
  59. package/skills/cds-builder/references/components/cds-date-input/api.md +151 -0
  60. package/skills/cds-builder/references/components/cds-date-input/examples.md +479 -0
  61. package/skills/cds-builder/references/components/cds-date-input/guidelines.md +10 -0
  62. package/skills/cds-builder/references/components/cds-date-input/tokens.md +16 -0
  63. package/skills/cds-builder/references/components/cds-date-picker/api.md +63 -0
  64. package/skills/cds-builder/references/components/cds-date-picker/examples.md +394 -0
  65. package/skills/cds-builder/references/components/cds-date-picker/guidelines.md +10 -0
  66. package/skills/cds-builder/references/components/cds-date-picker/tokens.md +66 -0
  67. package/skills/cds-builder/references/components/cds-defaults-provider/api.md +21 -0
  68. package/skills/cds-builder/references/components/cds-description/api.md +22 -0
  69. package/skills/cds-builder/references/components/cds-description/examples.md +69 -0
  70. package/skills/cds-builder/references/components/cds-description/tokens.md +11 -0
  71. package/skills/cds-builder/references/components/cds-divider/api.md +29 -0
  72. package/skills/cds-builder/references/components/cds-divider/examples.md +374 -0
  73. package/skills/cds-builder/references/components/cds-divider/guidelines.md +10 -0
  74. package/skills/cds-builder/references/components/cds-divider/tokens.md +38 -0
  75. package/skills/cds-builder/references/components/cds-drawer/api.md +53 -0
  76. package/skills/cds-builder/references/components/cds-drawer/examples.md +432 -0
  77. package/skills/cds-builder/references/components/cds-drawer/guidelines.md +9 -0
  78. package/skills/cds-builder/references/components/cds-drawer/tokens.md +27 -0
  79. package/skills/cds-builder/references/components/cds-empty-state/api.md +55 -0
  80. package/skills/cds-builder/references/components/cds-empty-state/examples.md +330 -0
  81. package/skills/cds-builder/references/components/cds-empty-state/guidelines.md +9 -0
  82. package/skills/cds-builder/references/components/cds-empty-state/tokens.md +25 -0
  83. package/skills/cds-builder/references/components/cds-expandable-panel/api.md +157 -0
  84. package/skills/cds-builder/references/components/cds-expandable-panel/examples.md +569 -0
  85. package/skills/cds-builder/references/components/cds-expandable-panel/guidelines.md +10 -0
  86. package/skills/cds-builder/references/components/cds-expandable-panel/tokens.md +34 -0
  87. package/skills/cds-builder/references/components/cds-field/api.md +62 -0
  88. package/skills/cds-builder/references/components/cds-field/examples.md +202 -0
  89. package/skills/cds-builder/references/components/cds-field/tokens.md +94 -0
  90. package/skills/cds-builder/references/components/cds-file-input/api.md +109 -0
  91. package/skills/cds-builder/references/components/cds-file-input/examples.md +368 -0
  92. package/skills/cds-builder/references/components/cds-file-input/guidelines.md +10 -0
  93. package/skills/cds-builder/references/components/cds-file-input/tokens.md +15 -0
  94. package/skills/cds-builder/references/components/cds-file-upload/api.md +296 -0
  95. package/skills/cds-builder/references/components/cds-file-upload/examples.md +411 -0
  96. package/skills/cds-builder/references/components/cds-file-upload/guidelines.md +10 -0
  97. package/skills/cds-builder/references/components/cds-file-upload/tokens.md +50 -0
  98. package/skills/cds-builder/references/components/cds-footer/api.md +35 -0
  99. package/skills/cds-builder/references/components/cds-footer/examples.md +219 -0
  100. package/skills/cds-builder/references/components/cds-footer/guidelines.md +9 -0
  101. package/skills/cds-builder/references/components/cds-footer/tokens.md +14 -0
  102. package/skills/cds-builder/references/components/cds-form/api.md +48 -0
  103. package/skills/cds-builder/references/components/cds-form/examples.md +552 -0
  104. package/skills/cds-builder/references/components/cds-form/guidelines.md +10 -0
  105. package/skills/cds-builder/references/components/cds-form/tokens.md +15 -0
  106. package/skills/cds-builder/references/components/cds-functional-button/api.md +34 -0
  107. package/skills/cds-builder/references/components/cds-functional-button/examples.md +254 -0
  108. package/skills/cds-builder/references/components/cds-functional-button/guidelines.md +10 -0
  109. package/skills/cds-builder/references/components/cds-functional-button/tokens.md +35 -0
  110. package/skills/cds-builder/references/components/cds-grid/api.md +66 -0
  111. package/skills/cds-builder/references/components/cds-grid/examples.md +687 -0
  112. package/skills/cds-builder/references/components/cds-grid/guidelines.md +9 -0
  113. package/skills/cds-builder/references/components/cds-header/api.md +35 -0
  114. package/skills/cds-builder/references/components/cds-header/examples.md +345 -0
  115. package/skills/cds-builder/references/components/cds-header/guidelines.md +9 -0
  116. package/skills/cds-builder/references/components/cds-header/tokens.md +13 -0
  117. package/skills/cds-builder/references/components/cds-highlight/api.md +22 -0
  118. package/skills/cds-builder/references/components/cds-highlight/examples.md +313 -0
  119. package/skills/cds-builder/references/components/cds-highlight/guidelines.md +10 -0
  120. package/skills/cds-builder/references/components/cds-highlight/tokens.md +18 -0
  121. package/skills/cds-builder/references/components/cds-icon/api.md +33 -0
  122. package/skills/cds-builder/references/components/cds-icon/examples.md +272 -0
  123. package/skills/cds-builder/references/components/cds-icon/guidelines.md +10 -0
  124. package/skills/cds-builder/references/components/cds-icon/tokens.md +30 -0
  125. package/skills/cds-builder/references/components/cds-image/api.md +67 -0
  126. package/skills/cds-builder/references/components/cds-image/examples.md +437 -0
  127. package/skills/cds-builder/references/components/cds-image/guidelines.md +10 -0
  128. package/skills/cds-builder/references/components/cds-image/tokens.md +14 -0
  129. package/skills/cds-builder/references/components/cds-input/api.md +80 -0
  130. package/skills/cds-builder/references/components/cds-input/examples.md +205 -0
  131. package/skills/cds-builder/references/components/cds-input/tokens.md +108 -0
  132. package/skills/cds-builder/references/components/cds-label/api.md +25 -0
  133. package/skills/cds-builder/references/components/cds-label/examples.md +72 -0
  134. package/skills/cds-builder/references/components/cds-label/tokens.md +12 -0
  135. package/skills/cds-builder/references/components/cds-layout/api.md +50 -0
  136. package/skills/cds-builder/references/components/cds-layout/examples.md +431 -0
  137. package/skills/cds-builder/references/components/cds-layout/guidelines.md +9 -0
  138. package/skills/cds-builder/references/components/cds-layout/tokens.md +12 -0
  139. package/skills/cds-builder/references/components/cds-link/api.md +33 -0
  140. package/skills/cds-builder/references/components/cds-link/examples.md +195 -0
  141. package/skills/cds-builder/references/components/cds-link/guidelines.md +10 -0
  142. package/skills/cds-builder/references/components/cds-link/tokens.md +16 -0
  143. package/skills/cds-builder/references/components/cds-list/api.md +329 -0
  144. package/skills/cds-builder/references/components/cds-list/examples.md +653 -0
  145. package/skills/cds-builder/references/components/cds-list/guidelines.md +10 -0
  146. package/skills/cds-builder/references/components/cds-list/tokens.md +125 -0
  147. package/skills/cds-builder/references/components/cds-loader/api.md +18 -0
  148. package/skills/cds-builder/references/components/cds-loader/examples.md +59 -0
  149. package/skills/cds-builder/references/components/cds-loader/tokens.md +50 -0
  150. package/skills/cds-builder/references/components/cds-main/api.md +14 -0
  151. package/skills/cds-builder/references/components/cds-main/examples.md +60 -0
  152. package/skills/cds-builder/references/components/cds-menu/api.md +84 -0
  153. package/skills/cds-builder/references/components/cds-menu/examples.md +595 -0
  154. package/skills/cds-builder/references/components/cds-menu/guidelines.md +10 -0
  155. package/skills/cds-builder/references/components/cds-menu/tokens.md +19 -0
  156. package/skills/cds-builder/references/components/cds-messages/api.md +29 -0
  157. package/skills/cds-builder/references/components/cds-messages/examples.md +119 -0
  158. package/skills/cds-builder/references/components/cds-messages/tokens.md +15 -0
  159. package/skills/cds-builder/references/components/cds-modal/api.md +86 -0
  160. package/skills/cds-builder/references/components/cds-modal/examples.md +516 -0
  161. package/skills/cds-builder/references/components/cds-modal/guidelines.md +10 -0
  162. package/skills/cds-builder/references/components/cds-modal/tokens.md +22 -0
  163. package/skills/cds-builder/references/components/cds-notification/api.md +46 -0
  164. package/skills/cds-builder/references/components/cds-notification/examples.md +314 -0
  165. package/skills/cds-builder/references/components/cds-notification/guidelines.md +10 -0
  166. package/skills/cds-builder/references/components/cds-notification/tokens.md +23 -0
  167. package/skills/cds-builder/references/components/cds-notification-alert/api.md +93 -0
  168. package/skills/cds-builder/references/components/cds-notification-alert/examples.md +202 -0
  169. package/skills/cds-builder/references/components/cds-notification-alert/tokens.md +15 -0
  170. package/skills/cds-builder/references/components/cds-otp-input/api.md +106 -0
  171. package/skills/cds-builder/references/components/cds-otp-input/examples.md +329 -0
  172. package/skills/cds-builder/references/components/cds-otp-input/guidelines.md +10 -0
  173. package/skills/cds-builder/references/components/cds-otp-input/tokens.md +41 -0
  174. package/skills/cds-builder/references/components/cds-overlay/api.md +85 -0
  175. package/skills/cds-builder/references/components/cds-overlay/examples.md +409 -0
  176. package/skills/cds-builder/references/components/cds-overlay/guidelines.md +9 -0
  177. package/skills/cds-builder/references/components/cds-overlay/tokens.md +12 -0
  178. package/skills/cds-builder/references/components/cds-page/api.md +21 -0
  179. package/skills/cds-builder/references/components/cds-page/examples.md +123 -0
  180. package/skills/cds-builder/references/components/cds-pagination/api.md +67 -0
  181. package/skills/cds-builder/references/components/cds-pagination/examples.md +320 -0
  182. package/skills/cds-builder/references/components/cds-pagination/guidelines.md +10 -0
  183. package/skills/cds-builder/references/components/cds-pagination/tokens.md +20 -0
  184. package/skills/cds-builder/references/components/cds-progress-bar/api.md +53 -0
  185. package/skills/cds-builder/references/components/cds-progress-bar/examples.md +393 -0
  186. package/skills/cds-builder/references/components/cds-progress-bar/guidelines.md +10 -0
  187. package/skills/cds-builder/references/components/cds-progress-bar/tokens.md +33 -0
  188. package/skills/cds-builder/references/components/cds-progress-circle/api.md +30 -0
  189. package/skills/cds-builder/references/components/cds-progress-circle/examples.md +326 -0
  190. package/skills/cds-builder/references/components/cds-progress-circle/guidelines.md +10 -0
  191. package/skills/cds-builder/references/components/cds-progress-circle/tokens.md +31 -0
  192. package/skills/cds-builder/references/components/cds-radio/api.md +47 -0
  193. package/skills/cds-builder/references/components/cds-radio/tokens.md +36 -0
  194. package/skills/cds-builder/references/components/cds-radio-group/api.md +87 -0
  195. package/skills/cds-builder/references/components/cds-radio-group/examples.md +320 -0
  196. package/skills/cds-builder/references/components/cds-radio-group/guidelines.md +10 -0
  197. package/skills/cds-builder/references/components/cds-radio-group/tokens.md +14 -0
  198. package/skills/cds-builder/references/components/cds-responsive/api.md +29 -0
  199. package/skills/cds-builder/references/components/cds-responsive/examples.md +271 -0
  200. package/skills/cds-builder/references/components/cds-responsive/guidelines.md +10 -0
  201. package/skills/cds-builder/references/components/cds-responsive/tokens.md +13 -0
  202. package/skills/cds-builder/references/components/cds-select/api.md +155 -0
  203. package/skills/cds-builder/references/components/cds-select/examples.md +794 -0
  204. package/skills/cds-builder/references/components/cds-select/guidelines.md +10 -0
  205. package/skills/cds-builder/references/components/cds-select/tokens.md +17 -0
  206. package/skills/cds-builder/references/components/cds-selection-control/api.md +60 -0
  207. package/skills/cds-builder/references/components/cds-selection-control/examples.md +468 -0
  208. package/skills/cds-builder/references/components/cds-selection-control-group/api.md +45 -0
  209. package/skills/cds-builder/references/components/cds-selection-control-group/examples.md +349 -0
  210. package/skills/cds-builder/references/components/cds-skeleton-loader/api.md +30 -0
  211. package/skills/cds-builder/references/components/cds-skeleton-loader/examples.md +297 -0
  212. package/skills/cds-builder/references/components/cds-skeleton-loader/guidelines.md +10 -0
  213. package/skills/cds-builder/references/components/cds-skeleton-loader/tokens.md +62 -0
  214. package/skills/cds-builder/references/components/cds-slide-group/api.md +76 -0
  215. package/skills/cds-builder/references/components/cds-slide-group/examples.md +304 -0
  216. package/skills/cds-builder/references/components/cds-slide-group/guidelines.md +9 -0
  217. package/skills/cds-builder/references/components/cds-slide-group/tokens.md +11 -0
  218. package/skills/cds-builder/references/components/cds-slide-view/api.md +88 -0
  219. package/skills/cds-builder/references/components/cds-slide-view/examples.md +311 -0
  220. package/skills/cds-builder/references/components/cds-slide-view/guidelines.md +9 -0
  221. package/skills/cds-builder/references/components/cds-slide-view/tokens.md +14 -0
  222. package/skills/cds-builder/references/components/cds-stages/api.md +31 -0
  223. package/skills/cds-builder/references/components/cds-stages/examples.md +230 -0
  224. package/skills/cds-builder/references/components/cds-stages/guidelines.md +10 -0
  225. package/skills/cds-builder/references/components/cds-stages/tokens.md +27 -0
  226. package/skills/cds-builder/references/components/cds-status/api.md +24 -0
  227. package/skills/cds-builder/references/components/cds-status/examples.md +170 -0
  228. package/skills/cds-builder/references/components/cds-status/guidelines.md +10 -0
  229. package/skills/cds-builder/references/components/cds-status/tokens.md +17 -0
  230. package/skills/cds-builder/references/components/cds-steps/api.md +176 -0
  231. package/skills/cds-builder/references/components/cds-steps/examples.md +320 -0
  232. package/skills/cds-builder/references/components/cds-steps/guidelines.md +10 -0
  233. package/skills/cds-builder/references/components/cds-steps/tokens.md +52 -0
  234. package/skills/cds-builder/references/components/cds-surface/api.md +30 -0
  235. package/skills/cds-builder/references/components/cds-surface/examples.md +106 -0
  236. package/skills/cds-builder/references/components/cds-table/api.md +120 -0
  237. package/skills/cds-builder/references/components/cds-table/examples.md +3049 -0
  238. package/skills/cds-builder/references/components/cds-table/guidelines.md +10 -0
  239. package/skills/cds-builder/references/components/cds-table/tokens.md +92 -0
  240. package/skills/cds-builder/references/components/cds-tabs/api.md +179 -0
  241. package/skills/cds-builder/references/components/cds-tabs/examples.md +610 -0
  242. package/skills/cds-builder/references/components/cds-tabs/guidelines.md +10 -0
  243. package/skills/cds-builder/references/components/cds-tabs/tokens.md +40 -0
  244. package/skills/cds-builder/references/components/cds-tag/api.md +64 -0
  245. package/skills/cds-builder/references/components/cds-tag/examples.md +278 -0
  246. package/skills/cds-builder/references/components/cds-tag/guidelines.md +10 -0
  247. package/skills/cds-builder/references/components/cds-tag/tokens.md +67 -0
  248. package/skills/cds-builder/references/components/cds-tag-group/api.md +58 -0
  249. package/skills/cds-builder/references/components/cds-tag-group/examples.md +346 -0
  250. package/skills/cds-builder/references/components/cds-tag-group/guidelines.md +10 -0
  251. package/skills/cds-builder/references/components/cds-tag-group/tokens.md +18 -0
  252. package/skills/cds-builder/references/components/cds-text-area/api.md +113 -0
  253. package/skills/cds-builder/references/components/cds-text-area/examples.md +327 -0
  254. package/skills/cds-builder/references/components/cds-text-area/guidelines.md +10 -0
  255. package/skills/cds-builder/references/components/cds-text-area/tokens.md +16 -0
  256. package/skills/cds-builder/references/components/cds-text-input/api.md +115 -0
  257. package/skills/cds-builder/references/components/cds-text-input/examples.md +546 -0
  258. package/skills/cds-builder/references/components/cds-text-input/guidelines.md +10 -0
  259. package/skills/cds-builder/references/components/cds-text-input/tokens.md +17 -0
  260. package/skills/cds-builder/references/components/cds-time-picker/api.md +44 -0
  261. package/skills/cds-builder/references/components/cds-time-picker/examples.md +407 -0
  262. package/skills/cds-builder/references/components/cds-time-picker/guidelines.md +10 -0
  263. package/skills/cds-builder/references/components/cds-time-picker/tokens.md +23 -0
  264. package/skills/cds-builder/references/components/cds-toast/api.md +97 -0
  265. package/skills/cds-builder/references/components/cds-toast/examples.md +296 -0
  266. package/skills/cds-builder/references/components/cds-toast/guidelines.md +10 -0
  267. package/skills/cds-builder/references/components/cds-toast/tokens.md +26 -0
  268. package/skills/cds-builder/references/components/cds-toast-queue/api.md +86 -0
  269. package/skills/cds-builder/references/components/cds-toast-queue/examples.md +227 -0
  270. package/skills/cds-builder/references/components/cds-toggle/api.md +97 -0
  271. package/skills/cds-builder/references/components/cds-toggle/examples.md +335 -0
  272. package/skills/cds-builder/references/components/cds-toggle/guidelines.md +10 -0
  273. package/skills/cds-builder/references/components/cds-toggle/tokens.md +91 -0
  274. package/skills/cds-builder/references/components/cds-toolbar/api.md +44 -0
  275. package/skills/cds-builder/references/components/cds-toolbar/examples.md +186 -0
  276. package/skills/cds-builder/references/components/cds-toolbar/guidelines.md +9 -0
  277. package/skills/cds-builder/references/components/cds-toolbar/tokens.md +13 -0
  278. package/skills/cds-builder/references/components/cds-tooltip/api.md +83 -0
  279. package/skills/cds-builder/references/components/cds-tooltip/examples.md +321 -0
  280. package/skills/cds-builder/references/components/cds-tooltip/guidelines.md +10 -0
  281. package/skills/cds-builder/references/components/cds-tooltip/tokens.md +25 -0
  282. package/skills/cds-builder/references/components/cds-tree/api.md +169 -0
  283. package/skills/cds-builder/references/components/cds-tree/examples.md +785 -0
  284. package/skills/cds-builder/references/components/cds-tree/guidelines.md +10 -0
  285. package/skills/cds-builder/references/components/cds-tree/tokens.md +39 -0
  286. package/skills/cds-builder/references/components/cds-uploader/api.md +105 -0
  287. package/skills/cds-builder/references/components/cds-uploader/examples.md +553 -0
  288. package/skills/cds-builder/references/components/cds-uploader/guidelines.md +10 -0
  289. package/skills/cds-builder/references/components/cds-uploader/tokens.md +26 -0
  290. package/skills/cds-builder/references/components/cds-virtual-scroll/api.md +60 -0
  291. package/skills/cds-builder/references/components/cds-virtual-scroll/examples.md +272 -0
  292. package/skills/cds-builder/references/components/cds-virtual-scroll/guidelines.md +9 -0
  293. package/skills/cds-builder/references/components/cds-virtual-scroll/tokens.md +13 -0
  294. package/skills/cds-builder/references/guides/conventions.md +48 -0
  295. package/skills/cds-builder/references/guides/date-utils.md +301 -0
  296. package/skills/cds-builder/references/guides/display-and-platform.md +263 -0
  297. package/skills/cds-builder/references/guides/forms.md +77 -0
  298. package/skills/cds-builder/references/guides/global-configuration.md +354 -0
  299. package/skills/cds-builder/references/guides/icons.md +172 -0
  300. package/skills/cds-builder/references/guides/internationalization.md +470 -0
  301. package/skills/cds-builder/references/guides/migration-cds3-to-cds4.md +49 -0
  302. package/skills/cds-builder/references/guides/sass-variables.md +238 -0
  303. package/skills/cds-builder/references/guides/setup.md +81 -0
  304. package/skills/cds-builder/references/guides/tailwindcss.md +93 -0
  305. package/skills/cds-builder/references/guides/theme.md +343 -0
  306. package/skills/cds-builder/references/guides/treeshaking.md +237 -0
  307. package/skills/cds-builder/references/patterns/dialogs.md +89 -0
  308. package/skills/cds-builder/references/patterns/forms.md +101 -0
  309. package/skills/cds-builder/references/patterns/page-layout.md +78 -0
  310. package/skills/cds-builder/references/patterns/tables.md +87 -0
  311. package/skills/cds-builder/references/tokens/colors.md +507 -0
  312. package/skills/cds-builder/references/tokens/themes.md +981 -0
  313. package/skills/cds-builder/scripts/check-contracts.mjs +264 -0
  314. package/skills/cds-migrate/GENERATION.md +44 -0
  315. package/skills/cds-migrate/SKILL.md +160 -0
  316. package/skills/cds-migrate/references/migration-full.md +2225 -0
  317. package/skills/cds-refactor/GENERATION.md +44 -0
  318. package/skills/cds-refactor/SKILL.md +187 -0
  319. package/skills/cds-refactor/references/html-to-cds.md +80 -0
  320. package/skills/cds-refactor/references/review-checklist.md +73 -0
  321. package/skills/cds-refactor/references/tailwind-to-cds.md +65 -0
@@ -0,0 +1,263 @@
1
+ ---
2
+ sourceHash: 2d02d03da0e4d6f0fcb171775b7b88784a216ac0
3
+ ---
4
+
5
+ # Display & Platform
6
+
7
+ Central Design System exposes reactive information about the **screen**
8
+ (breakpoints, viewport size, mobile mode) and the **platform** (browser, OS,
9
+ device type) through a single composable — `useDisplay`. Breakpoints are the same
10
+ in JavaScript and in styles (the `cds-breakpoint-*` SCSS mixins), so responsive
11
+ logic in script and CSS always agrees.
12
+
13
+ ## Breakpoints
14
+
15
+ | Breakpoint | Width range (px) | Start width | Grid columns |
16
+ | --- | --- | --- | --- |
17
+ | `xs` | `0 … 671` | `0` | 4 |
18
+ | `sm` | `672 … 1055` | `672` | 8 |
19
+ | `md` | `1056 … 1311` | `1056` | 16 |
20
+ | `lg` | `1312 … 1583` | `1312` | 16 |
21
+ | `xl` | `1584 … ∞` | `1584` | 16 |
22
+
23
+ The values have a single source:
24
+
25
+ - JS — `defaultDisplayOptions.thresholds` (`src/composables/useDisplay/internal/useDisplay.constants.ts`);
26
+ - SCSS — `$grid-breakpoints` (`src/styles/utilities/grid/_config.scss`).
27
+
28
+ ## In JavaScript — `useDisplay`
29
+
30
+ The `useDisplay` composable returns the reactive state of the screen and the
31
+ platform. It works out of the box as long as the application is initialized
32
+ through `createCds` (which provides `cds:display`).
33
+
34
+ ```ts
35
+ import { useDisplay } from '@central-design-system/components';
36
+
37
+ const display = useDisplay();
38
+
39
+ display.width.value; // current viewport width, px
40
+ display.name.value; // 'xs' | 'sm' | 'md' | 'lg' | 'xl'
41
+ display.mobile.value; // true when width < mobileBreakpoint ('sm' by default)
42
+ ```
43
+
44
+ ### Available flags
45
+
46
+ | Flag | Meaning |
47
+ | --- | --- |
48
+ | `xs` / `sm` / `md` / `lg` / `xl` | exactly one is active — the current breakpoint |
49
+ | `smUp` / `mdUp` / `lgUp` / `xlUp` | width ≥ the breakpoint's start width ("and up") |
50
+ | `smDown` / `mdDown` / `lgDown` / `xlDown` | the breakpoint and everything below it ("and down") |
51
+ | `name` | name of the current breakpoint |
52
+ | `mobile` | mobile mode (based on `mobileBreakpoint`) |
53
+ | `mobileBreakpoint` | current mobile mode threshold |
54
+ | `width` / `height` | viewport size, px |
55
+ | `thresholds` | current threshold map |
56
+ | `platform` | platform/browser flags (see [Platform](#platform)) |
57
+ | `update()` | force a recalculation of size and platform |
58
+
59
+ For example, `mdUp` is true when `width ≥ 1056`, and `smDown` when `width < 1056`
60
+ (that is, it covers the `xs` and `sm` ranges).
61
+
62
+ ### Example in a component
63
+
64
+ ```tsx
65
+ import { useDisplay } from '@central-design-system/components';
66
+
67
+ const { mobile, mdUp } = useDisplay();
68
+
69
+ defineRender(() => (
70
+ <div class={{ 'is-mobile': mobile.value }}>
71
+ {mdUp.value ? <DesktopLayout /> : <MobileLayout />}
72
+ </div>
73
+ ));
74
+ ```
75
+
76
+ ### Mobile mode at the prop level
77
+
78
+ Components that mix in `defineDisplayProps()` accept the `mobile` and
79
+ `mobileBreakpoint` props — use them to override the mobile mode threshold
80
+ locally:
81
+
82
+ ```html
83
+ <!-- Mobile mode kicks in below 1056px (md) instead of the global 'sm' -->
84
+ <CdsSlideGroup mobile-breakpoint="md" />
85
+ ```
86
+
87
+ ### Overriding the thresholds globally
88
+
89
+ Thresholds and `mobileBreakpoint` are configured at initialization:
90
+
91
+ ```ts
92
+ import { createCds } from '@central-design-system/components';
93
+
94
+ app.use(createCds({
95
+ display: {
96
+ mobileBreakpoint: 'md',
97
+ thresholds: { xs: 0, sm: 600, md: 960, lg: 1280, xl: 1920 }
98
+ }
99
+ }));
100
+ ```
101
+
102
+ > If you change the thresholds in JS, keep them in sync in SCSS
103
+ > (`$grid-breakpoints`) — otherwise responsiveness in script and styles will
104
+ > drift apart.
105
+
106
+ ## In SCSS — the `cds-breakpoint-*` mixins
107
+
108
+ The mixins come from a public entry point:
109
+
110
+ ```scss
111
+ @use '@central-design-system/components/styles/breakpoints' as breakpoint;
112
+ ```
113
+
114
+ > In plain Dart Sass (without a bundler), use the pkg scheme and the Node
115
+ > importer:
116
+ > `@use 'pkg:@central-design-system/components/styles/breakpoints' as breakpoint;`.
117
+
118
+ ### `cds-breakpoint-up($name)` — "and up"
119
+
120
+ ```scss
121
+ .card {
122
+ display: none;
123
+
124
+ // applies at min-width: 1056px (md and up)
125
+ @include breakpoint.cds-breakpoint-up(md) {
126
+ display: block;
127
+ }
128
+ }
129
+ ```
130
+
131
+ ### `cds-breakpoint-down($name)` — "and down"
132
+
133
+ ```scss
134
+ .sidebar {
135
+ // applies at max-width: 1055.98px — that is, on sm and xs
136
+ @include breakpoint.cds-breakpoint-down(sm) {
137
+ display: none;
138
+ }
139
+ }
140
+ ```
141
+
142
+ `cds-breakpoint-down('<name>')` covers the breakpoint itself **and everything
143
+ below it** (the upper bound is the start of the next breakpoint minus `0.02px`).
144
+ No media query is generated for the largest breakpoint (`xl`) — "xl and down" is
145
+ every width.
146
+
147
+ ### `cds-breakpoint-between($lower, $upper)` — a range
148
+
149
+ ```scss
150
+ .banner {
151
+ // min-width: 672px and max-width: 1056px
152
+ @include breakpoint.cds-breakpoint-between(sm, md) {
153
+ padding: 16px;
154
+ }
155
+ }
156
+ ```
157
+
158
+ Both mixins also accept a number instead of a name: `cds-breakpoint-up(900px)`.
159
+
160
+ ### Other mixins and functions
161
+
162
+ - `cds-breakpoint($name)` — an alias for `cds-breakpoint-up`.
163
+ - `cds-largest-breakpoint` — media query for the largest breakpoint.
164
+ - `breakpoint-next($name)` / `breakpoint-prev($name)` — the neighboring breakpoint.
165
+ - `is-smallest-breakpoint($name)` — whether `$name` is the smallest one.
166
+ - `largest-breakpoint-name()` — name of the largest breakpoint.
167
+
168
+ ## JS ↔ CSS correspondence
169
+
170
+ The `useDisplay` flags and the mixins' media queries cover identical width
171
+ ranges — that's what lets you write consistent responsive logic in script and
172
+ styles.
173
+
174
+ | JS (`useDisplay`) | SCSS mixin | Width range |
175
+ | --- | --- | --- |
176
+ | `smUp` | `cds-breakpoint-up(sm)` | `≥ 672` |
177
+ | `mdUp` | `cds-breakpoint-up(md)` | `≥ 1056` |
178
+ | `lgUp` | `cds-breakpoint-up(lg)` | `≥ 1312` |
179
+ | `xlUp` | `cds-breakpoint-up(xl)` | `≥ 1584` |
180
+ | `smDown` | `cds-breakpoint-down(sm)` | `< 1056` |
181
+ | `mdDown` | `cds-breakpoint-down(md)` | `< 1312` |
182
+ | `lgDown` | `cds-breakpoint-down(lg)` | `< 1584` |
183
+ | `xlDown` | `cds-breakpoint-down(xl)` | every width |
184
+
185
+ > **Important (migrating from CDS 3).** In CDS 3 the semantics of
186
+ > `cds-breakpoint-down` in SCSS differed from JS: `down('sm')` meant "strictly
187
+ > below `sm`" (only `xs`), whereas `smDown` in JS means "`sm` and down". In CDS 4
188
+ > the CSS is aligned with JS: `down('<name>')` now always means "`<name>` and
189
+ > down". If you are porting styles from CDS 3, shift the `down()` argument one
190
+ > step down (old `down('md')` ⇒ new `down('sm')`).
191
+ > See the Migration Guide.
192
+
193
+ ## Platform
194
+
195
+ `useDisplay().platform` is a reactive object with device, OS and browser flags.
196
+ Detection is based on `navigator.userAgent` and touch support.
197
+
198
+ ```ts
199
+ import { useDisplay } from '@central-design-system/components';
200
+
201
+ const { platform } = useDisplay();
202
+
203
+ if (platform.value.ios) {
204
+ // special behavior for iOS
205
+ }
206
+
207
+ const isTouchDevice = platform.value.touch;
208
+ ```
209
+
210
+ ### Fields of the `platform` object
211
+
212
+ Every field is a `boolean`.
213
+
214
+ | Field | Meaning |
215
+ | --- | --- |
216
+ | `android` | an Android device |
217
+ | `ios` | an iOS device (iPhone / iPad / iPod) |
218
+ | `cordova` | the app runs in Cordova |
219
+ | `electron` | the app runs in Electron |
220
+ | `chrome` | Chrome browser |
221
+ | `edge` | Edge browser |
222
+ | `firefox` | Firefox browser |
223
+ | `opera` | Opera browser |
224
+ | `win` | Windows OS |
225
+ | `mac` | macOS |
226
+ | `linux` | Linux OS |
227
+ | `touch` | the device supports touch |
228
+ | `ssr` | the value was computed on the server (SSR) |
229
+
230
+ ### Example: a class on the app root
231
+
232
+ ```tsx
233
+ import { useDisplay } from '@central-design-system/components';
234
+
235
+ const { platform } = useDisplay();
236
+
237
+ defineRender(() => (
238
+ <div
239
+ class={{
240
+ 'platform--ios': platform.value.ios,
241
+ 'platform--android': platform.value.android,
242
+ 'platform--touch': platform.value.touch
243
+ }}
244
+ >
245
+ <slot />
246
+ </div>
247
+ ));
248
+ ```
249
+
250
+ > **Careful with user-agent sniffing.** Detecting the browser or OS from
251
+ > `userAgent` is unreliable (the string can be spoofed, and new browsers may not
252
+ > be recognized). Use `platform` for progressive enhancement — say, a fix
253
+ > specific to iOS Safari — not as the only gate in front of a feature. For
254
+ > feature detection, prefer capability checks (`'ontouchstart' in window` and the
255
+ > like).
256
+
257
+ ### SSR
258
+
259
+ During server-side rendering `userAgent` is unavailable, so `platform.ssr === true`
260
+ and the rest of the flags are `false`. After hydration the values can be
261
+ recalculated by calling `display.update()` (which recalculates both size and
262
+ platform). Initial sizes for SSR are set through the second argument of
263
+ `createDisplay(options, ssr)` or the `ssr` option in `createCds`.
@@ -0,0 +1,77 @@
1
+ # Forms with CDS 4
2
+
3
+ ## Ready-made controls
4
+
5
+ For typical forms use the ready-made "molecules" (each has its own `api.md`
6
+ and `examples.md` in `references/components/`):
7
+
8
+ | Control | Purpose |
9
+ | --- | --- |
10
+ | [CdsTextInput](../components/cds-text-input/api.md) | Text field with label / description / messages |
11
+ | [CdsSelect](../components/cds-select/api.md) | Dropdown (single / multiple) |
12
+ | [CdsAutocomplete](../components/cds-autocomplete/api.md) | Selection with search over the list |
13
+ | [CdsCombobox](../components/cds-combobox/api.md) | Selection that also accepts free-form input |
14
+ | [CdsCheckbox](../components/cds-checkbox/api.md) | Checkbox |
15
+ | [CdsRadioGroup](../components/cds-radio-group/api.md) | Radio button group |
16
+ | [CdsToggle](../components/cds-toggle/api.md) | Toggle |
17
+ | [CdsDatePicker](../components/cds-date-picker/api.md) / [CdsTimePicker](../components/cds-time-picker/api.md) | Date / time |
18
+
19
+ ## CdsForm: aggregation and validation
20
+
21
+ `CdsForm` groups fields, aggregates their validation (`v-model` — form
22
+ validity) and exposes `validate` / `reset` / `resetValidation` methods via
23
+ slot props and the exposed API. Validation rules are set on the fields with
24
+ the `rules` prop (an array of functions `value → true | 'error text'`).
25
+
26
+ A verified example (from Storybook):
27
+
28
+ ```html
29
+ <CdsForm v-model="valid" @submit.prevent>
30
+ <template #default="{ reset }">
31
+ <CdsTextInput v-model="name" :rules="rules.name" label="Name" placeholder="Enter name" />
32
+ <CdsTextInput v-model="email" :rules="rules.email" label="Email" placeholder="Enter Email" />
33
+ <CdsButton appearance="secondary" @click="reset">Clear</CdsButton>
34
+ <CdsButton type="submit">Submit</CdsButton>
35
+ </template>
36
+ </CdsForm>
37
+ ```
38
+
39
+ ```ts
40
+ const valid = ref(false);
41
+ const name = ref('');
42
+ const email = ref('');
43
+
44
+ const rules = {
45
+ name: [
46
+ (value: string) => !!value || 'Must not be empty',
47
+ (value: string) => value.length <= 10 || 'No more than 10 characters'
48
+ ],
49
+ email: [
50
+ (value: string) => !!value || 'Must not be empty',
51
+ (value: string) => /.+@.+\..+/.test(value) || 'Invalid format'
52
+ ]
53
+ };
54
+ ```
55
+
56
+ Useful modes (full list in [api.md](../components/cds-form/api.md)):
57
+
58
+ - `first-fail` — validation stops at the first invalid field;
59
+ - `disabled` / `readonly` on the form propagate to every nested field.
60
+
61
+ CdsForm also works with external validators (vuelidate, vee-validate) — see
62
+ [examples.md](../components/cds-form/examples.md).
63
+
64
+ ## Building your own field from atoms
65
+
66
+ When no ready-made molecule fits, assemble the field from atoms:
67
+
68
+ | Atom | Role |
69
+ | --- | --- |
70
+ | [CdsField](../components/cds-field/api.md) | Field wrapper: wires up label/control/messages, states |
71
+ | [CdsLabel](../components/cds-label/api.md) | Field label |
72
+ | [CdsDescription](../components/cds-description/api.md) | Supporting description |
73
+ | [CdsMessages](../components/cds-messages/api.md) | Error messages / hints |
74
+ | [CdsInput](../components/cds-input/api.md) | Bare input control |
75
+
76
+ Before assembling, open the `api.md` of every atom — take the set of props
77
+ and slots only from there.
@@ -0,0 +1,354 @@
1
+ ---
2
+ sourceHash: 49864e870f2f989420a5ebf7ffc7eb1a3458124a
3
+ ---
4
+
5
+ # Global configuration
6
+
7
+ CDS 4 lets you set default prop values — globally, for a specific component, or
8
+ only inside a given subtree. You describe "what buttons look like in our product"
9
+ once and stop repeating the same props in every template.
10
+
11
+ ## Setup
12
+
13
+ Default values are set through the `defaults` option of `createCds`. The `global`
14
+ key affects every component; a key named after a component affects only that one.
15
+
16
+ ```ts
17
+ import { createApp } from 'vue';
18
+ import '@central-design-system/components/styles';
19
+ import { createCds, components, directives } from '@central-design-system/components';
20
+
21
+ import App from './App.vue';
22
+
23
+ const cds = createCds({
24
+ components,
25
+ directives,
26
+ defaults: {
27
+ global: {
28
+ size: 'sm'
29
+ },
30
+ CdsButton: {
31
+ appearance: 'secondary'
32
+ },
33
+ CdsTextInput: {
34
+ hideDetails: 'auto'
35
+ }
36
+ }
37
+ });
38
+
39
+ createApp(App).use(cds);
40
+ ```
41
+
42
+ **Important.** Props in `defaults` are written in camelCase: `hideDetails`, not
43
+ `hide-details`.
44
+
45
+ A component key is its name from `defineOptions({ name })` — `CdsButton`,
46
+ `CdsTextInput`, `CdsCardActions` and so on. Subcomponent names (`CdsCardTitle`,
47
+ `CdsListItem`) work exactly like root component names.
48
+
49
+ ### Resolution order
50
+
51
+ For every prop, CDS takes the first value that applies:
52
+
53
+ 1. the prop explicitly passed in the template;
54
+ 2. `defaults.<ComponentName>.<prop>` from the nearest defaults context;
55
+ 3. `defaults.global.<prop>`;
56
+ 4. the default value declared in the component itself.
57
+
58
+ An explicitly passed prop always wins — defaults can never override the template.
59
+
60
+ ### Changing defaults at runtime
61
+
62
+ `createCds` returns an instance whose defaults live in a reactive ref. You can
63
+ change them on the fly — every mounted component recalculates:
64
+
65
+ ```ts
66
+ const cds = createCds({ components, directives });
67
+
68
+ // for example, turn on compact mode based on a user setting
69
+ cds.defaults.value = {
70
+ ...cds.defaults.value,
71
+ global: { size: 'sm' }
72
+ };
73
+ ```
74
+
75
+ ## Contextual defaults
76
+
77
+ Defaults can be set for components nested inside another component. For example,
78
+ to make every button inside a card secondary by default:
79
+
80
+ ```ts
81
+ createCds({
82
+ defaults: {
83
+ CdsCard: {
84
+ CdsButton: { appearance: 'secondary' }
85
+ }
86
+ }
87
+ });
88
+ ```
89
+
90
+ The rule is simple: a capitalized key is the name of a nested component, a
91
+ lowercase key is a prop of the current component. Nesting is not limited to one
92
+ level:
93
+
94
+ ```ts
95
+ createCds({
96
+ defaults: {
97
+ CdsCard: {
98
+ CdsCardActions: {
99
+ CdsButton: { appearance: 'tertiary', size: 'sm' }
100
+ }
101
+ }
102
+ }
103
+ });
104
+ ```
105
+
106
+ The library uses the same mechanism internally so that grouping components can
107
+ hand their settings down to their children:
108
+
109
+ - `CdsButtonGroup` sets the `appearance`, `color`, `baseColor`, `size` props on nested `CdsButton`s;
110
+ - `CdsTagGroup` sets the `color`, `activeColor`, `disabled`, `filter` props on `CdsTag`;
111
+ - `CdsSelectionControlGroup` passes settings to the controls, with the target component name
112
+ set by the `defaultsTarget` prop (`CdsCheckbox`, `CdsRadio` and so on);
113
+ - `CdsTabs`, `CdsSteps`, `CdsList`, `CdsBreadcrumbs`, `CdsButtonToggle`,
114
+ `CdsExpandablePanels`, `CdsOtpInput` work the same way.
115
+
116
+ That's why `<CdsButtonGroup size="sm">` makes every button inside small — you
117
+ don't have to set `size` on each of them.
118
+
119
+ ## Global class and style
120
+
121
+ Besides props, a component's defaults can carry `class` and `style`. It's a
122
+ convenient way to apply product-specific rules to every instance of a component
123
+ without touching the templates:
124
+
125
+ ```ts
126
+ createCds({
127
+ defaults: {
128
+ CdsButton: {
129
+ class: 'my-button'
130
+ }
131
+ }
132
+ });
133
+ ```
134
+
135
+ Any value Vue accepts works — a string, an object, an array:
136
+
137
+ ```ts
138
+ createCds({
139
+ defaults: {
140
+ CdsButton: {
141
+ style: [{ textTransform: 'none' }]
142
+ }
143
+ }
144
+ });
145
+ ```
146
+
147
+ Unlike ordinary props, `class` and `style` are not overwritten by the template
148
+ but **merged** with it. So `<CdsButton class="mt-2">` gets both `my-button` and
149
+ `mt-2`.
150
+
151
+ **Important.** `class` and `style` only work under a specific component's key. In
152
+ `global` they are ignored.
153
+
154
+ ## Aliases
155
+
156
+ An alias is the same component registered under a different name with its own
157
+ defaults. Aliases are a handy way to assemble "product" variants of components.
158
+
159
+ ```ts
160
+ import { createCds, components, directives, CdsButton } from '@central-design-system/components';
161
+
162
+ const cds = createCds({
163
+ components,
164
+ directives,
165
+ aliases: {
166
+ CdsButtonPrimary: CdsButton,
167
+ CdsButtonDanger: CdsButton
168
+ },
169
+ defaults: {
170
+ CdsButtonPrimary: {
171
+ appearance: 'primary',
172
+ class: 'my-button--primary'
173
+ },
174
+ CdsButtonDanger: {
175
+ appearance: 'primary',
176
+ color: 'red',
177
+ class: 'my-button--danger'
178
+ }
179
+ }
180
+ });
181
+ ```
182
+
183
+ Aliases are registered globally, so you can use them in templates right away:
184
+
185
+ ```vue
186
+ <template>
187
+ <CdsButtonPrimary>Save</CdsButtonPrimary>
188
+ <CdsButtonDanger class="ml-2">Delete</CdsButtonDanger>
189
+ </template>
190
+ ```
191
+
192
+ **Important.** An alias does not inherit the base component's defaults. If the
193
+ configuration has `defaults.CdsButton`, it will not apply to `<CdsButtonPrimary>`
194
+ — defaults are looked up by the alias name. Move shared settings into `global` or
195
+ duplicate them under the alias key.
196
+
197
+ ## Defaults for part of the application
198
+
199
+ To set defaults for a subtree rather than globally, use the
200
+ `CdsDefaultsProvider` component. The Controls panel in Storybook is built on it
201
+ too: the values from the panel are applied to the example's components as
202
+ defaults.
203
+
204
+ ```vue
205
+ <script setup lang="ts">
206
+ import { CdsButton, CdsDefaultsProvider } from '@central-design-system/components';
207
+ </script>
208
+
209
+ <template>
210
+ <CdsDefaultsProvider :defaults="{ CdsButton: { appearance: 'tertiary', size: 'sm' } }">
211
+ <CdsButton>Small tertiary button</CdsButton>
212
+ </CdsDefaultsProvider>
213
+ </template>
214
+ ```
215
+
216
+ | Prop | Type | Purpose |
217
+ | ---------- | ------------------- | -------------------------------------------------------------------------------------------- |
218
+ | `defaults` | `DefaultsOptions` | Defaults for the subtree; merged with the inherited ones by default |
219
+ | `scoped` | `boolean` | Don't mix with the parent defaults — only the ones set here apply |
220
+ | `reset` | `number \| string` | Go N levels up the defaults chain |
221
+ | `root` | `boolean \| string` | Fall back to the root defaults from `createCds`; with a string — to a named group inside them |
222
+ | `disabled` | `boolean` | Provide nothing — the subtree gets the parent defaults as they are |
223
+
224
+ The typical use for `scoped` is an "island" inside someone else's environment:
225
+ enclosing groups (`CdsButtonGroup`, say) should not impose their settings on your
226
+ block.
227
+
228
+ ## Your own components
229
+
230
+ Your application's own components can take part in the defaults system too. Pass
231
+ their props through `useDefaults`:
232
+
233
+ ```vue
234
+ <script setup lang="ts">
235
+ import { useDefaults } from '@central-design-system/components';
236
+
237
+ const _props = defineProps<{ foo?: string }>();
238
+ const props = useDefaults(_props, 'MyComponent');
239
+ </script>
240
+
241
+ <template>
242
+ <div>I am {{ props.foo }}</div>
243
+ </template>
244
+ ```
245
+
246
+ `useDefaults` takes two arguments, both optional:
247
+
248
+ - `props` — the props object returned by `defineProps`;
249
+ - `name` — the component name used to look up the key in `defaults`. If omitted,
250
+ the name from `defineOptions({ name })` is used, and failing that, the file name.
251
+
252
+ Now the component is configurable from the shared configuration:
253
+
254
+ ```ts
255
+ createCds({
256
+ defaults: {
257
+ MyComponent: { foo: 'bar' }
258
+ }
259
+ });
260
+ ```
261
+
262
+ **Important.** In the template, refer to `props.foo`, not `foo`. `useDefaults`
263
+ returns a proxy over the props, and destructured `defineProps` variables bypass
264
+ it:
265
+
266
+ ```diff
267
+ -<div>I am {{ foo }}</div>
268
+ +<div>I am {{ props.foo }}</div>
269
+ ```
270
+
271
+ ### Nested defaults in your own components
272
+
273
+ To make your component hand defaults down to its children (the way
274
+ `CdsButtonGroup` does), just call `useDefaults()` with no arguments — the nested
275
+ keys from its `defaults` section go into the child context:
276
+
277
+ ```vue
278
+ <script setup lang="ts">
279
+ import { useDefaults } from '@central-design-system/components';
280
+
281
+ useDefaults();
282
+ </script>
283
+
284
+ <template>
285
+ <div class="my-panel">
286
+ <slot />
287
+ </div>
288
+ </template>
289
+ ```
290
+
291
+ ```ts
292
+ createCds({
293
+ defaults: {
294
+ MyPanel: {
295
+ CdsButton: { appearance: 'tertiary' }
296
+ }
297
+ }
298
+ });
299
+ ```
300
+
301
+ If the children's defaults depend on the component's props, use `provideDefaults`
302
+ directly:
303
+
304
+ ```vue
305
+ <script setup lang="ts">
306
+ import { provideDefaults } from '@central-design-system/components';
307
+ import { toRef } from 'vue';
308
+
309
+ const props = defineProps<{ size?: 'sm' | 'md' }>();
310
+
311
+ provideDefaults({
312
+ CdsButton: {
313
+ size: toRef(() => props.size)
314
+ }
315
+ });
316
+ </script>
317
+
318
+ <template>
319
+ <div class="my-toolbar">
320
+ <slot />
321
+ </div>
322
+ </template>
323
+ ```
324
+
325
+ ## Blueprint — a configuration preset
326
+
327
+ If several applications need the same set of options, extract it into a
328
+ `blueprint`: a plain `createCds` options object that the rest of the
329
+ configuration is layered on top of.
330
+
331
+ ```ts
332
+ import { createCds, components, directives } from '@central-design-system/components';
333
+ import type { Blueprint } from '@central-design-system/components';
334
+
335
+ const productBlueprint: Blueprint = {
336
+ theme: { defaultTheme: 'b2bLight' },
337
+ defaults: {
338
+ CdsButton: { appearance: 'secondary' }
339
+ }
340
+ };
341
+
342
+ const cds = createCds({
343
+ blueprint: productBlueprint,
344
+ components,
345
+ directives,
346
+ // overrides the value from the blueprint
347
+ defaults: {
348
+ CdsButton: { size: 'sm' }
349
+ }
350
+ });
351
+ ```
352
+
353
+ Options are merged deeply (`mergeDeep`), so in the example above the buttons keep
354
+ `appearance: 'secondary'` from the preset and gain `size: 'sm'`.