Files
guides/templates/Format/Baustein.md
2026-05-29 17:58:43 +02:00

6.1 KiB
Raw Blame History

BAUSTEIN-CARD-STIL (HTML+CSS, in Browser anzeigbar)

ZWECK
- Einzelner Baustein als kompakte Card-Darstellung
- Schnelles Nachschlagen einzelner Konzepte
- Card ist Teil einer größeren Baustein-Sammlung
- Nicht zum Lernen, sondern zum Wiedererkennen
- Pro Card genau 1 Baustein

FORMAT
- HTML mit eingebettetem CSS
- Im Browser anzeigbar (kein PDF-Output)
- Card auf hellgrauem Hintergrund zentriert
- Max-width 1000px, padding 28px 36px
- Border-radius 12px, dezenter Schatten
- Page-Hintergrund #f0f0f5

STRUKTUR — STRIKT NUR DIESE 4 ELEMENTE
1. Titel (h1, fett, ohne Label, ohne Logo)
2. Beschreibung (ein knapper Satz)
3. Zweck (kursiv, grau, ein knapper Satz)
4. Code-Beispiel (das eine relevanteste, mit Mini-Label oben)

KEIN Logo, KEIN "Baustein"-Label, KEIN Sprach-Tag, KEINE Sektion-Überschriften ("Beschreibung", "Zweck", "Relevante Beispiele"), KEINE Info-Blöcke, KEINE Warn/Tip/Note-Boxen, KEINE Meta-Informationen, KEINE Trennlinien zwischen Sektionen.

TYPOGRAFIE
- Body: -apple-system, "Segoe UI", sans-serif, 14px, line-height 1.5
- Titel h1: 28px, font-weight 800, letter-spacing -0.5px, line-height 1.1
- Beschreibung: 14px, line-height 1.55
- Zweck: 14px, italic, color #5a6470
- Code: "SF Mono", Consolas, monospace, 12px, line-height 1.5
- Code-Label: 10px, letter-spacing 1px

FARBEN
- Card-Hintergrund: #ffffff
- Page-Hintergrund: #f0f0f5
- Text: #1a1a1a
- Muted (Zweck): #5a6470
- Code-Hintergrund: #1e2a3a
- Code-Text: #e6e6e6
- Syntax-Highlighting:
  - Keywords (.k): #ff79c6 (pink)
  - Variablen (.v): #ffb86c (orange)
  - Strings (.s): #f1c40f (gelb)
  - Funktionen (.f): #50fa7b (grün)
  - Typen (.t): #8be9fd (cyan)
  - Kommentare (.c): #6b8aae italic
- Label-Farbe in Code: #8be9fd (cyan)

INHALTLICHE PRINZIPIEN
- Titel: GELÄUFIGSTER Kurzbegriff, max 1-2 Wörter, kein Präfix, keine Variante
  - Gut: "Header", "Variable", "Klasse", "for-Schleife"
  - Schlecht: "Überschriften h1h6", "Variablen-Deklaration mit Typ"
- Beschreibung: WAS macht es mechanisch? 1 Satz, max 5 Wörter, abstrakt/technisch
  - Gut: "Definiert eine Überschrift.", "Wiederholt einen Code-Block."
  - Schlecht: "Sechs Ebenen von der wichtigsten bis zur untergeordneten Überschrift."
- Zweck: WANN brauche ich das? 1 Satz, max 5 Wörter, situativ/Problem-Trigger
  - Gut: "Strukturiert die Seiteninhalte.", "Liste oder Bereich durchgehen."
  - Schlecht: "Gliedert Inhalt in Hierarchie für Leser, SEO und Screenreader-Navigation."
- WICHTIG: Beschreibung und Zweck dürfen sich NICHT inhaltlich überschneiden
  - Schlecht (tautologisch): Beschreibung "Wiederholt Code." / Zweck "Etwas mehrfach tun."
  - Gut (distinkt): Beschreibung "Wiederholt einen Code-Block." / Zweck "Liste oder Bereich durchgehen."
- Beide Sätze: jedes überflüssige Wort raus, keine Aufzählungen, keine Komma-Listen
- Genau EIN Code-Beispiel: das relevanteste / häufigste / typischste
- Beispiel zeigt den Standard-Use-Case, nicht Edge-Cases
- Label über Beispiel: max 2-3 Wörter, einfach, beschreibend
  - Gut: "Alle Header", "Zuweisung", "Grund-Regel"
  - Schlecht: "Alle Ebenen h1h6", "Variable mit Typ-Hint deklarieren"

LAYOUT-DETAILS
- Header und Body keine separaten Sektionen, alles in einer Card
- Titel zuerst, darunter direkt Beschreibung, darunter Zweck (mit margin-bottom)
- Margin-bottom Titel: 14px
- Margin-bottom Beschreibung: 6px (eng zum Zweck)
- Margin-bottom Zweck: 22px (Abstand zu Code)
- Code-Block padding: 14px 16px, border-radius 8px

CODE-BEISPIEL
- GENAU EIN Beispiel pro Card
- Das relevanteste, typischste, häufigste — nicht Edge-Cases
- Sehr kurz: ideal 3-6 Zeilen, max 8 Zeilen
- Mit kurzem Label oben (2-4 Wörter)
- Syntax-Highlighting durch span-Klassen (.k, .v, .s, etc.)

HTML-ENTITIES IM CODE (PFLICHT bei HTML/XML/JSX/Vue/JSX-ähnlichem Code)
- Wenn das Code-Beispiel SELBST HTML, XML, JSX oder ähnliche Tag-Syntax zeigt, MÜSSEN spitze Klammern als HTML-Entities geschrieben werden:
  - `<` → `&lt;`
  - `>` → `&gt;`
  - `&` → `&amp;`
- Grund: der Code wird via v-html im Browser gerendert. Rohe `<h1>` werden sonst als echtes DOM-Element interpretiert und verschwinden.
- Gut: `<span class="t">&lt;h1&gt;</span>Text<span class="t">&lt;/h1&gt;</span>`
- Schlecht: `<span class="t"><h1></span>Text<span class="t"></h1></span>`
- Schlecht: `<h1>Text</h1>` (komplett ohne Spans und ohne Entities)
- Diese Regel gilt NUR für die Inhalte des Code-Beispiels, NICHT für die `<span class="...">`-Wrapper selbst

KONKRETES BEISPIEL — Baustein "Header" (HTML)
```json
{
  "title": "Header",
  "description": "Definiert eine Überschrift.",
  "purpose": "Strukturiert die Seiteninhalte.",
  "examples": [
    {
      "label": "Alle Header",
      "code": "<span class=\"t\">&lt;h1&gt;</span>Hauptüberschrift<span class=\"t\">&lt;/h1&gt;</span>\n<span class=\"t\">&lt;h2&gt;</span>Kapitel<span class=\"t\">&lt;/h2&gt;</span>\n<span class=\"t\">&lt;h3&gt;</span>Unterabschnitt<span class=\"t\">&lt;/h3&gt;</span>"
    }
  ]
}

VERMEIDEN

  • Lange Erklärungstexte
  • Mehrere Sätze für Beschreibung oder Zweck
  • Performance-Tipps, Trade-Offs, Edge Cases
  • Verwandte Bausteine, Varianten, Anti-Patterns
  • Tabellen, Listen, Aufzählungen
  • Icons, Emojis, Symbole
  • Komplexe Code-Beispiele (über 8 Zeilen)
  • Mehrere Beispiele (Varianten, Alternativen)

THEMENSPEZIFISCHE ANPASSUNGEN

  • Bei anderen Sprachen: Syntax-Highlighting-Klassen anpassen
  • Titel-Größe und Spacing bleiben gleich
  • Card-Layout bleibt gleich
  • Inhalte (Beschreibung, Zweck, Beispiel) sprachspezifisch

GENERIERUNG MIT FEEDBACK-LOOP

  1. HTML schreiben
  2. In Browser anzeigen (Playwright-Screenshot oder direkt)
  3. Prüfen:
    • Wirklich nur 4 Elemente (Titel, Beschreibung, Zweck, Beispiel)?
    • Beschreibung und Zweck je max 5 Wörter?
    • Titel max 1-2 Wörter, geläufiger Kurzbegriff?
    • Label max 2-3 Wörter, simpel?
    • Code-Beispiel unter 8 Zeilen?
    • Label über Code-Block kurz und prägnant?
    • Card kompakt, kein leerer Raum?
    • Ist das gewählte Beispiel wirklich das typischste?
    • Bei HTML/XML/JSX-Code: alle < und > als &lt; und &gt; geschrieben?
  4. Wenn etwas zu viel: weglassen, nicht hinzufügen
  5. Bei jeder Iteration prüfen: lässt sich noch was weglassen?