@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,106 @@
1
+ # CdsOtpInput — 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 field for entering a one-time code — from an SMS, an email or an authenticator app. It looks like a row of separate cells, but the input is taken by a single hidden `input`: that is why the SMS autofill, pasting a whole string from the clipboard, selection and the arrow keys all work, and the focus does not have to be jumped between the cells by hand.
7
+
8
+ Family: [CdsOtpInput](#cdsotpinput) + subcomponents: [CdsOtpField](#cdsotpfield), [CdsOtpGroup](#cdsotpgroup), [CdsOtpSeparator](#cdsotpseparator).
9
+
10
+ ## CdsOtpInput
11
+
12
+ **Props**
13
+
14
+ | Prop | Type | Default | Required | Description |
15
+ | --- | --- | --- | --- | --- |
16
+ | `activeColor` | `string \| undefined` | — | no | Color of the component in its active state |
17
+ | `autofocus` | `boolean \| undefined` | — | no | Enables autofocus |
18
+ | `baseColor` | `string \| undefined` | — | no | Color of the component in its inactive state |
19
+ | `bgColor` | `string \| undefined` | — | no | Background color of the component |
20
+ | `color` | `string \| undefined` | — | no | Component color |
21
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
22
+ | `divider` | `string \| undefined` | — | no | Separator character placed between the code cells |
23
+ | `error` | `boolean \| undefined` | — | no | Error state |
24
+ | `focusAll` | `boolean \| undefined` | — | no | Highlight all the cells while the field is focused, not only the active one |
25
+ | `focused` | `boolean \| undefined` | — | no | Controls the focus state of the component. When `true`, the component is considered focused and may apply the corresponding styles or behavior. |
26
+ | `height` | `string \| number \| undefined` | — | no | Component height |
27
+ | `label` | `string \| undefined` | `'$cds.input.otp'` | no | Accessible name of the field (`aria-label`). Accepts a localization key such as `$cds.input.otp` |
28
+ | `length` | `string \| number \| undefined` | `6` | no | Number of code cells |
29
+ | `loading` | `string \| boolean \| undefined` | — | no | Loading indicator for the component |
30
+ | `masked` | `boolean \| undefined` | — | no | Hide the entered characters behind dots |
31
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
32
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
33
+ | `merged` | `boolean \| undefined` | — | no | Merged look: the cells are joined into a single field with no gaps between them |
34
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
35
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
36
+ | `modelValue` | `string \| number \| undefined` | — | no | Value of the component (v-model) |
37
+ | `pattern` | `RegExp \| "numeric" \| "alpha" \| "alphanumeric" \| "unicode-alpha" \| "unicode-alphanumeric" \| undefined` | — | no | Allowed characters: the name of a ready pattern (`numeric`, `alpha`, `alphanumeric`, `unicode-alpha`, `unicode-alphanumeric`) or your own regular expression |
38
+ | `placeholder` | `string \| undefined` | — | no | Placeholder character shown in an empty cell |
39
+ | `size` | `number \| "xs" \| "sm" \| "md" \| "lg" \| "xl" \| undefined` | `'md'` | no | Size of the component |
40
+ | `textColor` | `string \| undefined` | — | no | Text color of the component |
41
+ | `theme` | `string \| undefined` | — | no | Component theme |
42
+ | `type` | `CdsOtpInputType \| undefined` | `'number'` | no | Type of the code being entered. `number` limits the input to digits, `password` hides the characters |
43
+ | `width` | `string \| number \| undefined` | — | no | Component width |
44
+
45
+ **Events**
46
+
47
+ | Name | Type | Description |
48
+ | --- | --- | --- |
49
+ | `finish` | `[value: string]` | Fires when the whole code has been entered |
50
+ | `update:focused` | `[focused: boolean]` | Fires when the field gains or loses focus |
51
+ | `update:modelValue` | `[value: string]` | Fires when the value of the component changes |
52
+
53
+ **Slots**
54
+
55
+ | Name | Type | Description |
56
+ | --- | --- | --- |
57
+ | `default` | `any` | Arbitrary content on top of the code cells |
58
+ | `divider` | `{ index: number; }` | Separator between the cells. `index` is the number of the cell to the left of it |
59
+ | `fields` | `any` | Fully replaces the row of cells with your own markup made of `CdsOtpGroup`, `CdsOtpField` and `CdsOtpSeparator` |
60
+ | `loader` | `any` | Custom loading indicator |
61
+
62
+ **Exposed**
63
+
64
+ | Name | Type | Description |
65
+ | --- | --- | --- |
66
+ | `blur` | `() => void` | Remove the focus from the field |
67
+ | `focus` | `() => void` | Set the focus on the field |
68
+ | `inputRef` | `HTMLInputElement \| undefined` | Ref to the hidden input that receives the code |
69
+ | `isFocused` | `boolean \| undefined` | Focus state of the field |
70
+ | `reset` | `() => void` | Clear the entered code |
71
+
72
+ ---
73
+
74
+ ## CdsOtpField
75
+
76
+ **Props**
77
+
78
+ | Prop | Type | Default | Required | Description |
79
+ | --- | --- | --- | --- | --- |
80
+ | `index` | `number` | — | yes | Zero-based index of the cell |
81
+
82
+ ---
83
+
84
+ ## CdsOtpGroup
85
+
86
+ **Props**
87
+
88
+ | Prop | Type | Default | Required | Description |
89
+ | --- | --- | --- | --- | --- |
90
+ | `merged` | `boolean \| null \| undefined` | `null` | no | Merged look of the group. Inherited from the parent `CdsOtpInput` by default |
91
+
92
+ **Slots**
93
+
94
+ | Name | Type | Description |
95
+ | --- | --- | --- |
96
+ | `default` | `any` | The code cells of the group |
97
+
98
+ ---
99
+
100
+ ## CdsOtpSeparator
101
+
102
+ **Slots**
103
+
104
+ | Name | Type | Description |
105
+ | --- | --- | --- |
106
+ | `default` | `any` | Content of the separator |
@@ -0,0 +1,329 @@
1
+ # CdsOtpInput — 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 field for entering a one-time code — from an SMS, an email or an authenticator app. It looks like a row of separate cells, but the input is taken by a single hidden `input`: that is why the SMS autofill, pasting a whole string from the clipboard, selection and the arrow keys all work, and the focus does not have to be jumped between the cells by hand.
7
+
8
+ ## Length and type of the code
9
+
10
+ The `length` prop sets the number of cells, `type` — what may be entered: `number` (the default) accepts digits only and opens the numeric keyboard on mobile, `text` — any characters, `password` additionally hides what is entered behind dots. The same effect without changing the type is given by `masked`.
11
+
12
+ **Example (SFC):**
13
+
14
+ ```vue
15
+ <script setup lang="ts">
16
+ import { CdsOtpInput } from '@central-design-system/components';
17
+ </script>
18
+
19
+ <template>
20
+ <div class="flex flex-col items-center gap-4">
21
+ <CdsOtpInput :length="4" model-value="1234" />
22
+ <CdsOtpInput type="text" model-value="AB12CD" />
23
+ <CdsOtpInput type="password" model-value="123456" />
24
+ </div>
25
+ </template>
26
+ ```
27
+
28
+ ## Allowed characters
29
+
30
+ The `pattern` prop narrows the set of characters: the name of a ready set (`numeric`, `alpha`, `alphanumeric`, `unicode-alpha`, `unicode-alphanumeric`) or your own regular expression. The check goes character by character — the extra ones will not get into the field, neither from the keyboard nor from the clipboard.
31
+
32
+ **Example (SFC):**
33
+
34
+ ```vue
35
+ <script setup lang="ts">
36
+ import { CdsOtpInput } from '@central-design-system/components';
37
+ </script>
38
+
39
+ <template>
40
+ <div class="flex flex-col items-center gap-4">
41
+ <CdsOtpInput type="text" pattern="alpha" :length="4" placeholder="A" />
42
+ <CdsOtpInput type="text" pattern="alphanumeric" placeholder="X" />
43
+ <CdsOtpInput type="text" :pattern="/[0-9A-F]/" placeholder="F" />
44
+ </div>
45
+ </template>
46
+ ```
47
+
48
+ ## Separator
49
+
50
+ The `divider` prop puts a character between the cells — a hyphen in a code like `123-456`, for example. The `divider` slot gives full freedom of markup and receives `index` — the number of the cell to the left of the separator, so the separator can be placed only where it is needed.
51
+
52
+ **Example (SFC):**
53
+
54
+ ```vue
55
+ <script setup lang="ts">
56
+ import { CdsIcon, CdsOtpInput } from '@central-design-system/components';
57
+ </script>
58
+
59
+ <template>
60
+ <div class="flex flex-col items-center gap-4">
61
+ <CdsOtpInput divider="-" model-value="123456" />
62
+
63
+ <CdsOtpInput model-value="123456">
64
+ <template #divider="{ index }">
65
+ <CdsIcon v-if="index === 2" name="minus" size="sm" />
66
+ </template>
67
+ </CdsOtpInput>
68
+ </div>
69
+ </template>
70
+ ```
71
+
72
+ ## Merged look
73
+
74
+ The `merged` prop removes the gaps: the cells become a single field with a common border. This look is more compact and breaks the form up less.
75
+
76
+ **Example (SFC):**
77
+
78
+ ```vue
79
+ <script setup lang="ts">
80
+ import { CdsOtpInput } from '@central-design-system/components';
81
+ </script>
82
+
83
+ <template>
84
+ <div class="flex justify-center">
85
+ <CdsOtpInput merged model-value="1234" />
86
+ </div>
87
+ </template>
88
+ ```
89
+
90
+ ## Placeholder
91
+
92
+ The `placeholder` prop shows a character in the empty cells — a hint about the format or simply a dot, so that the row does not look empty.
93
+
94
+ **Example (SFC):**
95
+
96
+ ```vue
97
+ <script setup lang="ts">
98
+ import { CdsOtpInput } from '@central-design-system/components';
99
+ </script>
100
+
101
+ <template>
102
+ <div class="flex flex-col items-center gap-4">
103
+ <CdsOtpInput placeholder="0" />
104
+ <CdsOtpInput placeholder="•" />
105
+ </div>
106
+ </template>
107
+ ```
108
+
109
+ ## Sizes
110
+
111
+ The `size` prop changes the height of the cells and the font size. The default size is `md`.
112
+
113
+ **Example (SFC):**
114
+
115
+ ```vue
116
+ <script setup lang="ts">
117
+ import { CdsOtpInput } from '@central-design-system/components';
118
+
119
+ const sizes = ['xs', 'sm', 'md', 'lg', 'xl'] as const;
120
+ </script>
121
+
122
+ <template>
123
+ <div class="flex flex-col items-center gap-4">
124
+ <CdsOtpInput v-for="size of sizes" :key="size" :size="size" :length="4" model-value="1234" />
125
+ </div>
126
+ </template>
127
+ ```
128
+
129
+ ## States
130
+
131
+ `disabled` blocks the input, `error` highlights the whole row with the error color, `loading` shows an indicator on top of the cells and does not erase the entered code. `focus-all` highlights the whole row while the field is focused, not just the active cell.
132
+
133
+ **Example (SFC):**
134
+
135
+ ```vue
136
+ <script setup lang="ts">
137
+ import { CdsOtpInput } from '@central-design-system/components';
138
+ </script>
139
+
140
+ <template>
141
+ <div class="flex flex-col items-center gap-4">
142
+ <CdsOtpInput :length="4" model-value="12" disabled />
143
+ <CdsOtpInput :length="4" model-value="1234" error />
144
+ <CdsOtpInput :length="4" model-value="1234" loading />
145
+ <CdsOtpInput :length="4" model-value="12" focus-all />
146
+ </div>
147
+ </template>
148
+ ```
149
+
150
+ ## Slots
151
+
152
+ The `fields` slot is needed when the cells are gathered into groups: every `CdsOtpField` receives its own `index`, and `CdsOtpGroup` joins the neighboring cells into a common border.
153
+
154
+ **Example (SFC):**
155
+
156
+ ```vue
157
+ <script setup lang="ts">
158
+ import { CdsOtpField, CdsOtpGroup, CdsOtpInput, CdsOtpSeparator } from '@central-design-system/components';
159
+ </script>
160
+
161
+ <template>
162
+ <div class="flex justify-center">
163
+ <CdsOtpInput model-value="123456">
164
+ <template #fields>
165
+ <CdsOtpGroup merged>
166
+ <CdsOtpField v-for="index of [0, 1, 2]" :key="index" :index="index" />
167
+ </CdsOtpGroup>
168
+
169
+ <CdsOtpSeparator>—</CdsOtpSeparator>
170
+
171
+ <CdsOtpGroup merged>
172
+ <CdsOtpField v-for="index of [3, 4, 5]" :key="index" :index="index" />
173
+ </CdsOtpGroup>
174
+ </template>
175
+ </CdsOtpInput>
176
+ </div>
177
+ </template>
178
+ ```
179
+
180
+ ## Confirmation by SMS
181
+
182
+ The `finish` event fires as soon as the whole code is entered — send the request on it, a separate button is not needed. Turn on `loading` for the duration of the check: the code stays on the screen and the field does not look broken. If the server did not accept the code, `error` highlights the row, and the `reset()` and `focus()` methods called through a ref clear the field and bring the cursor back into it.
183
+
184
+ **Example (SFC):**
185
+
186
+ ```vue
187
+ <script setup lang="ts">
188
+ import { CdsOtpInput } from '@central-design-system/components';
189
+ import { ref } from 'vue';
190
+
191
+ const otpRef = ref<InstanceType<typeof CdsOtpInput>>();
192
+
193
+ const code = ref('');
194
+ const loading = ref(false);
195
+ const status = ref<'idle' | 'success' | 'error'>('idle');
196
+
197
+ // Имитация проверки кода на сервере: верный код — 123456
198
+ function onFinish(value: string) {
199
+ loading.value = true;
200
+ status.value = 'idle';
201
+
202
+ setTimeout(() => {
203
+ loading.value = false;
204
+ status.value = value === '123456' ? 'success' : 'error';
205
+
206
+ if (status.value === 'error') {
207
+ otpRef.value?.reset();
208
+ otpRef.value?.focus();
209
+ }
210
+ }, 1000);
211
+ }
212
+ </script>
213
+
214
+ <template>
215
+ <div class="flex flex-col items-center gap-3">
216
+ <p class="text-200 text-content-secondary">Код отправлен на +7 999 000-00-00</p>
217
+
218
+ <CdsOtpInput
219
+ ref="otpRef"
220
+ v-model="code"
221
+ :loading="loading"
222
+ :error="status === 'error'"
223
+ @finish="onFinish"
224
+ @update:model-value="status = 'idle'"
225
+ />
226
+
227
+ <p v-if="status === 'success'" class="text-200 text-status-success-content">Код подтверждён</p>
228
+ <p v-else-if="status === 'error'" class="text-200 text-status-danger-content">
229
+ Код неверный — введите последние цифры из SMS ещё раз
230
+ </p>
231
+ <p v-else class="text-200 text-content-tertiary">Введите 123456, чтобы увидеть подтверждение</p>
232
+ </div>
233
+ </template>
234
+ ```
235
+
236
+ ## Resending the code
237
+
238
+ The "Send again" button opens on a timer — that way the user does not flood the gateway with requests. Reset the field together with the new code: `reset()` clears the cells, `focus()` puts the cursor into the first one, and the old code does not mix with the new one.
239
+
240
+ **Example (SFC):**
241
+
242
+ ```vue
243
+ <script setup lang="ts">
244
+ import { CdsButton, CdsOtpInput } from '@central-design-system/components';
245
+ import { onScopeDispose, ref } from 'vue';
246
+
247
+ const otpRef = ref<InstanceType<typeof CdsOtpInput>>();
248
+
249
+ const code = ref('');
250
+ const seconds = ref(15);
251
+
252
+ let timer: ReturnType<typeof setInterval> | undefined;
253
+
254
+ function countdown() {
255
+ clearInterval(timer);
256
+
257
+ timer = setInterval(() => {
258
+ seconds.value -= 1;
259
+
260
+ if (seconds.value <= 0) clearInterval(timer);
261
+ }, 1000);
262
+ }
263
+
264
+ function resend() {
265
+ seconds.value = 15;
266
+ countdown();
267
+
268
+ otpRef.value?.reset();
269
+ otpRef.value?.focus();
270
+ }
271
+
272
+ countdown();
273
+ onScopeDispose(() => clearInterval(timer));
274
+ </script>
275
+
276
+ <template>
277
+ <div class="flex flex-col items-center gap-3">
278
+ <CdsOtpInput ref="otpRef" v-model="code" placeholder="•" />
279
+
280
+ <CdsButton
281
+ appearance="tertiary"
282
+ size="sm"
283
+ :disabled="seconds > 0"
284
+ :text="seconds > 0 ? `Отправить снова через ${seconds} с` : 'Отправить код снова'"
285
+ @click="resend"
286
+ />
287
+ </div>
288
+ </template>
289
+ ```
290
+
291
+ ## A code inside a form
292
+
293
+ When the code is a part of the sign-in form, keep the confirmation button: it gives an explicit moment of submission. The button waits until all the characters are entered — the length of the code is visible from `v-model`, and `disabled` on the field freezes the code that has already been confirmed.
294
+
295
+ **Example (SFC):**
296
+
297
+ ```vue
298
+ <script setup lang="ts">
299
+ import { CdsButton, CdsForm, CdsOtpInput } from '@central-design-system/components';
300
+ import { computed, ref } from 'vue';
301
+
302
+ const code = ref('');
303
+ const loading = ref(false);
304
+ const confirmed = ref(false);
305
+
306
+ const isComplete = computed(() => code.value.length === 6);
307
+
308
+ function submit() {
309
+ loading.value = true;
310
+
311
+ setTimeout(() => {
312
+ loading.value = false;
313
+ confirmed.value = true;
314
+ }, 1000);
315
+ }
316
+ </script>
317
+
318
+ <template>
319
+ <CdsForm class="flex flex-col items-center gap-3 w-[350px] m-auto" @submit.prevent="submit">
320
+ <p class="text-200 text-content-secondary">Введите код из приложения-аутентификатора</p>
321
+
322
+ <CdsOtpInput v-model="code" :disabled="confirmed" divider="-" />
323
+
324
+ <CdsButton type="submit" text="Подтвердить вход" :disabled="!isComplete || confirmed" :loading="loading" block />
325
+
326
+ <p v-if="confirmed" class="text-200 text-status-success-content">Вход подтверждён</p>
327
+ </CdsForm>
328
+ </template>
329
+ ```
@@ -0,0 +1,10 @@
1
+ # CdsOtpInput — 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 number of cells equals the length of the code — the user sees at once how many characters to enter. | Extra cells make the user guess whether the whole code has been entered. |
9
+ | The whole code is entered in one field: pasting from the clipboard and SMS autofill both work. | Separate text fields break code pasting and force the user to move the focus by hand. |
10
+ | On an error the field stays available, and the text next to it says what to do next. | A blocked field with no explanation makes it impossible to fix the code. |
@@ -0,0 +1,41 @@
1
+ # CdsOtpInput — 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
+ ## _CdsOtpInput.variables.scss
8
+
9
+ ```scss
10
+ @use '../../../styles/settings';
11
+ @use '../../../styles/tools';
12
+
13
+ // ======================= Variables =======================
14
+ $otp-input-gap: var(--cds-spacing-200) !default;
15
+ $otp-input-separator-gap: var(--cds-spacing-100) !default;
16
+ $otp-input-max-width: tools.to-rem(320px) !default;
17
+ $otp-input-divided-max-width: tools.to-rem(360px) !default;
18
+ $otp-input-border-radius: var(--cds-border-radius-200) !default;
19
+ $otp-input-merged-overlap: calc(var(--cds-border-100) * -1) !default;
20
+ $otp-input-caret-width: var(--cds-border-100) !default;
21
+ $otp-input-caret-height: 1.2em !default;
22
+ $otp-input-caret-duration: tools.$cds-duration-very-slow * 2 + ms !default;
23
+ $otp-input-transition: tools.$cds-duration-fast + ms settings.$standard-easing !default;
24
+
25
+ // ======================= Colors =======================
26
+ $otp-input-caret-color: currentcolor !default;
27
+ $otp-input-separator-color: rgb(var(--cds-color-content-secondary)) !default;
28
+ $otp-input-placeholder-color: rgb(var(--cds-color-content-tertiary)) !default;
29
+ $otp-input-composition-color: rgb(var(--cds-color-content-secondary)) !default;
30
+ $otp-input-highlighted-opacity: 0.5 !default;
31
+
32
+ // ======================= Sizes =======================
33
+ // Ширина ячейки — нижняя граница: по горизонтали ячейки растягиваются флексом.
34
+ $otp-input-field-sizes: (
35
+ xs: tools.to-rem(24px),
36
+ sm: tools.to-rem(28px),
37
+ md: tools.to-rem(32px),
38
+ lg: tools.to-rem(36px),
39
+ xl: tools.to-rem(40px)
40
+ ) !default;
41
+ ```
@@ -0,0 +1,85 @@
1
+ # CdsOverlay — 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
+ An overlay shows content on top of the page: it dims the page with a scrim, computes the position relative to an activator and manages the stacking order of the open layers. It is the base mechanism behind [CdsModal](../cds-modal/api.md), [CdsMenu](../cds-menu/api.md) and [CdsTooltip](../cds-tooltip/api.md) — take it when you need a popup of your own that is not among the ready-made ones.
7
+
8
+ ## CdsOverlay
9
+
10
+ **Props**
11
+
12
+ | Prop | Type | Default | Required | Description |
13
+ | --- | --- | --- | --- | --- |
14
+ | `absolute` | `boolean \| undefined` | — | no | Positions the element absolutely instead of fixed. This is useful for overlays that must stay inside a certain area, for example inside a container with `position: relative`. |
15
+ | `activator` | `(string & {}) \| Element \| "parent" \| ComponentPublicInstance \| undefined` | — | no | The element that activates the component |
16
+ | `activatorProps` | `Record<string, any> \| undefined` | `{}` | no | Props for the activator element |
17
+ | `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. |
18
+ | `captureFocus` | `boolean \| undefined` | — | no | Returns the focus back into the content if it has left it — for example on Tab from the end of the page. A mouse click does not steal the focus. |
19
+ | `closeDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component closes. Works only together with open-on-hover. |
20
+ | `closeOnBack` | `boolean \| undefined` | `true` | 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. |
21
+ | `closeOnContentClick` | `boolean \| undefined` | — | no | Hide the component on a click on the content |
22
+ | `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`.) |
23
+ | `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. |
24
+ | `contentProps` | `any` | — | no | Applies custom props to the moved content |
25
+ | `disabled` | `boolean \| null \| undefined` | `null` | no | Disabled state |
26
+ | `eager` | `boolean \| undefined` | — | no | Renders the content of the component right away. Useful when you have content that is not in the DOM but has to be indexed for SEO. |
27
+ | `height` | `string \| number \| undefined` | — | no | Component height |
28
+ | `location` | `Anchor \| undefined` | `'bottom'` | no | Sets the anchor point used to position the component, aligning it horizontally, vertically or in both directions |
29
+ | `locationStrategy` | `"static" \| "connected" \| LocationStrategyFunction \| undefined` | `'static'` | 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. |
30
+ | `maxHeight` | `string \| number \| undefined` | — | no | Maximum component height |
31
+ | `maxWidth` | `string \| number \| undefined` | — | no | Maximum component width |
32
+ | `minHeight` | `string \| number \| undefined` | — | no | Minimum component height |
33
+ | `minWidth` | `string \| number \| undefined` | — | no | Minimum component width |
34
+ | `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. |
35
+ | `noClickAnimation` | `boolean \| undefined` | — | no | Disables the bounce effect on a click outside the content element when `persistent` is set. |
36
+ | `offset` | `string \| number \| number[] \| undefined` | — | no | Increases the distance to the target. If two numbers are passed, the second one shifts the anchor sideways, away from the target. |
37
+ | `opacity` | `string \| number \| undefined` | — | no | Opacity of the scrim element. Applies only when `scrim=true`. |
38
+ | `openDelay` | `string \| number \| undefined` | — | no | Delay in milliseconds before the component opens. Works only together with open-on-hover. |
39
+ | `openOnClick` | `boolean \| undefined` | — | no | Show the component on a click on the activator |
40
+ | `openOnFocus` | `boolean \| undefined` | — | no | Show the component when the activator gets focus |
41
+ | `openOnHover` | `boolean \| undefined` | — | no | Show the component on hover over the activator |
42
+ | `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. |
43
+ | `persistent` | `boolean \| undefined` | — | no | A click outside the element or the Esc key does not close it. |
44
+ | `retainFocus` | `boolean \| undefined` | — | no | Traps Tab navigation inside the content: from the last focusable element the focus moves to the first one and back. |
45
+ | `scrim` | `string \| boolean \| undefined` | `true` | no | Backdrop shown while the overlay is active. Accepts true/false to toggle the backdrop and a string to set its color. |
46
+ | `scrollStrategy` | `"none" \| "close" \| "block" \| "reposition" \| ScrollStrategyFunction \| undefined` | `'block'` | no | Strategy applied when the component is active and the user scrolls the page. |
47
+ | `stickToTarget` | `boolean \| undefined` | — | no | Lets the overlay content go off screen while scrolling. |
48
+ | `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. |
49
+ | `theme` | `string \| undefined` | — | no | Component theme |
50
+ | `transition` | `string \| boolean \| (TransitionProps & { component?: Component \| undefined; }) \| null \| undefined` | `'fade-transition'` | no | Transition animation |
51
+ | `viewportMargin` | `string \| number \| undefined` | `12` | no | Sets a custom viewport margin for the overlay content |
52
+ | `width` | `string \| number \| undefined` | — | no | Component width |
53
+ | `zIndex` | `string \| number \| undefined` | `2000` | no | The z-index value of the component. |
54
+
55
+ **Events**
56
+
57
+ | Name | Type | Description |
58
+ | --- | --- | --- |
59
+ | `afterEnter` | `[]` | Fires after the opening animation has finished. |
60
+ | `afterLeave` | `[]` | Fires after the closing animation has finished. |
61
+ | `click:outside` | `[value: MouseEvent]` | Fires on a click outside the overlay. |
62
+ | `keydown` | `[value: KeyboardEvent]` | Fires on a key press while the overlay is open. |
63
+ | `update:modelValue` | `[value: boolean]` | Fires when the overlay opens or closes. Passes the new visibility state. |
64
+
65
+ **Slots**
66
+
67
+ | Name | Type | Description |
68
+ | --- | --- | --- |
69
+ | `activator` | `{ isActive: boolean; props: Record<string, any>; targetRef: TemplateRef; }` | Slot for the element that acts as the activator of the overlay. |
70
+ | `default` | `{ isActive: Ref<boolean, boolean>; }` | Slot for the overlay content. |
71
+
72
+ **Exposed**
73
+
74
+ | Name | Type | Description |
75
+ | --- | --- | --- |
76
+ | `activatorEl` | `HTMLElement \| undefined` | The DOM element of the activator. |
77
+ | `activatorRef` | `TemplateRef` | Template ref for assigning the activator manually. |
78
+ | `animateClick` | `() => void` | Runs the bounce animation of the content — the same as on a click outside a `persistent` overlay. |
79
+ | `contentEl` | `HTMLElement \| undefined` | The DOM element of the overlay content. |
80
+ | `globalTop` | `boolean` | Whether the overlay is the top one in the global stack of open overlays. |
81
+ | `rootEl` | `HTMLElement \| undefined` | The root DOM element of the overlay. |
82
+ | `scrimEl` | `HTMLElement \| undefined` | The DOM element of the scrim that dims the page. |
83
+ | `targetEl` | `HTMLElement \| undefined` | The DOM element of the positioning target. |
84
+ | `targetRef` | `TemplateRef` | Template ref for assigning the positioning target manually. |
85
+ | `updateLocation` | `((e: Event) => void) \| undefined` | Recalculates the position of the content relative to the target. |