@birdapi/velinstyle 0.6.1 → 0.8.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 (64) hide show
  1. package/README.de.md +337 -316
  2. package/README.md +33 -12
  3. package/cli/blueprint.js +8 -0
  4. package/cli/blueprints/bottom-nav-mobile.html +17 -0
  5. package/cli/blueprints/cookie-consent.html +9 -0
  6. package/cli/blueprints/empty-state.html +5 -0
  7. package/cli/blueprints/filter-bar.html +15 -0
  8. package/cli/blueprints/notification-center.html +13 -0
  9. package/cli/blueprints/onboarding.html +23 -0
  10. package/cli/blueprints/pricing-table.html +20 -0
  11. package/cli/blueprints/settings-panel.html +20 -0
  12. package/cli/index.js +119 -3
  13. package/cli/layout-audit.js +325 -0
  14. package/cli/scaffold-recipes.json +70 -0
  15. package/cli/scaffold.js +155 -0
  16. package/cli/scanner.js +114 -0
  17. package/components/focus-manager.js +106 -80
  18. package/components/index.js +20 -1
  19. package/components/sanitize.js +29 -3
  20. package/components/shadow-a11y-styles.js +18 -0
  21. package/components/velin-accordion.js +112 -98
  22. package/components/velin-announcer.js +35 -0
  23. package/components/velin-bottom-nav.js +89 -0
  24. package/components/velin-carousel.js +40 -5
  25. package/components/velin-collapse.js +95 -65
  26. package/components/velin-combobox.js +149 -0
  27. package/components/velin-command.js +127 -0
  28. package/components/velin-counter.js +152 -0
  29. package/components/velin-drawer.js +6 -3
  30. package/components/velin-dropdown.js +33 -2
  31. package/components/velin-flip.js +220 -0
  32. package/components/velin-icon.js +43 -9
  33. package/components/velin-live-dot.js +85 -0
  34. package/components/velin-menubar.js +83 -0
  35. package/components/velin-modal.js +3 -1
  36. package/components/velin-popover.js +61 -21
  37. package/components/velin-rating.js +91 -0
  38. package/components/velin-reveal.js +80 -0
  39. package/components/velin-segmented-control.js +108 -0
  40. package/components/velin-sheet.js +107 -0
  41. package/components/velin-sparkline.js +207 -0
  42. package/components/velin-theme-toggle.js +277 -60
  43. package/components/velin-tooltip-wc.js +26 -2
  44. package/dist/velinstyle-components.iife.js +1849 -120
  45. package/dist/velinstyle-components.js +1871 -120
  46. package/dist/velinstyle-components.min.js +434 -91
  47. package/dist/velinstyle.css +640 -44
  48. package/dist/velinstyle.min.css +1 -1
  49. package/package.json +7 -3
  50. package/src/a11y/focus-not-obscured.css +21 -0
  51. package/src/a11y/forced-colors.css +86 -38
  52. package/src/a11y/high-contrast-aaa.css +37 -0
  53. package/src/a11y/preferences.css +106 -85
  54. package/src/a11y/security.css +119 -104
  55. package/src/a11y/target-size.css +32 -0
  56. package/src/base/reset.css +12 -1
  57. package/src/base/root.css +4 -4
  58. package/src/components/nav.css +152 -151
  59. package/src/tokens/motion.css +7 -0
  60. package/src/utilities/animation.css +97 -1
  61. package/src/utilities/chart-animation.css +101 -0
  62. package/src/utilities/filter-effects.css +103 -0
  63. package/src/utilities/safe-area.css +39 -0
  64. package/src/velinstyle.css +9 -1
package/README.de.md CHANGED
@@ -1,316 +1,337 @@
1
- <div align="center">
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>
9
-
10
- [![Lizenz: MIT](https://img.shields.io/badge/Lizenz-MIT-2563eb?style=flat-square)](LICENSE)
11
- [![Release](https://img.shields.io/badge/Release-v0.6.1-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)]()
15
- [![npm](https://img.shields.io/badge/npm-publish_pending-64748b?style=flat-square)](https://www.npmjs.com/package/@birdapi/velinstyle)
16
-
17
- <!-- Nach npm-Publish: https://img.shields.io/npm/v/velinstyle?style=flat-square -->
18
-
19
- [Website](https://velinstyle.info) · [Dokumentation](docs/index.html) · [Beispiele](samples/) · [Playground](tools/playground/index.html) · [Theme Builder](tools/theme-builder/index.html) · [Issues](https://github.com/SkyliteDesign/velinstyle/issues)
20
-
21
- **[English](README.md)** · **Deutsch**
22
-
23
- </div>
24
-
25
- ---
26
-
27
- ## Inhalt
28
-
29
- - [Problem & Lösung](#the-problem--the-fix)
30
- - [Das liefert VelinStyle](#what-you-get)
31
- - [Architektur](#architecture)
32
- - [Schnellstart](#quick-start)
33
- - [Warum VelinStyle?](#why-velinstyle)
34
- - [Demo-Galerie](#demo-gallery)
35
- - [CLI-Referenz](#cli-reference)
36
- - [Ökosystem](#ecosystem)
37
- - [Mitmachen](#join-in)
38
- - [Browser-Unterstützung](#browser-support)
39
- - [Lizenz](#license)
40
-
41
- ---
42
-
43
- ## The problem & the fix
44
-
45
- <table>
46
- <tr>
47
- <td width="50%" valign="top">
48
-
49
- ### Das Problem
50
-
51
- 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.
52
-
53
- </td>
54
- <td width="50%" valign="top">
55
-
56
- ### Die VelinStyle-Antwort
57
-
58
- **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.
59
-
60
- </td>
61
- </tr>
62
- </table>
63
-
64
- ---
65
-
66
- ## What you get
67
-
68
- <table>
69
- <thead>
70
- <tr><th></th><th>Funktion</th><th>Was du davon hast</th></tr>
71
- </thead>
72
- <tbody>
73
- <tr><td align="center">♿</td><td><strong>WCAG AA by design</strong></td><td>Fokus, ARIA und Tastatur in Komponenten und Overlays</td></tr>
74
- <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>
75
- <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>
76
- <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>
77
- <tr><td align="center">🧩</td><td><strong>25 CSS-Module · 21 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>
78
- <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>tokens build</code></td></tr>
79
- <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>
80
- </tbody>
81
- </table>
82
-
83
- ---
84
-
85
- ## Architecture
86
-
87
- ```mermaid
88
- flowchart LR
89
- tokens[tokens] --> reset[reset]
90
- reset --> base[base]
91
- base --> a11y[a11y]
92
- a11y --> layout[layout]
93
- layout --> components[components]
94
- components --> utilities[utilities]
95
- utilities --> themes[themes]
96
- ```
97
-
98
- Einstieg: [`src/velinstyle.css`](src/velinstyle.css) · Build-Ausgabe: `dist/` (`npm run build`)
99
-
100
- ```css
101
- @layer tokens, reset, base, a11y, layout, components, utilities, themes;
102
- ```
103
-
104
- ---
105
-
106
- ## Quick start
107
-
108
- ### <span>①</span> Installation
109
-
110
- ```bash
111
- npm install @birdapi/velinstyle
112
- ```
113
-
114
- ### <span>②</span> CSS + Komponenten einbinden (ES-Module)
115
-
116
- ```html
117
- <link rel="stylesheet" href="node_modules/velinstyle/dist/velinstyle.min.css">
118
- <script type="module" src="node_modules/velinstyle/dist/velinstyle-components.min.js"></script>
119
- ```
120
-
121
- <details>
122
- <summary><strong>CDN-Alternative</strong> (ohne npm install)</summary>
123
-
124
- ```html
125
- <link rel="stylesheet" href="https://unpkg.com/velinstyle@latest/dist/velinstyle.min.css">
126
- <script type="module" src="https://unpkg.com/velinstyle@latest/dist/velinstyle-components.min.js"></script>
127
- ```
128
-
129
- </details>
130
-
131
- ### <span>③</span> Erste Oberfläche markupen
132
-
133
- ```html
134
- <meta name="viewport" content="width=device-width, initial-scale=1">
135
- <div class="velin-container velin-p-6">
136
- <p class="velin-lead velin-text-muted">Hallo, VelinStyle.</p>
137
- <button type="button" class="velin-btn velin-btn--primary">Primäre Aktion</button>
138
- </div>
139
- ```
140
-
141
- > **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).
142
-
143
- ---
144
-
145
- ## Why VelinStyle?
146
-
147
- Eine **einheitliche Produktsprache**—Präfix-Klassen (`velin-`), klare **`@layer`-Architektur**, modernes CSS (`@scope`, Nesting, `:has()`)—ohne **Liefergeschwindigkeit** zu opfern.
148
-
149
- | | Bootstrap | Tailwind | **VelinStyle** |
150
- | --- | :---: | :---: | :---: |
151
- | A11y | ⚠️ Teilweise | Nicht eingebaut | ✅ **WCAG AA strukturell** |
152
- | Farben | HEX/RGB | HEX/RGB | ✅ **OKLCH** + tokenisierte Themes |
153
- | Dark Mode | ⚠️ Build / manuell | `dark:`-Varianten | ✅ **Token-Swap** (`data-velin-theme`) |
154
- | Layout | Viewport-first | Viewport-Utilities | ✅ **Container Queries** + Media |
155
- | Interaktion | ⚠️ Legacy-JS-Muster | Eigenes JS | ✅ **Web Components** |
156
- | Bundle (Richtwert) | ~230 KB CSS+JS | JIT / variabel | ✅ **~46 KB CSS + ~66 KB JS (min)** |
157
-
158
- ---
159
-
160
- ## Demo gallery
161
-
162
- | Demo | Seite | Demo | Seite |
163
- | --- | --- | --- | --- |
164
- | Landing | [samples/landing.html](samples/landing.html) | Dashboard | [samples/dashboard.html](samples/dashboard.html) |
165
- | Login | [samples/login.html](samples/login.html) | Registrierung | [samples/signup.html](samples/signup.html) |
166
- | Pricing | [samples/pricing.html](samples/pricing.html) | E-Commerce | [samples/ecommerce.html](samples/ecommerce.html) |
167
- | Blog | [samples/blog.html](samples/blog.html) | Portfolio | [samples/portfolio.html](samples/portfolio.html) |
168
- | Chat | [samples/chat.html](samples/chat.html) | E-Mail | [samples/email.html](samples/email.html) |
169
- | Kanban | [samples/kanban.html](samples/kanban.html) | Einstellungen | [samples/settings.html](samples/settings.html) |
170
- | RTL-Layout | [samples/rtl.html](samples/rtl.html) | A11y-Patterns | [samples/a11y-patterns.html](samples/a11y-patterns.html) |
171
-
172
- | Tool | Seite |
173
- | --- | --- |
174
- | HTML-Playground | [tools/playground/index.html](tools/playground/index.html) |
175
- | OKLCH Theme Builder | [tools/theme-builder/index.html](tools/theme-builder/index.html) |
176
-
177
- ---
178
-
179
- ## CLI reference
180
-
181
- Alle Befehle: `npx velinstyle <befehl>` · `npx velinstyle --help`
182
-
183
- <details>
184
- <summary><strong>Projekt &amp; Build</strong> — <code>init</code>, <code>build</code>, <code>themes</code>, <code>add</code></summary>
185
-
186
- - **`npx velinstyle init`** — erstellt `velinstyle.config.js` (Layer-Auswahl, Theme, Scan-Optionen).
187
- - **`npx velinstyle build`** — CSS-Bundle aus gewählten Layern (`--output` / `-o`, `--minify`).
188
- - **`npx velinstyle themes`**listet 13 Theme-Presets.
189
- - **`npx velinstyle add &lt;komponente&gt;`** — kopiert eine einzelne Komponenten-CSS-Datei ins Projekt.
190
-
191
- </details>
192
-
193
- <details>
194
- <summary><strong>Icons</strong> — Multi-Provider-Sprite-Workflow</summary>
195
-
196
- - **`npx velinstyle icons list`** Lucide, Heroicons, Bootstrap Icons, Material Symbols, Font Awesome, Tabler.
197
- - **`npx velinstyle icons add lucide --icons menu,search,check`**
198
- - **`npx velinstyle icons add heroicons --icons arrow-left --variant outline`**
199
- - **`npx velinstyle icons build`** — Sprite neu bauen (im VelinStyle-Klon: schreibt `icons/svg/` und baut neu).
200
-
201
- </details>
202
-
203
- <details>
204
- <summary><strong>scan</strong> — Security, A11y &amp; CSS-Lint</summary>
205
-
206
- - **`npx velinstyle scan [pfad]`** — HTML, CSS, JS; **`--format json`** für CI.
207
- - **`--severity`** — Mindest-Stufe filtern: `error` | `warning` | `info`.
208
- - **`--fix`** — nur sichere Auto-Fixes; **`--fix-dry-run`** listet Dateien ohne Schreiben.
209
- - **`--fix-lang`** — BCP 47 für `lang` auf `<html>` (Standard `de`).
210
-
211
- **Auto-Fixes (Auszug):** `rel="noopener noreferrer"` bei riskantem `target="_blank"`; `lang` auf `<html>`; Skip-Link wenn `id="main"` existiert; rohe `z-index` → `--velin-z-*`.
212
-
213
- **Nicht automatisch:** `javascript:`-URLs, `eval`, rohes `innerHTML`, Inline-Event-Handler — im Code bereinigen.
214
-
215
- **Trusted Types / XSS:** Der Scanner ersetzt keine CSP-Policies. Web Components nutzen `escapeHTML()` / `sanitizeURL()`; siehe [docs/security.html](docs/security.html).
216
-
217
- </details>
218
-
219
- <details>
220
- <summary><strong>prefix</strong> — Klassen-Codemod &amp; JSON-Maps</summary>
221
-
222
- - **`npx velinstyle prefix &lt;ordner&gt;`** Standard: Dry-Run; **`--write`** schreibt Änderungen.
223
- - **`--bootstrap-display`** — mappt Bootstrap-`d-*` auf Velin-Display-Klassen.
224
- - **`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).
225
-
226
- </details>
227
-
228
- <details>
229
- <summary><strong>blueprint</strong> — 14 HTML-Snippets</summary>
230
-
231
- - **`npx velinstyle blueprint list`**
232
- - **`npx velinstyle blueprint &lt;name&gt; -o datei.html`**
233
-
234
- 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`.
235
-
236
- </details>
237
-
238
- <details>
239
- <summary><strong>tokens build</strong> — Design-Tokens → CSS</summary>
240
-
241
- ```bash
242
- npx velinstyle tokens build --input examples/tokens.sample.json -o tokens.css
243
- ```
244
-
245
- </details>
246
-
247
- ---
248
-
249
- ## Ecosystem
250
-
251
- <table>
252
- <tr>
253
- <td width="50%" valign="top">
254
-
255
- **Starter &amp; Pakete**
256
-
257
- - [templates/vite-velinstyle](templates/vite-velinstyle) — Vite + 3 Seiten + Theme-Toggle
258
- - [@velinstyle/react](packages/react) — experimentelle dünne React-Wrapper
259
-
260
- **Dokumentation**
261
-
262
- - [Erste Schritte](docs/getting-started.html) · [Migration](docs/migration.html)
263
- - [A11y-Patterns](docs/a11y-patterns/index.html) · [Security](docs/security.html)
264
-
265
- </td>
266
- <td width="50%" valign="top">
267
-
268
- **Entwicklung (dieses Repo)**
269
-
270
- ```bash
271
- npm install
272
- npm run dev # Serve auf :3000
273
- npm run build
274
- npm test
275
- npm run test:a11y
276
- ```
277
-
278
- **Themes (13):** `brutalist`, `corporate`, `earth`, `forest`, `midnight`, `neon`, `nordic`, `ocean`, `pastel`, `retro`, `sharp`, `soft`, `sunset` — siehe [docs/themes.html](docs/themes.html).
279
-
280
- </td>
281
- </tr>
282
- </table>
283
-
284
- <!-- Maintainer: .github/social-preview.png (1280×640) unter Settings → Social preview -->
285
-
286
- ---
287
-
288
- ## Join in
289
-
290
- Wenn VelinStyle dir Zeit spart oder die Latte für inklusive UI hebt:
291
-
292
- 1. **Stern dalassen**, damit andere das Projekt finden.
293
- 2. **Issue öffnen** mit Feedback, Grenzfällen oder Ideen.
294
- 3. **Pull Request** nach [CONTRIBUTING.de.md](CONTRIBUTING.de.md).
295
-
296
- Maintainer: [RELEASING.md](RELEASING.md) · [SECURITY.md](SECURITY.md)
297
-
298
- ---
299
-
300
- ## Browser support
301
-
302
- 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.
303
-
304
- ---
305
-
306
- ## License
307
-
308
- [MIT](LICENSE) — Copyright © 2026 VelinStyle
309
-
310
- ---
311
-
312
- <div align="center">
313
-
314
- Mit Sorgfalt fürs Web von [SkyliteDesign](https://github.com/SkyliteDesign)
315
-
316
- </div>
1
+ <div align="center">
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>
9
+
10
+ [![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)]()
15
+ [![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/)
17
+
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
+
20
+ **[English](README.md)** · **Deutsch**
21
+
22
+ </div>
23
+
24
+ ---
25
+
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>
62
+
63
+ ---
64
+
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>
81
+
82
+ ---
83
+
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
+ ```
96
+
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
+ ```
102
+
103
+ ---
104
+
105
+ ## Quick start
106
+
107
+ ### <span>①</span> Installation
108
+
109
+ ```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>
118
+ ```
119
+
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>
129
+
130
+ ### <span>③</span> Erste Oberfläche markupen
131
+
132
+ ```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>
138
+ ```
139
+
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).
141
+
142
+ ---
143
+
144
+ ## Why VelinStyle?
145
+
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)** |
156
+
157
+ ---
158
+
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) |
170
+
171
+ | Tool | Seite |
172
+ | --- | --- |
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) |
175
+
176
+ ---
177
+
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>
201
+
202
+ <details>
203
+ <summary><strong>scan</strong> — Security, A11y &amp; CSS-Lint</summary>
204
+
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`).
209
+
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-*`.
211
+
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
233
+
234
+ Siehe [docs/guides/prompt-scaffolding.html](docs/guides/prompt-scaffolding.html).
235
+
236
+ </details>
237
+
238
+ <details>
239
+ <summary><strong>layout</strong> — Responsive-Audit (0.8.0)</summary>
240
+
241
+ - **`npx velinstyle layout audit [pfad]`**
242
+ - **`npx velinstyle layout suggest [pfad]`**
243
+ - **`npx velinstyle layout fix [pfad] --write`**
244
+
245
+ Siehe [docs/guides/responsive-layout.html](docs/guides/responsive-layout.html).
246
+
247
+ </details>
248
+
249
+ <details>
250
+ <summary><strong>blueprint</strong> — 22 HTML-Snippets</summary>
251
+
252
+ - **`npx velinstyle blueprint list`**
253
+ - **`npx velinstyle blueprint &lt;name&gt; -o datei.html`**
254
+
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`.
256
+
257
+ </details>
258
+
259
+ <details>
260
+ <summary><strong>tokens build</strong> — Design-Tokens → CSS</summary>
261
+
262
+ ```bash
263
+ npx velinstyle tokens build --input examples/tokens.sample.json -o tokens.css
264
+ ```
265
+
266
+ </details>
267
+
268
+ ---
269
+
270
+ ## Ecosystem
271
+
272
+ <table>
273
+ <tr>
274
+ <td width="50%" valign="top">
275
+
276
+ **Starter &amp; Pakete**
277
+
278
+ - [templates/vite-velinstyle](templates/vite-velinstyle) Vite + 3 Seiten + Theme-Toggle
279
+ - [@velinstyle/react](packages/react) — experimentelle dünne React-Wrapper
280
+
281
+ **Dokumentation**
282
+
283
+ - [Erste Schritte](docs/getting-started.html) · [Migration](docs/migration.html)
284
+ - [A11y-Patterns](docs/a11y-patterns/index.html) · [Security](docs/security.html)
285
+
286
+ </td>
287
+ <td width="50%" valign="top">
288
+
289
+ **Entwicklung (dieses Repo)**
290
+
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
+ ```
298
+
299
+ **Themes (13):** `brutalist`, `corporate`, `earth`, `forest`, `midnight`, `neon`, `nordic`, `ocean`, `pastel`, `retro`, `sharp`, `soft`, `sunset` — siehe [docs/themes.html](docs/themes.html).
300
+
301
+ </td>
302
+ </tr>
303
+ </table>
304
+
305
+ <!-- Maintainer: .github/social-preview.png (1280×640) unter Settings → Social preview -->
306
+
307
+ ---
308
+
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).
316
+
317
+ Maintainer: [RELEASING.md](RELEASING.md) · [SECURITY.md](SECURITY.md)
318
+
319
+ ---
320
+
321
+ ## Browser support
322
+
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.
324
+
325
+ ---
326
+
327
+ ## License
328
+
329
+ [MIT](LICENSE) — Copyright © 2026 VelinStyle
330
+
331
+ ---
332
+
333
+ <div align="center">
334
+
335
+ Mit Sorgfalt fürs Web von [SkyliteDesign](https://github.com/SkyliteDesign)
336
+
337
+ </div>