bifroest/app/static/css-framework/.opencode/commands/create-component.md
2026-10-27 08:34:17 +01:00

65 lines
2.7 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Prompt: Neue Komponente erstellen
Verwende diesen Prompt wenn du eine neue Komponente zu CSS-Framework hinzufügst.
Arbeite die Schritte der Reihe nach ab und hake jeden Punkt ab, bevor du zum nächsten gehst.
---
## Vorbereitung
Bevor du anfängst:
- Prüfe ob semantisches HTML (`base.css`) die Aufgabe bereits löst — dann braucht es keine Komponente
- Prüfe ob eine bestehende Komponente aus `components.css` angepasst werden kann statt einer neuen
- Entscheide: CSS-only oder minimales JS nötig?
---
## Checkliste
### 1. CSS in `components.css`
- Neue Klassen am Ende der Datei, mit `/* === KOMPONENTENNAME === */`-Header
- Keine harten Farb-, Spacing-, Radius- oder Shadow-Werte — ausschließlich Tokens aus `tokens.css`
- Klammerbalance prüfen (jedes `{` hat ein `}`)
### 2. JavaScript (nur wenn nötig)
- Funktion ist framework-unabhängig und funktioniert ohne HTMX
- Funktion ist global aufrufbar und hat eine klare Signatur (`functionName(param)`)
- Nicht inline im HTML (CSP): als benannte Funktion in `framework.js` und zusätzlich als `data-action` im Objekt `frameworkActions`
- Signatur und `data-action` dokumentieren (siehe Schritt 6)
- Kein `style`-Attribut, kein `on…`-Attribut in Beispielen und Demo; die Demo muss unter strenger CSP ohne Verstöße laufen (siehe README, „Content Security Policy“)
### 3. Demo in `index.html`
- Neue `<section class="section" id="...">` direkt vor dem schließenden `</div><!-- /stack -->`
- Struktur: `section-header` (Label, h2, Beschreibung) + `demo-preview` mit allen Varianten
- Praxisnahe Demo — keine Dummy-Daten wie "Lorem ipsum"
- Sidebar-Link ergänzen: `<a href="#...">Name</a>` in der passenden Kategorie
### 4. `README.md`
- Komponente im thematisch passenden Abschnitt eintragen
- Minimales HTML-Beispiel + Variantenübersicht
- Bei JS: Funktion in der JS-API-Tabelle ergänzen
### 5. `.opencode/skills/SKILL.md`
- Schnellreferenz-Snippet in die passende Kategorie (max. 5–8 Zeilen)
- Varianten als Kommentar, nicht als vollständige Beispiele
### 6. `.opencode/skills/references/components.md`
- Vollständige Dokumentation mit allen Varianten und Modifiern
- Beispiel so vollständig, dass es direkt kopiert werden kann
### 7. `REPO_MAP.md`
- Neue Komponente in der Komponenten-Übersicht unter der passenden Kategorie eintragen
---
## Erlaubte Abkürzungen
- CSS-only Komponente ohne Varianten: Schritt 2 entfällt
- Kleiner neuer Modifier einer bestehenden Komponente: kein eigener README-Abschnitt, eine Zeile im bestehenden reicht; REPO_MAP.md-Eintrag entfällt
## Nicht erlaubt
- Hardcoded Farben, Abstände oder Radien (immer Token)
- JavaScript das HTMX voraussetzt
- Neue Komponente ohne Demo in `index.html`
- Neue Klassen ohne Eintrag in `SKILL.md` und `references/components.md`