@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,553 @@
1
+ # CdsUploader — 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
+ The uploader sends files to the server right from the interface: the user picks them in the system dialog or drags them onto the button, and the component shows the list of what was uploaded — with a status, progress, downloading and removal. Every step of the file lifecycle comes with an event.
7
+
8
+ ## The upload button
9
+
10
+ By default the upload is started by the primary "Загрузить файл" button with the `upload-icon` icon. The `button-props` prop passes any [CdsButton](../cds-button/api.md) props to the button, and the `default` slot replaces it entirely — the ready props of the button arrive in the `props` slot argument.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import type { NUploader } from '@central-design-system/components';
17
+ import { CdsButton, CdsUploader } from '@central-design-system/components';
18
+ import { ref } from 'vue';
19
+
20
+ const documents = ref<NUploader.IUploadFile[]>([]);
21
+ const photos = ref<NUploader.IUploadFile[]>([]);
22
+ </script>
23
+
24
+ <template>
25
+ <div class="flex flex-col gap-2 w-[350px] m-auto">
26
+ <CdsUploader
27
+ v-model="documents"
28
+ label="Свойства кнопки"
29
+ action="https://user1694090019726.requestly.dev/upload"
30
+ :button-props="{ appearance: 'secondary', text: 'Прикрепить файлы' }"
31
+ />
32
+
33
+ <CdsUploader
34
+ v-model="photos"
35
+ label="Своя кнопка через слот"
36
+ action="https://user1694090019726.requestly.dev/upload"
37
+ >
38
+ <template #default="{ props }">
39
+ <CdsButton v-bind="props" appearance="tertiary" prepend-icon="add" text="Добавить фото" />
40
+ </template>
41
+ </CdsUploader>
42
+ </div>
43
+ </template>
44
+ ```
45
+
46
+ ## Allowed file types
47
+
48
+ The `accept` prop limits the choice in the system dialog and filters out the unsuitable files on a drop — the rejected ones arrive in the `reject` event.
49
+
50
+ **Example (SFC):**
51
+
52
+ ```vue
53
+ <script setup lang="ts">
54
+ import type { NUploader } from '@central-design-system/components';
55
+ import { CdsUploader } from '@central-design-system/components';
56
+ import { ref } from 'vue';
57
+
58
+ const files = ref<NUploader.IUploadFile[]>([]);
59
+ </script>
60
+
61
+ <template>
62
+ <div class="w-[350px] m-auto">
63
+ <CdsUploader
64
+ v-model="files"
65
+ label="Загрузка файла"
66
+ description="Подойдут только изображения jpeg, jpg или png"
67
+ action="https://user1694090019726.requestly.dev/upload"
68
+ accept="image/png, image/jpeg"
69
+ />
70
+ </div>
71
+ </template>
72
+ ```
73
+
74
+ ## The file list
75
+
76
+ The list of the uploaded files lives in `v-model` — put the files received from the server into it and they will be shown right away. The `show-upload-list` prop controls the list: `false` hides it entirely, an object turns on the download and removal icons.
77
+
78
+ **Example (SFC):**
79
+
80
+ ```vue
81
+ <script setup lang="ts">
82
+ import type { NUploader } from '@central-design-system/components';
83
+ import { CdsUploader } from '@central-design-system/components';
84
+ import { ref } from 'vue';
85
+
86
+ const files = ref<NUploader.IUploadFile[]>([
87
+ {
88
+ uid: '1',
89
+ name: 'dummy.pdf',
90
+ status: 'done',
91
+ url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf'
92
+ },
93
+ {
94
+ uid: '2',
95
+ name: 'B2b-elbcp-180x130.png',
96
+ status: 'done',
97
+ url: 'https://upload.wikimedia.org/wikipedia/commons/a/ae/B2b-elbcp-180x130.png'
98
+ }
99
+ ]);
100
+ </script>
101
+
102
+ <template>
103
+ <div class="w-[350px] m-auto">
104
+ <CdsUploader
105
+ v-model="files"
106
+ label="Документы"
107
+ description="Уже загруженные файлы приходят через v-model"
108
+ action="https://user1694090019726.requestly.dev/upload"
109
+ :show-upload-list="{ showDownloadIcon: true, showRemoveIcon: true }"
110
+ />
111
+ </div>
112
+ </template>
113
+ ```
114
+
115
+ ## Number of files
116
+
117
+ The `max-count` prop limits the length of the list: with `max-count="1"` a new file replaces the previous one, with a larger limit the extra files are dropped.
118
+
119
+ **Example (SFC):**
120
+
121
+ ```vue
122
+ <script setup lang="ts">
123
+ import type { NUploader } from '@central-design-system/components';
124
+ import { CdsUploader } from '@central-design-system/components';
125
+ import { ref } from 'vue';
126
+
127
+ const avatar = ref<NUploader.IUploadFile[]>([]);
128
+ const documents = ref<NUploader.IUploadFile[]>([]);
129
+ </script>
130
+
131
+ <template>
132
+ <div class="flex flex-col gap-2 w-[350px] m-auto">
133
+ <CdsUploader
134
+ v-model="avatar"
135
+ label="Фото профиля"
136
+ description="Новый файл заменяет предыдущий"
137
+ action="https://user1694090019726.requestly.dev/upload"
138
+ accept="image/png, image/jpeg"
139
+ :max-count="1"
140
+ />
141
+
142
+ <CdsUploader
143
+ v-model="documents"
144
+ label="Документы"
145
+ description="Не больше трёх файлов — лишние отбрасываются"
146
+ action="https://user1694090019726.requestly.dev/upload"
147
+ :max-count="3"
148
+ />
149
+ </div>
150
+ </template>
151
+ ```
152
+
153
+ ## Uploading directories
154
+
155
+ The `directory` prop turns on picking a whole folder — the files are collected from it recursively, on a drop as well.
156
+
157
+ **Example (SFC):**
158
+
159
+ ```vue
160
+ <script setup lang="ts">
161
+ import type { NUploader } from '@central-design-system/components';
162
+ import { CdsButton, CdsUploader } from '@central-design-system/components';
163
+ import { ref } from 'vue';
164
+
165
+ const files = ref<NUploader.IUploadFile[]>([]);
166
+ </script>
167
+
168
+ <template>
169
+ <div class="w-[350px] m-auto">
170
+ <CdsUploader
171
+ v-model="files"
172
+ label="Загрузка директории"
173
+ description="Выберите папку — файлы соберутся из неё рекурсивно"
174
+ action="https://user1694090019726.requestly.dev/upload"
175
+ directory
176
+ >
177
+ <template #default="{ props }">
178
+ <CdsButton v-bind="props" text="Загрузить директорию" />
179
+ </template>
180
+ </CdsUploader>
181
+ </div>
182
+ </template>
183
+ ```
184
+
185
+ ## States
186
+
187
+ `disabled` blocks the button and removes the removal icons from the list, `readonly` forbids changing the list but keeps the downloading.
188
+
189
+ **Example (SFC):**
190
+
191
+ ```vue
192
+ <script setup lang="ts">
193
+ import type { NUploader } from '@central-design-system/components';
194
+ import { CdsUploader } from '@central-design-system/components';
195
+
196
+ const files: NUploader.IUploadFile[] = [
197
+ {
198
+ uid: '1',
199
+ name: 'dummy.pdf',
200
+ status: 'done',
201
+ url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf'
202
+ }
203
+ ];
204
+ </script>
205
+
206
+ <template>
207
+ <div class="flex flex-col gap-2 w-[350px] m-auto">
208
+ <CdsUploader label="Disabled" description="Загрузка недоступна" disabled />
209
+
210
+ <CdsUploader
211
+ label="Readonly"
212
+ description="Список нельзя изменить, скачивание работает"
213
+ :model-value="files"
214
+ :show-upload-list="{ showDownloadIcon: true }"
215
+ readonly
216
+ />
217
+ </div>
218
+ </template>
219
+ ```
220
+
221
+ ## Slots
222
+
223
+ When props are not enough, the content of any block is replaced by a slot.
224
+
225
+ **Example (SFC):**
226
+
227
+ ```vue
228
+ <script setup lang="ts">
229
+ import type { NUploader } from '@central-design-system/components';
230
+ import {
231
+ CdsButton,
232
+ CdsFunctionalButton,
233
+ CdsIcon,
234
+ CdsListItem,
235
+ CdsTooltip,
236
+ CdsUploader
237
+ } from '@central-design-system/components';
238
+ import { ref } from 'vue';
239
+
240
+ const files = ref<NUploader.IUploadFile[]>([
241
+ {
242
+ uid: '1',
243
+ name: 'dummy.pdf',
244
+ status: 'done',
245
+ url: 'https://www.w3.org/WAI/ER/tests/xhtml/testfiles/resources/pdf/dummy.pdf'
246
+ }
247
+ ]);
248
+
249
+ const clearAll = () => {
250
+ files.value = [];
251
+ };
252
+ </script>
253
+
254
+ <template>
255
+ <div class="w-[350px] m-auto">
256
+ <CdsUploader v-model="files" action="https://user1694090019726.requestly.dev/upload">
257
+ <template #label>
258
+ <span class="flex items-center gap-0.5">
259
+ Загрузка файла
260
+ <CdsTooltip text="Дополнительная информация">
261
+ <template #activator="{ props }">
262
+ <CdsIcon name="info" v-bind="props" />
263
+ </template>
264
+ </CdsTooltip>
265
+ </span>
266
+ </template>
267
+
268
+ <template #description> Подойдёт любой формат — <strong>jpg, png, doc, zip</strong> — до 10 МБ. </template>
269
+
270
+ <template #default="{ props }">
271
+ <CdsButton v-bind="props" text="Выбрать файл" />
272
+ </template>
273
+
274
+ <template #append>
275
+ <CdsFunctionalButton icon="delete" aria-label="Удалить все файлы" @click="clearAll">
276
+ <CdsTooltip activator="parent">Удалить все файлы</CdsTooltip>
277
+ </CdsFunctionalButton>
278
+ </template>
279
+
280
+ <template #messages>Файлы проверяются после загрузки</template>
281
+
282
+ <template #itemRender="{ file, actions }">
283
+ <CdsListItem :title="file?.name">
284
+ <template #append>
285
+ <CdsFunctionalButton icon="download" aria-label="Скачать файл" @click="actions.download" />
286
+ <CdsFunctionalButton icon="delete" aria-label="Удалить файл" @click="actions.remove" />
287
+ </template>
288
+ </CdsListItem>
289
+ </template>
290
+ </CdsUploader>
291
+ </div>
292
+ </template>
293
+ ```
294
+
295
+ ## Deferred sending
296
+
297
+ The `before-upload` hook returning `false` turns the automatic sending off: the files pile up in the list, and the upload is started by a separate button in the `append` slot — together with the submission of the whole form, for example.
298
+
299
+ **Example (SFC):**
300
+
301
+ ```vue
302
+ <script setup lang="ts">
303
+ import type { NUploader } from '@central-design-system/components';
304
+ import { CdsButton, CdsToast, CdsUploader } from '@central-design-system/components';
305
+ import { ref, unref } from 'vue';
306
+
307
+ const files = ref<NUploader.IUploadFile[]>([]);
308
+ const loading = ref(false);
309
+ const uploaded = ref(false);
310
+
311
+ const beforeUpload = (file: NUploader.IUploadFile): boolean => {
312
+ files.value = [...(unref(files) || []), file];
313
+ return false;
314
+ };
315
+
316
+ const handleUpload = async () => {
317
+ loading.value = true;
318
+ await new Promise((resolve) => setTimeout(resolve, 3000));
319
+ files.value = [];
320
+ loading.value = false;
321
+ uploaded.value = true;
322
+ };
323
+ </script>
324
+
325
+ <template>
326
+ <div class="w-[350px] m-auto">
327
+ <CdsUploader
328
+ v-model="files"
329
+ label="Выберите файлы"
330
+ description="Файлы копятся в списке, загрузку запускает кнопка"
331
+ :before-upload="beforeUpload"
332
+ :show-upload-list="{ showRemoveIcon: true }"
333
+ >
334
+ <template #default="{ props }">
335
+ <CdsButton appearance="secondary" text="Выбрать файлы" :disabled="props.disabled" :readonly="props.readonly" />
336
+ </template>
337
+ <template #append>
338
+ <CdsButton prepend-icon="upload" :loading="loading" :disabled="!files.length" @click="handleUpload">
339
+ Загрузить файлы
340
+ </CdsButton>
341
+ </template>
342
+ </CdsUploader>
343
+ <CdsToast v-model="uploaded" title="Файлы успешно загружены" status="success" />
344
+ </div>
345
+ </template>
346
+ ```
347
+
348
+ ## A check before the upload
349
+
350
+ The same `before-upload` is the place for validation: return `false` and the file will not go to the server. A rejected file still gets into the list — remove it in the `change` handler and show the reason through `error-messages`.
351
+
352
+ **Example (SFC):**
353
+
354
+ ```vue
355
+ <script setup lang="ts">
356
+ import type { NUploader } from '@central-design-system/components';
357
+ import { CdsUploader } from '@central-design-system/components';
358
+ import { ref } from 'vue';
359
+
360
+ const MAX_SIZE_MB = 5;
361
+
362
+ const files = ref<NUploader.IUploadFile[]>([]);
363
+ const errors = ref<string[]>([]);
364
+
365
+ const beforeUpload = (file: NUploader.IUploadFile): boolean => {
366
+ const valid = (file.size ?? 0) <= MAX_SIZE_MB * 1024 * 1024;
367
+
368
+ if (!valid) {
369
+ errors.value = [`«${file.name}» больше ${MAX_SIZE_MB} МБ`];
370
+ }
371
+
372
+ return valid;
373
+ };
374
+
375
+ const handleChange = (info: NUploader.IUploadChangeParam<NUploader.IUploadFile> | Event) => {
376
+ if (info instanceof Event) return;
377
+
378
+ files.value = info.fileList.filter((file) => file.status);
379
+ };
380
+ </script>
381
+
382
+ <template>
383
+ <div class="w-[350px] m-auto">
384
+ <CdsUploader
385
+ v-model="files"
386
+ label="Вложения"
387
+ :description="`Любые файлы до ${MAX_SIZE_MB} МБ`"
388
+ action="https://user1694090019726.requestly.dev/upload"
389
+ :error-messages="errors"
390
+ :before-upload="beforeUpload"
391
+ @change="handleChange"
392
+ />
393
+ </div>
394
+ </template>
395
+ ```
396
+
397
+ ## Upload errors
398
+
399
+ A file rejected by the server stays in the list with the error status. The `show-tooltip-with-error` prop shows the server response in a tooltip next to the status, and the `error` event lets you collect the messages under the field — here they pile up in `error-messages` and are reset when the file is removed.
400
+
401
+ **Example (SFC):**
402
+
403
+ ```vue
404
+ <script setup lang="ts">
405
+ import type { NUploader } from '@central-design-system/components';
406
+ import { CdsUploader } from '@central-design-system/components';
407
+ import { ref } from 'vue';
408
+
409
+ const files = ref<NUploader.IUploadFile[]>([]);
410
+ const errors = ref<string[]>([]);
411
+
412
+ const handleError = (
413
+ _error: NUploader.IUploadRequestError | ProgressEvent,
414
+ response: { message?: string } | null,
415
+ file: NUploader.IUploadFile
416
+ ) => {
417
+ errors.value = [...errors.value, `${response?.message ?? 'Ошибка сервера'}: ${file.name}`];
418
+ };
419
+
420
+ const handleRemove = () => {
421
+ errors.value = [];
422
+ };
423
+ </script>
424
+
425
+ <template>
426
+ <div class="w-[350px] m-auto">
427
+ <CdsUploader
428
+ v-model="files"
429
+ label="Загрузка с ошибкой"
430
+ description="Тестовый сервер отклоняет любой файл"
431
+ action="https://user1694090019726.requestly.dev/upload-error"
432
+ :error-messages="errors"
433
+ show-tooltip-with-error
434
+ @error="handleError"
435
+ @remove="handleRemove"
436
+ />
437
+ </div>
438
+ </template>
439
+ ```
440
+
441
+ ## Uploading without a server
442
+
443
+ The `custom-request` prop replaces the built-in XHR transport with your own function: it receives the file and the `onProgress`, `onSuccess`, `onError` callbacks and returns an object with an `abort` method. Here the upload is simulated with a timer — files can be sent through an SDK or a WebSocket in the same way.
444
+
445
+ **Example (SFC):**
446
+
447
+ ```vue
448
+ <script setup lang="ts">
449
+ import type { NUploader } from '@central-design-system/components';
450
+ import { CdsUploader } from '@central-design-system/components';
451
+ import { ref } from 'vue';
452
+
453
+ const files = ref<NUploader.IUploadFile[]>([]);
454
+
455
+ // Имитация загрузки: прогресс по таймеру вместо XHR-запроса
456
+ const customRequest = ({ onProgress, onSuccess }: NUploader.IUploadRequestOption) => {
457
+ let percent = 0;
458
+
459
+ const timer = setInterval(() => {
460
+ percent += 20;
461
+ onProgress?.({ percent });
462
+
463
+ if (percent >= 100) {
464
+ clearInterval(timer);
465
+ onSuccess?.({});
466
+ }
467
+ }, 400);
468
+
469
+ return { abort: () => clearInterval(timer) };
470
+ };
471
+ </script>
472
+
473
+ <template>
474
+ <div class="w-[350px] m-auto">
475
+ <CdsUploader
476
+ v-model="files"
477
+ label="Загрузка без сервера"
478
+ description="Файл никуда не отправляется — прогресс имитируется"
479
+ :custom-request="customRequest"
480
+ :show-upload-list="{ showRemoveIcon: true }"
481
+ />
482
+ </div>
483
+ </template>
484
+ ```
485
+
486
+ ## Events
487
+
488
+ The component reports every step: `change` — any change of the list, `progress`, `success` and `error` — the course of the upload, `remove`, `drop`, `reject`, `download`, `preview` — the actions of the user. Open the console to see them.
489
+
490
+ **Example (SFC):**
491
+
492
+ ```vue
493
+ <script setup lang="ts">
494
+ import type { NUploader } from '@central-design-system/components';
495
+ import { CdsUploader } from '@central-design-system/components';
496
+ import { ref } from 'vue';
497
+
498
+ const files = ref<NUploader.IUploadFile[]>([]);
499
+
500
+ const handleChange = (info: NUploader.IUploadChangeParam<NUploader.IUploadFile> | Event) => {
501
+ console.log('onChange', info);
502
+ };
503
+ const handleProgress = (event: NUploader.IUploadChangeParam['event'], file: NUploader.IUploadFile) => {
504
+ console.log('onProgress', event, file);
505
+ };
506
+ const handleSuccess = (response: Record<string, any>, file: NUploader.IUploadFile) => {
507
+ console.log('onSuccess', response, file);
508
+ };
509
+ const handleError = (
510
+ event: NUploader.IUploadRequestError | ProgressEvent,
511
+ response: any,
512
+ file: NUploader.IUploadFile
513
+ ) => {
514
+ console.log('onError', event, response, file);
515
+ };
516
+ const handleRemove = (file: NUploader.IUploadFile) => {
517
+ console.log('onRemove', file);
518
+ };
519
+ const handleDrop = (event: DragEvent) => {
520
+ console.log('onDrop', event);
521
+ };
522
+ const handleReject = (rejected: NUploader.IUploadFile[]) => {
523
+ console.log('onReject', rejected);
524
+ };
525
+ const handleDownload = (file: NUploader.IUploadFile) => {
526
+ console.log('onDownload', file);
527
+ };
528
+ const handlePreview = (file: NUploader.IUploadFile) => {
529
+ console.log('onPreview', file);
530
+ };
531
+ </script>
532
+
533
+ <template>
534
+ <div class="w-[350px] m-auto">
535
+ <CdsUploader
536
+ v-model="files"
537
+ label="Загрузка файлов"
538
+ description="Откройте консоль, чтобы увидеть все циклы событий"
539
+ action="https://user1694090019726.requestly.dev/upload"
540
+ :show-upload-list="{ showDownloadIcon: true, showRemoveIcon: true }"
541
+ @change="handleChange"
542
+ @progress="handleProgress"
543
+ @success="handleSuccess"
544
+ @error="handleError"
545
+ @remove="handleRemove"
546
+ @drop="handleDrop"
547
+ @reject="handleReject"
548
+ @download="handleDownload"
549
+ @preview="handlePreview"
550
+ />
551
+ </div>
552
+ </template>
553
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsUploader — guidelines
2
+
3
+ > Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md).
5
+
6
+ | ✅ Do | ❌ Don't |
7
+ | --- | --- |
8
+ | The description names the allowed formats and size upfront — the user does not waste an attempt. | Without a description the restrictions are learned only from an error after the upload. |
9
+ | The text of the button names exactly what to upload. | “Click here” says nothing about the action nor about the content. |
10
+ | The list shows what has already been uploaded and lets the extra files be removed. | With the list hidden the user does not see the result and uploads the files again. |
@@ -0,0 +1,26 @@
1
+ # CdsUploader — 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
+ ## _CdsUploader.variables.scss
8
+
9
+ ```scss
10
+ @use 'sass:map';
11
+ @use '../../../styles/tools';
12
+
13
+ $uploader-color: (
14
+ 'hover': rgb(var(--cds-color-fill-primary-hover)),
15
+ 'progress': rgb(var(--cds-color-status-progress-surface)),
16
+ 'text': rgb(var(--cds-color-content-primary))
17
+ ) !default;
18
+ $uploader-label-offset: var(--cds-spacing-200) !default;
19
+ $uploader-description-offset: var(--cds-spacing-200) !default;
20
+ $uploader-messages-offset: var(--cds-spacing-200) !default;
21
+ $uploader-list-item-height: tools.to-rem(32px) !default;
22
+ $uploader-list-item-padding-inline: var(--cds-spacing-200) !default;
23
+ $uploader-list-item-padding-block: var(--cds-spacing-50) !default;
24
+ $uploader-list-item-gap: var(--cds-spacing-200) !default;
25
+ $uploader-item-progress-offset: $uploader-list-item-padding-block !default;
26
+ ```
@@ -0,0 +1,60 @@
1
+ # CdsVirtualScroll — 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
+ Virtual scrolling keeps long lists fast: only the visible rows get into the DOM, not the whole array. Pass the records to `items`, the markup of a row to the slot, and a list of tens of thousands of positions scrolls as smoothly as a list of ten.
7
+
8
+ Family: [CdsVirtualScroll](#cdsvirtualscroll) + subcomponents: [CdsVirtualScrollItem](#cdsvirtualscrollitem).
9
+
10
+ ## CdsVirtualScroll
11
+
12
+ **Props**
13
+
14
+ | Prop | Type | Default | Required | Description |
15
+ | --- | --- | --- | --- | --- |
16
+ | `height` | `string \| number \| undefined` | — | no | Component height |
17
+ | `itemHeight` | `string \| number \| undefined` | `null` | no | Height of a single item in pixels. When omitted, the height is measured automatically. |
18
+ | `itemKey` | `SelectItemKey` | `null` | no | Key that identifies an item (a field name, a path or a function). The index is used by default. |
19
+ | `items` | `readonly unknown[] \| undefined` | `[]` | no | Array of the items rendered by the virtual scroll. |
20
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
21
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
22
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
23
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
24
+ | `renderless` | `boolean \| undefined` | — | no | Renderless mode: the component does not create its own scroll container and uses the nearest scrollable parent instead. |
25
+ | `width` | `string \| number \| undefined` | — | no | Component width |
26
+
27
+ **Slots**
28
+
29
+ | Name | Type | Description |
30
+ | --- | --- | --- |
31
+ | `default` | `CdsVirtualScrollSlot<any> & { itemRef?: TemplateRef \| undefined; }` | Content of a single list item. In `renderless` mode it additionally receives `itemRef`. |
32
+
33
+ **Exposed**
34
+
35
+ | Name | Type | Description |
36
+ | --- | --- | --- |
37
+ | `calculateVisibleItems` | `() => void` | Recalculates the window of visible items — needed after their height changes outside the update cycle. |
38
+ | `scrollToIndex` | `(index: number) => void` | Scrolls the list to the item with the given index. |
39
+
40
+ ---
41
+
42
+ ## CdsVirtualScrollItem
43
+
44
+ **Props**
45
+
46
+ | Prop | Type | Default | Required | Description |
47
+ | --- | --- | --- | --- | --- |
48
+ | `renderless` | `boolean \| undefined` | — | no | Renderless mode: the item renders only the slot content, without a wrapper. |
49
+
50
+ **Events**
51
+
52
+ | Name | Type | Description |
53
+ | --- | --- | --- |
54
+ | `update:height` | `[height: number]` | Tells the virtual list that the height of the item has changed. |
55
+
56
+ **Slots**
57
+
58
+ | Name | Type | Description |
59
+ | --- | --- | --- |
60
+ | `default` | `{ itemRef: TemplateRef; }` | Content of the item. In `renderless` mode it receives `itemRef` to measure the height. |