@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.
- package/README.de.md +337 -316
- package/README.md +33 -12
- package/cli/blueprint.js +8 -0
- package/cli/blueprints/bottom-nav-mobile.html +17 -0
- package/cli/blueprints/cookie-consent.html +9 -0
- package/cli/blueprints/empty-state.html +5 -0
- package/cli/blueprints/filter-bar.html +15 -0
- package/cli/blueprints/notification-center.html +13 -0
- package/cli/blueprints/onboarding.html +23 -0
- package/cli/blueprints/pricing-table.html +20 -0
- package/cli/blueprints/settings-panel.html +20 -0
- package/cli/index.js +119 -3
- package/cli/layout-audit.js +325 -0
- package/cli/scaffold-recipes.json +70 -0
- package/cli/scaffold.js +155 -0
- package/cli/scanner.js +114 -0
- package/components/focus-manager.js +106 -80
- package/components/index.js +20 -1
- package/components/sanitize.js +29 -3
- package/components/shadow-a11y-styles.js +18 -0
- package/components/velin-accordion.js +112 -98
- package/components/velin-announcer.js +35 -0
- package/components/velin-bottom-nav.js +89 -0
- package/components/velin-carousel.js +40 -5
- package/components/velin-collapse.js +95 -65
- package/components/velin-combobox.js +149 -0
- package/components/velin-command.js +127 -0
- package/components/velin-counter.js +152 -0
- package/components/velin-drawer.js +6 -3
- package/components/velin-dropdown.js +33 -2
- package/components/velin-flip.js +220 -0
- package/components/velin-icon.js +43 -9
- package/components/velin-live-dot.js +85 -0
- package/components/velin-menubar.js +83 -0
- package/components/velin-modal.js +3 -1
- package/components/velin-popover.js +61 -21
- package/components/velin-rating.js +91 -0
- package/components/velin-reveal.js +80 -0
- package/components/velin-segmented-control.js +108 -0
- package/components/velin-sheet.js +107 -0
- package/components/velin-sparkline.js +207 -0
- package/components/velin-theme-toggle.js +277 -60
- package/components/velin-tooltip-wc.js +26 -2
- package/dist/velinstyle-components.iife.js +1849 -120
- package/dist/velinstyle-components.js +1871 -120
- package/dist/velinstyle-components.min.js +434 -91
- package/dist/velinstyle.css +640 -44
- package/dist/velinstyle.min.css +1 -1
- package/package.json +7 -3
- package/src/a11y/focus-not-obscured.css +21 -0
- package/src/a11y/forced-colors.css +86 -38
- package/src/a11y/high-contrast-aaa.css +37 -0
- package/src/a11y/preferences.css +106 -85
- package/src/a11y/security.css +119 -104
- package/src/a11y/target-size.css +32 -0
- package/src/base/reset.css +12 -1
- package/src/base/root.css +4 -4
- package/src/components/nav.css +152 -151
- package/src/tokens/motion.css +7 -0
- package/src/utilities/animation.css +97 -1
- package/src/utilities/chart-animation.css +101 -0
- package/src/utilities/filter-effects.css +103 -0
- package/src/utilities/safe-area.css +39 -0
- 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
|
-
[](LICENSE)
|
|
11
|
-
[](docs/a11y.html)
|
|
13
|
-
[]()
|
|
14
|
-
[]()
|
|
15
|
-
[" 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
|
+
[](LICENSE)
|
|
11
|
+
[](CHANGELOG.md)
|
|
12
|
+
[](docs/a11y.html)
|
|
13
|
+
[]()
|
|
14
|
+
[]()
|
|
15
|
+
[](https://www.npmjs.com/package/@birdapi/velinstyle)
|
|
16
|
+
[](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> & <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 & 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>
|
|
201
|
+
|
|
202
|
+
<details>
|
|
203
|
+
<summary><strong>scan</strong> — Security, A11y & 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 & 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
|
|
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 <name> -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 & 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>
|