@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,240 @@
1
+ # CdsAvatar — usage examples
2
+
3
+ > Extracted from Storybook stories (`docs/*.stories.ts`) by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md). `v-bind="args"` in templates refers to the props from the **Args** block of the corresponding example.
5
+
6
+ An avatar shows a person, a team or a company: a photo, initials or an icon inside a round container. Use it in member lists, comments and profile headers — anywhere the reader needs to recognize "who is this" at a glance.
7
+
8
+ ## Content
9
+
10
+ The content comes from one of three props: `image` — a photo, `icon` — an icon, `text` — initials. If you pass several of them, `image` wins, then `icon`.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsAvatar } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex justify-center gap-3">
21
+ <CdsAvatar image="https://i.pravatar.cc/120?img=12" />
22
+ <CdsAvatar icon="user-avatar" color="brand-secondary" />
23
+ <CdsAvatar text="ВМ" color="brand-primary" />
24
+ </div>
25
+ </template>
26
+ ```
27
+
28
+ ## Sizes
29
+
30
+ The `size` prop takes a token from `xs` to `xl` or a number of pixels. The default size is `md`.
31
+
32
+ **Example (SFC):**
33
+
34
+ ```vue
35
+ <script setup lang="ts">
36
+ import { CdsAvatar } from '@central-design-system/components';
37
+
38
+ const sizes = CdsAvatar.constants.sizes;
39
+ </script>
40
+
41
+ <template>
42
+ <div class="flex items-center justify-center gap-2">
43
+ <CdsAvatar v-for="size in sizes" :key="size" :size="size" text="ВМ" color="brand-primary" />
44
+ </div>
45
+ </template>
46
+ ```
47
+
48
+ ## Colors
49
+
50
+ The `color` prop paints the background of an avatar with initials or an icon: a theme token or any CSS color will do.
51
+
52
+ **Example (SFC):**
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { CdsAvatar } from '@central-design-system/components';
57
+
58
+ const items = [
59
+ { color: 'brand-primary', text: 'BP' },
60
+ { color: 'brand-secondary', text: 'BS' },
61
+ { color: '#0f9d58', text: 'GR' },
62
+ { color: '#db4437', text: 'RD' },
63
+ { color: '#673ab7', text: 'PR' }
64
+ ];
65
+ </script>
66
+
67
+ <template>
68
+ <div class="flex justify-center gap-2">
69
+ <CdsAvatar v-for="item in items" :key="item.text" size="md" :color="item.color" :text="item.text" />
70
+ </div>
71
+ </template>
72
+ ```
73
+
74
+ ## Badge
75
+
76
+ The `badge` prop set to `true` shows a dot in the corner of the avatar. An object is passed through as props of [CdsBadge](../cds-badge/api.md): this is how you change the color of the dot, show a counter (`dot: false` plus `content`) or move the badge away from the edge (`floating`). The `badge` slot replaces the content of the badge with anything you like — an icon, for example.
77
+
78
+ **Example (SFC):**
79
+
80
+ ```vue
81
+ <script setup lang="ts">
82
+ import { CdsAvatar, CdsIcon } from '@central-design-system/components';
83
+ </script>
84
+
85
+ <template>
86
+ <div class="flex justify-center gap-3">
87
+ <CdsAvatar size="lg" badge image="https://i.pravatar.cc/120?img=12" />
88
+ <CdsAvatar size="lg" text="АД" color="brand-primary" :badge="{ color: 'status-success-surface' }" />
89
+ <CdsAvatar size="lg" icon="user-group" color="brand-secondary" :badge="{ dot: false, content: 3 }" />
90
+ <CdsAvatar size="lg" image="https://i.pravatar.cc/120?img=32" :badge="{ color: 'status-success-surface' }">
91
+ <template #badge>
92
+ <CdsIcon icon="check" />
93
+ </template>
94
+ </CdsAvatar>
95
+ </div>
96
+ </template>
97
+ ```
98
+
99
+ ## Spacing
100
+
101
+ The `start` and `end` props add a margin on the side of the neighboring content: `start` — for an avatar at the beginning of a line, `end` — at the end. This way the avatar fits into text without wrappers that carry outer margins.
102
+
103
+ **Example (SFC):**
104
+
105
+ ```vue
106
+ <script setup lang="ts">
107
+ import { CdsAvatar } from '@central-design-system/components';
108
+ </script>
109
+
110
+ <template>
111
+ <div class="flex flex-col gap-2">
112
+ <div class="flex items-center justify-center">
113
+ <CdsAvatar start size="sm" text="АД" color="brand-primary" />
114
+ <span>Анна Дмитриева оставила комментарий</span>
115
+ </div>
116
+
117
+ <div class="flex items-center justify-center">
118
+ <span>Задачу проверяет</span>
119
+ <CdsAvatar end size="sm" image="https://i.pravatar.cc/80?img=32" />
120
+ </div>
121
+ </div>
122
+ </template>
123
+ ```
124
+
125
+ ## Member list
126
+
127
+ In a list of people the avatar is a fast visual anchor. The `start` prop gives the margin before the text, photos and initials alternate depending on what the user has, and the badge dot shows who is online right now.
128
+
129
+ **Example (SFC):**
130
+
131
+ ```vue
132
+ <script setup lang="ts">
133
+ import { CdsAvatar } from '@central-design-system/components';
134
+
135
+ const members = [
136
+ { name: 'Анна Дмитриева', role: 'Менеджер проекта', image: 'https://i.pravatar.cc/80?img=47', online: true },
137
+ { name: 'Павел Соколов', role: 'Аналитик', text: 'ПС', color: 'brand-primary', online: false },
138
+ { name: 'Мария Ильина', role: 'Дизайнер', image: 'https://i.pravatar.cc/80?img=32', online: true },
139
+ { name: 'Служба поддержки', role: 'Общий канал', icon: 'user-group', color: 'brand-secondary', online: false }
140
+ ];
141
+ </script>
142
+
143
+ <template>
144
+ <div class="m-auto flex w-[350px] flex-col gap-3">
145
+ <div v-for="member in members" :key="member.name" class="flex items-center">
146
+ <CdsAvatar
147
+ start
148
+ :image="member.image"
149
+ :icon="member.icon"
150
+ :text="member.text"
151
+ :color="member.color"
152
+ :badge="member.online && { color: 'status-success-surface' }"
153
+ />
154
+
155
+ <div class="flex flex-col">
156
+ <span>{{ member.name }}</span>
157
+ <span class="text-200 text-content-secondary">{{ member.role }}</span>
158
+ </div>
159
+ </div>
160
+ </div>
161
+ </template>
162
+ ```
163
+
164
+ ## Group of members
165
+
166
+ When there are many members and little space, avatars are stacked with a slight overlap — a border in the background color separates the neighbors from each other. The last avatar with `text="+3"` tells how many people did not fit.
167
+
168
+ **Example (SFC):**
169
+
170
+ ```vue
171
+ <script setup lang="ts">
172
+ import { CdsAvatar } from '@central-design-system/components';
173
+
174
+ const images = [
175
+ 'https://i.pravatar.cc/80?img=12',
176
+ 'https://i.pravatar.cc/80?img=47',
177
+ 'https://i.pravatar.cc/80?img=32',
178
+ 'https://i.pravatar.cc/80?img=56'
179
+ ];
180
+ </script>
181
+
182
+ <template>
183
+ <div class="flex items-center justify-center gap-3">
184
+ <div class="avatar-stack flex items-center">
185
+ <CdsAvatar v-for="image in images" :key="image" :image="image" />
186
+ <CdsAvatar text="+3" color="brand-secondary" />
187
+ </div>
188
+
189
+ <span class="text-content-secondary">7 участников</span>
190
+ </div>
191
+ </template>
192
+
193
+ <style scoped>
194
+ .avatar-stack .cds-avatar {
195
+ border: 2px solid rgb(var(--cds-color-surface-primary));
196
+ }
197
+
198
+ .avatar-stack .cds-avatar:not(:first-child) {
199
+ margin-inline-start: -8px;
200
+ }
201
+ </style>
202
+ ```
203
+
204
+ ## Uploading a profile photo
205
+
206
+ While there is no photo yet, the avatar shows the initials from `text` — the page is not left with an empty circle. As soon as `image` gets a link, the photo replaces the initials; after the photo is removed, the initials come back on their own.
207
+
208
+ **Example (SFC):**
209
+
210
+ ```vue
211
+ <script setup lang="ts">
212
+ import { CdsAvatar, CdsButton } from '@central-design-system/components';
213
+ import { ref } from 'vue';
214
+
215
+ const image = ref('');
216
+ const loading = ref(false);
217
+
218
+ const upload = async () => {
219
+ loading.value = true;
220
+
221
+ await new Promise((resolve) => setTimeout(resolve, 1200));
222
+
223
+ image.value = 'https://i.pravatar.cc/160?img=47';
224
+ loading.value = false;
225
+ };
226
+
227
+ const remove = () => {
228
+ image.value = '';
229
+ };
230
+ </script>
231
+
232
+ <template>
233
+ <div class="flex items-center justify-center gap-3">
234
+ <CdsAvatar size="xl" :image="image" text="АД" color="brand-primary" />
235
+
236
+ <CdsButton v-if="!image" prepend-icon="upload" text="Загрузить фото" :loading="loading" @click="upload" />
237
+ <CdsButton v-else appearance="tertiary" text="Удалить фото" @click="remove" />
238
+ </div>
239
+ </template>
240
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsAvatar — 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
+ | Initials are one or two letters: the first letters of the first and last name. | Long text does not fit into the round container and gets cut off. |
9
+ | Inside one list keep avatars the same size — the row reads as a whole. | Different sizes read as different importance of the members. |
10
+ | A colored dot shows the status — it is noticeable and does not fight the content. | A text badge covers the avatar; for a caption there is the line next to it. |
@@ -0,0 +1,32 @@
1
+ # CdsAvatar — 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
+ ## _CdsAvatar.variables.scss
8
+
9
+ ```scss
10
+ @use '../../../styles/tools';
11
+
12
+ // Геометрия
13
+ $avatar-border-radius: 50% !default;
14
+ $avatar-line-height: normal !default;
15
+ $avatar-vertical-align: middle !default;
16
+
17
+ // Отступы модификаторов start / end
18
+ $avatar-margin-start: var(--cds-spacing-200) !default;
19
+ $avatar-margin-end: var(--cds-spacing-200) !default;
20
+
21
+ // Длительность перехода размеров
22
+ $avatar-transition-duration: 0.2s !default;
23
+
24
+ // Размеры
25
+ $avatar-sizes: (
26
+ 'xs': tools.to-rem(24px),
27
+ 'sm': tools.to-rem(32px),
28
+ 'md': tools.to-rem(40px),
29
+ 'lg': tools.to-rem(48px),
30
+ 'xl': tools.to-rem(56px)
31
+ ) !default;
32
+ ```
@@ -0,0 +1,44 @@
1
+ # CdsBadge — 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 badge is a small marker in the corner of an element or next to it: a counter of unread messages, a "there is something new" dot, a short label. A badge is not interactive — it draws attention to the element it is attached to instead of acting on its own.
7
+
8
+ ## CdsBadge
9
+
10
+ **Props**
11
+
12
+ | Prop | Type | Default | Required | Description |
13
+ | --- | --- | --- | --- | --- |
14
+ | `color` | `string \| undefined` | — | no | Component color |
15
+ | `content` | `string \| number \| undefined` | — | no | Content displayed in the component. |
16
+ | `dot` | `boolean \| undefined` | — | no | Shrinks the component and hides its content, rendering it as a dot |
17
+ | `dotSize` | `string \| number \| undefined` | — | no | Dot size |
18
+ | `floating` | `boolean \| undefined` | — | no | Moves the component further away from the content — an 8 pixel offset. |
19
+ | `height` | `string \| number \| undefined` | — | no | Component height |
20
+ | `icon` | `IconValue \| undefined` | — | no | Icon shown inside the component. Ignored when the `dot` prop is set. |
21
+ | `inline` | `boolean \| undefined` | — | no | Renders as an inline block instead of using absolute positioning. The location, floating and offset props are ignored. |
22
+ | `label` | `string \| undefined` | `'$cds.badge'` | no | Aria-label for the component. Falls back to the default value when not set. |
23
+ | `location` | `Anchor \| null \| undefined` | `'top end'` | no | Position of the element relative to its container, for example "top left", "center", "bottom right". |
24
+ | `max` | `string \| number \| undefined` | — | no | Sets the maximum allowed value when content holds a number. If the number exceeds the maximum, a "+" suffix is added. |
25
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
26
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
27
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
28
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
29
+ | `modelValue` | `boolean \| undefined` | `true` | no | Controls whether the component is shown or hidden. |
30
+ | `offsetX` | `string \| number \| undefined` | — | no | Offset along the X axis |
31
+ | `offsetY` | `string \| number \| undefined` | — | no | Offset along the Y axis |
32
+ | `tag` | `string \| JSXComponent<any> \| undefined` | `'div'` | no | Custom HTML tag or component to render |
33
+ | `text` | `string \| number \| undefined` | — | no | Text displayed in the component. |
34
+ | `textColor` | `string \| undefined` | — | no | Text color of the component |
35
+ | `theme` | `string \| undefined` | — | no | Component theme |
36
+ | `transition` | `string \| boolean \| (TransitionProps & { component?: Component \| undefined; }) \| null \| undefined` | `'fade-transition'` | no | Transition animation |
37
+ | `width` | `string \| number \| undefined` | — | no | Component width |
38
+
39
+ **Slots**
40
+
41
+ | Name | Type | Description |
42
+ | --- | --- | --- |
43
+ | `badge` | `any` | Slot for the content placed inside the badge. |
44
+ | `default` | `any` | Default slot |
@@ -0,0 +1,332 @@
1
+ # CdsBadge — 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 badge is a small marker in the corner of an element or next to it: a counter of unread messages, a "there is something new" dot, a short label. A badge is not interactive — it draws attention to the element it is attached to instead of acting on its own.
7
+
8
+ ## Content
9
+
10
+ The `content` prop sets what the badge shows — most often a counter of events. By default the badge sits in the top right corner of the element from the slot.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex justify-center">
21
+ <CdsBadge content="10">
22
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
23
+ </CdsBadge>
24
+ </div>
25
+ </template>
26
+ ```
27
+
28
+ ## Content
29
+
30
+ The `max` prop caps the counter: anything above it collapses into "99+". Without `max` the value is printed in full.
31
+
32
+ **Example (SFC):**
33
+
34
+ ```vue
35
+ <script setup lang="ts">
36
+ import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
37
+ </script>
38
+
39
+ <template>
40
+ <div class="flex justify-center gap-4">
41
+ <CdsBadge content="150">
42
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
43
+ </CdsBadge>
44
+ <CdsBadge content="150" :max="99">
45
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
46
+ </CdsBadge>
47
+ </div>
48
+ </template>
49
+ ```
50
+
51
+ ## Content
52
+
53
+ Besides a number, `content` accepts a short text — a "new section" mark in a menu, for example. Here the badge is placed into the line by the `inline` prop — more on it in the positioning section.
54
+
55
+ **Example (SFC):**
56
+
57
+ ```vue
58
+ <script setup lang="ts">
59
+ import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
60
+ </script>
61
+
62
+ <template>
63
+ <CdsCard class="m-auto w-[200px]">
64
+ <CdsList>
65
+ <CdsListItem value="0">
66
+ <template #title>Главная</template>
67
+ </CdsListItem>
68
+ <CdsListItem value="1">
69
+ <template #title>Входящие</template>
70
+ <template #append>
71
+ <CdsBadge content="new" inline />
72
+ </template>
73
+ </CdsListItem>
74
+ <CdsListItem value="2">
75
+ <template #title>Исходящие</template>
76
+ </CdsListItem>
77
+ </CdsList>
78
+ </CdsCard>
79
+ </template>
80
+ ```
81
+
82
+ ## Content
83
+
84
+ The `icon` prop shows an icon instead of text.
85
+
86
+ **Example (SFC):**
87
+
88
+ ```vue
89
+ <script setup lang="ts">
90
+ import { CdsBadge } from '@central-design-system/components';
91
+ </script>
92
+
93
+ <template>
94
+ <div class="flex justify-center">
95
+ <CdsBadge icon="check" inline />
96
+ </div>
97
+ </template>
98
+ ```
99
+
100
+ ## Dot
101
+
102
+ The `dot` prop shrinks the badge to a dot and hides its content — only the "there is something new" signal is left. The diameter is changed via `dot-size`.
103
+
104
+ **Example (SFC):**
105
+
106
+ ```vue
107
+ <script setup lang="ts">
108
+ import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
109
+ </script>
110
+
111
+ <template>
112
+ <div class="flex justify-center">
113
+ <CdsBadge dot>
114
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
115
+ </CdsBadge>
116
+ </div>
117
+ </template>
118
+ ```
119
+
120
+ ## Colors
121
+
122
+ The `color` prop accepts any color alias of the design system, `text-color` changes the color of the content. By default the badge is red — the color of indication.
123
+
124
+ **Example (SFC):**
125
+
126
+ ```vue
127
+ <script setup lang="ts">
128
+ import { CdsBadge } from '@central-design-system/components';
129
+
130
+ const colors = CdsBadge.constants.colors;
131
+ </script>
132
+
133
+ <template>
134
+ <div class="flex flex-wrap justify-center gap-2">
135
+ <CdsBadge v-for="color in colors" :key="color" :color="color" :content="color" inline />
136
+ </div>
137
+ </template>
138
+ ```
139
+
140
+ ## Positioning
141
+
142
+ By default the badge is positioned absolutely relative to the element from the slot. The `location` prop picks the corner.
143
+
144
+ **Example (SFC):**
145
+
146
+ ```vue
147
+ <script setup lang="ts">
148
+ import { CdsBadge, CdsButton } from '@central-design-system/components';
149
+ </script>
150
+
151
+ <template>
152
+ <div class="flex justify-center gap-4">
153
+ <CdsBadge content="1" location="top end">
154
+ <CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
155
+ </CdsBadge>
156
+ <CdsBadge content="2" location="bottom end">
157
+ <CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
158
+ </CdsBadge>
159
+ <CdsBadge content="3" location="top start">
160
+ <CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
161
+ </CdsBadge>
162
+ <CdsBadge content="4" location="bottom start">
163
+ <CdsButton appearance="tertiary" icon="notification" aria-label="Уведомления" />
164
+ </CdsBadge>
165
+ </div>
166
+ </template>
167
+ ```
168
+
169
+ ## Positioning
170
+
171
+ The `floating` prop moves the badge 8 pixels away from the content, so it overlaps the element less. For fine-tuning there are `offset-x` and `offset-y`.
172
+
173
+ **Example (SFC):**
174
+
175
+ ```vue
176
+ <script setup lang="ts">
177
+ import { CdsBadge, CdsButton } from '@central-design-system/components';
178
+ </script>
179
+
180
+ <template>
181
+ <div class="flex justify-center">
182
+ <CdsBadge content="3" floating>
183
+ <CdsButton icon="notification" aria-label="Уведомления" />
184
+ </CdsBadge>
185
+ </div>
186
+ </template>
187
+ ```
188
+
189
+ ## Visibility
190
+
191
+ The `model-value` prop shows and hides the badge. The change of state is animated, and the animation is configured through `transition`.
192
+
193
+ **Example (SFC):**
194
+
195
+ ```vue
196
+ <script setup lang="ts">
197
+ import { CdsBadge, CdsButton } from '@central-design-system/components';
198
+ import { ref } from 'vue';
199
+
200
+ const visible = ref(false);
201
+ const toggle = () => {
202
+ visible.value = !visible.value;
203
+ };
204
+ </script>
205
+
206
+ <template>
207
+ <div class="flex flex-col items-center gap-4">
208
+ <CdsBadge content="5" :model-value="visible" :inline="false">
209
+ <CdsButton appearance="secondary" @click="toggle"> {{ visible ? 'Скрыть' : 'Показать' }} бейдж </CdsButton>
210
+ </CdsBadge>
211
+ </div>
212
+ </template>
213
+ ```
214
+
215
+ ## Slots
216
+
217
+ Слот `badge` полностью замещает содержимое из `content` и `icon`.
218
+
219
+ **Example (SFC):**
220
+
221
+ ```vue
222
+ <script setup lang="ts">
223
+ import { CdsBadge, CdsFunctionalButton } from '@central-design-system/components';
224
+ </script>
225
+
226
+ <template>
227
+ <div class="flex justify-center">
228
+ <CdsBadge>
229
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
230
+
231
+ <template #badge> Alert </template>
232
+ </CdsBadge>
233
+ </div>
234
+ </template>
235
+ ```
236
+
237
+ ## Notification center
238
+
239
+ A counter on the notifications icon: `max` keeps the badge compact for any number of events, and `model-value` hides it once nothing is unread — an empty "0" does not hang on the icon.
240
+
241
+ **Example (SFC):**
242
+
243
+ ```vue
244
+ <script setup lang="ts">
245
+ import { CdsBadge, CdsButton, CdsFunctionalButton } from '@central-design-system/components';
246
+ import { ref } from 'vue';
247
+
248
+ const unread = ref(3);
249
+ </script>
250
+
251
+ <template>
252
+ <div class="flex flex-col items-center gap-4">
253
+ <CdsBadge :content="unread" :model-value="unread > 0" :max="99">
254
+ <CdsFunctionalButton icon="notification" aria-label="Уведомления" />
255
+ </CdsBadge>
256
+
257
+ <div class="flex flex-wrap justify-center gap-2">
258
+ <CdsButton appearance="secondary" text="Новое уведомление" @click="unread++" />
259
+ <CdsButton appearance="secondary" text="+100" @click="unread += 100" />
260
+ <CdsButton appearance="tertiary" text="Прочитать все" :disabled="unread === 0" @click="unread = 0" />
261
+ </div>
262
+ </div>
263
+ </template>
264
+ ```
265
+
266
+ ## Menu with updates
267
+
268
+ Counters in menu items hint where to look. A badge with `inline` goes into the `append` slot of a list item, and once the section is opened `model-value` removes it. Open "Входящие" — the counter disappears.
269
+
270
+ **Example (SFC):**
271
+
272
+ ```vue
273
+ <script setup lang="ts">
274
+ import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
275
+ import { ref } from 'vue';
276
+
277
+ const sections = ref([
278
+ { title: 'Входящие', unread: 12 },
279
+ { title: 'Задачи', unread: 3 },
280
+ { title: 'Архив', unread: 0 }
281
+ ]);
282
+ </script>
283
+
284
+ <template>
285
+ <CdsCard class="m-auto w-[240px]">
286
+ <CdsList>
287
+ <CdsListItem v-for="section in sections" :key="section.title" :value="section.title" @click="section.unread = 0">
288
+ <template #title>{{ section.title }}</template>
289
+ <template #append>
290
+ <CdsBadge :content="section.unread" :model-value="section.unread > 0" inline />
291
+ </template>
292
+ </CdsListItem>
293
+ </CdsList>
294
+ </CdsCard>
295
+ </template>
296
+ ```
297
+
298
+ ## Contacts online
299
+
300
+ A dot indicator shows the state without words: `color="green"` — the contact is online, `neutral` — not. `inline` puts the dot into the list row, and the `label` prop announces the state to screen readers.
301
+
302
+ **Example (SFC):**
303
+
304
+ ```vue
305
+ <script setup lang="ts">
306
+ import { CdsBadge, CdsCard, CdsList, CdsListItem } from '@central-design-system/components';
307
+
308
+ const contacts = [
309
+ { name: 'Анна Савельева', online: true },
310
+ { name: 'Пётр Максимов', online: true },
311
+ { name: 'Мария Ким', online: false }
312
+ ];
313
+ </script>
314
+
315
+ <template>
316
+ <CdsCard class="m-auto w-[240px]">
317
+ <CdsList>
318
+ <CdsListItem v-for="contact in contacts" :key="contact.name" :value="contact.name">
319
+ <template #prepend>
320
+ <CdsBadge
321
+ dot
322
+ inline
323
+ :color="contact.online ? 'green' : 'neutral'"
324
+ :label="contact.online ? 'В сети' : 'Не в сети'"
325
+ />
326
+ </template>
327
+ <template #title>{{ contact.name }}</template>
328
+ </CdsListItem>
329
+ </CdsList>
330
+ </CdsCard>
331
+ </template>
332
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsBadge — 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 max prop collapses large numbers, so the badge stays compact. | Точное «1528» не помогает принять решение и растягивает бейдж. |
9
+ | A badge appears only where an update waits for the user to react. | A badge on every icon turns the signal into noise — nothing gets attention. |
10
+ | The badge text is one short word. | A long phrase turns the indicator into a label and breaks the layout. |