"""
BreakPilot Studio - Modulare Frontend-Architektur

Diese Datei ist der zentrale Einstiegspunkt fuer das Studio-Frontend.
Sie laedt alle Module und kombiniert sie zu einer vollstaendigen Seite.

Architektur:
- Jedes Modul (base, jitsi, letters, worksheets, correction) liefert CSS, HTML und JS
- Diese werden hier zusammengefuegt
- Das Ergebnis ist eine vollstaendige HTML-Seite

Module:
- BaseLayoutModule: TopBar, Sidebar, Footer, Theme Toggle, Login
- JitsiModule: Videokonferenzen (Elterngespraeche, Schulungen)
- LettersModule: Elternbriefe mit rechtssicherer Sprache
- WorksheetsModule: Lerneinheiten und Arbeitsblaetter
- CorrectionModule: Klausurkorrektur mit OCR und AI
"""

from .modules import (
    BaseLayoutModule,
    DashboardModule,
    JitsiModule,
    LettersModule,
    WorksheetsModule,
    CorrectionModule,
    MessengerModule,
    SchoolModule,
    ContentCreatorModule,
    ContentFeedModule,
    KlausurKorrekturModule,
    AbiturDocsAdminModule,
    RbacAdminModule,
    MailInboxModule,
    # SecurityModule entfernt - jetzt in /dev-admin verfuegbar
)


def get_studio_html() -> str:
    """
    Generiert die vollstaendige Studio-HTML-Seite aus allen Modulen.

    Returns:
        str: Vollstaendige HTML-Seite mit allen Modulen
    """
    # CSS von allen Modulen sammeln
    all_css = "\n".join([
        BaseLayoutModule.get_css(),
        DashboardModule.get_css(),
        JitsiModule.get_css(),
        LettersModule.get_css(),
        WorksheetsModule.get_css(),
        CorrectionModule.get_css(),
        MessengerModule.get_css(),
        SchoolModule.get_css(),
        ContentCreatorModule.get_css(),
        ContentFeedModule.get_css(),
        KlausurKorrekturModule.get_css(),
        AbiturDocsAdminModule.get_css(),
        RbacAdminModule.get_css(),
        MailInboxModule.get_css(),
        # SecurityModule entfernt - jetzt in /dev-admin
    ])

    # HTML von allen Modulen sammeln (Dashboard zuerst!)
    all_module_html = "\n".join([
        DashboardModule.get_html(),
        JitsiModule.get_html(),
        LettersModule.get_html(),
        WorksheetsModule.get_html(),
        CorrectionModule.get_html(),
        MessengerModule.get_html(),
        SchoolModule.get_html(),
        ContentCreatorModule.get_html(),
        ContentFeedModule.get_html(),
        KlausurKorrekturModule.get_html(),
        AbiturDocsAdminModule.get_html(),
        RbacAdminModule.get_html(),
        MailInboxModule.get_html(),
        # SecurityModule entfernt - jetzt in /dev-admin
    ])

    # JavaScript von allen Modulen sammeln
    all_js = "\n".join([
        BaseLayoutModule.get_js(),
        DashboardModule.get_js(),
        JitsiModule.get_js(),
        LettersModule.get_js(),
        WorksheetsModule.get_js(),
        CorrectionModule.get_js(),
        MessengerModule.get_js(),
        SchoolModule.get_js(),
        ContentCreatorModule.get_js(),
        ContentFeedModule.get_js(),
        KlausurKorrekturModule.get_js(),
        AbiturDocsAdminModule.get_js(),
        RbacAdminModule.get_js(),
        MailInboxModule.get_js(),
        # SecurityModule entfernt - jetzt in /dev-admin
    ])

    # Base HTML Struktur mit allen eingefuegten Modulen
    base_html = BaseLayoutModule.get_html()

    # Module HTML in den main-content Bereich einfuegen
    # Suche nach dem Platzhalter <!-- MODULE_PANELS --> und ersetze ihn
    if "<!-- MODULE_PANELS -->" in base_html:
        base_html = base_html.replace("<!-- MODULE_PANELS -->", all_module_html)
    else:
        # Fallback: Fuege Module vor dem schliessenden main-content ein
        base_html = base_html.replace(
            "</div><!-- /main-content -->",
            f"{all_module_html}\n      </div><!-- /main-content -->"
        )

    # Vollstaendige HTML-Seite zusammenbauen
    html = f"""<!DOCTYPE html>
<html lang="de">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>BreakPilot Studio</title>
  <link rel="icon" type="image/x-icon" href="/static/favicon.ico">
  <style>
{all_css}
  </style>
</head>
<body>
{base_html}
  <script>
{all_js}

// Note: Initialization is handled by BaseLayoutModule DOMContentLoaded
console.log('BreakPilot Studio - Modular Architecture ready');
  </script>
</body>
</html>"""

    return html


def get_studio_page():
    """
    Kompatibilitaets-Wrapper fuer bestehende API.

    Returns:
        str: Vollstaendige HTML-Seite
    """
    return get_studio_html()


# Fuer direkten Import
studio_html = get_studio_html
