@birdapi/velinstyle 1.0.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 (321) hide show
  1. package/README.de.md +87 -158
  2. package/README.md +188 -115
  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-a11y.js +4 -2
  27. package/cli/docgen/extract-attributes.js +126 -10
  28. package/cli/docgen/extract-cli.js +3 -2
  29. package/cli/docgen/extract-components.js +61 -2
  30. package/cli/docgen/extract-utilities.js +10 -10
  31. package/cli/doctor.js +119 -0
  32. package/cli/index.js +535 -46
  33. package/cli/meta.js +84 -1
  34. package/cli/perf-audit.js +15 -2
  35. package/cli/prompt-engine.js +243 -0
  36. package/cli/review.js +268 -0
  37. package/cli/scaffold.js +119 -4
  38. package/cli/scanner-rules-data.js +7 -0
  39. package/cli/scanner.js +357 -4
  40. package/cli/serve.js +81 -0
  41. package/cli/skills.js +223 -0
  42. package/cli/wc-api.js +89 -0
  43. package/cli/workflow.js +42 -0
  44. package/components/index.js +4 -0
  45. package/components/runtime/component-loaders.js +4 -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 +438 -0
  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-form-summary.js +348 -0
  55. package/components/velin-icon.js +22 -1
  56. package/components/velin-lightbox.js +5 -3
  57. package/components/velin-modal.js +2 -4
  58. package/components/velin-search.js +1 -1
  59. package/components/velin-sheet.js +2 -4
  60. package/core/a11y/component-contracts.json +35 -1
  61. package/core/highlight/languages/go.js +28 -0
  62. package/core/highlight/languages/python.js +29 -0
  63. package/core/highlight/languages/rust.js +32 -0
  64. package/core/highlight/languages/yaml.js +23 -0
  65. package/core/highlight/registry.js +13 -2
  66. package/core/meta/build.js +126 -6
  67. package/core/meta/design-constraints/contact.json +9 -0
  68. package/core/meta/design-constraints/faq.json +9 -0
  69. package/core/meta/design-constraints/hero.json +13 -0
  70. package/core/meta/knowledge/components.json +622 -0
  71. package/core/meta/knowledge/tokens.json +282 -0
  72. package/core/meta/pages/registry.json +294 -0
  73. package/core/meta/schema.js +3 -1
  74. package/core/meta/sections/registry.json +185 -0
  75. package/dist/chunks/{attributes-TPANLMLF.js → attributes-A423NX5J.js} +3 -3
  76. package/dist/chunks/{attributes-ADOKLKA7.js → attributes-F6UPIEVP.js} +2 -2
  77. package/dist/chunks/{attributes-STYCS3O5.js → attributes-GLYXGGAL.js} +3 -3
  78. package/dist/chunks/{attributes-5Q2WXGRC.js → attributes-UFTYOSAU.js} +20 -3
  79. package/dist/chunks/attributes-XGLXLR2T.js +391 -0
  80. package/dist/chunks/attributes-YF4NI2QS.js +391 -0
  81. package/dist/chunks/browser-AUABBYUK.js +1544 -0
  82. package/dist/chunks/{chunk-SRL6EWHP.js → chunk-2LSKX57P.js} +13 -11
  83. package/dist/chunks/{chunk-RSMRR27R.js → chunk-2TGCVDUL.js} +11 -9
  84. package/dist/chunks/{chunk-XIET2VSZ.js → chunk-5JWGUAPC.js} +17 -13
  85. package/dist/chunks/chunk-7YSO2OQ2.js +113 -0
  86. package/dist/chunks/{chunk-IEHKRARD.js → chunk-BHR3ZG6U.js} +10 -8
  87. package/dist/chunks/{chunk-J472ERN2.js → chunk-ERF5YVP4.js} +15 -4
  88. package/dist/chunks/{chunk-XYLJ2GCB.js → chunk-JMSIHEYX.js} +55 -7
  89. package/dist/chunks/{chunk-MKZP2TBH.js → chunk-L7ZGUU4D.js} +2 -2
  90. package/dist/chunks/chunk-TUGIPKW5.js +113 -0
  91. package/dist/chunks/go-HZ6XTFCK.js +31 -0
  92. package/dist/chunks/{highlight-GJHHV4KM.js → highlight-IBDX4XWS.js} +1 -1
  93. package/dist/chunks/{highlight-XTHRKBA3.js → highlight-M2ELQNYK.js} +1 -1
  94. package/dist/chunks/python-BMPKDKNO.js +32 -0
  95. package/dist/chunks/runtime-entry.js +1 -1
  96. package/dist/chunks/rust-2BWKI2MN.js +35 -0
  97. package/dist/chunks/{velin-accordion-FBIPAEXG.js → velin-accordion-WSY6BMLA.js} +64 -10
  98. package/dist/chunks/{velin-bottom-nav-7GEMPIM6.js → velin-bottom-nav-5RVRNGIP.js} +25 -0
  99. package/dist/chunks/{velin-bottom-nav-2N2TYWOF.js → velin-bottom-nav-N5F4UO2I.js} +26 -1
  100. package/dist/chunks/velin-calendar-OFE6THUD.js +210 -0
  101. package/dist/chunks/velin-calendar-PGVNJTXK.js +217 -0
  102. package/dist/chunks/velin-calendar-XC7JRDSH.js +217 -0
  103. package/dist/chunks/{velin-code-block-CIAURDRJ.js → velin-code-block-ITCLIC6T.js} +1 -1
  104. package/dist/chunks/{velin-code-block-TSUKPY4C.js → velin-code-block-ZGWG7JI5.js} +12 -3
  105. package/dist/chunks/{velin-combobox-NXS4QB4R.js → velin-combobox-56V2ZWT5.js} +1 -1
  106. package/dist/chunks/{velin-command-ONKO2A3J.js → velin-command-2HO2EKR6.js} +29 -2
  107. package/dist/chunks/{velin-command-TMLSRGIU.js → velin-command-ZJSLPK7B.js} +30 -3
  108. package/dist/chunks/{velin-copy-NYDBOKXT.js → velin-copy-XDQSV2XU.js} +1 -1
  109. package/dist/chunks/{velin-countdown-4ZVDGK4R.js → velin-countdown-V4Z5MA63.js} +1 -1
  110. package/dist/chunks/velin-data-table-KK7IDGTP.js +302 -0
  111. package/dist/chunks/velin-data-table-UVR42UUM.js +372 -0
  112. package/dist/chunks/{velin-dialog-GTTZI564.js → velin-dialog-3YK2RPRV.js} +9 -2
  113. package/dist/chunks/{velin-dialog-ELFOZIXZ.js → velin-dialog-S24KAP4S.js} +3 -1
  114. package/dist/chunks/{velin-drawer-BE6TYN3H.js → velin-drawer-5PNU624J.js} +2 -4
  115. package/dist/chunks/{velin-drawer-DLL2GLT6.js → velin-drawer-CCM6S25D.js} +3 -5
  116. package/dist/chunks/{velin-email-RBX6ZR4S.js → velin-email-TNFONXPW.js} +1 -1
  117. package/dist/chunks/velin-file-dropzone-QRGF2JNA.js +154 -0
  118. package/dist/chunks/velin-file-dropzone-XIZMJ3NB.js +154 -0
  119. package/dist/chunks/velin-form-summary-XRQ7COQH.js +273 -0
  120. package/dist/chunks/{velin-icon-7M76DOPB.js → velin-icon-A6NCXGUK.js} +59 -17
  121. package/dist/chunks/{velin-icon-ZTSKUOVN.js → velin-icon-EC4B5XCM.js} +18 -5
  122. package/dist/chunks/{velin-lightbox-6E7CAATP.js → velin-lightbox-FFK4TUUP.js} +7 -6
  123. package/dist/chunks/{velin-lightbox-I75U6JF4.js → velin-lightbox-P725FLTY.js} +15 -5
  124. package/dist/chunks/{velin-menubar-J66JXRWW.js → velin-menubar-6I2LM5HL.js} +1 -1
  125. package/dist/chunks/{velin-modal-5HYNNNUI.js → velin-modal-ICTMGRSU.js} +7 -8
  126. package/dist/chunks/{velin-modal-AEOTZ67O.js → velin-modal-JBNODH7D.js} +2 -4
  127. package/dist/chunks/{velin-popover-T72HK3DF.js → velin-popover-WZG2GHBL.js} +25 -4
  128. package/dist/chunks/{velin-rating-N4DI2XNL.js → velin-rating-QBBYRRBU.js} +1 -1
  129. package/dist/chunks/{velin-search-7B4KJ6TX.js → velin-search-B3L6J2RP.js} +2 -2
  130. package/dist/chunks/{velin-search-2XRQFBCS.js → velin-search-L3UG6NDQ.js} +5 -4
  131. package/dist/chunks/{velin-secure-field-6PV7RZDJ.js → velin-secure-field-DGYMP7OK.js} +1 -1
  132. package/dist/chunks/{velin-segmented-control-GYD5BIXQ.js → velin-segmented-control-P74GJPAR.js} +1 -1
  133. package/dist/chunks/{velin-sheet-R2Y67X6H.js → velin-sheet-M5GZZD7G.js} +2 -4
  134. package/dist/chunks/{velin-sheet-OUK6572T.js → velin-sheet-X7RXIWKV.js} +3 -5
  135. package/dist/chunks/{velin-stepper-X54WGHDG.js → velin-stepper-4YQJUHPC.js} +12 -5
  136. package/dist/chunks/{velin-toast-OMMOA2DK.js → velin-toast-UG5LWTG2.js} +5 -1
  137. package/dist/chunks/{velin-tooltip-BDHGRTQB.js → velin-tooltip-ZDH5SDLU.js} +1 -1
  138. package/dist/chunks/yaml-O67LEQYT.js +26 -0
  139. package/dist/llms.txt +29 -7
  140. package/dist/search-index.json +182 -10
  141. package/dist/velin-agent.json +3997 -26
  142. package/dist/velinstyle-components.iife.js +1952 -287
  143. package/dist/velinstyle-components.js +1956 -287
  144. package/dist/velinstyle-components.min.js +267 -119
  145. package/dist/velinstyle.css +381 -67
  146. package/dist/velinstyle.d.ts +4 -0
  147. package/dist/velinstyle.min.css +1 -1
  148. package/package.json +26 -6
  149. package/packages/skill-engine/README.md +24 -0
  150. package/packages/skill-engine/package.json +7 -0
  151. package/packages/skill-engine/src/catalog.js +29 -0
  152. package/packages/skill-engine/src/index.js +5 -0
  153. package/packages/skill-engine/src/install.js +69 -0
  154. package/packages/skill-engine/src/registry.js +27 -0
  155. package/packages/skill-engine/src/resolve.js +68 -0
  156. package/packages/skill-engine/src/validate.js +40 -0
  157. package/packages/velinstyle-skills/README.md +6 -0
  158. package/packages/velinstyle-skills/adapter.json +8 -0
  159. package/packages/velinstyle-skills/bundles/landing-starter.bundle.yaml +12 -0
  160. package/packages/velinstyle-skills/bundles/review-suite.bundle.yaml +11 -0
  161. package/packages/velinstyle-skills/catalog.json +1004 -0
  162. package/packages/velinstyle-skills/graphs/component-ship.graph.yaml +14 -0
  163. package/packages/velinstyle-skills/graphs/landingpage.graph.yaml +21 -0
  164. package/packages/velinstyle-skills/graphs/release-gate.graph.yaml +15 -0
  165. package/packages/velinstyle-skills/index.js +22 -0
  166. package/packages/velinstyle-skills/package.json +7 -0
  167. package/packages/velinstyle-skills/packs/accessibility.pack.yaml +9 -0
  168. package/packages/velinstyle-skills/packs/design.pack.yaml +10 -0
  169. package/packages/velinstyle-skills/packs/documentation.pack.yaml +8 -0
  170. package/packages/velinstyle-skills/packs/enterprise.pack.yaml +10 -0
  171. package/packages/velinstyle-skills/packs/frontend.pack.yaml +10 -0
  172. package/packages/velinstyle-skills/packs/review.pack.yaml +9 -0
  173. package/packages/velinstyle-skills/projects/admin-panel.project.yaml +12 -0
  174. package/packages/velinstyle-skills/projects/blog.project.yaml +11 -0
  175. package/packages/velinstyle-skills/projects/documentation-portal.project.yaml +13 -0
  176. package/packages/velinstyle-skills/projects/ecommerce-shop.project.yaml +12 -0
  177. package/packages/velinstyle-skills/projects/landing-page.project.yaml +12 -0
  178. package/packages/velinstyle-skills/projects/laravel-dashboard.project.yaml +12 -0
  179. package/packages/velinstyle-skills/projects/marketing-website.project.yaml +14 -0
  180. package/packages/velinstyle-skills/projects/portfolio.project.yaml +12 -0
  181. package/packages/velinstyle-skills/registry.json +142 -0
  182. package/packages/velinstyle-skills/scripts/generate-assets.mjs +163 -0
  183. package/packages/velinstyle-skills/skills/velin-a11y-focus-keyboard/SKILL.md +57 -0
  184. package/packages/velinstyle-skills/skills/velin-a11y-page-checklist/SKILL.md +57 -0
  185. package/packages/velinstyle-skills/skills/velin-a11y-scan-fix/SKILL.md +57 -0
  186. package/packages/velinstyle-skills/skills/velin-ai-agent-briefing/SKILL.md +57 -0
  187. package/packages/velinstyle-skills/skills/velin-ai-plan-scaffold-review/SKILL.md +57 -0
  188. package/packages/velinstyle-skills/skills/velin-ai-skill-authoring/SKILL.md +57 -0
  189. package/packages/velinstyle-skills/skills/velin-components-accessibility-map/SKILL.md +57 -0
  190. package/packages/velinstyle-skills/skills/velin-components-api-contract/SKILL.md +57 -0
  191. package/packages/velinstyle-skills/skills/velin-components-recipe/SKILL.md +57 -0
  192. package/packages/velinstyle-skills/skills/velin-components-select-compose/SKILL.md +57 -0
  193. package/packages/velinstyle-skills/skills/velin-design-hero-compose/SKILL.md +57 -0
  194. package/packages/velinstyle-skills/skills/velin-design-section-rhythm/SKILL.md +57 -0
  195. package/packages/velinstyle-skills/skills/velin-design-surface-roles/SKILL.md +57 -0
  196. package/packages/velinstyle-skills/skills/velin-dev-component-wire/SKILL.md +57 -0
  197. package/packages/velinstyle-skills/skills/velin-dev-page-scaffold/SKILL.md +57 -0
  198. package/packages/velinstyle-skills/skills/velin-dev-plan-first/SKILL.md +57 -0
  199. package/packages/velinstyle-skills/skills/velin-docs-component-guide/SKILL.md +57 -0
  200. package/packages/velinstyle-skills/skills/velin-docs-generate-api/SKILL.md +57 -0
  201. package/packages/velinstyle-skills/skills/velin-dx-doctor-setup/SKILL.md +57 -0
  202. package/packages/velinstyle-skills/skills/velin-dx-project-init/SKILL.md +57 -0
  203. package/packages/velinstyle-skills/skills/velin-migration-legacy-wc/SKILL.md +57 -0
  204. package/packages/velinstyle-skills/skills/velin-migration-prefix-classes/SKILL.md +57 -0
  205. package/packages/velinstyle-skills/skills/velin-motion-reduced-safe/SKILL.md +57 -0
  206. package/packages/velinstyle-skills/skills/velin-motion-reveal-feedback/SKILL.md +57 -0
  207. package/packages/velinstyle-skills/skills/velin-perf-audit-fix/SKILL.md +57 -0
  208. package/packages/velinstyle-skills/skills/velin-perf-runtime-tree-shake/SKILL.md +57 -0
  209. package/packages/velinstyle-skills/skills/velin-release-changelog-sync/SKILL.md +57 -0
  210. package/packages/velinstyle-skills/skills/velin-release-meta-rebuild/SKILL.md +57 -0
  211. package/packages/velinstyle-skills/skills/velin-review-conversion-hero/SKILL.md +57 -0
  212. package/packages/velinstyle-skills/skills/velin-review-page-gate/SKILL.md +57 -0
  213. package/packages/velinstyle-skills/skills/velin-review-seo-meta/SKILL.md +57 -0
  214. package/packages/velinstyle-skills/skills/velin-security-sanitize-html/SKILL.md +57 -0
  215. package/packages/velinstyle-skills/skills/velin-security-scan-pii/SKILL.md +57 -0
  216. package/packages/velinstyle-skills/skills/velin-testing-a11y-suite/SKILL.md +57 -0
  217. package/packages/velinstyle-skills/skills/velin-testing-visual-smoke/SKILL.md +57 -0
  218. package/packages/velinstyle-skills/skills/velin-themes-apply-token/SKILL.md +57 -0
  219. package/packages/velinstyle-skills/skills/velin-themes-contrast-check/SKILL.md +57 -0
  220. package/packages/velinstyle-skills/skills/velin-utilities-layout-apply/SKILL.md +57 -0
  221. package/packages/velinstyle-skills/skills/velin-utilities-prefix-fix/SKILL.md +57 -0
  222. package/packages/velinstyle-skills/skills/velin-utilities-token-map/SKILL.md +57 -0
  223. package/packages/velinstyle-skills/templates/admin-panel.template.yaml +12 -0
  224. package/packages/velinstyle-skills/templates/blog.template.yaml +12 -0
  225. package/packages/velinstyle-skills/templates/documentation-portal.template.yaml +12 -0
  226. package/packages/velinstyle-skills/templates/ecommerce-shop.template.yaml +13 -0
  227. package/packages/velinstyle-skills/templates/landing-page.template.yaml +12 -0
  228. package/packages/velinstyle-skills/templates/laravel-dashboard.template.yaml +11 -0
  229. package/packages/velinstyle-skills/templates/marketing-website.template.yaml +13 -0
  230. package/packages/velinstyle-skills/templates/portfolio.template.yaml +12 -0
  231. package/schemas/component-knowledge.schema.json +33 -0
  232. package/schemas/design-constraint.schema.json +15 -0
  233. package/schemas/design-intelligence.schema.json +19 -0
  234. package/schemas/design-rule.schema.json +19 -0
  235. package/schemas/page-template.schema.json +24 -0
  236. package/schemas/review-report.schema.json +36 -0
  237. package/schemas/section.schema.json +22 -0
  238. package/schemas/skill-bundle.schema.json +15 -0
  239. package/schemas/skill-graph.schema.json +25 -0
  240. package/schemas/skill-pack.schema.json +14 -0
  241. package/schemas/skill-project.schema.json +16 -0
  242. package/schemas/skill-record.schema.json +27 -0
  243. package/schemas/skill-registry.schema.json +17 -0
  244. package/schemas/skill-template.schema.json +17 -0
  245. package/schemas/token-graph.schema.json +27 -0
  246. package/schemas/utility.schema.json +166 -0
  247. package/src/base/wc-placeholder.css +7 -0
  248. package/src/components/alert.css +22 -1
  249. package/src/components/calendar-dropzone.css +5 -0
  250. package/src/components/data-table.css +93 -0
  251. package/src/components/form-validation.css +40 -0
  252. package/src/layout/app-shell.css +33 -0
  253. package/src/tokens/shadow.css +13 -0
  254. package/src/utilities/border.css +2 -0
  255. package/src/utilities/display.css +1 -24
  256. package/src/utilities/responsive.css +16 -1
  257. package/src/utilities/spacing.css +32 -0
  258. package/src/velinstyle.css +3 -0
  259. package/dist/chunks/attributes-3BZLI7XF.js +0 -364
  260. package/dist/chunks/attributes-4N5JP4CG.js +0 -364
  261. package/dist/chunks/attributes-AIR7SVLK.js +0 -364
  262. package/dist/chunks/attributes-BGRN5XZO.js +0 -364
  263. package/dist/chunks/attributes-BVSQAYLR.js +0 -364
  264. package/dist/chunks/attributes-CDYFUY7Y.js +0 -364
  265. package/dist/chunks/attributes-JMYJZBPE.js +0 -364
  266. package/dist/chunks/attributes-R5JY3X4O.js +0 -374
  267. package/dist/chunks/attributes-TNSPQTHX.js +0 -374
  268. package/dist/chunks/chunk-2354NEBP.js +0 -109
  269. package/dist/chunks/chunk-2VNA7G7S.js +0 -109
  270. package/dist/chunks/chunk-AQLRJSGG.js +0 -109
  271. package/dist/chunks/chunk-EWPSDMQT.js +0 -109
  272. package/dist/chunks/chunk-LA7264K4.js +0 -85
  273. package/dist/chunks/chunk-QTJJ3DPO.js +0 -109
  274. package/dist/chunks/chunk-RZQVWFHW.js +0 -109
  275. package/dist/chunks/chunk-U4XHMZ7D.js +0 -109
  276. package/dist/chunks/chunk-V5YIUA6G.js +0 -109
  277. package/dist/chunks/chunk-ZPSPKUYD.js +0 -109
  278. package/dist/chunks/velin-bottom-nav-N3DFQR66.js +0 -86
  279. package/dist/chunks/velin-carousel-Y5VCOABZ.js +0 -213
  280. package/dist/chunks/velin-code-block-ASUBTAQV.js +0 -119
  281. package/dist/chunks/velin-code-block-Y6CM726Q.js +0 -119
  282. package/dist/chunks/velin-combobox-2KDTCQ7N.js +0 -155
  283. package/dist/chunks/velin-command-M7RNHUPR.js +0 -136
  284. package/dist/chunks/velin-copy-T5KDTDXP.js +0 -81
  285. package/dist/chunks/velin-countdown-5XSTN3BH.js +0 -101
  286. package/dist/chunks/velin-counter-ISCTEAHI.js +0 -118
  287. package/dist/chunks/velin-dialog-D2GUHSCD.js +0 -144
  288. package/dist/chunks/velin-dialog-IJLFDXAJ.js +0 -144
  289. package/dist/chunks/velin-dialog-TNS3WXMB.js +0 -144
  290. package/dist/chunks/velin-drawer-MJS6WCF7.js +0 -130
  291. package/dist/chunks/velin-email-N5B5ZYTE.js +0 -90
  292. package/dist/chunks/velin-icon-KZO3IEHG.js +0 -164
  293. package/dist/chunks/velin-lightbox-QOTB4PRL.js +0 -140
  294. package/dist/chunks/velin-lightbox-UCD6N7HF.js +0 -140
  295. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +0 -67
  296. package/dist/chunks/velin-menubar-SFEXJE56.js +0 -86
  297. package/dist/chunks/velin-modal-2HOBXE6F.js +0 -176
  298. package/dist/chunks/velin-modal-GLI2XZZB.js +0 -176
  299. package/dist/chunks/velin-popover-EXINRIGJ.js +0 -145
  300. package/dist/chunks/velin-popover-OXX7MRZ6.js +0 -145
  301. package/dist/chunks/velin-popover-YKCCROJG.js +0 -145
  302. package/dist/chunks/velin-rating-XRQJV4LO.js +0 -91
  303. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +0 -58
  304. package/dist/chunks/velin-search-4YHJWYSS.js +0 -556
  305. package/dist/chunks/velin-search-LWHY23Q5.js +0 -474
  306. package/dist/chunks/velin-secure-field-H7FSBUJW.js +0 -95
  307. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +0 -109
  308. package/dist/chunks/velin-sheet-3OGI4HD7.js +0 -119
  309. package/dist/chunks/velin-sparkline-GVEANJVW.js +0 -184
  310. package/dist/chunks/velin-sparkline-KDA3GQAN.js +0 -162
  311. package/dist/chunks/velin-stepper-2ZIHLKGM.js +0 -141
  312. package/dist/chunks/velin-stepper-FYEUEWE6.js +0 -141
  313. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +0 -133
  314. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +0 -285
  315. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +0 -285
  316. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +0 -291
  317. package/dist/chunks/velin-toast-RCZ4CSUC.js +0 -109
  318. package/dist/chunks/velin-toast-WEUBTJG6.js +0 -109
  319. package/dist/chunks/velin-tooltip-664IOHZA.js +0 -112
  320. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +0 -103
  321. package/dist/chunks/worker-client-R6DBYPFT.js +0 -46
@@ -146,7 +146,6 @@ var VelinModal = class extends HTMLElement {
146
146
  this._previouslyFocused = saveFocus();
147
147
  setBackgroundInert(this);
148
148
  document.addEventListener("keydown", this._onKeydown);
149
- document.body.style.overflow = "hidden";
150
149
  requestAnimationFrame(() => {
151
150
  const focusable = getFocusableElements(this.shadowRoot);
152
151
  if (focusable.length > 0) focusable[0].focus();
@@ -154,8 +153,7 @@ var VelinModal = class extends HTMLElement {
154
153
  }
155
154
  _close() {
156
155
  document.removeEventListener("keydown", this._onKeydown);
157
- document.body.style.overflow = "";
158
- clearBackgroundInert();
156
+ clearBackgroundInert(this);
159
157
  restoreFocus(this._previouslyFocused);
160
158
  }
161
159
  _onKeydown(event) {
@@ -167,7 +165,7 @@ var VelinModal = class extends HTMLElement {
167
165
  }
168
166
  disconnectedCallback() {
169
167
  document.removeEventListener("keydown", this._onKeydown);
170
- document.body.style.overflow = "";
168
+ clearBackgroundInert(this);
171
169
  }
172
170
  };
173
171
  customElements.define("velin-modal", VelinModal);
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-42VVPW6N.js";
7
7
  import {
8
8
  escapeHTML
9
- } from "./chunk-RDE3QE7Z.js";
9
+ } from "./chunk-L7ZGUU4D.js";
10
10
 
11
11
  // components/velin-popover.js
12
12
  var styles = `
@@ -65,23 +65,44 @@ var VelinPopover = class extends HTMLElement {
65
65
  </div>
66
66
  `;
67
67
  const popoverEl = this.shadowRoot.querySelector(".popover");
68
- if (!title) {
69
- const ariaLabel = this.getAttribute("aria-label");
70
- if (ariaLabel && popoverEl) popoverEl.setAttribute("aria-label", ariaLabel);
68
+ if (!title && popoverEl) {
69
+ const fallback = this.getAttribute("aria-label") || (role === "tooltip" ? "Tooltip" : "Popover");
70
+ popoverEl.setAttribute("aria-label", fallback);
71
71
  }
72
72
  const triggerSlot = this.shadowRoot.querySelector('slot[name="trigger"]');
73
73
  triggerSlot.addEventListener("slotchange", () => this._wireTrigger(triggerType));
74
74
  this._wireTrigger(triggerType);
75
75
  }
76
+ _ensureTriggerInteractive(trigger) {
77
+ const tag = trigger.tagName;
78
+ if (tag !== "BUTTON" && tag !== "A" && trigger.getAttribute("role") !== "button") {
79
+ trigger.setAttribute("role", "button");
80
+ if (!trigger.hasAttribute("tabindex")) trigger.setAttribute("tabindex", "0");
81
+ }
82
+ }
83
+ _onTriggerKey(e) {
84
+ if (e.key === "Escape") {
85
+ this.close();
86
+ return;
87
+ }
88
+ if (e.key === "Enter" || e.key === " ") {
89
+ e.preventDefault();
90
+ this.toggle();
91
+ }
92
+ }
76
93
  _wireTrigger(triggerType) {
77
94
  const trigger = this.shadowRoot.querySelector('slot[name="trigger"]')?.assignedElements()[0];
78
95
  if (!trigger) return;
96
+ this._ensureTriggerInteractive(trigger);
79
97
  const isHover = triggerType === "hover";
80
98
  trigger.setAttribute("aria-haspopup", isHover ? "true" : "dialog");
81
99
  trigger.setAttribute("aria-expanded", this.hasAttribute("open") ? "true" : "false");
82
100
  if (this._isDialog) {
83
101
  trigger.setAttribute("aria-controls", this._popoverId);
84
102
  }
103
+ trigger.removeEventListener("keydown", this._onTriggerKeyBound);
104
+ this._onTriggerKeyBound = this._onTriggerKeyBound || this._onTriggerKey.bind(this);
105
+ trigger.addEventListener("keydown", this._onTriggerKeyBound);
85
106
  if (triggerType === "click") {
86
107
  trigger.onclick = () => this.toggle();
87
108
  } else if (triggerType === "hover") {
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-42VVPW6N.js";
7
7
  import {
8
8
  escapeHTML
9
- } from "./chunk-MKZP2TBH.js";
9
+ } from "./chunk-L7ZGUU4D.js";
10
10
 
11
11
  // components/velin-rating.js
12
12
  var styles = `
@@ -284,7 +284,7 @@ function createSearch(config = {}) {
284
284
  async function getWorker() {
285
285
  if (!wantWorker || workerClient) return workerClient;
286
286
  if (typeof Worker === "undefined") return null;
287
- const { createSearchWorker } = await import("./worker-client-R6DBYPFT.js");
287
+ const { createSearchWorker } = await import("./worker-client-MPT7PNQ4.js");
288
288
  workerClient = createSearchWorker(config.workerUrl);
289
289
  return workerClient;
290
290
  }
@@ -427,7 +427,7 @@ var VelinSearch = class extends HTMLElement {
427
427
  return;
428
428
  }
429
429
  if (!this._indexLoaded) await this._loadIndex();
430
- const { groups } = this._search.query(q, {
430
+ const { groups } = await this._search.query(q, {
431
431
  minChars: this.minChars,
432
432
  fuzzy: this.fuzzy,
433
433
  categories: this.categories || void 0,
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  escapeHTMLAttribute,
3
3
  sanitizeSearchUrl
4
- } from "./chunk-RDE3QE7Z.js";
4
+ } from "./chunk-L7ZGUU4D.js";
5
5
 
6
6
  // core/search/types.js
7
7
  var SEARCH_CATEGORIES = (
@@ -284,7 +284,7 @@ function createSearch(config = {}) {
284
284
  async function getWorker() {
285
285
  if (!wantWorker || workerClient) return workerClient;
286
286
  if (typeof Worker === "undefined") return null;
287
- const { createSearchWorker } = await import("./worker-client-R6DBYPFT.js");
287
+ const { createSearchWorker } = await import("./worker-client-MPT7PNQ4.js");
288
288
  workerClient = createSearchWorker(config.workerUrl);
289
289
  return workerClient;
290
290
  }
@@ -368,12 +368,13 @@ var VelinSearch = class extends HTMLElement {
368
368
  _ensureMarkup() {
369
369
  if (this.querySelector("[data-velin-search-input]")) return;
370
370
  const ph = escapeHTMLAttribute(this.getAttribute("placeholder") || "Search\u2026");
371
+ const label = escapeHTMLAttribute(this.getAttribute("aria-label") || "Search");
371
372
  this.innerHTML = `
372
373
  <div class="velin-search">
373
374
  <div class="velin-search__field">
374
375
  <input type="search" class="velin-search__input" data-velin-search-input
375
376
  placeholder="${ph}" autocomplete="off" role="combobox" aria-expanded="false"
376
- aria-controls="${this._listId}" aria-autocomplete="list" />
377
+ aria-label="${label}" aria-controls="${this._listId}" aria-autocomplete="list" />
377
378
  </div>
378
379
  <div class="velin-search__status velin-visually-hidden" data-velin-search-status aria-live="polite" aria-atomic="true"></div>
379
380
  <div class="velin-search__results" data-velin-search-results role="listbox"
@@ -426,7 +427,7 @@ var VelinSearch = class extends HTMLElement {
426
427
  return;
427
428
  }
428
429
  if (!this._indexLoaded) await this._loadIndex();
429
- const { groups } = this._search.query(q, {
430
+ const { groups } = await this._search.query(q, {
430
431
  minChars: this.minChars,
431
432
  fuzzy: this.fuzzy,
432
433
  categories: this.categories || void 0,
@@ -2,7 +2,7 @@ import {
2
2
  escapeHTML,
3
3
  escapeHTMLAttribute,
4
4
  sanitizeInputType
5
- } from "./chunk-MKZP2TBH.js";
5
+ } from "./chunk-L7ZGUU4D.js";
6
6
 
7
7
  // components/velin-secure-field.js
8
8
  var styles = `
@@ -6,7 +6,7 @@ import {
6
6
  } from "./chunk-42VVPW6N.js";
7
7
  import {
8
8
  escapeHTML
9
- } from "./chunk-MKZP2TBH.js";
9
+ } from "./chunk-L7ZGUU4D.js";
10
10
 
11
11
  // components/velin-segmented-control.js
12
12
  var styles = `
@@ -88,7 +88,6 @@ var VelinSheet = class extends HTMLElement {
88
88
  this._prev = saveFocus();
89
89
  setBackgroundInert(this);
90
90
  document.addEventListener("keydown", this._onKey);
91
- document.body.style.overflow = "hidden";
92
91
  requestAnimationFrame(() => {
93
92
  const f = getFocusableElements(this.shadowRoot);
94
93
  if (f.length) f[0].focus();
@@ -96,8 +95,7 @@ var VelinSheet = class extends HTMLElement {
96
95
  }
97
96
  _close() {
98
97
  document.removeEventListener("keydown", this._onKey);
99
- document.body.style.overflow = "";
100
- clearBackgroundInert();
98
+ clearBackgroundInert(this);
101
99
  restoreFocus(this._prev);
102
100
  }
103
101
  _onKey(e) {
@@ -109,7 +107,7 @@ var VelinSheet = class extends HTMLElement {
109
107
  }
110
108
  disconnectedCallback() {
111
109
  document.removeEventListener("keydown", this._onKey);
112
- document.body.style.overflow = "";
110
+ clearBackgroundInert(this);
113
111
  }
114
112
  };
115
113
  customElements.define("velin-sheet", VelinSheet);
@@ -11,7 +11,7 @@ import {
11
11
  } from "./chunk-42VVPW6N.js";
12
12
  import {
13
13
  escapeHTML
14
- } from "./chunk-MKZP2TBH.js";
14
+ } from "./chunk-L7ZGUU4D.js";
15
15
 
16
16
  // components/velin-sheet.js
17
17
  var styles = `
@@ -88,7 +88,6 @@ var VelinSheet = class extends HTMLElement {
88
88
  this._prev = saveFocus();
89
89
  setBackgroundInert(this);
90
90
  document.addEventListener("keydown", this._onKey);
91
- document.body.style.overflow = "hidden";
92
91
  requestAnimationFrame(() => {
93
92
  const f = getFocusableElements(this.shadowRoot);
94
93
  if (f.length) f[0].focus();
@@ -96,8 +95,7 @@ var VelinSheet = class extends HTMLElement {
96
95
  }
97
96
  _close() {
98
97
  document.removeEventListener("keydown", this._onKey);
99
- document.body.style.overflow = "";
100
- clearBackgroundInert();
98
+ clearBackgroundInert(this);
101
99
  restoreFocus(this._prev);
102
100
  }
103
101
  _onKey(e) {
@@ -109,7 +107,7 @@ var VelinSheet = class extends HTMLElement {
109
107
  }
110
108
  disconnectedCallback() {
111
109
  document.removeEventListener("keydown", this._onKey);
112
- document.body.style.overflow = "";
110
+ clearBackgroundInert(this);
113
111
  }
114
112
  };
115
113
  customElements.define("velin-sheet", VelinSheet);
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  escapeHTML
3
- } from "./chunk-RDE3QE7Z.js";
3
+ } from "./chunk-L7ZGUU4D.js";
4
4
 
5
5
  // components/velin-stepper.js
6
6
  var styles = `
@@ -52,10 +52,14 @@ var styles = `
52
52
  .panels ::slotted(*) { display: none; }
53
53
  .panels ::slotted([data-active]) { display: block; }
54
54
  @media (prefers-reduced-motion: reduce) { .step__marker { transition: none; } }
55
+ .velin-sr-only {
56
+ position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
57
+ overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
58
+ }
55
59
  `;
56
60
  var VelinStepper = class extends HTMLElement {
57
61
  static get observedAttributes() {
58
- return ["active"];
62
+ return ["active", "aria-label", "labels"];
59
63
  }
60
64
  constructor() {
61
65
  super();
@@ -68,15 +72,18 @@ var VelinStepper = class extends HTMLElement {
68
72
  }
69
73
  _buildSteps() {
70
74
  const labels = (this.getAttribute("labels") || "").split(",").map((s) => s.trim());
75
+ const listLabel = this.getAttribute("aria-label") || "Progress";
71
76
  const stepsHTML = labels.map((label, i) => {
72
77
  const state = i < this._current ? "completed" : i === this._current ? "active" : "";
73
- const marker = i < this._current ? "&#10003;" : i + 1;
78
+ const status = i < this._current ? "completed" : i === this._current ? "current step" : "upcoming";
79
+ const marker = i < this._current ? '<span class="velin-sr-only">Completed</span><span aria-hidden="true">&#10003;</span>' : `<span aria-hidden="true">${i + 1}</span>`;
74
80
  const ariaCurrent = i === this._current ? ' aria-current="step"' : "";
75
- return `<div class="step ${state}" role="listitem"${ariaCurrent}><span class="step__marker" aria-hidden="true">${marker}</span><span class="step__label">${escapeHTML(label)}</span></div>`;
81
+ const itemLabel = label ? `${label}, ${status}` : `Step ${i + 1}, ${status}`;
82
+ return `<div class="step ${state}" role="listitem" aria-label="${escapeHTML(itemLabel)}"${ariaCurrent}><span class="step__marker">${marker}</span><span class="step__label">${escapeHTML(label)}</span></div>`;
76
83
  }).join("");
77
84
  this.shadowRoot.innerHTML = `
78
85
  <style>${styles}</style>
79
- <div class="steps" role="list" aria-label="Progress" part="steps">${stepsHTML}</div>
86
+ <div class="steps" role="list" aria-label="${escapeHTML(listLabel)}" part="steps">${stepsHTML}</div>
80
87
  <div class="panels" part="panels"><slot></slot></div>
81
88
  `;
82
89
  }
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  escapeHTML
3
- } from "./chunk-LA7264K4.js";
3
+ } from "./chunk-L7ZGUU4D.js";
4
4
 
5
5
  // components/velin-toast.js
6
6
  var styles = `
@@ -80,8 +80,12 @@ var VelinToast = class extends HTMLElement {
80
80
  this.setAttribute("aria-atomic", "true");
81
81
  }
82
82
  show({ message, type = "info", duration = 5e3 } = {}) {
83
+ const assertive = type === "error" || type === "danger";
84
+ this.setAttribute("role", assertive ? "alert" : "status");
85
+ this.setAttribute("aria-live", assertive ? "assertive" : "polite");
83
86
  const toast = document.createElement("div");
84
87
  toast.className = `toast toast--${type}`;
88
+ toast.setAttribute("role", assertive ? "alert" : "status");
85
89
  toast.innerHTML = `
86
90
  <div class="toast-content">${escapeHTML(message)}</div>
87
91
  <button class="toast-close" aria-label="Close">&#215;</button>
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  escapeHTML
3
- } from "./chunk-LA7264K4.js";
3
+ } from "./chunk-L7ZGUU4D.js";
4
4
 
5
5
  // components/velin-tooltip.js
6
6
  var styles = `
@@ -0,0 +1,26 @@
1
+ import {
2
+ tokenize
3
+ } from "./chunk-7FFAMRFV.js";
4
+
5
+ // core/highlight/languages/yaml.js
6
+ var RULES = [
7
+ { type: "comment", re: /#[^\n]*/y },
8
+ // Document markers and block scalar indicators.
9
+ { type: "punctuation", re: /^(?:---|\.\.\.)$/my },
10
+ { type: "string", re: /"(?:\\.|[^"\\])*"/y },
11
+ { type: "string", re: /'(?:''|[^'])*'/y },
12
+ // Keys are the primary structure in YAML, so they get the attr-name colour.
13
+ { type: "attr-name", re: /^[ \t]*-?[ \t]*[\w.$-]+(?=[ \t]*:(?:[ \t]|$))/my },
14
+ { type: "punctuation", re: /^[ \t]*-(?=[ \t]|$)/my },
15
+ { type: "keyword", re: /\b(?:true|false|null|yes|no|on|off|~)\b/yi },
16
+ { type: "number", re: /\b-?\d+(?:\.\d+)?(?:[eE][+-]?\d+)?\b/y },
17
+ // Anchors, aliases, tags and block scalar headers.
18
+ { type: "operator", re: /[&*]\w+|![\w/!-]*|[|>][+-]?\d*(?=\s*$)/my },
19
+ { type: "punctuation", re: /[:,[\]{}]/y }
20
+ ];
21
+ function lexYaml(code) {
22
+ return tokenize(code, RULES);
23
+ }
24
+ export {
25
+ lexYaml as default
26
+ };
package/dist/llms.txt CHANGED
@@ -1,30 +1,47 @@
1
- # VelinStyle 1.0.0
1
+ # VelinStyle 1.2.0
2
2
 
3
- > VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components.
3
+ > VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.
4
4
  > Full machine context: https://velinstyle.info/dist/velin-agent.json
5
5
  > MIME: application/vnd.velinstyle.meta+json
6
6
 
7
7
  ## Framework
8
8
  - npm: @birdapi/velinstyle
9
- - VelinStyle is the WCAG 2.2 AAA CSS framework with native JavaScript runtime and Web Components.
10
- - Components: 36 canonical Web Components (`velin-*`); 38 lazy-loader entries
9
+ - VelinStyle is a CSS framework with WCAG 2.2 AAA-oriented defaults, native JavaScript runtime, and Web Components.
10
+ - Pipeline: Core Foundation Design System Knowledge Graph → Prompt Engine → Review Engine → AI Metadata
11
+ - Maturity: CSS/Web Components/runtime = stable; plan/review, knowledge graph, page/section registry, agent metadata = beta/foundation (seed, expanding); Studio + Utility Engine generator = planned
12
+ - Components: 40 canonical Web Components (`velin-*`); 42 lazy-loader entries
13
+ - Knowledge graph: 17 component nodes, 17 page types, 12 sections, 3 design constraint packs
11
14
  - HTML attributes: 27 `velin-*` bridges
12
- - CLI: velinstyle (scan, scaffold, docs generate, search index, meta)
15
+ - CLI: velinstyle (scan, scaffold, plan, review, docs generate, search index, meta)
16
+
17
+ ## Agent briefing
18
+ - Treat plan/review/knowledge graph as beta foundation — usable, not a finished AI design system.
19
+ - Build pages with plan-first flow: analyze prompt → page registry → sections → design constraints → HTML → review.
20
+ - Prefer tokens (`--velin-color-*`, `--velin-space-*`) over raw hex.
21
+ - One H1 per page; form fields need labels + `velin-form-summary` when validating.
22
+ - Hero: max 2 CTAs; FAQ uses disclosure (`velin-accordion` / details).
23
+ - Do not invent non-`velin-*` utility classes.
24
+ - Prefer registry-backed skills/workflows (`velinstyle skills ...`, `velinstyle workflow ...`) before ad-hoc orchestration.
13
25
 
14
26
  ## Conventions
15
- - 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.
27
+ - 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.
16
28
  - Use only velin-* utility classes and documented Web Components.
17
29
  - Prefer data-velin-theme on <html> for theme switching.
18
30
  - Run velinstyle scan on generated HTML before shipping.
31
+ - Prefer registry-first skills (`velinstyle skills`) and workflow graphs (`velinstyle workflow`) before inventing custom pipelines.
32
+ - Honor skill status, confidence, compatibility, and onlyIf predicates when automating.
19
33
  - Do not put secrets, API keys, or raw emails in velin-meta or page meta.
20
34
  - Resolve doc links against docs root (/docs/), not the current page folder.
21
35
 
22
36
  ## Key guides
23
37
  - [Velin-Meta](https://velinstyle.info/docs/guides/velin-meta.html)
38
+ - [AI Skills](https://velinstyle.info/docs/guides/ai-skills.html)
24
39
  - [VelinSearch](https://velinstyle.info/docs/guides/velin-search.html)
25
40
  - [Syntax highlighting](https://velinstyle.info/docs/guides/syntax-highlight.html)
26
41
  - [Prompt scaffolding](https://velinstyle.info/docs/guides/prompt-scaffolding.html)
27
42
  - [API reference (generated)](https://velinstyle.info/docs/guides/api-reference.html)
43
+ - North star: VELINSTYLE_2030.md
44
+ - Architecture: ARCHITECTURE.md
28
45
 
29
46
  ## Generated reference
30
47
  - [Components index](https://velinstyle.info/docs/generated/components/)
@@ -34,7 +51,12 @@
34
51
 
35
52
  ## Usage for agents
36
53
  ```
54
+ npx velinstyle plan "Steuerberater Landingpage mit Kontaktformular"
55
+ npx velinstyle scaffold "Steuerberater Landingpage mit Kontaktformular" -o out.html --json
56
+ npx velinstyle review out.html --json
37
57
  npx velinstyle meta
38
58
  npx velinstyle docs generate
39
- npx velinstyle search index
59
+ npx velinstyle skills list --capability review
60
+ npx velinstyle skills install frontend
61
+ npx velinstyle workflow landingpage --json
40
62
  ```