"""
Ausführlicher Produktkatalog für die Jam-Website – was wir anbieten und was es macht.
"""

from __future__ import annotations

from jam.paypal_donate import PAYPAL_EMAIL

# id → ausführliche Shop-Beschreibung (unabhängig vom Einzelordner)
PRODUCT_CATALOG: dict[str, dict] = {
    "python_utility": {
        "title": "Python Mini-Tool",
        "category": "Digitale Tools",
        "icon": "🐍",
        "price_hint": "15–49 €",
        "summary": "Fertiges Python-Programm mit README – sofort startbar in Cursor oder Terminal.",
        "what_it_does": [
            "Kleine Automatisierung: z. B. Begrüßung, Datum, einfache Berechnungen oder Datei-Hilfen.",
            "Du bekommst `main.py` + README – Code ist kommentiert und erweiterbar.",
            "Läuft auf Windows/Mac/Linux mit Python 3.10+.",
            "Ideal als Lernbasis oder Mini-Auftrag für Freelancer-Kunden.",
        ],
        "delivery": "ZIP/Ordner nach PayPal – Download-Link oder Dateien per E-Mail.",
    },
    "sticker_pack": {
        "title": "Jam Sticker-Pack (Digital)",
        "category": "Digitale Downloads",
        "icon": "🎨",
        "price_hint": "7–19 €",
        "summary": "PNG-Sticker von Jam für Discord, WhatsApp, TikTok oder Stream-Overlays.",
        "what_it_does": [
            "Mehrere Grafiken im Jam-Look (lila Monster, frech & süß).",
            "Transparente PNGs – direkt in Apps hochladen.",
            "Kein Versand – sofort digital nach Zahlung.",
        ],
        "delivery": "Ordner mit PNG-Dateien + kurze Nutzungsanleitung.",
    },
    "landing_page": {
        "title": "Moderne One-Page Webseite",
        "category": "Webseiten",
        "icon": "🌐",
        "price_hint": "39–149 €",
        "summary": "Eine scrollbare Profi-Seite: Hero, Leistungen, Preise, Kontakt, PayPal-Button.",
        "what_it_does": [
            "Responsive HTML/CSS – sieht auf Handy und PC modern aus.",
            "Bereit für Portfolio, Link-in-Bio, kleines Business oder Verkauf.",
            "PayPal-Kauf-Button oder Kontakt-Link eingebaut.",
            "Du kannst Texte & Farben in Cursor anpassen.",
        ],
        "delivery": "Kompletter Ordner mit `index.html`, Assets, README zum Hochladen.",
    },
    "modern_website": {
        "title": "Moderne Webseite (Design 2026)",
        "category": "Webseiten",
        "icon": "✨",
        "price_hint": "49–199 €",
        "summary": "Aktuelles Design mit Gradient, Karten, Animationen und klarer Struktur.",
        "what_it_does": [
            "Hero-Bereich, Services, Trust-Elemente, Footer mit Rechtlichem.",
            "Dunkles Premium-Layout – wirkt wie Agentur-Qualität.",
            "SEO-Basics (Titel, Meta), schnelle Ladezeit.",
            "Optional Demo unter `/site/demo-index.html` auf der Jam-Seite.",
        ],
        "delivery": "HTML/CSS-Paket + Hinweise für Netlify, GitHub Pages oder eigenes Hosting.",
    },
    "business_website": {
        "title": "Business Webseite (mehrseitig)",
        "category": "Webseiten",
        "icon": "🏢",
        "price_hint": "79–249 €",
        "summary": "Mehrere Unterseiten: Start, Leistungen, Über uns, Kontakt – einheitliches Design.",
        "what_it_does": [
            "Navigation zwischen Seiten, gleicher Stil überall.",
            "Für Firmen, Dienstleister, Studios oder Vereine.",
            "Kontaktformular-Platzhalter, Karten-Layout, mobile Menüs.",
            "Erweiterbar um Blog oder Shop-Link.",
        ],
        "delivery": "Mehrere `.html`-Dateien + gemeinsames CSS + Upload-Anleitung.",
    },
    "portfolio_website": {
        "title": "Portfolio Webseite modern",
        "category": "Webseiten",
        "icon": "📁",
        "price_hint": "59–179 €",
        "summary": "Zeige Projekte, Skills und Links (Gaming, Code, Social) professionell.",
        "what_it_does": [
            "Projekt-Karten, Skill-Tags, Call-to-Action.",
            "Perfekt für Freelancer, Creator oder Bewerbungen.",
            "Links zu TikTok, Fiverr, Shop möglich.",
        ],
        "delivery": "Portfolio-Ordner mit Beispiel-Inhalten – du tauschst Texte aus.",
    },
    "email_pack": {
        "title": "E-Mail Vorlagen-Paket",
        "category": "Digitale Downloads",
        "icon": "📧",
        "price_hint": "12–35 €",
        "summary": "Fertige deutsche E-Mails für Kunden, Bewerbungen und Verkauf.",
        "what_it_does": [
            "Vorlagen: Erstkontakt, Follow-up, Angebot, Danke, Absage.",
            "Copy & paste in Gmail/Outlook – nur Namen anpassen.",
            "Spart Zeit bei Freelance und Shop-Anfragen.",
        ],
        "delivery": "TXT/Markdown-Dateien im Projektordner.",
    },
    "game_guide": {
        "title": "Gaming-Tipps Paket (PDF/Text)",
        "category": "Gaming",
        "icon": "🎮",
        "price_hint": "9–29 €",
        "summary": "Kompakte Strategie-Texte und Checklisten für besseres Ranked/Spiel.",
        "what_it_does": [
            "Tipps zu Rotation, Loot, Mindset – je nach Paket-Titel (z. B. Apex).",
            "Als Datei zum Lesen oder Ausdrucken.",
            "Kein Cheat – nur legale Spiel-Verbesserung.",
        ],
        "delivery": "Digitale Text/PDF-Dateien sofort nach Kauf.",
    },
    "apex_coach_sheet": {
        "title": "Apex Quick-Coach Cheat-Sheet",
        "category": "Gaming",
        "icon": "🎯",
        "price_hint": "5–15 €",
        "summary": "Einseitige Übersicht für Apex Legends: Rotation, Fights, Loot.",
        "what_it_does": [
            "Schnell nachschlagen beim Spielen (Zweitmonitor/Handy).",
            "Kein Aimbot – nur Taktik & Positionierung.",
        ],
        "delivery": "PDF oder Markdown im Download-Ordner.",
    },
    "minecraft_server": {
        "title": "Minecraft Server Leitung & Setup",
        "category": "Minecraft",
        "icon": "⛏️",
        "price_hint": "29–149 €",
        "summary": "Wir richten deinen Server ein und helfen beim Betrieb (Paper/Spigot).",
        "what_it_does": [
            "Installation, `server.properties`, Plugins, Rechte, Whitelist.",
            "Backup-Tipps, RAM/View-Distance, Crash-Hilfe.",
            "Remote-Anleitung oder Datei-Paket – Deutsch.",
        ],
        "delivery": "Konfig-Dateien, Plugin-Liste, Doku + Support nach Paket.",
    },
    "minecraft_java_plugin": {
        "title": "Minecraft Java Plugins (Paper/Spigot)",
        "category": "Minecraft",
        "icon": "☕",
        "price_hint": "35–199 €",
        "summary": "Individuelle Java-Plugins: Commands, Events, Minigames, Economy.",
        "what_it_does": [
            "Sauberer Code mit `plugin.yml`, konfigurierbar über config.yml.",
            "Build-Anleitung – JAR auf Server kopieren und neustarten.",
            "Bugfixes je nach Vereinbarung.",
        ],
        "delivery": "Quellcode oder JAR + Installations-README.",
    },
    "minecraft_scripts": {
        "title": "Minecraft Skripte & Datenpacks",
        "category": "Minecraft",
        "icon": "📜",
        "price_hint": "19–99 €",
        "summary": "Leichte Server-Logik ohne große Java-Mod.",
        "what_it_does": [
            "Skript-Dateien (.sk) für Skript-Plugin oder Datenpacks 1.20+.",
            "Shops, Ränge, Custom-Rezepte, kleine Events.",
            "Schneller anpassbar als vollwertige Java-Plugins.",
        ],
        "delivery": "Ordner `scripts/` und/oder `datapacks/` mit Erklärung.",
    },
    "minecraft_full": {
        "title": "Minecraft Komplett-Paket",
        "category": "Minecraft",
        "icon": "🎮",
        "price_hint": "79–299 €",
        "summary": "Server + Plugins + Skripte + Doku aus einer Hand.",
        "what_it_does": [
            "Alles aus den Einzelpaketen kombiniert.",
            "Für Communities die sofort starten wollen.",
            "Prioritäts-Support per Chat.",
        ],
        "delivery": "Großes Projekt-Archiv + Schritt-für-Schritt-Plan.",
    },
    "discord_bot_setup": {
        "title": "Discord Bot + Skript-Befehle",
        "category": "Discord",
        "icon": "💬",
        "price_hint": "29–129 €",
        "summary": "Bot einrichten und Befehle die Python-Skripte ausführen.",
        "what_it_does": [
            "Token, Intents, Einladungslink – Anleitung inklusive.",
            "Befehle: `!ping`, `!scripts`, `!run <skript>` – nur Whitelist-Skripte.",
            "Sicher: kein beliebiges System-Command.",
        ],
        "delivery": "Bot-Ordner, `scripts.json`, Beispiel-`.py` + README.",
    },
    "discord_custom_scripts": {
        "title": "Discord Custom-Skripte (Python)",
        "category": "Discord",
        "icon": "🤖",
        "price_hint": "35–149 €",
        "summary": "Neue Bot-Befehle programmieren – ein Befehl = ein Skript.",
        "what_it_does": [
            "Du sagst was der Bot tun soll (Status, Shop-Info, Moderation-Hilfe).",
            "Jam schreibt `.py`, trägt es in `scripts.json` ein.",
            "Admin-only optional.",
        ],
        "delivery": "Neue Skript-Dateien + Registrierung + Test-Anleitung.",
    },
    "micro_wallpaper": {
        "title": "Jam Mini-Wallpaper",
        "category": "Cent-Shop (günstig)",
        "icon": "🖼️",
        "price_hint": "0,49–1,99 €",
        "summary": "Exklusives Jam-Hintergrundbild für Desktop oder Handy.",
        "what_it_does": ["PNG in Jam-Farben – sofort als Hintergrund nutzbar."],
        "delivery": "Sofort-Download nach PayPal-Micro-Zahlung.",
    },
    "micro_tip": {
        "title": "Jam Danke-Tipp",
        "category": "Cent-Shop (günstig)",
        "icon": "☕",
        "price_hint": "0,99–2,99 €",
        "summary": "Kleine PayPal-Unterstützung für Jam & David.",
        "what_it_does": ["Freiwilliger Betrag – kein physisches Produkt."],
        "delivery": "Danke-Nachricht + optional Bonus-Link.",
    },
    "micro_clip": {
        "title": "Jam Sound-Mini-Clip",
        "category": "Cent-Shop (günstig)",
        "icon": "🔊",
        "price_hint": "0,49–1,49 €",
        "summary": "Kurzer Sound für Stream-Alert oder Discord.",
        "what_it_does": ["Kleine Audio-Datei – Alert, Jingle oder Meme-Sound."],
        "delivery": "Audio-Datei im Ordner.",
    },
    "micro_badge": {
        "title": "Jam Profil-Badge PNG",
        "category": "Cent-Shop (günstig)",
        "icon": "🏅",
        "price_hint": "0,99–3,99 €",
        "summary": "Avatar-Badge für Discord/Forum/Social.",
        "what_it_does": ["Transparentes PNG – Profilbild oder Overlay."],
        "delivery": "PNG sofort nach Kauf.",
    },
}


def catalog_entry_for_product(title: str, folder_name: str) -> dict | None:
    """Passenden Katalog-Eintrag zu Titel/Ordner finden."""
    t = title.lower()
    slug = folder_name.lower()
    for key, entry in PRODUCT_CATALOG.items():
        et = entry["title"].lower()
        if et in t or t in et:
            return {**entry, "id": key}
        if key.replace("_", "-") in slug or key.replace("_", "") in slug.replace("-", ""):
            return {**entry, "id": key}
    hints = (
        ("python", "python_utility"),
        ("sticker", "sticker_pack"),
        ("one-page", "landing_page"),
        ("moderne one", "landing_page"),
        ("moderne web", "modern_website"),
        ("business", "business_website"),
        ("portfolio", "portfolio_website"),
        ("e-mail", "email_pack"),
        ("email", "email_pack"),
        ("gaming-tipp", "game_guide"),
        ("apex", "apex_coach_sheet"),
        ("wallpaper", "micro_wallpaper"),
        ("danke", "micro_tip"),
        ("sound", "micro_clip"),
        ("badge", "micro_badge"),
        ("komplett", "minecraft_full"),
        ("java plugin", "minecraft_java_plugin"),
        ("skript", "minecraft_scripts"),
        ("datenpack", "minecraft_scripts"),
        ("server leitung", "minecraft_server"),
        ("minecraft server", "minecraft_server"),
        ("discord-custom", "discord_custom_scripts"),
        ("discord", "discord_bot_setup"),
    )
    for hint, kid in hints:
        if hint in t or hint.replace(" ", "-") in slug:
            return {**PRODUCT_CATALOG[kid], "id": kid}
    return None


def long_description_for_listing(title: str, folder_name: str, short: str) -> str:
    """Text für VERKAUF.md – ausführlich."""
    entry = catalog_entry_for_product(title, folder_name)
    if not entry:
        return short
    lines = [
        short,
        "",
        "### Was du genau bekommst",
        entry["summary"],
        "",
        "### Was es macht",
    ]
    for bullet in entry.get("what_it_does", []):
        lines.append(f"- {bullet}")
    lines.extend(["", "### Lieferung", entry.get("delivery", "Digital nach PayPal.")])
    return "\n".join(lines)


def products_page_html(
    *,
    owner: str,
    shared_css: str,
    esc,
    products: list[dict] | None = None,
) -> str:
    """Seite produkte.html – alle Angebote ausführlich erklärt."""
    sections: list[str] = []
    by_cat: dict[str, list[dict]] = {}
    for key, entry in PRODUCT_CATALOG.items():
        cat = entry.get("category", "Sonstiges")
        by_cat.setdefault(cat, []).append({**entry, "id": key})

    for cat in (
        "Webseiten",
        "Digitale Tools",
        "Digitale Downloads",
        "Minecraft",
        "Discord",
        "Gaming",
        "Cent-Shop (günstig)",
    ):
        items = by_cat.get(cat, [])
        if not items:
            continue
        blocks = []
        for e in items:
            bullets = "".join(f"<li>{esc(b)}</li>" for b in e.get("what_it_does", []))
            blocks.append(
                f"""<article class="detail-card" id="{esc(e['id'])}">
  <h3>{e.get('icon', '📦')} {esc(e['title'])}</h3>
  <p class="price-hint">Typischer Preis: {esc(e.get('price_hint', 'auf Anfrage'))}</p>
  <p class="lead">{esc(e.get('summary', ''))}</p>
  <h4>Was es genau macht</h4>
  <ul>{bullets}</ul>
  <p class="delivery"><strong>Lieferung:</strong> {esc(e.get('delivery', ''))}</p>
  <a class="btn buy" href="index.html">Im Shop kaufen →</a>
</article>"""
            )
        sections.append(
            f'<section class="cat-section"><h2>{esc(cat)}</h2>\n{"".join(blocks)}</section>'
        )

    live_block = ""
    if products:
        live_items = []
        for p in products[:24]:
            live_items.append(
                f'<li><a href="index.html">{esc(p["title"])}</a> – {p["price"]:.2f} € – '
                f'{esc((p.get("description") or "")[:120])}</li>'
            )
        live_block = f"""<section class="cat-section">
  <h2>🔴 Gerade im Shop (live)</h2>
  <p class="lead">Diese Pakete sind bereits als konkrete Angebote mit Jam-Preis gelistet:</p>
  <ul class="live-list">{''.join(live_items)}</ul>
</section>"""

    extra_css = """
.detail-card {
  background: #1e293b; border-radius: 14px; padding: 1.5rem; margin-bottom: 1.25rem;
  border: 1px solid #334155;
}
.detail-card h3 { color: #f8fafc; margin: 0 0 .5rem; }
.detail-card h4 { color: #a78bfa; font-size: .95rem; margin: 1rem 0 .5rem; }
.lead { color: #cbd5e1; line-height: 1.55; }
.price-hint { color: #4ade80; font-weight: 600; }
.delivery { font-size: .88rem; color: #94a3b8; margin-top: .75rem; }
.detail-card ul { margin: .5rem 0; padding-left: 1.25rem; color: #94a3b8; line-height: 1.5; }
.cat-section h2 {
  color: #c4b5fd; border-bottom: 2px solid #5b21b6;
  padding-bottom: .5rem; margin: 2rem 0 1rem;
}
.live-list { color: #94a3b8; line-height: 1.6; }
.live-list a { color: #fde68a; }
.intro-box {
  background: #312e81; border-radius: 14px; padding: 1.25rem 1.5rem;
  margin: 1rem auto 2rem; max-width: 900px; border: 1px solid #5b21b6;
}
"""

    return f"""<!DOCTYPE html>
<html lang="de"><head><meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="description" content="Jam Shop – genaue Produktbeschreibungen: Webseiten, Minecraft, Discord, Tools">
<title>Produkte & Leistungen – was Jam anbietet</title>
<style>{shared_css}{extra_css}</style>
<script src="jam-stats.js"></script>
</head><body>
<header class="jam-hero">
  <div class="jam-logo">📋</div>
  <span class="jam-badge">PRODUKTÜBERSICHT</span>
  <h1>Was Jam anbietet – genau erklärt</h1>
  <p class="sub">Hier steht <strong>klar und ehrlich</strong>, was jedes Produkt ist, was es macht und wie die Lieferung läuft.
  Shop für <strong>{esc(owner)}</strong> · PayPal <strong>{esc(PAYPAL_EMAIL)}</strong></p>
</header>
<nav class="nav">
  <a href="index.html">🛒 Shop</a>
  <a href="produkte.html">📋 Alle Produkte</a>
  <a href="webseiten.html">🌐 Webseiten</a>
  <a href="dienstleistungen.html">🛠️ Leistungen</a>
  <a href="dashboard.html">📊 Dashboard</a>
</nav>
<div class="intro-box">
  <p><strong>So funktioniert der Jam-Shop:</strong> Jedes Angebot ist ein <em>digitales Paket</em> oder eine <em>Dienstleistung</em>.
  Nach PayPal-Zahlung erhältst du Dateien (HTML, Code, PNG, PDF) oder Support per Anleitung/Chat.
  Jam baut die Projekte mit Cursor – David liefert Support und Anpassungen.</p>
</div>
{live_block}
{''.join(sections)}
<footer><a href="index.html">Zum Shop</a> · Jam · {esc(PAYPAL_EMAIL)}</footer>
</body></html>"""
