@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,653 @@
1
+ # CdsList — 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 list shows a set of records of the same kind — menu sections, documents, employees, settings — so that the one you need is easy to find and pick. Build it from an `items` array in a single line, or from `CdsListItem` components when a row is more than a title with an icon.
7
+
8
+ ## List data
9
+
10
+ The `items` prop takes an array of objects and builds the whole list out of it. The `title` field gives the heading, `value` — the value of the item (this is how the list knows what is selected), `props` — any props of `CdsListItem`.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsList } from '@central-design-system/components';
17
+
18
+ const items = [
19
+ { title: 'Профиль', value: 'profile', props: { prependIcon: 'user-avatar' } },
20
+ { title: 'Организация', value: 'company', props: { prependIcon: 'company' } },
21
+ { title: 'Сотрудники', value: 'employees', props: { prependIcon: 'user-group' } },
22
+ { title: 'Настройки', value: 'settings', props: { prependIcon: 'settings' } }
23
+ ];
24
+ </script>
25
+
26
+ <template>
27
+ <CdsList class="m-auto w-[200px]" :items="items" />
28
+ </template>
29
+ ```
30
+
31
+ ## List data
32
+
33
+ When the data arrives from the server in its own format, do not reshape it: `item-title`, `item-value` and `item-children` tell the list which fields to take. Each of them accepts both a field name and a function — that way, for example, `item-props` assembles the props of an item from several fields of the object.
34
+
35
+ **Example (SFC):**
36
+
37
+ ```vue
38
+ <script setup lang="ts">
39
+ import { CdsList } from '@central-design-system/components';
40
+
41
+ const employees = [
42
+ { id: 1, name: 'Анна Смирнова', role: 'Руководитель отдела закупок' },
43
+ { id: 2, name: 'Дмитрий Орлов', role: 'Менеджер по тендерам' },
44
+ { id: 3, name: 'Елена Васильева', role: 'Юрист' },
45
+ { id: 4, name: 'Игорь Крылов', role: 'Бухгалтер' }
46
+ ];
47
+ </script>
48
+
49
+ <template>
50
+ <CdsList
51
+ class="m-auto w-[250px]"
52
+ :items="employees"
53
+ item-title="name"
54
+ item-value="id"
55
+ :item-props="(item: Record<string, any>) => ({ subtitle: item.role, prependIcon: 'user-avatar' })"
56
+ lines="two"
57
+ />
58
+ </template>
59
+ ```
60
+
61
+ ## List data
62
+
63
+ The `props` field configures a single item: adds icons, turns on the active state or disables the row.
64
+
65
+ **Example (SFC):**
66
+
67
+ ```vue
68
+ <script setup lang="ts">
69
+ import { CdsList } from '@central-design-system/components';
70
+
71
+ const items = [
72
+ { title: 'Черновик', value: 'draft', props: { prependIcon: 'doc' } },
73
+ { title: 'На согласовании', value: 'review', props: { prependIcon: 'clock', appendIcon: 'chevron-right' } },
74
+ { title: 'Опубликован', value: 'published', props: { prependIcon: 'check', active: true } },
75
+ { title: 'В архиве', value: 'archived', props: { prependIcon: 'archive', disabled: true } }
76
+ ];
77
+ </script>
78
+
79
+ <template>
80
+ <CdsList class="m-auto w-[280px]" :items="items" />
81
+ </template>
82
+ ```
83
+
84
+ ## Item content
85
+
86
+ An item has three text blocks: `title` names the record, `subtitle` refines it, `description` adds an explanation. On the sides stand an icon (`prepend-icon`, `append-icon`) or an avatar (`prepend-avatar`, `append-avatar`).
87
+
88
+ **Example (SFC):**
89
+
90
+ ```vue
91
+ <script setup lang="ts">
92
+ import { CdsList, CdsListItem } from '@central-design-system/components';
93
+ </script>
94
+
95
+ <template>
96
+ <CdsList class="m-auto w-[360px]" :lines="false">
97
+ <CdsListItem prepend-icon="doc" title="Счёт на оплату № 5512" />
98
+
99
+ <CdsListItem prepend-icon="doc" title="Договор аренды № 17" subtitle="ООО «Ромашка»" />
100
+
101
+ <CdsListItem
102
+ prepend-icon="doc"
103
+ append-icon="chevron-right"
104
+ title="Акт сверки за март"
105
+ subtitle="ООО «Ромашка»"
106
+ description="Ожидает подписания второй стороной"
107
+ />
108
+
109
+ <CdsListItem
110
+ prepend-avatar="https://i.pravatar.cc/80?img=47"
111
+ title="Анна Смирнова"
112
+ subtitle="Руководитель отдела закупок"
113
+ />
114
+ </CdsList>
115
+ </template>
116
+ ```
117
+
118
+ ## Item content
119
+
120
+ The `lines` prop limits the subtitle and the description to one, two or three lines — the rest of the text is truncated with an ellipsis, and records with text of different length keep a common rhythm. With `three`, the icons in the `prepend` and `append` areas align to the top of the record instead of its center. `:lines="false"` removes the limit — the text takes as many lines as it needs.
121
+
122
+ **Example (SFC):**
123
+
124
+ ```vue
125
+ <script setup lang="ts">
126
+ import { CdsList } from '@central-design-system/components';
127
+
128
+ const lines = ['one', 'two', 'three'] as const;
129
+
130
+ const items = [
131
+ {
132
+ title: 'Договор поставки № 42 от 14 марта',
133
+ value: 'supply',
134
+ props: {
135
+ prependIcon: 'doc',
136
+ subtitle:
137
+ 'ООО «Ромашка» · поставка канцелярии и расходных материалов для филиалов в Москве и Санкт-Петербурге до конца квартала'
138
+ }
139
+ },
140
+ {
141
+ title: 'Акт сверки взаиморасчётов за март',
142
+ value: 'act',
143
+ props: {
144
+ prependIcon: 'doc',
145
+ subtitle: 'ООО «Василёк» · расхождений не выявлено, подписан обеими сторонами 12 марта'
146
+ }
147
+ }
148
+ ];
149
+ </script>
150
+
151
+ <template>
152
+ <div class="m-auto flex flex-wrap justify-center gap-4">
153
+ <div v-for="line of lines" :key="line" class="flex w-[280px] flex-col gap-1">
154
+ <span class="text-100 text-content-secondary">lines="{{ line }}"</span>
155
+ <CdsList :items="items" :lines="line" />
156
+ </div>
157
+ </div>
158
+ </template>
159
+ ```
160
+
161
+ ## Structure
162
+
163
+ Items with `type: 'subheader'` and `type: 'divider'` split the list into sections: a subheader names a group of records, a divider separates blocks without a heading.
164
+
165
+ **Example (SFC):**
166
+
167
+ ```vue
168
+ <script setup lang="ts">
169
+ import { CdsList } from '@central-design-system/components';
170
+
171
+ const items = [
172
+ { type: 'subheader', title: 'Сегодня' },
173
+ { title: 'Договор поставки № 42', value: 'supply', props: { prependIcon: 'doc' } },
174
+ { title: 'Счёт на оплату № 5512', value: 'invoice', props: { prependIcon: 'doc' } },
175
+ { type: 'divider' },
176
+ { type: 'subheader', title: 'На прошлой неделе' },
177
+ { title: 'Акт сверки за март', value: 'act', props: { prependIcon: 'doc' } },
178
+ { title: 'Договор аренды № 17', value: 'rent', props: { prependIcon: 'doc' } },
179
+ { title: 'Спецификация № 3', value: 'spec', props: { prependIcon: 'doc' } }
180
+ ];
181
+ </script>
182
+
183
+ <template>
184
+ <CdsList class="m-auto w-[250px]" :items="items" />
185
+ </template>
186
+ ```
187
+
188
+ ## Structure
189
+
190
+ A `children` array inside an item turns it into an expandable group — the list manages its state on its own, and `v-model:opened` lets you manage it from the outside. Nesting is not limited to a single level.
191
+
192
+ **Example (SFC):**
193
+
194
+ ```vue
195
+ <script setup lang="ts">
196
+ import { CdsList } from '@central-design-system/components';
197
+ import { ref } from 'vue';
198
+
199
+ const opened = ref(['contracts']);
200
+
201
+ const items = [
202
+ { title: 'Все документы', value: 'all', props: { prependIcon: 'directory' } },
203
+ {
204
+ title: 'Договоры',
205
+ value: 'contracts',
206
+ props: { prependIcon: 'directory' },
207
+ children: [
208
+ { title: 'Поставка', value: 'supply', props: { prependIcon: 'doc' } },
209
+ { title: 'Аренда', value: 'rent', props: { prependIcon: 'doc' } },
210
+ {
211
+ title: 'Услуги',
212
+ value: 'services',
213
+ props: { prependIcon: 'directory' },
214
+ children: [
215
+ { title: 'Разовые', value: 'services-single', props: { prependIcon: 'doc' } },
216
+ { title: 'Абонентские', value: 'services-regular', props: { prependIcon: 'doc' } }
217
+ ]
218
+ }
219
+ ]
220
+ },
221
+ {
222
+ title: 'Бухгалтерия',
223
+ value: 'accounting',
224
+ props: { prependIcon: 'directory' },
225
+ children: [
226
+ { title: 'Счета', value: 'invoices', props: { prependIcon: 'doc' } },
227
+ { title: 'Акты сверки', value: 'acts', props: { prependIcon: 'doc' } }
228
+ ]
229
+ }
230
+ ];
231
+ </script>
232
+
233
+ <template>
234
+ <CdsList v-model:opened="opened" class="m-auto w-[250px]" :items="items" />
235
+ </template>
236
+ ```
237
+
238
+ ## Selection and activation
239
+
240
+ The `activatable` prop highlights one item as the current one — this is about navigation: "you are here". `selectable` turns on picking records — this is about data: "send these ones". Both states are read through `v-model:activated` and `v-model:selected`, and `select-strategy` sets how many items can be picked at once: `single-leaf` (the default) — one, `independent` — as many as you like.
241
+
242
+ **Example (SFC):**
243
+
244
+ ```vue
245
+ <script setup lang="ts">
246
+ import { CdsList } from '@central-design-system/components';
247
+ import { ref } from 'vue';
248
+
249
+ const items = [
250
+ { title: 'Договоры', value: 'contracts' },
251
+ { title: 'Счета', value: 'invoices' },
252
+ { title: 'Акты сверки', value: 'acts' },
253
+ { title: 'Отчёты', value: 'reports' }
254
+ ];
255
+
256
+ const activated = ref(['contracts']);
257
+ const selected = ref(['invoices', 'acts']);
258
+ </script>
259
+
260
+ <template>
261
+ <div class="m-auto flex flex-wrap justify-center gap-4">
262
+ <div class="flex w-[260px] flex-col gap-1">
263
+ <span class="text-100 text-content-secondary">activatable — один активный элемент</span>
264
+ <CdsList v-model:activated="activated" activatable :items="items" />
265
+ <span class="text-100 text-content-secondary">activated: {{ activated }}</span>
266
+ </div>
267
+
268
+ <div class="flex w-[260px] flex-col gap-1">
269
+ <span class="text-100 text-content-secondary">selectable + select-strategy="independent"</span>
270
+ <CdsList v-model:selected="selected" selectable select-strategy="independent" :items="items" />
271
+ <span class="text-100 text-content-secondary">selected: {{ selected }}</span>
272
+ </div>
273
+ </div>
274
+ </template>
275
+ ```
276
+
277
+ ## Appearance
278
+
279
+ `nav` rounds the corners of active items — the look of a side menu. `slim` removes the inner paddings when the list sits in a narrow panel or a dropdown. `color` sets the color of active items, `bg-color` — the background of the list.
280
+
281
+ **Example (SFC):**
282
+
283
+ ```vue
284
+ <script setup lang="ts">
285
+ import { CdsList } from '@central-design-system/components';
286
+
287
+ const items = [
288
+ { title: 'Профиль', value: 'profile', props: { prependIcon: 'user-avatar' } },
289
+ { title: 'Организация', value: 'company', props: { prependIcon: 'company', active: true } },
290
+ { title: 'Настройки', value: 'settings', props: { prependIcon: 'settings' } }
291
+ ];
292
+ </script>
293
+
294
+ <template>
295
+ <div class="m-auto flex flex-wrap justify-center gap-4">
296
+ <div class="flex w-[240px] flex-col gap-1">
297
+ <span class="text-100 text-content-secondary">по умолчанию</span>
298
+ <CdsList :items="items" />
299
+ </div>
300
+
301
+ <div class="flex w-[240px] flex-col gap-1">
302
+ <span class="text-100 text-content-secondary">nav</span>
303
+ <CdsList nav :items="items" />
304
+ </div>
305
+
306
+ <div class="flex w-[240px] flex-col gap-1">
307
+ <span class="text-100 text-content-secondary">slim</span>
308
+ <CdsList slim :items="items" />
309
+ </div>
310
+
311
+ <div class="flex w-[240px] flex-col gap-1">
312
+ <span class="text-100 text-content-secondary">color="brand-primary"</span>
313
+ <CdsList color="brand-primary" :items="items" />
314
+ </div>
315
+ </div>
316
+ </template>
317
+ ```
318
+
319
+ ## Assembling from components
320
+
321
+ When a row is more than a title with an icon, assemble it from `CdsListItem` by hand — the slots accept any components: tags, badges, avatars, buttons.
322
+
323
+ **Example (SFC):**
324
+
325
+ ```vue
326
+ <script setup lang="ts">
327
+ import {
328
+ CdsAvatar,
329
+ CdsBadge,
330
+ CdsFunctionalButton,
331
+ CdsIcon,
332
+ CdsList,
333
+ CdsListItem,
334
+ CdsTag
335
+ } from '@central-design-system/components';
336
+ </script>
337
+
338
+ <template>
339
+ <CdsList class="m-auto w-[300px]" lines="two">
340
+ <CdsListItem value="supply">
341
+ <template #prepend>
342
+ <CdsIcon name="doc" />
343
+ </template>
344
+ <template #title>Договор поставки № 42</template>
345
+ <template #subtitle>ООО «Ромашка»</template>
346
+ <template #append>
347
+ <CdsTag size="sm" text="Подписан" color="green" />
348
+ </template>
349
+ </CdsListItem>
350
+
351
+ <CdsListItem value="act">
352
+ <template #prepend>
353
+ <CdsIcon name="doc" />
354
+ </template>
355
+ <template #title>Акт сверки за март</template>
356
+ <template #subtitle>ООО «Василёк»</template>
357
+ <template #append>
358
+ <CdsBadge inline content="3" />
359
+ </template>
360
+ </CdsListItem>
361
+
362
+ <CdsListItem value="manager">
363
+ <template #prepend>
364
+ <CdsAvatar size="sm" image="https://i.pravatar.cc/80?img=47" />
365
+ </template>
366
+ <template #title>Анна Смирнова</template>
367
+ <template #subtitle>Ответственная за закупку</template>
368
+ <template #append>
369
+ <CdsFunctionalButton icon="overflow-menu-vertical" aria-label="Ещё" />
370
+ </template>
371
+ </CdsListItem>
372
+ </CdsList>
373
+ </template>
374
+ ```
375
+
376
+ ## Assembling from components
377
+
378
+ The group passes the arrow to the activator as the default value for `append-icon`, and the `append` slot replaces that area entirely — so with your own content the arrow disappears. Bring it back with an empty `<CdsIcon />` next to it: the icon picks up the direction of the arrow from the defaults of the group and keeps toggling on expand.
379
+
380
+ **Example (SFC):**
381
+
382
+ ```vue
383
+ <script setup lang="ts">
384
+ import { CdsBadge, CdsIcon, CdsList, CdsListGroup, CdsListItem } from '@central-design-system/components';
385
+ </script>
386
+
387
+ <template>
388
+ <CdsList class="m-auto w-[250px]">
389
+ <CdsListItem value="all">
390
+ <template #prepend>
391
+ <CdsIcon name="directory" />
392
+ </template>
393
+ <template #title>Все документы</template>
394
+ </CdsListItem>
395
+
396
+ <CdsListGroup value="contracts">
397
+ <template #activator="{ props }">
398
+ <CdsListItem v-bind="props" value="contracts">
399
+ <template #prepend>
400
+ <CdsIcon name="directory" />
401
+ </template>
402
+ <template #title>Договоры</template>
403
+ <template #append>
404
+ <CdsBadge class="mr-2" inline content="12" />
405
+ <CdsIcon />
406
+ </template>
407
+ </CdsListItem>
408
+ </template>
409
+
410
+ <CdsListItem value="supply">
411
+ <template #prepend>
412
+ <CdsIcon name="doc" />
413
+ </template>
414
+ <template #title>Поставка</template>
415
+ </CdsListItem>
416
+
417
+ <CdsListItem value="rent">
418
+ <template #prepend>
419
+ <CdsIcon name="doc" />
420
+ </template>
421
+ <template #title>Аренда</template>
422
+ </CdsListItem>
423
+
424
+ <CdsListGroup value="services" subgroup>
425
+ <template #activator="{ props }">
426
+ <CdsListItem v-bind="props" value="services">
427
+ <template #title>Услуги</template>
428
+ </CdsListItem>
429
+ </template>
430
+
431
+ <CdsListItem value="services-single">
432
+ <template #prepend>
433
+ <CdsIcon name="doc" />
434
+ </template>
435
+ <template #title>Разовые</template>
436
+ </CdsListItem>
437
+
438
+ <CdsListItem value="services-regular">
439
+ <template #prepend>
440
+ <CdsIcon name="doc" />
441
+ </template>
442
+ <template #title>Абонентские</template>
443
+ </CdsListItem>
444
+ </CdsListGroup>
445
+ </CdsListGroup>
446
+
447
+ <CdsListGroup value="accounting">
448
+ <template #activator="{ props }">
449
+ <CdsListItem v-bind="props" value="accounting">
450
+ <template #prepend>
451
+ <CdsIcon name="directory" />
452
+ </template>
453
+ <template #title>Бухгалтерия</template>
454
+ </CdsListItem>
455
+ </template>
456
+
457
+ <CdsListItem value="invoices">
458
+ <template #prepend>
459
+ <CdsIcon name="doc" />
460
+ </template>
461
+ <template #title>Счета</template>
462
+ </CdsListItem>
463
+
464
+ <CdsListItem value="acts">
465
+ <template #prepend>
466
+ <CdsIcon name="doc" />
467
+ </template>
468
+ <template #title>Акты сверки</template>
469
+ </CdsListItem>
470
+ </CdsListGroup>
471
+ </CdsList>
472
+ </template>
473
+ ```
474
+
475
+ ## Section menu
476
+
477
+ A side menu is `activatable` plus `nav`: exactly one entry is active, `mandatory` forbids clearing the selection, and `v-model:activated` keeps the current section in the application state. Subheaders split the entries into meaningful blocks.
478
+
479
+ **Example (SFC):**
480
+
481
+ ```vue
482
+ <script setup lang="ts">
483
+ import { CdsList } from '@central-design-system/components';
484
+ import { computed, ref } from 'vue';
485
+
486
+ const activated = ref(['contracts']);
487
+
488
+ const items: { type?: string; title: string; value?: string; props?: Record<string, unknown> }[] = [
489
+ { type: 'subheader', title: 'Работа' },
490
+ { title: 'Закупки', value: 'purchases', props: { prependIcon: 'shopping-cart' } },
491
+ { title: 'Договоры', value: 'contracts', props: { prependIcon: 'doc' } },
492
+ { title: 'Поставщики', value: 'suppliers', props: { prependIcon: 'company' } },
493
+ { type: 'subheader', title: 'Настройки' },
494
+ { title: 'Сотрудники', value: 'employees', props: { prependIcon: 'user-group' } },
495
+ { title: 'Уведомления', value: 'notifications', props: { prependIcon: 'notification' } }
496
+ ];
497
+
498
+ const current = computed(() => items.find((item) => item.value === activated.value[0])?.title ?? 'ничего');
499
+ </script>
500
+
501
+ <template>
502
+ <div class="m-auto flex w-[250px] flex-col gap-2">
503
+ <CdsList v-model:activated="activated" activatable nav mandatory :items="items" />
504
+
505
+ <span class="text-100 text-content-secondary">Открыт раздел: {{ current }}</span>
506
+ </div>
507
+ </template>
508
+ ```
509
+
510
+ ## Document list with actions
511
+
512
+ The whole row stays clickable, and the action in the `append` area works on top of it — that is why the button has `@click.stop`, otherwise the click would reach the item and select it. The status next to the button is a regular [CdsTag](../cds-tag/api.md).
513
+
514
+ **Example (SFC):**
515
+
516
+ ```vue
517
+ <script setup lang="ts">
518
+ import { CdsFunctionalButton, CdsList, CdsListItem, CdsTag } from '@central-design-system/components';
519
+ import { ref } from 'vue';
520
+
521
+ const documents = ref([
522
+ { id: 1, title: 'Договор поставки № 42', company: 'ООО «Ромашка»', status: 'Подписан' },
523
+ { id: 2, title: 'Акт сверки за март', company: 'ООО «Василёк»', status: 'На согласовании' },
524
+ { id: 3, title: 'Счёт на оплату № 5512', company: 'ООО «Ромашка»', status: 'Черновик' }
525
+ ]);
526
+
527
+ const removed = ref<string[]>([]);
528
+
529
+ function remove(id: number) {
530
+ const document = documents.value.find((item) => item.id === id);
531
+ if (!document) return;
532
+
533
+ removed.value = [...removed.value, document.title];
534
+ documents.value = documents.value.filter((item) => item.id !== id);
535
+ }
536
+ </script>
537
+
538
+ <template>
539
+ <div class="m-auto flex w-[380px] flex-col gap-2">
540
+ <CdsList lines="two">
541
+ <CdsListItem
542
+ v-for="document of documents"
543
+ :key="document.id"
544
+ :value="document.id"
545
+ prepend-icon="doc"
546
+ :title="document.title"
547
+ :subtitle="document.company"
548
+ >
549
+ <template #append>
550
+ <div class="flex items-center gap-2">
551
+ <CdsTag size="sm" :text="document.status" />
552
+ <CdsFunctionalButton icon="delete" aria-label="Удалить документ" @click.stop="remove(document.id)" />
553
+ </div>
554
+ </template>
555
+ </CdsListItem>
556
+ </CdsList>
557
+
558
+ <span v-if="removed.length" class="text-100 text-content-secondary">Удалено: {{ removed.join(', ') }}</span>
559
+ </div>
560
+ </template>
561
+ ```
562
+
563
+ ## Picking recipients
564
+
565
+ The `prepend` slot receives `isSelected` and `select` — the selection state and the function that changes it. This lets you show a checkbox while keeping the click on the whole row: `CdsListItemAction` aligns it to the grid of the item, and `CdsAvatar` stands next to it.
566
+
567
+ **Example (SFC):**
568
+
569
+ ```vue
570
+ <script setup lang="ts">
571
+ import { CdsAvatar, CdsCheckbox, CdsList, CdsListItem, CdsListItemAction } from '@central-design-system/components';
572
+ import { computed, ref } from 'vue';
573
+
574
+ const people = [
575
+ { name: 'Анна Смирнова', email: 'a.smirnova@example.com', image: 'https://i.pravatar.cc/80?img=47' },
576
+ { name: 'Дмитрий Орлов', email: 'd.orlov@example.com', image: 'https://i.pravatar.cc/80?img=12' },
577
+ { name: 'Елена Васильева', email: 'e.vasileva@example.com', image: 'https://i.pravatar.cc/80?img=44' },
578
+ { name: 'Игорь Крылов', email: 'i.krylov@example.com', image: 'https://i.pravatar.cc/80?img=32' }
579
+ ];
580
+
581
+ const selected = ref(['a.smirnova@example.com']);
582
+
583
+ const summary = computed(() =>
584
+ selected.value.length ? `Выбрано получателей: ${selected.value.length}` : 'Получатели не выбраны'
585
+ );
586
+ </script>
587
+
588
+ <template>
589
+ <div class="m-auto flex w-[300px] flex-col gap-2">
590
+ <CdsList v-model:selected="selected" selectable select-strategy="independent" lines="two">
591
+ <CdsListItem v-for="person of people" :key="person.email" :value="person.email" :title="person.name">
592
+ <template #prepend="{ isSelected, select }">
593
+ <CdsListItemAction start>
594
+ <CdsCheckbox :model-value="isSelected" hide-details tabindex="-1" @update:model-value="select" />
595
+ </CdsListItemAction>
596
+
597
+ <CdsAvatar size="sm" :image="person.image" />
598
+ </template>
599
+
600
+ <template #subtitle>{{ person.email }}</template>
601
+ </CdsListItem>
602
+ </CdsList>
603
+
604
+ <span class="text-100 text-content-secondary">{{ summary }}</span>
605
+ </div>
606
+ </template>
607
+ ```
608
+
609
+ ## Searching through a list
610
+
611
+ The list is rebuilt from the filtered array — it needs no logic of its own. When there are no matches, a [CdsEmptyState](../cds-empty-state/api.md) is shown instead of an empty list: the user understands that the reason is the query, not the loading.
612
+
613
+ **Example (SFC):**
614
+
615
+ ```vue
616
+ <script setup lang="ts">
617
+ import { CdsEmptyState, CdsList, CdsTextInput } from '@central-design-system/components';
618
+ import { computed, ref } from 'vue';
619
+
620
+ const query = ref('');
621
+
622
+ const suppliers = [
623
+ { title: 'ООО «Ромашка»', value: 'romashka', props: { prependIcon: 'company', subtitle: 'Канцелярия' } },
624
+ { title: 'ООО «Василёк»', value: 'vasilek', props: { prependIcon: 'company', subtitle: 'Логистика' } },
625
+ {
626
+ title: 'АО «Северсталь-Комплект»',
627
+ value: 'severstal',
628
+ props: { prependIcon: 'company', subtitle: 'Металлопрокат' }
629
+ },
630
+ { title: 'ИП Кузнецов А. В.', value: 'kuznecov', props: { prependIcon: 'company', subtitle: 'Ремонт техники' } }
631
+ ];
632
+
633
+ const filtered = computed(() =>
634
+ suppliers.filter((supplier) => supplier.title.toLowerCase().includes(query.value.trim().toLowerCase()))
635
+ );
636
+ </script>
637
+
638
+ <template>
639
+ <div class="m-auto flex w-[300px] flex-col gap-2">
640
+ <CdsTextInput
641
+ v-model="query"
642
+ placeholder="Поиск по поставщикам"
643
+ prepend-inner-icon="search"
644
+ clearable
645
+ hide-details
646
+ />
647
+
648
+ <CdsList v-if="filtered.length" :items="filtered" lines="two" />
649
+
650
+ <CdsEmptyState v-else title="Ничего не найдено" description="Проверьте написание или очистите запрос" />
651
+ </div>
652
+ </template>
653
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsList — guidelines
2
+
3
+ > Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md).
5
+
6
+ | ✅ Do | ❌ Don't |
7
+ | --- | --- |
8
+ | A short title names the record — the eye compares items along a single trait. | A paragraph of text in a row turns the list into an article: scanning no longer finds anything. |
9
+ | A long enumeration is split by subheaders — it is clear where to look for the record you need. | A solid list with no grouping has to be read in full. |
10
+ | One action per row, the rest in a menu: the item as a whole stays clickable. | A row of buttons in every line overloads the list and makes the item itself hard to hit. |