@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,313 @@
1
+ # CdsHighlight — 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
+ Highlighting explains why a row made it into the results: the component finds the matches with the query (`query`) or with ready ranges (`matches`) in the text and wraps them into `mark`. Take it for search results, autocomplete suggestions and filtered lists.
7
+
8
+ ## Search query
9
+
10
+ The `text` prop takes the source string, `query` takes what the user was looking for. The query can be a string or an array of terms: all of them get highlighted.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsHighlight } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-col items-center gap-2">
21
+ <CdsHighlight
22
+ class="text-900 text-content-primary"
23
+ text="Шаблоны: договор поставки, договор аренды и договор подряда"
24
+ query="договор"
25
+ />
26
+
27
+ <CdsHighlight
28
+ class="text-900 text-content-primary"
29
+ text="Шаблоны: договор поставки, договор аренды и договор подряда"
30
+ :query="['поставки', 'подряда']"
31
+ />
32
+ </div>
33
+ </template>
34
+ ```
35
+
36
+ ## All occurrences
37
+
38
+ By default the first occurrence of every term is highlighted. The `match-all` prop highlights all of them — in a long text this shows the full picture.
39
+
40
+ **Example (SFC):**
41
+
42
+ ```vue
43
+ <script setup lang="ts">
44
+ import { CdsHighlight } from '@central-design-system/components';
45
+ </script>
46
+
47
+ <template>
48
+ <div class="flex flex-col items-center gap-2">
49
+ <CdsHighlight
50
+ class="text-900 text-content-primary"
51
+ text="Шаблоны: договор поставки, договор аренды и договор подряда"
52
+ query="договор"
53
+ />
54
+
55
+ <CdsHighlight
56
+ class="text-900 text-content-primary"
57
+ text="Шаблоны: договор поставки, договор аренды и договор подряда"
58
+ query="договор"
59
+ match-all
60
+ />
61
+ </div>
62
+ </template>
63
+ ```
64
+
65
+ ## Case
66
+
67
+ The `ignore-case` prop looks for matches regardless of the case. You need it almost always when the query is typed by the user.
68
+
69
+ **Example (SFC):**
70
+
71
+ ```vue
72
+ <script setup lang="ts">
73
+ import { CdsHighlight } from '@central-design-system/components';
74
+ </script>
75
+
76
+ <template>
77
+ <div class="flex flex-col items-center gap-2">
78
+ <CdsHighlight class="text-900 text-content-primary" text="ИНН, Инн и инн — одно и то же" query="инн" match-all />
79
+
80
+ <CdsHighlight
81
+ class="text-900 text-content-primary"
82
+ text="ИНН, Инн и инн — одно и то же"
83
+ query="инн"
84
+ match-all
85
+ ignore-case
86
+ />
87
+ </div>
88
+ </template>
89
+ ```
90
+
91
+ ## Ready ranges
92
+
93
+ When the matches are found by the server rather than by the browser, pass them into `matches` — an array of `[start, end]` pairs by the indexes of the source string. The ranges take precedence over `query`, and overlapping ones are merged automatically.
94
+
95
+ **Example (SFC):**
96
+
97
+ ```vue
98
+ <script setup lang="ts">
99
+ import { CdsHighlight } from '@central-design-system/components';
100
+
101
+ // Диапазоны [start, end] в исходной строке: «канцелярских товаров» и «офиса»
102
+ const matches = [
103
+ [28, 48],
104
+ [67, 72]
105
+ ] as const;
106
+ </script>
107
+
108
+ <template>
109
+ <div class="flex justify-center">
110
+ <CdsHighlight
111
+ class="text-900 text-content-primary"
112
+ text="Заявка на участие в закупке канцелярских товаров для регионального офиса"
113
+ :matches="matches"
114
+ />
115
+ </div>
116
+ </template>
117
+ ```
118
+
119
+ ## Color and density
120
+
121
+ The `color` prop sets the color of the highlighting — the background is tinted with it too, so a single value is enough. `opacity` changes the density of the background.
122
+
123
+ **Example (SFC):**
124
+
125
+ ```vue
126
+ <script setup lang="ts">
127
+ import { CdsHighlight } from '@central-design-system/components';
128
+ </script>
129
+
130
+ <template>
131
+ <div class="flex flex-col items-center gap-2">
132
+ <CdsHighlight class="text-900 text-content-primary" text="Подсветка цветом по умолчанию" query="по умолчанию" />
133
+
134
+ <CdsHighlight
135
+ class="text-900 text-content-primary"
136
+ text="Подсветка цветом бренда"
137
+ query="цветом бренда"
138
+ color="brand-primary"
139
+ />
140
+
141
+ <CdsHighlight
142
+ class="text-900 text-content-primary"
143
+ text="Более плотный фон подсветки"
144
+ query="плотный фон"
145
+ color="green"
146
+ opacity="28%"
147
+ />
148
+ </div>
149
+ </template>
150
+ ```
151
+
152
+ ## Markup
153
+
154
+ The `tag` prop sets the tag of the wrapper (`span` by default), `mark-class` adds your own class to every match.
155
+
156
+ **Example (SFC):**
157
+
158
+ ```vue
159
+ <script setup lang="ts">
160
+ import { CdsHighlight } from '@central-design-system/components';
161
+ </script>
162
+
163
+ <template>
164
+ <div class="flex flex-col items-center gap-2">
165
+ <CdsHighlight
166
+ class="text-900 text-content-primary"
167
+ tag="p"
168
+ text="Подсветка внутри абзаца: тег задаётся пропом tag"
169
+ query="внутри абзаца"
170
+ />
171
+
172
+ <CdsHighlight
173
+ class="text-900 text-content-primary"
174
+ text="Совпадению можно добавить свой класс"
175
+ query="свой класс"
176
+ mark-class="font-bold"
177
+ />
178
+ </div>
179
+ </template>
180
+ ```
181
+
182
+ ## Searching through a list
183
+
184
+ The same query filters the list and highlights the matches in the found rows. `match-all` and `ignore-case` keep the highlighting and the filter consistent: once a row made it into the results, the match inside it is visible.
185
+
186
+ **Example (SFC):**
187
+
188
+ ```vue
189
+ <script setup lang="ts">
190
+ import { CdsHighlight, CdsTextInput } from '@central-design-system/components';
191
+ import { computed, ref } from 'vue';
192
+
193
+ const query = ref('дог');
194
+
195
+ const documents = [
196
+ 'Договор поставки канцелярии',
197
+ 'Договор аренды помещения',
198
+ 'Акт сверки взаиморасчётов',
199
+ 'Счёт на оплату № 1024'
200
+ ];
201
+
202
+ const found = computed(() => {
203
+ const needle = query.value.trim().toLowerCase();
204
+
205
+ return needle ? documents.filter((document) => document.toLowerCase().includes(needle)) : documents;
206
+ });
207
+ </script>
208
+
209
+ <template>
210
+ <div class="flex w-[350px] flex-col gap-2 m-auto">
211
+ <CdsTextInput v-model="query" placeholder="Поиск по документам" prepend-inner-icon="search" clearable />
212
+
213
+ <ul class="m-0 flex list-none flex-col gap-1 p-0">
214
+ <li v-for="document in found" :key="document">
215
+ <CdsHighlight
216
+ class="text-900 text-content-primary"
217
+ :text="document"
218
+ :query="query.trim()"
219
+ match-all
220
+ ignore-case
221
+ />
222
+ </li>
223
+
224
+ <li v-if="found.length === 0" class="text-900 text-content-secondary">Ничего не найдено</li>
225
+ </ul>
226
+ </div>
227
+ </template>
228
+ ```
229
+
230
+ ## A query of several words
231
+
232
+ Split the typed phrase into words and pass them as an array into `query` — the component highlights every word separately, even if they stand far apart in the text.
233
+
234
+ **Example (SFC):**
235
+
236
+ ```vue
237
+ <script setup lang="ts">
238
+ import { CdsHighlight, CdsTextInput } from '@central-design-system/components';
239
+ import { computed, ref } from 'vue';
240
+
241
+ const query = ref('бумага а4');
242
+
243
+ const description =
244
+ 'Закупка бумаги: бумага А4 плотностью 80 г/м², бумага А3 и картон. Поставка на склад в Москве до конца месяца.';
245
+
246
+ const terms = computed(() => query.value.trim().split(/\s+/).filter(Boolean));
247
+ </script>
248
+
249
+ <template>
250
+ <div class="flex w-[350px] flex-col gap-2 m-auto">
251
+ <CdsTextInput v-model="query" label="Запрос" placeholder="Например: бумага а4" clearable />
252
+
253
+ <CdsHighlight
254
+ class="text-900 text-content-primary"
255
+ tag="p"
256
+ :text="description"
257
+ :query="terms"
258
+ match-all
259
+ ignore-case
260
+ />
261
+ </div>
262
+ </template>
263
+ ```
264
+
265
+ ## Matches from the server
266
+
267
+ The full-text search on the backend already knows which fragments count as matches: it accounts for morphology, synonyms and typos. Give those ranges to `matches` — the client will not search anything again.
268
+
269
+ **Example (SFC):**
270
+
271
+ ```vue
272
+ <script setup lang="ts">
273
+ import { CdsButton, CdsHighlight } from '@central-design-system/components';
274
+ import { ref } from 'vue';
275
+
276
+ interface SearchResult {
277
+ id: number;
278
+ title: string;
279
+ matches: [number, number][];
280
+ }
281
+
282
+ const loading = ref(false);
283
+ const results = ref<SearchResult[]>([]);
284
+
285
+ // Ответ поиска: сервер сам решил, какие фрагменты считать совпадениями
286
+ const response: SearchResult[] = [
287
+ { id: 1, title: 'Заявка на поставку бумаги А4 для офиса', matches: [[19, 28]] },
288
+ { id: 2, title: 'Договор поставки бумаги и картона', matches: [[17, 23]] }
289
+ ];
290
+
291
+ const search = () => {
292
+ loading.value = true;
293
+ results.value = [];
294
+
295
+ setTimeout(() => {
296
+ results.value = response;
297
+ loading.value = false;
298
+ }, 1200);
299
+ };
300
+ </script>
301
+
302
+ <template>
303
+ <div class="flex w-[350px] flex-col gap-2 m-auto">
304
+ <CdsButton text="Найти «бумага А4»" :loading="loading" @click="search" />
305
+
306
+ <ul class="m-0 flex list-none flex-col gap-1 p-0">
307
+ <li v-for="result in results" :key="result.id">
308
+ <CdsHighlight class="text-900 text-content-primary" :text="result.title" :matches="result.matches" />
309
+ </li>
310
+ </ul>
311
+ </div>
312
+ </template>
313
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsHighlight — 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
+ | Only what the user searched for is highlighted — it is clear why the row made it into the results. | The whole row is highlighted: the highlighting stops highlighting anything. |
9
+ | In a long text turn on match-all: the user sees every match at once. | Only the first occurrence is highlighted — it looks like there are no matches further on. |
10
+ | For a query typed by the user turn on ignore-case — they do not double-check the case. | Без ignore-case запрос «инн» не находит «ИНН», и совпадение теряется. |
@@ -0,0 +1,18 @@
1
+ # CdsHighlight — tokens (level 3)
2
+
3
+ > Copy of the component's `styles/*.variables.scss`, taken by `bun run generate:skill`. Do not edit manually.
4
+ > `--cds-*` are global level-2 tokens whose values come from the active theme: see [themes.md](../../tokens/themes.md).
5
+ > Variables marked `!default` can be overridden at build time via SCSS.
6
+
7
+ ## _CdsHighlight.variables.scss
8
+
9
+ ```scss
10
+ $highlight-opacity: 8% !default;
11
+ $highlight-background: color-mix(
12
+ in srgb,
13
+ currentcolor var(--cds-highlight-opacity, $highlight-opacity),
14
+ transparent
15
+ ) !default;
16
+ $highlight-border-radius: var(--cds-border-radius-100) !default;
17
+ $highlight-color: inherit !default;
18
+ ```
@@ -0,0 +1,33 @@
1
+ # CdsIcon — 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
+ An icon is a short visual mark next to the text: the status of a record, the type of a file, the direction of a transition. The component takes an icon by name from a connected pack and subordinates its size, color and spacing to the design system tokens.
7
+
8
+ ## CdsIcon
9
+
10
+ **Props**
11
+
12
+ | Prop | Type | Default | Required | Description |
13
+ | --- | --- | --- | --- | --- |
14
+ | `activeColor` | `string \| undefined` | — | no | Color of the component in its active state |
15
+ | `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
16
+ | `bgColor` | `string \| undefined` | — | no | Background color of the component |
17
+ | `color` | `string \| undefined` | — | no | Component color |
18
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
19
+ | `end` | `boolean \| undefined` | — | no | Adds spacing to the left of the icon — for an icon after the text |
20
+ | `icon` | `IconValue \| undefined` | — | no | Name of the icon or the icon component to render |
21
+ | `name` | `string \| undefined` | — | no | String name of an icon from a registered pack (an alias for icon) |
22
+ | `opacity` | `string \| number \| undefined` | — | no | Opacity of the icon — a number between 0 and 1 |
23
+ | `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
24
+ | `start` | `boolean \| undefined` | — | no | Adds spacing to the right of the icon — for an icon before the text |
25
+ | `tag` | `string \| JSXComponent<any> \| undefined` | `'i'` | no | Custom HTML tag or component to render |
26
+ | `textColor` | `string \| undefined` | — | no | Text color of the component |
27
+ | `theme` | `string \| undefined` | — | no | Component theme |
28
+
29
+ **Slots**
30
+
31
+ | Name | Type | Description |
32
+ | --- | --- | --- |
33
+ | `default` | `any` | Name of the icon as text — an alternative to the `icon` prop |
@@ -0,0 +1,272 @@
1
+ # CdsIcon — 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
+ An icon is a short visual mark next to the text: the status of a record, the type of a file, the direction of a transition. The component takes an icon by name from a connected pack and subordinates its size, color and spacing to the design system tokens.
7
+
8
+ ## Icon
9
+
10
+ The `icon` prop takes the name of an icon from the default pack — `add` or `search`, for example. The `name` prop does the same and reads more naturally when the icon is set by a string. Besides a name, `icon` also accepts an icon component and an array of SVG paths, so you can pass your own graphics into it.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsIcon } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-wrap items-center justify-center gap-4">
21
+ <CdsIcon icon="add" />
22
+ <CdsIcon icon="search" />
23
+ <CdsIcon icon="settings" />
24
+ <CdsIcon name="star-fill" />
25
+ </div>
26
+ </template>
27
+ ```
28
+
29
+ ## Sizes
30
+
31
+ The `size` prop takes one of the scale values — from `xs` to `xl` — or a number in pixels when the icon works as an illustration. The default is `md`, level with the body text.
32
+
33
+ **Example (SFC):**
34
+
35
+ ```vue
36
+ <script setup lang="ts">
37
+ import { CdsIcon } from '@central-design-system/components';
38
+
39
+ const sizes = CdsIcon.constants.sizes;
40
+ </script>
41
+
42
+ <template>
43
+ <div class="flex flex-wrap items-end justify-center gap-5">
44
+ <div v-for="size in sizes" :key="size" class="flex flex-col items-center gap-1">
45
+ <CdsIcon icon="star-fill" :size="size" />
46
+ <span class="text-50 text-content-secondary">{{ size }}</span>
47
+ </div>
48
+
49
+ <div class="flex flex-col items-center gap-1">
50
+ <CdsIcon icon="star-fill" :size="40" />
51
+ <span class="text-50 text-content-secondary">40</span>
52
+ </div>
53
+ </div>
54
+ </template>
55
+ ```
56
+
57
+ ## Color
58
+
59
+ Without `color` the icon inherits the text color of its parent — this is the default behavior and the right one in most cases. The `color` prop takes a palette token (`content-secondary`, `brand-primary`), a status color alias (`green`, `red`, `lemon`) or a `hex/rgb` value. The `opacity` prop mutes the icon without changing its color.
60
+
61
+ **Example (SFC):**
62
+
63
+ ```vue
64
+ <script setup lang="ts">
65
+ import { CdsIcon } from '@central-design-system/components';
66
+ </script>
67
+
68
+ <template>
69
+ <div class="text-brand-primary-content flex flex-wrap items-center justify-center gap-4">
70
+ <CdsIcon icon="star-fill" size="lg" />
71
+ <CdsIcon icon="star-fill" size="lg" color="content-secondary" />
72
+ <CdsIcon icon="check-fill" size="lg" color="green" />
73
+ <CdsIcon icon="error-fill" size="lg" color="red" />
74
+ <CdsIcon icon="star" size="lg" color="#9e45f9" />
75
+ <CdsIcon icon="star-fill" size="lg" color="brand-primary" />
76
+ <CdsIcon icon="star-fill" size="lg" color="brand-primary" :opacity="0.4" />
77
+ </div>
78
+ </template>
79
+ ```
80
+
81
+ ## Spacing from the text
82
+
83
+ The `start` and `end` props add spacing on the side of the text: `start` for an icon before the label, `end` for one after it. This saves you from picking margins by hand.
84
+
85
+ **Example (SFC):**
86
+
87
+ ```vue
88
+ <script setup lang="ts">
89
+ import { CdsIcon } from '@central-design-system/components';
90
+ </script>
91
+
92
+ <template>
93
+ <div class="flex flex-wrap items-center justify-center gap-6">
94
+ <span>
95
+ <CdsIcon icon="download" start />
96
+ Скачать отчёт
97
+ </span>
98
+
99
+ <span>
100
+ Открыть в новой вкладке
101
+ <CdsIcon icon="external" end />
102
+ </span>
103
+ </div>
104
+ </template>
105
+ ```
106
+
107
+ ## Reacting to a click
108
+
109
+ If you attach a `@click` handler to an icon, it gets `role="button"`, joins the Tab order and changes the cursor; `disabled` removes it from the order and stops it from accepting clicks. This is handy for small toggles inside your own components — for a full-fledged action [CdsFunctionalButton](../cds-functional-button/api.md) fits better.
110
+
111
+ **Example (SFC):**
112
+
113
+ ```vue
114
+ <script setup lang="ts">
115
+ import { CdsIcon } from '@central-design-system/components';
116
+ import { ref } from 'vue';
117
+
118
+ const count = ref(0);
119
+ </script>
120
+
121
+ <template>
122
+ <div class="flex flex-wrap items-center justify-center gap-4">
123
+ <CdsIcon icon="refresh" size="lg" @click="count++" />
124
+ <CdsIcon icon="refresh" size="lg" color="content-disable" disabled @click="count++" />
125
+
126
+ <span class="text-100 text-content-secondary">Обновлений: {{ count }}</span>
127
+ </div>
128
+ </template>
129
+ ```
130
+
131
+ ## Slot
132
+
133
+ The name of the icon can be passed as text into the default slot — the result is the same as with `icon`. Useful when the name comes from an expression in the template.
134
+
135
+ **Example (SFC):**
136
+
137
+ ```vue
138
+ <script setup lang="ts">
139
+ import { CdsIcon } from '@central-design-system/components';
140
+
141
+ const icon = 'notification';
142
+ </script>
143
+
144
+ <template>
145
+ <div class="flex flex-wrap items-center justify-center gap-4">
146
+ <CdsIcon size="lg">star-fill</CdsIcon>
147
+ <CdsIcon size="lg">{{ icon }}</CdsIcon>
148
+ </div>
149
+ </template>
150
+ ```
151
+
152
+ ## Statuses in a list
153
+
154
+ An icon to the left of a label sets the status by color and shape, while the text names it in words. The colors come from the status aliases, `size="sm"` fits the icon to small text, and `start` adds the spacing before the label.
155
+
156
+ **Example (SFC):**
157
+
158
+ ```vue
159
+ <script setup lang="ts">
160
+ import { CdsIcon } from '@central-design-system/components';
161
+
162
+ const orders = [
163
+ { id: 1, title: 'Счёт № 5512', status: 'Оплачен', icon: 'check-fill', color: 'green' },
164
+ { id: 2, title: 'Счёт № 5513', status: 'Ожидает оплаты', icon: 'clock', color: 'content-secondary' },
165
+ { id: 3, title: 'Счёт № 5514', status: 'Просрочен', icon: 'error-fill', color: 'red' },
166
+ { id: 4, title: 'Счёт № 5515', status: 'Требует проверки', icon: 'alert-fill', color: 'lemon' }
167
+ ];
168
+ </script>
169
+
170
+ <template>
171
+ <div class="m-auto flex w-[320px] flex-col gap-2">
172
+ <div v-for="order in orders" :key="order.id" class="flex items-center justify-between gap-3">
173
+ <span>{{ order.title }}</span>
174
+
175
+ <span class="text-200 text-content-secondary">
176
+ <CdsIcon :icon="order.icon" :color="order.color" size="sm" start />
177
+ {{ order.status }}
178
+ </span>
179
+ </div>
180
+ </div>
181
+ </template>
182
+ ```
183
+
184
+ ## List of attachments
185
+
186
+ The icon shows the type of a file and keeps the eye on the left edge of the list. The `lg` size makes it more noticeable than the label, and the `content-secondary` color keeps it from competing with the file name. The action next to it is already a button: `CdsFunctionalButton` with an `aria-label`.
187
+
188
+ **Example (SFC):**
189
+
190
+ ```vue
191
+ <script setup lang="ts">
192
+ import { CdsFunctionalButton, CdsIcon } from '@central-design-system/components';
193
+
194
+ const files = [
195
+ { name: 'Договор поставки № 42.pdf', size: '340 КБ', icon: 'doc' },
196
+ { name: 'Спецификация.xlsx', size: '82 КБ', icon: 'data-cards' },
197
+ { name: 'Приложения.zip', size: '4,1 МБ', icon: 'archive' }
198
+ ];
199
+ </script>
200
+
201
+ <template>
202
+ <div class="m-auto flex w-[320px] flex-col gap-3">
203
+ <div v-for="file in files" :key="file.name" class="flex items-center gap-2">
204
+ <CdsIcon :icon="file.icon" size="lg" color="content-secondary" />
205
+
206
+ <div class="flex min-w-0 flex-col">
207
+ <span class="truncate">{{ file.name }}</span>
208
+ <span class="text-100 text-content-secondary">{{ file.size }}</span>
209
+ </div>
210
+
211
+ <CdsFunctionalButton class="ml-auto" icon="download" :aria-label="`Скачать ${file.name}`" />
212
+ </div>
213
+ </div>
214
+ </template>
215
+ ```
216
+
217
+ ## Progress of an operation
218
+
219
+ The icon reflects the state of a process: the request is ready, is being sent, has been sent. Only `icon` and `color` change — the component repaints in place and the status line does not jump.
220
+
221
+ **Example (SFC):**
222
+
223
+ ```vue
224
+ <script setup lang="ts">
225
+ import { CdsButton, CdsIcon } from '@central-design-system/components';
226
+ import { computed, ref } from 'vue';
227
+
228
+ const state = ref<'idle' | 'sending' | 'done'>('idle');
229
+
230
+ const status = computed(() => {
231
+ if (state.value === 'sending') return { icon: 'sandglass', color: 'content-secondary', text: 'Отправляем заявку…' };
232
+ if (state.value === 'done') return { icon: 'check-fill', color: 'green', text: 'Заявка отправлена' };
233
+
234
+ return { icon: 'doc', color: 'content-secondary', text: 'Заявка готова к отправке' };
235
+ });
236
+
237
+ function send() {
238
+ state.value = 'sending';
239
+ setTimeout(() => (state.value = 'done'), 1500);
240
+ }
241
+ </script>
242
+
243
+ <template>
244
+ <div class="m-auto flex w-[300px] flex-col items-center gap-3">
245
+ <span class="text-content-secondary">
246
+ <CdsIcon :icon="status.icon" :color="status.color" start />
247
+ {{ status.text }}
248
+ </span>
249
+
250
+ <CdsButton text="Отправить" :loading="state === 'sending'" :disabled="state === 'done'" @click="send" />
251
+ </div>
252
+ </template>
253
+ ```
254
+
255
+ ## A note inside text
256
+
257
+ Inside a paragraph the icon aligns to the middle of the line, so you can put it right into the text. The `sm` size and `start` keep it from breaking the line.
258
+
259
+ **Example (SFC):**
260
+
261
+ ```vue
262
+ <script setup lang="ts">
263
+ import { CdsIcon } from '@central-design-system/components';
264
+ </script>
265
+
266
+ <template>
267
+ <p class="text-200 m-auto w-[360px] text-content-secondary">
268
+ <CdsIcon icon="info" size="sm" start />
269
+ Заявку можно отредактировать, пока она не отправлена. После отправки изменения согласовываются с заказчиком.
270
+ </p>
271
+ </template>
272
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsIcon — 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
+ | The icon stands next to a label and speeds up reading the line. | Without a label the icon has to be decoded: does a check mark mean «paid» or «verified»? |
9
+ | The color comes from the palette — the icon follows the theme and stays readable. | An arbitrary color falls out of the theme: on a dark background such an icon gets lost. |
10
+ | A clickable icon is a button: it has a name, hover states and keyboard focus. | A handler on an icon gives you a pointer cursor, but no name for a screen reader and no visible hover response. |