@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,349 @@
1
+ # CdsSelectionControlGroup — usage examples
2
+
3
+ > Extracted from Storybook stories (`docs/*.stories.ts`) by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md). `v-bind="args"` in templates refers to the props from the **Args** block of the corresponding example.
5
+
6
+ A container for a set of selection controls: it holds the shared value, hands the nested [CdsSelectionControl](../cds-selection-control/api.md) the type, the icons, the colors and the states, and ties them together with a single `name` attribute. The radio button group of the design system is built on it.
7
+
8
+ ## Shared model and type
9
+
10
+ The value of the selected control is held by the group: `v-model` is on it, every nested control only has its own `value`. The `type`, `true-icon` and `false-icon` props are handed by the group to all the controls, and the shared `name` attribute for the native `input` elements is created by the group itself — it can be overridden with the `name` prop.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
17
+ import { ref } from 'vue';
18
+
19
+ const delivery = ref('courier');
20
+ </script>
21
+
22
+ <template>
23
+ <div class="m-auto flex w-[350px] flex-col gap-2">
24
+ <CdsSelectionControlGroup v-model="delivery" type="radio" true-icon="radio-on" false-icon="radio-off">
25
+ <CdsSelectionControl value="courier" label="Курьером" class="gap-x-2" />
26
+ <CdsSelectionControl value="pickup" label="Самовывоз" class="gap-x-2" />
27
+ <CdsSelectionControl value="post" label="Почтой" class="gap-x-2" />
28
+ </CdsSelectionControlGroup>
29
+
30
+ <span class="text-content-secondary">Значение модели: {{ delivery }}</span>
31
+ </div>
32
+ </template>
33
+ ```
34
+
35
+ ## Multiple selection
36
+
37
+ An array in the model turns on `multiple` mode: every control adds its `value` to it. The mode is turned on automatically — the `multiple` prop is needed only to set it by hand.
38
+
39
+ **Example (SFC):**
40
+
41
+ ```vue
42
+ <script setup lang="ts">
43
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
44
+ import { ref } from 'vue';
45
+
46
+ const channels = ref(['email']);
47
+ </script>
48
+
49
+ <template>
50
+ <div class="m-auto flex w-[350px] flex-col gap-2">
51
+ <CdsSelectionControlGroup
52
+ v-model="channels"
53
+ type="checkbox"
54
+ true-icon="checkbox-on"
55
+ false-icon="checkbox-off"
56
+ direction="vertical"
57
+ >
58
+ <CdsSelectionControl value="email" label="Почта" class="gap-x-2" />
59
+ <CdsSelectionControl value="sms" label="SMS" class="gap-x-2" />
60
+ <CdsSelectionControl value="push" label="Push-уведомления" class="gap-x-2" />
61
+ </CdsSelectionControlGroup>
62
+
63
+ <span class="text-content-secondary">Значение модели: {{ channels }}</span>
64
+ </div>
65
+ </template>
66
+ ```
67
+
68
+ ## Direction
69
+
70
+ By default the controls line up in a row and split the width of the group evenly. `direction="vertical"` puts them in a column — handier for long captions and for sets with descriptions.
71
+
72
+ **Example (SFC):**
73
+
74
+ ```vue
75
+ <script setup lang="ts">
76
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
77
+ import { ref } from 'vue';
78
+
79
+ const horizontal = ref('year');
80
+ const vertical = ref('year');
81
+ </script>
82
+
83
+ <template>
84
+ <div class="m-auto flex w-[350px] flex-col gap-4">
85
+ <div class="flex flex-col gap-1">
86
+ <span class="text-content-secondary">Горизонтально — по умолчанию</span>
87
+
88
+ <CdsSelectionControlGroup v-model="horizontal" type="radio" true-icon="radio-on" false-icon="radio-off">
89
+ <CdsSelectionControl value="year" label="Год" class="gap-x-2" />
90
+ <CdsSelectionControl value="quarter" label="Квартал" class="gap-x-2" />
91
+ <CdsSelectionControl value="month" label="Месяц" class="gap-x-2" />
92
+ </CdsSelectionControlGroup>
93
+ </div>
94
+
95
+ <div class="flex flex-col gap-1">
96
+ <span class="text-content-secondary">Вертикально</span>
97
+
98
+ <CdsSelectionControlGroup
99
+ v-model="vertical"
100
+ direction="vertical"
101
+ type="radio"
102
+ true-icon="radio-on"
103
+ false-icon="radio-off"
104
+ >
105
+ <CdsSelectionControl value="year" label="Год" class="gap-x-2" />
106
+ <CdsSelectionControl value="quarter" label="Квартал" class="gap-x-2" />
107
+ <CdsSelectionControl value="month" label="Месяц" class="gap-x-2" />
108
+ </CdsSelectionControlGroup>
109
+ </div>
110
+ </div>
111
+ </template>
112
+ ```
113
+
114
+ ## States
115
+
116
+ `disabled` blocks the whole group, `readonly` forbids changing the selection without changing the look, `error` puts every control into the error state. A single option is blocked by the `disabled` prop of the control itself.
117
+
118
+ **Example (SFC):**
119
+
120
+ ```vue
121
+ <script setup lang="ts">
122
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
123
+ import { ref } from 'vue';
124
+
125
+ const disabled = ref('courier');
126
+ const readonly = ref('courier');
127
+ const partly = ref('courier');
128
+ </script>
129
+
130
+ <template>
131
+ <div class="m-auto flex w-[350px] flex-col gap-4">
132
+ <div class="flex flex-col gap-1">
133
+ <span class="text-content-secondary">disabled — заблокирована вся группа</span>
134
+
135
+ <CdsSelectionControlGroup
136
+ v-model="disabled"
137
+ disabled
138
+ type="radio"
139
+ color="green"
140
+ true-icon="radio-on"
141
+ false-icon="radio-off"
142
+ >
143
+ <CdsSelectionControl value="courier" label="Курьером" class="gap-x-2" />
144
+ <CdsSelectionControl value="pickup" label="Самовывоз" class="gap-x-2" />
145
+ </CdsSelectionControlGroup>
146
+ </div>
147
+
148
+ <div class="flex flex-col gap-1">
149
+ <span class="text-content-secondary">readonly — вид прежний, выбор не меняется</span>
150
+
151
+ <CdsSelectionControlGroup
152
+ v-model="readonly"
153
+ readonly
154
+ type="radio"
155
+ color="green"
156
+ true-icon="radio-on"
157
+ false-icon="radio-off"
158
+ >
159
+ <CdsSelectionControl value="courier" label="Курьером" class="gap-x-2" />
160
+ <CdsSelectionControl value="pickup" label="Самовывоз" class="gap-x-2" />
161
+ </CdsSelectionControlGroup>
162
+ </div>
163
+
164
+ <div class="flex flex-col gap-1">
165
+ <span class="text-content-secondary">Отдельный контрол блокируется своим disabled</span>
166
+
167
+ <CdsSelectionControlGroup v-model="partly" type="radio" color="green" true-icon="radio-on" false-icon="radio-off">
168
+ <CdsSelectionControl value="courier" label="Курьером" class="gap-x-2" />
169
+ <CdsSelectionControl value="pickup" disabled label="Самовывоз" class="gap-x-2" />
170
+ </CdsSelectionControlGroup>
171
+ </div>
172
+ </div>
173
+ </template>
174
+ ```
175
+
176
+ ## Colors and icons
177
+
178
+ `color` sets the color of the selected control, `base-color` the color of the unselected ones, `true-icon` and `false-icon` the pair of state icons. The values apply to all the controls of the group at once.
179
+
180
+ **Example (SFC):**
181
+
182
+ ```vue
183
+ <script setup lang="ts">
184
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
185
+ import { ref } from 'vue';
186
+
187
+ const plan = ref('pro');
188
+ const favorites = ref(['first']);
189
+ </script>
190
+
191
+ <template>
192
+ <div class="m-auto flex w-[350px] flex-col gap-4">
193
+ <div class="flex flex-col gap-1">
194
+ <span class="text-content-secondary">color — выбранный, base-color — остальные</span>
195
+
196
+ <CdsSelectionControlGroup
197
+ v-model="plan"
198
+ type="radio"
199
+ color="green"
200
+ base-color="purple"
201
+ true-icon="radio-on"
202
+ false-icon="radio-off"
203
+ >
204
+ <CdsSelectionControl value="base" label="Базовый" class="gap-x-2" />
205
+ <CdsSelectionControl value="pro" label="Профи" class="gap-x-2" />
206
+ </CdsSelectionControlGroup>
207
+ </div>
208
+
209
+ <div class="flex flex-col gap-1">
210
+ <span class="text-content-secondary">Своя пара иконок для всей группы</span>
211
+
212
+ <CdsSelectionControlGroup v-model="favorites" type="checkbox" true-icon="star-fill" false-icon="star">
213
+ <CdsSelectionControl value="first" label="Первый" class="gap-x-2" />
214
+ <CdsSelectionControl value="second" label="Второй" class="gap-x-2" />
215
+ </CdsSelectionControlGroup>
216
+ </div>
217
+ </div>
218
+ </template>
219
+ ```
220
+
221
+ ## Passing the settings through
222
+
223
+ The group gives its settings to the component whose name is set in `defaults-target` — `CdsSelectionControl` by default. Put the name of a ready-made control there and the group starts controlling it: that is how [CdsRadioGroup](../cds-radio-group/api.md) hands the settings to the radio buttons.
224
+
225
+ **Example (SFC):**
226
+
227
+ ```vue
228
+ <script setup lang="ts">
229
+ import { CdsCheckbox, CdsSelectionControlGroup } from '@central-design-system/components';
230
+ import { ref } from 'vue';
231
+
232
+ const categories = ref(['office']);
233
+ </script>
234
+
235
+ <template>
236
+ <div class="m-auto flex w-[350px] flex-col gap-2">
237
+ <CdsSelectionControlGroup v-model="categories" defaults-target="CdsCheckbox" type="checkbox" direction="vertical">
238
+ <CdsCheckbox value="office" label="Канцелярия" hide-details />
239
+ <CdsCheckbox value="furniture" label="Мебель" hide-details />
240
+ <CdsCheckbox value="tech" label="Техника" hide-details />
241
+ </CdsSelectionControlGroup>
242
+
243
+ <span class="text-content-secondary">Значение модели: {{ categories }}</span>
244
+ </div>
245
+ </template>
246
+ ```
247
+
248
+ ## Filtering by categories
249
+
250
+ An array model collects the checked categories, and the list is rebuilt on the fly through a computed. `inline` leaves the controls the width of their captions, so the filters go in a dense row.
251
+
252
+ **Example (SFC):**
253
+
254
+ ```vue
255
+ <script setup lang="ts">
256
+ import { CdsList, CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
257
+ import { computed, ref } from 'vue';
258
+
259
+ const categories = [
260
+ { value: 'office', label: 'Канцелярия' },
261
+ { value: 'furniture', label: 'Мебель' },
262
+ { value: 'tech', label: 'Техника' }
263
+ ];
264
+
265
+ const products = [
266
+ { title: 'Бумага А4', category: 'office' },
267
+ { title: 'Кресло офисное', category: 'furniture' },
268
+ { title: 'Монитор 27"', category: 'tech' },
269
+ { title: 'Стеллаж', category: 'furniture' }
270
+ ];
271
+
272
+ const selected = ref<string[]>([]);
273
+
274
+ const items = computed(() =>
275
+ products
276
+ .filter((product) => !selected.value.length || selected.value.includes(product.category))
277
+ .map((product) => ({ title: product.title }))
278
+ );
279
+ </script>
280
+
281
+ <template>
282
+ <div class="m-auto flex w-[350px] flex-col gap-2">
283
+ <CdsSelectionControlGroup
284
+ v-model="selected"
285
+ type="checkbox"
286
+ true-icon="checkbox-on"
287
+ false-icon="checkbox-off"
288
+ class="gap-3"
289
+ >
290
+ <CdsSelectionControl
291
+ v-for="category of categories"
292
+ :key="category.value"
293
+ inline
294
+ :value="category.value"
295
+ :label="category.label"
296
+ class="gap-x-2"
297
+ />
298
+ </CdsSelectionControlGroup>
299
+
300
+ <CdsList :items="items" />
301
+ </div>
302
+ </template>
303
+ ```
304
+
305
+ ## Selection tiles
306
+
307
+ The group does not dictate the markup to the controls: in the `input` slot every control draws its own tile, while the group still holds the selected value and ties the native `input` elements together with a single `name`.
308
+
309
+ **Example (SFC):**
310
+
311
+ ```vue
312
+ <script setup lang="ts">
313
+ import { CdsSelectionControl, CdsSelectionControlGroup } from '@central-design-system/components';
314
+ import { ref } from 'vue';
315
+
316
+ const slots = [
317
+ { value: 'morning', title: 'Утро', time: '9:00 — 12:00' },
318
+ { value: 'day', title: 'День', time: '12:00 — 17:00' },
319
+ { value: 'evening', title: 'Вечер', time: '17:00 — 21:00' }
320
+ ];
321
+
322
+ const slot = ref('day');
323
+ </script>
324
+
325
+ <template>
326
+ <CdsSelectionControlGroup v-model="slot" type="radio" class="justify-center gap-2">
327
+ <CdsSelectionControl
328
+ v-for="item of slots"
329
+ :key="item.value"
330
+ inline
331
+ :value="item.value"
332
+ :aria-label="`${item.title}, ${item.time}`"
333
+ :style="{ '--cds-selection-control-width': '140px', '--cds-selection-control-height': '64px' }"
334
+ >
335
+ <template #input="{ inputNode, model }">
336
+ <component :is="inputNode" />
337
+
338
+ <div
339
+ class="flex h-full w-full flex-col justify-center rounded-200 border px-3"
340
+ :class="model.value ? 'border-line-selected ring-1 ring-line-selected' : 'border-line-primary'"
341
+ >
342
+ <span>{{ item.title }}</span>
343
+ <span class="text-content-secondary">{{ item.time }}</span>
344
+ </div>
345
+ </template>
346
+ </CdsSelectionControl>
347
+ </CdsSelectionControlGroup>
348
+ </template>
349
+ ```
@@ -0,0 +1,30 @@
1
+ # CdsSkeletonLoader — API
2
+
3
+ > Generated from meta.json by `bun run generate:skill`. Do not edit manually.
4
+ > Examples: [examples.md](examples.md) · Guidelines: [guidelines.md](guidelines.md) · Tokens: [tokens.md](tokens.md)
5
+
6
+ A skeleton shows the shape of the future content while the data is loading: instead of an empty screen the user immediately sees where the heading, the text and the buttons will appear. The ready-made types (`type`) are assembled from "bones" — blanks for an avatar, a line of text, a button or a table.
7
+
8
+ ## CdsSkeletonLoader
9
+
10
+ **Props**
11
+
12
+ | Prop | Type | Default | Required | Description |
13
+ | --- | --- | --- | --- | --- |
14
+ | `boilerplate` | `boolean \| undefined` | `false` | no | Boilerplate mode: turns the shimmer animation off (for prototyping). |
15
+ | `height` | `string \| number \| undefined` | — | no | Component height |
16
+ | `loading` | `boolean \| undefined` | `false` | no | Shows the skeleton instead of the slot content while loading. |
17
+ | `loadingText` | `string \| undefined` | — | no | Text for the `aria-label` while loading. |
18
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
19
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
20
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
21
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
22
+ | `theme` | `string \| undefined` | — | no | Component theme |
23
+ | `type` | `(string & {}) \| "text" \| "block" \| "article" \| "button" \| "table" \| "divider" \| "subtitle" \| "chip" \| "avatar" \| "actions" \| "heading" \| "sentences" \| "paragraph" \| "card" \| "card-avatar" \| "date-picker" \| "date-picker-options" \| "date-picker-days" \| "list-item" \| "list-item-avatar" \| "list-item-two-line" \| "list-item-avatar-two-line" \| "list-item-three-line" \| "list-item-avatar-three-line" \| "table-heading" \| "table-thead" \| "table-tbody" \| "table-row-divider" \| "table-row" \| "table-tfoot" \| readonly ((string & {}) \| "text" \| "block" \| "article" \| "button" \| "table" \| "divider" \| "subtitle" \| "chip" \| "avatar" \| "actions" \| "heading" \| "sentences" \| "paragraph" \| "card" \| "card-avatar" \| "date-picker" \| "date-picker-options" \| "date-picker-days" \| "list-item" \| "list-item-avatar" \| "list-item-two-line" \| "list-item-avatar-two-line" \| "list-item-three-line" \| "list-item-avatar-three-line" \| "table-heading" \| "table-thead" \| "table-tbody" \| "table-row-divider" \| "table-row" \| "table-tfoot")[] \| undefined` | `'block'` | no | Skeleton type: a predefined preset or an arbitrary structure string (or an array of strings). |
24
+ | `width` | `string \| number \| undefined` | — | no | Component width |
25
+
26
+ **Slots**
27
+
28
+ | Name | Type | Description |
29
+ | --- | --- | --- |
30
+ | `default` | `any` | Content rendered instead of the skeleton once the loading is done. |
@@ -0,0 +1,297 @@
1
+ # CdsSkeletonLoader — usage examples
2
+
3
+ > Extracted from Storybook stories (`docs/*.stories.ts`) by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md). `v-bind="args"` in templates refers to the props from the **Args** block of the corresponding example.
5
+
6
+ A skeleton shows the shape of the future content while the data is loading: instead of an empty screen the user immediately sees where the heading, the text and the buttons will appear. The ready-made types (`type`) are assembled from "bones" — blanks for an avatar, a line of text, a button or a table.
7
+
8
+ ## Types
9
+
10
+ The `type` prop takes a ready-made structure from the catalog: `article` — a heading and a paragraph, `card` — an image with a heading, `table` — a header, rows and a footer.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsSkeletonLoader } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-wrap items-start justify-center gap-4">
21
+ <CdsSkeletonLoader type="article" width="260" />
22
+ <CdsSkeletonLoader type="card" width="260" />
23
+ <CdsSkeletonLoader type="list-item-avatar-three-line" width="260" />
24
+ <CdsSkeletonLoader type="table" width="360" />
25
+ </div>
26
+ </template>
27
+ ```
28
+
29
+ ## Your own structure
30
+
31
+ The type can be described with a string: a comma-separated list puts bones one after another, and `@N` repeats a bone N times. An array of strings works the same way as a comma-separated list.
32
+
33
+ **Example (SFC):**
34
+
35
+ ```vue
36
+ <script setup lang="ts">
37
+ import { CdsSkeletonLoader } from '@central-design-system/components';
38
+ </script>
39
+
40
+ <template>
41
+ <div class="flex flex-wrap items-start justify-center gap-4">
42
+ <CdsSkeletonLoader type="heading, text@3, actions" width="260" />
43
+ <CdsSkeletonLoader :type="['avatar', 'sentences', 'divider', 'button']" width="260" />
44
+ </div>
45
+ </template>
46
+ ```
47
+
48
+ ## Catalog of types
49
+
50
+ All the built-in types and their structures. Any of them can be inserted into your own string as a bone — `heading, table-row@3`.
51
+
52
+ **Example (SFC):**
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { CdsSkeletonLoader } from '@central-design-system/components';
57
+
58
+ import { allowedTypes } from '../../api/CdsSkeletonLoader.types';
59
+
60
+ const types = allowedTypes;
61
+ </script>
62
+
63
+ <template>
64
+ <div class="flex flex-col gap-4 max-w-[420px] m-auto">
65
+ <div v-for="(structure, type) in types" :key="type" class="flex flex-col gap-1">
66
+ <div class="text-sm">
67
+ <strong>{{ type }}</strong> — <code>{{ structure }}</code>
68
+ </div>
69
+ <CdsSkeletonLoader :type="type" boilerplate />
70
+ </div>
71
+ </div>
72
+ </template>
73
+ ```
74
+
75
+ ## Sizes
76
+
77
+ The `width`, `height`, `min-width` and `max-width` props set the size of the container — the bones stretch along it. Give the skeleton the same size as the future content, so that the layout does not jump when the data arrives.
78
+
79
+ **Example (SFC):**
80
+
81
+ ```vue
82
+ <script setup lang="ts">
83
+ import { CdsSkeletonLoader } from '@central-design-system/components';
84
+ </script>
85
+
86
+ <template>
87
+ <div class="flex flex-wrap items-start justify-center gap-4">
88
+ <CdsSkeletonLoader width="200" height="80" />
89
+ <CdsSkeletonLoader type="article" width="200" />
90
+ <CdsSkeletonLoader type="article" max-width="140" />
91
+ </div>
92
+ </template>
93
+ ```
94
+
95
+ ## Replacing the content
96
+
97
+ Put the content into the default slot: while `loading` is true, the skeleton is visible in its place, and afterwards — the content itself, with no wrapper. The `loading-text` prop sets the `aria-label` — a screen reader will announce what exactly is loading.
98
+
99
+ **Example (SFC):**
100
+
101
+ ```vue
102
+ <script setup lang="ts">
103
+ import {
104
+ CdsButton,
105
+ CdsCard,
106
+ CdsCardActions,
107
+ CdsCardItem,
108
+ CdsCardText,
109
+ CdsSkeletonLoader
110
+ } from '@central-design-system/components';
111
+ import { ref } from 'vue';
112
+
113
+ const isLoading = ref(true);
114
+ </script>
115
+
116
+ <template>
117
+ <div class="flex flex-col items-center gap-3">
118
+ <CdsButton appearance="secondary" text="Переключить загрузку" @click="isLoading = !isLoading" />
119
+
120
+ <CdsCard width="360">
121
+ <CdsSkeletonLoader :loading="isLoading" type="heading, text@2, actions" height="180">
122
+ <CdsCardItem title="Договор № 1024" subtitle="Поставка комплектующих" />
123
+ <CdsCardText>Срок исполнения — 14 дней с момента подписания.</CdsCardText>
124
+ <CdsCardActions align="end">
125
+ <CdsButton appearance="tertiary" text="Открыть" />
126
+ </CdsCardActions>
127
+ </CdsSkeletonLoader>
128
+ </CdsCard>
129
+ </div>
130
+ </template>
131
+ ```
132
+
133
+ ## Without animation
134
+
135
+ The `boilerplate` prop turns the shimmer off. Such a skeleton is a blank for mockups and static prototypes; on a live screen it does not communicate waiting.
136
+
137
+ **Example (SFC):**
138
+
139
+ ```vue
140
+ <script setup lang="ts">
141
+ import { CdsSkeletonLoader } from '@central-design-system/components';
142
+ </script>
143
+
144
+ <template>
145
+ <div class="flex flex-wrap items-start justify-center gap-4">
146
+ <CdsSkeletonLoader type="card-avatar, article, actions" width="260" />
147
+ <CdsSkeletonLoader type="card-avatar, article, actions" width="260" boilerplate />
148
+ </div>
149
+ </template>
150
+ ```
151
+
152
+ ## List of participants
153
+
154
+ While the list is loading, `type="list-item-avatar-two-line@3"` holds the space for three records: an avatar and two lines of text in each. The slot hands over the ready list as soon as the data arrives, so no `v-if` is needed in the template.
155
+
156
+ **Example (SFC):**
157
+
158
+ ```vue
159
+ <script setup lang="ts">
160
+ import { CdsAvatar, CdsButton, CdsSkeletonLoader } from '@central-design-system/components';
161
+ import { ref } from 'vue';
162
+
163
+ const isLoading = ref(true);
164
+
165
+ const members = [
166
+ { id: 1, initials: 'АС', name: 'Анна Соколова', role: 'Менеджер по закупкам' },
167
+ { id: 2, initials: 'ПК', name: 'Пётр Ковалёв', role: 'Юрист' },
168
+ { id: 3, initials: 'МЛ', name: 'Мария Лебедева', role: 'Бухгалтер' }
169
+ ];
170
+
171
+ function load() {
172
+ isLoading.value = true;
173
+ setTimeout(() => (isLoading.value = false), 1500);
174
+ }
175
+
176
+ load();
177
+ </script>
178
+
179
+ <template>
180
+ <div class="flex flex-col gap-3 w-[320px] m-auto">
181
+ <CdsButton appearance="secondary" text="Загрузить заново" :disabled="isLoading" @click="load" />
182
+
183
+ <CdsSkeletonLoader :loading="isLoading" type="list-item-avatar-two-line@3" loading-text="Загружаем участников">
184
+ <div class="flex flex-col gap-3">
185
+ <div v-for="member in members" :key="member.id" class="flex items-center gap-2">
186
+ <CdsAvatar :content="member.initials" />
187
+ <div class="flex flex-col">
188
+ <span class="font-medium">{{ member.name }}</span>
189
+ <span class="text-sm opacity-70">{{ member.role }}</span>
190
+ </div>
191
+ </div>
192
+ </div>
193
+ </CdsSkeletonLoader>
194
+ </div>
195
+ </template>
196
+ ```
197
+
198
+ ## Table of contracts
199
+
200
+ A skeleton of `table-heading, table-row@3` repeats the header and the rows of the table, and `loading-text` explains the wait to the screen reader. The number of rows matches the page size of the data — after loading, the height of the block does not change.
201
+
202
+ **Example (SFC):**
203
+
204
+ ```vue
205
+ <script setup lang="ts">
206
+ import { CdsButton, CdsSkeletonLoader } from '@central-design-system/components';
207
+ import { ref } from 'vue';
208
+
209
+ const isLoading = ref(true);
210
+
211
+ const rows = [
212
+ { id: 1, number: '1024', customer: 'ООО «Ромашка»', sum: '120 000 ₽' },
213
+ { id: 2, number: '1025', customer: 'АО «Вектор»', sum: '86 400 ₽' },
214
+ { id: 3, number: '1026', customer: 'ИП Смирнов', sum: '15 900 ₽' }
215
+ ];
216
+
217
+ function load() {
218
+ isLoading.value = true;
219
+ setTimeout(() => (isLoading.value = false), 1500);
220
+ }
221
+
222
+ load();
223
+ </script>
224
+
225
+ <template>
226
+ <div class="flex flex-col gap-3 w-[420px] m-auto">
227
+ <CdsButton appearance="secondary" text="Обновить данные" :disabled="isLoading" @click="load" />
228
+
229
+ <CdsSkeletonLoader :loading="isLoading" type="table-heading, table-row@3" loading-text="Загружаем договоры">
230
+ <table class="w-full text-left">
231
+ <thead>
232
+ <tr class="text-sm opacity-70">
233
+ <th class="py-1 font-medium">Номер</th>
234
+ <th class="py-1 font-medium">Заказчик</th>
235
+ <th class="py-1 font-medium">Сумма</th>
236
+ </tr>
237
+ </thead>
238
+ <tbody>
239
+ <tr v-for="row in rows" :key="row.id">
240
+ <td class="py-1">{{ row.number }}</td>
241
+ <td class="py-1">{{ row.customer }}</td>
242
+ <td class="py-1">{{ row.sum }}</td>
243
+ </tr>
244
+ </tbody>
245
+ </table>
246
+ </CdsSkeletonLoader>
247
+ </div>
248
+ </template>
249
+ ```
250
+
251
+ ## Page frame
252
+
253
+ On the first load of a page the blocks load independently, so each one has its own skeleton: the list of sections is `list-item@4`, the content is `heading, paragraph, paragraph`. A block that is ready appears right away, without waiting for its neighbor.
254
+
255
+ **Example (SFC):**
256
+
257
+ ```vue
258
+ <script setup lang="ts">
259
+ import { CdsButton, CdsLink, CdsSkeletonLoader } from '@central-design-system/components';
260
+ import { ref } from 'vue';
261
+
262
+ const isLoading = ref(true);
263
+
264
+ const sections = ['Общие сведения', 'Документы', 'Участники', 'История'];
265
+
266
+ function load() {
267
+ isLoading.value = true;
268
+ setTimeout(() => (isLoading.value = false), 1500);
269
+ }
270
+
271
+ load();
272
+ </script>
273
+
274
+ <template>
275
+ <div class="flex flex-col gap-4 w-[460px] m-auto">
276
+ <CdsButton appearance="secondary" text="Открыть страницу заново" :disabled="isLoading" @click="load" />
277
+
278
+ <div class="grid grid-cols-[150px_1fr] gap-4">
279
+ <CdsSkeletonLoader :loading="isLoading" type="list-item@4" loading-text="Загружаем разделы">
280
+ <nav class="flex flex-col gap-2">
281
+ <CdsLink v-for="section in sections" :key="section" href="#" :text="section" />
282
+ </nav>
283
+ </CdsSkeletonLoader>
284
+
285
+ <CdsSkeletonLoader :loading="isLoading" type="heading, paragraph, paragraph" loading-text="Загружаем описание">
286
+ <article class="flex flex-col gap-2">
287
+ <h3 class="font-medium">Закупка комплектующих</h3>
288
+ <p class="text-sm">
289
+ Заказчик принимает заявки до 20 числа. Победитель определяется по совокупности цены и срока поставки.
290
+ </p>
291
+ <p class="text-sm">Документы можно подать в электронном виде — подписанные квалифицированной подписью.</p>
292
+ </article>
293
+ </CdsSkeletonLoader>
294
+ </div>
295
+ </div>
296
+ </template>
297
+ ```