@birdapi/velinstyle 1.1.0 → 1.2.0

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 (308) hide show
  1. package/README.de.md +87 -162
  2. package/README.md +188 -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 +126 -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 +531 -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/wc-api.js +89 -0
  42. package/cli/workflow.js +42 -0
  43. package/components/index.js +2 -0
  44. package/components/runtime/component-loaders.js +2 -0
  45. package/components/velin-accordion.js +62 -13
  46. package/components/velin-bottom-nav.js +10 -0
  47. package/components/velin-calendar.js +212 -0
  48. package/components/velin-command.js +18 -2
  49. package/components/velin-data-table.js +78 -1
  50. package/components/velin-dialog.js +4 -1
  51. package/components/velin-drawer.js +2 -4
  52. package/components/velin-file-dropzone.js +162 -0
  53. package/components/velin-icon.js +22 -1
  54. package/components/velin-lightbox.js +5 -3
  55. package/components/velin-modal.js +2 -4
  56. package/components/velin-search.js +1 -1
  57. package/components/velin-sheet.js +2 -4
  58. package/core/a11y/component-contracts.json +20 -3
  59. package/core/meta/build.js +125 -5
  60. package/core/meta/design-constraints/contact.json +9 -0
  61. package/core/meta/design-constraints/faq.json +9 -0
  62. package/core/meta/design-constraints/hero.json +13 -0
  63. package/core/meta/knowledge/components.json +622 -0
  64. package/core/meta/knowledge/tokens.json +282 -0
  65. package/core/meta/pages/registry.json +294 -0
  66. package/core/meta/schema.js +3 -1
  67. package/core/meta/sections/registry.json +185 -0
  68. package/dist/chunks/{attributes-STYCS3O5.js → attributes-A423NX5J.js} +3 -3
  69. package/dist/chunks/{attributes-353XDOAX.js → attributes-F6UPIEVP.js} +1 -1
  70. package/dist/chunks/{attributes-ADOKLKA7.js → attributes-GLYXGGAL.js} +3 -3
  71. package/dist/chunks/{attributes-TPANLMLF.js → attributes-UFTYOSAU.js} +3 -3
  72. package/dist/chunks/attributes-XGLXLR2T.js +391 -0
  73. package/dist/chunks/attributes-YF4NI2QS.js +391 -0
  74. package/dist/chunks/browser-AUABBYUK.js +1544 -0
  75. package/dist/chunks/{chunk-RSMRR27R.js → chunk-2LSKX57P.js} +12 -10
  76. package/dist/chunks/{chunk-IEHKRARD.js → chunk-2TGCVDUL.js} +11 -9
  77. package/dist/chunks/{chunk-SRL6EWHP.js → chunk-5JWGUAPC.js} +17 -13
  78. package/dist/chunks/chunk-7YSO2OQ2.js +113 -0
  79. package/dist/chunks/{chunk-QVHYL3R4.js → chunk-BHR3ZG6U.js} +6 -6
  80. package/dist/chunks/{chunk-J472ERN2.js → chunk-JMSIHEYX.js} +15 -4
  81. package/dist/chunks/{chunk-MKZP2TBH.js → chunk-L7ZGUU4D.js} +2 -2
  82. package/dist/chunks/chunk-TUGIPKW5.js +113 -0
  83. package/dist/chunks/{highlight-GJHHV4KM.js → highlight-M2ELQNYK.js} +1 -1
  84. package/dist/chunks/runtime-entry.js +1 -1
  85. package/dist/chunks/{velin-accordion-FBIPAEXG.js → velin-accordion-WSY6BMLA.js} +64 -10
  86. package/dist/chunks/{velin-bottom-nav-7GEMPIM6.js → velin-bottom-nav-5RVRNGIP.js} +25 -0
  87. package/dist/chunks/{velin-bottom-nav-N3DFQR66.js → velin-bottom-nav-N5F4UO2I.js} +26 -1
  88. package/dist/chunks/velin-calendar-OFE6THUD.js +210 -0
  89. package/dist/chunks/velin-calendar-PGVNJTXK.js +217 -0
  90. package/dist/chunks/velin-calendar-XC7JRDSH.js +217 -0
  91. package/dist/chunks/{velin-code-block-CIAURDRJ.js → velin-code-block-ZGWG7JI5.js} +1 -1
  92. package/dist/chunks/{velin-combobox-NXS4QB4R.js → velin-combobox-56V2ZWT5.js} +1 -1
  93. package/dist/chunks/{velin-command-ONKO2A3J.js → velin-command-2HO2EKR6.js} +29 -2
  94. package/dist/chunks/{velin-command-TMLSRGIU.js → velin-command-ZJSLPK7B.js} +30 -3
  95. package/dist/chunks/{velin-copy-NYDBOKXT.js → velin-copy-XDQSV2XU.js} +1 -1
  96. package/dist/chunks/{velin-countdown-4ZVDGK4R.js → velin-countdown-V4Z5MA63.js} +1 -1
  97. package/dist/chunks/velin-data-table-UVR42UUM.js +372 -0
  98. package/dist/chunks/{velin-dialog-GTTZI564.js → velin-dialog-3YK2RPRV.js} +9 -2
  99. package/dist/chunks/{velin-dialog-ELFOZIXZ.js → velin-dialog-S24KAP4S.js} +3 -1
  100. package/dist/chunks/{velin-drawer-BE6TYN3H.js → velin-drawer-5PNU624J.js} +2 -4
  101. package/dist/chunks/{velin-drawer-DLL2GLT6.js → velin-drawer-CCM6S25D.js} +3 -5
  102. package/dist/chunks/{velin-email-RBX6ZR4S.js → velin-email-TNFONXPW.js} +1 -1
  103. package/dist/chunks/velin-file-dropzone-QRGF2JNA.js +154 -0
  104. package/dist/chunks/velin-file-dropzone-XIZMJ3NB.js +154 -0
  105. package/dist/chunks/{velin-icon-7M76DOPB.js → velin-icon-A6NCXGUK.js} +59 -17
  106. package/dist/chunks/{velin-icon-ZTSKUOVN.js → velin-icon-EC4B5XCM.js} +18 -5
  107. package/dist/chunks/{velin-lightbox-6E7CAATP.js → velin-lightbox-FFK4TUUP.js} +7 -6
  108. package/dist/chunks/{velin-lightbox-NXA3U2FM.js → velin-lightbox-P725FLTY.js} +5 -4
  109. package/dist/chunks/{velin-menubar-J66JXRWW.js → velin-menubar-6I2LM5HL.js} +1 -1
  110. package/dist/chunks/{velin-modal-5HYNNNUI.js → velin-modal-ICTMGRSU.js} +7 -8
  111. package/dist/chunks/{velin-modal-AEOTZ67O.js → velin-modal-JBNODH7D.js} +2 -4
  112. package/dist/chunks/{velin-popover-T72HK3DF.js → velin-popover-WZG2GHBL.js} +25 -4
  113. package/dist/chunks/{velin-rating-N4DI2XNL.js → velin-rating-QBBYRRBU.js} +1 -1
  114. package/dist/chunks/{velin-search-7B4KJ6TX.js → velin-search-B3L6J2RP.js} +2 -2
  115. package/dist/chunks/{velin-search-2XRQFBCS.js → velin-search-L3UG6NDQ.js} +5 -4
  116. package/dist/chunks/{velin-secure-field-6PV7RZDJ.js → velin-secure-field-DGYMP7OK.js} +1 -1
  117. package/dist/chunks/{velin-segmented-control-GYD5BIXQ.js → velin-segmented-control-P74GJPAR.js} +1 -1
  118. package/dist/chunks/{velin-sheet-R2Y67X6H.js → velin-sheet-M5GZZD7G.js} +2 -4
  119. package/dist/chunks/{velin-sheet-OUK6572T.js → velin-sheet-X7RXIWKV.js} +3 -5
  120. package/dist/chunks/{velin-stepper-X54WGHDG.js → velin-stepper-4YQJUHPC.js} +12 -5
  121. package/dist/chunks/{velin-toast-OMMOA2DK.js → velin-toast-UG5LWTG2.js} +5 -1
  122. package/dist/chunks/{velin-tooltip-BDHGRTQB.js → velin-tooltip-ZDH5SDLU.js} +1 -1
  123. package/dist/llms.txt +29 -7
  124. package/dist/search-index.json +156 -10
  125. package/dist/velin-agent.json +3973 -28
  126. package/dist/velinstyle-components.iife.js +1211 -284
  127. package/dist/velinstyle-components.js +1213 -284
  128. package/dist/velinstyle-components.min.js +266 -118
  129. package/dist/velinstyle.css +252 -67
  130. package/dist/velinstyle.d.ts +2 -0
  131. package/dist/velinstyle.min.css +1 -1
  132. package/package.json +20 -6
  133. package/packages/skill-engine/README.md +24 -0
  134. package/packages/skill-engine/package.json +7 -0
  135. package/packages/skill-engine/src/catalog.js +29 -0
  136. package/packages/skill-engine/src/index.js +5 -0
  137. package/packages/skill-engine/src/install.js +69 -0
  138. package/packages/skill-engine/src/registry.js +27 -0
  139. package/packages/skill-engine/src/resolve.js +68 -0
  140. package/packages/skill-engine/src/validate.js +40 -0
  141. package/packages/velinstyle-skills/README.md +6 -0
  142. package/packages/velinstyle-skills/adapter.json +8 -0
  143. package/packages/velinstyle-skills/bundles/landing-starter.bundle.yaml +12 -0
  144. package/packages/velinstyle-skills/bundles/review-suite.bundle.yaml +11 -0
  145. package/packages/velinstyle-skills/catalog.json +1004 -0
  146. package/packages/velinstyle-skills/graphs/component-ship.graph.yaml +14 -0
  147. package/packages/velinstyle-skills/graphs/landingpage.graph.yaml +21 -0
  148. package/packages/velinstyle-skills/graphs/release-gate.graph.yaml +15 -0
  149. package/packages/velinstyle-skills/index.js +22 -0
  150. package/packages/velinstyle-skills/package.json +7 -0
  151. package/packages/velinstyle-skills/packs/accessibility.pack.yaml +9 -0
  152. package/packages/velinstyle-skills/packs/design.pack.yaml +10 -0
  153. package/packages/velinstyle-skills/packs/documentation.pack.yaml +8 -0
  154. package/packages/velinstyle-skills/packs/enterprise.pack.yaml +10 -0
  155. package/packages/velinstyle-skills/packs/frontend.pack.yaml +10 -0
  156. package/packages/velinstyle-skills/packs/review.pack.yaml +9 -0
  157. package/packages/velinstyle-skills/projects/admin-panel.project.yaml +12 -0
  158. package/packages/velinstyle-skills/projects/blog.project.yaml +11 -0
  159. package/packages/velinstyle-skills/projects/documentation-portal.project.yaml +13 -0
  160. package/packages/velinstyle-skills/projects/ecommerce-shop.project.yaml +12 -0
  161. package/packages/velinstyle-skills/projects/landing-page.project.yaml +12 -0
  162. package/packages/velinstyle-skills/projects/laravel-dashboard.project.yaml +12 -0
  163. package/packages/velinstyle-skills/projects/marketing-website.project.yaml +14 -0
  164. package/packages/velinstyle-skills/projects/portfolio.project.yaml +12 -0
  165. package/packages/velinstyle-skills/registry.json +142 -0
  166. package/packages/velinstyle-skills/scripts/generate-assets.mjs +163 -0
  167. package/packages/velinstyle-skills/skills/velin-a11y-focus-keyboard/SKILL.md +57 -0
  168. package/packages/velinstyle-skills/skills/velin-a11y-page-checklist/SKILL.md +57 -0
  169. package/packages/velinstyle-skills/skills/velin-a11y-scan-fix/SKILL.md +57 -0
  170. package/packages/velinstyle-skills/skills/velin-ai-agent-briefing/SKILL.md +57 -0
  171. package/packages/velinstyle-skills/skills/velin-ai-plan-scaffold-review/SKILL.md +57 -0
  172. package/packages/velinstyle-skills/skills/velin-ai-skill-authoring/SKILL.md +57 -0
  173. package/packages/velinstyle-skills/skills/velin-components-accessibility-map/SKILL.md +57 -0
  174. package/packages/velinstyle-skills/skills/velin-components-api-contract/SKILL.md +57 -0
  175. package/packages/velinstyle-skills/skills/velin-components-recipe/SKILL.md +57 -0
  176. package/packages/velinstyle-skills/skills/velin-components-select-compose/SKILL.md +57 -0
  177. package/packages/velinstyle-skills/skills/velin-design-hero-compose/SKILL.md +57 -0
  178. package/packages/velinstyle-skills/skills/velin-design-section-rhythm/SKILL.md +57 -0
  179. package/packages/velinstyle-skills/skills/velin-design-surface-roles/SKILL.md +57 -0
  180. package/packages/velinstyle-skills/skills/velin-dev-component-wire/SKILL.md +57 -0
  181. package/packages/velinstyle-skills/skills/velin-dev-page-scaffold/SKILL.md +57 -0
  182. package/packages/velinstyle-skills/skills/velin-dev-plan-first/SKILL.md +57 -0
  183. package/packages/velinstyle-skills/skills/velin-docs-component-guide/SKILL.md +57 -0
  184. package/packages/velinstyle-skills/skills/velin-docs-generate-api/SKILL.md +57 -0
  185. package/packages/velinstyle-skills/skills/velin-dx-doctor-setup/SKILL.md +57 -0
  186. package/packages/velinstyle-skills/skills/velin-dx-project-init/SKILL.md +57 -0
  187. package/packages/velinstyle-skills/skills/velin-migration-legacy-wc/SKILL.md +57 -0
  188. package/packages/velinstyle-skills/skills/velin-migration-prefix-classes/SKILL.md +57 -0
  189. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +57 -0
  190. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +57 -0
  191. package/packages/velinstyle-skills/skills/velin-perf-audit-fix/SKILL.md +57 -0
  192. package/packages/velinstyle-skills/skills/velin-perf-runtime-tree-shake/SKILL.md +57 -0
  193. package/packages/velinstyle-skills/skills/velin-release-changelog-sync/SKILL.md +57 -0
  194. package/packages/velinstyle-skills/skills/velin-release-meta-rebuild/SKILL.md +57 -0
  195. package/packages/velinstyle-skills/skills/velin-review-conversion-hero/SKILL.md +57 -0
  196. package/packages/velinstyle-skills/skills/velin-review-page-gate/SKILL.md +57 -0
  197. package/packages/velinstyle-skills/skills/velin-review-seo-meta/SKILL.md +57 -0
  198. package/packages/velinstyle-skills/skills/velin-security-sanitize-html/SKILL.md +57 -0
  199. package/packages/velinstyle-skills/skills/velin-security-scan-pii/SKILL.md +57 -0
  200. package/packages/velinstyle-skills/skills/velin-testing-a11y-suite/SKILL.md +57 -0
  201. package/packages/velinstyle-skills/skills/velin-testing-visual-smoke/SKILL.md +57 -0
  202. package/packages/velinstyle-skills/skills/velin-themes-apply-token/SKILL.md +57 -0
  203. package/packages/velinstyle-skills/skills/velin-themes-contrast-check/SKILL.md +57 -0
  204. package/packages/velinstyle-skills/skills/velin-utilities-layout-apply/SKILL.md +57 -0
  205. package/packages/velinstyle-skills/skills/velin-utilities-prefix-fix/SKILL.md +57 -0
  206. package/packages/velinstyle-skills/skills/velin-utilities-token-map/SKILL.md +57 -0
  207. package/packages/velinstyle-skills/templates/admin-panel.template.yaml +12 -0
  208. package/packages/velinstyle-skills/templates/blog.template.yaml +12 -0
  209. package/packages/velinstyle-skills/templates/documentation-portal.template.yaml +12 -0
  210. package/packages/velinstyle-skills/templates/ecommerce-shop.template.yaml +13 -0
  211. package/packages/velinstyle-skills/templates/landing-page.template.yaml +12 -0
  212. package/packages/velinstyle-skills/templates/laravel-dashboard.template.yaml +11 -0
  213. package/packages/velinstyle-skills/templates/marketing-website.template.yaml +13 -0
  214. package/packages/velinstyle-skills/templates/portfolio.template.yaml +12 -0
  215. package/schemas/component-knowledge.schema.json +33 -0
  216. package/schemas/design-constraint.schema.json +15 -0
  217. package/schemas/design-intelligence.schema.json +19 -0
  218. package/schemas/design-rule.schema.json +19 -0
  219. package/schemas/page-template.schema.json +24 -0
  220. package/schemas/review-report.schema.json +36 -0
  221. package/schemas/section.schema.json +22 -0
  222. package/schemas/skill-bundle.schema.json +15 -0
  223. package/schemas/skill-graph.schema.json +25 -0
  224. package/schemas/skill-pack.schema.json +14 -0
  225. package/schemas/skill-project.schema.json +16 -0
  226. package/schemas/skill-record.schema.json +27 -0
  227. package/schemas/skill-registry.schema.json +17 -0
  228. package/schemas/skill-template.schema.json +17 -0
  229. package/schemas/token-graph.schema.json +27 -0
  230. package/schemas/utility.schema.json +166 -0
  231. package/src/components/alert.css +22 -1
  232. package/src/components/calendar-dropzone.css +5 -0
  233. package/src/layout/app-shell.css +33 -0
  234. package/src/tokens/shadow.css +13 -0
  235. package/src/utilities/border.css +2 -0
  236. package/src/utilities/display.css +1 -24
  237. package/src/utilities/responsive.css +16 -1
  238. package/src/utilities/spacing.css +32 -0
  239. package/src/velinstyle.css +2 -0
  240. package/dist/chunks/attributes-3BZLI7XF.js +0 -364
  241. package/dist/chunks/attributes-4N5JP4CG.js +0 -364
  242. package/dist/chunks/attributes-5Q2WXGRC.js +0 -374
  243. package/dist/chunks/attributes-AIR7SVLK.js +0 -364
  244. package/dist/chunks/attributes-BGRN5XZO.js +0 -364
  245. package/dist/chunks/attributes-BVSQAYLR.js +0 -364
  246. package/dist/chunks/attributes-CDYFUY7Y.js +0 -364
  247. package/dist/chunks/attributes-JMYJZBPE.js +0 -364
  248. package/dist/chunks/attributes-R5JY3X4O.js +0 -374
  249. package/dist/chunks/attributes-TNSPQTHX.js +0 -374
  250. package/dist/chunks/chunk-2354NEBP.js +0 -109
  251. package/dist/chunks/chunk-2VNA7G7S.js +0 -109
  252. package/dist/chunks/chunk-AQLRJSGG.js +0 -109
  253. package/dist/chunks/chunk-EWPSDMQT.js +0 -109
  254. package/dist/chunks/chunk-LA7264K4.js +0 -85
  255. package/dist/chunks/chunk-QTJJ3DPO.js +0 -109
  256. package/dist/chunks/chunk-RZQVWFHW.js +0 -109
  257. package/dist/chunks/chunk-U4XHMZ7D.js +0 -109
  258. package/dist/chunks/chunk-V5YIUA6G.js +0 -109
  259. package/dist/chunks/chunk-XIET2VSZ.js +0 -109
  260. package/dist/chunks/chunk-XYLJ2GCB.js +0 -205
  261. package/dist/chunks/chunk-ZPSPKUYD.js +0 -109
  262. package/dist/chunks/highlight-XTHRKBA3.js +0 -37
  263. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +0 -86
  264. package/dist/chunks/velin-carousel-Y5VCOABZ.js +0 -213
  265. package/dist/chunks/velin-code-block-ASUBTAQV.js +0 -119
  266. package/dist/chunks/velin-code-block-TSUKPY4C.js +0 -123
  267. package/dist/chunks/velin-code-block-Y6CM726Q.js +0 -119
  268. package/dist/chunks/velin-combobox-2KDTCQ7N.js +0 -155
  269. package/dist/chunks/velin-command-M7RNHUPR.js +0 -136
  270. package/dist/chunks/velin-copy-T5KDTDXP.js +0 -81
  271. package/dist/chunks/velin-countdown-5XSTN3BH.js +0 -101
  272. package/dist/chunks/velin-counter-ISCTEAHI.js +0 -118
  273. package/dist/chunks/velin-dialog-D2GUHSCD.js +0 -144
  274. package/dist/chunks/velin-dialog-IJLFDXAJ.js +0 -144
  275. package/dist/chunks/velin-dialog-TNS3WXMB.js +0 -144
  276. package/dist/chunks/velin-drawer-MJS6WCF7.js +0 -130
  277. package/dist/chunks/velin-email-N5B5ZYTE.js +0 -90
  278. package/dist/chunks/velin-icon-KZO3IEHG.js +0 -164
  279. package/dist/chunks/velin-lightbox-I75U6JF4.js +0 -140
  280. package/dist/chunks/velin-lightbox-QOTB4PRL.js +0 -140
  281. package/dist/chunks/velin-lightbox-UCD6N7HF.js +0 -140
  282. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +0 -67
  283. package/dist/chunks/velin-menubar-SFEXJE56.js +0 -86
  284. package/dist/chunks/velin-modal-2HOBXE6F.js +0 -176
  285. package/dist/chunks/velin-modal-GLI2XZZB.js +0 -176
  286. package/dist/chunks/velin-popover-EXINRIGJ.js +0 -145
  287. package/dist/chunks/velin-popover-OXX7MRZ6.js +0 -145
  288. package/dist/chunks/velin-popover-YKCCROJG.js +0 -145
  289. package/dist/chunks/velin-rating-XRQJV4LO.js +0 -91
  290. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +0 -58
  291. package/dist/chunks/velin-search-4YHJWYSS.js +0 -556
  292. package/dist/chunks/velin-search-LWHY23Q5.js +0 -474
  293. package/dist/chunks/velin-secure-field-H7FSBUJW.js +0 -95
  294. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +0 -109
  295. package/dist/chunks/velin-sheet-3OGI4HD7.js +0 -119
  296. package/dist/chunks/velin-sparkline-GVEANJVW.js +0 -184
  297. package/dist/chunks/velin-sparkline-KDA3GQAN.js +0 -162
  298. package/dist/chunks/velin-stepper-2ZIHLKGM.js +0 -141
  299. package/dist/chunks/velin-stepper-FYEUEWE6.js +0 -141
  300. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +0 -133
  301. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +0 -285
  302. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +0 -285
  303. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +0 -291
  304. package/dist/chunks/velin-toast-RCZ4CSUC.js +0 -109
  305. package/dist/chunks/velin-toast-WEUBTJG6.js +0 -109
  306. package/dist/chunks/velin-tooltip-664IOHZA.js +0 -112
  307. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +0 -103
  308. package/dist/chunks/worker-client-R6DBYPFT.js +0 -46
package/README.md CHANGED
@@ -9,47 +9,85 @@
9
9
  ╚═══╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝
10
10
  ```
11
11
 
12
+ **Accessibility-first CSS Framework · Web Components · Design Intelligence · AI Workflows**
13
+
14
+ One framework. One CLI. One design system. One AI-ready ecosystem.
15
+
12
16
  [![License: MIT](https://img.shields.io/badge/License-MIT-2563eb?style=flat-square)](LICENSE)
13
- [![Release](https://img.shields.io/badge/Release-v1.0.0-2563eb?style=flat-square)](https://github.com/SkyliteDesign/velinstyle/releases/tag/v1.0.0)
14
- [![npm version](https://img.shields.io/npm/v/@birdapi/velinstyle?style=flat-square)](https://www.npmjs.com/package/@birdapi/velinstyle)
15
- [![WCAG 2.2 AAA](https://img.shields.io/badge/WCAG_2.2-AAA-16a34a?style=flat-square)](https://velinstyle.info/docs/a11y.html)
17
+ [![npm](https://img.shields.io/npm/v/@birdapi/velinstyle?style=flat-square)](https://www.npmjs.com/package/@birdapi/velinstyle)
18
+ [![npm downloads](https://img.shields.io/npm/dm/@birdapi/velinstyle?style=flat-square)](https://www.npmjs.com/package/@birdapi/velinstyle)
16
19
  [![GitHub stars](https://img.shields.io/github/stars/SkyliteDesign/velinstyle?style=flat-square)](https://github.com/SkyliteDesign/velinstyle/stargazers)
20
+ [![Node.js](https://img.shields.io/badge/Node.js-18%2B-339933?style=flat-square)](https://nodejs.org/)
21
+ [![Browsers](https://img.shields.io/badge/Browsers-modern-0ea5e9?style=flat-square)](https://velinstyle.info/docs/getting-started/introduction.html)
22
+ [![WCAG 2.2 AAA support](https://img.shields.io/badge/WCAG_2.2-AAA_support-16a34a?style=flat-square)](https://velinstyle.info/docs/a11y.html)
17
23
  [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-2563eb?style=flat-square)](CONTRIBUTING.md)
18
24
 
19
25
  ```bash
20
26
  npm i @birdapi/velinstyle
21
27
  ```
22
28
 
23
- **[Website](https://velinstyle.info)** · **[Docs](https://velinstyle.info/docs/)** · **[Demos](https://velinstyle.info/demos/)** · **[npm](https://www.npmjs.com/package/@birdapi/velinstyle)** · **[Star on GitHub](https://github.com/SkyliteDesign/velinstyle)**
24
-
25
- **English** · **[Deutsch](README.de.md)**
29
+ **[Website](https://velinstyle.info)** · **[Docs](https://velinstyle.info/docs/getting-started/introduction.html)** · **[Demos](https://velinstyle.info/demos/)** · **[Getting Started](GETTING_STARTED.md)** · **[Architecture](ARCHITECTURE.md)** · **[Deutsch](README.de.md)**
26
30
 
27
31
  </div>
28
32
 
29
33
  ---
30
34
 
31
- **VelinStyle** is the **WCAG 2.2 AAA CSS framework** with native JavaScript runtime and Web Components CSS utilities, 1.0.0 modules (search, motion, highlight, attributes, meta), and security tooling, with **no external UI framework dependencies** in the core.
35
+ VelinStyle is a **production CSS + Web Components framework** with **WCAG 2.2 AAA-oriented defaults**, a real **CLI ship surface**, and the first **Design Intelligence / AI Foundation** systems (beta). No external UI framework in the core.
32
36
 
33
- Built for teams who want **readable HTML**, **AAA token defaults** (AA via `data-velin-contrast="aa"`), and **CLI automation** instead of utility sprawl.
37
+ **Best fit today:** marketing landings, docs shells, simple admin starters.
38
+ **Not yet:** sole primary stack for large multipage shop + enterprise admin without custom work.
34
39
 
35
- > **Dogfooding:** The entire VelinStyle website and documentation runs 100% on VelinStyle no external scripts or UI frameworks.
40
+ > **Release:** **1.2.0** (Core + Design Intelligence Foundation + Trust/Ship). Using VelinStyle does **not** certify your app see the [a11y matrix](https://velinstyle.info/docs/a11y.html).
36
41
 
37
42
  ---
38
43
 
39
- ## Features at a glance
44
+ ## Why VelinStyle
45
+
46
+ | Need | What you get |
47
+ |------|----------------|
48
+ | Readable HTML | Semantic BEM (`velin-btn--primary`), not utility walls |
49
+ | Accessibility | AAA-capable tokens, focus management, reduced motion — built in |
50
+ | Ship without a build | CDN CSS + optional WCs; Vite/React when you want them |
51
+ | Predictable overrides | Cascade layers + OKLCH design tokens |
52
+ | Quality gates | `scan`, `review`, `check` — catch real defects before merge |
53
+ | AI that helps | Skills, workflows, and agent metadata — **Mensch → Framework → KI** |
54
+
55
+ Compared to **Tailwind**: less class sprawl, stronger defaults for contrast and semantics.
56
+ Compared to **Bootstrap**: modern tokens/layers, optional progressive WCs, CLI automation instead of jQuery-era chrome.
57
+
58
+ ---
59
+
60
+ ## Feature highlights
61
+
62
+ | | Area | What it does |
63
+ |---|------|----------------|
64
+ | 🎨 | **CSS Framework** | OKLCH themes, utilities, components, lite preset for marketing budgets |
65
+ | 🧩 | **Web Components** | 40 canonical custom elements; use CSS alone when you need no JS |
66
+ | ⚡ | **Runtime** | Search, motion, highlight, attributes, `bootFromDOM` tree-shaking |
67
+ | 🛠 | **CLI** | `create` · `serve` · `doctor` · `check` · `scan` · `review` · `skills` |
68
+ | 🧠 | **Design Intelligence** | Plan → constraints → page/section registry → review (beta) |
69
+ | 🤖 | **AI Skills** | 40 skills, packs, bundles, templates, workflow graphs (beta) |
70
+ | 📦 | **Registry** | Skills + page/section registries as machine-readable contracts |
71
+ | 📄 | **AI Metadata** | `velin-agent.json`, `llms.txt`, page-level agent JSON |
72
+ | 📚 | **Documentation** | Dogfooded site — 100% VelinStyle |
73
+ | 🔍 | **Review Engine** | Heuristic design / a11y / SEO / conversion gates (beta) |
74
+ | 🛡 | **Scan Engine** | A11y, security, CSS honesty, PII |
75
+ | 🚀 | **Performance** | Lite CSS, chunked runtime, CLS placeholders |
76
+ | ♿ | **Accessibility** | Contracts, WCAG 2.2 tooling, keyboard + ARIA patterns |
77
+
78
+ ---
79
+
80
+ ## What's new in 1.2
81
+
82
+ Not a CSS bump — a **foundation release**.
83
+
84
+ - **Ship surface** — `create landing|dashboard|docs|auth`, `serve`, `doctor`, `check` (`--json` / `--sarif`)
85
+ - **Design Intelligence (beta)** — Prompt Engine (`plan`), Review Engine, knowledge graph seed, design constraints
86
+ - **AI Foundation (beta)** — skill engine, workflows, richer agent metadata
87
+ - **New primitives** — `<velin-calendar>`, `<velin-file-dropzone>`, editable `<velin-data-table>`
88
+ - **Trust gates** — stricter scan/review so junk pages cannot fake green scores
40
89
 
41
- - **CSS utilities** — `velin-*` spacing, color, flex, motion, safe-area; cascade layers + OKLCH tokens
42
- - **35+ components** — semantic BEM classes (`velin-btn`, `velin-card`, `velin-grid`, …)
43
- - **Motion runtime** — reveal, stagger, scroll-driven animation, rAF scheduler
44
- - **VelinSearch** — fuzzy offline search with highlighting and categories
45
- - **Syntax highlighting** — lazy in-view highlighting for JS, TS, HTML, CSS, JSON, Bash, Python, YAML, Go, Rust, and more
46
- - **HTML attributes** — 27 declarative bridges (`velin-modal`, `velin-reveal`, `velin-scroll-top`, `velin-code`, …)
47
- - **Quality** — 38/38 component a11y contracts, Playwright cross-browser smoke (`npm run test:e2e`), CLS placeholders (`wc-placeholder.css`)
48
- - **Security tools** — `scan`, PII rules, sanitize API, hardened components
49
- - **CLI** — init, build, scan, scaffold, tokens, docs generate, perf audit, layout audit
50
- - **Velin-Meta** — `velin-agent.json`, `llms.txt`, and page-level agent JSON for AI assistants
51
- - **React adapter** — `@velinstyle/react` wraps every canonical Web Component with typed props and events
52
- - **Release guard** — `npm run release:check` fails the build on version or docs drift between framework and site
90
+ Details: [`RELEASE_NOTES_1.2.0.md`](RELEASE_NOTES_1.2.0.md) · full history: [`CHANGELOG.md`](CHANGELOG.md)
53
91
 
54
92
  ---
55
93
 
@@ -57,30 +95,31 @@ Built for teams who want **readable HTML**, **AAA token defaults** (AA via `data
57
95
 
58
96
  ```bash
59
97
  npm i @birdapi/velinstyle
98
+ pnpm add @birdapi/velinstyle
99
+ yarn add @birdapi/velinstyle
100
+ bun add @birdapi/velinstyle
60
101
  ```
61
102
 
62
- | Path | Use |
63
- | --- | --- |
64
- | `@birdapi/velinstyle/css` | Full minified stylesheet |
65
- | `@birdapi/velinstyle/bundle` | Web Components ESM bundle |
66
- | `@birdapi/velinstyle/search` | VelinSearch module |
67
- | `@birdapi/velinstyle/motion` | Motion runtime |
68
- | `@birdapi/velinstyle/attributes` | HTML attribute bridges |
69
- | `@birdapi/velinstyle/highlight` | Syntax highlighting |
70
- | `@birdapi/velinstyle/meta` | Agent metadata API |
71
-
72
- **CDN (pin version):**
103
+ **CDN** (pin a version):
73
104
 
74
105
  ```html
75
- <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@1.1.0/dist/velinstyle.min.css">
76
- <script type="module" src="https://unpkg.com/@birdapi/velinstyle@1.1.0/dist/velinstyle-components.min.js"></script>
106
+ <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@1.2.0/dist/velinstyle.min.css">
107
+ <script type="module" src="https://unpkg.com/@birdapi/velinstyle@1.2.0/dist/velinstyle-components.min.js"></script>
77
108
  ```
78
109
 
79
- After cloning, run `npm install && npm run build` `dist/` is generated, not committed.
110
+ > Pin **`@1.2.0`** (or `@latest` after publish). Examples above match this package version.
111
+
112
+ | Export | Use |
113
+ |--------|-----|
114
+ | `@birdapi/velinstyle/css` | Full stylesheet |
115
+ | `@birdapi/velinstyle/bundle` | Web Components ESM |
116
+ | `/search` `/motion` `/attributes` `/highlight` `/meta` `/sanitize` | Tree-shakeable modules |
117
+
118
+ After clone: `npm install && npm run build` — `dist/` is generated, not committed.
80
119
 
81
120
  ---
82
121
 
83
- ## Quickstart
122
+ ## Quick start
84
123
 
85
124
  ```html
86
125
  <!DOCTYPE html>
@@ -88,143 +127,173 @@ After cloning, run `npm install && npm run build` — `dist/` is generated, not
88
127
  <head>
89
128
  <meta charset="UTF-8">
90
129
  <meta name="viewport" content="width=device-width, initial-scale=1">
91
- <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@1.1.0/dist/velinstyle.min.css">
92
- <script type="module" src="https://unpkg.com/@birdapi/velinstyle@1.1.0/dist/velinstyle-components.min.js"></script>
130
+ <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@1.2.0/dist/velinstyle.min.css">
131
+ <script type="module" src="https://unpkg.com/@birdapi/velinstyle@1.2.0/dist/velinstyle-components.min.js"></script>
93
132
  </head>
94
133
  <body class="velin-p-6">
95
- <button type="button" class="velin-btn velin-btn--primary" velin-reveal="slide-up">Ship it</button>
96
- <velin-code-block language="html" line-numbers>&lt;p class="velin-text-muted"&gt;Hello VelinStyle&lt;/p&gt;</velin-code-block>
134
+ <button type="button" class="velin-btn velin-btn--primary">Ship it</button>
135
+ <velin-toast></velin-toast>
97
136
  </body>
98
137
  </html>
99
138
  ```
100
139
 
101
- ---
140
+ Scaffold + gate (local 1.2 tree / after publish):
102
141
 
103
- ## Core modules (1.0.0)
142
+ ```bash
143
+ npx @birdapi/velinstyle create landing ./my-site
144
+ cd my-site && npx @birdapi/velinstyle serve . && npx @birdapi/velinstyle check .
145
+ ```
104
146
 
105
- | Export | Description |
106
- | --- | --- |
107
- | `@birdapi/velinstyle/search` | Fuzzy offline search, providers, optional Web Worker |
108
- | `@birdapi/velinstyle/motion` | `initMotion`, stagger, smooth scroll, unified `.velin-in-view` |
109
- | `@birdapi/velinstyle/attributes` | Registry of declarative `velin-*` HTML attribute bridges |
110
- | `@birdapi/velinstyle/highlight` | `velinSyntax`, lazy language packs, OKLCH token colors |
111
- | `@birdapi/velinstyle/meta` | `buildAgentBundle`, page meta MIME `application/vnd.velinstyle.meta+json` |
147
+ More: [`GETTING_STARTED.md`](GETTING_STARTED.md)
112
148
 
113
149
  ---
114
150
 
115
- ## Web Components
116
-
117
- **38 canonical** custom elements (40 lazy-loader entries including legacy `velin-tooltip-wc` and `velin-stepper-wc`) — use plain CSS when you do not need behavior. `src/base/wc-placeholder.css` reduces layout shift before elements upgrade.
118
-
119
- Examples: `velin-modal`, `velin-search`, `velin-code-block`, `velin-drawer`, `velin-stepper`, `velin-tooltip`, `velin-toast`, `velin-persist`, `velin-data-table`, `velin-form-summary`.
151
+ ## CLI
120
152
 
121
- React wrappers for every canonical element ship in [`@velinstyle/react`](./packages/react/README.md).
153
+ | Command | Role |
154
+ |---------|------|
155
+ | `init` | Project config |
156
+ | `create` | Opinionated scaffolds (`landing` · `dashboard` · `docs` · `auth`) |
157
+ | `build` | CSS build (`--preset lite` for marketing) |
158
+ | `serve` | Static preview |
159
+ | `doctor` | Install / path health |
160
+ | `check` | doctor + blueprints + scan + review |
161
+ | `scan` | A11y / security / CSS / PII |
162
+ | `review` | Design-intelligence gate (beta) |
163
+ | `plan` | Prompt → plan JSON → render (beta) |
164
+ | `skills` / `workflow` | AI skill registry & graphs (beta) |
165
+ | `meta` | Agent bundle + `llms.txt` |
166
+ | `wc api <tag>` | Human-readable WC API from source |
122
167
 
123
- - [Component documentation](https://velinstyle.info/docs/components/buttons.html)
124
- - [Generated Web Component API](https://velinstyle.info/docs/generated/components/README.md)
168
+ ```bash
169
+ npx @birdapi/velinstyle check . --profile marketing
170
+ npx @birdapi/velinstyle wc api velin-toast
171
+ ```
125
172
 
126
173
  ---
127
174
 
128
- ## CLI
175
+ ## AI Skills & Design Intelligence
176
+
177
+ **AI Skills** give agents and humans a shared vocabulary: skill records, packs, bundles, templates, and workflow graphs. They exist so tooling can scaffold, review, and ship **without inventing VelinStyle from scratch**.
129
178
 
130
- | Command | Purpose |
131
- | --- | --- |
132
- | `npx velinstyle init` | Create `velinstyle.config.js` in your project |
133
- | `npx velinstyle scan` | Security, accessibility, CSS, and PII checks |
134
- | `npx velinstyle search index` | Build `dist/search-index.json` for offline doc search |
135
- | `npx velinstyle tokens build` | Compile design tokens JSON to CSS |
136
- | `npx velinstyle meta` | Generate `velin-agent.json` and `llms.txt` |
179
+ **Design Intelligence** adds structure ordinary CSS frameworks lack: a knowledge graph seed, page/section registries, design constraints, and `plan` / `review` so pages are assembled from known patterns — then checked against profiles (`marketing` · `app` · `docs` · `ecommerce`).
137
180
 
138
- Also: `npx velinstyle docs generate` Markdown reference under `docs/generated/`.
181
+ Deep dive: [`ARCHITECTURE.md`](ARCHITECTURE.md) · [`VELINSTYLE_2030.md`](VELINSTYLE_2030.md) · Strategy (lokal, nicht im Git): [`docs/strategy/README.md`](docs/strategy/README.md)
139
182
 
140
183
  ---
141
184
 
142
- ## Security
185
+ ## Components
143
186
 
144
- VelinStyle ships **first-class security tooling**, not an afterthought:
187
+ **40 canonical** custom elements (**42** lazy-loader entries including legacy `*-wc` aliases).
145
188
 
146
- - **`velinstyle scan`**markup and a11y rules; PII scanner (`--only pii`, `--fix`)
147
- - **`@birdapi/velinstyle/sanitize`** — URL and text sanitization helpers
148
- - **`<velin-secure-field>`** — no plaintext secrets in the DOM; hardened search/copy URLs
189
+ Philosophy: **progressive enhancement**semantic HTML + CSS first; upgrade to a Web Component only when you need behavior (focus traps, sorting, offline search).
149
190
 
150
- [Security documentation](https://velinstyle.info/docs/extend/security.html)
191
+ Highlights: `velin-modal`, `velin-drawer`, `velin-search`, `velin-data-table`, `velin-form-summary`, `velin-calendar`, `velin-file-dropzone`, `velin-toast`, `velin-code-block`.
192
+
193
+ React: [`@velinstyle/react`](./packages/react/README.md) wraps every canonical tag.
151
194
 
152
195
  ---
153
196
 
154
- ## Velin-Meta
197
+ ## Accessibility
155
198
 
156
- Machine-readable context for **Cursor, Copilot, and custom agents**:
199
+ Accessibility is a **default**, not a plugin.
157
200
 
158
- - **Global bundle** `dist/velin-agent.json` + `dist/llms.txt` via `velinstyle meta`
159
- - **Page-level meta** `<script type="application/vnd.velinstyle.meta+json" id="velin-meta">`
160
- - **CLI** `velinstyle meta page my.html --write`
201
+ - WCAG 2.2 **AAA-oriented** token defaults (`data-velin-contrast="aa"` when you need the lighter palette)
202
+ - Semantic HTML patterns and BEM components
203
+ - Keyboard support, focus management, `inert` overlays
204
+ - `prefers-reduced-motion` gating
205
+ - Component a11y contracts + scanner rules
161
206
 
162
- [Velin-Meta guide](https://velinstyle.info/docs/guides/velin-meta.html)
207
+ Docs: [a11y matrix](https://velinstyle.info/docs/a11y.html) · AAA marketing language: see `VELINSTYLE_2030.md` (strategy ADRs are local-only)
163
208
 
164
209
  ---
165
210
 
166
- ## Docs & website
167
-
168
- - [velinstyle.info](https://velinstyle.info) product site and demos
169
- - [Guides](https://velinstyle.info/docs/guides/index.html) · [Feature scope](https://velinstyle.info/docs/guides/feature-scope.html)
170
- - [API reference](https://velinstyle.info/docs/guides/api-reference.html) generated from source
171
- - [Generated Markdown](https://velinstyle.info/docs/generated/index.html) components, tokens, utilities, CLI, rules
211
+ ## Documentation map
212
+
213
+ | Layer | File / link | Audience |
214
+ |-------|-------------|----------|
215
+ | Landing | This README | First 30 seconds |
216
+ | First build | [`GETTING_STARTED.md`](GETTING_STARTED.md) | New adopters |
217
+ | FAQ | [`FAQ.md`](FAQ.md) | Common questions |
218
+ | Troubleshooting | [`TROUBLESHOOTING.md`](TROUBLESHOOTING.md) | When stuck |
219
+ | Deploy | [`DEPLOY.md`](DEPLOY.md) | Ship to production |
220
+ | Systems | [`ARCHITECTURE.md`](ARCHITECTURE.md) | Advanced / AI / DI |
221
+ | Design Intelligence | [`docs/guides/design-intelligence.md`](docs/guides/design-intelligence.md) | Plan / review |
222
+ | CLI ship surface | [`docs/guides/cli-ship-surface.md`](docs/guides/cli-ship-surface.md) | create / check / wc |
223
+ | AI Skills | [`docs/guides/ai-skills.md`](docs/guides/ai-skills.md) | Skills / workflows |
224
+ | Product site | [velinstyle.info/docs](https://velinstyle.info/docs/getting-started/introduction.html) | Guides, demos, reference |
225
+ | Upgrade | [`UPGRADING.md`](UPGRADING.md) | 1.1 → 1.2 |
226
+ | North star | [`VELINSTYLE_2030.md`](VELINSTYLE_2030.md) | Long-term vision |
172
227
 
173
228
  ---
174
229
 
175
- ## Changelog
230
+ ## Repository structure
176
231
 
177
- See [CHANGELOG.md](CHANGELOG.md) for releases, breaking changes, and migration notes.
232
+ ```
233
+ velinstyle/
234
+ ├── src/ # CSS source (tokens, base, components, utilities)
235
+ ├── components/ # Web Components (JS)
236
+ ├── core/ # Runtime: search, motion, highlight, attributes, meta
237
+ ├── cli/ # velinstyle binary
238
+ ├── packages/ # React wrappers, skill-engine, skills registry
239
+ ├── schemas/ # Design Intelligence + skill contracts
240
+ ├── docs/ # Docs + strategy ADRs
241
+ ├── samples/ # Local HTML samples
242
+ ├── templates/ # Starters (e.g. Vite + React)
243
+ ├── fixtures/ # Scanner / chaos fixtures
244
+ └── showcase-demos/ # Full-page demos
245
+ ```
178
246
 
179
247
  ---
180
248
 
181
- ## Comparison
249
+ ## Philosophy
250
+
251
+ **Mensch → Framework → Design Intelligence → AI**
182
252
 
183
- | | Bootstrap | Tailwind | Shoelace | **VelinStyle** |
184
- | --- | :---: | :---: | :---: | :---: |
185
- | HTML readability | Medium | Low | Medium | **High** |
186
- | Class predictability | Medium | Low | Medium | **`velin-btn--primary`** |
187
- | Utility sprawl | Low | **High** | Low | **Controlled** |
188
- | Override story | Hard | Config file | Shadow DOM | **CSS layers + tokens** |
189
- | Accessibility | Partial | DIY | Good WC | **WCAG 2.2 AAA tokens** |
190
- | Dark mode | Manual | `dark:` everywhere | Theme attr | **Token swap** |
191
- | App chrome | Legacy JS | BYO | WC only | **CSS + optional WCs** |
192
- | Ship speed | Fast | Fast (with build) | Fast | **CDN, no build required** |
193
- | Runtime modules | — | — | — | **Search, motion, meta, …** |
253
+ Humans own product intent. The framework ships reliable CSS and components. Design Intelligence encodes patterns and constraints. AI skills and workflows accelerate scaffolding and review — they **support** developers; they do not replace judgment, accessibility ownership, or design responsibility.
194
254
 
195
255
  ---
196
256
 
197
- ## Live demos
257
+ ## Roadmap (maturity)
198
258
 
199
- Full application pages on [velinstyle.info/demos/](https://velinstyle.info/demos/) — [Crypto](https://velinstyle.info/demos/showcase-crypto.html) · [E-Commerce](https://velinstyle.info/demos/showcase-ecommerce.html) · [Dashboard](https://velinstyle.info/demos/showcase-dashboard.html) · [All demos](https://velinstyle.info/demos/) · [Fork showcase-demos](https://github.com/SkyliteDesign/velinstyle/tree/main/showcase-demos)
259
+ | Status | Surfaces |
260
+ |--------|----------|
261
+ | **Stable** | CSS · Utilities · Runtime · Web Components · CLI core · Blueprints |
262
+ | **Beta** | Review Engine · Prompt Engine · Knowledge Graph · AI Metadata · Design Constraints |
263
+ | **Foundation** | AI Skills · Workflow Graphs · Registries |
264
+ | **Planned** | Studio · Utility Engine Generator |
200
265
 
201
- <p align="center">
202
- <a href="https://velinstyle.info/demos/showcase-crypto.html">
203
- <img src=".github/assets/readme/hero-demo.webp" alt="VelinStyle crypto dashboard demo" width="720">
204
- </a>
205
- </p>
266
+ ---
267
+
268
+ ## Comparison
269
+
270
+ | | Bootstrap | Tailwind | **VelinStyle** |
271
+ |---|:---:|:---:|:---:|
272
+ | HTML readability | Medium | Low | **High** |
273
+ | Utility sprawl | Low | High | **Controlled** |
274
+ | A11y defaults | Partial | DIY | **AAA-capable tokens** |
275
+ | Dark mode | Manual | `dark:` everywhere | **Token swap** |
276
+ | Build required | No | Usually | **CDN optional** |
277
+ | Design / AI gates | — | — | **plan · review · skills** |
206
278
 
207
279
  ---
208
280
 
209
281
  ## Contributing
210
282
 
211
- PRs welcome.
212
-
213
- 1. Fork the repo
214
- 2. `npm install && npm run build`
215
- 3. Make your change · run `npm test`, `npm run test:a11y`, and `npm run test:e2e` (after `npm run build`)
216
- 4. Open a pull request
283
+ 1. Fork → `npm install && npm run build`
284
+ 2. Change code · run `npm test`, `npm run test:a11y`, `npm run test:e2e`
285
+ 3. Open a PR
217
286
 
218
- See [CONTRIBUTING.md](CONTRIBUTING.md) for code style and review process.
287
+ See [`CONTRIBUTING.md`](CONTRIBUTING.md).
219
288
 
220
289
  ---
221
290
 
222
291
  ## License
223
292
 
224
- [MIT](LICENSE) — Copyright © 2026 VelinStyle
225
-
226
- <div align="center">
227
-
228
- Made with care for the web by [SkyliteDesign](https://github.com/SkyliteDesign)
293
+ [MIT](LICENSE) — © 2026 VelinStyle · [SkyliteDesign](https://github.com/SkyliteDesign)
229
294
 
230
- </div>
295
+ <p align="center">
296
+ <a href="https://velinstyle.info/demos/showcase-crypto.html">
297
+ <img src=".github/assets/readme/hero-demo.webp" alt="VelinStyle crypto dashboard demo" width="720">
298
+ </a>
299
+ </p>
package/cli/blueprint.js CHANGED
@@ -1,12 +1,18 @@
1
- import { readFileSync, existsSync, writeFileSync } from 'fs';
2
- import { join, dirname } from 'path';
1
+ import { readFileSync, existsSync, writeFileSync, readdirSync } from 'fs';
2
+ import { join, dirname, extname } from 'path';
3
3
  import { fileURLToPath } from 'url';
4
4
 
5
5
  const __dirname = dirname(fileURLToPath(import.meta.url));
6
+ const PKG_ROOT = join(__dirname, '..');
7
+ const BLUEPRINT_DIR = join(__dirname, 'blueprints');
8
+
6
9
  const BLUEPRINTS = {
7
10
  'alert-stack': 'alert-stack.html',
11
+ 'benefits-grid': 'benefits-grid.html',
8
12
  'breadcrumb-bar': 'breadcrumb-bar.html',
9
13
  'card-grid': 'card-grid.html',
14
+ 'cta-band': 'cta-band.html',
15
+ 'faq-section': 'faq-section.html',
10
16
  'footer-simple': 'footer-simple.html',
11
17
  'form-contact': 'form-contact.html',
12
18
  'form-login': 'form-login.html',
@@ -15,9 +21,13 @@ const BLUEPRINTS = {
15
21
  modal: 'modal.html',
16
22
  'navbar-header': 'navbar-header.html',
17
23
  'pagination-bar': 'pagination-bar.html',
24
+ 'process-steps': 'process-steps.html',
18
25
  'search-field': 'search-field.html',
26
+ 'services-grid': 'services-grid.html',
19
27
  'sidebar-layout': 'sidebar-layout.html',
20
28
  'table-responsive': 'table-responsive.html',
29
+ testimonials: 'testimonials.html',
30
+ 'trust-bar': 'trust-bar.html',
21
31
  'bottom-nav-mobile': 'bottom-nav-mobile.html',
22
32
  'empty-state': 'empty-state.html',
23
33
  'cookie-consent': 'cookie-consent.html',
@@ -26,18 +36,101 @@ const BLUEPRINTS = {
26
36
  'settings-panel': 'settings-panel.html',
27
37
  onboarding: 'onboarding.html',
28
38
  'pricing-table': 'pricing-table.html',
39
+ 'split-hero': 'split-hero.html',
40
+ 'pricing-band': 'pricing-band.html',
41
+ 'app-chrome': 'app-chrome.html',
42
+ 'ops-console': 'ops-console.html',
29
43
  };
30
44
 
45
+ const CLASS_RE = /class\s*=\s*["']([^"']+)["']/gi;
46
+ const CSS_CLASS_RE = /\.((?:velin|expo)-[a-z0-9_-]+)/gi;
47
+
48
+ let _cssClassCache = null;
49
+
50
+ function walkCssFiles(dir, out = []) {
51
+ if (!existsSync(dir)) return out;
52
+ for (const name of readdirSync(dir, { withFileTypes: true })) {
53
+ const full = join(dir, name.name);
54
+ if (name.isDirectory()) walkCssFiles(full, out);
55
+ else if (extname(name.name) === '.css') out.push(full);
56
+ }
57
+ return out;
58
+ }
59
+
60
+ /** Collect known CSS class names from framework source (+ optional dist). */
61
+ export function loadKnownCssClasses({ includeDist = true } = {}) {
62
+ if (_cssClassCache) return _cssClassCache;
63
+ const files = walkCssFiles(join(PKG_ROOT, 'src'));
64
+ if (includeDist) {
65
+ const distCss = join(PKG_ROOT, 'dist', 'velinstyle.css');
66
+ if (existsSync(distCss)) files.push(distCss);
67
+ }
68
+ const set = new Set();
69
+ for (const file of files) {
70
+ const css = readFileSync(file, 'utf-8');
71
+ for (const m of css.matchAll(CSS_CLASS_RE)) set.add(m[1]);
72
+ }
73
+ _cssClassCache = set;
74
+ return set;
75
+ }
76
+
77
+ export function extractVelinClasses(html) {
78
+ const classes = new Set();
79
+ for (const m of String(html || '').matchAll(CLASS_RE)) {
80
+ for (const token of m[1].split(/\s+/)) {
81
+ if (token.startsWith('velin-')) classes.add(token);
82
+ }
83
+ }
84
+ return [...classes];
85
+ }
86
+
87
+ /**
88
+ * @returns {{ ok: boolean, missing: string[], classes: string[] }}
89
+ */
90
+ export function validateBlueprintHtml(html, known = loadKnownCssClasses()) {
91
+ const classes = extractVelinClasses(html);
92
+ const missing = classes.filter((c) => !known.has(c));
93
+ return { ok: missing.length === 0, missing, classes };
94
+ }
95
+
96
+ export function validateBlueprintId(id, known = loadKnownCssClasses()) {
97
+ const file = BLUEPRINTS[id];
98
+ if (!file) return { ok: false, error: `Unknown blueprint "${id}"`, missing: [], classes: [] };
99
+ const path = join(BLUEPRINT_DIR, file);
100
+ if (!existsSync(path)) return { ok: false, error: `Missing template: ${path}`, missing: [], classes: [] };
101
+ const body = readFileSync(path, 'utf-8');
102
+ const result = validateBlueprintHtml(body, known);
103
+ return { ...result, id, path };
104
+ }
105
+
106
+ export function validateAllBlueprints(known = loadKnownCssClasses()) {
107
+ const results = [];
108
+ for (const id of listBlueprints()) {
109
+ results.push(validateBlueprintId(id, known));
110
+ }
111
+ return results;
112
+ }
113
+
31
114
  export function listBlueprints() {
32
- return Object.keys(BLUEPRINTS);
115
+ return Object.keys(BLUEPRINTS).sort();
33
116
  }
34
117
 
35
- export function emitBlueprint(id, { output } = {}) {
118
+ export function emitBlueprint(id, { output, strict = false } = {}) {
36
119
  const file = BLUEPRINTS[id];
37
120
  if (!file) return { ok: false, error: `Unknown blueprint "${id}". Try: ${listBlueprints().join(', ')}` };
38
- const path = join(__dirname, 'blueprints', file);
121
+ const path = join(BLUEPRINT_DIR, file);
39
122
  if (!existsSync(path)) return { ok: false, error: `Missing template: ${path}` };
40
123
  const body = readFileSync(path, 'utf-8');
124
+ if (strict) {
125
+ const v = validateBlueprintHtml(body);
126
+ if (!v.ok) {
127
+ return {
128
+ ok: false,
129
+ error: `Blueprint "${id}" emits unknown CSS classes: ${v.missing.join(', ')}. Fix templates or add utilities.`,
130
+ missing: v.missing,
131
+ };
132
+ }
133
+ }
41
134
  const banner = `<!-- Generated by velinstyle blueprint ${id} — VelinStyle tokens: --velin-color-*, --velin-space-*, --velin-radius-* -->\n`;
42
135
  const out = banner + body;
43
136
  if (output) {
@@ -0,0 +1,18 @@
1
+ <!-- VelinStyle blueprint: app chrome (menubar + command) -->
2
+ <header class="velin-flex velin-flex--justify-between velin-flex--items-center velin-flex--wrap velin-gap-3 velin-p-3 velin-border-block-end" role="banner">
3
+ <strong class="velin-text-lg">Brand</strong>
4
+ <velin-menubar aria-label="App menu">
5
+ <button type="button" data-menu="file">File</button>
6
+ <button type="button" data-menu="view">View</button>
7
+ <button type="button" data-menu="help">Help</button>
8
+ </velin-menubar>
9
+ <button type="button" class="velin-btn velin-btn--outline velin-btn--sm" id="open-command" aria-keyshortcuts="Control+K Meta+K">Command</button>
10
+ </header>
11
+ <velin-command id="app-command" aria-label="Command palette"></velin-command>
12
+ <script type="module">
13
+ // Prefer package entry; for offline vendor installs use: import './vendor/velinstyle/velinstyle-components.min.js';
14
+ import '@birdapi/velinstyle/bundle';
15
+ document.getElementById('open-command')?.addEventListener('click', () => {
16
+ document.getElementById('app-command')?.open?.();
17
+ });
18
+ </script>
@@ -0,0 +1,9 @@
1
+ <!-- VelinStyle blueprint: benefits grid -->
2
+ <section class="velin-container velin-py-8">
3
+ <h2 class="velin-text-3xl" style="font-weight:var(--velin-weight-semibold);margin-block-end:var(--velin-space-6)">Benefits</h2>
4
+ <div class="velin-grid velin-grid--auto-fit">
5
+ <article class="velin-card"><div class="velin-card__body"><h3 class="velin-card__title">Clarity first</h3><p class="velin-card__text">Plain-language guidance without jargon walls.</p></div></article>
6
+ <article class="velin-card"><div class="velin-card__body"><h3 class="velin-card__title">Reliable process</h3><p class="velin-card__text">Predictable steps from first call to delivery.</p></div></article>
7
+ <article class="velin-card"><div class="velin-card__body"><h3 class="velin-card__title">Accessible by default</h3><p class="velin-card__text">Interfaces that respect contrast, focus, and motion preferences.</p></div></article>
8
+ </div>
9
+ </section>
@@ -6,7 +6,8 @@
6
6
  </velin-bottom-nav>
7
7
  </nav>
8
8
  <script type="module">
9
- import '../../dist/velinstyle-components.min.js';
9
+ // Prefer package entry; for offline vendor installs use: import './vendor/velinstyle/velinstyle-components.min.js';
10
+ import '@birdapi/velinstyle/bundle';
10
11
  const nav = document.querySelector('velin-bottom-nav');
11
12
  nav?.querySelectorAll('a').forEach((link) => {
12
13
  link.addEventListener('click', (e) => {
@@ -1,6 +1,6 @@
1
1
  <aside class="velin-p-4 velin-border velin-rounded-lg velin-pb-safe" role="region" aria-label="Cookie consent">
2
2
  <div class="velin-user-content">
3
- <p class="velin-mbe-3">We use essential cookies only. No third-party trackers in this demo.</p>
3
+ <p class="velin-mbe-4">We use essential cookies only. No third-party trackers in this demo.</p>
4
4
  </div>
5
5
  <div class="velin-flex velin-gap-3">
6
6
  <button type="button" class="velin-btn velin-btn--primary">Accept</button>
@@ -0,0 +1,6 @@
1
+ <!-- VelinStyle blueprint: CTA band -->
2
+ <section class="velin-container velin-py-10" style="text-align:center">
3
+ <h2 class="velin-text-3xl" style="font-weight:var(--velin-weight-semibold);margin-block-end:var(--velin-space-3)">Ready to talk?</h2>
4
+ <p style="color:var(--velin-color-text-muted);margin-block-end:var(--velin-space-6)">Book a short intro call — no jargon, no pressure.</p>
5
+ <a class="velin-btn velin-btn--primary" href="#contact">Request a consultation</a>
6
+ </section>
@@ -0,0 +1,18 @@
1
+ <!-- VelinStyle blueprint: FAQ with accordion -->
2
+ <section class="velin-container velin-py-8" id="faq">
3
+ <h2 class="velin-text-3xl" style="font-weight:var(--velin-weight-semibold);margin-block-end:var(--velin-space-6)">FAQ</h2>
4
+ <velin-accordion>
5
+ <details>
6
+ <summary>What happens in the first meeting?</summary>
7
+ <p>We clarify goals, documents needed, and realistic next steps.</p>
8
+ </details>
9
+ <details>
10
+ <summary>How long does a typical engagement take?</summary>
11
+ <p>Timelines depend on scope; we share a clear plan before work starts.</p>
12
+ </details>
13
+ <details>
14
+ <summary>Do you work with remote clients?</summary>
15
+ <p>Yes — secure document exchange and scheduled calls are standard.</p>
16
+ </details>
17
+ </velin-accordion>
18
+ </section>