@birdapi/velinstyle 1.1.0 → 1.2.1

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 (328) hide show
  1. package/README.de.md +89 -161
  2. package/README.md +187 -119
  3. package/cli/blueprint.js +98 -5
  4. package/cli/blueprints/app-chrome.html +18 -0
  5. package/cli/blueprints/benefits-grid.html +9 -0
  6. package/cli/blueprints/bottom-nav-mobile.html +2 -1
  7. package/cli/blueprints/cookie-consent.html +1 -1
  8. package/cli/blueprints/cta-band.html +6 -0
  9. package/cli/blueprints/faq-section.html +18 -0
  10. package/cli/blueprints/filter-bar.html +4 -4
  11. package/cli/blueprints/form-contact.html +6 -5
  12. package/cli/blueprints/hero-section.html +3 -3
  13. package/cli/blueprints/notification-center.html +1 -1
  14. package/cli/blueprints/onboarding.html +2 -1
  15. package/cli/blueprints/ops-console.html +29 -0
  16. package/cli/blueprints/pricing-band.html +37 -0
  17. package/cli/blueprints/process-steps.html +10 -0
  18. package/cli/blueprints/services-grid.html +9 -0
  19. package/cli/blueprints/settings-panel.html +8 -6
  20. package/cli/blueprints/split-hero.html +25 -0
  21. package/cli/blueprints/testimonials.html +8 -0
  22. package/cli/blueprints/trust-bar.html +10 -0
  23. package/cli/cli-manifest.json +81 -17
  24. package/cli/contrast-utils.js +97 -0
  25. package/cli/create.js +370 -0
  26. package/cli/docgen/extract-attributes.js +128 -10
  27. package/cli/docgen/extract-cli.js +3 -2
  28. package/cli/docgen/extract-components.js +61 -2
  29. package/cli/docgen/extract-utilities.js +10 -10
  30. package/cli/doctor.js +119 -0
  31. package/cli/index.js +560 -44
  32. package/cli/meta.js +84 -1
  33. package/cli/perf-audit.js +15 -2
  34. package/cli/prompt-engine.js +243 -0
  35. package/cli/review.js +268 -0
  36. package/cli/scaffold.js +119 -4
  37. package/cli/scanner-rules-data.js +7 -0
  38. package/cli/scanner.js +357 -4
  39. package/cli/serve.js +81 -0
  40. package/cli/skills.js +223 -0
  41. package/cli/transparency.js +221 -0
  42. package/cli/wc-api.js +89 -0
  43. package/cli/workflow.js +42 -0
  44. package/components/index.js +2 -0
  45. package/components/runtime/component-loaders.js +2 -0
  46. package/components/velin-accordion.js +62 -13
  47. package/components/velin-bottom-nav.js +10 -0
  48. package/components/velin-calendar.js +212 -0
  49. package/components/velin-command.js +18 -2
  50. package/components/velin-data-table.js +78 -1
  51. package/components/velin-dialog.js +4 -1
  52. package/components/velin-drawer.js +2 -4
  53. package/components/velin-file-dropzone.js +162 -0
  54. package/components/velin-icon.js +22 -1
  55. package/components/velin-lightbox.js +5 -3
  56. package/components/velin-modal.js +2 -4
  57. package/components/velin-search.js +1 -1
  58. package/components/velin-sheet.js +2 -4
  59. package/core/a11y/component-contracts.json +20 -3
  60. package/core/attributes/registry.js +14 -0
  61. package/core/meta/build.js +125 -5
  62. package/core/meta/design-constraints/contact.json +9 -0
  63. package/core/meta/design-constraints/faq.json +9 -0
  64. package/core/meta/design-constraints/hero.json +13 -0
  65. package/core/meta/knowledge/components.json +622 -0
  66. package/core/meta/knowledge/tokens.json +282 -0
  67. package/core/meta/pages/registry.json +294 -0
  68. package/core/meta/schema.js +13 -1
  69. package/core/meta/sections/registry.json +185 -0
  70. package/core/transparency/attach.js +74 -0
  71. package/core/transparency/claims.js +97 -0
  72. package/core/transparency/doctor.js +142 -0
  73. package/core/transparency/engine.js +75 -0
  74. package/core/transparency/export.js +98 -0
  75. package/core/transparency/index.js +30 -0
  76. package/core/transparency/migrate.js +130 -0
  77. package/core/transparency/normalize.js +125 -0
  78. package/core/transparency/policy.js +105 -0
  79. package/core/transparency/providers.js +235 -0
  80. package/core/transparency/registry.js +104 -0
  81. package/core/transparency/renderer.js +111 -0
  82. package/core/transparency/reporter.js +113 -0
  83. package/core/transparency/validator.js +112 -0
  84. package/dist/chunks/attach-H2ZSEAE6.js +365 -0
  85. package/dist/chunks/{attributes-STYCS3O5.js → attributes-A423NX5J.js} +3 -3
  86. package/dist/chunks/attributes-DZCXX2RZ.js +404 -0
  87. package/dist/chunks/{attributes-353XDOAX.js → attributes-F6UPIEVP.js} +1 -1
  88. package/dist/chunks/{attributes-ADOKLKA7.js → attributes-GLYXGGAL.js} +3 -3
  89. package/dist/chunks/{attributes-TPANLMLF.js → attributes-UFTYOSAU.js} +3 -3
  90. package/dist/chunks/attributes-XGLXLR2T.js +391 -0
  91. package/dist/chunks/attributes-YF4NI2QS.js +391 -0
  92. package/dist/chunks/browser-AUABBYUK.js +1544 -0
  93. package/dist/chunks/{chunk-RSMRR27R.js → chunk-2LSKX57P.js} +12 -10
  94. package/dist/chunks/{chunk-IEHKRARD.js → chunk-2TGCVDUL.js} +11 -9
  95. package/dist/chunks/{chunk-SRL6EWHP.js → chunk-5JWGUAPC.js} +17 -13
  96. package/dist/chunks/chunk-7YSO2OQ2.js +113 -0
  97. package/dist/chunks/{chunk-QVHYL3R4.js → chunk-BHR3ZG6U.js} +6 -6
  98. package/dist/chunks/chunk-CQMTCEI6.js +113 -0
  99. package/dist/chunks/{chunk-J472ERN2.js → chunk-JMSIHEYX.js} +15 -4
  100. package/dist/chunks/{chunk-MKZP2TBH.js → chunk-L7ZGUU4D.js} +2 -2
  101. package/dist/chunks/chunk-TUGIPKW5.js +113 -0
  102. package/dist/chunks/{highlight-GJHHV4KM.js → highlight-M2ELQNYK.js} +1 -1
  103. package/dist/chunks/runtime-entry.js +1 -1
  104. package/dist/chunks/{velin-accordion-FBIPAEXG.js → velin-accordion-WSY6BMLA.js} +64 -10
  105. package/dist/chunks/{velin-bottom-nav-7GEMPIM6.js → velin-bottom-nav-5RVRNGIP.js} +25 -0
  106. package/dist/chunks/{velin-bottom-nav-N3DFQR66.js → velin-bottom-nav-N5F4UO2I.js} +26 -1
  107. package/dist/chunks/velin-calendar-OFE6THUD.js +210 -0
  108. package/dist/chunks/velin-calendar-PGVNJTXK.js +217 -0
  109. package/dist/chunks/velin-calendar-XC7JRDSH.js +217 -0
  110. package/dist/chunks/{velin-code-block-CIAURDRJ.js → velin-code-block-ZGWG7JI5.js} +1 -1
  111. package/dist/chunks/{velin-combobox-NXS4QB4R.js → velin-combobox-56V2ZWT5.js} +1 -1
  112. package/dist/chunks/{velin-command-ONKO2A3J.js → velin-command-2HO2EKR6.js} +29 -2
  113. package/dist/chunks/{velin-command-TMLSRGIU.js → velin-command-ZJSLPK7B.js} +30 -3
  114. package/dist/chunks/{velin-copy-NYDBOKXT.js → velin-copy-XDQSV2XU.js} +1 -1
  115. package/dist/chunks/{velin-countdown-4ZVDGK4R.js → velin-countdown-V4Z5MA63.js} +1 -1
  116. package/dist/chunks/velin-data-table-UVR42UUM.js +372 -0
  117. package/dist/chunks/{velin-dialog-GTTZI564.js → velin-dialog-3YK2RPRV.js} +9 -2
  118. package/dist/chunks/{velin-dialog-ELFOZIXZ.js → velin-dialog-S24KAP4S.js} +3 -1
  119. package/dist/chunks/{velin-drawer-BE6TYN3H.js → velin-drawer-5PNU624J.js} +2 -4
  120. package/dist/chunks/{velin-drawer-DLL2GLT6.js → velin-drawer-CCM6S25D.js} +3 -5
  121. package/dist/chunks/{velin-email-RBX6ZR4S.js → velin-email-TNFONXPW.js} +1 -1
  122. package/dist/chunks/velin-file-dropzone-QRGF2JNA.js +154 -0
  123. package/dist/chunks/velin-file-dropzone-XIZMJ3NB.js +154 -0
  124. package/dist/chunks/{velin-icon-7M76DOPB.js → velin-icon-A6NCXGUK.js} +59 -17
  125. package/dist/chunks/{velin-icon-ZTSKUOVN.js → velin-icon-EC4B5XCM.js} +18 -5
  126. package/dist/chunks/{velin-lightbox-6E7CAATP.js → velin-lightbox-FFK4TUUP.js} +7 -6
  127. package/dist/chunks/{velin-lightbox-NXA3U2FM.js → velin-lightbox-P725FLTY.js} +5 -4
  128. package/dist/chunks/{velin-menubar-J66JXRWW.js → velin-menubar-6I2LM5HL.js} +1 -1
  129. package/dist/chunks/{velin-modal-5HYNNNUI.js → velin-modal-ICTMGRSU.js} +7 -8
  130. package/dist/chunks/{velin-modal-AEOTZ67O.js → velin-modal-JBNODH7D.js} +2 -4
  131. package/dist/chunks/{velin-popover-T72HK3DF.js → velin-popover-WZG2GHBL.js} +25 -4
  132. package/dist/chunks/{velin-rating-N4DI2XNL.js → velin-rating-QBBYRRBU.js} +1 -1
  133. package/dist/chunks/{velin-search-7B4KJ6TX.js → velin-search-B3L6J2RP.js} +2 -2
  134. package/dist/chunks/{velin-search-2XRQFBCS.js → velin-search-L3UG6NDQ.js} +5 -4
  135. package/dist/chunks/{velin-secure-field-6PV7RZDJ.js → velin-secure-field-DGYMP7OK.js} +1 -1
  136. package/dist/chunks/{velin-segmented-control-GYD5BIXQ.js → velin-segmented-control-P74GJPAR.js} +1 -1
  137. package/dist/chunks/{velin-sheet-R2Y67X6H.js → velin-sheet-M5GZZD7G.js} +2 -4
  138. package/dist/chunks/{velin-sheet-OUK6572T.js → velin-sheet-X7RXIWKV.js} +3 -5
  139. package/dist/chunks/{velin-stepper-X54WGHDG.js → velin-stepper-4YQJUHPC.js} +12 -5
  140. package/dist/chunks/{velin-toast-OMMOA2DK.js → velin-toast-UG5LWTG2.js} +5 -1
  141. package/dist/chunks/{velin-tooltip-BDHGRTQB.js → velin-tooltip-ZDH5SDLU.js} +1 -1
  142. package/dist/llms.txt +31 -8
  143. package/dist/search-index.json +182 -10
  144. package/dist/velin-agent.json +3980 -31
  145. package/dist/velinstyle-components.iife.js +1622 -286
  146. package/dist/velinstyle-components.js +1624 -286
  147. package/dist/velinstyle-components.min.js +262 -114
  148. package/dist/velinstyle.css +412 -67
  149. package/dist/velinstyle.d.ts +2 -0
  150. package/dist/velinstyle.min.css +1 -1
  151. package/package.json +21 -6
  152. package/packages/skill-engine/README.md +24 -0
  153. package/packages/skill-engine/package.json +7 -0
  154. package/packages/skill-engine/src/catalog.js +29 -0
  155. package/packages/skill-engine/src/index.js +5 -0
  156. package/packages/skill-engine/src/install.js +69 -0
  157. package/packages/skill-engine/src/registry.js +27 -0
  158. package/packages/skill-engine/src/resolve.js +68 -0
  159. package/packages/skill-engine/src/validate.js +40 -0
  160. package/packages/velinstyle-skills/README.md +6 -0
  161. package/packages/velinstyle-skills/adapter.json +8 -0
  162. package/packages/velinstyle-skills/bundles/landing-starter.bundle.yaml +12 -0
  163. package/packages/velinstyle-skills/bundles/review-suite.bundle.yaml +11 -0
  164. package/packages/velinstyle-skills/catalog.json +1004 -0
  165. package/packages/velinstyle-skills/graphs/component-ship.graph.yaml +14 -0
  166. package/packages/velinstyle-skills/graphs/landingpage.graph.yaml +21 -0
  167. package/packages/velinstyle-skills/graphs/release-gate.graph.yaml +15 -0
  168. package/packages/velinstyle-skills/index.js +22 -0
  169. package/packages/velinstyle-skills/package.json +7 -0
  170. package/packages/velinstyle-skills/packs/accessibility.pack.yaml +9 -0
  171. package/packages/velinstyle-skills/packs/design.pack.yaml +10 -0
  172. package/packages/velinstyle-skills/packs/documentation.pack.yaml +8 -0
  173. package/packages/velinstyle-skills/packs/enterprise.pack.yaml +10 -0
  174. package/packages/velinstyle-skills/packs/frontend.pack.yaml +10 -0
  175. package/packages/velinstyle-skills/packs/review.pack.yaml +9 -0
  176. package/packages/velinstyle-skills/projects/admin-panel.project.yaml +12 -0
  177. package/packages/velinstyle-skills/projects/blog.project.yaml +11 -0
  178. package/packages/velinstyle-skills/projects/documentation-portal.project.yaml +13 -0
  179. package/packages/velinstyle-skills/projects/ecommerce-shop.project.yaml +12 -0
  180. package/packages/velinstyle-skills/projects/landing-page.project.yaml +12 -0
  181. package/packages/velinstyle-skills/projects/laravel-dashboard.project.yaml +12 -0
  182. package/packages/velinstyle-skills/projects/marketing-website.project.yaml +14 -0
  183. package/packages/velinstyle-skills/projects/portfolio.project.yaml +12 -0
  184. package/packages/velinstyle-skills/registry.json +142 -0
  185. package/packages/velinstyle-skills/scripts/generate-assets.mjs +163 -0
  186. package/packages/velinstyle-skills/skills/velin-a11y-focus-keyboard/SKILL.md +57 -0
  187. package/packages/velinstyle-skills/skills/velin-a11y-page-checklist/SKILL.md +57 -0
  188. package/packages/velinstyle-skills/skills/velin-a11y-scan-fix/SKILL.md +57 -0
  189. package/packages/velinstyle-skills/skills/velin-ai-agent-briefing/SKILL.md +57 -0
  190. package/packages/velinstyle-skills/skills/velin-ai-plan-scaffold-review/SKILL.md +57 -0
  191. package/packages/velinstyle-skills/skills/velin-ai-skill-authoring/SKILL.md +57 -0
  192. package/packages/velinstyle-skills/skills/velin-components-accessibility-map/SKILL.md +57 -0
  193. package/packages/velinstyle-skills/skills/velin-components-api-contract/SKILL.md +57 -0
  194. package/packages/velinstyle-skills/skills/velin-components-recipe/SKILL.md +57 -0
  195. package/packages/velinstyle-skills/skills/velin-components-select-compose/SKILL.md +57 -0
  196. package/packages/velinstyle-skills/skills/velin-design-hero-compose/SKILL.md +57 -0
  197. package/packages/velinstyle-skills/skills/velin-design-section-rhythm/SKILL.md +57 -0
  198. package/packages/velinstyle-skills/skills/velin-design-surface-roles/SKILL.md +57 -0
  199. package/packages/velinstyle-skills/skills/velin-dev-component-wire/SKILL.md +57 -0
  200. package/packages/velinstyle-skills/skills/velin-dev-page-scaffold/SKILL.md +57 -0
  201. package/packages/velinstyle-skills/skills/velin-dev-plan-first/SKILL.md +57 -0
  202. package/packages/velinstyle-skills/skills/velin-docs-component-guide/SKILL.md +57 -0
  203. package/packages/velinstyle-skills/skills/velin-docs-generate-api/SKILL.md +57 -0
  204. package/packages/velinstyle-skills/skills/velin-dx-doctor-setup/SKILL.md +57 -0
  205. package/packages/velinstyle-skills/skills/velin-dx-project-init/SKILL.md +57 -0
  206. package/packages/velinstyle-skills/skills/velin-migration-legacy-wc/SKILL.md +57 -0
  207. package/packages/velinstyle-skills/skills/velin-migration-prefix-classes/SKILL.md +57 -0
  208. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +57 -0
  209. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +57 -0
  210. package/packages/velinstyle-skills/skills/velin-perf-audit-fix/SKILL.md +57 -0
  211. package/packages/velinstyle-skills/skills/velin-perf-runtime-tree-shake/SKILL.md +57 -0
  212. package/packages/velinstyle-skills/skills/velin-release-changelog-sync/SKILL.md +57 -0
  213. package/packages/velinstyle-skills/skills/velin-release-meta-rebuild/SKILL.md +57 -0
  214. package/packages/velinstyle-skills/skills/velin-review-conversion-hero/SKILL.md +57 -0
  215. package/packages/velinstyle-skills/skills/velin-review-page-gate/SKILL.md +57 -0
  216. package/packages/velinstyle-skills/skills/velin-review-seo-meta/SKILL.md +57 -0
  217. package/packages/velinstyle-skills/skills/velin-security-sanitize-html/SKILL.md +57 -0
  218. package/packages/velinstyle-skills/skills/velin-security-scan-pii/SKILL.md +57 -0
  219. package/packages/velinstyle-skills/skills/velin-testing-a11y-suite/SKILL.md +57 -0
  220. package/packages/velinstyle-skills/skills/velin-testing-visual-smoke/SKILL.md +57 -0
  221. package/packages/velinstyle-skills/skills/velin-themes-apply-token/SKILL.md +57 -0
  222. package/packages/velinstyle-skills/skills/velin-themes-contrast-check/SKILL.md +57 -0
  223. package/packages/velinstyle-skills/skills/velin-utilities-layout-apply/SKILL.md +57 -0
  224. package/packages/velinstyle-skills/skills/velin-utilities-prefix-fix/SKILL.md +57 -0
  225. package/packages/velinstyle-skills/skills/velin-utilities-token-map/SKILL.md +57 -0
  226. package/packages/velinstyle-skills/templates/admin-panel.template.yaml +12 -0
  227. package/packages/velinstyle-skills/templates/blog.template.yaml +12 -0
  228. package/packages/velinstyle-skills/templates/documentation-portal.template.yaml +12 -0
  229. package/packages/velinstyle-skills/templates/ecommerce-shop.template.yaml +13 -0
  230. package/packages/velinstyle-skills/templates/landing-page.template.yaml +12 -0
  231. package/packages/velinstyle-skills/templates/laravel-dashboard.template.yaml +11 -0
  232. package/packages/velinstyle-skills/templates/marketing-website.template.yaml +13 -0
  233. package/packages/velinstyle-skills/templates/portfolio.template.yaml +12 -0
  234. package/schemas/component-knowledge.schema.json +33 -0
  235. package/schemas/design-constraint.schema.json +15 -0
  236. package/schemas/design-intelligence.schema.json +19 -0
  237. package/schemas/design-rule.schema.json +19 -0
  238. package/schemas/page-template.schema.json +24 -0
  239. package/schemas/review-report.schema.json +36 -0
  240. package/schemas/section.schema.json +22 -0
  241. package/schemas/skill-bundle.schema.json +15 -0
  242. package/schemas/skill-graph.schema.json +25 -0
  243. package/schemas/skill-pack.schema.json +14 -0
  244. package/schemas/skill-project.schema.json +16 -0
  245. package/schemas/skill-record.schema.json +27 -0
  246. package/schemas/skill-registry.schema.json +17 -0
  247. package/schemas/skill-template.schema.json +17 -0
  248. package/schemas/token-graph.schema.json +27 -0
  249. package/schemas/utility.schema.json +166 -0
  250. package/src/components/alert.css +22 -1
  251. package/src/components/calendar-dropzone.css +5 -0
  252. package/src/components/transparency.css +138 -0
  253. package/src/layout/app-shell.css +33 -0
  254. package/src/tokens/shadow.css +13 -0
  255. package/src/utilities/border.css +2 -0
  256. package/src/utilities/display.css +1 -24
  257. package/src/utilities/responsive.css +16 -1
  258. package/src/utilities/spacing.css +32 -0
  259. package/src/velinstyle.css +3 -0
  260. package/dist/chunks/attributes-3BZLI7XF.js +0 -364
  261. package/dist/chunks/attributes-4N5JP4CG.js +0 -364
  262. package/dist/chunks/attributes-5Q2WXGRC.js +0 -374
  263. package/dist/chunks/attributes-AIR7SVLK.js +0 -364
  264. package/dist/chunks/attributes-BGRN5XZO.js +0 -364
  265. package/dist/chunks/attributes-BVSQAYLR.js +0 -364
  266. package/dist/chunks/attributes-CDYFUY7Y.js +0 -364
  267. package/dist/chunks/attributes-JMYJZBPE.js +0 -364
  268. package/dist/chunks/attributes-R5JY3X4O.js +0 -374
  269. package/dist/chunks/attributes-TNSPQTHX.js +0 -374
  270. package/dist/chunks/chunk-2354NEBP.js +0 -109
  271. package/dist/chunks/chunk-2VNA7G7S.js +0 -109
  272. package/dist/chunks/chunk-AQLRJSGG.js +0 -109
  273. package/dist/chunks/chunk-EWPSDMQT.js +0 -109
  274. package/dist/chunks/chunk-LA7264K4.js +0 -85
  275. package/dist/chunks/chunk-QTJJ3DPO.js +0 -109
  276. package/dist/chunks/chunk-RZQVWFHW.js +0 -109
  277. package/dist/chunks/chunk-U4XHMZ7D.js +0 -109
  278. package/dist/chunks/chunk-V5YIUA6G.js +0 -109
  279. package/dist/chunks/chunk-XIET2VSZ.js +0 -109
  280. package/dist/chunks/chunk-XYLJ2GCB.js +0 -205
  281. package/dist/chunks/chunk-ZPSPKUYD.js +0 -109
  282. package/dist/chunks/highlight-XTHRKBA3.js +0 -37
  283. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +0 -86
  284. package/dist/chunks/velin-carousel-Y5VCOABZ.js +0 -213
  285. package/dist/chunks/velin-code-block-ASUBTAQV.js +0 -119
  286. package/dist/chunks/velin-code-block-TSUKPY4C.js +0 -123
  287. package/dist/chunks/velin-code-block-Y6CM726Q.js +0 -119
  288. package/dist/chunks/velin-combobox-2KDTCQ7N.js +0 -155
  289. package/dist/chunks/velin-command-M7RNHUPR.js +0 -136
  290. package/dist/chunks/velin-copy-T5KDTDXP.js +0 -81
  291. package/dist/chunks/velin-countdown-5XSTN3BH.js +0 -101
  292. package/dist/chunks/velin-counter-ISCTEAHI.js +0 -118
  293. package/dist/chunks/velin-dialog-D2GUHSCD.js +0 -144
  294. package/dist/chunks/velin-dialog-IJLFDXAJ.js +0 -144
  295. package/dist/chunks/velin-dialog-TNS3WXMB.js +0 -144
  296. package/dist/chunks/velin-drawer-MJS6WCF7.js +0 -130
  297. package/dist/chunks/velin-email-N5B5ZYTE.js +0 -90
  298. package/dist/chunks/velin-icon-KZO3IEHG.js +0 -164
  299. package/dist/chunks/velin-lightbox-I75U6JF4.js +0 -140
  300. package/dist/chunks/velin-lightbox-QOTB4PRL.js +0 -140
  301. package/dist/chunks/velin-lightbox-UCD6N7HF.js +0 -140
  302. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +0 -67
  303. package/dist/chunks/velin-menubar-SFEXJE56.js +0 -86
  304. package/dist/chunks/velin-modal-2HOBXE6F.js +0 -176
  305. package/dist/chunks/velin-modal-GLI2XZZB.js +0 -176
  306. package/dist/chunks/velin-popover-EXINRIGJ.js +0 -145
  307. package/dist/chunks/velin-popover-OXX7MRZ6.js +0 -145
  308. package/dist/chunks/velin-popover-YKCCROJG.js +0 -145
  309. package/dist/chunks/velin-rating-XRQJV4LO.js +0 -91
  310. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +0 -58
  311. package/dist/chunks/velin-search-4YHJWYSS.js +0 -556
  312. package/dist/chunks/velin-search-LWHY23Q5.js +0 -474
  313. package/dist/chunks/velin-secure-field-H7FSBUJW.js +0 -95
  314. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +0 -109
  315. package/dist/chunks/velin-sheet-3OGI4HD7.js +0 -119
  316. package/dist/chunks/velin-sparkline-GVEANJVW.js +0 -184
  317. package/dist/chunks/velin-sparkline-KDA3GQAN.js +0 -162
  318. package/dist/chunks/velin-stepper-2ZIHLKGM.js +0 -141
  319. package/dist/chunks/velin-stepper-FYEUEWE6.js +0 -141
  320. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +0 -133
  321. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +0 -285
  322. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +0 -285
  323. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +0 -291
  324. package/dist/chunks/velin-toast-RCZ4CSUC.js +0 -109
  325. package/dist/chunks/velin-toast-WEUBTJG6.js +0 -109
  326. package/dist/chunks/velin-tooltip-664IOHZA.js +0 -112
  327. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +0 -103
  328. package/dist/chunks/worker-client-R6DBYPFT.js +0 -46
@@ -1,13 +1,14 @@
1
1
  {
2
2
  "schemaVersion": 1,
3
3
  "mime": "application/vnd.velinstyle.meta+json",
4
- "generatedAt": "2026-07-27T10:53:24.534Z",
4
+ "generatedAt": "2026-08-02T07:30:26.797Z",
5
5
  "framework": {
6
6
  "name": "@birdapi/velinstyle",
7
- "version": "1.1.0",
7
+ "version": "1.2.1",
8
8
  "homepage": "https://velinstyle.info",
9
9
  "repository": "https://github.com/SkyliteDesign/velinstyle.git",
10
- "tagline": "VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components."
10
+ "tagline": "VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.",
11
+ "pipeline": "Core Foundation → Design System → Knowledge Graph → Prompt Engine → Review Engine → AI Metadata"
11
12
  },
12
13
  "packageExports": [
13
14
  ".",
@@ -22,7 +23,9 @@
22
23
  "./attributes",
23
24
  "./highlight",
24
25
  "./meta",
25
- "./a11y"
26
+ "./transparency",
27
+ "./a11y",
28
+ "./skills-registry"
26
29
  ],
27
30
  "release": {
28
31
  "breaking": [
@@ -31,7 +34,8 @@
31
34
  ],
32
35
  "migration": [
33
36
  "Replace velin-tooltip-wc / velin-stepper-wc with velin-tooltip / velin-stepper.",
34
- "Point AI tools at velin-agent.json or docs/llms.txt for framework context."
37
+ "Point AI tools at velin-agent.json or docs/llms.txt for framework context.",
38
+ "Prefer velinstyle scaffold / plan for page generation (plan → render → review)."
35
39
  ]
36
40
  },
37
41
  "components": {
@@ -39,6 +43,7 @@
39
43
  "velin-accordion",
40
44
  "velin-announcer",
41
45
  "velin-bottom-nav",
46
+ "velin-calendar",
42
47
  "velin-carousel",
43
48
  "velin-code-block",
44
49
  "velin-collapse",
@@ -52,6 +57,7 @@
52
57
  "velin-drawer",
53
58
  "velin-dropdown",
54
59
  "velin-email",
60
+ "velin-file-dropzone",
55
61
  "velin-form-summary",
56
62
  "velin-icon",
57
63
  "velin-lightbox",
@@ -75,11 +81,12 @@
75
81
  "velin-toast",
76
82
  "velin-tooltip"
77
83
  ],
78
- "count": 38,
84
+ "count": 40,
79
85
  "loaderTags": [
80
86
  "velin-accordion",
81
87
  "velin-announcer",
82
88
  "velin-bottom-nav",
89
+ "velin-calendar",
83
90
  "velin-carousel",
84
91
  "velin-code-block",
85
92
  "velin-collapse",
@@ -93,6 +100,7 @@
93
100
  "velin-drawer",
94
101
  "velin-dropdown",
95
102
  "velin-email",
103
+ "velin-file-dropzone",
96
104
  "velin-form-summary",
97
105
  "velin-icon",
98
106
  "velin-lightbox",
@@ -118,7 +126,7 @@
118
126
  "velin-tooltip",
119
127
  "velin-tooltip-wc"
120
128
  ],
121
- "loaderCount": 40,
129
+ "loaderCount": 42,
122
130
  "legacyAliases": [
123
131
  "velin-stepper-wc",
124
132
  "velin-tooltip-wc"
@@ -129,6 +137,3785 @@
129
137
  "velin-reveal"
130
138
  ]
131
139
  },
140
+ "knowledgeGraph": {
141
+ "components": [
142
+ {
143
+ "id": "css-button",
144
+ "kind": "css-component",
145
+ "classPrefix": "velin-btn",
146
+ "category": "actions",
147
+ "subcategory": "button",
148
+ "purpose": "Primary interactive control for actions and form submit.",
149
+ "family": "actions",
150
+ "maturity": "core",
151
+ "recommendedPages": [
152
+ "landing",
153
+ "saas",
154
+ "dashboard",
155
+ "shop"
156
+ ],
157
+ "recommendedSections": [
158
+ "hero",
159
+ "cta",
160
+ "contact",
161
+ "pricing"
162
+ ],
163
+ "compatibleWith": [
164
+ "css-card",
165
+ "css-input",
166
+ "velin-form-summary"
167
+ ],
168
+ "incompatibleWith": [],
169
+ "accessibility": {
170
+ "role": "native button/link",
171
+ "keyboard": "Enter/Space on button"
172
+ },
173
+ "seo": {
174
+ "impact": "low",
175
+ "notes": "CTA copy affects conversion, not crawl structure"
176
+ },
177
+ "performance": {
178
+ "cost": "css-only"
179
+ },
180
+ "variants": [
181
+ "primary",
182
+ "secondary",
183
+ "ghost",
184
+ "danger",
185
+ "sm",
186
+ "lg"
187
+ ],
188
+ "density": [
189
+ "comfortable",
190
+ "default",
191
+ "compact"
192
+ ],
193
+ "themeSupport": [
194
+ "light",
195
+ "dark",
196
+ "system"
197
+ ],
198
+ "motion": {
199
+ "hover": true,
200
+ "reducedMotionSafe": true
201
+ },
202
+ "examples": [
203
+ "<button class=\"velin-btn velin-btn--primary\">Save</button>"
204
+ ],
205
+ "promptKeywords": [
206
+ "button",
207
+ "cta",
208
+ "call to action",
209
+ "submit"
210
+ ],
211
+ "designIntelligence": {
212
+ "visualWeight": 4,
213
+ "importance": "primary",
214
+ "hierarchy": "action",
215
+ "spacingRules": [
216
+ "pair with gap-3 or gap-4 in CTA groups"
217
+ ],
218
+ "typographyRules": [
219
+ "label ≤ 3 words preferred"
220
+ ],
221
+ "animationRules": [
222
+ "no infinite pulse on primary CTA"
223
+ ],
224
+ "colorRules": [
225
+ "primary uses --velin-color-primary + on-primary text"
226
+ ],
227
+ "eyeFlow": "place primary CTA after supporting copy",
228
+ "compositionRules": [
229
+ "max 2 CTAs in hero"
230
+ ],
231
+ "commonMistakes": [
232
+ "three equal CTAs",
233
+ "low contrast ghost on muted"
234
+ ],
235
+ "bestPractices": [
236
+ "one primary + optional secondary"
237
+ ]
238
+ }
239
+ },
240
+ {
241
+ "id": "css-card",
242
+ "kind": "css-component",
243
+ "classPrefix": "velin-card",
244
+ "category": "content",
245
+ "subcategory": "card",
246
+ "purpose": "Grouped content surface for features, services, pricing tiers.",
247
+ "family": "surfaces",
248
+ "maturity": "core",
249
+ "recommendedPages": [
250
+ "landing",
251
+ "saas",
252
+ "agency",
253
+ "portfolio"
254
+ ],
255
+ "recommendedSections": [
256
+ "services",
257
+ "benefits",
258
+ "pricing"
259
+ ],
260
+ "compatibleWith": [
261
+ "css-button",
262
+ "css-badge",
263
+ "velin-icon"
264
+ ],
265
+ "incompatibleWith": [],
266
+ "accessibility": {
267
+ "notes": "Heading inside card; don't nest interactive without care"
268
+ },
269
+ "seo": {
270
+ "impact": "medium",
271
+ "notes": "Card headings help section semantics"
272
+ },
273
+ "performance": {
274
+ "cost": "css-only"
275
+ },
276
+ "variants": [
277
+ "raised",
278
+ "bordered"
279
+ ],
280
+ "density": [
281
+ "comfortable",
282
+ "default",
283
+ "compact"
284
+ ],
285
+ "themeSupport": [
286
+ "light",
287
+ "dark"
288
+ ],
289
+ "motion": {
290
+ "reducedMotionSafe": true
291
+ },
292
+ "examples": [
293
+ "<article class=\"velin-card\">…</article>"
294
+ ],
295
+ "promptKeywords": [
296
+ "card",
297
+ "feature",
298
+ "service",
299
+ "tile"
300
+ ],
301
+ "designIntelligence": {
302
+ "visualWeight": 3,
303
+ "importance": "secondary",
304
+ "hierarchy": "section-item",
305
+ "spacingRules": [
306
+ "grid gap-4 or gap-6"
307
+ ],
308
+ "typographyRules": [
309
+ "H3 title + short body"
310
+ ],
311
+ "animationRules": [
312
+ "optional entrance; respect reduced motion"
313
+ ],
314
+ "colorRules": [
315
+ "raised surface + text tokens"
316
+ ],
317
+ "eyeFlow": "scan titles across grid first",
318
+ "compositionRules": [
319
+ "2–4 columns desktop; 1 mobile"
320
+ ],
321
+ "commonMistakes": [
322
+ "uneven card heights with sparse content",
323
+ "too many cards above fold"
324
+ ],
325
+ "bestPractices": [
326
+ "equal structure: icon, title, text, optional link"
327
+ ]
328
+ }
329
+ },
330
+ {
331
+ "id": "css-input",
332
+ "kind": "css-component",
333
+ "classPrefix": "velin-input",
334
+ "category": "forms",
335
+ "subcategory": "field",
336
+ "purpose": "Text entry fields with labels for forms.",
337
+ "family": "forms",
338
+ "maturity": "core",
339
+ "recommendedPages": [
340
+ "landing",
341
+ "saas",
342
+ "dashboard",
343
+ "shop"
344
+ ],
345
+ "recommendedSections": [
346
+ "contact",
347
+ "login"
348
+ ],
349
+ "compatibleWith": [
350
+ "velin-form-summary",
351
+ "css-button"
352
+ ],
353
+ "incompatibleWith": [],
354
+ "accessibility": {
355
+ "notes": "Visible label required; wire aria-invalid via form-summary"
356
+ },
357
+ "seo": {
358
+ "impact": "low"
359
+ },
360
+ "performance": {
361
+ "cost": "css-only"
362
+ },
363
+ "variants": [
364
+ "default",
365
+ "invalid"
366
+ ],
367
+ "density": [
368
+ "default",
369
+ "compact",
370
+ "data-dense"
371
+ ],
372
+ "themeSupport": [
373
+ "light",
374
+ "dark"
375
+ ],
376
+ "motion": {},
377
+ "examples": [
378
+ "<label>Name<input class=\"velin-input\"></label>"
379
+ ],
380
+ "promptKeywords": [
381
+ "input",
382
+ "form field",
383
+ "text field"
384
+ ],
385
+ "designIntelligence": {
386
+ "visualWeight": 2,
387
+ "importance": "primary",
388
+ "hierarchy": "form-control",
389
+ "spacingRules": [
390
+ "stack fields with gap-4"
391
+ ],
392
+ "typographyRules": [
393
+ "label above field"
394
+ ],
395
+ "animationRules": [],
396
+ "colorRules": [
397
+ "invalid uses danger tokens"
398
+ ],
399
+ "eyeFlow": "label → field → help → errors summary",
400
+ "compositionRules": [
401
+ "group related fields"
402
+ ],
403
+ "commonMistakes": [
404
+ "placeholder-only labels"
405
+ ],
406
+ "bestPractices": [
407
+ "pair with velin-form-summary"
408
+ ]
409
+ }
410
+ },
411
+ {
412
+ "id": "css-alert",
413
+ "kind": "css-component",
414
+ "classPrefix": "velin-alert",
415
+ "category": "feedback",
416
+ "subcategory": "alert",
417
+ "purpose": "Inline status messages.",
418
+ "family": "feedback",
419
+ "maturity": "core",
420
+ "recommendedPages": [
421
+ "dashboard",
422
+ "saas",
423
+ "docs"
424
+ ],
425
+ "recommendedSections": [
426
+ "contact",
427
+ "onboarding"
428
+ ],
429
+ "compatibleWith": [
430
+ "velin-form-summary"
431
+ ],
432
+ "incompatibleWith": [],
433
+ "accessibility": {
434
+ "role": "status/alert depending on urgency"
435
+ },
436
+ "seo": {
437
+ "impact": "none"
438
+ },
439
+ "performance": {
440
+ "cost": "css-only"
441
+ },
442
+ "variants": [
443
+ "info",
444
+ "success",
445
+ "warning",
446
+ "danger"
447
+ ],
448
+ "density": [
449
+ "default",
450
+ "compact"
451
+ ],
452
+ "themeSupport": [
453
+ "light",
454
+ "dark"
455
+ ],
456
+ "motion": {},
457
+ "examples": [
458
+ "<div class=\"velin-alert velin-alert--info\">…</div>"
459
+ ],
460
+ "promptKeywords": [
461
+ "alert",
462
+ "banner",
463
+ "notice"
464
+ ],
465
+ "designIntelligence": {
466
+ "visualWeight": 3,
467
+ "importance": "secondary",
468
+ "hierarchy": "feedback",
469
+ "spacingRules": [
470
+ "margin-block before forms"
471
+ ],
472
+ "typographyRules": [
473
+ "concise message"
474
+ ],
475
+ "animationRules": [],
476
+ "colorRules": [
477
+ "semantic status tokens"
478
+ ],
479
+ "eyeFlow": "near the related control",
480
+ "compositionRules": [
481
+ "one alert per concern"
482
+ ],
483
+ "commonMistakes": [
484
+ "using alert for marketing hero"
485
+ ],
486
+ "bestPractices": [
487
+ "pair with actionable next step"
488
+ ]
489
+ }
490
+ },
491
+ {
492
+ "id": "css-nav",
493
+ "kind": "css-component",
494
+ "classPrefix": "velin-nav",
495
+ "category": "navigation",
496
+ "subcategory": "nav",
497
+ "purpose": "Site or app navigation chrome.",
498
+ "family": "navigation",
499
+ "maturity": "core",
500
+ "recommendedPages": [
501
+ "landing",
502
+ "corporate",
503
+ "docs",
504
+ "dashboard"
505
+ ],
506
+ "recommendedSections": [
507
+ "navbar"
508
+ ],
509
+ "compatibleWith": [
510
+ "velin-theme-toggle",
511
+ "velin-search"
512
+ ],
513
+ "incompatibleWith": [],
514
+ "accessibility": {
515
+ "notes": "Landmark nav; skip link on pages"
516
+ },
517
+ "seo": {
518
+ "impact": "high",
519
+ "notes": "Primary internal links"
520
+ },
521
+ "performance": {
522
+ "cost": "css-only"
523
+ },
524
+ "variants": [
525
+ "header",
526
+ "pills"
527
+ ],
528
+ "density": [
529
+ "comfortable",
530
+ "default",
531
+ "compact"
532
+ ],
533
+ "themeSupport": [
534
+ "light",
535
+ "dark"
536
+ ],
537
+ "motion": {},
538
+ "examples": [
539
+ "<nav class=\"velin-nav\">…</nav>"
540
+ ],
541
+ "promptKeywords": [
542
+ "navbar",
543
+ "navigation",
544
+ "header menu"
545
+ ],
546
+ "designIntelligence": {
547
+ "visualWeight": 3,
548
+ "importance": "primary",
549
+ "hierarchy": "chrome",
550
+ "spacingRules": [
551
+ "sticky optional; padding-inline token"
552
+ ],
553
+ "typographyRules": [
554
+ "short labels"
555
+ ],
556
+ "animationRules": [],
557
+ "colorRules": [
558
+ "base or raised surface"
559
+ ],
560
+ "eyeFlow": "logo → links → CTA",
561
+ "compositionRules": [
562
+ "one primary nav CTA max"
563
+ ],
564
+ "commonMistakes": [
565
+ "too many top-level items"
566
+ ],
567
+ "bestPractices": [
568
+ "5–7 primary links"
569
+ ]
570
+ }
571
+ },
572
+ {
573
+ "id": "velin-modal",
574
+ "kind": "web-component",
575
+ "tag": "velin-modal",
576
+ "category": "overlays",
577
+ "subcategory": "modal",
578
+ "purpose": "Blocking dialog overlay for focused tasks.",
579
+ "family": "overlays",
580
+ "maturity": "core",
581
+ "recommendedPages": [
582
+ "saas",
583
+ "dashboard",
584
+ "shop"
585
+ ],
586
+ "recommendedSections": [],
587
+ "compatibleWith": [
588
+ "css-button",
589
+ "velin-form-summary"
590
+ ],
591
+ "incompatibleWith": [
592
+ "velin-drawer",
593
+ "velin-sheet"
594
+ ],
595
+ "accessibility": {
596
+ "focusTrap": true,
597
+ "escapeCloses": true,
598
+ "inertBackground": true
599
+ },
600
+ "seo": {
601
+ "impact": "none",
602
+ "notes": "Do not put primary SEO content only in modal"
603
+ },
604
+ "performance": {
605
+ "cost": "lazy-ok"
606
+ },
607
+ "variants": [
608
+ "open"
609
+ ],
610
+ "density": [
611
+ "default"
612
+ ],
613
+ "themeSupport": [
614
+ "light",
615
+ "dark"
616
+ ],
617
+ "motion": {
618
+ "reducedMotionSafe": true
619
+ },
620
+ "examples": [
621
+ "<velin-modal><h2 slot=\"title\">…</h2></velin-modal>"
622
+ ],
623
+ "promptKeywords": [
624
+ "modal",
625
+ "dialog overlay",
626
+ "popup"
627
+ ],
628
+ "designIntelligence": {
629
+ "visualWeight": 5,
630
+ "importance": "primary",
631
+ "hierarchy": "overlay",
632
+ "spacingRules": [
633
+ "comfortable body padding"
634
+ ],
635
+ "typographyRules": [
636
+ "clear title"
637
+ ],
638
+ "animationRules": [
639
+ "short open/close; respect reduced motion"
640
+ ],
641
+ "colorRules": [
642
+ "overlay surface + dimmed backdrop"
643
+ ],
644
+ "eyeFlow": "title → body → actions",
645
+ "compositionRules": [
646
+ "prefer modal for blocking confirmations"
647
+ ],
648
+ "commonMistakes": [
649
+ "stacking multiple modals",
650
+ "missing close affordance"
651
+ ],
652
+ "bestPractices": [
653
+ "use focus-manager lifecycle"
654
+ ]
655
+ },
656
+ "api": {
657
+ "events": [
658
+ "velin-close"
659
+ ],
660
+ "methods": [
661
+ "open",
662
+ "close"
663
+ ]
664
+ }
665
+ },
666
+ {
667
+ "id": "velin-dialog",
668
+ "kind": "web-component",
669
+ "tag": "velin-dialog",
670
+ "category": "overlays",
671
+ "subcategory": "dialog",
672
+ "purpose": "Native dialog-based prompts and confirms.",
673
+ "family": "overlays",
674
+ "maturity": "core",
675
+ "recommendedPages": [
676
+ "saas",
677
+ "dashboard"
678
+ ],
679
+ "recommendedSections": [],
680
+ "compatibleWith": [
681
+ "css-button"
682
+ ],
683
+ "incompatibleWith": [],
684
+ "accessibility": {
685
+ "nativeDialog": true
686
+ },
687
+ "seo": {
688
+ "impact": "none"
689
+ },
690
+ "performance": {
691
+ "cost": "lazy-ok"
692
+ },
693
+ "variants": [],
694
+ "density": [
695
+ "default"
696
+ ],
697
+ "themeSupport": [
698
+ "light",
699
+ "dark"
700
+ ],
701
+ "motion": {},
702
+ "examples": [
703
+ "<velin-dialog></velin-dialog>"
704
+ ],
705
+ "promptKeywords": [
706
+ "confirm dialog",
707
+ "prompt dialog"
708
+ ],
709
+ "designIntelligence": {
710
+ "visualWeight": 5,
711
+ "importance": "primary",
712
+ "hierarchy": "overlay",
713
+ "spacingRules": [],
714
+ "typographyRules": [],
715
+ "animationRules": [],
716
+ "colorRules": [],
717
+ "eyeFlow": "message → actions",
718
+ "compositionRules": [
719
+ "use for confirm/prompt; modal for richer layouts"
720
+ ],
721
+ "commonMistakes": [
722
+ "listening only to deprecated velin-dialog-close"
723
+ ],
724
+ "bestPractices": [
725
+ "listen to velin-close"
726
+ ]
727
+ },
728
+ "api": {
729
+ "events": [
730
+ "velin-close",
731
+ "velin-dialog-close"
732
+ ]
733
+ }
734
+ },
735
+ {
736
+ "id": "velin-accordion",
737
+ "kind": "web-component",
738
+ "tag": "velin-accordion",
739
+ "category": "disclosure",
740
+ "subcategory": "accordion",
741
+ "purpose": "FAQ and progressive disclosure of related panels.",
742
+ "family": "disclosure",
743
+ "maturity": "core",
744
+ "recommendedPages": [
745
+ "landing",
746
+ "docs",
747
+ "saas",
748
+ "lawyer",
749
+ "healthcare"
750
+ ],
751
+ "recommendedSections": [
752
+ "faq"
753
+ ],
754
+ "compatibleWith": [
755
+ "css-card"
756
+ ],
757
+ "incompatibleWith": [],
758
+ "accessibility": {
759
+ "keyboard": "arrow keys / enter within pattern"
760
+ },
761
+ "seo": {
762
+ "impact": "medium",
763
+ "notes": "Keep question text in light DOM when possible"
764
+ },
765
+ "performance": {
766
+ "cost": "lazy-ok"
767
+ },
768
+ "variants": [],
769
+ "density": [
770
+ "comfortable",
771
+ "default"
772
+ ],
773
+ "themeSupport": [
774
+ "light",
775
+ "dark"
776
+ ],
777
+ "motion": {
778
+ "reducedMotionSafe": true
779
+ },
780
+ "examples": [
781
+ "<velin-accordion>…</velin-accordion>"
782
+ ],
783
+ "promptKeywords": [
784
+ "faq",
785
+ "accordion",
786
+ "disclosure"
787
+ ],
788
+ "designIntelligence": {
789
+ "visualWeight": 2,
790
+ "importance": "secondary",
791
+ "hierarchy": "section-body",
792
+ "spacingRules": [
793
+ "stack items tightly"
794
+ ],
795
+ "typographyRules": [
796
+ "questions as clear interrogatives"
797
+ ],
798
+ "animationRules": [
799
+ "expand/collapse brief"
800
+ ],
801
+ "colorRules": [
802
+ "base/raised"
803
+ ],
804
+ "eyeFlow": "scan questions vertically",
805
+ "compositionRules": [
806
+ "use in FAQ section after social proof"
807
+ ],
808
+ "commonMistakes": [
809
+ "marketing paragraphs as 'questions'"
810
+ ],
811
+ "bestPractices": [
812
+ "5–8 high-intent FAQs"
813
+ ]
814
+ }
815
+ },
816
+ {
817
+ "id": "velin-form-summary",
818
+ "kind": "web-component",
819
+ "tag": "velin-form-summary",
820
+ "category": "forms",
821
+ "subcategory": "validation",
822
+ "purpose": "Accessible error summary for forms.",
823
+ "family": "forms",
824
+ "maturity": "core",
825
+ "recommendedPages": [
826
+ "landing",
827
+ "saas",
828
+ "shop"
829
+ ],
830
+ "recommendedSections": [
831
+ "contact"
832
+ ],
833
+ "compatibleWith": [
834
+ "css-input",
835
+ "css-button"
836
+ ],
837
+ "incompatibleWith": [],
838
+ "accessibility": {
839
+ "role": "alert",
840
+ "wcag": [
841
+ "3.3.1",
842
+ "3.3.3"
843
+ ]
844
+ },
845
+ "seo": {
846
+ "impact": "none"
847
+ },
848
+ "performance": {
849
+ "cost": "lazy-ok"
850
+ },
851
+ "variants": [],
852
+ "density": [
853
+ "default"
854
+ ],
855
+ "themeSupport": [
856
+ "light",
857
+ "dark"
858
+ ],
859
+ "motion": {},
860
+ "examples": [
861
+ "<velin-form-summary></velin-form-summary>"
862
+ ],
863
+ "promptKeywords": [
864
+ "form errors",
865
+ "validation summary",
866
+ "contact form"
867
+ ],
868
+ "designIntelligence": {
869
+ "visualWeight": 4,
870
+ "importance": "primary",
871
+ "hierarchy": "form-feedback",
872
+ "spacingRules": [
873
+ "place before fields or at top of form"
874
+ ],
875
+ "typographyRules": [
876
+ "list each invalid field"
877
+ ],
878
+ "animationRules": [],
879
+ "colorRules": [
880
+ "danger tokens"
881
+ ],
882
+ "eyeFlow": "summary → first invalid field",
883
+ "compositionRules": [
884
+ "required on contact/checkout forms"
885
+ ],
886
+ "commonMistakes": [
887
+ "native-only bubbles without summary"
888
+ ],
889
+ "bestPractices": [
890
+ "wire aria-invalid via component"
891
+ ]
892
+ }
893
+ },
894
+ {
895
+ "id": "velin-theme-toggle",
896
+ "kind": "web-component",
897
+ "tag": "velin-theme-toggle",
898
+ "category": "theming",
899
+ "subcategory": "toggle",
900
+ "purpose": "Switch light/dark theme via data-velin-theme.",
901
+ "family": "theming",
902
+ "maturity": "core",
903
+ "recommendedPages": [
904
+ "docs",
905
+ "saas",
906
+ "dashboard"
907
+ ],
908
+ "recommendedSections": [
909
+ "navbar"
910
+ ],
911
+ "compatibleWith": [
912
+ "css-nav"
913
+ ],
914
+ "incompatibleWith": [],
915
+ "accessibility": {
916
+ "notes": "Accessible name for toggle"
917
+ },
918
+ "seo": {
919
+ "impact": "none"
920
+ },
921
+ "performance": {
922
+ "cost": "lazy-ok"
923
+ },
924
+ "variants": [],
925
+ "density": [
926
+ "default",
927
+ "compact"
928
+ ],
929
+ "themeSupport": [
930
+ "light",
931
+ "dark",
932
+ "system"
933
+ ],
934
+ "motion": {},
935
+ "examples": [
936
+ "<velin-theme-toggle></velin-theme-toggle>"
937
+ ],
938
+ "promptKeywords": [
939
+ "dark mode",
940
+ "theme toggle"
941
+ ],
942
+ "designIntelligence": {
943
+ "visualWeight": 1,
944
+ "importance": "tertiary",
945
+ "hierarchy": "chrome",
946
+ "spacingRules": [],
947
+ "typographyRules": [],
948
+ "animationRules": [],
949
+ "colorRules": [],
950
+ "eyeFlow": "corner of header",
951
+ "compositionRules": [
952
+ "header actions cluster"
953
+ ],
954
+ "commonMistakes": [
955
+ "forcing dark without attribute contract"
956
+ ],
957
+ "bestPractices": [
958
+ "follow ADR 0011 precedence"
959
+ ]
960
+ }
961
+ },
962
+ {
963
+ "id": "velin-data-table",
964
+ "kind": "web-component",
965
+ "tag": "velin-data-table",
966
+ "category": "data",
967
+ "subcategory": "table",
968
+ "purpose": "Progressive enhancement for sortable, filterable, paginated tables.",
969
+ "family": "data-display",
970
+ "maturity": "core",
971
+ "recommendedPages": [
972
+ "dashboard",
973
+ "crm",
974
+ "erp",
975
+ "docs"
976
+ ],
977
+ "recommendedSections": [
978
+ "navbar"
979
+ ],
980
+ "compatibleWith": [
981
+ "css-input",
982
+ "css-badge",
983
+ "velin-form-summary"
984
+ ],
985
+ "incompatibleWith": [],
986
+ "accessibility": {
987
+ "notes": "Requires caption/aria-label; aria-sort on headers"
988
+ },
989
+ "seo": {
990
+ "impact": "low",
991
+ "notes": "Often noindex app surfaces"
992
+ },
993
+ "performance": {
994
+ "cost": "dom-rows"
995
+ },
996
+ "variants": [
997
+ "sortable",
998
+ "filterable",
999
+ "paginated"
1000
+ ],
1001
+ "density": [
1002
+ "default",
1003
+ "compact",
1004
+ "data-dense"
1005
+ ],
1006
+ "themeSupport": [
1007
+ "light",
1008
+ "dark"
1009
+ ],
1010
+ "motion": {
1011
+ "reducedMotionSafe": true
1012
+ },
1013
+ "examples": [
1014
+ "<velin-data-table><table>…</table></velin-data-table>"
1015
+ ],
1016
+ "promptKeywords": [
1017
+ "data table",
1018
+ "sortable table",
1019
+ "filter table"
1020
+ ],
1021
+ "designIntelligence": {
1022
+ "visualWeight": 4,
1023
+ "importance": "primary",
1024
+ "hierarchy": "main",
1025
+ "spacingRules": [
1026
+ "full-bleed in content column"
1027
+ ],
1028
+ "typographyRules": [
1029
+ "tabular nums for numeric columns"
1030
+ ],
1031
+ "animationRules": [],
1032
+ "colorRules": [
1033
+ "zebra optional via tokens"
1034
+ ],
1035
+ "eyeFlow": "toolbar → headers → rows",
1036
+ "compositionRules": [
1037
+ "pair filter input above table"
1038
+ ],
1039
+ "commonMistakes": [
1040
+ "missing caption",
1041
+ "icon-only sort without name"
1042
+ ],
1043
+ "bestPractices": [
1044
+ "announce sort/filter changes"
1045
+ ]
1046
+ }
1047
+ },
1048
+ {
1049
+ "id": "velin-search",
1050
+ "kind": "web-component",
1051
+ "tag": "velin-search",
1052
+ "category": "navigation",
1053
+ "subcategory": "search",
1054
+ "purpose": "Documentation and site search against a JSON index.",
1055
+ "family": "navigation",
1056
+ "maturity": "core",
1057
+ "recommendedPages": [
1058
+ "docs",
1059
+ "saas",
1060
+ "corporate"
1061
+ ],
1062
+ "recommendedSections": [
1063
+ "navbar"
1064
+ ],
1065
+ "compatibleWith": [
1066
+ "css-nav",
1067
+ "velin-theme-toggle"
1068
+ ],
1069
+ "incompatibleWith": [],
1070
+ "accessibility": {
1071
+ "notes": "Combobox pattern; keyboard results"
1072
+ },
1073
+ "seo": {
1074
+ "impact": "low"
1075
+ },
1076
+ "performance": {
1077
+ "cost": "index-load"
1078
+ },
1079
+ "variants": [],
1080
+ "density": [
1081
+ "default",
1082
+ "compact"
1083
+ ],
1084
+ "themeSupport": [
1085
+ "light",
1086
+ "dark"
1087
+ ],
1088
+ "motion": {},
1089
+ "examples": [
1090
+ "<velin-search index-url=\"/dist/search-index.json\"></velin-search>"
1091
+ ],
1092
+ "promptKeywords": [
1093
+ "search",
1094
+ "docs search",
1095
+ "site search"
1096
+ ],
1097
+ "designIntelligence": {
1098
+ "visualWeight": 2,
1099
+ "importance": "secondary",
1100
+ "hierarchy": "chrome",
1101
+ "spacingRules": [
1102
+ "header cluster"
1103
+ ],
1104
+ "typographyRules": [],
1105
+ "animationRules": [],
1106
+ "colorRules": [
1107
+ "surface raised for results"
1108
+ ],
1109
+ "eyeFlow": "header center/right",
1110
+ "compositionRules": [
1111
+ "one search per chrome"
1112
+ ],
1113
+ "commonMistakes": [
1114
+ "blocking main thread with huge index"
1115
+ ],
1116
+ "bestPractices": [
1117
+ "relative URLs in index"
1118
+ ]
1119
+ }
1120
+ },
1121
+ {
1122
+ "id": "css-badge",
1123
+ "kind": "css-component",
1124
+ "classPrefix": "velin-badge",
1125
+ "category": "feedback",
1126
+ "subcategory": "badge",
1127
+ "purpose": "Compact status and count labels.",
1128
+ "family": "feedback",
1129
+ "maturity": "core",
1130
+ "recommendedPages": [
1131
+ "dashboard",
1132
+ "saas",
1133
+ "shop"
1134
+ ],
1135
+ "recommendedSections": [
1136
+ "services",
1137
+ "pricing",
1138
+ "navbar"
1139
+ ],
1140
+ "compatibleWith": [
1141
+ "css-card",
1142
+ "css-nav",
1143
+ "css-button"
1144
+ ],
1145
+ "incompatibleWith": [],
1146
+ "accessibility": {
1147
+ "notes": "Do not rely on color alone"
1148
+ },
1149
+ "seo": {
1150
+ "impact": "none"
1151
+ },
1152
+ "performance": {
1153
+ "cost": "css-only"
1154
+ },
1155
+ "variants": [
1156
+ "success",
1157
+ "warning",
1158
+ "danger",
1159
+ "info"
1160
+ ],
1161
+ "density": [
1162
+ "default",
1163
+ "compact"
1164
+ ],
1165
+ "themeSupport": [
1166
+ "light",
1167
+ "dark"
1168
+ ],
1169
+ "motion": {},
1170
+ "examples": [
1171
+ "<span class=\"velin-badge\">New</span>"
1172
+ ],
1173
+ "promptKeywords": [
1174
+ "badge",
1175
+ "status label",
1176
+ "pill"
1177
+ ],
1178
+ "designIntelligence": {
1179
+ "visualWeight": 1,
1180
+ "importance": "tertiary",
1181
+ "hierarchy": "meta",
1182
+ "spacingRules": [
1183
+ "inline with title"
1184
+ ],
1185
+ "typographyRules": [
1186
+ "short labels"
1187
+ ],
1188
+ "animationRules": [],
1189
+ "colorRules": [
1190
+ "semantic tokens"
1191
+ ],
1192
+ "eyeFlow": "adjacent to title",
1193
+ "compositionRules": [
1194
+ "one badge cluster per card"
1195
+ ],
1196
+ "commonMistakes": [
1197
+ "color-only meaning"
1198
+ ],
1199
+ "bestPractices": [
1200
+ "pair with text"
1201
+ ]
1202
+ }
1203
+ },
1204
+ {
1205
+ "id": "velin-drawer",
1206
+ "kind": "web-component",
1207
+ "tag": "velin-drawer",
1208
+ "category": "overlays",
1209
+ "subcategory": "drawer",
1210
+ "purpose": "Side panel overlay for navigation or secondary tasks without blocking the whole viewport like a modal.",
1211
+ "family": "overlays",
1212
+ "maturity": "core",
1213
+ "recommendedPages": [
1214
+ "dashboard",
1215
+ "saas",
1216
+ "docs",
1217
+ "shop"
1218
+ ],
1219
+ "recommendedSections": [
1220
+ "navbar"
1221
+ ],
1222
+ "compatibleWith": [
1223
+ "css-nav",
1224
+ "css-button",
1225
+ "velin-form-summary"
1226
+ ],
1227
+ "incompatibleWith": [
1228
+ "velin-modal",
1229
+ "velin-sheet"
1230
+ ],
1231
+ "accessibility": {
1232
+ "focusTrap": true,
1233
+ "escapeCloses": true,
1234
+ "inertBackground": true
1235
+ },
1236
+ "seo": {
1237
+ "impact": "none"
1238
+ },
1239
+ "performance": {
1240
+ "cost": "lazy-ok"
1241
+ },
1242
+ "variants": [
1243
+ "start",
1244
+ "end"
1245
+ ],
1246
+ "density": [
1247
+ "default",
1248
+ "compact"
1249
+ ],
1250
+ "themeSupport": [
1251
+ "light",
1252
+ "dark"
1253
+ ],
1254
+ "motion": {
1255
+ "reducedMotionSafe": true
1256
+ },
1257
+ "examples": [
1258
+ "<velin-drawer></velin-drawer>"
1259
+ ],
1260
+ "promptKeywords": [
1261
+ "drawer",
1262
+ "side panel",
1263
+ "sidebar overlay"
1264
+ ],
1265
+ "designIntelligence": {
1266
+ "visualWeight": 4,
1267
+ "importance": "secondary",
1268
+ "hierarchy": "overlay",
1269
+ "spacingRules": [
1270
+ "comfortable body padding"
1271
+ ],
1272
+ "typographyRules": [
1273
+ "clear title"
1274
+ ],
1275
+ "animationRules": [
1276
+ "slide in/out; respect reduced motion"
1277
+ ],
1278
+ "colorRules": [
1279
+ "overlay surface + dimmed backdrop"
1280
+ ],
1281
+ "eyeFlow": "title → body → actions",
1282
+ "compositionRules": [
1283
+ "prefer drawer for filters/nav; modal for blocking confirms"
1284
+ ],
1285
+ "commonMistakes": [
1286
+ "using drawer and modal interchangeably"
1287
+ ],
1288
+ "bestPractices": [
1289
+ "use focus-manager lifecycle"
1290
+ ]
1291
+ },
1292
+ "api": {
1293
+ "events": [
1294
+ "velin-close"
1295
+ ],
1296
+ "methods": [
1297
+ "open",
1298
+ "close"
1299
+ ]
1300
+ }
1301
+ },
1302
+ {
1303
+ "id": "velin-sheet",
1304
+ "kind": "web-component",
1305
+ "tag": "velin-sheet",
1306
+ "category": "overlays",
1307
+ "subcategory": "sheet",
1308
+ "purpose": "Bottom or edge sheet for mobile-first actions and pickers.",
1309
+ "family": "overlays",
1310
+ "maturity": "core",
1311
+ "recommendedPages": [
1312
+ "shop",
1313
+ "saas",
1314
+ "dashboard",
1315
+ "event"
1316
+ ],
1317
+ "recommendedSections": [],
1318
+ "compatibleWith": [
1319
+ "css-button",
1320
+ "velin-form-summary"
1321
+ ],
1322
+ "incompatibleWith": [
1323
+ "velin-modal",
1324
+ "velin-drawer"
1325
+ ],
1326
+ "accessibility": {
1327
+ "focusTrap": true,
1328
+ "escapeCloses": true,
1329
+ "inertBackground": true
1330
+ },
1331
+ "seo": {
1332
+ "impact": "none"
1333
+ },
1334
+ "performance": {
1335
+ "cost": "lazy-ok"
1336
+ },
1337
+ "variants": [
1338
+ "bottom"
1339
+ ],
1340
+ "density": [
1341
+ "default",
1342
+ "compact"
1343
+ ],
1344
+ "themeSupport": [
1345
+ "light",
1346
+ "dark"
1347
+ ],
1348
+ "motion": {
1349
+ "reducedMotionSafe": true
1350
+ },
1351
+ "examples": [
1352
+ "<velin-sheet></velin-sheet>"
1353
+ ],
1354
+ "promptKeywords": [
1355
+ "sheet",
1356
+ "bottom sheet",
1357
+ "action sheet"
1358
+ ],
1359
+ "designIntelligence": {
1360
+ "visualWeight": 4,
1361
+ "importance": "secondary",
1362
+ "hierarchy": "overlay",
1363
+ "spacingRules": [
1364
+ "thumb-friendly action spacing"
1365
+ ],
1366
+ "typographyRules": [
1367
+ "short action labels"
1368
+ ],
1369
+ "animationRules": [
1370
+ "slide from edge; reduced-motion safe"
1371
+ ],
1372
+ "colorRules": [
1373
+ "raised overlay surface"
1374
+ ],
1375
+ "eyeFlow": "handle/title → actions",
1376
+ "compositionRules": [
1377
+ "prefer sheet on small viewports for actions"
1378
+ ],
1379
+ "commonMistakes": [
1380
+ "tiny hit targets",
1381
+ "missing dismiss control"
1382
+ ],
1383
+ "bestPractices": [
1384
+ "use focus-manager lifecycle"
1385
+ ]
1386
+ },
1387
+ "api": {
1388
+ "events": [
1389
+ "velin-close"
1390
+ ],
1391
+ "methods": [
1392
+ "open",
1393
+ "close"
1394
+ ]
1395
+ }
1396
+ },
1397
+ {
1398
+ "id": "velin-lightbox",
1399
+ "kind": "web-component",
1400
+ "tag": "velin-lightbox",
1401
+ "category": "overlays",
1402
+ "subcategory": "lightbox",
1403
+ "purpose": "Media-focused overlay for images and galleries.",
1404
+ "family": "overlays",
1405
+ "maturity": "advanced",
1406
+ "recommendedPages": [
1407
+ "portfolio",
1408
+ "shop",
1409
+ "agency",
1410
+ "event"
1411
+ ],
1412
+ "recommendedSections": [
1413
+ "services",
1414
+ "gallery"
1415
+ ],
1416
+ "compatibleWith": [
1417
+ "css-card",
1418
+ "css-button"
1419
+ ],
1420
+ "incompatibleWith": [],
1421
+ "accessibility": {
1422
+ "focusTrap": true,
1423
+ "escapeCloses": true,
1424
+ "inertBackground": true
1425
+ },
1426
+ "seo": {
1427
+ "impact": "low",
1428
+ "notes": "Keep meaningful alt text in light DOM when possible"
1429
+ },
1430
+ "performance": {
1431
+ "cost": "lazy-ok"
1432
+ },
1433
+ "variants": [],
1434
+ "density": [
1435
+ "default"
1436
+ ],
1437
+ "themeSupport": [
1438
+ "light",
1439
+ "dark"
1440
+ ],
1441
+ "motion": {
1442
+ "reducedMotionSafe": true
1443
+ },
1444
+ "examples": [
1445
+ "<velin-lightbox></velin-lightbox>"
1446
+ ],
1447
+ "promptKeywords": [
1448
+ "lightbox",
1449
+ "image gallery overlay",
1450
+ "media viewer"
1451
+ ],
1452
+ "designIntelligence": {
1453
+ "visualWeight": 5,
1454
+ "importance": "primary",
1455
+ "hierarchy": "overlay",
1456
+ "spacingRules": [],
1457
+ "typographyRules": [
1458
+ "captions concise"
1459
+ ],
1460
+ "animationRules": [
1461
+ "fade/zoom brief"
1462
+ ],
1463
+ "colorRules": [
1464
+ "dark dim backdrop"
1465
+ ],
1466
+ "eyeFlow": "media → caption → close",
1467
+ "compositionRules": [
1468
+ "use for media, not forms"
1469
+ ],
1470
+ "commonMistakes": [
1471
+ "forms inside lightbox",
1472
+ "missing close"
1473
+ ],
1474
+ "bestPractices": [
1475
+ "use focus-manager lifecycle"
1476
+ ]
1477
+ },
1478
+ "api": {
1479
+ "events": [
1480
+ "velin-close"
1481
+ ],
1482
+ "methods": [
1483
+ "open",
1484
+ "close"
1485
+ ]
1486
+ }
1487
+ },
1488
+ {
1489
+ "id": "velin-toast",
1490
+ "kind": "web-component",
1491
+ "tag": "velin-toast",
1492
+ "category": "feedback",
1493
+ "subcategory": "toast",
1494
+ "purpose": "Transient status messages that do not block the page.",
1495
+ "family": "feedback",
1496
+ "maturity": "core",
1497
+ "recommendedPages": [
1498
+ "saas",
1499
+ "dashboard",
1500
+ "shop"
1501
+ ],
1502
+ "recommendedSections": [],
1503
+ "compatibleWith": [
1504
+ "css-button",
1505
+ "css-alert"
1506
+ ],
1507
+ "incompatibleWith": [],
1508
+ "accessibility": {
1509
+ "role": "status",
1510
+ "notes": "Prefer polite live region; do not replace form-summary"
1511
+ },
1512
+ "seo": {
1513
+ "impact": "none"
1514
+ },
1515
+ "performance": {
1516
+ "cost": "lazy-ok"
1517
+ },
1518
+ "variants": [
1519
+ "success",
1520
+ "warning",
1521
+ "danger",
1522
+ "info"
1523
+ ],
1524
+ "density": [
1525
+ "default",
1526
+ "compact"
1527
+ ],
1528
+ "themeSupport": [
1529
+ "light",
1530
+ "dark"
1531
+ ],
1532
+ "motion": {
1533
+ "reducedMotionSafe": true
1534
+ },
1535
+ "examples": [
1536
+ "<velin-toast></velin-toast>"
1537
+ ],
1538
+ "promptKeywords": [
1539
+ "toast",
1540
+ "snackbar",
1541
+ "notification"
1542
+ ],
1543
+ "designIntelligence": {
1544
+ "visualWeight": 3,
1545
+ "importance": "secondary",
1546
+ "hierarchy": "feedback",
1547
+ "spacingRules": [
1548
+ "stack toasts with gap-2"
1549
+ ],
1550
+ "typographyRules": [
1551
+ "one short sentence"
1552
+ ],
1553
+ "animationRules": [
1554
+ "brief enter/exit"
1555
+ ],
1556
+ "colorRules": [
1557
+ "semantic status tokens"
1558
+ ],
1559
+ "eyeFlow": "corner/edge of viewport",
1560
+ "compositionRules": [
1561
+ "use for transient status; form errors use form-summary"
1562
+ ],
1563
+ "commonMistakes": [
1564
+ "toasts for persistent form errors"
1565
+ ],
1566
+ "bestPractices": [
1567
+ "auto-dismiss with pause on focus/hover"
1568
+ ]
1569
+ }
1570
+ }
1571
+ ],
1572
+ "componentCount": 17,
1573
+ "tokens": {
1574
+ "version": 1,
1575
+ "tokens": [
1576
+ {
1577
+ "name": "color-text",
1578
+ "layer": "semantic",
1579
+ "usage": "text",
1580
+ "cssVariable": "--velin-color-text",
1581
+ "pairsWith": [
1582
+ "color-surface",
1583
+ "color-surface-dim"
1584
+ ],
1585
+ "contrastTarget": "aaa",
1586
+ "surfaceRole": "base",
1587
+ "description": "Primary body text on base/raised surfaces."
1588
+ },
1589
+ {
1590
+ "name": "color-text-muted",
1591
+ "layer": "semantic",
1592
+ "usage": "text-muted",
1593
+ "cssVariable": "--velin-color-text-muted",
1594
+ "pairsWith": [
1595
+ "color-surface",
1596
+ "color-surface-dim"
1597
+ ],
1598
+ "contrastTarget": "aa",
1599
+ "surfaceRole": "muted",
1600
+ "description": "Secondary text; verify contrast on muted surfaces."
1601
+ },
1602
+ {
1603
+ "name": "color-surface",
1604
+ "layer": "semantic",
1605
+ "usage": "background",
1606
+ "cssVariable": "--velin-color-surface",
1607
+ "pairsWith": [
1608
+ "color-text"
1609
+ ],
1610
+ "contrastTarget": "aaa",
1611
+ "surfaceRole": "raised",
1612
+ "description": "Raised panel background."
1613
+ },
1614
+ {
1615
+ "name": "color-surface-dim",
1616
+ "layer": "semantic",
1617
+ "usage": "background",
1618
+ "cssVariable": "--velin-color-surface-dim",
1619
+ "pairsWith": [
1620
+ "color-text"
1621
+ ],
1622
+ "contrastTarget": "aaa",
1623
+ "surfaceRole": "base",
1624
+ "description": "Dimmer page/canvas background behind raised surfaces."
1625
+ },
1626
+ {
1627
+ "name": "color-primary",
1628
+ "layer": "semantic",
1629
+ "usage": "accent",
1630
+ "cssVariable": "--velin-color-primary",
1631
+ "pairsWith": [
1632
+ "color-on-primary"
1633
+ ],
1634
+ "contrastTarget": "aaa",
1635
+ "surfaceRole": "accent",
1636
+ "description": "Brand accent for primary CTAs."
1637
+ },
1638
+ {
1639
+ "name": "color-on-primary",
1640
+ "layer": "semantic",
1641
+ "usage": "text-on-accent",
1642
+ "cssVariable": "--velin-color-on-primary",
1643
+ "pairsWith": [
1644
+ "color-primary"
1645
+ ],
1646
+ "contrastTarget": "aaa",
1647
+ "surfaceRole": "accent",
1648
+ "description": "Text/icon color on primary accent."
1649
+ },
1650
+ {
1651
+ "name": "color-border",
1652
+ "layer": "semantic",
1653
+ "usage": "border",
1654
+ "cssVariable": "--velin-color-border",
1655
+ "pairsWith": [
1656
+ "color-surface"
1657
+ ],
1658
+ "contrastTarget": "aa",
1659
+ "surfaceRole": "base",
1660
+ "description": "Default border on cards, inputs, and dividers."
1661
+ },
1662
+ {
1663
+ "name": "color-danger",
1664
+ "layer": "semantic",
1665
+ "usage": "status-danger",
1666
+ "cssVariable": "--velin-color-danger",
1667
+ "pairsWith": [
1668
+ "color-on-danger"
1669
+ ],
1670
+ "contrastTarget": "aaa",
1671
+ "surfaceRole": "accent",
1672
+ "description": "Danger/error accent for validation and destructive actions."
1673
+ },
1674
+ {
1675
+ "name": "color-on-danger",
1676
+ "layer": "semantic",
1677
+ "usage": "text-on-danger",
1678
+ "cssVariable": "--velin-color-on-danger",
1679
+ "pairsWith": [
1680
+ "color-danger"
1681
+ ],
1682
+ "contrastTarget": "aaa",
1683
+ "surfaceRole": "accent",
1684
+ "description": "Text/icon on danger accent."
1685
+ },
1686
+ {
1687
+ "name": "space-4",
1688
+ "layer": "core",
1689
+ "usage": "spacing",
1690
+ "cssVariable": "--velin-space-4",
1691
+ "pairsWith": [],
1692
+ "contrastTarget": "none",
1693
+ "description": "Default control/stack gap."
1694
+ },
1695
+ {
1696
+ "name": "space-8",
1697
+ "layer": "core",
1698
+ "usage": "spacing",
1699
+ "cssVariable": "--velin-space-8",
1700
+ "pairsWith": [],
1701
+ "contrastTarget": "none",
1702
+ "description": "Mobile section padding band."
1703
+ },
1704
+ {
1705
+ "name": "space-10",
1706
+ "layer": "core",
1707
+ "usage": "spacing",
1708
+ "cssVariable": "--velin-space-10",
1709
+ "pairsWith": [],
1710
+ "contrastTarget": "none",
1711
+ "description": "Tablet section padding band (hero constraint)."
1712
+ },
1713
+ {
1714
+ "name": "space-12",
1715
+ "layer": "core",
1716
+ "usage": "spacing",
1717
+ "cssVariable": "--velin-space-12",
1718
+ "pairsWith": [],
1719
+ "contrastTarget": "none",
1720
+ "description": "Desktop section padding band."
1721
+ },
1722
+ {
1723
+ "name": "shadow-md",
1724
+ "layer": "semantic",
1725
+ "usage": "elevation",
1726
+ "cssVariable": "--velin-shadow-md",
1727
+ "pairsWith": [
1728
+ "color-surface"
1729
+ ],
1730
+ "contrastTarget": "none",
1731
+ "surfaceRole": "raised",
1732
+ "description": "Medium elevation; dark parity via ADR 0011."
1733
+ }
1734
+ ]
1735
+ },
1736
+ "pages": [
1737
+ {
1738
+ "id": "landing",
1739
+ "name": "Landing",
1740
+ "audience": "prospects",
1741
+ "businessType": "general",
1742
+ "pageGoal": "explain offer and convert",
1743
+ "conversionGoal": "lead or signup",
1744
+ "requiredSections": [
1745
+ "hero",
1746
+ "benefits",
1747
+ "services",
1748
+ "testimonials",
1749
+ "faq",
1750
+ "cta",
1751
+ "footer"
1752
+ ],
1753
+ "optionalSections": [
1754
+ "trust-bar",
1755
+ "process",
1756
+ "pricing"
1757
+ ],
1758
+ "forbiddenSections": [],
1759
+ "seoIntent": "brand + primary offer",
1760
+ "accessibilityRisks": [
1761
+ "hero contrast",
1762
+ "form labels"
1763
+ ],
1764
+ "defaultTone": "clear-confident",
1765
+ "recommendedComponents": [
1766
+ "css-button",
1767
+ "css-card",
1768
+ "velin-accordion",
1769
+ "velin-form-summary"
1770
+ ],
1771
+ "designConstraintIds": [
1772
+ "hero",
1773
+ "faq",
1774
+ "contact"
1775
+ ],
1776
+ "promptKeywords": [
1777
+ "landing page",
1778
+ "homepage",
1779
+ "marketing site"
1780
+ ]
1781
+ },
1782
+ {
1783
+ "id": "corporate",
1784
+ "name": "Corporate",
1785
+ "audience": "stakeholders",
1786
+ "businessType": "corporate",
1787
+ "pageGoal": "trust and company overview",
1788
+ "conversionGoal": "contact",
1789
+ "requiredSections": [
1790
+ "hero",
1791
+ "benefits",
1792
+ "process",
1793
+ "testimonials",
1794
+ "cta",
1795
+ "footer"
1796
+ ],
1797
+ "optionalSections": [
1798
+ "services",
1799
+ "faq"
1800
+ ],
1801
+ "forbiddenSections": [],
1802
+ "seoIntent": "company entity",
1803
+ "accessibilityRisks": [
1804
+ "long pages without landmarks"
1805
+ ],
1806
+ "defaultTone": "formal",
1807
+ "recommendedComponents": [
1808
+ "css-nav",
1809
+ "css-card",
1810
+ "css-button"
1811
+ ],
1812
+ "designConstraintIds": [
1813
+ "hero"
1814
+ ],
1815
+ "promptKeywords": [
1816
+ "corporate",
1817
+ "company",
1818
+ "about"
1819
+ ]
1820
+ },
1821
+ {
1822
+ "id": "lawyer",
1823
+ "name": "Lawyer / Professional services",
1824
+ "audience": "clients seeking counsel",
1825
+ "businessType": "professional-services",
1826
+ "pageGoal": "credibility + consultation booking",
1827
+ "conversionGoal": "contact form",
1828
+ "requiredSections": [
1829
+ "hero",
1830
+ "trust-bar",
1831
+ "services",
1832
+ "process",
1833
+ "testimonials",
1834
+ "faq",
1835
+ "contact",
1836
+ "footer"
1837
+ ],
1838
+ "optionalSections": [
1839
+ "benefits",
1840
+ "pricing",
1841
+ "cta"
1842
+ ],
1843
+ "forbiddenSections": [],
1844
+ "seoIntent": "local professional services",
1845
+ "accessibilityRisks": [
1846
+ "form validation",
1847
+ "contrast on dark heroes"
1848
+ ],
1849
+ "defaultTone": "trustworthy-calm",
1850
+ "recommendedComponents": [
1851
+ "css-card",
1852
+ "css-button",
1853
+ "velin-accordion",
1854
+ "velin-form-summary",
1855
+ "css-input"
1856
+ ],
1857
+ "designConstraintIds": [
1858
+ "hero",
1859
+ "faq",
1860
+ "contact"
1861
+ ],
1862
+ "promptKeywords": [
1863
+ "steuerberater",
1864
+ "lawyer",
1865
+ "attorney",
1866
+ "kanzlei",
1867
+ "tax advisor",
1868
+ "professional services"
1869
+ ]
1870
+ },
1871
+ {
1872
+ "id": "healthcare",
1873
+ "name": "Healthcare",
1874
+ "audience": "patients",
1875
+ "businessType": "healthcare",
1876
+ "pageGoal": "services + appointment",
1877
+ "conversionGoal": "book / contact",
1878
+ "requiredSections": [
1879
+ "hero",
1880
+ "services",
1881
+ "process",
1882
+ "testimonials",
1883
+ "faq",
1884
+ "contact",
1885
+ "footer"
1886
+ ],
1887
+ "optionalSections": [
1888
+ "trust-bar",
1889
+ "benefits"
1890
+ ],
1891
+ "forbiddenSections": [],
1892
+ "seoIntent": "clinic / practice",
1893
+ "accessibilityRisks": [
1894
+ "reading level",
1895
+ "form a11y"
1896
+ ],
1897
+ "defaultTone": "reassuring",
1898
+ "recommendedComponents": [
1899
+ "css-card",
1900
+ "velin-accordion",
1901
+ "velin-form-summary"
1902
+ ],
1903
+ "designConstraintIds": [
1904
+ "hero",
1905
+ "faq",
1906
+ "contact"
1907
+ ],
1908
+ "promptKeywords": [
1909
+ "clinic",
1910
+ "doctor",
1911
+ "healthcare",
1912
+ "praxis"
1913
+ ]
1914
+ },
1915
+ {
1916
+ "id": "restaurant",
1917
+ "name": "Restaurant",
1918
+ "audience": "diners",
1919
+ "businessType": "hospitality",
1920
+ "pageGoal": "menu interest + reservation",
1921
+ "conversionGoal": "reserve",
1922
+ "requiredSections": [
1923
+ "hero",
1924
+ "services",
1925
+ "testimonials",
1926
+ "cta",
1927
+ "footer"
1928
+ ],
1929
+ "optionalSections": [
1930
+ "process",
1931
+ "faq",
1932
+ "trust-bar"
1933
+ ],
1934
+ "forbiddenSections": [],
1935
+ "seoIntent": "local restaurant",
1936
+ "accessibilityRisks": [
1937
+ "image-heavy pages"
1938
+ ],
1939
+ "defaultTone": "inviting",
1940
+ "recommendedComponents": [
1941
+ "css-card",
1942
+ "css-button"
1943
+ ],
1944
+ "designConstraintIds": [
1945
+ "hero"
1946
+ ],
1947
+ "promptKeywords": [
1948
+ "restaurant",
1949
+ "cafe",
1950
+ "menu"
1951
+ ]
1952
+ },
1953
+ {
1954
+ "id": "portfolio",
1955
+ "name": "Portfolio",
1956
+ "audience": "clients/hiring",
1957
+ "businessType": "creative",
1958
+ "pageGoal": "showcase work",
1959
+ "conversionGoal": "contact",
1960
+ "requiredSections": [
1961
+ "hero",
1962
+ "services",
1963
+ "testimonials",
1964
+ "cta",
1965
+ "footer"
1966
+ ],
1967
+ "optionalSections": [
1968
+ "process",
1969
+ "faq"
1970
+ ],
1971
+ "forbiddenSections": [],
1972
+ "seoIntent": "personal brand",
1973
+ "accessibilityRisks": [
1974
+ "image alts"
1975
+ ],
1976
+ "defaultTone": "expressive",
1977
+ "recommendedComponents": [
1978
+ "css-card",
1979
+ "css-button"
1980
+ ],
1981
+ "designConstraintIds": [
1982
+ "hero"
1983
+ ],
1984
+ "promptKeywords": [
1985
+ "portfolio",
1986
+ "designer",
1987
+ "photographer"
1988
+ ]
1989
+ },
1990
+ {
1991
+ "id": "agency",
1992
+ "name": "Agency",
1993
+ "audience": "business buyers",
1994
+ "businessType": "agency",
1995
+ "pageGoal": "capabilities + leads",
1996
+ "conversionGoal": "contact",
1997
+ "requiredSections": [
1998
+ "hero",
1999
+ "benefits",
2000
+ "services",
2001
+ "process",
2002
+ "testimonials",
2003
+ "cta",
2004
+ "footer"
2005
+ ],
2006
+ "optionalSections": [
2007
+ "pricing",
2008
+ "faq"
2009
+ ],
2010
+ "forbiddenSections": [],
2011
+ "seoIntent": "agency services",
2012
+ "accessibilityRisks": [
2013
+ "busy layouts"
2014
+ ],
2015
+ "defaultTone": "confident",
2016
+ "recommendedComponents": [
2017
+ "css-card",
2018
+ "css-button",
2019
+ "velin-accordion"
2020
+ ],
2021
+ "designConstraintIds": [
2022
+ "hero",
2023
+ "faq"
2024
+ ],
2025
+ "promptKeywords": [
2026
+ "agency",
2027
+ "marketing agency",
2028
+ "studio"
2029
+ ]
2030
+ },
2031
+ {
2032
+ "id": "saas",
2033
+ "name": "SaaS",
2034
+ "audience": "buyers/users",
2035
+ "businessType": "saas",
2036
+ "pageGoal": "product value + signup",
2037
+ "conversionGoal": "trial/signup",
2038
+ "requiredSections": [
2039
+ "hero",
2040
+ "benefits",
2041
+ "services",
2042
+ "pricing",
2043
+ "testimonials",
2044
+ "faq",
2045
+ "cta",
2046
+ "footer"
2047
+ ],
2048
+ "optionalSections": [
2049
+ "trust-bar",
2050
+ "process"
2051
+ ],
2052
+ "forbiddenSections": [],
2053
+ "seoIntent": "product category",
2054
+ "accessibilityRisks": [
2055
+ "pricing tables",
2056
+ "modals"
2057
+ ],
2058
+ "defaultTone": "product-led",
2059
+ "recommendedComponents": [
2060
+ "css-card",
2061
+ "css-button",
2062
+ "velin-accordion",
2063
+ "velin-modal"
2064
+ ],
2065
+ "designConstraintIds": [
2066
+ "hero",
2067
+ "faq"
2068
+ ],
2069
+ "promptKeywords": [
2070
+ "saas",
2071
+ "software",
2072
+ "app landing"
2073
+ ]
2074
+ },
2075
+ {
2076
+ "id": "docs",
2077
+ "name": "Docs",
2078
+ "audience": "developers",
2079
+ "businessType": "documentation",
2080
+ "pageGoal": "teach and reference",
2081
+ "conversionGoal": "task completion",
2082
+ "requiredSections": [
2083
+ "navbar",
2084
+ "hero",
2085
+ "footer"
2086
+ ],
2087
+ "optionalSections": [
2088
+ "faq"
2089
+ ],
2090
+ "forbiddenSections": [
2091
+ "pricing"
2092
+ ],
2093
+ "seoIntent": "technical documentation",
2094
+ "accessibilityRisks": [
2095
+ "skip links",
2096
+ "code contrast"
2097
+ ],
2098
+ "defaultTone": "technical",
2099
+ "recommendedComponents": [
2100
+ "css-nav",
2101
+ "velin-theme-toggle",
2102
+ "velin-search"
2103
+ ],
2104
+ "designConstraintIds": [],
2105
+ "promptKeywords": [
2106
+ "documentation",
2107
+ "docs site",
2108
+ "api docs"
2109
+ ]
2110
+ },
2111
+ {
2112
+ "id": "dashboard",
2113
+ "name": "Dashboard",
2114
+ "audience": "operators",
2115
+ "businessType": "app-shell",
2116
+ "pageGoal": "monitor and act",
2117
+ "conversionGoal": "task completion",
2118
+ "requiredSections": [
2119
+ "navbar",
2120
+ "footer"
2121
+ ],
2122
+ "optionalSections": [],
2123
+ "forbiddenSections": [
2124
+ "pricing",
2125
+ "testimonials"
2126
+ ],
2127
+ "seoIntent": "often noindex",
2128
+ "accessibilityRisks": [
2129
+ "dense tables",
2130
+ "live regions"
2131
+ ],
2132
+ "defaultTone": "utilitarian",
2133
+ "recommendedComponents": [
2134
+ "css-nav",
2135
+ "velin-data-table",
2136
+ "css-alert"
2137
+ ],
2138
+ "designConstraintIds": [],
2139
+ "promptKeywords": [
2140
+ "dashboard",
2141
+ "admin",
2142
+ "app shell"
2143
+ ]
2144
+ },
2145
+ {
2146
+ "id": "crm",
2147
+ "name": "CRM",
2148
+ "audience": "sales ops",
2149
+ "businessType": "crm",
2150
+ "pageGoal": "manage relationships",
2151
+ "conversionGoal": "task completion",
2152
+ "requiredSections": [
2153
+ "navbar"
2154
+ ],
2155
+ "optionalSections": [],
2156
+ "forbiddenSections": [
2157
+ "testimonials"
2158
+ ],
2159
+ "seoIntent": "app",
2160
+ "accessibilityRisks": [
2161
+ "data-dense UI"
2162
+ ],
2163
+ "defaultTone": "utilitarian",
2164
+ "recommendedComponents": [
2165
+ "velin-data-table",
2166
+ "css-input",
2167
+ "velin-form-summary"
2168
+ ],
2169
+ "designConstraintIds": [],
2170
+ "promptKeywords": [
2171
+ "crm",
2172
+ "contacts",
2173
+ "pipeline"
2174
+ ]
2175
+ },
2176
+ {
2177
+ "id": "erp",
2178
+ "name": "ERP",
2179
+ "audience": "internal ops",
2180
+ "businessType": "erp",
2181
+ "pageGoal": "operational workflows",
2182
+ "conversionGoal": "task completion",
2183
+ "requiredSections": [
2184
+ "navbar"
2185
+ ],
2186
+ "optionalSections": [],
2187
+ "forbiddenSections": [
2188
+ "pricing",
2189
+ "testimonials"
2190
+ ],
2191
+ "seoIntent": "app",
2192
+ "accessibilityRisks": [
2193
+ "complex forms"
2194
+ ],
2195
+ "defaultTone": "utilitarian",
2196
+ "recommendedComponents": [
2197
+ "velin-data-table",
2198
+ "css-input",
2199
+ "velin-dialog"
2200
+ ],
2201
+ "designConstraintIds": [],
2202
+ "promptKeywords": [
2203
+ "erp",
2204
+ "inventory",
2205
+ "operations"
2206
+ ]
2207
+ },
2208
+ {
2209
+ "id": "blog",
2210
+ "name": "Blog",
2211
+ "audience": "readers",
2212
+ "businessType": "content",
2213
+ "pageGoal": "inform and retain",
2214
+ "conversionGoal": "newsletter/contact",
2215
+ "requiredSections": [
2216
+ "navbar",
2217
+ "hero",
2218
+ "footer"
2219
+ ],
2220
+ "optionalSections": [
2221
+ "cta",
2222
+ "faq"
2223
+ ],
2224
+ "forbiddenSections": [],
2225
+ "seoIntent": "articles",
2226
+ "accessibilityRisks": [
2227
+ "reading length"
2228
+ ],
2229
+ "defaultTone": "editorial",
2230
+ "recommendedComponents": [
2231
+ "css-nav",
2232
+ "css-card"
2233
+ ],
2234
+ "designConstraintIds": [
2235
+ "hero"
2236
+ ],
2237
+ "promptKeywords": [
2238
+ "blog",
2239
+ "articles",
2240
+ "magazine"
2241
+ ]
2242
+ },
2243
+ {
2244
+ "id": "shop",
2245
+ "name": "Shop",
2246
+ "audience": "buyers",
2247
+ "businessType": "ecommerce",
2248
+ "pageGoal": "browse and purchase",
2249
+ "conversionGoal": "checkout",
2250
+ "requiredSections": [
2251
+ "navbar",
2252
+ "hero",
2253
+ "services",
2254
+ "cta",
2255
+ "footer"
2256
+ ],
2257
+ "optionalSections": [
2258
+ "testimonials",
2259
+ "faq",
2260
+ "trust-bar"
2261
+ ],
2262
+ "forbiddenSections": [],
2263
+ "seoIntent": "products",
2264
+ "accessibilityRisks": [
2265
+ "product cards",
2266
+ "filters"
2267
+ ],
2268
+ "defaultTone": "commercial",
2269
+ "recommendedComponents": [
2270
+ "css-card",
2271
+ "css-button",
2272
+ "velin-form-summary"
2273
+ ],
2274
+ "designConstraintIds": [
2275
+ "hero"
2276
+ ],
2277
+ "promptKeywords": [
2278
+ "shop",
2279
+ "store",
2280
+ "ecommerce"
2281
+ ]
2282
+ },
2283
+ {
2284
+ "id": "event",
2285
+ "name": "Event",
2286
+ "audience": "attendees",
2287
+ "businessType": "event",
2288
+ "pageGoal": "inform and register",
2289
+ "conversionGoal": "registration",
2290
+ "requiredSections": [
2291
+ "hero",
2292
+ "benefits",
2293
+ "process",
2294
+ "faq",
2295
+ "cta",
2296
+ "footer"
2297
+ ],
2298
+ "optionalSections": [
2299
+ "testimonials",
2300
+ "pricing"
2301
+ ],
2302
+ "forbiddenSections": [],
2303
+ "seoIntent": "event entity",
2304
+ "accessibilityRisks": [
2305
+ "countdown motion"
2306
+ ],
2307
+ "defaultTone": "exciting-clear",
2308
+ "recommendedComponents": [
2309
+ "css-button",
2310
+ "css-card",
2311
+ "velin-accordion"
2312
+ ],
2313
+ "designConstraintIds": [
2314
+ "hero",
2315
+ "faq"
2316
+ ],
2317
+ "promptKeywords": [
2318
+ "event",
2319
+ "conference",
2320
+ "meetup"
2321
+ ]
2322
+ },
2323
+ {
2324
+ "id": "course",
2325
+ "name": "Course",
2326
+ "audience": "learners",
2327
+ "businessType": "education",
2328
+ "pageGoal": "curriculum + enroll",
2329
+ "conversionGoal": "enroll",
2330
+ "requiredSections": [
2331
+ "hero",
2332
+ "benefits",
2333
+ "process",
2334
+ "pricing",
2335
+ "faq",
2336
+ "cta",
2337
+ "footer"
2338
+ ],
2339
+ "optionalSections": [
2340
+ "testimonials"
2341
+ ],
2342
+ "forbiddenSections": [],
2343
+ "seoIntent": "course offering",
2344
+ "accessibilityRisks": [
2345
+ "long outlines"
2346
+ ],
2347
+ "defaultTone": "instructive",
2348
+ "recommendedComponents": [
2349
+ "css-card",
2350
+ "velin-accordion",
2351
+ "css-button"
2352
+ ],
2353
+ "designConstraintIds": [
2354
+ "hero",
2355
+ "faq"
2356
+ ],
2357
+ "promptKeywords": [
2358
+ "course",
2359
+ "training",
2360
+ "workshop"
2361
+ ]
2362
+ },
2363
+ {
2364
+ "id": "community",
2365
+ "name": "Community",
2366
+ "audience": "members",
2367
+ "businessType": "community",
2368
+ "pageGoal": "belonging + join",
2369
+ "conversionGoal": "join",
2370
+ "requiredSections": [
2371
+ "hero",
2372
+ "benefits",
2373
+ "testimonials",
2374
+ "faq",
2375
+ "cta",
2376
+ "footer"
2377
+ ],
2378
+ "optionalSections": [
2379
+ "services",
2380
+ "process"
2381
+ ],
2382
+ "forbiddenSections": [],
2383
+ "seoIntent": "community brand",
2384
+ "accessibilityRisks": [
2385
+ "user content"
2386
+ ],
2387
+ "defaultTone": "welcoming",
2388
+ "recommendedComponents": [
2389
+ "css-card",
2390
+ "css-button",
2391
+ "velin-accordion"
2392
+ ],
2393
+ "designConstraintIds": [
2394
+ "hero",
2395
+ "faq"
2396
+ ],
2397
+ "promptKeywords": [
2398
+ "community",
2399
+ "forum",
2400
+ "membership"
2401
+ ]
2402
+ }
2403
+ ],
2404
+ "pageCount": 17,
2405
+ "sections": [
2406
+ {
2407
+ "id": "hero",
2408
+ "role": "hero",
2409
+ "blueprintFile": "hero-section.html",
2410
+ "inputs": [
2411
+ "title",
2412
+ "subtitle",
2413
+ "cta",
2414
+ "brand"
2415
+ ],
2416
+ "requiredContent": [
2417
+ "headline",
2418
+ "primaryCta"
2419
+ ],
2420
+ "optionalContent": [
2421
+ "image",
2422
+ "secondaryCta"
2423
+ ],
2424
+ "designRules": [
2425
+ "hero-headline-lines",
2426
+ "hero-cta-max",
2427
+ "hero-contrast"
2428
+ ],
2429
+ "a11yRules": [
2430
+ "one h1",
2431
+ "cta is real button/link"
2432
+ ],
2433
+ "seoRules": [
2434
+ "h1 matches primary intent"
2435
+ ],
2436
+ "compatiblePrev": [],
2437
+ "compatibleNext": [
2438
+ "trust-bar",
2439
+ "benefits",
2440
+ "services"
2441
+ ],
2442
+ "examplePrompts": [
2443
+ "modern hero with two CTAs"
2444
+ ],
2445
+ "commonMistakes": [
2446
+ "three CTAs",
2447
+ "headline longer than two lines"
2448
+ ]
2449
+ },
2450
+ {
2451
+ "id": "trust-bar",
2452
+ "role": "trust-bar",
2453
+ "blueprintFile": "trust-bar.html",
2454
+ "inputs": [
2455
+ "logos",
2456
+ "claim"
2457
+ ],
2458
+ "requiredContent": [
2459
+ "trustItems"
2460
+ ],
2461
+ "optionalContent": [
2462
+ "claim"
2463
+ ],
2464
+ "designRules": [],
2465
+ "a11yRules": [
2466
+ "alt text for logos"
2467
+ ],
2468
+ "seoRules": [],
2469
+ "compatiblePrev": [
2470
+ "hero"
2471
+ ],
2472
+ "compatibleNext": [
2473
+ "benefits",
2474
+ "services"
2475
+ ],
2476
+ "examplePrompts": [
2477
+ "trusted by brands bar"
2478
+ ],
2479
+ "commonMistakes": [
2480
+ "low-contrast logos"
2481
+ ]
2482
+ },
2483
+ {
2484
+ "id": "benefits",
2485
+ "role": "benefits",
2486
+ "blueprintFile": "benefits-grid.html",
2487
+ "inputs": [
2488
+ "items"
2489
+ ],
2490
+ "requiredContent": [
2491
+ "benefitItems"
2492
+ ],
2493
+ "optionalContent": [],
2494
+ "designRules": [],
2495
+ "a11yRules": [
2496
+ "headings per benefit"
2497
+ ],
2498
+ "seoRules": [],
2499
+ "compatiblePrev": [
2500
+ "hero",
2501
+ "trust-bar"
2502
+ ],
2503
+ "compatibleNext": [
2504
+ "services",
2505
+ "process"
2506
+ ],
2507
+ "examplePrompts": [
2508
+ "three benefits"
2509
+ ],
2510
+ "commonMistakes": [
2511
+ "walls of text"
2512
+ ]
2513
+ },
2514
+ {
2515
+ "id": "services",
2516
+ "role": "services",
2517
+ "blueprintFile": "services-grid.html",
2518
+ "inputs": [
2519
+ "items"
2520
+ ],
2521
+ "requiredContent": [
2522
+ "serviceItems"
2523
+ ],
2524
+ "optionalContent": [],
2525
+ "designRules": [],
2526
+ "a11yRules": [
2527
+ "card titles as headings"
2528
+ ],
2529
+ "seoRules": [
2530
+ "service names as keywords"
2531
+ ],
2532
+ "compatiblePrev": [
2533
+ "benefits",
2534
+ "trust-bar",
2535
+ "hero"
2536
+ ],
2537
+ "compatibleNext": [
2538
+ "process",
2539
+ "testimonials",
2540
+ "pricing"
2541
+ ],
2542
+ "examplePrompts": [
2543
+ "services grid for tax advisor"
2544
+ ],
2545
+ "commonMistakes": [
2546
+ "vague service titles"
2547
+ ]
2548
+ },
2549
+ {
2550
+ "id": "process",
2551
+ "role": "process",
2552
+ "blueprintFile": "process-steps.html",
2553
+ "inputs": [
2554
+ "steps"
2555
+ ],
2556
+ "requiredContent": [
2557
+ "steps"
2558
+ ],
2559
+ "optionalContent": [],
2560
+ "designRules": [],
2561
+ "a11yRules": [
2562
+ "ordered list semantics"
2563
+ ],
2564
+ "seoRules": [],
2565
+ "compatiblePrev": [
2566
+ "services",
2567
+ "benefits"
2568
+ ],
2569
+ "compatibleNext": [
2570
+ "testimonials",
2571
+ "pricing",
2572
+ "faq"
2573
+ ],
2574
+ "examplePrompts": [
2575
+ "how it works in 4 steps"
2576
+ ],
2577
+ "commonMistakes": [
2578
+ "more than 6 steps"
2579
+ ]
2580
+ },
2581
+ {
2582
+ "id": "testimonials",
2583
+ "role": "testimonials",
2584
+ "blueprintFile": "testimonials.html",
2585
+ "inputs": [
2586
+ "quotes"
2587
+ ],
2588
+ "requiredContent": [
2589
+ "quotes"
2590
+ ],
2591
+ "optionalContent": [
2592
+ "avatars"
2593
+ ],
2594
+ "designRules": [],
2595
+ "a11yRules": [
2596
+ "cite attribution"
2597
+ ],
2598
+ "seoRules": [],
2599
+ "compatiblePrev": [
2600
+ "services",
2601
+ "process"
2602
+ ],
2603
+ "compatibleNext": [
2604
+ "pricing",
2605
+ "faq",
2606
+ "contact"
2607
+ ],
2608
+ "examplePrompts": [
2609
+ "client testimonials"
2610
+ ],
2611
+ "commonMistakes": [
2612
+ "anonymous quotes only"
2613
+ ]
2614
+ },
2615
+ {
2616
+ "id": "pricing",
2617
+ "role": "pricing",
2618
+ "blueprintFile": "pricing-table.html",
2619
+ "inputs": [
2620
+ "plans"
2621
+ ],
2622
+ "requiredContent": [
2623
+ "plans"
2624
+ ],
2625
+ "optionalContent": [],
2626
+ "designRules": [],
2627
+ "a11yRules": [
2628
+ "table or card semantics clear"
2629
+ ],
2630
+ "seoRules": [],
2631
+ "compatiblePrev": [
2632
+ "services",
2633
+ "testimonials"
2634
+ ],
2635
+ "compatibleNext": [
2636
+ "faq",
2637
+ "cta"
2638
+ ],
2639
+ "examplePrompts": [
2640
+ "three pricing tiers"
2641
+ ],
2642
+ "commonMistakes": [
2643
+ "unclear currency"
2644
+ ]
2645
+ },
2646
+ {
2647
+ "id": "faq",
2648
+ "role": "faq",
2649
+ "blueprintFile": "faq-section.html",
2650
+ "inputs": [
2651
+ "items"
2652
+ ],
2653
+ "requiredContent": [
2654
+ "questions"
2655
+ ],
2656
+ "optionalContent": [],
2657
+ "designRules": [
2658
+ "faq-questions",
2659
+ "faq-pattern"
2660
+ ],
2661
+ "a11yRules": [
2662
+ "accordion keyboard support"
2663
+ ],
2664
+ "seoRules": [
2665
+ "FAQPage-ready question text"
2666
+ ],
2667
+ "compatiblePrev": [
2668
+ "testimonials",
2669
+ "pricing",
2670
+ "process"
2671
+ ],
2672
+ "compatibleNext": [
2673
+ "contact",
2674
+ "cta",
2675
+ "footer"
2676
+ ],
2677
+ "examplePrompts": [
2678
+ "FAQ with accordion"
2679
+ ],
2680
+ "commonMistakes": [
2681
+ "non-questions as titles"
2682
+ ]
2683
+ },
2684
+ {
2685
+ "id": "contact",
2686
+ "role": "contact",
2687
+ "blueprintFile": "form-contact.html",
2688
+ "inputs": [
2689
+ "fields"
2690
+ ],
2691
+ "requiredContent": [
2692
+ "name",
2693
+ "email",
2694
+ "message"
2695
+ ],
2696
+ "optionalContent": [
2697
+ "phone"
2698
+ ],
2699
+ "designRules": [
2700
+ "contact-labels",
2701
+ "contact-summary"
2702
+ ],
2703
+ "a11yRules": [
2704
+ "labels",
2705
+ "form-summary"
2706
+ ],
2707
+ "seoRules": [],
2708
+ "compatiblePrev": [
2709
+ "faq",
2710
+ "testimonials"
2711
+ ],
2712
+ "compatibleNext": [
2713
+ "footer",
2714
+ "cta"
2715
+ ],
2716
+ "examplePrompts": [
2717
+ "contact form with validation summary"
2718
+ ],
2719
+ "commonMistakes": [
2720
+ "placeholder-only labels"
2721
+ ]
2722
+ },
2723
+ {
2724
+ "id": "cta",
2725
+ "role": "cta",
2726
+ "blueprintFile": "cta-band.html",
2727
+ "inputs": [
2728
+ "title",
2729
+ "cta"
2730
+ ],
2731
+ "requiredContent": [
2732
+ "headline",
2733
+ "primaryCta"
2734
+ ],
2735
+ "optionalContent": [
2736
+ "secondaryCta"
2737
+ ],
2738
+ "designRules": [
2739
+ "hero-cta-max"
2740
+ ],
2741
+ "a11yRules": [
2742
+ "button semantics"
2743
+ ],
2744
+ "seoRules": [],
2745
+ "compatiblePrev": [
2746
+ "faq",
2747
+ "pricing",
2748
+ "testimonials"
2749
+ ],
2750
+ "compatibleNext": [
2751
+ "footer"
2752
+ ],
2753
+ "examplePrompts": [
2754
+ "final CTA band"
2755
+ ],
2756
+ "commonMistakes": [
2757
+ "competing CTAs"
2758
+ ]
2759
+ },
2760
+ {
2761
+ "id": "footer",
2762
+ "role": "footer",
2763
+ "blueprintFile": "footer-simple.html",
2764
+ "inputs": [
2765
+ "brand",
2766
+ "links"
2767
+ ],
2768
+ "requiredContent": [
2769
+ "brand"
2770
+ ],
2771
+ "optionalContent": [
2772
+ "legal",
2773
+ "social"
2774
+ ],
2775
+ "designRules": [],
2776
+ "a11yRules": [
2777
+ "contentinfo landmark"
2778
+ ],
2779
+ "seoRules": [
2780
+ "legal links"
2781
+ ],
2782
+ "compatiblePrev": [
2783
+ "cta",
2784
+ "contact",
2785
+ "faq"
2786
+ ],
2787
+ "compatibleNext": [],
2788
+ "examplePrompts": [
2789
+ "site footer"
2790
+ ],
2791
+ "commonMistakes": [
2792
+ "missing legal links on regulated niches"
2793
+ ]
2794
+ },
2795
+ {
2796
+ "id": "navbar",
2797
+ "role": "navbar",
2798
+ "blueprintFile": "navbar-header.html",
2799
+ "inputs": [
2800
+ "brand",
2801
+ "links"
2802
+ ],
2803
+ "requiredContent": [
2804
+ "brand"
2805
+ ],
2806
+ "optionalContent": [
2807
+ "cta",
2808
+ "search"
2809
+ ],
2810
+ "designRules": [],
2811
+ "a11yRules": [
2812
+ "nav landmark"
2813
+ ],
2814
+ "seoRules": [
2815
+ "internal links"
2816
+ ],
2817
+ "compatiblePrev": [],
2818
+ "compatibleNext": [
2819
+ "hero"
2820
+ ],
2821
+ "examplePrompts": [
2822
+ "marketing navbar"
2823
+ ],
2824
+ "commonMistakes": [
2825
+ "too many links"
2826
+ ]
2827
+ }
2828
+ ],
2829
+ "sectionCount": 12,
2830
+ "designConstraints": [
2831
+ {
2832
+ "id": "contact",
2833
+ "target": "section:contact",
2834
+ "rules": [
2835
+ {
2836
+ "id": "contact-labels",
2837
+ "scope": "section",
2838
+ "section": "contact",
2839
+ "rule": "Visible labels on all fields",
2840
+ "severity": "error"
2841
+ },
2842
+ {
2843
+ "id": "contact-summary",
2844
+ "scope": "section",
2845
+ "section": "contact",
2846
+ "rule": "Include velin-form-summary for errors",
2847
+ "severity": "error"
2848
+ },
2849
+ {
2850
+ "id": "contact-submit",
2851
+ "scope": "section",
2852
+ "section": "contact",
2853
+ "rule": "Single primary submit button",
2854
+ "severity": "warning"
2855
+ }
2856
+ ]
2857
+ },
2858
+ {
2859
+ "id": "faq",
2860
+ "target": "section:faq",
2861
+ "rules": [
2862
+ {
2863
+ "id": "faq-questions",
2864
+ "scope": "section",
2865
+ "section": "faq",
2866
+ "rule": "Entries must be clear interrogatives",
2867
+ "severity": "error"
2868
+ },
2869
+ {
2870
+ "id": "faq-pattern",
2871
+ "scope": "section",
2872
+ "section": "faq",
2873
+ "rule": "Use accordion/disclosure, not long marketing paragraphs",
2874
+ "severity": "error"
2875
+ },
2876
+ {
2877
+ "id": "faq-count",
2878
+ "scope": "section",
2879
+ "section": "faq",
2880
+ "rule": "Prefer 5–8 high-intent FAQs",
2881
+ "severity": "info"
2882
+ }
2883
+ ]
2884
+ },
2885
+ {
2886
+ "id": "hero",
2887
+ "target": "section:hero",
2888
+ "rules": [
2889
+ {
2890
+ "id": "hero-headline-lines",
2891
+ "scope": "section",
2892
+ "section": "hero",
2893
+ "rule": "Headline max 2 lines on desktop",
2894
+ "severity": "error"
2895
+ },
2896
+ {
2897
+ "id": "hero-cta-max",
2898
+ "scope": "section",
2899
+ "section": "hero",
2900
+ "rule": "Maximum 2 CTAs",
2901
+ "severity": "error"
2902
+ },
2903
+ {
2904
+ "id": "hero-image-side",
2905
+ "scope": "section",
2906
+ "section": "hero",
2907
+ "rule": "Image left OR right, not competing dual heroes",
2908
+ "severity": "warning"
2909
+ },
2910
+ {
2911
+ "id": "hero-padding",
2912
+ "scope": "section",
2913
+ "section": "hero",
2914
+ "rule": "Section padding by breakpoint",
2915
+ "breakpoints": {
2916
+ "mobile": "var(--velin-space-8)",
2917
+ "tablet": "var(--velin-space-10)",
2918
+ "desktop": "var(--velin-space-12)"
2919
+ },
2920
+ "severity": "warning"
2921
+ },
2922
+ {
2923
+ "id": "hero-contrast",
2924
+ "scope": "section",
2925
+ "section": "hero",
2926
+ "rule": "Text/surface pairs must meet contrast contract",
2927
+ "severity": "error"
2928
+ },
2929
+ {
2930
+ "id": "hero-motion",
2931
+ "scope": "section",
2932
+ "section": "hero",
2933
+ "rule": "Animation only when motion-safe",
2934
+ "severity": "warning"
2935
+ },
2936
+ {
2937
+ "id": "hero-container",
2938
+ "scope": "section",
2939
+ "section": "hero",
2940
+ "rule": "Content inside documented container width",
2941
+ "severity": "warning"
2942
+ }
2943
+ ]
2944
+ }
2945
+ ],
2946
+ "schemas": [
2947
+ "schemas/component-knowledge.schema.json",
2948
+ "schemas/design-intelligence.schema.json",
2949
+ "schemas/design-constraint.schema.json",
2950
+ "schemas/page-template.schema.json",
2951
+ "schemas/section.schema.json",
2952
+ "schemas/review-report.schema.json",
2953
+ "schemas/token-graph.schema.json",
2954
+ "schemas/design-rule.schema.json",
2955
+ "schemas/skill-record.schema.json",
2956
+ "schemas/skill-registry.schema.json",
2957
+ "schemas/skill-pack.schema.json",
2958
+ "schemas/skill-graph.schema.json",
2959
+ "schemas/skill-bundle.schema.json",
2960
+ "schemas/skill-template.schema.json",
2961
+ "schemas/skill-project.schema.json"
2962
+ ]
2963
+ },
2964
+ "skills": {
2965
+ "count": 40,
2966
+ "categories": [
2967
+ "accessibility",
2968
+ "ai-workflows",
2969
+ "components",
2970
+ "design",
2971
+ "developer-experience",
2972
+ "development",
2973
+ "documentation",
2974
+ "migration",
2975
+ "motion",
2976
+ "performance",
2977
+ "release",
2978
+ "review",
2979
+ "security",
2980
+ "testing",
2981
+ "themes",
2982
+ "utilities"
2983
+ ],
2984
+ "capabilities": [
2985
+ "accessibility",
2986
+ "ai-orchestration",
2987
+ "build",
2988
+ "documentation",
2989
+ "dx",
2990
+ "migrate",
2991
+ "motion",
2992
+ "performance",
2993
+ "release",
2994
+ "review",
2995
+ "security",
2996
+ "seo",
2997
+ "test",
2998
+ "theme"
2999
+ ],
3000
+ "items": [
3001
+ {
3002
+ "id": "velin-design-hero-compose",
3003
+ "category": "design",
3004
+ "priority": "core",
3005
+ "status": "beta",
3006
+ "confidence": "high",
3007
+ "capabilities": [
3008
+ "build",
3009
+ "review"
3010
+ ]
3011
+ },
3012
+ {
3013
+ "id": "velin-design-section-rhythm",
3014
+ "category": "design",
3015
+ "priority": "recommended",
3016
+ "status": "beta",
3017
+ "confidence": "high",
3018
+ "capabilities": [
3019
+ "build"
3020
+ ]
3021
+ },
3022
+ {
3023
+ "id": "velin-design-surface-roles",
3024
+ "category": "design",
3025
+ "priority": "recommended",
3026
+ "status": "beta",
3027
+ "confidence": "medium",
3028
+ "capabilities": [
3029
+ "build",
3030
+ "theme"
3031
+ ]
3032
+ },
3033
+ {
3034
+ "id": "velin-dev-plan-first",
3035
+ "category": "development",
3036
+ "priority": "core",
3037
+ "status": "stable",
3038
+ "confidence": "high",
3039
+ "capabilities": [
3040
+ "ai-orchestration",
3041
+ "build"
3042
+ ]
3043
+ },
3044
+ {
3045
+ "id": "velin-dev-page-scaffold",
3046
+ "category": "development",
3047
+ "priority": "core",
3048
+ "status": "beta",
3049
+ "confidence": "high",
3050
+ "capabilities": [
3051
+ "build"
3052
+ ]
3053
+ },
3054
+ {
3055
+ "id": "velin-dev-component-wire",
3056
+ "category": "development",
3057
+ "priority": "recommended",
3058
+ "status": "beta",
3059
+ "confidence": "medium",
3060
+ "capabilities": [
3061
+ "build"
3062
+ ]
3063
+ },
3064
+ {
3065
+ "id": "velin-components-select-compose",
3066
+ "category": "components",
3067
+ "priority": "core",
3068
+ "status": "stable",
3069
+ "confidence": "high",
3070
+ "capabilities": [
3071
+ "build"
3072
+ ]
3073
+ },
3074
+ {
3075
+ "id": "velin-components-api-contract",
3076
+ "category": "components",
3077
+ "priority": "recommended",
3078
+ "status": "beta",
3079
+ "confidence": "high",
3080
+ "capabilities": [
3081
+ "documentation",
3082
+ "review"
3083
+ ]
3084
+ },
3085
+ {
3086
+ "id": "velin-components-recipe",
3087
+ "category": "components",
3088
+ "priority": "recommended",
3089
+ "status": "beta",
3090
+ "confidence": "medium",
3091
+ "capabilities": [
3092
+ "build",
3093
+ "documentation"
3094
+ ]
3095
+ },
3096
+ {
3097
+ "id": "velin-components-accessibility-map",
3098
+ "category": "components",
3099
+ "priority": "advanced",
3100
+ "status": "beta",
3101
+ "confidence": "medium",
3102
+ "capabilities": [
3103
+ "accessibility",
3104
+ "documentation"
3105
+ ]
3106
+ },
3107
+ {
3108
+ "id": "velin-utilities-layout-apply",
3109
+ "category": "utilities",
3110
+ "priority": "core",
3111
+ "status": "stable",
3112
+ "confidence": "high",
3113
+ "capabilities": [
3114
+ "build"
3115
+ ]
3116
+ },
3117
+ {
3118
+ "id": "velin-utilities-prefix-fix",
3119
+ "category": "utilities",
3120
+ "priority": "recommended",
3121
+ "status": "stable",
3122
+ "confidence": "high",
3123
+ "capabilities": [
3124
+ "migrate"
3125
+ ]
3126
+ },
3127
+ {
3128
+ "id": "velin-utilities-token-map",
3129
+ "category": "utilities",
3130
+ "priority": "advanced",
3131
+ "status": "beta",
3132
+ "confidence": "medium",
3133
+ "capabilities": [
3134
+ "theme",
3135
+ "documentation"
3136
+ ]
3137
+ },
3138
+ {
3139
+ "id": "velin-themes-apply-token",
3140
+ "category": "themes",
3141
+ "priority": "core",
3142
+ "status": "stable",
3143
+ "confidence": "high",
3144
+ "capabilities": [
3145
+ "theme",
3146
+ "build"
3147
+ ]
3148
+ },
3149
+ {
3150
+ "id": "velin-themes-contrast-check",
3151
+ "category": "themes",
3152
+ "priority": "recommended",
3153
+ "status": "beta",
3154
+ "confidence": "high",
3155
+ "capabilities": [
3156
+ "accessibility",
3157
+ "theme",
3158
+ "review"
3159
+ ]
3160
+ },
3161
+ {
3162
+ "id": "velin-motion-reduced-safe",
3163
+ "category": "motion",
3164
+ "priority": "core",
3165
+ "status": "stable",
3166
+ "confidence": "high",
3167
+ "capabilities": [
3168
+ "motion",
3169
+ "accessibility"
3170
+ ]
3171
+ },
3172
+ {
3173
+ "id": "velin-motion-reveal-feedback",
3174
+ "category": "motion",
3175
+ "priority": "recommended",
3176
+ "status": "beta",
3177
+ "confidence": "medium",
3178
+ "capabilities": [
3179
+ "motion",
3180
+ "build"
3181
+ ]
3182
+ },
3183
+ {
3184
+ "id": "velin-a11y-page-checklist",
3185
+ "category": "accessibility",
3186
+ "priority": "core",
3187
+ "status": "stable",
3188
+ "confidence": "high",
3189
+ "capabilities": [
3190
+ "accessibility",
3191
+ "review"
3192
+ ]
3193
+ },
3194
+ {
3195
+ "id": "velin-a11y-scan-fix",
3196
+ "category": "accessibility",
3197
+ "priority": "core",
3198
+ "status": "stable",
3199
+ "confidence": "high",
3200
+ "capabilities": [
3201
+ "accessibility",
3202
+ "review"
3203
+ ]
3204
+ },
3205
+ {
3206
+ "id": "velin-a11y-focus-keyboard",
3207
+ "category": "accessibility",
3208
+ "priority": "recommended",
3209
+ "status": "beta",
3210
+ "confidence": "high",
3211
+ "capabilities": [
3212
+ "accessibility",
3213
+ "test"
3214
+ ]
3215
+ },
3216
+ {
3217
+ "id": "velin-testing-a11y-suite",
3218
+ "category": "testing",
3219
+ "priority": "recommended",
3220
+ "status": "stable",
3221
+ "confidence": "high",
3222
+ "capabilities": [
3223
+ "test",
3224
+ "accessibility"
3225
+ ]
3226
+ },
3227
+ {
3228
+ "id": "velin-testing-visual-smoke",
3229
+ "category": "testing",
3230
+ "priority": "advanced",
3231
+ "status": "beta",
3232
+ "confidence": "medium",
3233
+ "capabilities": [
3234
+ "test",
3235
+ "review"
3236
+ ]
3237
+ },
3238
+ {
3239
+ "id": "velin-review-page-gate",
3240
+ "category": "review",
3241
+ "priority": "core",
3242
+ "status": "stable",
3243
+ "confidence": "high",
3244
+ "capabilities": [
3245
+ "review"
3246
+ ]
3247
+ },
3248
+ {
3249
+ "id": "velin-review-conversion-hero",
3250
+ "category": "review",
3251
+ "priority": "recommended",
3252
+ "status": "beta",
3253
+ "confidence": "medium",
3254
+ "capabilities": [
3255
+ "review",
3256
+ "seo"
3257
+ ]
3258
+ },
3259
+ {
3260
+ "id": "velin-review-seo-meta",
3261
+ "category": "review",
3262
+ "priority": "recommended",
3263
+ "status": "stable",
3264
+ "confidence": "high",
3265
+ "capabilities": [
3266
+ "review",
3267
+ "seo"
3268
+ ]
3269
+ },
3270
+ {
3271
+ "id": "velin-docs-component-guide",
3272
+ "category": "documentation",
3273
+ "priority": "recommended",
3274
+ "status": "beta",
3275
+ "confidence": "high",
3276
+ "capabilities": [
3277
+ "documentation"
3278
+ ]
3279
+ },
3280
+ {
3281
+ "id": "velin-docs-generate-api",
3282
+ "category": "documentation",
3283
+ "priority": "core",
3284
+ "status": "stable",
3285
+ "confidence": "high",
3286
+ "capabilities": [
3287
+ "documentation"
3288
+ ]
3289
+ },
3290
+ {
3291
+ "id": "velin-migration-prefix-classes",
3292
+ "category": "migration",
3293
+ "priority": "core",
3294
+ "status": "stable",
3295
+ "confidence": "high",
3296
+ "capabilities": [
3297
+ "migrate"
3298
+ ]
3299
+ },
3300
+ {
3301
+ "id": "velin-migration-legacy-wc",
3302
+ "category": "migration",
3303
+ "priority": "recommended",
3304
+ "status": "beta",
3305
+ "confidence": "high",
3306
+ "capabilities": [
3307
+ "migrate",
3308
+ "review"
3309
+ ]
3310
+ },
3311
+ {
3312
+ "id": "velin-release-changelog-sync",
3313
+ "category": "release",
3314
+ "priority": "recommended",
3315
+ "status": "stable",
3316
+ "confidence": "high",
3317
+ "capabilities": [
3318
+ "release",
3319
+ "documentation"
3320
+ ]
3321
+ },
3322
+ {
3323
+ "id": "velin-release-meta-rebuild",
3324
+ "category": "release",
3325
+ "priority": "core",
3326
+ "status": "stable",
3327
+ "confidence": "high",
3328
+ "capabilities": [
3329
+ "release",
3330
+ "ai-orchestration"
3331
+ ]
3332
+ },
3333
+ {
3334
+ "id": "velin-dx-project-init",
3335
+ "category": "developer-experience",
3336
+ "priority": "core",
3337
+ "status": "stable",
3338
+ "confidence": "high",
3339
+ "capabilities": [
3340
+ "dx",
3341
+ "build"
3342
+ ]
3343
+ },
3344
+ {
3345
+ "id": "velin-dx-doctor-setup",
3346
+ "category": "developer-experience",
3347
+ "priority": "advanced",
3348
+ "status": "experimental",
3349
+ "confidence": "medium",
3350
+ "capabilities": [
3351
+ "dx",
3352
+ "review"
3353
+ ]
3354
+ },
3355
+ {
3356
+ "id": "velin-perf-audit-fix",
3357
+ "category": "performance",
3358
+ "priority": "recommended",
3359
+ "status": "stable",
3360
+ "confidence": "high",
3361
+ "capabilities": [
3362
+ "performance",
3363
+ "review"
3364
+ ]
3365
+ },
3366
+ {
3367
+ "id": "velin-perf-runtime-tree-shake",
3368
+ "category": "performance",
3369
+ "priority": "advanced",
3370
+ "status": "beta",
3371
+ "confidence": "medium",
3372
+ "capabilities": [
3373
+ "performance",
3374
+ "build"
3375
+ ]
3376
+ },
3377
+ {
3378
+ "id": "velin-security-scan-pii",
3379
+ "category": "security",
3380
+ "priority": "core",
3381
+ "status": "stable",
3382
+ "confidence": "high",
3383
+ "capabilities": [
3384
+ "security",
3385
+ "review"
3386
+ ]
3387
+ },
3388
+ {
3389
+ "id": "velin-security-sanitize-html",
3390
+ "category": "security",
3391
+ "priority": "recommended",
3392
+ "status": "stable",
3393
+ "confidence": "high",
3394
+ "capabilities": [
3395
+ "security",
3396
+ "build"
3397
+ ]
3398
+ },
3399
+ {
3400
+ "id": "velin-ai-agent-briefing",
3401
+ "category": "ai-workflows",
3402
+ "priority": "core",
3403
+ "status": "beta",
3404
+ "confidence": "high",
3405
+ "capabilities": [
3406
+ "ai-orchestration",
3407
+ "documentation"
3408
+ ]
3409
+ },
3410
+ {
3411
+ "id": "velin-ai-plan-scaffold-review",
3412
+ "category": "ai-workflows",
3413
+ "priority": "core",
3414
+ "status": "beta",
3415
+ "confidence": "high",
3416
+ "capabilities": [
3417
+ "ai-orchestration",
3418
+ "build",
3419
+ "review"
3420
+ ]
3421
+ },
3422
+ {
3423
+ "id": "velin-ai-skill-authoring",
3424
+ "category": "ai-workflows",
3425
+ "priority": "advanced",
3426
+ "status": "beta",
3427
+ "confidence": "medium",
3428
+ "capabilities": [
3429
+ "ai-orchestration",
3430
+ "documentation"
3431
+ ]
3432
+ }
3433
+ ]
3434
+ },
3435
+ "skillPacks": [
3436
+ {
3437
+ "id": "frontend",
3438
+ "name": "Frontend Pack",
3439
+ "version": "1.0.0",
3440
+ "priority": "core",
3441
+ "skills": [
3442
+ "velin-dx-project-init",
3443
+ "velin-dev-plan-first",
3444
+ "velin-dev-page-scaffold",
3445
+ "velin-components-select-compose",
3446
+ "velin-utilities-layout-apply"
3447
+ ]
3448
+ },
3449
+ {
3450
+ "id": "design",
3451
+ "name": "Design Pack",
3452
+ "version": "1.0.0",
3453
+ "priority": "recommended",
3454
+ "skills": [
3455
+ "velin-design-hero-compose",
3456
+ "velin-design-section-rhythm",
3457
+ "velin-design-surface-roles",
3458
+ "velin-themes-apply-token",
3459
+ "velin-motion-reduced-safe"
3460
+ ]
3461
+ },
3462
+ {
3463
+ "id": "accessibility",
3464
+ "name": "Accessibility Pack",
3465
+ "version": "1.0.0",
3466
+ "priority": "core",
3467
+ "skills": [
3468
+ "velin-a11y-page-checklist",
3469
+ "velin-a11y-scan-fix",
3470
+ "velin-a11y-focus-keyboard",
3471
+ "velin-testing-a11y-suite"
3472
+ ]
3473
+ },
3474
+ {
3475
+ "id": "documentation",
3476
+ "name": "Documentation Pack",
3477
+ "version": "1.0.0",
3478
+ "priority": "recommended",
3479
+ "skills": [
3480
+ "velin-docs-component-guide",
3481
+ "velin-docs-generate-api",
3482
+ "velin-release-changelog-sync"
3483
+ ]
3484
+ },
3485
+ {
3486
+ "id": "review",
3487
+ "name": "Review Pack",
3488
+ "version": "1.0.0",
3489
+ "priority": "core",
3490
+ "skills": [
3491
+ "velin-review-page-gate",
3492
+ "velin-review-conversion-hero",
3493
+ "velin-review-seo-meta",
3494
+ "velin-security-scan-pii"
3495
+ ]
3496
+ },
3497
+ {
3498
+ "id": "enterprise",
3499
+ "name": "Enterprise Pack",
3500
+ "version": "1.0.0",
3501
+ "priority": "advanced",
3502
+ "skills": [
3503
+ "velin-security-scan-pii",
3504
+ "velin-security-sanitize-html",
3505
+ "velin-perf-audit-fix",
3506
+ "velin-migration-prefix-classes",
3507
+ "velin-release-meta-rebuild"
3508
+ ]
3509
+ }
3510
+ ],
3511
+ "workflowGraphs": [
3512
+ {
3513
+ "id": "landingpage",
3514
+ "name": "Landing Page Workflow",
3515
+ "entry": "plan",
3516
+ "nodeCount": 8,
3517
+ "edgeCount": 8
3518
+ },
3519
+ {
3520
+ "id": "component-ship",
3521
+ "name": "Component Ship Workflow",
3522
+ "entry": "select",
3523
+ "nodeCount": 5,
3524
+ "edgeCount": 4
3525
+ },
3526
+ {
3527
+ "id": "release-gate",
3528
+ "name": "Release Gate Workflow",
3529
+ "entry": "review",
3530
+ "nodeCount": 5,
3531
+ "edgeCount": 5
3532
+ }
3533
+ ],
3534
+ "bundles": [
3535
+ {
3536
+ "id": "landing-starter",
3537
+ "origin": "official",
3538
+ "packs": [
3539
+ "frontend",
3540
+ "design",
3541
+ "review"
3542
+ ],
3543
+ "graphs": [
3544
+ "landingpage"
3545
+ ],
3546
+ "templates": [
3547
+ "landing-page"
3548
+ ],
3549
+ "docs": [
3550
+ "docs/guides/ai-skills.html"
3551
+ ]
3552
+ },
3553
+ {
3554
+ "id": "review-suite",
3555
+ "origin": "official",
3556
+ "packs": [
3557
+ "accessibility",
3558
+ "review"
3559
+ ],
3560
+ "graphs": [
3561
+ "release-gate"
3562
+ ],
3563
+ "templates": [],
3564
+ "docs": [
3565
+ "docs/guides/ai-skills.html"
3566
+ ]
3567
+ }
3568
+ ],
3569
+ "templates": [
3570
+ {
3571
+ "id": "landing-page",
3572
+ "workflowGraph": "landingpage",
3573
+ "packs": [
3574
+ "frontend",
3575
+ "design"
3576
+ ],
3577
+ "theme": "default",
3578
+ "demo": "samples/landing.html",
3579
+ "docs": [
3580
+ "docs/guides/prompt-scaffolding.html",
3581
+ "docs/guides/landing-15-min.html"
3582
+ ],
3583
+ "starterFiles": [
3584
+ "templates/vite-velinstyle/index.html"
3585
+ ],
3586
+ "defaults": {
3587
+ "pageIntent": "marketing-landing",
3588
+ "sections": [
3589
+ "hero",
3590
+ "features",
3591
+ "faq",
3592
+ "contact"
3593
+ ]
3594
+ }
3595
+ },
3596
+ {
3597
+ "id": "marketing-website",
3598
+ "workflowGraph": "landingpage",
3599
+ "packs": [
3600
+ "frontend",
3601
+ "design",
3602
+ "review"
3603
+ ],
3604
+ "theme": "default",
3605
+ "demo": "samples/landing.html",
3606
+ "docs": [
3607
+ "docs/guides/prompt-scaffolding.html",
3608
+ "docs/guides/landing-15-min.html"
3609
+ ],
3610
+ "starterFiles": [
3611
+ "templates/vite-velinstyle/index.html"
3612
+ ],
3613
+ "defaults": {
3614
+ "pageIntent": "marketing-site",
3615
+ "sections": [
3616
+ "hero",
3617
+ "benefits",
3618
+ "proof",
3619
+ "faq",
3620
+ "contact"
3621
+ ]
3622
+ }
3623
+ },
3624
+ {
3625
+ "id": "documentation-portal",
3626
+ "workflowGraph": "component-ship",
3627
+ "packs": [
3628
+ "documentation",
3629
+ "review"
3630
+ ],
3631
+ "theme": "default",
3632
+ "demo": "docs/index.html",
3633
+ "docs": [
3634
+ "docs/guides/ai-skills.html",
3635
+ "docs/guides/prompt-scaffolding.html"
3636
+ ],
3637
+ "starterFiles": [
3638
+ "templates/vite-velinstyle/index.html"
3639
+ ],
3640
+ "defaults": {
3641
+ "pageIntent": "docs-portal",
3642
+ "sections": [
3643
+ "hero",
3644
+ "toc",
3645
+ "examples",
3646
+ "faq"
3647
+ ]
3648
+ }
3649
+ },
3650
+ {
3651
+ "id": "admin-panel",
3652
+ "workflowGraph": "release-gate",
3653
+ "packs": [
3654
+ "enterprise",
3655
+ "review"
3656
+ ],
3657
+ "theme": "midnight",
3658
+ "demo": "samples/dashboard.html",
3659
+ "docs": [
3660
+ "docs/guides/ai-skills.html",
3661
+ "docs/guides/prompt-scaffolding.html"
3662
+ ],
3663
+ "starterFiles": [
3664
+ "templates/vite-velinstyle/index.html"
3665
+ ],
3666
+ "defaults": {
3667
+ "pageIntent": "admin-panel",
3668
+ "sections": [
3669
+ "kpis",
3670
+ "table",
3671
+ "forms"
3672
+ ]
3673
+ }
3674
+ },
3675
+ {
3676
+ "id": "blog",
3677
+ "workflowGraph": "landingpage",
3678
+ "packs": [
3679
+ "frontend",
3680
+ "review"
3681
+ ],
3682
+ "theme": "default",
3683
+ "demo": "samples/blog.html",
3684
+ "docs": [
3685
+ "docs/guides/ai-skills.html",
3686
+ "docs/guides/prompt-scaffolding.html"
3687
+ ],
3688
+ "starterFiles": [
3689
+ "templates/vite-velinstyle/index.html"
3690
+ ],
3691
+ "defaults": {
3692
+ "pageIntent": "blog",
3693
+ "sections": [
3694
+ "hero",
3695
+ "posts",
3696
+ "faq",
3697
+ "contact"
3698
+ ]
3699
+ }
3700
+ },
3701
+ {
3702
+ "id": "ecommerce-shop",
3703
+ "workflowGraph": "landingpage",
3704
+ "packs": [
3705
+ "frontend",
3706
+ "review",
3707
+ "enterprise"
3708
+ ],
3709
+ "theme": "default",
3710
+ "demo": "samples/ecommerce.html",
3711
+ "docs": [
3712
+ "docs/guides/ecommerce.html",
3713
+ "docs/guides/prompt-scaffolding.html"
3714
+ ],
3715
+ "starterFiles": [
3716
+ "templates/vite-velinstyle/index.html"
3717
+ ],
3718
+ "defaults": {
3719
+ "pageIntent": "shop",
3720
+ "sections": [
3721
+ "hero",
3722
+ "products",
3723
+ "proof",
3724
+ "faq"
3725
+ ]
3726
+ }
3727
+ },
3728
+ {
3729
+ "id": "portfolio",
3730
+ "workflowGraph": "landingpage",
3731
+ "packs": [
3732
+ "design",
3733
+ "frontend"
3734
+ ],
3735
+ "theme": "soft",
3736
+ "demo": "samples/portfolio.html",
3737
+ "docs": [
3738
+ "docs/guides/ai-skills.html",
3739
+ "docs/guides/prompt-scaffolding.html"
3740
+ ],
3741
+ "starterFiles": [
3742
+ "templates/vite-velinstyle/index.html"
3743
+ ],
3744
+ "defaults": {
3745
+ "pageIntent": "portfolio",
3746
+ "sections": [
3747
+ "hero",
3748
+ "projects",
3749
+ "about",
3750
+ "contact"
3751
+ ]
3752
+ }
3753
+ },
3754
+ {
3755
+ "id": "laravel-dashboard",
3756
+ "workflowGraph": "release-gate",
3757
+ "packs": [
3758
+ "enterprise",
3759
+ "frontend"
3760
+ ],
3761
+ "theme": "midnight",
3762
+ "demo": "samples/dashboard.html",
3763
+ "docs": [
3764
+ "docs/guides/laravel.html"
3765
+ ],
3766
+ "starterFiles": [
3767
+ "templates/vite-velinstyle/index.html"
3768
+ ],
3769
+ "defaults": {
3770
+ "pageIntent": "dashboard",
3771
+ "sections": [
3772
+ "kpis",
3773
+ "table",
3774
+ "forms"
3775
+ ]
3776
+ }
3777
+ }
3778
+ ],
3779
+ "projectSkills": [
3780
+ {
3781
+ "id": "marketing-website",
3782
+ "name": "Marketing Website",
3783
+ "priority": "recommended",
3784
+ "workflowGraph": "landingpage",
3785
+ "packs": [
3786
+ "frontend",
3787
+ "design",
3788
+ "review"
3789
+ ],
3790
+ "skills": [
3791
+ "velin-ai-plan-scaffold-review",
3792
+ "velin-review-conversion-hero"
3793
+ ],
3794
+ "optimizedFor": [
3795
+ "cursor",
3796
+ "claude-code"
3797
+ ]
3798
+ },
3799
+ {
3800
+ "id": "documentation-portal",
3801
+ "name": "Documentation Portal",
3802
+ "priority": "recommended",
3803
+ "workflowGraph": "component-ship",
3804
+ "packs": [
3805
+ "documentation",
3806
+ "review"
3807
+ ],
3808
+ "skills": [
3809
+ "velin-docs-generate-api",
3810
+ "velin-ai-agent-briefing"
3811
+ ],
3812
+ "optimizedFor": [
3813
+ "cursor",
3814
+ "vscode"
3815
+ ]
3816
+ },
3817
+ {
3818
+ "id": "admin-panel",
3819
+ "name": "Admin Panel",
3820
+ "priority": "recommended",
3821
+ "workflowGraph": "release-gate",
3822
+ "packs": [
3823
+ "enterprise",
3824
+ "review"
3825
+ ],
3826
+ "skills": [
3827
+ "velin-perf-audit-fix",
3828
+ "velin-security-scan-pii"
3829
+ ],
3830
+ "optimizedFor": [
3831
+ "cursor"
3832
+ ]
3833
+ },
3834
+ {
3835
+ "id": "landing-page",
3836
+ "name": "Landing Page",
3837
+ "priority": "core",
3838
+ "workflowGraph": "landingpage",
3839
+ "packs": [
3840
+ "frontend",
3841
+ "design"
3842
+ ],
3843
+ "skills": [
3844
+ "velin-review-conversion-hero"
3845
+ ],
3846
+ "optimizedFor": [
3847
+ "cursor",
3848
+ "windsurf"
3849
+ ]
3850
+ },
3851
+ {
3852
+ "id": "blog",
3853
+ "name": "Blog",
3854
+ "priority": "recommended",
3855
+ "workflowGraph": "landingpage",
3856
+ "packs": [
3857
+ "frontend",
3858
+ "review"
3859
+ ],
3860
+ "skills": [
3861
+ "velin-review-seo-meta"
3862
+ ],
3863
+ "optimizedFor": [
3864
+ "cursor"
3865
+ ]
3866
+ },
3867
+ {
3868
+ "id": "ecommerce-shop",
3869
+ "name": "E-Commerce Shop",
3870
+ "priority": "advanced",
3871
+ "workflowGraph": "landingpage",
3872
+ "packs": [
3873
+ "enterprise",
3874
+ "review"
3875
+ ],
3876
+ "skills": [
3877
+ "velin-security-sanitize-html",
3878
+ "velin-review-conversion-hero"
3879
+ ],
3880
+ "optimizedFor": [
3881
+ "cursor"
3882
+ ]
3883
+ },
3884
+ {
3885
+ "id": "portfolio",
3886
+ "name": "Portfolio",
3887
+ "priority": "recommended",
3888
+ "workflowGraph": "landingpage",
3889
+ "packs": [
3890
+ "design",
3891
+ "frontend"
3892
+ ],
3893
+ "skills": [
3894
+ "velin-motion-reveal-feedback"
3895
+ ],
3896
+ "optimizedFor": [
3897
+ "cursor",
3898
+ "vscode"
3899
+ ]
3900
+ },
3901
+ {
3902
+ "id": "laravel-dashboard",
3903
+ "name": "Laravel Dashboard",
3904
+ "priority": "advanced",
3905
+ "workflowGraph": "release-gate",
3906
+ "packs": [
3907
+ "enterprise",
3908
+ "frontend"
3909
+ ],
3910
+ "skills": [
3911
+ "velin-dx-project-init"
3912
+ ],
3913
+ "optimizedFor": [
3914
+ "cursor",
3915
+ "claude-code"
3916
+ ]
3917
+ }
3918
+ ],
132
3919
  "attributes": {
133
3920
  "names": [
134
3921
  "velin-accordion",
@@ -136,6 +3923,7 @@
136
3923
  "velin-code",
137
3924
  "velin-copy",
138
3925
  "velin-counter",
3926
+ "velin-disclosure",
139
3927
  "velin-fade",
140
3928
  "velin-grid",
141
3929
  "velin-highlight",
@@ -157,23 +3945,29 @@
157
3945
  "velin-stagger",
158
3946
  "velin-tabs",
159
3947
  "velin-theme",
160
- "velin-tooltip"
3948
+ "velin-tooltip",
3949
+ "velin-transparency"
161
3950
  ],
162
- "count": 27
3951
+ "count": 29
163
3952
  },
164
3953
  "cli": {
165
3954
  "commands": [
166
3955
  {
167
3956
  "name": "init",
168
- "summary": "Create velinstyle.config.js",
3957
+ "summary": "Create velinstyle.config.js, optional vendor copy, and starter HTML with reveal/sprite defaults",
169
3958
  "flags": [],
170
3959
  "example": "velinstyle init"
171
3960
  },
172
3961
  {
173
3962
  "name": "build",
174
3963
  "summary": "Build custom CSS with selected layers from config",
175
- "flags": [],
176
- "example": "velinstyle build"
3964
+ "flags": [
3965
+ "--output",
3966
+ "-o",
3967
+ "--minify",
3968
+ "--preset"
3969
+ ],
3970
+ "example": "velinstyle build --preset lite -o ./lite.css"
177
3971
  },
178
3972
  {
179
3973
  "name": "themes",
@@ -204,7 +3998,7 @@
204
3998
  },
205
3999
  {
206
4000
  "name": "scan",
207
- "summary": "Security, accessibility, CSS, and PII scanner",
4001
+ "summary": "Security, accessibility, CSS, and PII scanner (directory or single file)",
208
4002
  "flags": [
209
4003
  "--format",
210
4004
  "--severity",
@@ -213,7 +4007,7 @@
213
4007
  "--fix-dry-run",
214
4008
  "--fix-lang"
215
4009
  ],
216
- "example": "velinstyle scan . --only pii --fix-dry-run"
4010
+ "example": "velinstyle scan index.html"
217
4011
  },
218
4012
  {
219
4013
  "name": "prefix",
@@ -227,19 +4021,59 @@
227
4021
  },
228
4022
  {
229
4023
  "name": "blueprint",
230
- "summary": "Print HTML blueprint snippets",
4024
+ "summary": "Print HTML blueprint snippets; --strict fails on classes missing from CSS",
231
4025
  "flags": [
232
4026
  "--output",
233
- "-o"
4027
+ "-o",
4028
+ "--strict"
234
4029
  ],
235
4030
  "subcommands": [
236
4031
  "list"
237
4032
  ],
238
- "example": "velinstyle blueprint modal -o snippet.html"
4033
+ "example": "velinstyle blueprint modal -o snippet.html --strict"
4034
+ },
4035
+ {
4036
+ "name": "create",
4037
+ "summary": "Scaffold a runnable project: landing | dashboard | docs | auth",
4038
+ "flags": [
4039
+ "--theme",
4040
+ "--no-copy"
4041
+ ],
4042
+ "subcommands": [
4043
+ "landing",
4044
+ "dashboard",
4045
+ "docs",
4046
+ "auth"
4047
+ ],
4048
+ "example": "velinstyle create landing ./my-site --theme earth"
4049
+ },
4050
+ {
4051
+ "name": "serve",
4052
+ "summary": "Serve a directory over HTTP (default port 4173)",
4053
+ "flags": [
4054
+ "--port"
4055
+ ],
4056
+ "example": "velinstyle serve . --port 4173"
4057
+ },
4058
+ {
4059
+ "name": "doctor",
4060
+ "summary": "Check dist assets, themes, config, icons, and Windows ESM import hints",
4061
+ "flags": [],
4062
+ "example": "velinstyle doctor"
4063
+ },
4064
+ {
4065
+ "name": "check",
4066
+ "summary": "Aggregate gate: doctor + blueprint --strict + scan + review (alias: validate)",
4067
+ "flags": [
4068
+ "--json",
4069
+ "--sarif",
4070
+ "--profile"
4071
+ ],
4072
+ "example": "velinstyle check . --profile marketing"
239
4073
  },
240
4074
  {
241
4075
  "name": "scaffold",
242
- "summary": "Generate layout HTML from natural language prompt",
4076
+ "summary": "Plan-first page HTML or recipe fragment from natural language",
243
4077
  "flags": [
244
4078
  "--output",
245
4079
  "-o",
@@ -248,7 +4082,36 @@
248
4082
  "subcommands": [
249
4083
  "list-intents"
250
4084
  ],
251
- "example": "velinstyle scaffold \"dashboard with sidebar\""
4085
+ "example": "velinstyle scaffold \"Steuerberater Landingpage mit Kontakt\""
4086
+ },
4087
+ {
4088
+ "name": "plan",
4089
+ "summary": "Emit page plan JSON from a prompt (no HTML)",
4090
+ "flags": [
4091
+ "--output",
4092
+ "-o",
4093
+ "--json"
4094
+ ],
4095
+ "example": "velinstyle plan \"SaaS landing with pricing\""
4096
+ },
4097
+ {
4098
+ "name": "review",
4099
+ "summary": "Design / a11y / SEO / performance / conversion review gate",
4100
+ "flags": [
4101
+ "--json",
4102
+ "--prompt",
4103
+ "--profile"
4104
+ ],
4105
+ "example": "velinstyle review out.html --profile marketing"
4106
+ },
4107
+ {
4108
+ "name": "wc",
4109
+ "summary": "Inspect Web Component APIs from source",
4110
+ "flags": [],
4111
+ "subcommands": [
4112
+ "api"
4113
+ ],
4114
+ "example": "velinstyle wc api velin-toast"
252
4115
  },
253
4116
  {
254
4117
  "name": "layout",
@@ -267,7 +4130,7 @@
267
4130
  },
268
4131
  {
269
4132
  "name": "perf",
270
- "summary": "Performance audit for images and scripts",
4133
+ "summary": "Performance audit for images and scripts (directory or .html file)",
271
4134
  "flags": [
272
4135
  "--json",
273
4136
  "--write",
@@ -278,7 +4141,7 @@
278
4141
  "suggest",
279
4142
  "fix"
280
4143
  ],
281
- "example": "velinstyle perf audit samples/"
4144
+ "example": "velinstyle perf audit index.html"
282
4145
  },
283
4146
  {
284
4147
  "name": "tokens",
@@ -296,7 +4159,7 @@
296
4159
  },
297
4160
  {
298
4161
  "name": "docs",
299
- "summary": "Generate developer reference Markdown",
4162
+ "summary": "Generate developer reference Markdown (alias: documentation)",
300
4163
  "flags": [
301
4164
  "--scope",
302
4165
  "--out"
@@ -308,17 +4171,69 @@
308
4171
  },
309
4172
  {
310
4173
  "name": "meta",
311
- "summary": "Build Velin-Meta agent bundle (velin-agent.json, llms.txt)",
4174
+ "summary": "Build Velin-Meta agent bundle; page --write merges curated goals/intent",
312
4175
  "flags": [
313
4176
  "--out",
314
4177
  "--llms-out",
315
4178
  "--base-url",
316
- "--no-llms"
4179
+ "--no-llms",
4180
+ "--write"
317
4181
  ],
318
4182
  "subcommands": [
319
4183
  "page"
320
4184
  ],
321
- "example": "velinstyle meta"
4185
+ "example": "velinstyle meta page index.html --write"
4186
+ },
4187
+ {
4188
+ "name": "search",
4189
+ "summary": "Build JSON search index for VelinSearch",
4190
+ "flags": [
4191
+ "--out",
4192
+ "--extra-html"
4193
+ ],
4194
+ "subcommands": [
4195
+ "index"
4196
+ ],
4197
+ "example": "velinstyle search index --out dist/search-index.json"
4198
+ },
4199
+ {
4200
+ "name": "skills",
4201
+ "summary": "Registry-first AI skill catalog and install runner",
4202
+ "flags": [
4203
+ "--capability",
4204
+ "--status",
4205
+ "--priority",
4206
+ "--origin",
4207
+ "--category",
4208
+ "--target",
4209
+ "--no-deps",
4210
+ "--json",
4211
+ "--human"
4212
+ ],
4213
+ "subcommands": [
4214
+ "list",
4215
+ "show",
4216
+ "install",
4217
+ "run",
4218
+ "validate",
4219
+ "doctor",
4220
+ "packs",
4221
+ "bundles",
4222
+ "templates",
4223
+ "projects",
4224
+ "graphs"
4225
+ ],
4226
+ "example": "velinstyle skills show scaffold.landing --human"
4227
+ },
4228
+ {
4229
+ "name": "workflow",
4230
+ "summary": "Resolve workflow graph or project workflow steps",
4231
+ "flags": [
4232
+ "--json",
4233
+ "--dry-run",
4234
+ "--step"
4235
+ ],
4236
+ "example": "velinstyle workflow landingpage --json"
322
4237
  }
323
4238
  ]
324
4239
  },
@@ -327,6 +4242,8 @@
327
4242
  "scan",
328
4243
  "prefix",
329
4244
  "scaffold",
4245
+ "plan",
4246
+ "review",
330
4247
  "layout",
331
4248
  "perf",
332
4249
  "tokens",
@@ -334,7 +4251,7 @@
334
4251
  "search",
335
4252
  "meta"
336
4253
  ],
337
- "scannerRuleCount": 37
4254
+ "scannerRuleCount": 44
338
4255
  },
339
4256
  "a11y": {
340
4257
  "wcagLevel": "AAA",
@@ -448,11 +4365,34 @@
448
4365
  "roles": [
449
4366
  "button"
450
4367
  ],
451
- "keyboard": "Native buttons for column sort and pagination",
4368
+ "keyboard": "Sort buttons; editable cells: Enter/F2 edit, Escape cancel; pagination",
4369
+ "liveRegion": "polite",
4370
+ "reducedMotion": true,
4371
+ "requiredAttributes": [],
4372
+ "notes": "Enhances a light-DOM table. Optional editable attribute or data-editable cells for inline edit (velin-data-table-edit). No virtualization in v1."
4373
+ },
4374
+ "velin-calendar": {
4375
+ "status": "pass",
4376
+ "roles": [
4377
+ "group",
4378
+ "grid",
4379
+ "button"
4380
+ ],
4381
+ "keyboard": "Arrows, Home/End, PageUp/Down, Enter/Space",
4382
+ "reducedMotion": true,
4383
+ "requiredAttributes": [],
4384
+ "notes": "Month calendar. value ISO date; velin-change event. Optional min/max."
4385
+ },
4386
+ "velin-file-dropzone": {
4387
+ "status": "pass",
4388
+ "roles": [
4389
+ "group"
4390
+ ],
4391
+ "keyboard": "Browse button + native file input",
452
4392
  "liveRegion": "polite",
453
4393
  "reducedMotion": true,
454
4394
  "requiredAttributes": [],
455
- "notes": "Enhances a light-DOM table. Sort state exposed via aria-sort; sort triggers are real buttons. Needs a caption, aria-label, or label attribute (warns otherwise). Filtered and off-page rows use hidden so they leave the a11y tree; sort, filter and page changes are announced."
4395
+ "notes": "Client-side dropzone. Events velin-files / velin-error. Does not upload to a server."
456
4396
  },
457
4397
  "velin-dialog": {
458
4398
  "status": "pass",
@@ -683,28 +4623,37 @@
683
4623
  },
684
4624
  "searchIndex": {
685
4625
  "path": "dist/search-index.json",
686
- "entryCount": 139
4626
+ "entryCount": 153
687
4627
  },
688
4628
  "documentation": {
689
4629
  "generated": "docs/generated/",
690
4630
  "guides": {
691
4631
  "velinMeta": "docs/guides/velin-meta.html",
4632
+ "aiSkills": "docs/guides/ai-skills.html",
692
4633
  "velinSearch": "docs/guides/velin-search.html",
693
4634
  "syntaxHighlight": "docs/guides/syntax-highlight.html",
694
4635
  "promptScaffolding": "docs/guides/prompt-scaffolding.html",
695
4636
  "apiReference": "docs/guides/api-reference.html"
696
4637
  },
4638
+ "strategy": {
4639
+ "note": "Maintainer strategy/ADR docs are not published (monorepo interne_docs/strategy).",
4640
+ "northStar": "VELINSTYLE_2030.md",
4641
+ "architecture": "ARCHITECTURE.md"
4642
+ },
697
4643
  "agentFiles": {
698
4644
  "json": "dist/velin-agent.json",
699
4645
  "llmsTxt": "dist/llms.txt"
700
4646
  }
701
4647
  },
702
4648
  "conventions": [
703
- "Positioning: VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components — not a JS-only library or a utility-only CSS kit.",
4649
+ "Positioning: VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components — not a JS-only library or a utility-only CSS kit.",
704
4650
  "Use only velin-* utility classes and documented Web Components.",
705
4651
  "Prefer data-velin-theme on <html> for theme switching.",
706
4652
  "Run velinstyle scan on generated HTML before shipping.",
4653
+ "Prefer registry-first skills (`velinstyle skills`) and workflow graphs (`velinstyle workflow`) before inventing custom pipelines.",
4654
+ "Honor skill status, confidence, compatibility, and onlyIf predicates when automating.",
707
4655
  "Do not put secrets, API keys, or raw emails in velin-meta or page meta.",
708
- "Resolve doc links against docs root (/docs/), not the current page folder."
4656
+ "Resolve doc links against docs root (/docs/), not the current page folder.",
4657
+ "Prefer Velin Transparency Framework (velin-transparency + provenance) for AI/trust/compliance labeling; run `velinstyle transparency doctor`."
709
4658
  ]
710
4659
  }