@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,652 @@
1
+ # CdsCard — 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 card gathers related content — a title, text, an image, actions — into one bordered block. Use it when an object (a product, a plan, a document) should read as a whole: a card can act as a link and as a selectable item in a group.
7
+
8
+ ## Content
9
+
10
+ There are three ways to fill a card: the `title`, `subtitle` and `text` props for typical cases; the slots of the same name when you need your own markup instead of a string; the `CdsCardItem`, `CdsCardTitle`, `CdsCardSubtitle` and `CdsCardText` components when you need full control over the structure. The `divider` prop adds a divider between the header and the text.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import {
17
+ CdsCard,
18
+ CdsCardDivider,
19
+ CdsCardItem,
20
+ CdsCardSubtitle,
21
+ CdsCardText,
22
+ CdsCardTitle,
23
+ CdsIcon
24
+ } from '@central-design-system/components';
25
+ </script>
26
+
27
+ <template>
28
+ <div class="cds-row">
29
+ <div class="cds-col">
30
+ <CdsCard
31
+ title="Заголовок карточки"
32
+ subtitle="Подзаголовок карточки"
33
+ text="Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem!"
34
+ append-icon="add"
35
+ divider
36
+ />
37
+ <div class="flex justify-center my-2">Использование Props</div>
38
+ </div>
39
+
40
+ <div class="cds-col">
41
+ <CdsCard divider>
42
+ <template #title>Заголовок карточки</template>
43
+ <template #subtitle>Подзаголовок карточки</template>
44
+ <template #text>
45
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore
46
+ voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde
47
+ voluptatem!
48
+ </template>
49
+ <template #append>
50
+ <CdsIcon icon="add" />
51
+ </template>
52
+ </CdsCard>
53
+ <div class="flex justify-center my-2">Использование Slots</div>
54
+ </div>
55
+
56
+ <div class="cds-col">
57
+ <CdsCard>
58
+ <CdsCardItem>
59
+ <CdsCardTitle>Заголовок карточки</CdsCardTitle>
60
+ <CdsCardSubtitle>Подзаголовок карточки</CdsCardSubtitle>
61
+ <template #append>
62
+ <CdsIcon icon="add" />
63
+ </template>
64
+ </CdsCardItem>
65
+
66
+ <CdsCardDivider />
67
+
68
+ <CdsCardText>
69
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore
70
+ voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde
71
+ voluptatem!
72
+ </CdsCardText>
73
+ </CdsCard>
74
+ <div class="flex justify-center my-2">Использование Компонентов</div>
75
+ </div>
76
+ </div>
77
+ </template>
78
+ ```
79
+
80
+ ## Header
81
+
82
+ The `prepend-icon` and `append-icon` props put an icon at the edges of the header, `prepend-avatar` and `append-avatar` put an avatar by image URL. By default the prepend and append areas are pinned to the top of the header; `item-align="center"` centers them against the title and the subtitle (on `CdsCardItem` this prop is called `align`).
83
+
84
+ **Example (SFC):**
85
+
86
+ ```vue
87
+ <script setup lang="ts">
88
+ import { CdsCard } from '@central-design-system/components';
89
+ </script>
90
+
91
+ <template>
92
+ <div class="flex flex-wrap justify-center gap-4">
93
+ <CdsCard
94
+ width="320"
95
+ prepend-avatar="/images/temp/thumbnail.jpg"
96
+ title="Анна Смирнова"
97
+ subtitle="Менеджер проекта"
98
+ append-icon="overflow-menu-vertical"
99
+ item-align="center"
100
+ />
101
+
102
+ <CdsCard
103
+ width="320"
104
+ prepend-icon="doc"
105
+ title="Договор поставки"
106
+ subtitle="Обновлён вчера"
107
+ append-icon="download"
108
+ item-align="center"
109
+ />
110
+ </div>
111
+ </template>
112
+ ```
113
+
114
+ ## Appearance
115
+
116
+ A clickable card — one with a link, a click handler, inside a group or with the `link` prop — highlights its border on hover by itself, you do not need to turn anything on. `borderless` removes the border — for cards on a surface or inside other containers.
117
+
118
+ **Example (SFC):**
119
+
120
+ ```vue
121
+ <script setup lang="ts">
122
+ import { CdsCard } from '@central-design-system/components';
123
+ </script>
124
+
125
+ <template>
126
+ <div class="flex flex-wrap justify-center gap-4">
127
+ <CdsCard width="240" title="Обычная" text="Рамка по умолчанию отделяет карточку от фона." />
128
+ <CdsCard width="240" link title="Кликабельная" text="Наведите курсор — рамка подсветится." />
129
+ <CdsCard width="240" borderless title="Borderless" text="Без рамки — для карточек на подложке." />
130
+ </div>
131
+ </template>
132
+ ```
133
+
134
+ ## Link
135
+
136
+ Pass `href` (or `to` with a vue-router route) and the card is rendered as an `a` tag and becomes clickable as a whole, keeping its appearance.
137
+
138
+ **Example (SFC):**
139
+
140
+ ```vue
141
+ <script setup lang="ts">
142
+ import { CdsCard } from '@central-design-system/components';
143
+ </script>
144
+
145
+ <template>
146
+ <CdsCard
147
+ class="m-auto"
148
+ title="CDS Sandbox"
149
+ subtitle="Перейти на песочницу CDS"
150
+ href="https://magersoft.github.io/cds-sandbox"
151
+ target="_blank"
152
+ append-icon="external"
153
+ width="300"
154
+ />
155
+ </template>
156
+ ```
157
+
158
+ ## Images
159
+
160
+ An image at the top is a [CdsImage](../cds-image/api.md) component placed first inside the card. You can overlay content on top of it by putting the header into the image slot.
161
+
162
+ **Example (SFC):**
163
+
164
+ ```vue
165
+ <script setup lang="ts">
166
+ import {
167
+ CdsButton,
168
+ CdsCard,
169
+ CdsCardActions,
170
+ CdsCardDivider,
171
+ CdsCardItem,
172
+ CdsCardSubtitle,
173
+ CdsCardText,
174
+ CdsCardTitle,
175
+ CdsImage
176
+ } from '@central-design-system/components';
177
+ </script>
178
+
179
+ <template>
180
+ <div class="flex flex-wrap justify-center gap-6">
181
+ <CdsCard width="400">
182
+ <CdsImage src="/images/temp/girl.webp" cover class="items-end" />
183
+
184
+ <CdsCardItem>
185
+ <CdsCardTitle>Заголовок карточки</CdsCardTitle>
186
+ <CdsCardSubtitle>Подзаголовок карточки</CdsCardSubtitle>
187
+ </CdsCardItem>
188
+
189
+ <CdsCardDivider />
190
+
191
+ <CdsCardText>
192
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!
193
+ Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem!
194
+ </CdsCardText>
195
+
196
+ <CdsCardActions class="justify-end">
197
+ <CdsButton>Действие</CdsButton>
198
+ </CdsCardActions>
199
+ </CdsCard>
200
+
201
+ <CdsCard width="400">
202
+ <CdsImage src="/images/temp/dark-city.webp" cover class="items-end">
203
+ <CdsCardItem>
204
+ <CdsCardTitle class="text-content-on-dark">Заголовок карточки</CdsCardTitle>
205
+ <CdsCardSubtitle class="text-content-on-dark opacity-80">Подзаголовок карточки</CdsCardSubtitle>
206
+ </CdsCardItem>
207
+ </CdsImage>
208
+
209
+ <CdsCardText>
210
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus!
211
+ Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem!
212
+ </CdsCardText>
213
+
214
+ <CdsCardActions class="justify-end">
215
+ <CdsButton>Действие</CdsButton>
216
+ </CdsCardActions>
217
+ </CdsCard>
218
+ </div>
219
+ </template>
220
+ ```
221
+
222
+ ## Images
223
+
224
+ The `image` prop stretches the image as the background of the whole card. Take care of the contrast: set the text color through `color` and pick a dark image or a gradient.
225
+
226
+ **Example (SFC):**
227
+
228
+ ```vue
229
+ <script setup lang="ts">
230
+ import { CdsButton, CdsCard, CdsCardActions } from '@central-design-system/components';
231
+ </script>
232
+
233
+ <template>
234
+ <CdsCard
235
+ class="m-auto"
236
+ title="Заголовок"
237
+ subtitle="Подзаголовок карточки"
238
+ color="content-on-dark"
239
+ text="Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum unde voluptatem!"
240
+ image="/images/temp/dark-city.webp"
241
+ width="400"
242
+ >
243
+ <CdsCardActions class="justify-end">
244
+ <CdsButton appearance="inverse">Действие</CdsButton>
245
+ </CdsCardActions>
246
+ </CdsCard>
247
+ </template>
248
+ ```
249
+
250
+ ## Group with selection
251
+
252
+ Wrap the cards in `CdsCardGroup` and give each of them a `value` — the group turns into a selection control with `v-model`, and the selected card gets a highlighted border. `required` forbids clearing the selection.
253
+
254
+ **Example (SFC):**
255
+
256
+ ```vue
257
+ <script setup lang="ts">
258
+ import { CdsCard, CdsCardGroup } from '@central-design-system/components';
259
+ import { ref } from 'vue';
260
+
261
+ const selected = ref(1);
262
+ const items = [1, 2, 3];
263
+ </script>
264
+
265
+ <template>
266
+ <CdsCardGroup v-model="selected" required class="flex-wrap justify-center gap-4">
267
+ <CdsCard
268
+ v-for="item in items"
269
+ :key="item"
270
+ title="Заголовок карточки"
271
+ subtitle="Подзаголовок карточки"
272
+ text="Используется в качестве элемента, где вся область карточки — это интерактивное состояние."
273
+ :append-icon="selected === item ? 'check-fill' : undefined"
274
+ :value="item"
275
+ width="250"
276
+ />
277
+ </CdsCardGroup>
278
+ </template>
279
+ ```
280
+
281
+ ## Group with selection
282
+
283
+ The `multiple` prop enables multiple selection — `v-model` then holds an array of values.
284
+
285
+ **Example (SFC):**
286
+
287
+ ```vue
288
+ <script setup lang="ts">
289
+ import { CdsCard, CdsCardGroup } from '@central-design-system/components';
290
+ import { ref } from 'vue';
291
+
292
+ const selected = ref([2]);
293
+ const items = [1, 2, 3];
294
+ </script>
295
+
296
+ <template>
297
+ <CdsCardGroup v-model="selected" multiple class="flex-wrap justify-center gap-4">
298
+ <CdsCard
299
+ v-for="item in items"
300
+ :key="item"
301
+ title="Заголовок карточки"
302
+ subtitle="Подзаголовок карточки"
303
+ text="Используется в качестве элемента, где вся область карточки — это интерактивное состояние."
304
+ :append-icon="selected.includes(item) ? 'check-fill' : undefined"
305
+ :value="item"
306
+ width="250"
307
+ />
308
+ </CdsCardGroup>
309
+ </template>
310
+ ```
311
+
312
+ ## Choosing a plan
313
+
314
+ A group of cards replaces radio buttons when every option needs room for a price and a description. The `check-fill` icon in `append-icon` repeats the selection in the header, and the button below stays disabled until an option is picked.
315
+
316
+ **Example (SFC):**
317
+
318
+ ```vue
319
+ <script setup lang="ts">
320
+ import { CdsButton, CdsCard, CdsCardGroup } from '@central-design-system/components';
321
+ import { ref } from 'vue';
322
+
323
+ const selected = ref<string>();
324
+
325
+ const plans = [
326
+ { id: 'start', title: 'Старт', price: 'Бесплатно', description: '5 проектов и базовая аналитика.' },
327
+ { id: 'team', title: 'Команда', price: '990 ₽ / мес', description: 'Совместная работа и роли доступа.' },
328
+ {
329
+ id: 'business',
330
+ title: 'Бизнес',
331
+ price: '2 900 ₽ / мес',
332
+ description: 'Без ограничений и с приоритетной поддержкой.'
333
+ }
334
+ ];
335
+ </script>
336
+
337
+ <template>
338
+ <div class="flex flex-col items-center gap-4">
339
+ <CdsCardGroup v-model="selected" class="flex-wrap justify-center gap-4">
340
+ <CdsCard
341
+ v-for="plan in plans"
342
+ :key="plan.id"
343
+ :value="plan.id"
344
+ :title="plan.title"
345
+ :subtitle="plan.price"
346
+ :text="plan.description"
347
+ :append-icon="selected === plan.id ? 'check-fill' : undefined"
348
+ width="240"
349
+ />
350
+ </CdsCardGroup>
351
+
352
+ <CdsButton :disabled="!selected" text="Продолжить" />
353
+ </div>
354
+ </template>
355
+ ```
356
+
357
+ ## Product cards
358
+
359
+ A storefront is assembled from ready-made blocks: [CdsImage](../cds-image/api.md) with the photo, a rating made of icons in `CdsCardText`, [CdsTag](../cds-tag/api.md) tags with the specs and a pair of actions in `CdsCardActions` — the main "add to cart" button and a secondary icon button for favorites that toggles the bookmark and tints it with a utility class. The `loading` and `disabled` props show the loading bar and protect the card from repeated clicks while the request runs — press «В корзину».
360
+
361
+ **Example (SFC):**
362
+
363
+ ```vue
364
+ <script setup lang="ts">
365
+ import {
366
+ CdsButton,
367
+ CdsCard,
368
+ CdsCardActions,
369
+ CdsCardDivider,
370
+ CdsCardItem,
371
+ CdsCardSubtitle,
372
+ CdsCardText,
373
+ CdsCardTitle,
374
+ CdsIcon,
375
+ CdsImage,
376
+ CdsTag
377
+ } from '@central-design-system/components';
378
+ import { ref } from 'vue';
379
+
380
+ const loadingId = ref<string | null>(null);
381
+
382
+ const products = [
383
+ {
384
+ id: 'headphones',
385
+ title: 'Наушники Aura ANC',
386
+ category: 'Аудио',
387
+ image: 'https://images.unsplash.com/photo-1505740420928-5e560c06d30e?auto=format&fit=crop&w=600&q=80',
388
+ rating: 4.8,
389
+ stars: 5,
390
+ reviews: 214,
391
+ price: '12 990 ₽',
392
+ description: 'Беспроводные наушники с активным шумоподавлением и зарядом на 30 часов.',
393
+ tags: [
394
+ {
395
+ name: 'Хит',
396
+ color: 'green'
397
+ },
398
+ {
399
+ name: 'Доставка завтра',
400
+ color: 'purple'
401
+ }
402
+ ]
403
+ },
404
+ {
405
+ id: 'watch',
406
+ title: 'Часы Meridian 40',
407
+ category: 'Аксессуары',
408
+ image: 'https://images.unsplash.com/photo-1523275335684-37898b6baf30?auto=format&fit=crop&w=600&q=80',
409
+ rating: 4.6,
410
+ stars: 5,
411
+ reviews: 98,
412
+ price: '24 490 ₽',
413
+ description: 'Классический корпус 40 мм, сапфировое стекло и ремешок из натуральной кожи.',
414
+ tags: [
415
+ {
416
+ name: 'Новинка',
417
+ color: 'cyan'
418
+ }
419
+ ]
420
+ },
421
+ {
422
+ id: 'sneakers',
423
+ title: 'Кроссовки Vertex Run',
424
+ category: 'Обувь',
425
+ image: 'https://images.unsplash.com/photo-1542291026-7eec264c27ff?auto=format&fit=crop&w=600&q=80',
426
+ rating: 4.9,
427
+ stars: 5,
428
+ reviews: 531,
429
+ price: '8 790 ₽',
430
+ description: 'Лёгкая беговая пара с амортизирующей подошвой для ежедневных тренировок.',
431
+ tags: [
432
+ {
433
+ name: '−20%',
434
+ color: 'green'
435
+ },
436
+ {
437
+ name: 'Остался 42 размер',
438
+ color: 'red'
439
+ }
440
+ ]
441
+ }
442
+ ];
443
+
444
+ const addToCart = (id: string) => {
445
+ loadingId.value = id;
446
+
447
+ setTimeout(() => (loadingId.value = null), 2000);
448
+ };
449
+
450
+ const favorites = ref<string[]>([]);
451
+
452
+ const toggleFavorite = (id: string) => {
453
+ favorites.value = favorites.value.includes(id)
454
+ ? favorites.value.filter((item) => item !== id)
455
+ : [...favorites.value, id];
456
+ };
457
+ </script>
458
+
459
+ <template>
460
+ <div class="flex flex-wrap justify-center gap-4">
461
+ <CdsCard
462
+ v-for="product in products"
463
+ :key="product.id"
464
+ width="280"
465
+ :loading="loadingId === product.id"
466
+ :disabled="loadingId === product.id"
467
+ >
468
+ <CdsImage :src="product.image" height="200" cover />
469
+
470
+ <CdsCardItem>
471
+ <CdsCardTitle>{{ product.title }}</CdsCardTitle>
472
+ <CdsCardSubtitle>{{ product.category }}</CdsCardSubtitle>
473
+ </CdsCardItem>
474
+
475
+ <CdsCardText>
476
+ <div class="flex items-center gap-1">
477
+ <CdsIcon
478
+ v-for="star in product.stars"
479
+ :key="star"
480
+ :icon="star <= Math.floor(product.rating) ? 'star-fill' : 'star'"
481
+ size="sm"
482
+ class="text-other-lemon-content"
483
+ />
484
+ <span class="text-sm text-content-secondary">{{ product.rating }} ({{ product.reviews }})</span>
485
+ </div>
486
+
487
+ <div class="my-2 text-lg font-bold">{{ product.price }}</div>
488
+
489
+ <div>{{ product.description }}</div>
490
+ </CdsCardText>
491
+
492
+ <CdsCardDivider />
493
+
494
+ <div class="flex flex-wrap gap-1 px-4 pt-2">
495
+ <CdsTag v-for="tag in product.tags" :key="tag.name" :text="tag.name" :color="tag.color" size="sm" />
496
+ </div>
497
+
498
+ <CdsCardActions class="gap-2">
499
+ <CdsButton class="flex-1" text="В корзину" @click="addToCart(product.id)" />
500
+ <CdsButton
501
+ appearance="tertiary"
502
+ :icon="favorites.includes(product.id) ? 'bookmark-fill' : 'bookmark'"
503
+ :class="{ 'text-other-pink-content': favorites.includes(product.id) }"
504
+ :aria-label="favorites.includes(product.id) ? 'Убрать из избранного' : 'Добавить в избранное'"
505
+ @click="toggleFavorite(product.id)"
506
+ />
507
+ </CdsCardActions>
508
+ </CdsCard>
509
+ </div>
510
+ </template>
511
+ ```
512
+
513
+ ## Expandable details
514
+
515
+ Hide secondary content behind an expander: a block with `v-if` is wrapped in `CdsTransitionExpand` for a smooth animation. Anything can trigger the expansion — a chevron icon or a button in the actions bar.
516
+
517
+ **Example (SFC):**
518
+
519
+ ```vue
520
+ <script setup lang="ts">
521
+ import {
522
+ CdsButton,
523
+ CdsCard,
524
+ CdsCardActions,
525
+ CdsCardDivider,
526
+ CdsCardItem,
527
+ CdsCardSubtitle,
528
+ CdsCardText,
529
+ CdsCardTitle,
530
+ CdsFunctionalButton,
531
+ CdsTransitionExpand
532
+ } from '@central-design-system/components';
533
+ import { ref } from 'vue';
534
+
535
+ const expanded = ref(false);
536
+ const showFull = ref(false);
537
+ </script>
538
+
539
+ <template>
540
+ <div class="flex flex-col items-center gap-4">
541
+ <CdsCard width="400">
542
+ <CdsCardItem>
543
+ <CdsCardTitle>Расширяемая карточка</CdsCardTitle>
544
+ <CdsCardSubtitle>Просто нажмите на иконку стрелочки</CdsCardSubtitle>
545
+ </CdsCardItem>
546
+
547
+ <CdsCardActions class="justify-between">
548
+ <CdsButton appearance="tertiary">Действие</CdsButton>
549
+ <CdsFunctionalButton :icon="expanded ? 'chevron-up' : 'chevron-down'" @click="expanded = !expanded" />
550
+ </CdsCardActions>
551
+
552
+ <CdsTransitionExpand>
553
+ <div v-if="expanded">
554
+ <CdsCardDivider />
555
+ <CdsCardText>
556
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore
557
+ voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum
558
+ unde voluptatem!
559
+ </CdsCardText>
560
+ </div>
561
+ </CdsTransitionExpand>
562
+ </CdsCard>
563
+
564
+ <CdsCard width="400">
565
+ <CdsCardItem>
566
+ <CdsCardTitle>Расширяемая карточка</CdsCardTitle>
567
+ <CdsCardSubtitle>Просто нажмите на кнопку</CdsCardSubtitle>
568
+ </CdsCardItem>
569
+
570
+ <CdsTransitionExpand>
571
+ <div v-if="showFull">
572
+ <CdsCardText>
573
+ Lorem ipsum dolor sit amet consectetur adipisicing elit. Commodi, ratione debitis quis est labore
574
+ voluptatibus! Eaque cupiditate minima, at placeat totam, magni doloremque veniam neque porro libero rerum
575
+ unde voluptatem!
576
+ </CdsCardText>
577
+ </div>
578
+ </CdsTransitionExpand>
579
+
580
+ <CdsCardDivider />
581
+
582
+ <CdsCardActions class="justify-between">
583
+ <CdsButton appearance="tertiary" @click="showFull = !showFull">
584
+ {{ showFull ? 'Скрыть' : 'Показать' }}
585
+ </CdsButton>
586
+ </CdsCardActions>
587
+ </CdsCard>
588
+ </div>
589
+ </template>
590
+ ```
591
+
592
+ ## Gallery
593
+
594
+ Cards nest into each other: the outer one is an album with a header and a counter, the inner ones are photo tiles in a mosaic built on a CSS grid with a fixed row height; `col-span` / `row-span` make individual shots larger. The `absolute` mode of [CdsImage](../cds-image/api.md) stretches the photo across the whole tile, `borderless` removes the borders, and a gradient darkens the last tile under the counter of the remaining photos.
595
+
596
+ **Example (SFC):**
597
+
598
+ ```vue
599
+ <script setup lang="ts">
600
+ import {
601
+ CdsCard,
602
+ CdsCardItem,
603
+ CdsCardSubtitle,
604
+ CdsCardTitle,
605
+ CdsFunctionalButton,
606
+ CdsImage
607
+ } from '@central-design-system/components';
608
+
609
+ const photos = [
610
+ { src: '/images/temp/ny.webp', span: 'col-span-2 row-span-2' },
611
+ { src: '/images/temp/space.webp', span: 'col-span-2' },
612
+ { src: '/images/temp/cat.webp', span: '' },
613
+ { src: '/images/temp/dark-city.webp', span: '' },
614
+ { src: '/images/temp/girl.webp', span: '' },
615
+ { src: '/images/temp/city.webp', span: 'col-span-2' },
616
+ { src: '/images/temp/airbnb.webp', span: '', rest: 18 }
617
+ ];
618
+ </script>
619
+
620
+ <template>
621
+ <CdsCard width="800" class="m-auto">
622
+ <CdsCardItem align="center">
623
+ <CdsCardTitle>Путешествия</CdsCardTitle>
624
+ <CdsCardSubtitle>25 фото · обновлён вчера</CdsCardSubtitle>
625
+ <template #append>
626
+ <div class="flex gap-1">
627
+ <CdsFunctionalButton icon="upload" aria-label="Загрузить фото" />
628
+ <CdsFunctionalButton icon="overflow-menu-vertical" aria-label="Действия с альбомом" />
629
+ </div>
630
+ </template>
631
+ </CdsCardItem>
632
+
633
+ <div class="grid grid-cols-4 auto-rows-[160px] gap-2 px-4 pb-4">
634
+ <CdsCard
635
+ v-for="photo in photos"
636
+ :key="photo.src"
637
+ link
638
+ borderless
639
+ :class="['flex items-center justify-center', photo.span]"
640
+ >
641
+ <CdsImage
642
+ :src="photo.src"
643
+ absolute
644
+ cover
645
+ :gradient="photo.rest ? 'to bottom, rgba(0,0,0,.55), rgba(0,0,0,.55)' : undefined"
646
+ />
647
+ <span v-if="photo.rest" class="text-2xl font-bold text-content-on-dark">+{{ photo.rest }} фото</span>
648
+ </CdsCard>
649
+ </div>
650
+ </CdsCard>
651
+ </template>
652
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsCard — 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 clickable card means one action: its whole area leads to the same result. | Buttons inside a clickable card compete with the click on the card itself. |
9
+ | The actions bar holds one main action as primary; the rest are less prominent. | Several primary buttons in one card compete for attention. |
10
+ | The subtitle adds a new fact to the title — a place, a date, a price. | A subtitle that repeats the title in other words tells the reader nothing. |