@birdapi/velinstyle 0.8.0 → 0.9.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 (313) hide show
  1. package/README.de.md +135 -246
  2. package/README.md +134 -245
  3. package/cli/blueprints/onboarding.html +2 -2
  4. package/cli/cli-manifest.json +97 -0
  5. package/cli/docgen/extract-a11y.js +89 -0
  6. package/cli/docgen/extract-attributes.js +95 -0
  7. package/cli/docgen/extract-cli.js +50 -0
  8. package/cli/docgen/extract-components.js +175 -0
  9. package/cli/docgen/extract-meta.js +32 -0
  10. package/cli/docgen/extract-rules.js +76 -0
  11. package/cli/docgen/extract-tokens.js +79 -0
  12. package/cli/docgen/extract-utilities.js +75 -0
  13. package/cli/docgen/markdown.js +43 -0
  14. package/cli/docs-generate.js +196 -0
  15. package/cli/index.js +121 -5
  16. package/cli/meta.js +97 -0
  17. package/cli/perf-audit.js +174 -0
  18. package/cli/pii-scanner.js +134 -0
  19. package/cli/scanner-rules-data.js +62 -0
  20. package/cli/scanner.js +68 -1
  21. package/cli/search-index.js +163 -0
  22. package/cli/tokens-build.js +21 -1
  23. package/cli/tokens-validate.js +69 -0
  24. package/components/a11y-entry.js +42 -0
  25. package/components/a11y-utils.js +71 -0
  26. package/components/focus-manager.js +45 -8
  27. package/components/index.js +22 -12
  28. package/components/runtime/component-loaders.js +43 -0
  29. package/components/runtime/index.js +77 -0
  30. package/components/runtime-entry.js +10 -0
  31. package/components/sanitize.js +135 -54
  32. package/components/velin-accordion.js +12 -0
  33. package/components/velin-bottom-nav.js +19 -0
  34. package/components/velin-carousel.js +2 -2
  35. package/components/velin-code-block.js +142 -0
  36. package/components/velin-command.js +15 -0
  37. package/components/velin-copy.js +18 -5
  38. package/components/velin-counter.js +3 -0
  39. package/components/velin-dialog.js +9 -1
  40. package/components/velin-email.js +94 -0
  41. package/components/velin-icon.js +65 -22
  42. package/components/velin-lightbox.js +8 -3
  43. package/components/velin-live-dot.js +5 -0
  44. package/components/velin-modal.js +6 -3
  45. package/components/velin-popover.js +34 -2
  46. package/components/velin-reveal.js +7 -65
  47. package/components/velin-scroll-top.js +1 -1
  48. package/components/velin-search.js +267 -0
  49. package/components/velin-secure-field.js +99 -0
  50. package/components/velin-sparkline.js +27 -7
  51. package/components/{velin-stepper-wc.js → velin-stepper.js} +37 -8
  52. package/components/velin-theme-toggle.js +12 -5
  53. package/components/velin-toast.js +4 -0
  54. package/components/{velin-tooltip-wc.js → velin-tooltip.js} +22 -3
  55. package/core/a11y/component-contracts.json +221 -0
  56. package/core/attributes/index.js +6 -0
  57. package/core/attributes/registry.js +268 -0
  58. package/core/highlight/highlight.js +114 -0
  59. package/core/highlight/index.js +29 -0
  60. package/core/highlight/languages/_utils.js +52 -0
  61. package/core/highlight/languages/blade.js +16 -0
  62. package/core/highlight/languages/css.js +26 -0
  63. package/core/highlight/languages/html.js +17 -0
  64. package/core/highlight/languages/js.js +58 -0
  65. package/core/highlight/languages/json.js +14 -0
  66. package/core/highlight/languages/markdown.js +16 -0
  67. package/core/highlight/languages/php.js +39 -0
  68. package/core/highlight/languages/plain.js +7 -0
  69. package/core/highlight/languages/shell.js +33 -0
  70. package/core/highlight/languages/sql.js +20 -0
  71. package/core/highlight/languages/typescript.js +28 -0
  72. package/core/highlight/observe.js +53 -0
  73. package/core/highlight/registry.js +107 -0
  74. package/core/highlight/render.js +35 -0
  75. package/core/highlight/types.js +28 -0
  76. package/core/meta/build.js +293 -0
  77. package/core/meta/index.js +17 -0
  78. package/core/meta/schema.js +49 -0
  79. package/core/motion/effects.js +54 -0
  80. package/core/motion/index.js +76 -0
  81. package/core/motion/scheduler.js +72 -0
  82. package/core/motion/scroll.js +32 -0
  83. package/core/motion/stagger.js +24 -0
  84. package/core/search/docs-url.js +96 -0
  85. package/core/search/engine.js +139 -0
  86. package/core/search/highlight.js +48 -0
  87. package/core/search/index.js +126 -0
  88. package/core/search/providers.js +36 -0
  89. package/core/search/types.js +61 -0
  90. package/core/search/worker-client.js +56 -0
  91. package/core/search/worker.js +20 -0
  92. package/dist/chunks/a11y-utils-IRC7LOPF.js +16 -0
  93. package/dist/chunks/attributes-3BZLI7XF.js +364 -0
  94. package/dist/chunks/attributes-4N5JP4CG.js +364 -0
  95. package/dist/chunks/attributes-5Q2WXGRC.js +374 -0
  96. package/dist/chunks/attributes-AIR7SVLK.js +364 -0
  97. package/dist/chunks/attributes-BGRN5XZO.js +364 -0
  98. package/dist/chunks/attributes-BVSQAYLR.js +364 -0
  99. package/dist/chunks/attributes-CDYFUY7Y.js +364 -0
  100. package/dist/chunks/attributes-JMYJZBPE.js +364 -0
  101. package/dist/chunks/attributes-R5JY3X4O.js +374 -0
  102. package/dist/chunks/attributes-STYCS3O5.js +391 -0
  103. package/dist/chunks/attributes-TNSPQTHX.js +374 -0
  104. package/dist/chunks/attributes-TPANLMLF.js +391 -0
  105. package/dist/chunks/blade-LIQLVKZQ.js +19 -0
  106. package/dist/chunks/browser-MRKYZPEH.js +1149 -0
  107. package/dist/chunks/chunk-2354NEBP.js +109 -0
  108. package/dist/chunks/chunk-2VNA7G7S.js +109 -0
  109. package/dist/chunks/chunk-42VVPW6N.js +132 -0
  110. package/dist/chunks/chunk-7FFAMRFV.js +44 -0
  111. package/dist/chunks/chunk-7MCGPHVC.js +69 -0
  112. package/dist/chunks/chunk-AQLRJSGG.js +109 -0
  113. package/dist/chunks/chunk-EWPSDMQT.js +109 -0
  114. package/dist/chunks/chunk-F7OLHTGX.js +22 -0
  115. package/dist/chunks/chunk-J472ERN2.js +242 -0
  116. package/dist/chunks/chunk-LA7264K4.js +85 -0
  117. package/dist/chunks/chunk-M5CHQVP6.js +61 -0
  118. package/dist/chunks/chunk-MKZP2TBH.js +89 -0
  119. package/dist/chunks/chunk-QTJJ3DPO.js +109 -0
  120. package/dist/chunks/chunk-RDE3QE7Z.js +89 -0
  121. package/dist/chunks/chunk-RSMRR27R.js +109 -0
  122. package/dist/chunks/chunk-RZQVWFHW.js +109 -0
  123. package/dist/chunks/chunk-SRL6EWHP.js +109 -0
  124. package/dist/chunks/chunk-U4XHMZ7D.js +109 -0
  125. package/dist/chunks/chunk-V5YIUA6G.js +109 -0
  126. package/dist/chunks/chunk-XIET2VSZ.js +109 -0
  127. package/dist/chunks/chunk-XYLJ2GCB.js +205 -0
  128. package/dist/chunks/chunk-Z4JYQ2XX.js +51 -0
  129. package/dist/chunks/chunk-ZPSPKUYD.js +109 -0
  130. package/dist/chunks/css-MQ5YU77P.js +28 -0
  131. package/dist/chunks/highlight-GJHHV4KM.js +37 -0
  132. package/dist/chunks/highlight-XTHRKBA3.js +37 -0
  133. package/dist/chunks/html-ZODC4DLQ.js +20 -0
  134. package/dist/chunks/js-MNSNYTJU.js +7 -0
  135. package/dist/chunks/json-VEM2HFH3.js +17 -0
  136. package/dist/chunks/markdown-E7OPGS3S.js +19 -0
  137. package/dist/chunks/php-MLL7T3LT.js +41 -0
  138. package/dist/chunks/plain-LJJDC5TN.js +8 -0
  139. package/dist/chunks/runtime-entry.js +14 -0
  140. package/dist/chunks/shell-QTRK4U4E.js +35 -0
  141. package/dist/chunks/sql-PPWLHGJ2.js +23 -0
  142. package/dist/chunks/typescript-JT3CCYWL.js +30 -0
  143. package/dist/chunks/velin-accordion-FBIPAEXG.js +105 -0
  144. package/dist/chunks/velin-accordion-QAQO7BI7.js +117 -0
  145. package/dist/chunks/velin-announcer-PVTXXCWR.js +33 -0
  146. package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +86 -0
  147. package/dist/chunks/velin-bottom-nav-7GEMPIM6.js +86 -0
  148. package/dist/chunks/velin-bottom-nav-CTU6FFZV.js +101 -0
  149. package/dist/chunks/velin-bottom-nav-N3DFQR66.js +86 -0
  150. package/dist/chunks/velin-carousel-Y5VCOABZ.js +213 -0
  151. package/dist/chunks/velin-carousel-ZTBANFQQ.js +213 -0
  152. package/dist/chunks/velin-code-block-ASUBTAQV.js +119 -0
  153. package/dist/chunks/velin-code-block-CIAURDRJ.js +132 -0
  154. package/dist/chunks/velin-code-block-TSUKPY4C.js +123 -0
  155. package/dist/chunks/velin-code-block-Y6CM726Q.js +119 -0
  156. package/dist/chunks/velin-collapse-5XYBUIID.js +80 -0
  157. package/dist/chunks/velin-combobox-2KDTCQ7N.js +155 -0
  158. package/dist/chunks/velin-combobox-NXS4QB4R.js +155 -0
  159. package/dist/chunks/velin-combobox-UGA56HP3.js +155 -0
  160. package/dist/chunks/velin-command-CKDNO4BW.js +148 -0
  161. package/dist/chunks/velin-command-M7RNHUPR.js +136 -0
  162. package/dist/chunks/velin-command-ONKO2A3J.js +136 -0
  163. package/dist/chunks/velin-command-TMLSRGIU.js +136 -0
  164. package/dist/chunks/velin-copy-G2TZ5YBB.js +81 -0
  165. package/dist/chunks/velin-copy-NYDBOKXT.js +81 -0
  166. package/dist/chunks/velin-copy-T5KDTDXP.js +81 -0
  167. package/dist/chunks/velin-countdown-4ZVDGK4R.js +101 -0
  168. package/dist/chunks/velin-countdown-5XSTN3BH.js +101 -0
  169. package/dist/chunks/velin-countdown-7AIY66CU.js +101 -0
  170. package/dist/chunks/velin-counter-ISCTEAHI.js +118 -0
  171. package/dist/chunks/velin-counter-L5FYJF7A.js +121 -0
  172. package/dist/chunks/velin-dialog-D2GUHSCD.js +144 -0
  173. package/dist/chunks/velin-dialog-ELFOZIXZ.js +152 -0
  174. package/dist/chunks/velin-dialog-GTTZI564.js +147 -0
  175. package/dist/chunks/velin-dialog-IJLFDXAJ.js +144 -0
  176. package/dist/chunks/velin-dialog-TNS3WXMB.js +144 -0
  177. package/dist/chunks/velin-drawer-BE6TYN3H.js +130 -0
  178. package/dist/chunks/velin-drawer-DLL2GLT6.js +130 -0
  179. package/dist/chunks/velin-drawer-MJS6WCF7.js +130 -0
  180. package/dist/chunks/velin-dropdown-PLUIFA5M.js +172 -0
  181. package/dist/chunks/velin-email-N5B5ZYTE.js +90 -0
  182. package/dist/chunks/velin-email-NTM6DG3V.js +90 -0
  183. package/dist/chunks/velin-email-RBX6ZR4S.js +90 -0
  184. package/dist/chunks/velin-haptic-4QQTM3RK.js +50 -0
  185. package/dist/chunks/velin-icon-7M76DOPB.js +164 -0
  186. package/dist/chunks/velin-icon-KZO3IEHG.js +164 -0
  187. package/dist/chunks/velin-icon-WTFPG2DD.js +191 -0
  188. package/dist/chunks/velin-icon-ZTSKUOVN.js +193 -0
  189. package/dist/chunks/velin-lightbox-6E7CAATP.js +149 -0
  190. package/dist/chunks/velin-lightbox-I75U6JF4.js +140 -0
  191. package/dist/chunks/velin-lightbox-QOTB4PRL.js +140 -0
  192. package/dist/chunks/velin-lightbox-UCD6N7HF.js +140 -0
  193. package/dist/chunks/velin-live-dot-RJHX2DGY.js +74 -0
  194. package/dist/chunks/velin-live-dot-XHUZCIDZ.js +67 -0
  195. package/dist/chunks/velin-menubar-I426AED2.js +86 -0
  196. package/dist/chunks/velin-menubar-J66JXRWW.js +86 -0
  197. package/dist/chunks/velin-menubar-SFEXJE56.js +86 -0
  198. package/dist/chunks/velin-modal-2HOBXE6F.js +176 -0
  199. package/dist/chunks/velin-modal-5HYNNNUI.js +176 -0
  200. package/dist/chunks/velin-modal-AEOTZ67O.js +177 -0
  201. package/dist/chunks/velin-modal-GLI2XZZB.js +176 -0
  202. package/dist/chunks/velin-persist-DFPL3QP4.js +110 -0
  203. package/dist/chunks/velin-popover-EXINRIGJ.js +145 -0
  204. package/dist/chunks/velin-popover-HQW6Q2Y6.js +172 -0
  205. package/dist/chunks/velin-popover-OXX7MRZ6.js +145 -0
  206. package/dist/chunks/velin-popover-T72HK3DF.js +151 -0
  207. package/dist/chunks/velin-popover-YKCCROJG.js +145 -0
  208. package/dist/chunks/velin-progress-ring-E4YRLZHH.js +66 -0
  209. package/dist/chunks/velin-rating-6CDBI6DG.js +91 -0
  210. package/dist/chunks/velin-rating-N4DI2XNL.js +91 -0
  211. package/dist/chunks/velin-rating-XRQJV4LO.js +91 -0
  212. package/dist/chunks/velin-scroll-top-F2FCZNYD.js +58 -0
  213. package/dist/chunks/velin-scroll-top-OHYVVHHY.js +58 -0
  214. package/dist/chunks/velin-scrollspy-OKCT4FDV.js +50 -0
  215. package/dist/chunks/velin-search-2XRQFBCS.js +556 -0
  216. package/dist/chunks/velin-search-4YHJWYSS.js +556 -0
  217. package/dist/chunks/velin-search-7B4KJ6TX.js +557 -0
  218. package/dist/chunks/velin-search-LWHY23Q5.js +474 -0
  219. package/dist/chunks/velin-secure-field-6PV7RZDJ.js +95 -0
  220. package/dist/chunks/velin-secure-field-H7FSBUJW.js +95 -0
  221. package/dist/chunks/velin-secure-field-OFNAXCDP.js +95 -0
  222. package/dist/chunks/velin-segmented-control-EKL4E3BL.js +109 -0
  223. package/dist/chunks/velin-segmented-control-GYD5BIXQ.js +109 -0
  224. package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +109 -0
  225. package/dist/chunks/velin-sheet-3OGI4HD7.js +119 -0
  226. package/dist/chunks/velin-sheet-OUK6572T.js +119 -0
  227. package/dist/chunks/velin-sheet-R2Y67X6H.js +119 -0
  228. package/dist/chunks/velin-sparkline-GVEANJVW.js +184 -0
  229. package/dist/chunks/velin-sparkline-KDA3GQAN.js +162 -0
  230. package/dist/chunks/velin-sparkline-XVTFC6GE.js +181 -0
  231. package/dist/chunks/velin-stepper-2ZIHLKGM.js +141 -0
  232. package/dist/chunks/velin-stepper-7ECRUYHD.js +148 -0
  233. package/dist/chunks/velin-stepper-FYEUEWE6.js +141 -0
  234. package/dist/chunks/velin-stepper-X54WGHDG.js +141 -0
  235. package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +133 -0
  236. package/dist/chunks/velin-tabs-5UQ5ZVMV.js +138 -0
  237. package/dist/chunks/velin-theme-toggle-32J2CBNC.js +291 -0
  238. package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +285 -0
  239. package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +285 -0
  240. package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +291 -0
  241. package/dist/chunks/velin-toast-OMMOA2DK.js +109 -0
  242. package/dist/chunks/velin-toast-RCZ4CSUC.js +109 -0
  243. package/dist/chunks/velin-toast-RSF2IHT3.js +113 -0
  244. package/dist/chunks/velin-toast-WEUBTJG6.js +109 -0
  245. package/dist/chunks/velin-tooltip-664IOHZA.js +112 -0
  246. package/dist/chunks/velin-tooltip-BDHGRTQB.js +112 -0
  247. package/dist/chunks/velin-tooltip-HVUOKNVX.js +112 -0
  248. package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +103 -0
  249. package/dist/chunks/worker-client-R6DBYPFT.js +46 -0
  250. package/dist/llms.test.txt +40 -0
  251. package/dist/llms.txt +40 -0
  252. package/dist/search-index.json +1773 -0
  253. package/dist/search-index.test.json +1773 -0
  254. package/dist/themes/brutalist.min.css +1 -1
  255. package/dist/themes/midnight.min.css +1 -1
  256. package/dist/themes/pastel.min.css +1 -1
  257. package/dist/themes/retro.min.css +1 -1
  258. package/dist/themes/sunset.min.css +1 -1
  259. package/dist/velin-agent.json +684 -0
  260. package/dist/velin-agent.test.json +684 -0
  261. package/dist/velinstyle-components.iife.js +7715 -3515
  262. package/dist/velinstyle-components.js +7087 -2859
  263. package/dist/velinstyle-components.min.js +196 -109
  264. package/dist/velinstyle.css +604 -65
  265. package/dist/velinstyle.d.ts +54 -0
  266. package/dist/velinstyle.min.css +1 -1
  267. package/examples/search-index.schema.json +33 -0
  268. package/package.json +56 -10
  269. package/src/a11y/authentication.css +37 -0
  270. package/src/a11y/consistent-help.css +22 -0
  271. package/src/a11y/dragging-alternatives.css +30 -0
  272. package/src/a11y/focus-appearance.css +20 -0
  273. package/src/a11y/high-contrast-aaa.css +16 -26
  274. package/src/a11y/skip-link.css +3 -1
  275. package/src/a11y/sr-only.css +1 -1
  276. package/src/base/reset.css +0 -36
  277. package/src/base/wc-placeholder.css +102 -0
  278. package/src/components/attributes.css +42 -0
  279. package/src/components/highlight.css +182 -0
  280. package/src/components/input-group.css +1 -2
  281. package/src/components/nav.css +2 -3
  282. package/src/components/search.css +95 -0
  283. package/src/components/stepper.css +2 -4
  284. package/src/components/timeline.css +1 -2
  285. package/src/components/tooltip.css +2 -4
  286. package/src/layout/container.css +5 -5
  287. package/src/layout/grid.css +8 -8
  288. package/src/layout/patterns.css +5 -5
  289. package/src/themes/brutalist.css +2 -11
  290. package/src/themes/corporate.css +0 -9
  291. package/src/themes/earth.css +0 -9
  292. package/src/themes/forest.css +0 -9
  293. package/src/themes/midnight.css +1 -10
  294. package/src/themes/neon.css +0 -9
  295. package/src/themes/nordic.css +0 -9
  296. package/src/themes/ocean.css +0 -9
  297. package/src/themes/pastel.css +1 -10
  298. package/src/themes/retro.css +2 -11
  299. package/src/themes/sharp.css +0 -7
  300. package/src/themes/soft.css +0 -7
  301. package/src/themes/sunset.css +1 -10
  302. package/src/tokens/color.css +45 -46
  303. package/src/tokens/fonts.css +10 -0
  304. package/src/tokens/typography.css +4 -5
  305. package/src/utilities/animation.css +2 -2
  306. package/src/utilities/display.css +3 -3
  307. package/src/utilities/divide.css +2 -6
  308. package/src/utilities/responsive.css +4 -4
  309. package/src/utilities/safe-area.css +1 -1
  310. package/src/utilities/scroll-animation.css +34 -0
  311. package/src/utilities/spacing.css +17 -8
  312. package/src/utilities/text.css +4 -1
  313. package/src/velinstyle.css +9 -0
package/README.de.md CHANGED
@@ -1,21 +1,26 @@
1
1
  <div align="center">
2
2
 
3
- <picture>
4
- <source media="(prefers-color-scheme: dark)" srcset=".github/assets/readme-banner-dark.svg">
5
- <img src=".github/assets/readme-banner.svg" alt="VelinStyle — barrierefreies CSS und Web Components" width="100%">
6
- </picture>
7
-
8
- <br>
3
+ ```
4
+ ██╗ ██╗███████╗██╗ ██╗███╗ ██╗███████╗████████╗██╗ ██╗██╗ ███████╗
5
+ ██║ ██║██╔════╝██║ ██║████╗ ██║██╔════╝╚══██╔══╝██║ ██║██║ ██╔════╝
6
+ ██║ ██║█████╗ ██║ ██║██╔██╗ ██║███████╗ ██║ ███████║██║ █████╗
7
+ ╚██╗ ██╔╝██╔══╝ ██║ ██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██╔══╝
8
+ ╚████╔╝ ███████╗███████╗██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗
9
+ ╚═══╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝
10
+ ```
9
11
 
10
12
  [![Lizenz: MIT](https://img.shields.io/badge/Lizenz-MIT-2563eb?style=flat-square)](LICENSE)
11
- [![Release](https://img.shields.io/badge/Release-v0.8.0-2563eb?style=flat-square)](CHANGELOG.md)
12
- [![WCAG AA](https://img.shields.io/badge/WCAG-AA-16a34a?style=flat-square)](docs/a11y.html)
13
- [![CSS min](https://img.shields.io/badge/CSS_min-~46KB-15803d?style=flat-square)]()
14
- [![JS min](https://img.shields.io/badge/JS_min-~66KB-15803d?style=flat-square)]()
13
+ [![Release](https://img.shields.io/badge/Release-v0.9.0-2563eb?style=flat-square)](https://github.com/SkyliteDesign/velinstyle/releases/tag/v0.9.0)
15
14
  [![npm version](https://img.shields.io/npm/v/@birdapi/velinstyle?style=flat-square)](https://www.npmjs.com/package/@birdapi/velinstyle)
16
- [![GitHub Pages](https://img.shields.io/badge/Docs-GitHub_Pages-2563eb?style=flat-square)](https://skylitedesign.github.io/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)
16
+ [![GitHub Stars](https://img.shields.io/github/stars/SkyliteDesign/velinstyle?style=flat-square)](https://github.com/SkyliteDesign/velinstyle/stargazers)
17
+ [![PRs Welcome](https://img.shields.io/badge/PRs-willkommen-2563eb?style=flat-square)](CONTRIBUTING.de.md)
17
18
 
18
- [Dokumentation](https://skylitedesign.github.io/velinstyle/) · [npm](https://www.npmjs.com/package/@birdapi/velinstyle) · [Beispiele](samples/) · [Playground](tools/playground/index.html) · [Theme Builder](tools/theme-builder/index.html) · [Issues](https://github.com/SkyliteDesign/velinstyle/issues)
19
+ ```bash
20
+ npm i @birdapi/velinstyle
21
+ ```
22
+
23
+ **[Website](https://velinstyle.info)** · **[Doku](https://velinstyle.info/docs/)** · **[Demos](https://velinstyle.info/demos/)** · **[npm](https://www.npmjs.com/package/@birdapi/velinstyle)** · **[Stern auf GitHub](https://github.com/SkyliteDesign/velinstyle)**
19
24
 
20
25
  **[English](README.md)** · **Deutsch**
21
26
 
@@ -23,313 +28,197 @@
23
28
 
24
29
  ---
25
30
 
26
- ## Inhalt
27
-
28
- - [Problem & Lösung](#the-problem--the-fix)
29
- - [Das liefert VelinStyle](#what-you-get)
30
- - [Architektur](#architecture)
31
- - [Schnellstart](#quick-start)
32
- - [Warum VelinStyle?](#why-velinstyle)
33
- - [Demo-Galerie](#demo-gallery)
34
- - [CLI-Referenz](#cli-reference)
35
- - [Ökosystem](#ecosystem)
36
- - [Mitmachen](#join-in)
37
- - [Browser-Unterstützung](#browser-support)
38
- - [Lizenz](#license)
39
-
40
- ---
41
-
42
- ## The problem & the fix
43
-
44
- <table>
45
- <tr>
46
- <td width="50%" valign="top">
47
-
48
- ### Das Problem
49
-
50
- Unter Zeitdruck landen **Barrierefreiheit** und **konsistentes Theming** oft erst am Ende—wenn überhaupt. Schwere Bundles, einheitlicher Bootstrap-Look oder Tailwind-Sprawl frustrieren Design und Engineering gleichermassen.
51
-
52
- </td>
53
- <td width="50%" valign="top">
54
-
55
- ### Die VelinStyle-Antwort
56
-
57
- **WCAG-AA-Muster**, **OKLCH-Tokens**, **container-sensitives Layout** und **Web Components** gehören zum System—nicht als Nachrüstung. Lesbares CSS, optionale CLI, kein Preprocessor-Zwang.
58
-
59
- </td>
60
- </tr>
61
- </table>
31
+ **VelinStyle** ist das **WCAG-2.2-AAA-CSS-Framework** mit nativer JavaScript-Runtime und Web Components — CSS-Utilities, 0.9.0-Module (Search, Motion, Highlight, Attributes, Meta) und Security-Toolchain, **ohne externe UI-Framework-Abhängigkeiten** im Kern.
62
32
 
63
- ---
33
+ Gedacht für Teams mit **lesbarem HTML**, **AAA-Token-Defaults** (AA über `data-velin-contrast="aa"`) und **CLI-Automatisierung** statt Utility-Chaos.
64
34
 
65
- ## What you get
66
-
67
- <table>
68
- <thead>
69
- <tr><th></th><th>Funktion</th><th>Was du davon hast</th></tr>
70
- </thead>
71
- <tbody>
72
- <tr><td align="center">♿</td><td><strong>WCAG AA by design</strong></td><td>Fokus, ARIA und Tastatur in Komponenten und Overlays</td></tr>
73
- <tr><td align="center">🎨</td><td><strong>OKLCH + 13 Theme-Presets</strong></td><td>Perzeptuell gleichmässige Farben; Dark Mode per Token-Swap</td></tr>
74
- <tr><td align="center">📦</td><td><strong>~46 KB CSS + ~66 KB JS (min)</strong></td><td>Schlank im Vergleich zu vielen All-in-One-Stacks</td></tr>
75
- <tr><td align="center">📐</td><td><strong>Container Queries + Utilities</strong></td><td>Bausteine passen sich <em>ihrem</em> Container an, nicht nur dem Viewport</td></tr>
76
- <tr><td align="center">🧩</td><td><strong>25 CSS-Module · 29 Web Components</strong></td><td>Modals, Tabs, Drawer, Toasts, Icons—APIs in <a href="docs/css-components.html">CSS</a> &amp; <a href="docs/components.html">WC-Docs</a></td></tr>
77
- <tr><td align="center">🛠️</td><td><strong>Optionale CLI</strong></td><td><code>init</code>, <code>build</code>, <code>icons</code>, <code>scan</code>, <code>prefix</code>, <code>blueprint</code>, <code>scaffold</code>, <code>layout</code>, <code>tokens build</code></td></tr>
78
- <tr><td align="center">🌍</td><td><strong>RTL-ready</strong></td><td>Logical Properties und layout-orientierte Defaults · <a href="samples/rtl.html">RTL-Beispiel</a></td></tr>
79
- </tbody>
80
- </table>
35
+ > **Dogfooding:** Die gesamte VelinStyle-Website und Dokumentation läuft zu 100 % mit VelinStyle — ohne externe Skripte oder UI-Frameworks.
81
36
 
82
37
  ---
83
38
 
84
- ## Architecture
85
-
86
- ```mermaid
87
- flowchart LR
88
- tokens[tokens] --> reset[reset]
89
- reset --> base[base]
90
- base --> a11y[a11y]
91
- a11y --> layout[layout]
92
- layout --> components[components]
93
- components --> utilities[utilities]
94
- utilities --> themes[themes]
95
- ```
39
+ ## Features auf einen Blick
96
40
 
97
- Einstieg: [`src/velinstyle.css`](src/velinstyle.css) · Build-Ausgabe: `dist/` (`npm run build`)
98
-
99
- ```css
100
- @layer tokens, reset, base, a11y, layout, components, utilities, themes;
101
- ```
41
+ - **CSS-Utilities** — `velin-*` Spacing, Farbe, Flex, Motion, Safe-Area; Cascade Layers + OKLCH-Tokens
42
+ - **35+ Komponenten** — semantische BEM-Klassen (`velin-btn`, `velin-card`, `velin-grid`, …)
43
+ - **Motion-Runtime** — Reveal, Stagger, scroll-getriebene Animation, rAF-Scheduler
44
+ - **VelinSearch** fuzzy Offline-Suche mit Highlighting und Kategorien
45
+ - **Syntax-Highlighting** — lazy In-View für JS, HTML, CSS, JSON und mehr
46
+ - **HTML-Attribute** — 27 deklarative Bridges (`velin-modal`, `velin-reveal`, `velin-scroll-top`, `velin-code`, …)
47
+ - **Qualität** — 36/36 A11y-Component-Contracts, Playwright Cross-Browser-Smoke (`npm run test:e2e`), CLS-Platzhalter (`wc-placeholder.css`)
48
+ - **Security-Tools** — `scan`, PII-Regeln, Sanitize-API, gehärtete Komponenten
49
+ - **CLI** — init, build, scan, scaffold, tokens, docs generate, perf audit, layout audit
50
+ - **Velin-Meta** — `velin-agent.json`, `llms.txt` und Page-Level-Agent-JSON für KI-Assistenten
102
51
 
103
52
  ---
104
53
 
105
- ## Quick start
106
-
107
- ### <span>①</span> Installation
54
+ ## Installation
108
55
 
109
56
  ```bash
110
- npm install @birdapi/velinstyle
111
- ```
112
-
113
- ### <span>②</span> CSS + Komponenten einbinden (ES-Module)
114
-
115
- ```html
116
- <link rel="stylesheet" href="node_modules/@birdapi/velinstyle/dist/velinstyle.min.css">
117
- <script type="module" src="node_modules/@birdapi/velinstyle/dist/velinstyle-components.min.js"></script>
57
+ npm i @birdapi/velinstyle
118
58
  ```
119
59
 
120
- <details>
121
- <summary><strong>CDN-Alternative</strong> (ohne npm install)</summary>
122
-
123
- ```html
124
- <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@latest/dist/velinstyle.min.css">
125
- <script type="module" src="https://unpkg.com/@birdapi/velinstyle@latest/dist/velinstyle-components.min.js"></script>
126
- ```
127
-
128
- </details>
60
+ | Pfad | Verwendung |
61
+ | --- | --- |
62
+ | `@birdapi/velinstyle/css` | Vollständiges minifiziertes Stylesheet |
63
+ | `@birdapi/velinstyle/bundle` | Web-Components-ESM-Bundle |
64
+ | `@birdapi/velinstyle/search` | VelinSearch-Modul |
65
+ | `@birdapi/velinstyle/motion` | Motion-Runtime |
66
+ | `@birdapi/velinstyle/attributes` | HTML-Attribut-Bridges |
67
+ | `@birdapi/velinstyle/highlight` | Syntax-Highlighting |
68
+ | `@birdapi/velinstyle/meta` | Agent-Metadaten-API |
129
69
 
130
- ### <span>③</span> Erste Oberfläche markupen
70
+ **CDN (Version pinnen):**
131
71
 
132
72
  ```html
133
- <meta name="viewport" content="width=device-width, initial-scale=1">
134
- <div class="velin-container velin-p-6">
135
- <p class="velin-lead velin-text-muted">Hallo, VelinStyle.</p>
136
- <button type="button" class="velin-btn velin-btn--primary">Primäre Aktion</button>
137
- </div>
73
+ <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle.min.css">
74
+ <script type="module" src="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle-components.min.js"></script>
138
75
  ```
139
76
 
140
- > **Repository klonen?** `dist/` liegt nicht im Repo. `npm install` und `npm run build`, dann HTML auf `dist/velinstyle.min.css` und `dist/velinstyle-components.min.js` zeigen. Ohne ES-Module: `velinstyle-components.iife.js` — siehe [Dokumentation](docs/index.html).
77
+ Nach dem Klonen: `npm install && npm run build` `dist/` wird erzeugt, nicht committet.
141
78
 
142
79
  ---
143
80
 
144
- ## Why VelinStyle?
81
+ ## Quickstart
145
82
 
146
- Eine **einheitliche Produktsprache**—Präfix-Klassen (`velin-`), klare **`@layer`-Architektur**, modernes CSS (`@scope`, Nesting, `:has()`)—ohne **Liefergeschwindigkeit** zu opfern.
147
-
148
- | | Bootstrap | Tailwind | **VelinStyle** |
149
- | --- | :---: | :---: | :---: |
150
- | A11y | ⚠️ Teilweise | — Nicht eingebaut | ✅ **WCAG AA strukturell** |
151
- | Farben | HEX/RGB | HEX/RGB | ✅ **OKLCH** + tokenisierte Themes |
152
- | Dark Mode | ⚠️ Build / manuell | `dark:`-Varianten | ✅ **Token-Swap** (`data-velin-theme`) |
153
- | Layout | Viewport-first | Viewport-Utilities | ✅ **Container Queries** + Media |
154
- | Interaktion | ⚠️ Legacy-JS-Muster | Eigenes JS | ✅ **Web Components** |
155
- | Bundle (Richtwert) | ~230 KB CSS+JS | JIT / variabel | ✅ **~46 KB CSS + ~66 KB JS (min)** |
83
+ ```html
84
+ <!DOCTYPE html>
85
+ <html lang="de" data-velin-theme="ocean">
86
+ <head>
87
+ <meta charset="UTF-8">
88
+ <meta name="viewport" content="width=device-width, initial-scale=1">
89
+ <link rel="stylesheet" href="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle.min.css">
90
+ <script type="module" src="https://unpkg.com/@birdapi/velinstyle@0.9.0/dist/velinstyle-components.min.js"></script>
91
+ </head>
92
+ <body class="velin-p-6">
93
+ <button type="button" class="velin-btn velin-btn--primary" velin-reveal="slide-up">Loslegen</button>
94
+ <velin-code-block language="html" line-numbers>&lt;p class="velin-text-muted"&gt;Hallo VelinStyle&lt;/p&gt;</velin-code-block>
95
+ </body>
96
+ </html>
97
+ ```
156
98
 
157
99
  ---
158
100
 
159
- ## Demo gallery
160
-
161
- | Demo | Seite | Demo | Seite |
162
- | --- | --- | --- | --- |
163
- | Landing | [samples/landing.html](samples/landing.html) | Dashboard | [samples/dashboard.html](samples/dashboard.html) |
164
- | Login | [samples/login.html](samples/login.html) | Registrierung | [samples/signup.html](samples/signup.html) |
165
- | Pricing | [samples/pricing.html](samples/pricing.html) | E-Commerce | [samples/ecommerce.html](samples/ecommerce.html) |
166
- | Blog | [samples/blog.html](samples/blog.html) | Portfolio | [samples/portfolio.html](samples/portfolio.html) |
167
- | Chat | [samples/chat.html](samples/chat.html) | E-Mail | [samples/email.html](samples/email.html) |
168
- | Kanban | [samples/kanban.html](samples/kanban.html) | Einstellungen | [samples/settings.html](samples/settings.html) |
169
- | RTL-Layout | [samples/rtl.html](samples/rtl.html) | A11y-Patterns | [samples/a11y-patterns.html](samples/a11y-patterns.html) |
101
+ ## Core-Module (0.9.0)
170
102
 
171
- | Tool | Seite |
103
+ | Export | Beschreibung |
172
104
  | --- | --- |
173
- | HTML-Playground | [tools/playground/index.html](tools/playground/index.html) |
174
- | OKLCH Theme Builder | [tools/theme-builder/index.html](tools/theme-builder/index.html) |
105
+ | `@birdapi/velinstyle/search` | Fuzzy Offline-Suche, Provider, optional Web Worker |
106
+ | `@birdapi/velinstyle/motion` | `initMotion`, Stagger, Smooth Scroll, einheitlich `.velin-in-view` |
107
+ | `@birdapi/velinstyle/attributes` | Registry deklarativer `velin-*` HTML-Attribut-Bridges |
108
+ | `@birdapi/velinstyle/highlight` | `velinSyntax`, lazy Language Packs, OKLCH-Token-Farben |
109
+ | `@birdapi/velinstyle/meta` | `buildAgentBundle`, Page-Meta MIME `application/vnd.velinstyle.meta+json` |
175
110
 
176
111
  ---
177
112
 
178
- ## CLI reference
179
-
180
- Alle Befehle: `npx velinstyle <befehl>` · `npx velinstyle --help`
181
-
182
- <details>
183
- <summary><strong>Projekt &amp; Build</strong> — <code>init</code>, <code>build</code>, <code>themes</code>, <code>add</code></summary>
184
-
185
- - **`npx velinstyle init`** — erstellt `velinstyle.config.js` (Layer-Auswahl, Theme, Scan-Optionen).
186
- - **`npx velinstyle build`** — CSS-Bundle aus gewählten Layern (`--output` / `-o`, `--minify`).
187
- - **`npx velinstyle themes`** — listet 13 Theme-Presets.
188
- - **`npx velinstyle add &lt;komponente&gt;`** — kopiert eine einzelne Komponenten-CSS-Datei ins Projekt.
189
-
190
- </details>
191
-
192
- <details>
193
- <summary><strong>Icons</strong> — Multi-Provider-Sprite-Workflow</summary>
194
-
195
- - **`npx velinstyle icons list`** — Lucide, Heroicons, Bootstrap Icons, Material Symbols, Font Awesome, Tabler.
196
- - **`npx velinstyle icons add lucide --icons menu,search,check`**
197
- - **`npx velinstyle icons add heroicons --icons arrow-left --variant outline`**
198
- - **`npx velinstyle icons build`** — Sprite neu bauen (im VelinStyle-Klon: schreibt `icons/svg/` und baut neu).
199
-
200
- </details>
113
+ ## Web Components
201
114
 
202
- <details>
203
- <summary><strong>scan</strong> — Security, A11y &amp; CSS-Lint</summary>
115
+ **36 kanonische** Custom Elements (38 Lazy-Loader-Einträge inkl. Legacy `velin-tooltip-wc` und `velin-stepper-wc`) — reines CSS, wenn kein Verhalten nötig ist. `src/base/wc-placeholder.css` verringert Layout-Shift vor dem Upgrade.
204
116
 
205
- - **`npx velinstyle scan [pfad]`** HTML, CSS, JS; **`--format json`** für CI.
206
- - **`--severity`** — Mindest-Stufe filtern: `error` | `warning` | `info`.
207
- - **`--fix`** — nur sichere Auto-Fixes; **`--fix-dry-run`** listet Dateien ohne Schreiben.
208
- - **`--fix-lang`** — BCP 47 für `lang` auf `<html>` (Standard `de`).
117
+ Beispiele: `velin-modal`, `velin-search`, `velin-code-block`, `velin-drawer`, `velin-stepper`, `velin-tooltip`, `velin-toast`, `velin-persist`.
209
118
 
210
- **Auto-Fixes (Auszug):** `rel="noopener noreferrer"` bei riskantem `target="_blank"`; `lang` auf `<html>`; Skip-Link wenn `id="main"` existiert; rohe `z-index` → `--velin-z-*`.
119
+ - [Komponenten-Dokumentation](https://velinstyle.info/docs/components/buttons.html)
120
+ - [Generierte Web-Component-API](https://velinstyle.info/docs/generated/components/README.md)
211
121
 
212
- **Nicht automatisch:** `javascript:`-URLs, `eval`, rohes `innerHTML`, Inline-Event-Handler — im Code bereinigen.
213
-
214
- **Trusted Types / XSS:** Der Scanner ersetzt keine CSP-Policies. Web Components nutzen `escapeHTML()` / `sanitizeURL()`; siehe [docs/security.html](docs/security.html).
215
-
216
- </details>
217
-
218
- <details>
219
- <summary><strong>prefix</strong> — Klassen-Codemod &amp; JSON-Maps</summary>
220
-
221
- - **`npx velinstyle prefix &lt;ordner&gt;`** — Standard: Dry-Run; **`--write`** schreibt Änderungen.
222
- - **`--bootstrap-display`** — mappt Bootstrap-`d-*` auf Velin-Display-Klassen.
223
- - **`velinstyle-prefix-map.json`** im Zielordner oder **`--map datei.json`** — explizite Token → Klassen (überschreibt Katalog und Bootstrap-Aliase). Beispiel: [examples/velinstyle-prefix-map.sample.json](examples/velinstyle-prefix-map.sample.json).
224
-
225
- </details>
226
-
227
- <details>
228
- <summary><strong>scaffold</strong> — Prompt → HTML (0.8.0)</summary>
229
-
230
- - **`npx velinstyle scaffold list-intents`**
231
- - **`npx velinstyle scaffold "Navbar mit Suche" -o nav.html`**
232
- - **`npx velinstyle scaffold "…" --json`** — für Agenten/CI
122
+ ---
233
123
 
234
- Siehe [docs/guides/prompt-scaffolding.html](docs/guides/prompt-scaffolding.html).
124
+ ## CLI
235
125
 
236
- </details>
126
+ | Befehl | Zweck |
127
+ | --- | --- |
128
+ | `npx velinstyle init` | `velinstyle.config.js` im Projekt anlegen |
129
+ | `npx velinstyle scan` | Security, Accessibility, CSS und PII prüfen |
130
+ | `npx velinstyle search index` | `dist/search-index.json` für Offline-Docs-Suche |
131
+ | `npx velinstyle tokens build` | Design-Tokens-JSON nach CSS kompilieren |
132
+ | `npx velinstyle meta` | `velin-agent.json` und `llms.txt` erzeugen |
237
133
 
238
- <details>
239
- <summary><strong>layout</strong> — Responsive-Audit (0.8.0)</summary>
134
+ Außerdem: `npx velinstyle docs generate` — Markdown-Referenz unter `docs/generated/`.
240
135
 
241
- - **`npx velinstyle layout audit [pfad]`**
242
- - **`npx velinstyle layout suggest [pfad]`**
243
- - **`npx velinstyle layout fix [pfad] --write`**
136
+ ---
244
137
 
245
- Siehe [docs/guides/responsive-layout.html](docs/guides/responsive-layout.html).
138
+ ## Security
246
139
 
247
- </details>
140
+ VelinStyle bringt **Security-Tooling mit**, nicht als Nachgedanke:
248
141
 
249
- <details>
250
- <summary><strong>blueprint</strong>22 HTML-Snippets</summary>
142
+ - **`velinstyle scan`** — Markup- und A11y-Regeln; PII-Scanner (`--only pii`, `--fix`)
143
+ - **`@birdapi/velinstyle/sanitize`** URL- und Text-Sanitization
144
+ - **`<velin-secure-field>`** — keine Klartext-Secrets im DOM; gehärtete Search-/Copy-URLs
251
145
 
252
- - **`npx velinstyle blueprint list`**
253
- - **`npx velinstyle blueprint &lt;name&gt; -o datei.html`**
146
+ [Security-Dokumentation](https://velinstyle.info/docs/extend/security.html)
254
147
 
255
- Ids: `modal`, `form-login`, `layout-dashboard`, `navbar-header`, `hero-section`, `card-grid`, `table-responsive`, `alert-stack`, `breadcrumb-bar`, `footer-simple`, `form-contact`, `pagination-bar`, `search-field`, `sidebar-layout`.
148
+ ---
256
149
 
257
- </details>
150
+ ## Velin-Meta
258
151
 
259
- <details>
260
- <summary><strong>tokens build</strong> — Design-Tokens → CSS</summary>
152
+ Maschinenlesbarer Kontext für **Cursor, Copilot und eigene Agenten**:
261
153
 
262
- ```bash
263
- npx velinstyle tokens build --input examples/tokens.sample.json -o tokens.css
264
- ```
154
+ - **Globaler Bundle** — `dist/velin-agent.json` + `dist/llms.txt` via `velinstyle meta`
155
+ - **Page-Level-Meta** `<script type="application/vnd.velinstyle.meta+json" id="velin-meta">`
156
+ - **CLI** — `velinstyle meta page my.html --write`
265
157
 
266
- </details>
158
+ [Velin-Meta-Guide](https://velinstyle.info/docs/guides/velin-meta.html)
267
159
 
268
160
  ---
269
161
 
270
- ## Ecosystem
162
+ ## Doku & Website
271
163
 
272
- <table>
273
- <tr>
274
- <td width="50%" valign="top">
164
+ - [velinstyle.info](https://velinstyle.info) — Produktseite und Demos
165
+ - [Guides](https://velinstyle.info/docs/guides/index.html) · [Feature scope](https://velinstyle.info/docs/guides/feature-scope.html)
166
+ - [API-Referenz](https://velinstyle.info/docs/guides/api-reference.html) — aus dem Quellcode generiert
167
+ - [Generiertes Markdown](https://velinstyle.info/docs/generated/index.html) — Komponenten, Tokens, Utilities, CLI, Regeln
275
168
 
276
- **Starter &amp; Pakete**
169
+ ---
277
170
 
278
- - [templates/vite-velinstyle](templates/vite-velinstyle) — Vite + 3 Seiten + Theme-Toggle
279
- - [@velinstyle/react](packages/react) — experimentelle dünne React-Wrapper
171
+ ## Changelog
280
172
 
281
- **Dokumentation**
173
+ Alle Releases, Breaking Changes und Migrationsschritte: [CHANGELOG.md](CHANGELOG.md).
282
174
 
283
- - [Erste Schritte](docs/getting-started.html) · [Migration](docs/migration.html)
284
- - [A11y-Patterns](docs/a11y-patterns/index.html) · [Security](docs/security.html)
175
+ ---
285
176
 
286
- </td>
287
- <td width="50%" valign="top">
177
+ ## Vergleich
288
178
 
289
- **Entwicklung (dieses Repo)**
179
+ | | Bootstrap | Tailwind | Shoelace | **VelinStyle** |
180
+ | --- | :---: | :---: | :---: | :---: |
181
+ | HTML-Lesbarkeit | Mittel | Niedrig | Mittel | **Hoch** |
182
+ | Klassen-Vorhersagbarkeit | Mittel | Niedrig | Mittel | **`velin-btn--primary`** |
183
+ | Utility-Wucher | Niedrig | **Hoch** | Niedrig | **Kontrolliert** |
184
+ | Override-Story | Schwer | Config-Datei | Shadow DOM | **CSS-Layer + Tokens** |
185
+ | Barrierefreiheit | Teilweise | DIY | Gute WC | **WCAG 2.2 AAA-Tokens** |
186
+ | Dark Mode | Manuell | `dark:` überall | Theme-Attribut | **Token-Tausch** |
187
+ | App-Chrome | Legacy-JS | BYO | nur WC | **CSS + optionale WCs** |
188
+ | Liefergeschwindigkeit | Schnell | Schnell (mit Build) | Schnell | **CDN, kein Build nötig** |
189
+ | Runtime-Module | — | — | — | **Search, Motion, Meta, …** |
290
190
 
291
- ```bash
292
- npm install
293
- npm run dev # Serve auf :3000
294
- npm run build
295
- npm test
296
- npm run test:a11y
297
- ```
191
+ ---
298
192
 
299
- **Themes (13):** `brutalist`, `corporate`, `earth`, `forest`, `midnight`, `neon`, `nordic`, `ocean`, `pastel`, `retro`, `sharp`, `soft`, `sunset` — siehe [docs/themes.html](docs/themes.html).
193
+ ## Live-Demos
300
194
 
301
- </td>
302
- </tr>
303
- </table>
195
+ Vollständige Anwendungsseiten auf [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) · [Alle Demos](https://velinstyle.info/demos/) · [showcase-demos forken](https://github.com/SkyliteDesign/velinstyle/tree/main/showcase-demos)
304
196
 
305
- <!-- Maintainer: .github/social-preview.png (1280×640) unter Settings → Social preview -->
197
+ <p align="center">
198
+ <a href="https://velinstyle.info/demos/showcase-crypto.html">
199
+ <img src=".github/assets/readme/hero-demo.webp" alt="VelinStyle Crypto-Dashboard-Demo" width="720">
200
+ </a>
201
+ </p>
306
202
 
307
203
  ---
308
204
 
309
- ## Join in
310
-
311
- Wenn VelinStyle dir Zeit spart oder die Latte für inklusive UI hebt:
312
-
313
- 1. **Stern dalassen**, damit andere das Projekt finden.
314
- 2. **Issue öffnen** mit Feedback, Grenzfällen oder Ideen.
315
- 3. **Pull Request** nach [CONTRIBUTING.de.md](CONTRIBUTING.de.md).
205
+ ## Mitwirken
316
206
 
317
- Maintainer: [RELEASING.md](RELEASING.md) · [SECURITY.md](SECURITY.md)
207
+ PRs sind willkommen.
318
208
 
319
- ---
320
-
321
- ## Browser support
209
+ 1. Repository forken
210
+ 2. `npm install && npm run build`
211
+ 3. Änderung umsetzen · `npm test`, `npm run test:a11y` und `npm run test:e2e` ausführen (nach `npm run build`)
212
+ 4. Pull Request öffnen
322
213
 
323
- VelinStyle ist **mobile-first**. Nutze einen **aktuellen Evergreen-Browser** (aktuelles Safari unter iOS, Chrome/Firefox unter Android und Desktop). OKLCH, Container Queries, `@layer` und Web Components brauchen moderne Engines. Viewport-`meta` für Mobile nicht vergessen. Ältere In-App-WebViews können Farben oder Layout falsch darstellen.
214
+ Details: [CONTRIBUTING.de.md](CONTRIBUTING.de.md)
324
215
 
325
216
  ---
326
217
 
327
- ## License
218
+ ## Lizenz
328
219
 
329
220
  [MIT](LICENSE) — Copyright © 2026 VelinStyle
330
221
 
331
- ---
332
-
333
222
  <div align="center">
334
223
 
335
224
  Mit Sorgfalt fürs Web von [SkyliteDesign](https://github.com/SkyliteDesign)