@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,186 @@
1
+ # CdsToolbar — 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 horizontal bar with a title and actions: it fills the header and the footer of the application, and on a page it assembles the title of a section together with its buttons. `CdsToolbarTitle` stretches and pushes the left and the right groups to the edges on its own.
7
+
8
+ ## Title
9
+
10
+ `CdsToolbarTitle` stretches and truncates long text with an ellipsis without breaking the line. The `shrink` prop turns the stretching off: the title shrinks to its content and stays next to the neighboring element — a handy way to put a status or a counter right after the name.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsButton, CdsToolbar, CdsToolbarTitle } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-col gap-4">
21
+ <CdsToolbar bordered>
22
+ <CdsToolbarTitle>Заголовок растягивается и разводит группы по краям</CdsToolbarTitle>
23
+ <CdsButton size="sm">Действие</CdsButton>
24
+ </CdsToolbar>
25
+
26
+ <CdsToolbar bordered>
27
+ <CdsToolbarTitle shrink>Заголовок с shrink остаётся рядом с кнопкой</CdsToolbarTitle>
28
+ <CdsButton size="sm">Действие</CdsButton>
29
+ </CdsToolbar>
30
+
31
+ <CdsToolbar bordered>
32
+ <CdsToolbarTitle>Очень длинный заголовок раздела, который не помещается в одну строку тулбара</CdsToolbarTitle>
33
+ <CdsButton size="sm">Действие</CdsButton>
34
+ </CdsToolbar>
35
+ </div>
36
+ </template>
37
+ ```
38
+
39
+ ## Paddings
40
+
41
+ The `no-gutters` prop removes the inner paddings entirely — the toolbar aligns with the content of the page. The `no-gutter` prop removes the padding on one side: `start` or `end`. The `inset` prop does the opposite and adds a padding on the left — that is how a nested second-level toolbar is set off.
42
+
43
+ **Example (SFC):**
44
+
45
+ ```vue
46
+ <script setup lang="ts">
47
+ import { CdsButton, CdsRadio, CdsRadioGroup, CdsToolbar, CdsToolbarTitle } from '@central-design-system/components';
48
+ import { ref } from 'vue';
49
+
50
+ const spacing = ref('default');
51
+ </script>
52
+
53
+ <template>
54
+ <div class="flex flex-col gap-4">
55
+ <CdsRadioGroup v-model="spacing" direction="horizontal" hide-details>
56
+ <CdsRadio value="default" label="По умолчанию" />
57
+ <CdsRadio value="no-gutters" label="no-gutters" />
58
+ <CdsRadio value="no-gutter-start" label='no-gutter="start"' />
59
+ <CdsRadio value="inset" label="inset" />
60
+ </CdsRadioGroup>
61
+
62
+ <div class="rounded-200 border border-dashed border-line-primary">
63
+ <CdsToolbar
64
+ bordered
65
+ :inset="spacing === 'inset'"
66
+ :no-gutters="spacing === 'no-gutters'"
67
+ :no-gutter="spacing === 'no-gutter-start' ? 'start' : undefined"
68
+ >
69
+ <CdsToolbarTitle>Заголовок раздела</CdsToolbarTitle>
70
+ <CdsButton size="sm">Действие</CdsButton>
71
+ </CdsToolbar>
72
+ </div>
73
+ </div>
74
+ </template>
75
+ ```
76
+
77
+ ## Separator and color
78
+
79
+ The `bordered` prop draws the bottom border — it separates the title of a section from its content. The `bg-color` and `color` props paint the background and the text. Inside `CdsHeader` and `CdsFooter` the toolbar does not draw its own background: the color comes from the part of the layout, so the bar does not cover it.
80
+
81
+ **Example (SFC):**
82
+
83
+ ```vue
84
+ <script setup lang="ts">
85
+ import { CdsButton, CdsRadio, CdsRadioGroup, CdsToolbar, CdsToolbarTitle } from '@central-design-system/components';
86
+ import { ref } from 'vue';
87
+
88
+ const bgColor = ref('default');
89
+ </script>
90
+
91
+ <template>
92
+ <div class="flex flex-col gap-4">
93
+ <CdsRadioGroup v-model="bgColor" direction="horizontal" hide-details>
94
+ <CdsRadio value="default" label="Цвет темы" />
95
+ <CdsRadio value="neutral" label="neutral" />
96
+ <CdsRadio value="indigo" label="indigo" />
97
+ <CdsRadio value="lemon" label="lemon" />
98
+ </CdsRadioGroup>
99
+
100
+ <CdsToolbar bordered :bg-color="bgColor === 'default' ? undefined : bgColor">
101
+ <CdsToolbarTitle>Заголовок раздела</CdsToolbarTitle>
102
+ <CdsButton appearance="tertiary" size="sm">Действие</CdsButton>
103
+ </CdsToolbar>
104
+ </div>
105
+ </template>
106
+ ```
107
+
108
+ ## Section title on a page
109
+
110
+ The name, the status and the actions in a single row: `shrink` keeps the status next to the name, `mr-auto` pushes the buttons to the right edge, `no-gutters` aligns the toolbar with the content of the card, and `bordered` separates the header of the section from the text.
111
+
112
+ **Example (SFC):**
113
+
114
+ ```vue
115
+ <script setup lang="ts">
116
+ import {
117
+ CdsButton,
118
+ CdsCard,
119
+ CdsFunctionalButton,
120
+ CdsStatus,
121
+ CdsToolbar,
122
+ CdsToolbarTitle
123
+ } from '@central-design-system/components';
124
+ </script>
125
+
126
+ <template>
127
+ <CdsCard class="m-auto w-full max-w-[640px] p-4">
128
+ <CdsToolbar no-gutters bordered class="mb-4 gap-2">
129
+ <CdsToolbarTitle shrink class="text-xl font-bold">Закупка №2401</CdsToolbarTitle>
130
+ <CdsStatus status="success" text="Активна" variant="text" class="ml-2 mr-auto" />
131
+ <CdsFunctionalButton icon="edit" aria-label="Редактировать" />
132
+ <CdsButton size="sm" prepend-icon="download">Скачать</CdsButton>
133
+ </CdsToolbar>
134
+
135
+ <p class="text-content-secondary">Поставка серверного оборудования, приём заявок до 12 марта.</p>
136
+ </CdsCard>
137
+ </template>
138
+ ```
139
+
140
+ ## Application header and footer
141
+
142
+ In `CdsHeader` the toolbar holds the menu button, the title and the profile; in `CdsFooter` it holds the copyright. The background is set on the parts of the layout, and the toolbar inherits it together with the contrasting text color.
143
+
144
+ **Example (SFC):**
145
+
146
+ ```vue
147
+ <script setup lang="ts">
148
+ import {
149
+ CdsAvatar,
150
+ CdsFooter,
151
+ CdsFunctionalButton,
152
+ CdsHeader,
153
+ CdsLayout,
154
+ CdsMain,
155
+ CdsPage,
156
+ CdsToolbar,
157
+ CdsToolbarTitle
158
+ } from '@central-design-system/components';
159
+ </script>
160
+
161
+ <template>
162
+ <div class="h-[280px]">
163
+ <CdsLayout container>
164
+ <CdsHeader bordered bg-color="indigo">
165
+ <CdsToolbar>
166
+ <CdsFunctionalButton icon="menu" class="mr-2" aria-label="Открыть навигацию" />
167
+ <CdsToolbarTitle>Портал закупок</CdsToolbarTitle>
168
+ <CdsAvatar icon="user-avatar" />
169
+ </CdsToolbar>
170
+ </CdsHeader>
171
+
172
+ <CdsMain>
173
+ <CdsPage padding>
174
+ <div class="rounded-200 bg-surface-secondary p-4 text-content-primary">Содержимое страницы</div>
175
+ </CdsPage>
176
+ </CdsMain>
177
+
178
+ <CdsFooter bordered>
179
+ <CdsToolbar>
180
+ <CdsToolbarTitle>© 2026 Портал закупок</CdsToolbarTitle>
181
+ </CdsToolbar>
182
+ </CdsFooter>
183
+ </CdsLayout>
184
+ </div>
185
+ </template>
186
+ ```
@@ -0,0 +1,9 @@
1
+ # CdsToolbar — guidelines
2
+
3
+ > Extracted from `docs/demos/Guidelines.vue` by `bun run generate:skill`. Do not edit manually.
4
+ > The full component contract is in [api.md](api.md).
5
+
6
+ | ✅ Do | ❌ Don't |
7
+ | --- | --- |
8
+ | A title in CdsToolbarTitle pushes the left and the right groups to the edges on its own. | A title as plain text does not stretch — the actions stick to the name. |
9
+ | One primary action and a couple of secondary icons — the toolbar stays readable. | Five buttons of equal weight in a row: it is unclear what matters here. |
@@ -0,0 +1,13 @@
1
+ # CdsToolbar — 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
+ ## _CdsToolbar.variables.scss
8
+
9
+ ```scss
10
+ $toolbar-background: rgb(var(--cds-color-surface-elevated)) !default;
11
+ $toolbar-color: rgb(var(--cds-color-content-primary)) !default;
12
+ $toolbar-border-color: rgb(var(--cds-color-line-elevated)) !default;
13
+ ```
@@ -0,0 +1,83 @@
1
+ # CdsTooltip — 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 tooltip briefly explains an interface element on hover or focus: it names an icon button, shows the full text of a truncated line, explains why an action is unavailable. It appears and disappears on its own — the user does not have to press or close anything.
7
+
8
+ ## CdsTooltip
9
+
10
+ **Props**
11
+
12
+ | Prop | Type | Default | Required | Description |
13
+ | --- | --- | --- | --- | --- |
14
+ | `activator` | `(string & {}) \| Element \| "parent" \| ComponentPublicInstance \| undefined` | — | no | The element that activates the component |
15
+ | `activatorProps` | `Record<string, any> \| undefined` | `{}` | no | Props for the activator element |
16
+ | `attach` | `string \| boolean \| Element \| undefined` | — | no | Sets the DOM element the overlay content is moved to. It accepts a direct element reference, a querySelector string, or true to disable moving. By default the body element is used. Changing this prop is usually not recommended except for edge cases: the default positioning algorithm handles most scenarios better than it can without moving, and unexpected behavior may appear if the menu ends up being a child of its activator. |
17
+ | `closeDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component closes. Works only together with open-on-hover. |
18
+ | `closeOnBack` | `boolean \| undefined` | `false` | no | Closes the overlay content when the browser Back button is pressed or $router.back() is called, cancelling the original navigation. `persistent` overlays cancel the navigation and animate as if they were clicked outside instead of closing. |
19
+ | `closeOnContentClick` | `boolean \| undefined` | — | no | Hide the component on a click on the content |
20
+ | `color` | `string \| undefined` | — | no | Background color of the tooltip. |
21
+ | `contained` | `boolean \| undefined` | — | no | Limits the size of the component and of its grid to the offset parent. Implies the `absolute` and `attach` props. (Note: the parent element must have `position: relative`.) |
22
+ | `contentClass` | `any` | — | no | Applies a custom class to the content element. This is handy because the content is moved to the beginning of the cds-app component (unless `attach` is set) and cannot be selected with classes passed to the component directly. |
23
+ | `contentProps` | `any` | — | no | Applies custom props to the moved content |
24
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
25
+ | `eager` | `boolean \| undefined` | `true` | no | Renders the content of the component right away. Useful when you have content that is not in the DOM but has to be indexed for SEO. |
26
+ | `height` | `string \| number \| undefined` | — | no | Component height |
27
+ | `hideArrow` | `boolean \| undefined` | — | no | Hides the arrow pointing at the activator. The arrow is shown by default. |
28
+ | `id` | `string \| undefined` | — | no | Unique id that links the tooltip to its activator. Generated automatically when omitted. |
29
+ | `interactive` | `boolean \| undefined` | — | no | Allows interaction with the tooltip content: hovering the content does not close it. |
30
+ | `location` | `Anchor \| undefined` | `'top'` | no | Sets the anchor point used to position the component, aligning it horizontally, vertically or in both directions |
31
+ | `locationStrategy` | `"static" \| "connected" \| LocationStrategyFunction \| undefined` | `'connected'` | no | Sets the way the overlay content is positioned. By default static is used, which centers the content in its container. Use connected to attach the content to the activator element. |
32
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
33
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
34
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
35
+ | `minWidth` | `string \| number \| undefined` | `0` | no | Minimum component width |
36
+ | `modelValue` | `boolean \| undefined` | — | no | The v-model value of the component. If the component supports the **multiple** prop, an empty array is used by default. |
37
+ | `noClickAnimation` | `boolean \| undefined` | — | no | Disables the bounce effect on a click outside the content element when `persistent` is set. |
38
+ | `offset` | `string \| number \| number[] \| undefined` | `10` | no | Increases the distance to the target. If two numbers are passed, the second one shifts the anchor sideways, away from the target. |
39
+ | `opacity` | `string \| number \| undefined` | — | no | Opacity of the scrim element. Applies only when `scrim=true`. |
40
+ | `openDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component opens. Works only together with open-on-hover. |
41
+ | `openOnClick` | `boolean \| undefined` | `false` | no | Show the component on a click on the activator |
42
+ | `openOnFocus` | `boolean \| undefined` | — | no | Show the component when the activator gets focus |
43
+ | `openOnHover` | `boolean \| undefined` | `true` | no | Show the component on hover over the activator |
44
+ | `origin` | `Anchor \| "auto" \| "overlap" \| undefined` | `'auto'` | no | Sets the anchor point of the overlay content that is aligned with the `location` anchor of the target. With "auto" the opposite side of the `location` point is used. With "overlap" the same anchor point is used, so the overlay overlaps the target. It also sets the CSS `transform-origin` property for the enter/leave transitions. |
45
+ | `persistent` | `boolean \| undefined` | — | no | A click outside the element or the Esc key does not close it. |
46
+ | `scrim` | `string \| boolean \| undefined` | `false` | no | Backdrop shown while the overlay is active. Accepts true/false to toggle the backdrop and a string to set its color. |
47
+ | `scrollStrategy` | `"none" \| "close" \| "block" \| "reposition" \| ScrollStrategyFunction \| undefined` | `'reposition'` | no | Strategy applied when the component is active and the user scrolls the page. |
48
+ | `stickToTarget` | `boolean \| undefined` | — | no | Lets the overlay content go off screen while scrolling. |
49
+ | `target` | `(string & {}) \| Element \| "parent" \| ComponentPublicInstance \| "cursor" \| [x: number, y: number] \| undefined` | — | no | When `locationStrategy` is set to "connected", specify the element or the array of x, y coordinates the overlay is positioned against. By default the activator element is used. |
50
+ | `text` | `string \| undefined` | — | no | Text of the tooltip. Used when the default slot is not passed. |
51
+ | `theme` | `string \| undefined` | — | no | Component theme |
52
+ | `transition` | `string \| boolean \| (TransitionProps & { component?: Component \| undefined; }) \| null \| undefined` | `null` | no | Transition animation |
53
+ | `viewportMargin` | `string \| number \| undefined` | `12` | no | Sets a custom viewport margin for the overlay content |
54
+ | `width` | `string \| number \| undefined` | — | no | Component width |
55
+ | `zIndex` | `string \| number \| undefined` | `2000` | no | The z-index value of the component. |
56
+
57
+ **Events**
58
+
59
+ | Name | Type | Description |
60
+ | --- | --- | --- |
61
+ | `update:modelValue` | `[value: boolean]` | Fires when the tooltip is shown or hidden. Passes the new visibility state |
62
+
63
+ **Slots**
64
+
65
+ | Name | Type | Description |
66
+ | --- | --- | --- |
67
+ | `activator` | `{ isActive: boolean; props: Record<string, any>; targetRef: TemplateRef; }` | Slot for the element that acts as the activator of the overlay. |
68
+ | `default` | `{ isActive: Ref<boolean, boolean>; }` | Slot for the overlay content. |
69
+
70
+ **Exposed**
71
+
72
+ | Name | Type | Description |
73
+ | --- | --- | --- |
74
+ | `activatorEl` | `HTMLElement \| undefined` | The DOM element of the activator. |
75
+ | `activatorRef` | `TemplateRef` | Template ref for assigning the activator manually. |
76
+ | `animateClick` | `() => void` | Runs the bounce animation of the content — the same as on a click outside a `persistent` overlay. |
77
+ | `contentEl` | `HTMLElement \| undefined` | The DOM element of the overlay content. |
78
+ | `globalTop` | `boolean` | Whether the overlay is the top one in the global stack of open overlays. |
79
+ | `rootEl` | `HTMLElement \| undefined` | The root DOM element of the overlay. |
80
+ | `scrimEl` | `HTMLElement \| undefined` | The DOM element of the scrim that dims the page. |
81
+ | `targetEl` | `HTMLElement \| undefined` | The DOM element of the positioning target. |
82
+ | `targetRef` | `TemplateRef` | Template ref for assigning the positioning target manually. |
83
+ | `updateLocation` | `((e: Event) => void) \| undefined` | Recalculates the position of the content relative to the target. |
@@ -0,0 +1,321 @@
1
+ # CdsTooltip — 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 tooltip briefly explains an interface element on hover or focus: it names an icon button, shows the full text of a truncated line, explains why an action is unavailable. It appears and disappears on its own — the user does not have to press or close anything.
7
+
8
+ ## Activator
9
+
10
+ The element the tooltip is attached to is set through the `activator` slot: the slot props (`v-bind="props"`) put the hover handlers and the `aria-describedby` attribute on it. The content of the tooltip comes from the `text` prop or from the default slot when you need markup. If the activator is already there and you would rather not wrap it, put `CdsTooltip` inside it with `activator="parent"` — that is how the examples in “Placement” and in the scenarios below are built.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-wrap items-center justify-center gap-2">
21
+ <CdsTooltip text="Текст всплывающей подсказки">
22
+ <template #activator="{ props }">
23
+ <CdsButton text="Проп text" v-bind="props" />
24
+ </template>
25
+ </CdsTooltip>
26
+
27
+ <CdsTooltip>
28
+ <template #activator="{ props }">
29
+ <CdsButton appearance="secondary" text="Слот default" v-bind="props" />
30
+ </template>
31
+ Подсказка с <strong>разметкой</strong> внутри
32
+ </CdsTooltip>
33
+ </div>
34
+ </template>
35
+ ```
36
+
37
+ ## Placement
38
+
39
+ The `location` prop sets the side of the activator the tooltip appears on: `top` by default, `bottom`, `left`, `right` — and their combinations with an alignment (`top left`, `bottom right`). If there is not enough room, the tooltip flips to the opposite side by itself. The `offset` prop tunes the distance to the activator.
40
+
41
+ **Example (SFC):**
42
+
43
+ ```vue
44
+ <script setup lang="ts">
45
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
46
+
47
+ const locations = [
48
+ { location: 'left', icon: 'arrow-left' },
49
+ { location: 'top', icon: 'arrow-up' },
50
+ { location: 'bottom', icon: 'arrow-down' },
51
+ { location: 'top left', icon: 'arrow-right-top' },
52
+ { location: 'top right', icon: 'arrow-left-top' },
53
+ { location: 'bottom left', icon: 'arrow-right-bottom' },
54
+ { location: 'bottom right', icon: 'arrow-left-bottom' },
55
+ { location: 'right', icon: 'arrow-right' }
56
+ ] as const;
57
+ </script>
58
+
59
+ <template>
60
+ <div class="flex flex-wrap justify-center gap-2">
61
+ <CdsButton
62
+ v-for="{ location, icon } in locations"
63
+ :key="location"
64
+ appearance="tertiary"
65
+ :icon="icon"
66
+ :aria-label="location"
67
+ >
68
+ <CdsTooltip activator="parent" :location="location">Всплывающая подсказка</CdsTooltip>
69
+ </CdsButton>
70
+ </div>
71
+ </template>
72
+ ```
73
+
74
+ ## Arrow
75
+
76
+ The arrow points at the activator and follows the actual position of the tooltip — including after an automatic flip near the edge of the screen. The `hide-arrow` prop hides it.
77
+
78
+ **Example (SFC):**
79
+
80
+ ```vue
81
+ <script setup lang="ts">
82
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
83
+ </script>
84
+
85
+ <template>
86
+ <div class="flex flex-wrap justify-center gap-4">
87
+ <CdsTooltip location="top" text="Со стрелкой">
88
+ <template #activator="{ props }">
89
+ <CdsButton text="Со стрелкой" v-bind="props" />
90
+ </template>
91
+ </CdsTooltip>
92
+
93
+ <CdsTooltip location="top" hide-arrow text="Без стрелки">
94
+ <template #activator="{ props }">
95
+ <CdsButton appearance="tertiary" text="Без стрелки" v-bind="props" />
96
+ </template>
97
+ </CdsTooltip>
98
+ </div>
99
+ </template>
100
+ ```
101
+
102
+ ## Opening behavior
103
+
104
+ By default the tooltip opens on hover and on keyboard focus, with no delay. The `open-delay` and `close-delay` props add a pause — the tooltip does not blink when the cursor passes by. The `open-on-click` prop together with `:open-on-hover="false"` switches opening to a click.
105
+
106
+ **Example (SFC):**
107
+
108
+ ```vue
109
+ <script setup lang="ts">
110
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
111
+ </script>
112
+
113
+ <template>
114
+ <div class="flex flex-wrap items-center justify-center gap-2">
115
+ <CdsTooltip text="Открылась сразу по наведению">
116
+ <template #activator="{ props }">
117
+ <CdsButton text="Наведение" v-bind="props" />
118
+ </template>
119
+ </CdsTooltip>
120
+
121
+ <CdsTooltip open-delay="300" close-delay="200" text="Открылась после паузы 300 мс">
122
+ <template #activator="{ props }">
123
+ <CdsButton appearance="secondary" text="С задержкой" v-bind="props" />
124
+ </template>
125
+ </CdsTooltip>
126
+
127
+ <CdsTooltip open-on-click :open-on-hover="false" text="Открылась по клику">
128
+ <template #activator="{ props }">
129
+ <CdsButton appearance="secondary" text="По клику" v-bind="props" />
130
+ </template>
131
+ </CdsTooltip>
132
+ </div>
133
+ </template>
134
+ ```
135
+
136
+ ## Controlling the display
137
+
138
+ `v-model` opens and closes the tooltip from code — this is how you show it in response to interface events, not only on hover.
139
+
140
+ **Example (SFC):**
141
+
142
+ ```vue
143
+ <script setup lang="ts">
144
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
145
+ import { ref } from 'vue';
146
+
147
+ const active = ref(false);
148
+ </script>
149
+
150
+ <template>
151
+ <div class="flex flex-wrap items-center justify-center gap-4">
152
+ <CdsButton
153
+ appearance="secondary"
154
+ :text="active ? 'Скрыть подсказку' : 'Показать подсказку'"
155
+ @click="active = !active"
156
+ />
157
+
158
+ <CdsTooltip v-model="active" text="Подсказкой управляет v-model">
159
+ <template #activator="{ props }">
160
+ <CdsButton appearance="tertiary" icon="info" aria-label="Информация" v-bind="props" />
161
+ </template>
162
+ </CdsTooltip>
163
+ </div>
164
+ </template>
165
+ ```
166
+
167
+ ## Icon button bar
168
+
169
+ A tooltip gives an icon button back the name of its action. `CdsTooltip` lives inside the button with `activator="parent"` — there is no need to wrap the markup. `aria-label` is still required: the tooltip appears on hover, while the name of the action must be available at all times.
170
+
171
+ **Example (SFC):**
172
+
173
+ ```vue
174
+ <script setup lang="ts">
175
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
176
+
177
+ const actions = [
178
+ { icon: 'edit', label: 'Редактировать' },
179
+ { icon: 'copy', label: 'Дублировать' },
180
+ { icon: 'download', label: 'Скачать' },
181
+ { icon: 'delete', label: 'Удалить' }
182
+ ];
183
+ </script>
184
+
185
+ <template>
186
+ <div class="flex justify-center gap-1">
187
+ <CdsButton
188
+ v-for="action in actions"
189
+ :key="action.icon"
190
+ size="sm"
191
+ appearance="tertiary"
192
+ :icon="action.icon"
193
+ :aria-label="action.label"
194
+ >
195
+ <CdsTooltip activator="parent" :text="action.label" />
196
+ </CdsButton>
197
+ </div>
198
+ </template>
199
+ ```
200
+
201
+ ## Truncated text
202
+
203
+ When space is limited, long titles are cut off with `truncate` — the tooltip shows the full text on hover over the line. The same `text` prop serves both as the content of the line and as the content of the tooltip.
204
+
205
+ **Example (SFC):**
206
+
207
+ ```vue
208
+ <script setup lang="ts">
209
+ import { CdsTooltip } from '@central-design-system/components';
210
+
211
+ const documents = [
212
+ 'Договор поставки оборудования № 42-СТ от 14 марта',
213
+ 'Счёт на оплату № 5512 от 2 апреля',
214
+ 'Акт сверки взаиморасчётов за первый квартал'
215
+ ];
216
+ </script>
217
+
218
+ <template>
219
+ <div class="m-auto flex w-[240px] flex-col gap-1">
220
+ <div v-for="doc in documents" :key="doc" class="truncate text-100">
221
+ {{ doc }}
222
+ <CdsTooltip activator="parent" :text="doc" />
223
+ </div>
224
+ </div>
225
+ </template>
226
+ ```
227
+
228
+ ## Unavailable action
229
+
230
+ A disabled button should not stay silent — the tooltip explains why the action is closed. A button with `disabled` has its mouse events turned off, so the tooltip is attached to a wrapper through `activator="parent"`. The `disabled` prop of the tooltip itself turns it off as soon as the action becomes available.
231
+
232
+ **Example (SFC):**
233
+
234
+ ```vue
235
+ <script setup lang="ts">
236
+ import { CdsButton, CdsCheckbox, CdsTooltip } from '@central-design-system/components';
237
+ import { ref } from 'vue';
238
+
239
+ const ready = ref(false);
240
+ </script>
241
+
242
+ <template>
243
+ <div class="flex flex-col items-center gap-2">
244
+ <CdsCheckbox v-model="ready" label="Документы прикреплены" hide-details />
245
+
246
+ <div class="inline-block">
247
+ <CdsTooltip activator="parent" :disabled="ready" text="Прикрепите документы, чтобы отправить заявку" />
248
+ <CdsButton :disabled="!ready" text="Отправить заявку" />
249
+ </div>
250
+ </div>
251
+ </template>
252
+ ```
253
+
254
+ ## Confirming an action
255
+
256
+ A tooltip can confirm an instant action when there is no room for a message — copying to the clipboard, for example. The display is driven by `v-model` on click, and `:open-on-hover="false"` keeps the tooltip from opening on a plain hover. After a second and a half a timer closes it on its own.
257
+
258
+ **Example (SFC):**
259
+
260
+ ```vue
261
+ <script setup lang="ts">
262
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
263
+ import { ref } from 'vue';
264
+
265
+ const copied = ref(false);
266
+
267
+ let timer: ReturnType<typeof setTimeout>;
268
+
269
+ function copy() {
270
+ copied.value = true;
271
+ clearTimeout(timer);
272
+ timer = setTimeout(() => (copied.value = false), 1500);
273
+ }
274
+ </script>
275
+
276
+ <template>
277
+ <div class="flex justify-center">
278
+ <CdsTooltip v-model="copied" :open-on-hover="false" text="Ссылка скопирована">
279
+ <template #activator="{ props }">
280
+ <CdsButton appearance="secondary" prepend-icon="link" text="Скопировать ссылку" v-bind="props" @click="copy" />
281
+ </template>
282
+ </CdsTooltip>
283
+ </div>
284
+ </template>
285
+ ```
286
+
287
+ ## Onboarding
288
+
289
+ The `interactive` prop allows interaction with the content: hovering the tooltip does not close it, and the elements inside stay clickable. Together with `open-on-click` and `v-model` this makes an onboarding tooltip: a “Learn more” link and a button that closes the tooltip. The `width` prop keeps the text width comfortable to read.
290
+
291
+ **Example (SFC):**
292
+
293
+ ```vue
294
+ <script setup lang="ts">
295
+ import { CdsButton, CdsTooltip } from '@central-design-system/components';
296
+ import { ref } from 'vue';
297
+
298
+ const active = ref(false);
299
+ </script>
300
+
301
+ <template>
302
+ <div class="flex justify-center">
303
+ <CdsTooltip v-model="active" interactive location="end" open-on-click :open-on-hover="false" width="268">
304
+ <template #activator="{ props }">
305
+ <CdsButton appearance="tertiary" icon="comment" aria-label="Что нового" v-bind="props" />
306
+ </template>
307
+
308
+ <div class="flex flex-col py-1">
309
+ <div class="mb-1">
310
+ <strong>Комментарии к заявке</strong>
311
+ </div>
312
+ <p>Теперь вопросы поставщику можно задавать прямо в карточке заявки — нажмите на иконку комментария.</p>
313
+ <div class="mt-4 flex items-center justify-between">
314
+ <a href="#" class="underline">Узнать больше</a>
315
+ <CdsButton appearance="inverse" text="Понятно" @click="active = false" />
316
+ </div>
317
+ </div>
318
+ </CdsTooltip>
319
+ </div>
320
+ </template>
321
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsTooltip — 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 tooltip names the action of an icon button — without it the icon is easy to misread. | The tooltip repeats the visible text word for word and adds nothing new. |
9
+ | A short phrase reads in a second — the tooltip does not hold the user up. | An instruction of several sentences does not get read inside a tooltip: move it into the interface or into a modal. |
10
+ | For a disabled button the tooltip explains why the action is closed and what to do about it. | A disabled button without an explanation leaves the user guessing. |
@@ -0,0 +1,25 @@
1
+ # CdsTooltip — 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
+ ## _CdsTooltip.variables.scss
8
+
9
+ ```scss
10
+ @use '../../../styles/tools';
11
+
12
+ $tooltip-border-radius: var(--cds-border-radius-200) !default;
13
+ $tooltip-inline-padding: var(--cds-spacing-400) !default;
14
+ $tooltip-block-padding: var(--cds-spacing-200) !default;
15
+ $tooltip-colors: (
16
+ 'background': rgb(var(--cds-color-surface-inverse)),
17
+ 'color': rgb(var(--cds-color-content-inverse)),
18
+ 'link': rgb(var(--cds-color-content-inverse))
19
+ ) !default;
20
+ $tooltip-transition-enter-duration: (tools.$cds-duration-very-fast + ms) !default;
21
+ $tooltip-transition-leave-duration: (tools.$cds-duration-instant + ms) !default;
22
+ $tooltip-arrow-size: var(--cds-spacing-200) !default;
23
+ $tooltip-arrow-edge-offset: var(--cds-spacing-300) !default;
24
+ $tooltip-arrow-radius: var(--cds-border-radius-100) !default;
25
+ ```