@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,46 @@
1
+ # CdsCard — 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
+ ## CdsCard.variables.scss
8
+
9
+ ```scss
10
+ @use '../../../styles/tools';
11
+
12
+ // CdsCardHeader
13
+ $card-header-flex: none !default;
14
+
15
+ // CdsCard
16
+ $card-overflow-wrap: break-word !default;
17
+ $card-prepend-padding-inline-end: var(--cds-spacing-200) !default;
18
+ $card-append-padding-inline-start: var(--cds-spacing-200) !default;
19
+ $card-gap: var(--cds-spacing-400) !default;
20
+ $card-border-radius: var(--cds-border-radius-300) !default;
21
+ $card-border-width: var(--cds-border-100) solid !default;
22
+ $card-outline-width: var(--cds-border-200) solid !default;
23
+ $card-border-color: rgb(var(--cds-color-line-tertiary)) !default;
24
+ $card-background-color: rgb(var(--cds-color-surface-primary)) !default;
25
+ $card-text-color: rgb(var(--cds-color-content-primary)) !default;
26
+ $card-outline-offset: var(--cds-spacing-50) !default;
27
+ $card-disabled-opacity: 0.5 !default;
28
+ $card-content-gap: var(--cds-spacing-100) !default;
29
+ $card-hover-border-color: rgb(var(--cds-color-line-tertiary-hover)) !default;
30
+ $card-selected-border-color: rgb(var(--cds-color-line-selected)) !default;
31
+ $card-focus-border-color: rgb(var(--cds-color-line-focus-outline)) !default;
32
+
33
+ // CdsCardItem
34
+ $card-item-align-items: flex-start !default;
35
+ $card-item-padding: var(--cds-spacing-400) !default;
36
+
37
+ // CdsCardText
38
+ $card-text-padding: var(--cds-spacing-400) !default;
39
+
40
+ // CdsCardTitle
41
+ $card-title-flex: none !default;
42
+
43
+
44
+ // CdsCardSubtitle
45
+ $card-subtitle-text-opacity: 0.8 !default;
46
+ ```
@@ -0,0 +1,107 @@
1
+ # CdsCarousel — API
2
+
3
+ > Generated from meta.json by `bun run generate:skill`. Do not edit manually.
4
+ > Examples: [examples.md](examples.md) · Guidelines: [guidelines.md](guidelines.md) · Tokens: [tokens.md](tokens.md)
5
+
6
+ A carousel shows images or arbitrary content slide by slide: promo banners, photo galleries, onboarding steps. Arrows and delimiter dots give you navigation, autoplay flips the slides on its own, and the progress bar shows the current position.
7
+
8
+ Family: [CdsCarousel](#cdscarousel) + subcomponents: [CdsCarouselItem](#cdscarouselitem).
9
+
10
+ ## CdsCarousel
11
+
12
+ **Props**
13
+
14
+ | Prop | Type | Default | Required | Description |
15
+ | --- | --- | --- | --- | --- |
16
+ | `color` | `string \| undefined` | — | no | Color of the active delimiter and of the progress bar |
17
+ | `continuous` | `boolean \| undefined` | `true` | no | Loops the navigation: from the last slide you move to the first one and back |
18
+ | `crossfade` | `boolean \| undefined` | — | no | Slides change with a smooth crossfade instead of a shift |
19
+ | `cycle` | `boolean \| undefined` | — | no | Flips the slides automatically after the given interval |
20
+ | `delimiterIcon` | `IconValue \| undefined` | `'delimiter'` | no | Icon of the delimiter (navigation dot) |
21
+ | `direction` | `"horizontal" \| "vertical" \| undefined` | `'horizontal'` | no | Switches the component between horizontal and vertical layout. |
22
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
23
+ | `height` | `string \| number \| undefined` | `500` | no | Height of the carousel |
24
+ | `hideDelimiterBackground` | `boolean \| undefined` | — | no | Hides the backdrop under the delimiters |
25
+ | `hideDelimiters` | `boolean \| undefined` | — | no | Hides the delimiters (navigation dots) |
26
+ | `interval` | `string \| number \| undefined` | `6000` | no | Autoplay interval in milliseconds (when `cycle` is on) |
27
+ | `mandatory` | `boolean \| "force" \| undefined` | `'force'` | no | Requires at least one item to stay selected |
28
+ | `max` | `number \| undefined` | — | no | Maximum number of items that can be selected |
29
+ | `modelValue` | `any` | — | no | Value of the selected items of the group |
30
+ | `multiple` | `boolean \| undefined` | — | no | Allows selecting several items at once |
31
+ | `nextIcon` | `IconValue \| undefined` | `'next'` | no | Icon of the button that moves to the next slide |
32
+ | `prevIcon` | `IconValue \| undefined` | `'prev'` | no | Icon of the button that moves to the previous slide |
33
+ | `progress` | `string \| boolean \| undefined` | — | no | Shows the progress bar of the current slide. A string sets the color of the bar |
34
+ | `required` | `boolean \| "force" \| undefined` | — | no | Requires at least one item to stay selected |
35
+ | `reverse` | `boolean \| undefined` | — | no | Inverts the direction of the transition animation between slides |
36
+ | `selectedClass` | `string \| undefined` | — | no | CSS class applied in the selected state |
37
+ | `showArrows` | `string \| boolean \| undefined` | `true` | no | Shows the navigation arrows. `'hover'` — only while the pointer is over the component |
38
+ | `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
39
+ | `theme` | `string \| undefined` | — | no | Component theme |
40
+ | `touch` | `boolean \| TouchHandlers \| undefined` | — | no | Controls swipe navigation: `false` turns the gestures off, an object sets your own touch handlers |
41
+ | `transitionDuration` | `number \| undefined` | — | no | Duration of the transition animation between slides, in milliseconds |
42
+ | `verticalArrows` | `boolean \| "left" \| "right" \| undefined` | — | no | Places the navigation arrows vertically: `'left'` or `'right'` — the side, `true` — the default side |
43
+ | `verticalDelimiters` | `boolean \| "left" \| "right" \| undefined` | — | no | Vertical placement of the delimiters: `left`, `right` or `true` (left) |
44
+
45
+ **Events**
46
+
47
+ | Name | Type | Description |
48
+ | --- | --- | --- |
49
+ | `update:modelValue` | `[]` | Fires when the active slide changes. |
50
+
51
+ **Slots**
52
+
53
+ | Name | Type | Description |
54
+ | --- | --- | --- |
55
+ | `default` | `{ group: GroupProvide; }` | Slides. The slot props carry the group state for controlling the active slide |
56
+ | `item` | `{ props: CarouselDelimiterProps; item: { id: string; value: unknown; disabled: boolean \| undefined; }; }` | Custom delimiter (navigation dot) for each slide. |
57
+ | `next` | `{ props: ControlProps; }` | Button that moves to the next slide. The slot props are ready to bind to your own button |
58
+ | `prev` | `{ props: ControlProps; }` | Button that moves to the previous slide. The slot props are ready to bind to your own button |
59
+
60
+ ---
61
+
62
+ ## CdsCarouselItem
63
+
64
+ **Props**
65
+
66
+ | Prop | Type | Default | Required | Description |
67
+ | --- | --- | --- | --- | --- |
68
+ | `absolute` | `boolean \| undefined` | — | no | Positions the image with `position: absolute`, filling its parent. |
69
+ | `alt` | `string \| undefined` | — | no | Alternative text of the image (the `alt` attribute). |
70
+ | `aspectRatio` | `string \| number \| undefined` | — | no | Aspect ratio of the content. For example `1.7778` (16/9) or `'4/3'`. |
71
+ | `color` | `string \| undefined` | — | no | Background color of the placeholder shown while loading. |
72
+ | `contentClass` | `any` | — | no | CSS class applied to the content wrapper. |
73
+ | `cover` | `boolean \| undefined` | — | no | Scales the image so that it covers the whole container (`object-fit: cover`). |
74
+ | `crossorigin` | `"" \| "anonymous" \| "use-credentials" \| undefined` | — | no | Value of the `crossorigin` attribute. |
75
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
76
+ | `draggable` | `boolean \| "true" \| "false" \| undefined` | — | no | Controls whether the image can be dragged (the `draggable` attribute). |
77
+ | `eager` | `boolean \| undefined` | — | no | Renders the content of the component right away. Useful when you have content that is not in the DOM but has to be indexed for SEO. |
78
+ | `gradient` | `string \| undefined` | — | no | CSS gradient laid over the image. For example `'to top, rgba(0,0,0,.4), transparent'`. |
79
+ | `height` | `string \| number \| undefined` | — | no | Component height |
80
+ | `imageClass` | `any` | — | no | CSS class applied to the inner `<img>` element. |
81
+ | `inline` | `boolean \| undefined` | — | no | Renders the component as an inline block (`inline-flex`) instead of a block one. |
82
+ | `lazySrc` | `string \| undefined` | — | no | Source of the low-quality placeholder image shown until the main one loads. |
83
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
84
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
85
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
86
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
87
+ | `options` | `IntersectionObserverInit \| undefined` | `{}` | no | `IntersectionObserver` options for lazy loading. |
88
+ | `position` | `string \| undefined` | — | no | Value of `object-position` that places the image inside the container. |
89
+ | `referrerpolicy` | `"origin" \| "no-referrer" \| "no-referrer-when-downgrade" \| "origin-when-cross-origin" \| "same-origin" \| "strict-origin" \| "strict-origin-when-cross-origin" \| "unsafe-url" \| undefined` | — | no | Value of the `referrerpolicy` attribute. |
90
+ | `reverseTransition` | `string \| boolean \| undefined` | — | no | Transition used when the slide appears in the reverse direction. A transition component name, or `false` to turn the animation off |
91
+ | `selectedClass` | `string \| undefined` | — | no | CSS class applied in the selected state |
92
+ | `sizes` | `string \| undefined` | — | no | Value of the `sizes` attribute for responsive images. |
93
+ | `src` | `string \| CdsImageSrcObject \| undefined` | `''` | no | Image source. A string or an object with `src`/`srcset`/`lazySrc`/`aspect`. |
94
+ | `srcset` | `string \| undefined` | — | no | Set of image sources for different resolutions (the `srcset` attribute). |
95
+ | `theme` | `string \| undefined` | — | no | Component theme |
96
+ | `transition` | `string \| boolean \| undefined` | — | no | Transition used when the slide appears in the forward direction. A transition component name, or `false` to turn the animation off |
97
+ | `value` | `any` | — | no | Value of the component within the group |
98
+ | `width` | `string \| number \| undefined` | — | no | Component width |
99
+
100
+ **Slots**
101
+
102
+ | Name | Type | Description |
103
+ | --- | --- | --- |
104
+ | `default` | `any` | Content shown over the image. |
105
+ | `error` | `any` | Content shown when the image fails to load. |
106
+ | `placeholder` | `any` | Content shown while the image is loading. |
107
+ | `sources` | `any` | Extra `<source>` elements for the `<picture>` tag. |
@@ -0,0 +1,444 @@
1
+ # CdsCarousel — 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 carousel shows images or arbitrary content slide by slide: promo banners, photo galleries, onboarding steps. Arrows and delimiter dots give you navigation, autoplay flips the slides on its own, and the progress bar shows the current position.
7
+
8
+ ## Images
9
+
10
+ `CdsCarouselItem` combines a slide and [CdsImage](../cds-image/api.md) — pass it any image prop: `src`, `alt`, `cover`, `gradient`. The `height` prop sets the height of the carousel (500 by default).
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
17
+ import { ref } from 'vue';
18
+
19
+ const slide = ref(0);
20
+
21
+ const slides = [
22
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
23
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
24
+ { src: '/images/temp/ny.webp', alt: 'Улицы Нью-Йорка' },
25
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
26
+ ];
27
+ </script>
28
+
29
+ <template>
30
+ <CdsCarousel v-model="slide" height="360" class="m-auto max-w-[640px]">
31
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
32
+ </CdsCarousel>
33
+ </template>
34
+ ```
35
+
36
+ ## Custom content
37
+
38
+ A slide does not have to be an image: put any markup into the slot of `CdsCarouselItem` and it stretches over the whole frame.
39
+
40
+ **Example (SFC):**
41
+
42
+ ```vue
43
+ <script setup lang="ts">
44
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
45
+
46
+ const slides = [
47
+ { text: 'Первый слайд', class: 'bg-brand-primary' },
48
+ { text: 'Второй слайд', class: 'bg-status-progress-fill' },
49
+ { text: 'Третий слайд', class: 'bg-surface-inverse' }
50
+ ];
51
+ </script>
52
+
53
+ <template>
54
+ <CdsCarousel height="220" class="m-auto max-w-[520px]">
55
+ <CdsCarouselItem v-for="slide in slides" :key="slide.text">
56
+ <div class="flex h-full items-center justify-center text-500 text-content-on-dark" :class="slide.class">
57
+ {{ slide.text }}
58
+ </div>
59
+ </CdsCarouselItem>
60
+ </CdsCarousel>
61
+ </template>
62
+ ```
63
+
64
+ ## Autoplay
65
+
66
+ The `cycle` prop flips the slides automatically, `interval` sets the pause in milliseconds (6000 by default). The timer restarts after a manual switch, so the reader always has time to finish looking at a slide.
67
+
68
+ **Example (SFC):**
69
+
70
+ ```vue
71
+ <script setup lang="ts">
72
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
73
+
74
+ const slides = [
75
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
76
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
77
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
78
+ ];
79
+ </script>
80
+
81
+ <template>
82
+ <CdsCarousel cycle :interval="3000" height="220" class="m-auto max-w-[520px]">
83
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
84
+ </CdsCarousel>
85
+ </template>
86
+ ```
87
+
88
+ ## Progress
89
+
90
+ The `progress` prop adds a position bar at the bottom of the carousel. A string value sets its color — any of the tokens that [CdsProgressBar](../cds-progress-bar/api.md) accepts.
91
+
92
+ **Example (SFC):**
93
+
94
+ ```vue
95
+ <script setup lang="ts">
96
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
97
+
98
+ const slides = [
99
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
100
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
101
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
102
+ ];
103
+ </script>
104
+
105
+ <template>
106
+ <div class="flex flex-wrap items-start justify-center gap-6">
107
+ <div class="flex flex-col items-center gap-1">
108
+ <CdsCarousel progress hide-delimiters height="180" class="w-[280px]">
109
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
110
+ </CdsCarousel>
111
+ <span class="text-100 text-content-secondary">progress</span>
112
+ </div>
113
+
114
+ <div class="flex flex-col items-center gap-1">
115
+ <CdsCarousel progress="brand-primary" hide-delimiters height="180" class="w-[280px]">
116
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
117
+ </CdsCarousel>
118
+ <span class="text-100 text-content-secondary">progress="brand-primary"</span>
119
+ </div>
120
+ </div>
121
+ </template>
122
+ ```
123
+
124
+ ## Delimiters
125
+
126
+ Props control the navigation dots: `hide-delimiters` removes them completely, `hide-delimiter-background` removes only the backdrop, `vertical-delimiters` (`left` / `right`) puts the dots vertically along the edge, and `delimiter-icon` changes the dot icon.
127
+
128
+ **Example (SFC):**
129
+
130
+ ```vue
131
+ <script setup lang="ts">
132
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
133
+
134
+ const slides = [
135
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
136
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
137
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
138
+ ];
139
+ </script>
140
+
141
+ <template>
142
+ <div class="flex flex-wrap items-start justify-center gap-6">
143
+ <div class="flex flex-col items-center gap-1">
144
+ <CdsCarousel hide-delimiter-background height="180" class="w-[280px]">
145
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
146
+ </CdsCarousel>
147
+ <span class="text-100 text-content-secondary">hide-delimiter-background</span>
148
+ </div>
149
+
150
+ <div class="flex flex-col items-center gap-1">
151
+ <CdsCarousel vertical-delimiters="right" hide-delimiter-background height="180" class="w-[280px]">
152
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
153
+ </CdsCarousel>
154
+ <span class="text-100 text-content-secondary">vertical-delimiters="right"</span>
155
+ </div>
156
+ </div>
157
+ </template>
158
+ ```
159
+
160
+ ## Delimiters
161
+
162
+ The `item` slot replaces a dot with your own element: it receives the ready-made delimiter props (click handler, `aria-label`, active class) and the group item itself — all that is left is to bind them with `v-bind`.
163
+
164
+ **Example (SFC):**
165
+
166
+ ```vue
167
+ <script setup lang="ts">
168
+ import { CdsButton, CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
169
+ import { ref } from 'vue';
170
+
171
+ const slide = ref(0);
172
+
173
+ const slides = [
174
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
175
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
176
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
177
+ ];
178
+ </script>
179
+
180
+ <template>
181
+ <CdsCarousel v-model="slide" height="220" class="m-auto max-w-[520px]">
182
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
183
+
184
+ <template #item="{ props: itemProps, item }">
185
+ <CdsButton
186
+ v-bind="itemProps"
187
+ size="sm"
188
+ :appearance="slide === item.value ? 'primary' : 'inverse'"
189
+ :text="String(Number(item.value) + 1)"
190
+ />
191
+ </template>
192
+ </CdsCarousel>
193
+ </template>
194
+ ```
195
+
196
+ ## Arrows
197
+
198
+ The arrow props are inherited from [CdsSlideView](../cds-slide-view/api.md): `show-arrows="hover"` shows them on hover only, `:show-arrows="false"` removes them completely, `prev-icon` / `next-icon` change the icons, and the `prev` / `next` slots replace the buttons themselves.
199
+
200
+ **Example (SFC):**
201
+
202
+ ```vue
203
+ <script setup lang="ts">
204
+ import { CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
205
+
206
+ const slides = [
207
+ { src: '/images/temp/city.webp', alt: 'Вечерний город' },
208
+ { src: '/images/temp/desert.webp', alt: 'Столовые горы на закате' },
209
+ { src: '/images/temp/space.webp', alt: 'Звёздное небо' }
210
+ ];
211
+ </script>
212
+
213
+ <template>
214
+ <CdsCarousel show-arrows="hover" height="220" class="m-auto max-w-[520px]">
215
+ <CdsCarouselItem v-for="item in slides" :key="item.src" :src="item.src" :alt="item.alt" cover />
216
+ </CdsCarousel>
217
+ </template>
218
+ ```
219
+
220
+ ## Promo banners
221
+
222
+ The classic banner rotation: `cycle` with a 5 second `interval` flips the slides on its own, `progress` shows when the next one comes. The text and the button live in the slide slot, and the `gradient` from CdsImage darkens the top of the frame beneath them — so they stay readable on any image.
223
+
224
+ **Example (SFC):**
225
+
226
+ ```vue
227
+ <script setup lang="ts">
228
+ import { CdsButton, CdsCarousel, CdsCarouselItem } from '@central-design-system/components';
229
+
230
+ const banners = [
231
+ {
232
+ src: '/images/temp/city.webp',
233
+ alt: 'Вечерний город',
234
+ title: 'Городские туры выходного дня',
235
+ text: 'Скидка 20% на все маршруты до конца месяца'
236
+ },
237
+ {
238
+ src: '/images/temp/villa.webp',
239
+ alt: 'Вилла с бассейном',
240
+ title: 'Виллы у моря',
241
+ text: 'Раннее бронирование лета — уже открыто'
242
+ },
243
+ {
244
+ src: '/images/temp/desert.webp',
245
+ alt: 'Столовые горы на закате',
246
+ title: 'Экспедиции в пустыню',
247
+ text: 'Небольшие группы, опытные гиды'
248
+ }
249
+ ];
250
+ </script>
251
+
252
+ <template>
253
+ <CdsCarousel cycle :interval="5000" progress height="280" class="m-auto max-w-[640px]">
254
+ <CdsCarouselItem
255
+ v-for="banner in banners"
256
+ :key="banner.src"
257
+ :src="banner.src"
258
+ :alt="banner.alt"
259
+ gradient="to bottom, rgba(0, 0, 0, 0.7), transparent 60%"
260
+ cover
261
+ >
262
+ <div class="flex w-full items-start justify-between gap-2 p-4">
263
+ <div>
264
+ <p class="text-500 font-bold text-content-on-dark">{{ banner.title }}</p>
265
+ <p class="text-200 text-content-on-dark">{{ banner.text }}</p>
266
+ </div>
267
+ <CdsButton text="Подробнее" size="sm" />
268
+ </div>
269
+ </CdsCarouselItem>
270
+ </CdsCarousel>
271
+ </template>
272
+ ```
273
+
274
+ ## Gallery with thumbnails
275
+
276
+ The dots are replaced by thumbnails: `hide-delimiters` removes the built-in delimiters, and a click on a thumbnail changes `v-model`. The counter next to it reads the same `v-model` — the carousel, the thumbnails and the counter always stay in sync.
277
+
278
+ **Example (SFC):**
279
+
280
+ ```vue
281
+ <script setup lang="ts">
282
+ import { CdsCarousel, CdsCarouselItem, CdsImage } from '@central-design-system/components';
283
+ import { ref } from 'vue';
284
+
285
+ const slide = ref(0);
286
+
287
+ const photos = [
288
+ { src: '/images/temp/villa.webp', alt: 'Вилла с бассейном' },
289
+ { src: '/images/temp/airbnb.webp', alt: 'Гостиная с камином' },
290
+ { src: '/images/temp/ny.webp', alt: 'Вид на город из окна' },
291
+ { src: '/images/temp/wallpaper.webp', alt: 'Озеро рядом с виллой' }
292
+ ];
293
+ </script>
294
+
295
+ <template>
296
+ <div class="m-auto flex w-[480px] flex-col gap-2">
297
+ <CdsCarousel v-model="slide" hide-delimiters height="280">
298
+ <CdsCarouselItem v-for="photo in photos" :key="photo.src" :src="photo.src" :alt="photo.alt" cover />
299
+ </CdsCarousel>
300
+
301
+ <div class="flex items-center justify-between">
302
+ <div class="flex gap-1">
303
+ <button
304
+ v-for="(photo, index) in photos"
305
+ :key="photo.src"
306
+ type="button"
307
+ class="cursor-pointer overflow-hidden rounded-100 border-2 border-solid p-0"
308
+ :class="slide === index ? 'border-brand-primary' : 'border-transparent'"
309
+ :aria-label="photo.alt"
310
+ @click="slide = index"
311
+ >
312
+ <CdsImage :src="photo.src" :alt="''" width="56" height="42" cover />
313
+ </button>
314
+ </div>
315
+ <span class="text-200 text-content-secondary">{{ slide + 1 }} / {{ photos.length }}</span>
316
+ </div>
317
+ </div>
318
+ </template>
319
+ ```
320
+
321
+ ## Vertical feed
322
+
323
+ A stories feed in the spirit of social networks: `direction="vertical"` flips the frames top to bottom, `vertical-arrows="left"` and `vertical-delimiters="right"` pull the arrows and the dots apart to the side edges and free up the frame. The author card and the counter sit in an absolute layer above the carousel: `pointer-events-none` lets clicks through to the arrows, and a transition keyed by `v-model` swaps the card together with the slide.
324
+
325
+ **Example (SFC):**
326
+
327
+ ```vue
328
+ <script setup lang="ts">
329
+ import { CdsAvatar, CdsCarousel, CdsCarouselItem, CdsTag } from '@central-design-system/components';
330
+ import { computed, ref } from 'vue';
331
+
332
+ const slide = ref(0);
333
+
334
+ const stories = [
335
+ {
336
+ src: '/images/temp/space.webp',
337
+ alt: 'Звёздное небо',
338
+ author: 'Марина Соколова',
339
+ followers: '31 тыс. подписчиков',
340
+ avatar: 'https://i.pravatar.cc/80?img=47'
341
+ },
342
+ {
343
+ src: '/images/temp/desert.webp',
344
+ alt: 'Столовые горы на закате',
345
+ author: 'Григорий Ковалёв',
346
+ followers: '412 подписчиков',
347
+ avatar: 'https://i.pravatar.cc/80?img=59'
348
+ },
349
+ {
350
+ src: '/images/temp/city.webp',
351
+ alt: 'Вечерний город',
352
+ author: 'Эмма Королёва',
353
+ followers: '521 подписчик',
354
+ avatar: 'https://i.pravatar.cc/80?img=44'
355
+ },
356
+ {
357
+ src: '/images/temp/cat.webp',
358
+ alt: 'Рыжий кот',
359
+ author: 'Антон Макаров',
360
+ followers: '6 тыс. подписчиков',
361
+ avatar: 'https://i.pravatar.cc/80?img=68'
362
+ }
363
+ ];
364
+
365
+ const current = computed(() => stories[slide.value]);
366
+ </script>
367
+
368
+ <template>
369
+ <div class="relative m-auto max-w-[560px] overflow-hidden rounded-200">
370
+ <CdsCarousel
371
+ v-model="slide"
372
+ direction="vertical"
373
+ vertical-arrows="left"
374
+ vertical-delimiters="right"
375
+ hide-delimiter-background
376
+ progress
377
+ height="360"
378
+ >
379
+ <CdsCarouselItem v-for="story in stories" :key="story.src" :src="story.src" :alt="story.alt" cover />
380
+ </CdsCarousel>
381
+
382
+ <div class="pointer-events-none absolute inset-0 z-10 flex flex-col items-center justify-between py-4">
383
+ <Transition name="jump-transition-right" mode="out-in" appear>
384
+ <div :key="slide" class="flex items-center gap-2 rounded-full bg-surface-primary p-1 pr-4">
385
+ <CdsAvatar :image="current.avatar" />
386
+ <div>
387
+ <p class="text-200 font-bold text-content-primary">{{ current.author }}</p>
388
+ <p class="text-100 text-content-secondary">{{ current.followers }}</p>
389
+ </div>
390
+ </div>
391
+ </Transition>
392
+
393
+ <CdsTag :text="`${slide + 1} / ${stories.length}`" size="sm" />
394
+ </div>
395
+ </div>
396
+ </template>
397
+ ```
398
+
399
+ ## Onboarding
400
+
401
+ Product introduction steps: the arrows are off (`:show-arrows="false"`), the movement is driven by the "Back" and "Next" buttons through `v-model`. On the last step "Next" turns into a call to action.
402
+
403
+ **Example (SFC):**
404
+
405
+ ```vue
406
+ <script setup lang="ts">
407
+ import { CdsButton, CdsCarousel, CdsCarouselItem, CdsIcon } from '@central-design-system/components';
408
+ import { computed, ref } from 'vue';
409
+
410
+ const slide = ref(0);
411
+
412
+ const steps = [
413
+ { icon: 'search', title: 'Ищите быстрее', text: 'Единый поиск по проектам, файлам и обсуждениям.' },
414
+ {
415
+ icon: 'notification',
416
+ title: 'Ничего не пропускайте',
417
+ text: 'Уведомления о важных событиях — там, где вам удобно.'
418
+ },
419
+ { icon: 'winner', title: 'Отмечайте прогресс', text: 'Дашборд покажет, как продвигается работа команды.' }
420
+ ];
421
+
422
+ const isLast = computed(() => slide.value === steps.length - 1);
423
+ </script>
424
+
425
+ <template>
426
+ <div class="m-auto flex w-[420px] flex-col gap-2">
427
+ <CdsCarousel v-model="slide" :show-arrows="false" hide-delimiter-background height="220">
428
+ <CdsCarouselItem v-for="step in steps" :key="step.title">
429
+ <div class="flex h-full flex-col items-center justify-center gap-2 bg-surface-secondary px-8 text-center">
430
+ <CdsIcon :icon="step.icon" :size="32" />
431
+ <p class="text-400 font-bold text-content-primary">{{ step.title }}</p>
432
+ <p class="text-200 text-content-secondary">{{ step.text }}</p>
433
+ </div>
434
+ </CdsCarouselItem>
435
+ </CdsCarousel>
436
+
437
+ <div class="flex justify-between">
438
+ <CdsButton appearance="tertiary" text="Назад" :disabled="slide === 0" @click="slide -= 1" />
439
+ <CdsButton v-if="!isLast" text="Далее" @click="slide += 1" />
440
+ <CdsButton v-else text="Начать работу" @click="slide = 0" />
441
+ </div>
442
+ </div>
443
+ </template>
444
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsCarousel — 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
+ | Images with cover fill the whole slide — the carousel looks solid. | Without cover the image leaves empty margins, and the frame height jumps from slide to slide. |
9
+ | Up to 5–7 slides: the dots stay readable and you can tell how many are left. | A dozen and a half slides blur into a strip of dots — nobody scrolls through to the important content. |
10
+ | Text over an image sits on a gradient — it reads on any frame. | Text without a backdrop gets lost on a busy image. |
@@ -0,0 +1,17 @@
1
+ # CdsCarousel — 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
+ ## _CdsCarousel.variables.scss
8
+
9
+ ```scss
10
+ $carousel-controls-size: 50px !default;
11
+ $carousel-controls-background: rgb(var(--cds-color-surface-overlay)) !default;
12
+ $carousel-controls-color: rgb(var(--cds-color-content-on-dark)) !default;
13
+ $carousel-dot-margin: 0 var(--cds-spacing-100) !default;
14
+ $carousel-dot-inactive-opacity: 0.5 !default;
15
+ $carousel-dot-active-opacity: 1 !default;
16
+ $carousel-dot-hover-opacity: 0.8 !default;
17
+ ```