@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.
- package/README.de.md +135 -246
- package/README.md +134 -245
- package/cli/blueprints/onboarding.html +2 -2
- package/cli/cli-manifest.json +97 -0
- package/cli/docgen/extract-a11y.js +89 -0
- package/cli/docgen/extract-attributes.js +95 -0
- package/cli/docgen/extract-cli.js +50 -0
- package/cli/docgen/extract-components.js +175 -0
- package/cli/docgen/extract-meta.js +32 -0
- package/cli/docgen/extract-rules.js +76 -0
- package/cli/docgen/extract-tokens.js +79 -0
- package/cli/docgen/extract-utilities.js +75 -0
- package/cli/docgen/markdown.js +43 -0
- package/cli/docs-generate.js +196 -0
- package/cli/index.js +121 -5
- package/cli/meta.js +97 -0
- package/cli/perf-audit.js +174 -0
- package/cli/pii-scanner.js +134 -0
- package/cli/scanner-rules-data.js +62 -0
- package/cli/scanner.js +68 -1
- package/cli/search-index.js +163 -0
- package/cli/tokens-build.js +21 -1
- package/cli/tokens-validate.js +69 -0
- package/components/a11y-entry.js +42 -0
- package/components/a11y-utils.js +71 -0
- package/components/focus-manager.js +45 -8
- package/components/index.js +22 -12
- package/components/runtime/component-loaders.js +43 -0
- package/components/runtime/index.js +77 -0
- package/components/runtime-entry.js +10 -0
- package/components/sanitize.js +135 -54
- package/components/velin-accordion.js +12 -0
- package/components/velin-bottom-nav.js +19 -0
- package/components/velin-carousel.js +2 -2
- package/components/velin-code-block.js +142 -0
- package/components/velin-command.js +15 -0
- package/components/velin-copy.js +18 -5
- package/components/velin-counter.js +3 -0
- package/components/velin-dialog.js +9 -1
- package/components/velin-email.js +94 -0
- package/components/velin-icon.js +65 -22
- package/components/velin-lightbox.js +8 -3
- package/components/velin-live-dot.js +5 -0
- package/components/velin-modal.js +6 -3
- package/components/velin-popover.js +34 -2
- package/components/velin-reveal.js +7 -65
- package/components/velin-scroll-top.js +1 -1
- package/components/velin-search.js +267 -0
- package/components/velin-secure-field.js +99 -0
- package/components/velin-sparkline.js +27 -7
- package/components/{velin-stepper-wc.js → velin-stepper.js} +37 -8
- package/components/velin-theme-toggle.js +12 -5
- package/components/velin-toast.js +4 -0
- package/components/{velin-tooltip-wc.js → velin-tooltip.js} +22 -3
- package/core/a11y/component-contracts.json +221 -0
- package/core/attributes/index.js +6 -0
- package/core/attributes/registry.js +268 -0
- package/core/highlight/highlight.js +114 -0
- package/core/highlight/index.js +29 -0
- package/core/highlight/languages/_utils.js +52 -0
- package/core/highlight/languages/blade.js +16 -0
- package/core/highlight/languages/css.js +26 -0
- package/core/highlight/languages/html.js +17 -0
- package/core/highlight/languages/js.js +58 -0
- package/core/highlight/languages/json.js +14 -0
- package/core/highlight/languages/markdown.js +16 -0
- package/core/highlight/languages/php.js +39 -0
- package/core/highlight/languages/plain.js +7 -0
- package/core/highlight/languages/shell.js +33 -0
- package/core/highlight/languages/sql.js +20 -0
- package/core/highlight/languages/typescript.js +28 -0
- package/core/highlight/observe.js +53 -0
- package/core/highlight/registry.js +107 -0
- package/core/highlight/render.js +35 -0
- package/core/highlight/types.js +28 -0
- package/core/meta/build.js +293 -0
- package/core/meta/index.js +17 -0
- package/core/meta/schema.js +49 -0
- package/core/motion/effects.js +54 -0
- package/core/motion/index.js +76 -0
- package/core/motion/scheduler.js +72 -0
- package/core/motion/scroll.js +32 -0
- package/core/motion/stagger.js +24 -0
- package/core/search/docs-url.js +96 -0
- package/core/search/engine.js +139 -0
- package/core/search/highlight.js +48 -0
- package/core/search/index.js +126 -0
- package/core/search/providers.js +36 -0
- package/core/search/types.js +61 -0
- package/core/search/worker-client.js +56 -0
- package/core/search/worker.js +20 -0
- package/dist/chunks/a11y-utils-IRC7LOPF.js +16 -0
- package/dist/chunks/attributes-3BZLI7XF.js +364 -0
- package/dist/chunks/attributes-4N5JP4CG.js +364 -0
- package/dist/chunks/attributes-5Q2WXGRC.js +374 -0
- package/dist/chunks/attributes-AIR7SVLK.js +364 -0
- package/dist/chunks/attributes-BGRN5XZO.js +364 -0
- package/dist/chunks/attributes-BVSQAYLR.js +364 -0
- package/dist/chunks/attributes-CDYFUY7Y.js +364 -0
- package/dist/chunks/attributes-JMYJZBPE.js +364 -0
- package/dist/chunks/attributes-R5JY3X4O.js +374 -0
- package/dist/chunks/attributes-STYCS3O5.js +391 -0
- package/dist/chunks/attributes-TNSPQTHX.js +374 -0
- package/dist/chunks/attributes-TPANLMLF.js +391 -0
- package/dist/chunks/blade-LIQLVKZQ.js +19 -0
- package/dist/chunks/browser-MRKYZPEH.js +1149 -0
- package/dist/chunks/chunk-2354NEBP.js +109 -0
- package/dist/chunks/chunk-2VNA7G7S.js +109 -0
- package/dist/chunks/chunk-42VVPW6N.js +132 -0
- package/dist/chunks/chunk-7FFAMRFV.js +44 -0
- package/dist/chunks/chunk-7MCGPHVC.js +69 -0
- package/dist/chunks/chunk-AQLRJSGG.js +109 -0
- package/dist/chunks/chunk-EWPSDMQT.js +109 -0
- package/dist/chunks/chunk-F7OLHTGX.js +22 -0
- package/dist/chunks/chunk-J472ERN2.js +242 -0
- package/dist/chunks/chunk-LA7264K4.js +85 -0
- package/dist/chunks/chunk-M5CHQVP6.js +61 -0
- package/dist/chunks/chunk-MKZP2TBH.js +89 -0
- package/dist/chunks/chunk-QTJJ3DPO.js +109 -0
- package/dist/chunks/chunk-RDE3QE7Z.js +89 -0
- package/dist/chunks/chunk-RSMRR27R.js +109 -0
- package/dist/chunks/chunk-RZQVWFHW.js +109 -0
- package/dist/chunks/chunk-SRL6EWHP.js +109 -0
- package/dist/chunks/chunk-U4XHMZ7D.js +109 -0
- package/dist/chunks/chunk-V5YIUA6G.js +109 -0
- package/dist/chunks/chunk-XIET2VSZ.js +109 -0
- package/dist/chunks/chunk-XYLJ2GCB.js +205 -0
- package/dist/chunks/chunk-Z4JYQ2XX.js +51 -0
- package/dist/chunks/chunk-ZPSPKUYD.js +109 -0
- package/dist/chunks/css-MQ5YU77P.js +28 -0
- package/dist/chunks/highlight-GJHHV4KM.js +37 -0
- package/dist/chunks/highlight-XTHRKBA3.js +37 -0
- package/dist/chunks/html-ZODC4DLQ.js +20 -0
- package/dist/chunks/js-MNSNYTJU.js +7 -0
- package/dist/chunks/json-VEM2HFH3.js +17 -0
- package/dist/chunks/markdown-E7OPGS3S.js +19 -0
- package/dist/chunks/php-MLL7T3LT.js +41 -0
- package/dist/chunks/plain-LJJDC5TN.js +8 -0
- package/dist/chunks/runtime-entry.js +14 -0
- package/dist/chunks/shell-QTRK4U4E.js +35 -0
- package/dist/chunks/sql-PPWLHGJ2.js +23 -0
- package/dist/chunks/typescript-JT3CCYWL.js +30 -0
- package/dist/chunks/velin-accordion-FBIPAEXG.js +105 -0
- package/dist/chunks/velin-accordion-QAQO7BI7.js +117 -0
- package/dist/chunks/velin-announcer-PVTXXCWR.js +33 -0
- package/dist/chunks/velin-bottom-nav-2N2TYWOF.js +86 -0
- package/dist/chunks/velin-bottom-nav-7GEMPIM6.js +86 -0
- package/dist/chunks/velin-bottom-nav-CTU6FFZV.js +101 -0
- package/dist/chunks/velin-bottom-nav-N3DFQR66.js +86 -0
- package/dist/chunks/velin-carousel-Y5VCOABZ.js +213 -0
- package/dist/chunks/velin-carousel-ZTBANFQQ.js +213 -0
- package/dist/chunks/velin-code-block-ASUBTAQV.js +119 -0
- package/dist/chunks/velin-code-block-CIAURDRJ.js +132 -0
- package/dist/chunks/velin-code-block-TSUKPY4C.js +123 -0
- package/dist/chunks/velin-code-block-Y6CM726Q.js +119 -0
- package/dist/chunks/velin-collapse-5XYBUIID.js +80 -0
- package/dist/chunks/velin-combobox-2KDTCQ7N.js +155 -0
- package/dist/chunks/velin-combobox-NXS4QB4R.js +155 -0
- package/dist/chunks/velin-combobox-UGA56HP3.js +155 -0
- package/dist/chunks/velin-command-CKDNO4BW.js +148 -0
- package/dist/chunks/velin-command-M7RNHUPR.js +136 -0
- package/dist/chunks/velin-command-ONKO2A3J.js +136 -0
- package/dist/chunks/velin-command-TMLSRGIU.js +136 -0
- package/dist/chunks/velin-copy-G2TZ5YBB.js +81 -0
- package/dist/chunks/velin-copy-NYDBOKXT.js +81 -0
- package/dist/chunks/velin-copy-T5KDTDXP.js +81 -0
- package/dist/chunks/velin-countdown-4ZVDGK4R.js +101 -0
- package/dist/chunks/velin-countdown-5XSTN3BH.js +101 -0
- package/dist/chunks/velin-countdown-7AIY66CU.js +101 -0
- package/dist/chunks/velin-counter-ISCTEAHI.js +118 -0
- package/dist/chunks/velin-counter-L5FYJF7A.js +121 -0
- package/dist/chunks/velin-dialog-D2GUHSCD.js +144 -0
- package/dist/chunks/velin-dialog-ELFOZIXZ.js +152 -0
- package/dist/chunks/velin-dialog-GTTZI564.js +147 -0
- package/dist/chunks/velin-dialog-IJLFDXAJ.js +144 -0
- package/dist/chunks/velin-dialog-TNS3WXMB.js +144 -0
- package/dist/chunks/velin-drawer-BE6TYN3H.js +130 -0
- package/dist/chunks/velin-drawer-DLL2GLT6.js +130 -0
- package/dist/chunks/velin-drawer-MJS6WCF7.js +130 -0
- package/dist/chunks/velin-dropdown-PLUIFA5M.js +172 -0
- package/dist/chunks/velin-email-N5B5ZYTE.js +90 -0
- package/dist/chunks/velin-email-NTM6DG3V.js +90 -0
- package/dist/chunks/velin-email-RBX6ZR4S.js +90 -0
- package/dist/chunks/velin-haptic-4QQTM3RK.js +50 -0
- package/dist/chunks/velin-icon-7M76DOPB.js +164 -0
- package/dist/chunks/velin-icon-KZO3IEHG.js +164 -0
- package/dist/chunks/velin-icon-WTFPG2DD.js +191 -0
- package/dist/chunks/velin-icon-ZTSKUOVN.js +193 -0
- package/dist/chunks/velin-lightbox-6E7CAATP.js +149 -0
- package/dist/chunks/velin-lightbox-I75U6JF4.js +140 -0
- package/dist/chunks/velin-lightbox-QOTB4PRL.js +140 -0
- package/dist/chunks/velin-lightbox-UCD6N7HF.js +140 -0
- package/dist/chunks/velin-live-dot-RJHX2DGY.js +74 -0
- package/dist/chunks/velin-live-dot-XHUZCIDZ.js +67 -0
- package/dist/chunks/velin-menubar-I426AED2.js +86 -0
- package/dist/chunks/velin-menubar-J66JXRWW.js +86 -0
- package/dist/chunks/velin-menubar-SFEXJE56.js +86 -0
- package/dist/chunks/velin-modal-2HOBXE6F.js +176 -0
- package/dist/chunks/velin-modal-5HYNNNUI.js +176 -0
- package/dist/chunks/velin-modal-AEOTZ67O.js +177 -0
- package/dist/chunks/velin-modal-GLI2XZZB.js +176 -0
- package/dist/chunks/velin-persist-DFPL3QP4.js +110 -0
- package/dist/chunks/velin-popover-EXINRIGJ.js +145 -0
- package/dist/chunks/velin-popover-HQW6Q2Y6.js +172 -0
- package/dist/chunks/velin-popover-OXX7MRZ6.js +145 -0
- package/dist/chunks/velin-popover-T72HK3DF.js +151 -0
- package/dist/chunks/velin-popover-YKCCROJG.js +145 -0
- package/dist/chunks/velin-progress-ring-E4YRLZHH.js +66 -0
- package/dist/chunks/velin-rating-6CDBI6DG.js +91 -0
- package/dist/chunks/velin-rating-N4DI2XNL.js +91 -0
- package/dist/chunks/velin-rating-XRQJV4LO.js +91 -0
- package/dist/chunks/velin-scroll-top-F2FCZNYD.js +58 -0
- package/dist/chunks/velin-scroll-top-OHYVVHHY.js +58 -0
- package/dist/chunks/velin-scrollspy-OKCT4FDV.js +50 -0
- package/dist/chunks/velin-search-2XRQFBCS.js +556 -0
- package/dist/chunks/velin-search-4YHJWYSS.js +556 -0
- package/dist/chunks/velin-search-7B4KJ6TX.js +557 -0
- package/dist/chunks/velin-search-LWHY23Q5.js +474 -0
- package/dist/chunks/velin-secure-field-6PV7RZDJ.js +95 -0
- package/dist/chunks/velin-secure-field-H7FSBUJW.js +95 -0
- package/dist/chunks/velin-secure-field-OFNAXCDP.js +95 -0
- package/dist/chunks/velin-segmented-control-EKL4E3BL.js +109 -0
- package/dist/chunks/velin-segmented-control-GYD5BIXQ.js +109 -0
- package/dist/chunks/velin-segmented-control-PQX6LKOJ.js +109 -0
- package/dist/chunks/velin-sheet-3OGI4HD7.js +119 -0
- package/dist/chunks/velin-sheet-OUK6572T.js +119 -0
- package/dist/chunks/velin-sheet-R2Y67X6H.js +119 -0
- package/dist/chunks/velin-sparkline-GVEANJVW.js +184 -0
- package/dist/chunks/velin-sparkline-KDA3GQAN.js +162 -0
- package/dist/chunks/velin-sparkline-XVTFC6GE.js +181 -0
- package/dist/chunks/velin-stepper-2ZIHLKGM.js +141 -0
- package/dist/chunks/velin-stepper-7ECRUYHD.js +148 -0
- package/dist/chunks/velin-stepper-FYEUEWE6.js +141 -0
- package/dist/chunks/velin-stepper-X54WGHDG.js +141 -0
- package/dist/chunks/velin-stepper-wc-QU3KRVQR.js +133 -0
- package/dist/chunks/velin-tabs-5UQ5ZVMV.js +138 -0
- package/dist/chunks/velin-theme-toggle-32J2CBNC.js +291 -0
- package/dist/chunks/velin-theme-toggle-BNNS7WLV.js +285 -0
- package/dist/chunks/velin-theme-toggle-NO7V4TWI.js +285 -0
- package/dist/chunks/velin-theme-toggle-QELCJM2Q.js +291 -0
- package/dist/chunks/velin-toast-OMMOA2DK.js +109 -0
- package/dist/chunks/velin-toast-RCZ4CSUC.js +109 -0
- package/dist/chunks/velin-toast-RSF2IHT3.js +113 -0
- package/dist/chunks/velin-toast-WEUBTJG6.js +109 -0
- package/dist/chunks/velin-tooltip-664IOHZA.js +112 -0
- package/dist/chunks/velin-tooltip-BDHGRTQB.js +112 -0
- package/dist/chunks/velin-tooltip-HVUOKNVX.js +112 -0
- package/dist/chunks/velin-tooltip-wc-LXDVT6DE.js +103 -0
- package/dist/chunks/worker-client-R6DBYPFT.js +46 -0
- package/dist/llms.test.txt +40 -0
- package/dist/llms.txt +40 -0
- package/dist/search-index.json +1773 -0
- package/dist/search-index.test.json +1773 -0
- package/dist/themes/brutalist.min.css +1 -1
- package/dist/themes/midnight.min.css +1 -1
- package/dist/themes/pastel.min.css +1 -1
- package/dist/themes/retro.min.css +1 -1
- package/dist/themes/sunset.min.css +1 -1
- package/dist/velin-agent.json +684 -0
- package/dist/velin-agent.test.json +684 -0
- package/dist/velinstyle-components.iife.js +7715 -3515
- package/dist/velinstyle-components.js +7087 -2859
- package/dist/velinstyle-components.min.js +196 -109
- package/dist/velinstyle.css +604 -65
- package/dist/velinstyle.d.ts +54 -0
- package/dist/velinstyle.min.css +1 -1
- package/examples/search-index.schema.json +33 -0
- package/package.json +56 -10
- package/src/a11y/authentication.css +37 -0
- package/src/a11y/consistent-help.css +22 -0
- package/src/a11y/dragging-alternatives.css +30 -0
- package/src/a11y/focus-appearance.css +20 -0
- package/src/a11y/high-contrast-aaa.css +16 -26
- package/src/a11y/skip-link.css +3 -1
- package/src/a11y/sr-only.css +1 -1
- package/src/base/reset.css +0 -36
- package/src/base/wc-placeholder.css +102 -0
- package/src/components/attributes.css +42 -0
- package/src/components/highlight.css +182 -0
- package/src/components/input-group.css +1 -2
- package/src/components/nav.css +2 -3
- package/src/components/search.css +95 -0
- package/src/components/stepper.css +2 -4
- package/src/components/timeline.css +1 -2
- package/src/components/tooltip.css +2 -4
- package/src/layout/container.css +5 -5
- package/src/layout/grid.css +8 -8
- package/src/layout/patterns.css +5 -5
- package/src/themes/brutalist.css +2 -11
- package/src/themes/corporate.css +0 -9
- package/src/themes/earth.css +0 -9
- package/src/themes/forest.css +0 -9
- package/src/themes/midnight.css +1 -10
- package/src/themes/neon.css +0 -9
- package/src/themes/nordic.css +0 -9
- package/src/themes/ocean.css +0 -9
- package/src/themes/pastel.css +1 -10
- package/src/themes/retro.css +2 -11
- package/src/themes/sharp.css +0 -7
- package/src/themes/soft.css +0 -7
- package/src/themes/sunset.css +1 -10
- package/src/tokens/color.css +45 -46
- package/src/tokens/fonts.css +10 -0
- package/src/tokens/typography.css +4 -5
- package/src/utilities/animation.css +2 -2
- package/src/utilities/display.css +3 -3
- package/src/utilities/divide.css +2 -6
- package/src/utilities/responsive.css +4 -4
- package/src/utilities/safe-area.css +1 -1
- package/src/utilities/scroll-animation.css +34 -0
- package/src/utilities/spacing.css +17 -8
- package/src/utilities/text.css +4 -1
- package/src/velinstyle.css +9 -0
package/README.de.md
CHANGED
|
@@ -1,21 +1,26 @@
|
|
|
1
1
|
<div align="center">
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
3
|
+
```
|
|
4
|
+
██╗ ██╗███████╗██╗ ██╗███╗ ██╗███████╗████████╗██╗ ██╗██╗ ███████╗
|
|
5
|
+
██║ ██║██╔════╝██║ ██║████╗ ██║██╔════╝╚══██╔══╝██║ ██║██║ ██╔════╝
|
|
6
|
+
██║ ██║█████╗ ██║ ██║██╔██╗ ██║███████╗ ██║ ███████║██║ █████╗
|
|
7
|
+
╚██╗ ██╔╝██╔══╝ ██║ ██║██║╚██╗██║╚════██║ ██║ ██╔══██║██║ ██╔══╝
|
|
8
|
+
╚████╔╝ ███████╗███████╗██║██║ ╚████║███████║ ██║ ██║ ██║███████╗███████╗
|
|
9
|
+
╚═══╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═╝ ╚═╝ ╚═╝╚══════╝╚══════╝
|
|
10
|
+
```
|
|
9
11
|
|
|
10
12
|
[](LICENSE)
|
|
11
|
-
[](docs/a11y.html)
|
|
13
|
-
[]()
|
|
14
|
-
[]()
|
|
13
|
+
[](https://github.com/SkyliteDesign/velinstyle/releases/tag/v0.9.0)
|
|
15
14
|
[](https://www.npmjs.com/package/@birdapi/velinstyle)
|
|
16
|
-
[](https://velinstyle.info/docs/a11y.html)
|
|
16
|
+
[](https://github.com/SkyliteDesign/velinstyle/stargazers)
|
|
17
|
+
[](CONTRIBUTING.de.md)
|
|
17
18
|
|
|
18
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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> & <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
|
-
##
|
|
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
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
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
|
-
##
|
|
106
|
-
|
|
107
|
-
### <span>①</span> Installation
|
|
54
|
+
## Installation
|
|
108
55
|
|
|
109
56
|
```bash
|
|
110
|
-
npm
|
|
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
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
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
|
-
|
|
70
|
+
**CDN (Version pinnen):**
|
|
131
71
|
|
|
132
72
|
```html
|
|
133
|
-
<
|
|
134
|
-
<
|
|
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
|
-
|
|
77
|
+
Nach dem Klonen: `npm install && npm run build` — `dist/` wird erzeugt, nicht committet.
|
|
141
78
|
|
|
142
79
|
---
|
|
143
80
|
|
|
144
|
-
##
|
|
81
|
+
## Quickstart
|
|
145
82
|
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
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><p class="velin-text-muted">Hallo VelinStyle</p></velin-code-block>
|
|
95
|
+
</body>
|
|
96
|
+
</html>
|
|
97
|
+
```
|
|
156
98
|
|
|
157
99
|
---
|
|
158
100
|
|
|
159
|
-
##
|
|
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
|
-
|
|
|
103
|
+
| Export | Beschreibung |
|
|
172
104
|
| --- | --- |
|
|
173
|
-
|
|
|
174
|
-
|
|
|
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
|
-
##
|
|
179
|
-
|
|
180
|
-
Alle Befehle: `npx velinstyle <befehl>` · `npx velinstyle --help`
|
|
181
|
-
|
|
182
|
-
<details>
|
|
183
|
-
<summary><strong>Projekt & 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 <komponente>`** — 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
|
-
|
|
203
|
-
<summary><strong>scan</strong> — Security, A11y & 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
|
-
-
|
|
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
|
-
|
|
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
|
-
|
|
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 & JSON-Maps</summary>
|
|
220
|
-
|
|
221
|
-
- **`npx velinstyle prefix <ordner>`** — 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
|
-
|
|
124
|
+
## CLI
|
|
235
125
|
|
|
236
|
-
|
|
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
|
-
|
|
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
|
-
|
|
242
|
-
- **`npx velinstyle layout suggest [pfad]`**
|
|
243
|
-
- **`npx velinstyle layout fix [pfad] --write`**
|
|
136
|
+
---
|
|
244
137
|
|
|
245
|
-
|
|
138
|
+
## Security
|
|
246
139
|
|
|
247
|
-
|
|
140
|
+
VelinStyle bringt **Security-Tooling mit**, nicht als Nachgedanke:
|
|
248
141
|
|
|
249
|
-
|
|
250
|
-
|
|
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
|
-
-
|
|
253
|
-
- **`npx velinstyle blueprint <name> -o datei.html`**
|
|
146
|
+
[Security-Dokumentation](https://velinstyle.info/docs/extend/security.html)
|
|
254
147
|
|
|
255
|
-
|
|
148
|
+
---
|
|
256
149
|
|
|
257
|
-
|
|
150
|
+
## Velin-Meta
|
|
258
151
|
|
|
259
|
-
|
|
260
|
-
<summary><strong>tokens build</strong> — Design-Tokens → CSS</summary>
|
|
152
|
+
Maschinenlesbarer Kontext für **Cursor, Copilot und eigene Agenten**:
|
|
261
153
|
|
|
262
|
-
|
|
263
|
-
|
|
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
|
-
|
|
158
|
+
[Velin-Meta-Guide](https://velinstyle.info/docs/guides/velin-meta.html)
|
|
267
159
|
|
|
268
160
|
---
|
|
269
161
|
|
|
270
|
-
##
|
|
162
|
+
## Doku & Website
|
|
271
163
|
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
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
|
-
|
|
169
|
+
---
|
|
277
170
|
|
|
278
|
-
|
|
279
|
-
- [@velinstyle/react](packages/react) — experimentelle dünne React-Wrapper
|
|
171
|
+
## Changelog
|
|
280
172
|
|
|
281
|
-
|
|
173
|
+
Alle Releases, Breaking Changes und Migrationsschritte: [CHANGELOG.md](CHANGELOG.md).
|
|
282
174
|
|
|
283
|
-
|
|
284
|
-
- [A11y-Patterns](docs/a11y-patterns/index.html) · [Security](docs/security.html)
|
|
175
|
+
---
|
|
285
176
|
|
|
286
|
-
|
|
287
|
-
<td width="50%" valign="top">
|
|
177
|
+
## Vergleich
|
|
288
178
|
|
|
289
|
-
|
|
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
|
-
|
|
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
|
-
|
|
193
|
+
## Live-Demos
|
|
300
194
|
|
|
301
|
-
|
|
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
|
-
|
|
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
|
-
##
|
|
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
|
-
|
|
207
|
+
PRs sind willkommen.
|
|
318
208
|
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
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
|
-
|
|
214
|
+
Details: [CONTRIBUTING.de.md](CONTRIBUTING.de.md)
|
|
324
215
|
|
|
325
216
|
---
|
|
326
217
|
|
|
327
|
-
##
|
|
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)
|