diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml new file mode 100644 index 0000000..cc7e9fc --- /dev/null +++ b/.github/workflows/tests.yml @@ -0,0 +1,40 @@ +name: Tests + +# Beta-Stabilisierung: automatischer Gruen-Gate fuer die Test-Suite. +# Hintergrund: Es gab bisher kein CI. Dadurch blieb z.B. unbemerkt, dass die +# Suite ohne das [docs]-Extra (python-docx/pypdf) 19 Failures wirft und dass +# FastMCP 3.x die Prompt-Delegation brach. Dieser Workflow installiert die +# gleichen Extras wie der Endnutzer-Installer und laesst die volle Suite laufen. + +on: + push: + branches: [ main ] + pull_request: + workflow_dispatch: + +jobs: + pytest: + runs-on: ubuntu-latest + timeout-minutes: 30 + steps: + - uses: actions/checkout@v4 + + - name: Set up Python 3.13 + uses: actions/setup-python@v5 + with: + python-version: "3.13" + cache: pip + + - name: Install package with docs + dev + scraper extras + run: | + python -m pip install --upgrade pip + pip install -e ".[docs,dev,scraper]" + + - name: Install Playwright Chromium (Dashboard-Browser-Smokes) + run: python -m playwright install --with-deps chromium + + - name: Run full test suite + run: pytest -q + + - name: Release-Gate (Versionskonsistenz + First-Run-Smoke) + run: python release_check.py diff --git a/AGENTS.md b/AGENTS.md index 0408fad..76e2ee6 100644 --- a/AGENTS.md +++ b/AGENTS.md @@ -1,7 +1,7 @@ # AGENTS.md — PBP (Persönliches Bewerbungs-Portal) -> **Version:** 1.0.0 (Stand: 2026-03-26) -> **Detaillierte Doku:** `README.md`, `CHANGELOG.md` +> **Version:** 1.7.0-beta.100 (Stand: 2026-06-09) +> **Detaillierte Doku:** `README.md`, `CHANGELOG.md`, [Wiki Master-Plan](https://github.com/MadGapun/PBP/wiki/Master-Plan) ## Projektübersicht @@ -9,8 +9,8 @@ PBP ist ein MCP-Server für Claude Desktop, der bei der gesamten Jobsuche und Be unterstützt — vom Profil-Aufbau über die Stellensuche bis zum Bewerbungstracking. **Sprache:** Deutsch -**Tech-Stack:** Python 3.11+, FastMCP, SQLite (WAL Mode), FastAPI, React 19, Playwright -**Tests:** 362 Tests, 4 bewusst geskippt +**Tech-Stack:** Python 3.11+, FastMCP 3.x, SQLite (WAL Mode), FastAPI, React 19, Playwright +**Tests:** 1683 Tests (1 bewusst geskippt) ## Architektur @@ -20,7 +20,7 @@ Claude Desktop ▼ server.py (FastMCP, ~140 Zeilen) ◄── Composition Root, registriert Module │ - ├── tools/ ◄── 72 MCP-Tools in 8 Modulen + ├── tools/ ◄── 177 MCP-Tools in 11 Modulen │ ├── profil.py — Profilverwaltung, Multi-Profil, Erfassungsfortschritt │ ├── dokumente.py — Dokumenten-Analyse, Extraktion, Profil-Im/Export │ ├── jobs.py — Jobsuche, Stellenverwaltung, Fit-Analyse @@ -30,17 +30,17 @@ server.py (FastMCP, ~140 Zeilen) ◄── Composition Root, registriert Module │ ├── suche.py — Suchkriterien und Blacklist │ └── workflows.py — Geführte Workflows │ - ├── prompts.py ◄── 16 MCP-Prompts + ├── prompts.py ◄── 24 MCP-Prompts ├── resources.py ◄── 6 MCP-Resources │ ├── services/ ◄── Service-Layer (profile/search/workspace/email/daily_impulse) - ├── database.py ◄── Schema v18, WAL, CASCADE + ├── database.py ◄── Schema v46, WAL, CASCADE │ ├── dashboard.py ◄── FastAPI, React-SPA, REST-API │ ├── export.py ◄── Lebenslauf + Anschreiben (PDF/DOCX) │ - └── job_scraper/ ◄── 18 Quellen + └── job_scraper/ ◄── 34 Quellen (6 produktiv, Rest defekt/zurueckgestellt) ├── __init__.py — Dispatcher, Scoring, Deduplizierung └── *.py — Bundesagentur, StepStone, LinkedIn, XING, etc. ``` diff --git a/CHANGELOG.md b/CHANGELOG.md index 33b4698..313727e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -16,6 +16,135 @@ Sektionen: **Added** (neue Features), **Changed** (bestehendes geändert), > Emails → ``). Praeventiv-Werkzeug: > `scripts/scrub_pii.py`. Pflicht-Workflow in CLAUDE.md dokumentiert. +## [1.7.0-beta.101] - 2026-06-10 — Beta-Stabilisierung: 13 Bugfixes, Onboarding-Haertung, CI-Gate + +> ⚠️ **Pre-Release / Beta**. Stable bleibt **v1.6.10**. Neuer Frontend-Build, +> keine Schema-Aenderung (bleibt v46). Nach dem Update Claude Desktop einmal +> komplett beenden (Tray-Symbol → Beenden) und neu starten, Dashboard hart +> neu laden (Strg+F5). + +Der groesste Stabilisierungs-Release der Beta-Reihe — Ergebnis eines +Multi-Agent-Audits aus Sicht unerfahrener Nutzer plus der User-Test-Funde +vom 8.-10. Juni. Ziel: PBP laeuft fehlerfrei fuer Menschen ohne PBP- und +ohne Claude-Vorwissen. + +### Fixed + +- **#692 — Prompt-Karten `/tipps_und_tricks` + `/profil_sync` luden nicht** + („Inhalt konnte nicht geladen werden"). Ursache: FastMCP 3.x brach die + interne Prompt-Delegation. Texte sind jetzt versions-stabil entkoppelt. +- **#691 — `stellen_auto_aussortieren`:** schemakonformes Teil-Ergebnis statt + „outputSchema"-Validierungsfehler bei groesseren Laeufen (Budget jetzt 50s + Default, bis 90s via `max_dauer_sek`); der Platzhalter „KURZBEGRUENDUNG" + landet nie mehr als Begruendung. +- **#690 — `stellenbeschreibung_nachladen`** laedt jetzt bis 20.000 Zeichen + statt bei 2.000 abzuschneiden. +- **#686 — Dublettenschutz:** `analyse_plan_erstellen` erkennt Firmen auch im + Dokument-INHALT und schlaegt vor, zu welcher bestehenden Bewerbung ein + Dokument gehoert (`bewerbungs_zuordnungen`). +- **#685/#684 — `kontakt_verknuepfen`:** Ziel `meeting` funktioniert (Tabellen- + Fix) und das `CON-`-Praefix wird akzeptiert. +- **#668 — Jobsuche haengt nicht mehr bei 0%:** Ergebnisse werden in + Fertigstellungs-Reihenfolge eingesammelt + globales Phasen-Budget gegen + haengende Quellen. +- **#694 — Onboarding-Sackgassen:** gefuehrte Prompts verwiesen auf nicht + existierende Tools (`anschreiben_generieren`, Umlaut-Varianten wie + `skill_hinzufügen`) — mitten im Kennenlerngespraech. Alle Tool-Referenzen + korrigiert, `workflow_starten` versteht jetzt auch Umlaut-Schreibweisen und + meldet unbekannte Workflows ehrlich (statt „gestartet" mit Fehlertext). + ~340 Zeilen toter Alt-Prompt-Code entfernt. +- **#695 — Stille Falsch-Erfolge:** `stelle_bewerten` und + `bewerbung_status_aendern` melden bei unbekannter ID jetzt einen Fehler + statt Erfolg (vorher wurde sogar die Lern-Statistik verfaelscht); + `bewerbung_status_aendern` akzeptiert die `APP-`-ID-Form. **Wichtigster + Fix: `profil_erstellen` loescht beim Aktualisieren keine Bestandsfelder + mehr** (E-Mail/Telefon/Notizen blieben vorher auf der Strecke). + `jobsuche_starten` startet nicht mehr ohne Suchkriterien (verhinderte + Flut profil-fremder Treffer beim Erstnutzer). +- **#696 — Ehrliche Leere-Zustaende:** 0 hochgeladene Dokumente heisst jetzt + „Noch keine Dokumente hochgeladen" (statt „alle analysiert"); Kein-Profil- + Antworten sagen, was zu tun ist. `pbp_capabilities` kennt jetzt die + Features seit beta.78 (Aufgaben, Dokument-Lifecycle, `stelle_reaktivieren`, + Ablehnungsgruende-Editor, Minus-Keywords) und beschreibt + `kennlerngespraech_abschliessen` korrekt. +- **#697 — Installation fuer Neulinge:** macOS-Doku ist ehrlich (Python- + Voraussetzung + Gatekeeper-Hinweis), `INSTALLIEREN.command` installiert + jetzt Chromium (Browser-Quellen liefen auf macOS sonst in einen Fehler), + Tippfehler im Windows-Download-Fallback behoben, Release-Notes erklaeren + den Claude-Desktop-Neustart und den ersten Befehl. +- **#699 — Blacklist-Schutz:** `blacklist_verwalten` warnt, wenn die Firma + laufende Bewerbungen im Interview-Stadium hat (statt deren Stellen still zu + deaktivieren); `force=True` uebersteuert bewusst. +- **#700 — Termine vs. Erinnerungen:** der Auto-Reconciler legt keinen + Nachfass mehr an, wenn bereits ein zukuenftiger Termin existiert (vorher: + „Nachfassen" 4 Tage NACH dem Interview); das Dashboard trennt „Anstehende + Termine" (echte Meetings) von „Offene Erinnerungen" (Nachfass & Co., mit + Erledigt/Hinfaellig-Buttons). +- **#701 (Teilfix) — Datums-Labels:** „morgen"/„in X Tagen" rechnen jetzt in + Kalendertagen statt 24-Stunden-Schritten — ein Termin in 47 Stunden ist + „uebermorgen", nicht „morgen". (Vollausbau Timestamp-Standard folgt, A18.) + +### Changed + +- **CI-Test-Gate:** GitHub Actions laesst bei jedem Push/PR die volle Suite + (inkl. Installer-Extras + Chromium) und den Release-Check laufen — fing auf + dem ersten Lauf direkt einen Linux-only-Bug (Pfad-Reparatur, #503). +- **`fastmcp` auf `>=3.0,<4` gepinnt** — ein Major-Update kann nicht mehr + lautlos Interna brechen (Ursache von #692). +- README/Doku-Zahlen normiert (177 Tools, Schema v46, 34 Quellen) und der + faq-Prompt zeigt jetzt aktive Onboarding-Tipps. + +### Unter der Haube + +Tool-Count bleibt 177, Schema bleibt v46. 9 neue Regressionstest-Dateien, +Suite: **1710 passed, 1 skipped**. Master-Plan Teil K (K1-K18) dokumentiert +jeden Fix; Issues #694-#697 dokumentieren die Audit-Befunde. + +--- + +## 📦 Wie installiere oder aktualisiere ich PBP? + +**Unter Windows** brauchst du kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. **Unter macOS** muss vorher einmalig Python 3.11+ installiert sein (siehe unten), **unter Linux** Git und Python. Voraussetzung ueberall: [Claude Desktop](https://claude.ai/download) ist installiert (Linux: alternativ Claude Code CLI). + +### Windows (empfohlen, bequemster Weg) + +1. **ZIP herunterladen:** [PBP-1.7.0-beta.101.zip](https://github.com/MadGapun/PBP/archive/refs/tags/v1.7.0-beta.101.zip) +2. **Entpacken:** Rechtsklick auf die ZIP → *„Alle extrahieren..."* → Zielordner waehlen (z.B. `C:\PBP`). Darin liegt ein Unterordner `PBP-...` — dort hinein wechseln. +3. **Installieren:** Doppelklick auf **`INSTALLIEREN.bat`** +4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop. +5. Auf dem Desktop liegt jetzt eine Verknuepfung **„PBP Bewerbungs-Portal"** — Doppelklick startet das Dashboard. +6. **Claude Desktop oeffnen** (lief es schon: komplett beenden — Rechtsklick aufs Claude-Symbol unten rechts in der Taskleiste → *Beenden* — und neu starten) und tippen: **„Starte die Ersterfassung"** +7. Taucht PBP nicht auf: Claude Desktop nochmal komplett beenden und neu starten — siehe [FAQ](https://github.com/MadGapun/PBP/wiki/FAQ). + +### macOS + +1. **Einmalig vorab: Python 3.11+** — am einfachsten der [Installer von python.org](https://www.python.org/downloads/) (Doppelklick), alternativ `brew install python@3.12` +2. **ZIP herunterladen** (siehe Windows-Link) und **entpacken** (Doppelklick; im ZIP liegt ein Unterordner `PBP-...`) +3. **Doppelklick auf `INSTALLIEREN.command`** +4. Falls macOS warnt („kann nicht geoeffnet werden"): Rechtsklick auf die Datei → *„Oeffnen"* → nochmal *„Oeffnen"* + +### Linux + +```bash +git clone https://github.com/MadGapun/PBP.git +cd PBP +bash installer/install.sh +``` + +### Update von einer aelteren Version + +**Einfach drueberinstallieren** — deine Daten bleiben erhalten: +- Windows: `%LOCALAPPDATA%\BewerbungsAssistent\data\pbp.db` +- macOS/Linux: `~/.bewerbungs-assistent/pbp.db` + +Schema-Upgrade laeuft automatisch beim ersten Start, ein Backup wird vorher erstellt (Ordner `data\backups\`). + +### Detaillierte Anleitung & Troubleshooting + +📖 [Wiki → Installation](https://github.com/MadGapun/PBP/wiki/Installation) · [FAQ](https://github.com/MadGapun/PBP/wiki/FAQ) + +--- + ## [1.7.0-beta.100] - 2026-06-04 — Aufgaben mit „Erledigt bis"-Datum + Dashboard warnt bei Ueberfaelligkeit (#683) > ⚠️ **Pre-Release / Beta**. Stable bleibt **v1.6.10**. Neuer Frontend-Build, diff --git a/CLAUDE.md b/CLAUDE.md index cf9b4df..cac5e9e 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -336,22 +336,24 @@ Template (am Ende der Release-Notes einfuegen, Versionsnummer ersetzen): ## 📦 Wie installiere oder aktualisiere ich PBP? -Du brauchst **kein Git, kein Python, kein Vorwissen** — nur einen ZIP-Download und einen Doppelklick. Voraussetzung: [Claude Desktop](https://claude.ai/download) ist installiert. +**Unter Windows** brauchst du kein Git, kein Python, kein Vorwissen — nur einen ZIP-Download und einen Doppelklick. **Unter macOS** muss vorher einmalig Python 3.11+ installiert sein (siehe unten), **unter Linux** Git und Python. Voraussetzung ueberall: [Claude Desktop](https://claude.ai/download) ist installiert (Linux: alternativ Claude Code CLI). ### Windows (empfohlen, bequemster Weg) 1. **ZIP herunterladen:** [PBP-X.Y.Z.zip](https://github.com/MadGapun/PBP/archive/refs/tags/vX.Y.Z.zip) -2. **Entpacken:** Rechtsklick auf die ZIP → *„Alle extrahieren..."* → Zielordner waehlen (z.B. `C:\PBP`) -3. **Installieren:** Im entpackten Ordner Doppelklick auf **`INSTALLIEREN.bat`** +2. **Entpacken:** Rechtsklick auf die ZIP → *„Alle extrahieren..."* → Zielordner waehlen (z.B. `C:\PBP`). Darin liegt ein Unterordner `PBP-...` — dort hinein wechseln. +3. **Installieren:** Doppelklick auf **`INSTALLIEREN.bat`** 4. Das Setup laedt Python, alle Pakete und Chromium herunter (~3–5 Minuten) und konfiguriert Claude Desktop. 5. Auf dem Desktop liegt jetzt eine Verknuepfung **„PBP Bewerbungs-Portal"** — Doppelklick startet das Dashboard. +6. **Claude Desktop oeffnen** (lief es schon: komplett beenden — Rechtsklick aufs Claude-Symbol unten rechts in der Taskleiste → *Beenden* — und neu starten) und tippen: **„Starte die Ersterfassung"** +7. Taucht PBP nicht auf: Claude Desktop nochmal komplett beenden und neu starten — siehe [FAQ](https://github.com/MadGapun/PBP/wiki/FAQ). ### macOS -1. **ZIP herunterladen** (siehe Windows-Link) -2. **Entpacken** (Doppelklick reicht) +1. **Einmalig vorab: Python 3.11+** — am einfachsten der [Installer von python.org](https://www.python.org/downloads/) (Doppelklick), alternativ `brew install python@3.12` +2. **ZIP herunterladen** (siehe Windows-Link) und **entpacken** (Doppelklick; im ZIP liegt ein Unterordner `PBP-...`) 3. **Doppelklick auf `INSTALLIEREN.command`** -4. Falls macOS warnt: Rechtsklick auf die Datei → *„Oeffnen"* +4. Falls macOS warnt („kann nicht geoeffnet werden"): Rechtsklick auf die Datei → *„Oeffnen"* → nochmal *„Oeffnen"* ### Linux diff --git a/INSTALLIEREN.bat b/INSTALLIEREN.bat index b2eab72..5cfaa3f 100644 --- a/INSTALLIEREN.bat +++ b/INSTALLIEREN.bat @@ -202,7 +202,7 @@ goto :download_done :download_ps echo [DEBUG] Starte PowerShell Download... >> "%LOGFILE%" -powershell -ExecutionPolicy Bypass -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityPointManager]::SecurityProtocol -bor 3072; Invoke-WebRequest -Uri '%PY_URL%' -OutFile '%PY_ZIP_PATH%'" 2>> "%LOGFILE%" +powershell -ExecutionPolicy Bypass -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-WebRequest -Uri '%PY_URL%' -OutFile '%PY_ZIP_PATH%'" 2>> "%LOGFILE%" echo [DEBUG] PowerShell beendet, errorlevel=!errorlevel! >> "%LOGFILE%" :download_done @@ -263,7 +263,7 @@ echo [DEBUG] get-pip curl beendet, errorlevel=!errorlevel! >> "%LOGFILE%" goto :getpip_done :getpip_ps -powershell -ExecutionPolicy Bypass -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.SecurityPointManager]::SecurityProtocol -bor 3072; Invoke-WebRequest -Uri '%GETPIP_URL%' -OutFile '%GETPIP_PATH%'" 2>> "%LOGFILE%" +powershell -ExecutionPolicy Bypass -NoProfile -Command "[Net.ServicePointManager]::SecurityProtocol=[Net.ServicePointManager]::SecurityProtocol -bor 3072; Invoke-WebRequest -Uri '%GETPIP_URL%' -OutFile '%GETPIP_PATH%'" 2>> "%LOGFILE%" echo [DEBUG] get-pip PowerShell beendet, errorlevel=!errorlevel! >> "%LOGFILE%" :getpip_done diff --git a/INSTALLIEREN.command b/INSTALLIEREN.command index ade97e9..61b4fe3 100755 --- a/INSTALLIEREN.command +++ b/INSTALLIEREN.command @@ -101,6 +101,15 @@ $PYTHON -m pip install -e "$PROJECT_DIR[all]" -q 2>/dev/null && \ ok "Alle Module installiert" || \ warn "Optionale Module teilweise fehlgeschlagen (kein Problem)" +# #697: Playwright-Chromium wie in installer/install.sh — ohne diesen +# Schritt erscheint zur Laufzeit "Executable doesn't exist". +info "Installiere Chromium fuer Browser-Quellen..." +if $PYTHON -m playwright install chromium 2>/dev/null; then + ok "Chromium-Browser installiert" +else + warn "Chromium-Download fehlgeschlagen — Browser-Quellen eingeschraenkt, Rest funktioniert" +fi + # ── 4. Frontend bauen ────────────────────────────────────────── echo "" echo -e "${YELLOW}[4/6] Dashboard (React UI) bauen...${NC}" diff --git a/README.md b/README.md index eef82a7..a19c510 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ [![MCP](https://img.shields.io/badge/MCP-Claude_Desktop-orange.svg)](https://modelcontextprotocol.io/) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Stable](https://img.shields.io/badge/Stable-v1.6.10-brightgreen.svg)](https://github.com/MadGapun/PBP/releases/latest) -[![Tests](https://img.shields.io/badge/Tests-1668-brightgreen.svg)](#tests) +[![Tests](https://img.shields.io/badge/Tests-1711-brightgreen.svg)](#tests) [![Tools](https://img.shields.io/badge/MCP_Tools-177-blueviolet.svg)](https://github.com/MadGapun/PBP/wiki/MCP-Tools) [![Workflows](https://img.shields.io/badge/Workflows-18-ff69b4.svg)](https://github.com/MadGapun/PBP/wiki/Workflows) [![Plattformen](https://img.shields.io/badge/Plattformen-Windows_%7C_macOS_%7C_Linux-blue.svg)](#schnellstart) @@ -54,7 +54,7 @@ PBP ist kein Tool, das alles für dich erledigt und du drückst nur auf "Absende ### Und wenn du mehr willst -- **24 Jobportale konfiguriert, 17 davon aktiv liefernd** — Indeed, LinkedIn, Glassdoor und Google ueber JobSpy, Stepstone, Hays, Bundesagentur, Greenhouse, Arbeitnow und mehr; 7 weitere sind als „defekt" sichtbar markiert mit Chrome-Extension-Workaround +- **34 Jobportale konfiguriert** (~6 davon liefern aktuell zuverlaessig) — Indeed, LinkedIn, Glassdoor und Google ueber JobSpy, Stepstone, Hays, Bundesagentur, Greenhouse, Arbeitnow und mehr; defekte Quellen sind sichtbar markiert, teils mit Chrome-Extension-Workaround ([Details im Wiki](https://github.com/MadGapun/PBP/wiki/Jobportale)) - **Angepasste Lebensläufe** — Für jede Stelle ein CV, in dem Skills nach Relevanz sortiert sind - **E-Mail-Import** — Drag & Drop deine Firmen-Mails rein. Status und Termine werden automatisch erkannt - **Kalender** — Grafisches Grid mit Kategorien, Kollisionserkennung und .ics-Export @@ -78,7 +78,7 @@ Du musst keine Kommandos kennen. **Du redest einfach mit Claude, wie mit einem M ## Voraussetzungen -PBP läuft über [Claude Desktop](https://claude.ai/download) — die kostenlose App von Anthropic für Windows, Mac und Linux. +PBP läuft über [Claude Desktop](https://claude.ai/download) — die kostenlose App von Anthropic für Windows und macOS. Unter Linux funktioniert alternativ [Claude Code](https://claude.com/claude-code) (CLI) mit MCP-Support. | | **Free** | **Pro** ⭐ empfohlen | **Max** | |---|----------|---------------------|---------| @@ -117,19 +117,20 @@ PBP läuft über [Claude Desktop](https://claude.ai/download) — die kostenlose ### Windows (Empfohlen) -1. **Lade die [neueste Version](https://github.com/MadGapun/PBP/releases/latest) herunter** (ZIP-Datei) -2. **Entpacke** das ZIP in einen Ordner (z.B. `C:\PBP`) +1. **Lade die [neueste Version](https://github.com/MadGapun/PBP/releases/latest) herunter** — auf der Release-Seite unter *Assets* → **„Source code (zip)"** +2. **Entpacke** das ZIP in einen Ordner (z.B. `C:\PBP`). Darin liegt ein Unterordner `PBP-...` — dort hinein wechseln. 3. **Doppelklicke `INSTALLIEREN.bat`** — fertig! > **Voraussetzungen:** Windows 10/11 (64-Bit), Internetverbindung, [Claude Desktop](https://claude.ai/download) ### macOS -1. **Lade die [neueste Version](https://github.com/MadGapun/PBP/releases/latest) herunter** (ZIP-Datei) -2. **Entpacke** das ZIP -3. **Doppelklicke `INSTALLIEREN.command`** — fertig! +1. **Einmalig vorab: Python 3.11+ installieren** — am einfachsten mit dem [Installer von python.org](https://www.python.org/downloads/) (Doppelklick), alternativ `brew install python@3.12` +2. **Lade die [neueste Version](https://github.com/MadGapun/PBP/releases/latest) herunter** (*Assets* → „Source code (zip)") und **entpacke** sie (im ZIP liegt ein Unterordner `PBP-...`) +3. **Doppelklicke `INSTALLIEREN.command`** -> **Voraussetzungen:** macOS 12+, Python 3.11+ (`brew install python@3.12`), [Claude Desktop](https://claude.ai/download) +> Falls macOS warnt („kann nicht geoeffnet werden"): **Rechtsklick** auf `INSTALLIEREN.command` → *„Oeffnen"* → nochmal *„Oeffnen"*. +> **Voraussetzungen:** macOS 12+, Python 3.11+, [Claude Desktop](https://claude.ai/download) ### Linux @@ -196,12 +197,12 @@ Claude führt dich durch ein lockeres Gespräch (ca. 10-15 Minuten) und baut dei | | | |---|---| | **Plattformen** | Windows, macOS, Linux | -| **MCP-Tools** | 174 Tools in 11 Modulen | +| **MCP-Tools** | 177 Tools in 11 Modulen | | **Workflows** | 24 gefuehrte Workflows (Prompts) | | **Jobportale** | 24 Quellen (17 aktiv liefernd inkl. Indeed/LinkedIn/Glassdoor/Google ueber JobSpy + Greenhouse + Arbeitnow, 7 als defekt sichtbar markiert mit Chrome-Workaround) | | **Dashboard** | 8 Tabs: Dashboard, Profil, Stellen, Bewerbungen, Dokumente, Kalender, Statistiken, Einstellungen | -| **Datenbank** | SQLite (WAL), Schema v45 | -| **Tests** | 1622 bestanden | +| **Datenbank** | SQLite (WAL), Schema v46 | +| **Tests** | 1710 bestanden (1 uebersprungen) | ### Typed IDs (v1.7.0, #505) diff --git a/UEBERGABE_BETA101.md b/UEBERGABE_BETA101.md new file mode 100644 index 0000000..3fcd1b2 --- /dev/null +++ b/UEBERGABE_BETA101.md @@ -0,0 +1,46 @@ +# ÜBERGABE: beta.101-Fertigstellung (Session-Limit-Unterbrechung 10.06.2026) + +> **Für Claude Code beim Neustart:** Dies ist der vollständige Arbeitsstand. +> Auftrag des Users: Beta auf freigabefähigen Stand bringen (Stabilität für +> Neulinge, Nutzerführung, Wiki aktuell, Master-Plan-Disziplin). Nach +> Abschluss: Bestandsaufnahme. Diese Datei nach erfolgreichem Release löschen. + +## Wo wir stehen + +**Branch `beta-stabilisierung`** (auf GitHub, PR #693 offen, CI grün bis Commit d39064f): +- ✅ Committed + gepusht: 7 Bugfixes der ersten Welle (#692/#691/#690/#686/#685/#684/#668), CI-Gate, fastmcp-Pin, Doku-Feinschliff (Commits fd68daf, a81a4fd, 8e95a09, d39064f) +- ✅ Committed + gepusht (c8e117e): User-Test-Fixes #699 (Blacklist-Warnung+force), #700A (Reconciler-Termin-Guard), #700B (Dashboard: Termine vs. "Offene Erinnerungen" getrennt), #701-Teilfix (Kalendertage-Labels) + Frontend-Build + 6 Tests grün +- ✅ Master-Plan im Wiki gepusht: K1-K18 + Stubs C23(#687)/B24(#688)/F21(#689)/C24(#698)/A18(#701-Vollausbau). K11-K15 stehen auf ⬜ — nach Verifikation auf ✅ setzen! +- ✅ Issues #694-#697 angelegt (Audit-Befunde), #698-#701 vom User + +**UNCOMMITTED im Working Tree** (von Workflow-Agents, Stand unklar/halbfertig, NICHT blind committen): +- `tools/analyse.py` (C7: pbp_capabilities-Sync #696) +- `tools/bewerbungen.py` (C4: status_aendern-Guard #695) +- `tools/profil.py` (C5: profil_erstellen-Merge #695 — KRITISCHSTER Fix, Datenverlust) +- `tools/workflows.py` (C2: bewerbung_vorbereitung-Text, workflow_starten-Fehlerpfad #694) +- `INSTALLIEREN.bat` (C8: ServicePointManager-Typo), `INSTALLIEREN.command` (C8: Chromium-Schritt) +- `tests/test_v17_capabilities_696.py`, `tests/test_v17_profil_merge_695.py` (Agent-Tests) +- `RELEASE_AUDIT.md` (Arbeitsnotiz, nicht committen) +- VERMUTLICH FEHLEND (Agents evtl. nicht fertig geworden): prompts.py (C1 #694), jobs.py (C3 #695: stelle_bewerten-Guard + jobsuche-Kriterien-Guard), dokumente.py (C6 #696: Leere-DB-Antworten), README.md/CLAUDE.md (C8 #697) + +**Wiki-Klon `C:\Temp\claude\PBP.wiki`** — uncommitted Agent-Edits an 15 Seiten (W1-W4, K15). Falls Klon weg: neu clonen, Wiki-Aufträge stehen im Workflow-Script. + +**Workflow-Script mit ALLEN Agent-Aufträgen (C1-C8, W1-W4, präzise Edit-Anweisungen):** +`C:\Users\MAD\.claude\projects\D--MAD-Documents-Entwicklung-PBP\5d6d6820-5f0e-4606-9c37-95d14562795f\workflows\scripts\pbp-beta101-umsetzung-wf_c03ba695-59a.js` +(Letzter Run wf_c161d9d6-f7a — durch Session-Limit gestorben; Resume nur same-session, also: Diffs sichten, Fertiges behalten, Fehlendes gezielt nachziehen — per Workflow mit diesem Script oder direkt.) + +## Nächste Schritte (Reihenfolge) + +1. `git status` + `git diff` — Agent-Arbeit sichten: Ist der jeweilige Fix vollständig (vgl. Aufträge im Workflow-Script / Issues #694-#697)? Agent-Tests laufen lassen. +2. Fehlende Fixes nachziehen (mind.: prompts.py-Umlaut-Toolnamen + tote Blöcke #694; jobs.py-Guards #695; dokumente.py-Leere-DB #696; README/CLAUDE.md-macOS #697). +3. Volle Suite (`.venv/Scripts/python.exe -m pytest -q`) — muss komplett grün; dann `release_check.py`. +4. Wiki-Klon-Diffs reviewen, committen, pushen (K15). Master-Plan K10-K18 auf ✅ (was verifiziert ist), Test-Zahl aktualisieren. +5. beta.101-Release: Version-Bump (pyproject.toml + __init__.py + frontend/package.json auf 1.7.0-beta.101), CHANGELOG-Eintrag GANZ OBEN (Fixed: #692/#691/#690/#686/#685/#684/#668/#694-#697/#699/#700/#701-Teilfix; Changed: CI, fastmcp-Pin; + NEUER ehrlicher Installations-Block — macOS braucht Python!), Frontend ist schon gebaut (nur wenn weitere Frontend-Änderungen: neu bauen). Pre-Release-Issue-Check (`gh issue list`)! Commits auf Branch, PR #693 mergen, auf main taggen v1.7.0-beta.101, GH-Release MIT Installations-Block (NICHT --latest!). +6. Issues schließen mit Versionsbezug: #692 #691 #690 #686 #685 #684 #694 #695 #696 #697 #699 #700 (#668 offen lassen: Live-Verifikation durch User; #701 offen: nur Teilfix, Vollausbau A18; #687/#688/#689/#698 offen: geplant). +7. Selbsttest: REST-Smoke (tools/qa_rest_smoke.py-Muster) + Browser-Check gegen DB-KOPIE (NIE Original; BA_DATA_DIR!). Session-Checkliste #675. +8. Bestandsaufnahme an den User. + +## Wichtige Vorsichten +- **DB-Vorfall dokumentiert:** Echte DB wurde von einem Audit-Agent getroffen und zurückgebaut (Profil aus Backup 07.06. wiederhergestellt). Isolations-Env heißt `BA_DATA_DIR`; Tests müssen asserten, dass db_path im Temp liegt. NIE MCP-Tools des Live-Servers für Tests nutzen. +- Umlaut-Regel bei gh issue (ASCII schreiben), PII-Scrub vor jedem Issue, Tag-Lock (nie Tag vor finalem Stand), `unset GITHUB_TOKEN` vor gh. +- User-Wort nötig für: Stable/--latest (NICHT für beta.101 — die ist beauftragt: "bringe die Beta auf freigabefähigen Stand"). diff --git a/frontend/package.json b/frontend/package.json index ac91466..64540c6 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -1,7 +1,7 @@ { "name": "frontend", "private": true, - "version": "1.7.0-beta.100", + "version": "1.7.0-beta.101", "type": "module", "packageManager": "pnpm@10.28.2", "scripts": { diff --git a/frontend/src/pages/DashboardPage.jsx b/frontend/src/pages/DashboardPage.jsx index df8f4a3..66fedcb 100644 --- a/frontend/src/pages/DashboardPage.jsx +++ b/frontend/src/pages/DashboardPage.jsx @@ -1,6 +1,7 @@ import { ArrowRight, BarChart3, + BellRing, BookOpen, Briefcase, Calendar, @@ -712,10 +713,12 @@ export default function DashboardPage() { )} - {/* #421: Anstehende Termine direkt unter Im Fluss (nur wenn vorhanden, max 5) */} + {/* #421: Anstehende Termine direkt unter Im Fluss (nur wenn vorhanden, max 5) + #700: Follow-up-Erinnerungen (Nachfass etc.) sind keine Termine — + sie bekommen einen eigenen Block "Offene Erinnerungen" darunter. */} {(() => { const interviewPseudoMeetings = upcomingInterviewTodos - .filter((fu) => !data.meetings.some((m) => m.application_id === fu.application_id && m.meeting_date?.startsWith(fu.scheduled_date))) + .filter((fu) => !data.meetings.some((m) => !m.is_follow_up && m.application_id === fu.application_id && m.meeting_date?.startsWith(fu.scheduled_date))) .map((fu) => ({ id: `interview-${fu.id}`, title: "Interview vorbereiten", @@ -727,39 +730,28 @@ export default function DashboardPage() { application_id: fu.application_id, _isInterview: true, })); - const allMeetings = [...data.meetings, ...interviewPseudoMeetings] - .sort((a, b) => String(a.meeting_date || "").localeCompare(String(b.meeting_date || ""))); - if (allMeetings.length === 0) return null; - return ( - -
- -
-
- {allMeetings.slice(0, 5).map((meeting) => { + const byDate = (a, b) => String(a.meeting_date || "").localeCompare(String(b.meeting_date || "")); + const echteTermine = data.meetings.filter((m) => !m.is_follow_up).sort(byDate); + const erinnerungen = [...data.meetings.filter((m) => m.is_follow_up), ...interviewPseudoMeetings].sort(byDate); + if (echteTermine.length === 0 && erinnerungen.length === 0) return null; + const renderEntry = (meeting) => { const meetingDate = new Date(meeting.meeting_date); const now = new Date(); const diffMs = meetingDate - now; - const diffDays = Math.floor(diffMs / (1000 * 60 * 60 * 24)); + // #701: Kalendertage statt 24h-Schritte — ein Termin in 47h ist + // "uebermorgen", nicht "morgen"; sonst kippt das Label je nach Uhrzeit. + const startOfDay = (d) => new Date(d.getFullYear(), d.getMonth(), d.getDate()); + const dayDiff = Math.round((startOfDay(meetingDate) - startOfDay(now)) / 86400000); const diffHours = Math.floor(diffMs / (1000 * 60 * 60)); const countdown = - diffDays > 1 - ? `in ${diffDays} Tagen` - : diffDays === 1 + dayDiff > 1 + ? `in ${dayDiff} Tagen` + : dayDiff === 1 ? "morgen" - : diffHours > 0 - ? `in ${diffHours} Stunden` - : diffMs > 0 - ? "jetzt gleich" - : "vergangen"; - const isMeetingToday = diffDays === 0 && diffMs > 0; + : diffMs > 0 + ? (diffHours > 0 ? `heute, in ${diffHours} Std.` : "jetzt gleich") + : "vergangen"; + const isMeetingToday = dayDiff === 0 && diffMs > 0; const isPrivate = meeting.is_private; const platformIcon = meeting.platform === "teams" ? "Teams" : meeting.platform === "zoom" ? "Zoom" : @@ -808,7 +800,7 @@ export default function DashboardPage() {

)}

{countdown}

@@ -914,9 +906,45 @@ export default function DashboardPage() {
); - })} - -
+ }; + return ( + <> + {echteTermine.length > 0 && ( + +
+ +
+
+ {echteTermine.slice(0, 5).map(renderEntry)} +
+
+ )} + {erinnerungen.length > 0 && ( + +
+ +
+
+ {erinnerungen.slice(0, 5).map(renderEntry)} +
+
+ )} + ); })()} diff --git a/pyproject.toml b/pyproject.toml index 9cd3755..54c0d57 100755 --- a/pyproject.toml +++ b/pyproject.toml @@ -4,7 +4,7 @@ build-backend = "hatchling.build" [project] name = "bewerbungs-assistent" -version = "1.7.0b100" +version = "1.7.0b101" description = "PBP — KI-gestuetzter Bewerbungsassistent als MCP-Server fuer Claude Desktop. Stellensuche, Bewerbungs-Tracking, Lebenslauf-/Anschreiben-Generierung, Interview-Coaching." readme = "README.md" license = "MIT" @@ -38,7 +38,10 @@ classifiers = [ ] dependencies = [ - "fastmcp>=2.0", + # #692/K6: Major-Version begrenzen. FastMCP 3.x hat interne APIs umgebaut + # (_prompt_manager entfiel) — ein ungepinntes >=2.0 liess den Bump lautlos + # durch. <4 verhindert, dass der naechste Major-Sprung erneut Interna bricht. + "fastmcp>=3.0,<4", "uvicorn>=0.30", "fastapi>=0.115", "python-multipart>=0.0.9", diff --git a/src/bewerbungs_assistent/__init__.py b/src/bewerbungs_assistent/__init__.py index 01c99ca..4fc3854 100755 --- a/src/bewerbungs_assistent/__init__.py +++ b/src/bewerbungs_assistent/__init__.py @@ -1,6 +1,6 @@ """Bewerbungs-Assistent - KI-gestützter MCP Server für Claude Desktop.""" -__version__ = "1.7.0-beta.100" +__version__ = "1.7.0-beta.101" def main(): diff --git a/src/bewerbungs_assistent/dashboard.py b/src/bewerbungs_assistent/dashboard.py index 9232137..3112088 100755 --- a/src/bewerbungs_assistent/dashboard.py +++ b/src/bewerbungs_assistent/dashboard.py @@ -4352,7 +4352,10 @@ async def api_refetch_description(job_hash: str): try: with httpx.Client(follow_redirects=True, timeout=15, headers={"User-Agent": "PBP/1.7 (+github.com/MadGapun/PBP)"}) as client: - text = fetch_description_from_detail(url, client, timeout=15) + # #690: grosszuegiges max_chars beim expliziten Nachladen, damit + # lange Stellenbeschreibungen nicht bei 2000 Zeichen abgeschnitten + # gespeichert werden (Display kappt ohnehin erst bei 20000). + text = fetch_description_from_detail(url, client, timeout=15, max_chars=20000) except Exception as exc: _bump_refetch_failure(job_hash) return JSONResponse( @@ -7391,8 +7394,17 @@ def _run_auto_followup_reconciler(now_iso: str) -> dict: " SELECT 1 FROM follow_ups f " " WHERE f.application_id=a.id AND f.status='geplant' " " AND (f.follow_up_type='nachfass' OR f.follow_up_type IS NULL)" + ") " + # #700: kein Auto-Nachfass wenn bereits ein zukuenftiger Termin + # (Interview etc.) existiert — sonst erscheint die Nachfass- + # Erinnerung NACH dem Interview und verwirrt. + "AND NOT EXISTS (" + " SELECT 1 FROM application_meetings m " + " WHERE m.application_id=a.id " + " AND m.meeting_date > ? " + " AND m.status IN ('geplant', 'bestaetigt')" ")", - (pid,) + (pid, now.isoformat()) ).fetchall() created = [] diff --git a/src/bewerbungs_assistent/database.py b/src/bewerbungs_assistent/database.py index 069472e..70a9280 100755 --- a/src/bewerbungs_assistent/database.py +++ b/src/bewerbungs_assistent/database.py @@ -362,7 +362,12 @@ def _repair_document_paths(self) -> int: if Path(old_path).exists(): continue broken += 1 - basename = Path(old_path).name + # #503/CI: separator-agnostisch — ein in der DB gespeicherter + # Windows-Pfad (Backslashes) muss auch auf Linux korrekt zum + # Basenamen aufgeloest werden, sonst schlaegt die Pfad-Reparatur + # nach einem Backup-Umzug Windows->Linux fehl (Path(...).name auf + # POSIX behandelt '\' nicht als Trenner). + basename = old_path.replace("\\", "/").split("/")[-1] candidates = [ data_dir / "dokumente" / basename, data_dir / "dokumente" / (profile_id or "") / basename, @@ -3448,7 +3453,8 @@ def link_contact(self, contact_id: str, target_kind: str, target_id: str, "— evtl. orphaned FK (#616). Pruefe mit stellen_anzeigen()." ) elif target_kind == "meeting": - row = conn.execute("SELECT id FROM meetings WHERE id=? OR id LIKE ? LIMIT 1", + # #685: Tabelle heisst application_meetings, nicht meetings. + row = conn.execute("SELECT id FROM application_meetings WHERE id=? OR id LIKE ? LIMIT 1", (target_id, f"{target_id}%")).fetchone() if row: target_id = row["id"] diff --git a/src/bewerbungs_assistent/job_scraper/__init__.py b/src/bewerbungs_assistent/job_scraper/__init__.py index f5bc53f..b409576 100755 --- a/src/bewerbungs_assistent/job_scraper/__init__.py +++ b/src/bewerbungs_assistent/job_scraper/__init__.py @@ -21,7 +21,7 @@ import logging import re import time -from concurrent.futures import ThreadPoolExecutor, TimeoutError as FuturesTimeoutError +from concurrent.futures import ThreadPoolExecutor, as_completed, TimeoutError as FuturesTimeoutError from typing import Callable, Optional from urllib.parse import quote @@ -960,30 +960,52 @@ def _adapter_call(p): skipped_sources.append(quelle) source_status[quelle] = {"status": "error", "count": 0, "time_s": 0, "detail": str(e)} - for future in futures: - quelle, timeout = futures[future] - elapsed = round(time.time() - _start_times.get(quelle, time.time()), 1) - try: - jobs = future.result(timeout=timeout) - all_jobs.extend(jobs) - logger.info("%s: %d Stellen gefunden", quelle, len(jobs)) - elapsed = round(time.time() - _start_times.get(quelle, time.time()), 1) - source_status[quelle] = {"status": "ok", "count": len(jobs), "time_s": elapsed} - except FuturesTimeoutError: - logger.warning("%s: Timeout nach %ds — uebersprungen", quelle, timeout) - skipped_sources.append(quelle) - source_status[quelle] = {"status": "timeout", "count": 0, "time_s": timeout} - except Exception as e: - logger.error("Fehler bei %s: %s", quelle, e, exc_info=True) + # #668: Ergebnisse in FERTIGSTELLUNGS-Reihenfolge einsammeln (nicht in + # Submit-Reihenfolge). Vorher blockierte EIN langsamer, zuerst + # submitteter Scraper die Fortschrittsanzeige aller schnellen — die UI + # stand bis zu 90-180s bei 5% ("laeuft komplett in Timeout / 0%"). + # Zusaetzlich ein globales Phasen-Budget: nach max(Quellen-Timeout)+15s + # werden alle noch haengenden Scraper gemeinsam als timeout markiert, + # statt seriell auf jeden einzeln bis zu seinem Timeout zu warten. + phase_budget = max((t for _, t in futures.values()), default=_SOURCE_TIMEOUT) + 15 + pending = dict(futures) # future -> (quelle, timeout) + phase_start = time.time() + try: + for future in as_completed(futures, timeout=phase_budget): + quelle, timeout = pending.pop(future) + elapsed = round(time.time() - _start_times.get(quelle, phase_start), 1) + try: + jobs = future.result() + all_jobs.extend(jobs) + logger.info("%s: %d Stellen gefunden", quelle, len(jobs)) + source_status[quelle] = {"status": "ok", "count": len(jobs), "time_s": elapsed} + except Exception as e: + logger.error("Fehler bei %s: %s", quelle, e, exc_info=True) + skipped_sources.append(quelle) + source_status[quelle] = {"status": "error", "count": 0, "time_s": elapsed, "detail": str(e)[:100]} + completed += 1 + # #316: Fokus-Modus Progress mit Per-Source-Status + ok_count = sum(1 for s in source_status.values() if s["status"] == "ok") + db.update_background_job( + job_id, "running", + progress=int((completed / total) * 100), + message=f"{quelle}: {source_status[quelle]['status']} ({source_status[quelle]['count']} Stellen) | {ok_count}/{completed} Quellen OK" + ) + except FuturesTimeoutError: + # #668: globales Phasen-Budget erreicht — die restlichen Scraper + # haengen. Gemeinsam als timeout markieren statt den Gesamt-Job + # weiter zu blockieren. Die Threads laufen im Hintergrund aus + # (shutdown wait=False), ihre Ergebnisse werden verworfen. + for _f, (quelle, timeout) in pending.items(): + logger.warning("%s: Phasen-Budget %ds erreicht — uebersprungen", quelle, phase_budget) skipped_sources.append(quelle) - source_status[quelle] = {"status": "error", "count": 0, "time_s": elapsed, "detail": str(e)[:100]} - completed += 1 - # #316: Fokus-Modus Progress mit Per-Source-Status + source_status[quelle] = {"status": "timeout", "count": 0, "time_s": phase_budget} + completed += 1 ok_count = sum(1 for s in source_status.values() if s["status"] == "ok") db.update_background_job( job_id, "running", progress=int((completed / total) * 100), - message=f"{quelle}: {source_status[quelle]['status']} ({source_status[quelle]['count']} Stellen) | {ok_count}/{completed} Quellen OK" + message=f"{len(pending)} Quelle(n) im Timeout uebersprungen | {ok_count} OK" ) parallel_executor.shutdown(wait=False) @@ -1449,12 +1471,18 @@ def extract_jobposting_jsonld(html: str, max_chars: int = 2000) -> dict: return {} -def fetch_description_from_detail(url: str, client, *, timeout: float = 15) -> str: +def fetch_description_from_detail(url: str, client, *, timeout: float = 15, + max_chars: int = 2000) -> str: """Fetch job description from a detail page via httpx. Tries JSON-LD first (via extract_jobposting_jsonld), then common - HTML content selectors. Returns plain text description (max 2000 - chars) or empty string. + HTML content selectors. Returns plain text description (max + ``max_chars`` chars) or empty string. + + #690: Beim expliziten Nachladen einer einzelnen Stelle + (stellenbeschreibung_nachladen) wird ein grosszuegiges max_chars + uebergeben, damit lange Beschreibungen nicht bei 2000 Zeichen + abgeschnitten werden. Bulk-Scraper nutzen weiter den 2000er-Default. """ try: from bs4 import BeautifulSoup @@ -1463,7 +1491,7 @@ def fetch_description_from_detail(url: str, client, *, timeout: float = 15) -> s return "" # Strategy 1: JSON-LD structured data — uses zentralen Helper - jp = extract_jobposting_jsonld(resp.text) + jp = extract_jobposting_jsonld(resp.text, max_chars=max_chars) if jp.get("description"): return jp["description"] @@ -1480,7 +1508,7 @@ def fetch_description_from_detail(url: str, client, *, timeout: float = 15) -> s if el: text = el.get_text(separator=" ", strip=True) if len(text) > 100: - return text[:2000] + return text[:max_chars] return "" except Exception as e: diff --git a/src/bewerbungs_assistent/prompts.py b/src/bewerbungs_assistent/prompts.py index 39ce7de..df5d5b3 100644 --- a/src/bewerbungs_assistent/prompts.py +++ b/src/bewerbungs_assistent/prompts.py @@ -96,138 +96,6 @@ def _build_missing_area_lines(profile: dict | None) -> list[str]: def build_ersterfassung_prompt(db) -> str: """Build the guided Kennlerngespräch prompt from current backend state.""" return build_kennlerngespraech_prompt(db) - profile = db.get_profile() - known_lines = _build_known_profile_lines(profile) - document_lines = _build_document_lines(profile) - missing_lines = _build_missing_area_lines(profile) - - return f"""Du bist ein freundlicher, erfahrener Karriereberater. Dies ist KEIN Formular, -sondern ein klares, strukturiertes Kennlerngespräch auf Augenhoehe. Du bist per Du. - -ARBEITSKONTEXT AUS DEM AKTIVEN PROFIL -- Arbeite immer mit dem aktiven Profil. -- Verwende ausschließlich Daten, die dir aktuelle Tools und das aktive Profil liefern. -- Wenn bereits Daten oder Dokumente vorhanden sind, bestätige sie kurz und konzentriere dich auf Lücken, Widersprüche, Vertiefungen und Prioritäten. - -Was über die Person bereits bekannt ist: -{chr(10).join(f"- {line}" for line in known_lines)} - -Dokumente im aktiven Profil: -{chr(10).join(document_lines)} - -Offene oder zu bestätigende Bereiche: -{chr(10).join(f"- {line}" for line in missing_lines)} - -═══════════════════════════════════════════════════ -SCHRITT 0: SOFORT ANALYSIEREN UND DANN FUEHREN -═══════════════════════════════════════════════════ - -GRUNDREGEL: Arbeite IMMER mit dem aktiven Profil. Stelle es nicht in Frage. - -VERBOTEN: -- Daten aus früheren Gesprächen oder deinem Gedächtnis verwenden -- Bekannte Fakten blind erneut abfragen -- Vor dem ersten Tool-Aufruf Smalltalk machen - -ABLAUF - FUEHRE DIESE SCHRITTE DER REIHE NACH AUS: - -1. Rufe extraktion_starten() auf - immer zuerst. -2. Wenn Dokumente gefunden werden: - - Analysiere den Inhalt gruendlich. - - Extrahiere Positionen, Projekte im STAR-Format, Ausbildung, Skills, - persönliche Daten, Präferenzen, Zusammenfassung und passende Jobtitel. - - Rufe extraktion_ergebnis_speichern() auf. - - Rufe extraktion_anwenden() auf. - - Sage dem User anschließend kurz und konkret, was du bereits übernommen hast. -3. Wenn keine Dokumente gefunden werden: - - Rufe erfassung_fortschritt_lesen() auf. - - Arbeite mit dem vorhandenen Profilstand weiter. -4. Speichere nach jedem klar abgeschlossenen Bereich den Fortschritt mit - erfassung_fortschritt_speichern(). - -═══════════════════════════════════════════════════ -PHASE 1: LOCKERER EINSTIEG -═══════════════════════════════════════════════════ - -Steige knapp und menschlich ein, zum Beispiel so: - -"Ich habe schon erste Informationen aus deinem Profil und deinen Unterlagen vor mir. -Ich sage dir gleich kurz, was ich schon weiss, und dann fuellen wir nur noch die offenen -oder unklaren Punkte gemeinsam." - -Danach maximal 1-2 offene Fragen, kein Fragenkatalog. - -═══════════════════════════════════════════════════ -PHASE 2: STRUKTURIERTE ERFASSUNG AUS DEM GESPRAECH HERAUS -═══════════════════════════════════════════════════ - -Arbeite organisch durch diese Bereiche: - -2a) PERSÖNLICHE DATEN -- Frage nur nach dem, was noch fehlt oder bestätigt werden muss. -- Speichere mit profil_erstellen(). - -2b) BERUFSERFAHRUNG -- Für jede Station: Firma, Rolle, Zeitraum, Aufgaben, Erfolge, Technologien. -- Hole für wichtige Arbeiten mindestens ein konkretes Projekt im STAR-Format heraus. -- Speichere mit position_hinzufuegen() und projekt_hinzufuegen(). - -2c) AUSBILDUNG -- Studium, Ausbildung, Weiterbildungen, Zertifikate. -- Speichere mit ausbildung_hinzufuegen(). - -2d) SKILLS UND KOMPETENZEN -- Leite Skills aktiv aus Erfahrung und Dokumenten ab. -- Frage bei alten Skills nach aktueller Relevanz. -- Speichere mit skill_hinzufügen(name, category, level, years_experience, last_used_year). - -2e) MOTIVATION UND ARBEITSRAHMEN -- Was motiviert die Person? -- Was ist wichtig, was soll vermieden werden? -- Speichere als informal_notes oder passende Präferenzen in profil_erstellen(). - -═══════════════════════════════════════════════════ -PHASE 3: PRÄFERENZEN UND ZIELBILD -═══════════════════════════════════════════════════ - -Klaere gezielt: -- Zielrollen und passende Jobtitel -- Festanstellung, Freelance oder beides -- Region, Remote, Reisebereitschaft, Umzug -- Gehalts- oder Tagessatzrahmen - -Aktualisiere profil_erstellen() und speichere passende Titel mit jobtitel_vorschlagen(). - -═══════════════════════════════════════════════════ -PHASE 4: REVIEW & KORREKTUR -═══════════════════════════════════════════════════ - -→ Rufe profil_zusammenfassung() auf -→ Zeige dem User die komplette Zusammenfassung -→ Frage exakt und direkt: - "So, das ist alles was ich aufgeschrieben habe. Stimmt das so? - Möchtest du irgendwas ändern, ergänzen oder löschen?" -→ Bei Korrekturen: Nutze profil_bearbeiten() für gezielte Änderungen -→ Iteriere, bis der User ausdrücklich sagt, dass alles passt -→ Sobald der User zufrieden ist, fuehre exakt diese drei Schritte aus: - 1. Rufe erfassung_fortschritt_speichern(bereich='review_abgeschlossen', abgeschlossen=True, notizen='Kennlerngespräch abgeschlossen') auf - 2. Rufe kennlerngespraech_abschliessen() auf - 3. Sage knapp und eindeutig: - "Perfekt. Das Kennlerngespräch ist abgeschlossen. Als nächstes wählen wir deine Jobbörsen aus und richten deine Quellen für die Jobsuche ein. Im Dashboard kannst du jetzt direkt mit dem Schritt 'Quellen' weitermachen." - -═══════════════════════════════════════════════════ -REGELN -═══════════════════════════════════════════════════ - -1. Maximal 2 Fragen pro Nachricht. -2. Deutsch und per Du. -3. Speichere Informationen sofort mit den passenden Tools. -4. Frage bekannte Fakten nicht stumpf neu ab. -5. Konzentriere dich auf Relevanz für Profil, Jobsuche und Bewerbungen. -6. Jede Lebensphase ist wertvoll - nie abwerten. -7. Wenn der User pausieren will, sage: - "Kein Problem. Ich habe deinen Fortschritt gespeichert. Wir können das Kennlerngespräch später genau an dieser Stelle fortsetzen." -8. Rufe kennlerngespraech_abschliessen() nur dann auf, wenn der User nach dem Review ausdrücklich zufrieden ist.""" def build_kennlerngespraech_prompt(db) -> str: @@ -287,6 +155,12 @@ def build_kennlerngespraech_prompt(db) -> str: - Wenn bereits echte Daten vorhanden sind, arbeite an Lücken und Vertiefungen weiter. - Wenn das Profil noch leer ist, starte normal mit Phase 1. +4. WENN extraktion_starten() "Kein aktives Profil" meldet: + - Das ist der NORMALFALL bei einer frischen Installation — KEIN Fehler. + - Entschuldige dich nicht und erklaere nichts Technisches. + - Starte einfach normal mit Phase 1 (lockerer Einstieg); das Profil + entsteht im Gespraech mit profil_erstellen(). + WICHTIG: - Frage den User NIEMALS, ob du Dokumente analysieren sollst. - Frage den User NIEMALS, ob Dokumente vorhanden sind. @@ -356,7 +230,7 @@ def build_kennlerngespraech_prompt(db) -> str: - Leite Skills aktiv aus Gespräch und Dokumenten ab. - Frage bei alten Skills nach aktueller Relevanz. - Setze last_used_year passend zur letzten Nutzung. - - Speichere mit skill_hinzufügen(name, category, level, years_experience, last_used_year). + - Speichere mit skill_hinzufuegen(name, category, level, years_experience, last_used_year). 2e) MOTIVATION UND ARBEITSRAHMEN - Was motiviert die Person? @@ -422,220 +296,122 @@ def build_kennlerngespraech_prompt(db) -> str: 11. Rufe kennlerngespraech_abschliessen() nur dann auf, wenn der User nach dem Review ausdrücklich zufrieden ist.""" -def register_prompts(mcp, db, logger): - """Register all 12 MCP prompts on the given server instance.""" - - @mcp.prompt() - def ersterfassung() -> str: - """Zwangloses Interview zur Profilerfassung — wie ein Kaffeegespräch. - Kann jederzeit unterbrochen und später fortgesetzt werden.""" - return build_kennlerngespraech_prompt(db) - return """Du bist ein freundlicher, erfahrener Karriereberater. Dies ist KEIN steifes Formular — -es ist ein zwangloses Gespräch, wie bei einem Kaffee unter Freunden. Du bist per Du. - -═══════════════════════════════════════════════════ -SCHRITT 0: STATUS PRUEFEN UND SOFORT LOSLEGEN -═══════════════════════════════════════════════════ - -GRUNDREGEL: Arbeite IMMER mit dem aktiven Profil. STELLE ES NICHT IN FRAGE. -Der User hat das Profil ausgewählt und erwartet dass du damit arbeitest. -Frage NICHT "ist das dein Profil?" oder "gehört das dir?". Einfach machen. - -VERBOTEN: Profil-IDs, Namen oder Daten aus deinem Gedächtnis oder früheren -Gesprächen verwenden. Du weisst NICHTS über den User ausser was die Tools -dir JETZT zurückgeben. Jede Session startet bei Null. - -ABLAUF — FUEHRE DIESE SCHRITTE DER REIHE NACH AUS, OHNE FRAGEN: - -1. Rufe extraktion_starten() auf — IMMER, OHNE AUSNAHME, als ALLERERSTES! - Das findet Dokumente mit Status nicht_extrahiert ODER basis_analysiert. - "basis_analysiert" = nur Regex-Basics, die KI-Tiefenanalyse fehlt noch! - -2. WENN extraktion_starten() Dokumente zurückgibt: - → Analysiere den Text SOFORT und GRUENDLICH. Nicht fragen, nicht abwarten! - → Extrahiere ALLES: Positionen, Projekte (STAR), Ausbildung, Skills, - persönliche Daten, Präferenzen, Zusammenfassung. - → Rufe extraktion_ergebnis_speichern() auf mit den Ergebnissen - → Rufe extraktion_anwenden() auf - → DANN zeige dem User was du gefunden hast - → DANN prüfe was noch fehlt und mache mit fehlenden Bereichen weiter - -3. WENN extraktion_starten() KEINE Dokumente findet: - → Rufe erst JETZT erfassung_fortschritt_lesen() auf - → Wenn echte Daten vorhanden (Positionen > 0): Weitermachen wo es fehlt - → Wenn leeres Profil: Starte normal mit Phase 1 +def build_profil_sync_prompt() -> str: + """Leitfaden zum Abgleich des PBP-Profils mit LinkedIn, XING und Freelance.de (#117). -WICHTIG: Frage den User NIEMALS "soll ich das Dokument analysieren?" oder -"hast du etwas hochgeladen?". Rufe EINFACH extraktion_starten() auf und -schau was zurückkommt. Wenn Dokumente da sind → analysieren. Fertig. - -NACH JEDER PHASE: Speichere den Fortschritt mit erfassung_fortschritt_speichern()! - -WICHTIG: Dieses Tool ist für ALLE Lebenssituationen gedacht: -- Studenten und Berufseinsteiger (wenig Erfahrung ist völlig ok!) -- Langjährige Mitarbeiter (20 Jahre in einer Firma = wertvolle Tiefe!) -- Häufige Wechsler (Vielfalt = breite Kompetenz!) -- Freelancer und Selbständige (Projektvielfalt = Flexibilität!) -- Wiedereinsteigerinnen nach Familienpause (Lebenserfahrung zählt!) -- Menschen mit ungewöhnlichen Karrierewegen (jeder Weg ist einzigartig!) -- Alle, die kein Geld für teures Karriere-Coaching haben - -WERTE diese Informationen NIEMALS. Jede berufliche Station und jede Lebensphase ist wertvoll. -Hilf dabei, das Beste aus jedem Werdegang herauszuholen — ermutigend und wertschätzend. + Statischer Prompt-Text auf Modul-Ebene, damit ihn sowohl die MCP-Prompt- + Registrierung (``register_prompts``) als auch die Frontend-Prompt-Registry + (``tools/workflows.py``) ohne Zugriff auf FastMCP-Interna nutzen koennen. + """ + return """Du bist ein Profil-Sync-Berater. Hilf dem Bewerber, sein PBP-Profil mit +externen Plattformen (LinkedIn, XING, Freelance.de) abzugleichen. -═══════════════════════════════════════════════════ -PHASE 1: LOCKERER EINSTIEG -═══════════════════════════════════════════════════ +VORBEREITUNG (still, nicht anzeigen): +1. Rufe profil_zusammenfassung() auf — lerne das aktuelle Profil kennen +2. Pruefe die Vollstaendigkeit mit erfassung_fortschritt_lesen() -Beginne so (oder ähnlich natürlich): +ABLAUF: -"Hey, schön dass du hier bist! Ich bin dein persönlicher Bewerbungs-Assistent. -Keine Sorge — das hier ist kein steifes Formular. Wir unterhalten uns einfach -ganz locker und ich helfe dir, dein Profil zusammenzustellen. +1. ANALYSE — Zeige dem User eine Übersicht: + - "Dein PBP-Profil hat folgende Daten: [Name, X Positionen, Y Skills, Z Projekte]" + - "Folgende Felder solltest du auf den Plattformen abgleichen:" -Am Ende zeige ich dir alles nochmal und du kannst in Ruhe korrigieren. +2. LINKEDIN-SYNC: + - Headline: Erstelle einen Vorschlag basierend auf Profil-Summary und Top-Skills + - About/Zusammenfassung: Formuliere aus dem PBP-Summary eine LinkedIn-Version + - Berufserfahrung: Liste die Positionen mit Start/Ende + - Skills: Schlage die Top-10 Skills vor, sortiert nach Relevanz + - Projekte: Empfehle welche Projekte als "Featured" angezeigt werden sollten -Also, erzähl mal: Wie heißt du und was machst du so beruflich? -Oder falls du gerade auf der Suche bist — was hast du zuletzt gemacht?" +3. XING-SYNC: + - Profilslogan: Kurz und prägnant aus der Summary + - Berufserfahrung: Gleich wie LinkedIn, aber XING-Format (Tätigkeiten als Freitext) + - "Ich biete" / "Ich suche": Generiere aus Skills und Präferenzen + - Portfolio: Empfehle relevante Projekte -→ Nur 1-2 offene Fragen, NICHT nach E-Mail/Telefon/PLZ im ersten Schritt! -→ Lass den User erzählen, unterbrich nicht mit Formularfragen. -→ Reagiere auf das, was der User erzählt — stelle Anschlussfragen. +4. FREELANCE.DE-SYNC (falls Freelancer): + - Verfügbarkeit & Stundensatz: Aus Präferenzen ableiten + - Skill-Profil: Top-Skills mit Erfahrungsjahren + - Projektreferenzen: Formatiere Projekte nach Freelance.de-Schema + (Kunde [ggf. vertraulich], Rolle, Zeitraum, Technologien) + - Einsatzort-Radius: Aus Suchkriterien ableiten -═══════════════════════════════════════════════════ -PHASE 2: STRUKTURIERTE ERFASSUNG (aus dem Gespräch heraus) -═══════════════════════════════════════════════════ +5. KONSISTENZ-CHECK: + - Prüfe ob alle Plattformen die gleichen Jobtitel verwenden + - Warnung bei Zeitlücken oder Widersprüchen + - "Tipp: Nutze auf allen Plattformen die gleiche Berufsbezeichnung." -Sobald du genug weisst, fange an die Daten mit den Tools zu speichern. -Arbeite dich organisch durch diese Bereiche: +REGELN: +- Sprich Deutsch und per Du +- Gib konkrete, copy-paste-fertige Textvorschläge +- Beachte is_confidential bei Projekten — vertrauliche Kundennamen nicht für externe Plattformen vorschlagen +- Bei Freelancern: Betone Freelance.de, bei Festangestellten: Betone LinkedIn/XING +- Am Ende: "Soll ich die Texte als Dokument exportieren?" +""" -2a) PERSÖNLICHE DATEN - → Irgendwann beiläufig: "Für den Lebenslauf brauch ich noch ein paar Basics — - E-Mail, Telefon, wo wohnst du ungefaehr?" - → Speichere mit profil_erstellen() - -2b) BERUFSERFAHRUNG — Für JEDE Station: - → Firma, Position, ungefaehrer Zeitraum - → "Was hast du da so gemacht? Was war deine Rolle?" - → "Gab es ein Projekt oder eine Aufgabe wo du richtig stolz drauf bist?" - (STAR: Situation, Aufgabe, was hast du gemacht, was kam dabei raus) - → "Hast du dabei bestimmte Tools oder Technologien benutzt?" - → Am Ende: "Gab es noch was bei [Firma]? Oder vorher eine andere Station?" - → Speichere mit position_hinzufuegen() und projekt_hinzufuegen() - - SPEZIELLE SITUATIONEN — erkenne und reagiere angemessen: - • Student/Berufseinsteiger: - "Praktika, Werkstudentenjobs, Uni-Projekte — das zählt alles! - Auch ehrenamtliche Arbeit oder Vereinstätigkeit." - • Familienphase/Elternzeit: - "Das ist völlig normal und wird von guten Arbeitgebern respektiert. - Hast du in der Zeit vielleicht ehrenamtlich was gemacht oder dich weitergebildet?" - • Freelancer/Selbständige: - "Lass uns deine wichtigsten Projekte durchgehen. Bei Freelancern zählen - Projekte mehr als Positionen — und du hast sicher eine spannende Vielfalt." - • Lange bei einer Firma: - "20 Jahre zeigen echte Loyalität und Tiefe! Lass uns die verschiedenen - Rollen und Verantwortungen aufschlüsseln — da steckt bestimmt viel Entwicklung drin." - • Häufige Wechsel: - "Vielfältige Erfahrung ist super — du kennst verschiedene Unternehmenskulturen - und Branchen. Lass uns das als Stärke positionieren." -2c) AUSBILDUNG - → "Wo hast du gelernt/studiert? Gibt es Weiterbildungen oder Zertifikate?" - → Speichere mit ausbildung_hinzufuegen() +def build_tipps_und_tricks_prompt() -> str: + """Tipps & Tricks fuer AI-gestuetzte Jobsuche mit dem PBP (#195). -2d) SKILLS & KOMPETENZEN - → Leite aus dem Gespräch ab! "Aus dem was du erzählt hast, notiere ich mal: - [X, Y, Z] — faellt dir noch was ein?" - → Kategorien: fachlich, tool, methodisch, sprache, soft_skill - → SKILL-AKTUALITAET: Setze last_used_year auf das letzte Jahr der Nutzung! - Ein Skill der vor 20 Jahren genutzt wurde → last_used_year=2006, level=1 - Ein aktuell genutzter Skill → last_used_year=0 (oder aktuelles Jahr), level=4-5 - Frage bei alten Stationen: "Nutzt du [Skill] heute noch aktiv?" - → Speichere mit skill_hinzufügen(name, category, level, years_experience, last_used_year) + Statischer Prompt-Text auf Modul-Ebene (siehe ``build_profil_sync_prompt``). + """ + return """Du bist ein erfahrener Karriere-Coach. Gib dem Bewerber praxisnahe +Tipps fuer die Jobsuche mit dem PBP (Persoenliches Bewerbungs-Portal). -2e) ZWANGLOSE NOTIZEN - → "Was motiviert dich? Was ist dir wichtig bei der Arbeit?" - → "Gibt es was, das du auf keinen Fall willst?" - → Speichere als informal_notes in profil_erstellen() +VORBEREITUNG (still): +1. profil_zusammenfassung() — Profil-Vollstaendigkeit prüfen +2. statistiken_abrufen() — aktuelle Bewerbungsstatistiken +3. suchkriterien_anzeigen() — aktive Suchkonfiguration -═══════════════════════════════════════════════════ -PHASE 3: PRÄFERENZ-FRAGEN (basierend auf dem CV) -═══════════════════════════════════════════════════ +TIPPS NACH KATEGORIE: -Stelle gezielte Fragen basierend auf dem, was du erfasst hast: +== PROFIL OPTIMIEREN == +- "Ein vollstaendiges Profil erhoht den Match-Score um bis zu 30%." +- "Die STAR-Methode bei Projekten macht dein Profil fuer den AI-Matching viel aussagekraeftiger." +- "Nutze skill_hinzufuegen() fuer alle relevanten Skills — auch Soft Skills zaehlen beim Scoring." +- "Aktualisiere dein Profil regelmaessig mit profil_bearbeiten()." -→ "Du warst [X Jahre] bei [Firma] — möchtest du in der Branche bleiben - oder was Neues ausprobieren?" -→ "Du hast sowohl Festanstellung als auch Freelance-Erfahrung — - was liegt dir mehr? Oder beides?" -→ "Deine Jobs waren hauptsächlich in [Region] — bist du offen für andere Orte?" -→ "Remote, vor Ort oder Mix — was waere ideal für dich?" -→ "Hast du eine Vorstellung was Gehalt/Tagessatz angeht? - Kein Stress wenn nicht — wir können das später noch anpassen." -→ "Wie sieht's mit Reisebereitschaft aus?" +== JOBSUCHE VERFEINERN == +- "Keywords mit '_muss' werden AND-verknuepft. Nutze wenige praezise statt viele vage Keywords." +- "Der Scoring-Regler (scoring_konfigurieren) ist dein wichtigstes Werkzeug — passe Entfernung, Gehalt und Stellentyp an." +- "keyword_vorschlaege() zeigt dir welche Keywords in aktuellen Stellen haeufig vorkommen." +- "Mehrere Quellen aktivieren (LinkedIn, StepStone, Indeed) erhoht die Trefferquote deutlich." +- "Nutze blacklist_verwalten() fuer Firmen die du sicher nicht willst — spart Zeit bei jeder Suche." -→ Aktualisiere profil_erstellen() mit den Präferenzen. +== BEWERBUNGEN MANAGEN == +- "Nutze fit_analyse() VOR jeder Bewerbung — so investierst du Zeit nur in passende Stellen." +- "Der Bewerbungs-Workflow (workflow 'bewerbung_vorbereitung') fuehrt dich Schritt fuer Schritt." +- "Setze Follow-Ups mit nachfass_planen() — nach 10 Tagen ohne Antwort ist Nachfassen angemessen." +- "Tracke jeden Status-Wechsel — die Statistiken helfen dir Muster zu erkennen." -═══════════════════════════════════════════════════ -PHASE 3b: JOBTITEL VORSCHLAGEN -═══════════════════════════════════════════════════ +== DOKUMENTE == +- "Lade wichtige Zeugnisse und Zertifikate hoch — sie werden automatisch analysiert." +- "lebenslauf_angepasst_exportieren() erstellt einen auf die Stelle zugeschnittenen CV." +- "E-Mails importieren (Email-Upload) erkennt automatisch Einladungen und Absagen." -Basierend auf dem erfassten Profil, schlage passende Stellenbezeichnungen vor: -→ Analysiere: Aktuelle Position, Branche, Technologien, Erfahrungslevel -→ Schlage 5-10 passende Jobtitel vor (deutsch UND englisch) -→ Zeige sie dem User: "Basierend auf deinem Profil würde ich nach diesen - Stellen suchen: [Liste]. Passt das? Soll ich welche ändern oder ergänzen?" -→ Speichere mit jobtitel_vorschlagen(titel=[...]) -→ Diese Titel werden später für die automatische Jobsuche verwendet! -→ WICHTIG: Keine unrealistischen Titel! Berücksichtige was AKTUELL ist, - nicht was vor 20 Jahren war. +== FORTGESCHRITTEN == +- "ablehnungs_muster() zeigt dir systematische Schwaechen — nutze es alle 2 Wochen." +- "branchen_trends() verraet welche Skills gerade gefragt sind." +- "firmen_recherche() gibt dir Insights bevor du dich bewirbst." +- "recherche_speichern() haelt deine Analysen fest — auch ueber Chat-Sessions hinweg." +- "profil_sync (Prompt) hilft dir LinkedIn/XING/Freelance.de aktuell zu halten." -═══════════════════════════════════════════════════ -PHASE 4: REVIEW & KORREKTUR -═══════════════════════════════════════════════════ +Zeige die Tipps nach Relevanz: +- Profil unvollstaendig? → Profil-Tipps zuerst +- Keine Bewerbungen? → Jobsuche-Tipps zuerst +- Viele Ablehnungen? → Bewerbungs-Tipps und Muster-Analyse +Sprich Deutsch und per Du. Sei ermutigend. +""" -→ Rufe profil_zusammenfassung() auf -→ Zeige dem User die komplette Zusammenfassung -→ "So, das ist alles was ich aufgeschrieben habe. Stimmt das so? - Möchtest du irgendwas ändern, ergänzen oder löschen?" -→ Bei Korrekturen: Nutze profil_bearbeiten() für gezielte Änderungen -→ Iteriere bis der User zufrieden ist -→ Erst dann: "Super, dein Profil ist fertig! Du kannst es jederzeit - später noch anpassen. Im Dashboard (http://localhost:8200) siehst du - alles auf einen Blick." -═══════════════════════════════════════════════════ -REGELN -═══════════════════════════════════════════════════ +def register_prompts(mcp, db, logger): + """Registriert alle MCP-Prompts am Server (Anzahl: test_mcp_registry prueft).""" -1. MAXIMAL 2-3 Fragen pro Nachricht — kein Fragenkatalog! -2. Reagiere auf das Erzählte, stelle Anschlussfragen -3. Hilf bei der Formulierung: "Kann man das irgendwie beziffern? - Z.B. Teamgröße, Budget, Zeitersparnis?" -4. Sprich IMMER Deutsch und per Du -5. Sei ermutigend — besonders bei Lücken oder ungewöhnlichen Wegen -6. Wenn jemand unsicher ist: "Kein Problem, wir passen das später an" -7. Speichere SOFORT mit den Tools — nicht erst am Ende sammeln -8. Keine Bewertung von Karriereentscheidungen — nur konstruktive Hilfe -9. FORTSCHRITT SPEICHERN: Nach jedem abgeschlossenen Bereich - erfassung_fortschritt_speichern() aufrufen! -10. UNTERBRECHUNG: Wenn der User abbricht, sage: - "Kein Problem! Ich habe deinen Fortschritt gespeichert. - Starte einfach später die Ersterfassung erneut (sag einfach - 'Ersterfassung starten') und wir machen genau da weiter, - wo wir aufgehört haben." -11. AKTIVES PROFIL IST GESETZT: Arbeite IMMER mit dem aktiven Profil. - Stelle es NIEMALS in Frage. Erstelle KEIN zweites Profil. - Der User hat im Dashboard sein Profil gewählt — respektiere das. -12. KEINE HALLUZINATIONEN: Verwende NUR Daten die dir die Tools JETZT zurückgeben. - Erfinde KEINE Profile, IDs oder Daten aus früheren Gesprächen. - Du kennst den User NICHT — jede Session startet bei Null. -13. DOKUMENTE VOR FRAGEN: extraktion_starten() ist IMMER der erste Aufruf. - Wenn Dokumente gefunden → analysieren. Wenn nicht → weiter. NIEMALS fragen. -14. KEIN SMALLTALK VOR DER ANALYSE: Deine ERSTE Aktion ist extraktion_starten(). - Schreibe dem User KEINE Nachricht bevor du das Tool aufgerufen hast. - Kein "lass mich mal schauen", kein "ich prüfe den Stand". Einfach machen.""" + @mcp.prompt() + def ersterfassung() -> str: + """Zwangloses Interview zur Profilerfassung — wie ein Kaffeegespräch. + Kann jederzeit unterbrochen und später fortgesetzt werden.""" + return build_kennlerngespraech_prompt(db) @mcp.prompt() def bewerbung_schreiben(stelle: str = "", firma: str = "") -> str: @@ -737,7 +513,7 @@ def interview_vorbereitung(stelle: str = "", firma: str = "") -> str: - Biete an: "Soll ich mit dir ein Probe-Interview ueben?" - Wenn der User den Gespraechstermin nennt: sofort mit meeting_hinzufuegen(bewerbung_id, datum, typ='interview', ...) speichern - Am Ende: "Soll ich den Status deiner Bewerbung bei {firma} auf 'interview' setzen?" - → bewerbung_status_ändern(id, 'interview', notizen)""" + → bewerbung_status_aendern(id, 'interview', notizen)""" @mcp.prompt() def profil_ueberpruefen() -> str: @@ -749,7 +525,7 @@ def profil_ueberpruefen() -> str: 2. Frage: "Stimmt alles so? Was möchtest du ändern?" 3. Bei Korrekturen: - Nutze profil_bearbeiten() für gezielte Änderungen - - Oder die spezifischen Tools (position_hinzufügen, skill_hinzufügen etc.) + - Oder die spezifischen Tools (position_hinzufuegen, skill_hinzufuegen etc.) - Zeige nach jeder Änderung nochmal die betroffene Stelle 4. Wenn fehlende Bereiche angezeigt werden: "Ich sehe dass [X] noch fehlt. Möchtest du das jetzt ergänzen?" @@ -826,7 +602,7 @@ def willkommen() -> str: Berufserfahrung, Skills, Ausbildung. Kein steifes Formular, mehr wie ein Kaffeegespräch. 🔍 JOBS FINDEN - Ich durchsuche bis zu 9 Jobportale gleichzeitig und bewerte die Ergebnisse + Ich durchsuche deine aktivierten Jobquellen gleichzeitig (ueber 30 Portale verfuegbar) und bewerte die Ergebnisse automatisch nach deinen Kriterien. ✉️ BEWERBUNGEN SCHREIBEN @@ -1009,7 +785,7 @@ def interview_simulation(stelle: str = "", firma: str = "") -> str: → Gib eine Gesamtbewertung (1-10) → Liste die 3 stärksten und 3 verbesserungswürdigsten Punkte → Biete an: "Soll ich den Bewerbungsstatus auf 'interview' setzen?" -→ bewerbung_status_ändern(id, 'interview')""" +→ bewerbung_status_aendern(id, 'interview')""" @mcp.prompt() def gehaltsverhandlung(stelle: str = "", firma: str = "") -> str: @@ -1553,7 +1329,8 @@ def faq() -> str: 2. Zeige den aktuellen Stand (oben) 3. Empfehle den NAECHSTEN sinnvollen Schritt — genau EINEN, nicht alle 4. Frage ob der User das tun möchte oder etwas anderes braucht -5. Bei Fragen: Antworte basierend auf der FAQ (docs/FAQ.md) +5. Bei Fragen: verweise auf das Wiki (https://github.com/MadGapun/PBP/wiki/FAQ) +6. Rufe onboarding_hints_anzeigen() auf und nenne hoechstens einen aktiven Tipp, wenn er zur Frage passt WICHTIG: - Nicht überfordernd — immer nur den nächsten Schritt zeigen @@ -1666,102 +1443,12 @@ def bewerbung_vorbereitung(bewerbung_id: str = "") -> str: @mcp.prompt() def profil_sync() -> str: """Leitfaden zum Abgleich des PBP-Profils mit LinkedIn, XING und Freelance.de (#117).""" - return """Du bist ein Profil-Sync-Berater. Hilf dem Bewerber, sein PBP-Profil mit -externen Plattformen (LinkedIn, XING, Freelance.de) abzugleichen. - -VORBEREITUNG (still, nicht anzeigen): -1. Rufe profil_zusammenfassung() auf — lerne das aktuelle Profil kennen -2. Pruefe die Vollstaendigkeit mit erfassung_fortschritt_lesen() - -ABLAUF: - -1. ANALYSE — Zeige dem User eine Übersicht: - - "Dein PBP-Profil hat folgende Daten: [Name, X Positionen, Y Skills, Z Projekte]" - - "Folgende Felder solltest du auf den Plattformen abgleichen:" - -2. LINKEDIN-SYNC: - - Headline: Erstelle einen Vorschlag basierend auf Profil-Summary und Top-Skills - - About/Zusammenfassung: Formuliere aus dem PBP-Summary eine LinkedIn-Version - - Berufserfahrung: Liste die Positionen mit Start/Ende - - Skills: Schlage die Top-10 Skills vor, sortiert nach Relevanz - - Projekte: Empfehle welche Projekte als "Featured" angezeigt werden sollten - -3. XING-SYNC: - - Profilslogan: Kurz und prägnant aus der Summary - - Berufserfahrung: Gleich wie LinkedIn, aber XING-Format (Tätigkeiten als Freitext) - - "Ich biete" / "Ich suche": Generiere aus Skills und Präferenzen - - Portfolio: Empfehle relevante Projekte - -4. FREELANCE.DE-SYNC (falls Freelancer): - - Verfügbarkeit & Stundensatz: Aus Präferenzen ableiten - - Skill-Profil: Top-Skills mit Erfahrungsjahren - - Projektreferenzen: Formatiere Projekte nach Freelance.de-Schema - (Kunde [ggf. vertraulich], Rolle, Zeitraum, Technologien) - - Einsatzort-Radius: Aus Suchkriterien ableiten - -5. KONSISTENZ-CHECK: - - Prüfe ob alle Plattformen die gleichen Jobtitel verwenden - - Warnung bei Zeitlücken oder Widersprüchen - - "Tipp: Nutze auf allen Plattformen die gleiche Berufsbezeichnung." - -REGELN: -- Sprich Deutsch und per Du -- Gib konkrete, copy-paste-fertige Textvorschläge -- Beachte is_confidential bei Projekten — vertrauliche Kundennamen nicht für externe Plattformen vorschlagen -- Bei Freelancern: Betone Freelance.de, bei Festangestellten: Betone LinkedIn/XING -- Am Ende: "Soll ich die Texte als Dokument exportieren?" -""" + return build_profil_sync_prompt() @mcp.prompt() def tipps_und_tricks() -> str: """Tipps & Tricks fuer AI-gestuetzte Jobsuche mit dem PBP (#195).""" - return """Du bist ein erfahrener Karriere-Coach. Gib dem Bewerber praxisnahe -Tipps fuer die Jobsuche mit dem PBP (Persoenliches Bewerbungs-Portal). - -VORBEREITUNG (still): -1. profil_zusammenfassung() — Profil-Vollstaendigkeit prüfen -2. statistiken_abrufen() — aktuelle Bewerbungsstatistiken -3. suchkriterien_anzeigen() — aktive Suchkonfiguration - -TIPPS NACH KATEGORIE: - -== PROFIL OPTIMIEREN == -- "Ein vollstaendiges Profil erhoht den Match-Score um bis zu 30%." -- "Die STAR-Methode bei Projekten macht dein Profil fuer den AI-Matching viel aussagekraeftiger." -- "Nutze skill_hinzufuegen() fuer alle relevanten Skills — auch Soft Skills zaehlen beim Scoring." -- "Aktualisiere dein Profil regelmaessig mit profil_bearbeiten()." - -== JOBSUCHE VERFEINERN == -- "Keywords mit '_muss' werden AND-verknuepft. Nutze wenige praezise statt viele vage Keywords." -- "Der Scoring-Regler (scoring_konfigurieren) ist dein wichtigstes Werkzeug — passe Entfernung, Gehalt und Stellentyp an." -- "keyword_vorschlaege() zeigt dir welche Keywords in aktuellen Stellen haeufig vorkommen." -- "Mehrere Quellen aktivieren (LinkedIn, StepStone, Indeed) erhoht die Trefferquote deutlich." -- "Nutze blacklist_verwalten() fuer Firmen die du sicher nicht willst — spart Zeit bei jeder Suche." - -== BEWERBUNGEN MANAGEN == -- "Nutze fit_analyse() VOR jeder Bewerbung — so investierst du Zeit nur in passende Stellen." -- "Der Bewerbungs-Workflow (workflow 'bewerbung_vorbereitung') fuehrt dich Schritt fuer Schritt." -- "Setze Follow-Ups mit nachfass_planen() — nach 10 Tagen ohne Antwort ist Nachfassen angemessen." -- "Tracke jeden Status-Wechsel — die Statistiken helfen dir Muster zu erkennen." - -== DOKUMENTE == -- "Lade wichtige Zeugnisse und Zertifikate hoch — sie werden automatisch analysiert." -- "lebenslauf_angepasst_exportieren() erstellt einen auf die Stelle zugeschnittenen CV." -- "E-Mails importieren (Email-Upload) erkennt automatisch Einladungen und Absagen." - -== FORTGESCHRITTEN == -- "ablehnungs_muster() zeigt dir systematische Schwaechen — nutze es alle 2 Wochen." -- "branchen_trends() verraet welche Skills gerade gefragt sind." -- "firmen_recherche() gibt dir Insights bevor du dich bewirbst." -- "recherche_speichern() haelt deine Analysen fest — auch ueber Chat-Sessions hinweg." -- "profil_sync (Prompt) hilft dir LinkedIn/XING/Freelance.de aktuell zu halten." - -Zeige die Tipps nach Relevanz: -- Profil unvollstaendig? → Profil-Tipps zuerst -- Keine Bewerbungen? → Jobsuche-Tipps zuerst -- Viele Ablehnungen? → Bewerbungs-Tipps und Muster-Analyse -Sprich Deutsch und per Du. Sei ermutigend. -""" + return build_tipps_und_tricks_prompt() # === v1.7.0-beta.37 (#599): Elwosa-Bridge-Prompts ============ diff --git a/src/bewerbungs_assistent/services/llm_service.py b/src/bewerbungs_assistent/services/llm_service.py index b3004fa..88300d6 100644 --- a/src/bewerbungs_assistent/services/llm_service.py +++ b/src/bewerbungs_assistent/services/llm_service.py @@ -650,6 +650,25 @@ def _build_match_job_to_skills_prompt(payload: dict) -> str: ) +def _clean_match_reason(reason: str) -> str: + """Bereinigt die KURZBEGRUENDUNG aus der match_job_to_skills-Antwort. + + #691: Das 7B-Modell laesst gelegentlich den Prompt-Platzhalter + 'KURZBEGRUENDUNG' (oder eine Variante) woertlich stehen oder liefert eine + leere Begruendung. Solche Faelle werden zu '' normalisiert, damit nie ein + Platzhalter als echte Begruendung in research_notes / UI landet. + """ + r = (reason or "").strip().strip(".,;:'\"`").strip() + if not r: + return "" + if r.lower() in { + "kurzbegruendung", "kurzbegrundung", "kurzbegründung", + "begruendung", "begründung", "begrundung", "reason", + }: + return "" + return r[:200] + + def _parse_match_job_to_skills(raw: str) -> dict: raw_clean = (raw or "").strip() if not raw_clean: @@ -658,7 +677,7 @@ def _parse_match_job_to_skills(raw: str) -> dict: line = next((l.strip() for l in raw_clean.split("\n") if l.strip()), "") parts = [p.strip() for p in line.split("|", 1)] decision = parts[0].upper().strip(".,;:'\"`") - reason = parts[1] if len(parts) > 1 else "" + reason = _clean_match_reason(parts[1] if len(parts) > 1 else "") if decision not in ("PASST", "PASST_NICHT", "UNSICHER"): # Versuche Auto-Heuristik aus dem Roh-Text lower = raw_clean.lower() @@ -670,7 +689,7 @@ def _parse_match_job_to_skills(raw: str) -> dict: decision = "UNSICHER" return { "decision": decision, - "reason": reason[:200] if reason else "", + "reason": reason, "raw": raw, } diff --git a/src/bewerbungs_assistent/services/typed_ids.py b/src/bewerbungs_assistent/services/typed_ids.py index b851f9c..0468497 100644 --- a/src/bewerbungs_assistent/services/typed_ids.py +++ b/src/bewerbungs_assistent/services/typed_ids.py @@ -43,6 +43,7 @@ class IdKind(str, Enum): SKILL = "SKL" # skills.id EDUCATION = "EDU" # education.id FOLLOWUP = "FUP" # follow_ups.id + CONTACT = "CON" # contacts.id (#684: CON-Prefix muss beim Input akzeptiert werden) # Reverse-Lookup diff --git a/src/bewerbungs_assistent/static/dashboard/assets/index-BW0doFNC.js b/src/bewerbungs_assistent/static/dashboard/assets/index-BW0doFNC.js deleted file mode 100644 index 0b65b91..0000000 --- a/src/bewerbungs_assistent/static/dashboard/assets/index-BW0doFNC.js +++ /dev/null @@ -1,63 +0,0 @@ -var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1re||(e.current=ne[re],ne[re]=null,re--)}function R(e,t){re++,ne[re]=e.current,e.current=t}var ae=L(null),oe=L(null),z=L(null),se=L(null);function ce(e,t){switch(R(z,t),R(oe,e),R(ae,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Vd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Vd(t),e=Hd(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}ie(ae),R(ae,e)}function le(){ie(ae),ie(oe),ie(z)}function ue(e){e.memoizedState!==null&&R(se,e);var t=ae.current,n=Hd(t,e.type);t!==n&&(R(oe,e),R(ae,n))}function de(e){oe.current===e&&(ie(ae),ie(oe)),se.current===e&&(ie(se),Qf._currentValue=te)}var fe,pe;function me(e){if(fe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);fe=t&&t[1]||``,pe=-1)`:-1i||c[r]!==l[i]){var u=` -`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{he=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?me(n):``}function _e(e,t){switch(e.tag){case 26:case 27:case 5:return me(e.type);case 16:return me(`Lazy`);case 13:return e.child!==t&&t!==null?me(`Suspense Fallback`):me(`Suspense`);case 19:return me(`SuspenseList`);case 0:case 15:return ge(e.type,!1);case 11:return ge(e.type.render,!1);case 1:return ge(e.type,!0);case 31:return me(`Activity`);default:return``}}function ve(e){try{var t=``,n=null;do t+=_e(e,n),n=e,e=e.return;while(e);return t}catch(e){return` -Error generating stack: `+e.message+` -`+e.stack}}var ye=Object.prototype.hasOwnProperty,be=t.unstable_scheduleCallback,xe=t.unstable_cancelCallback,Se=t.unstable_shouldYield,Ce=t.unstable_requestPaint,B=t.unstable_now,we=t.unstable_getCurrentPriorityLevel,Te=t.unstable_ImmediatePriority,Ee=t.unstable_UserBlockingPriority,De=t.unstable_NormalPriority,Oe=t.unstable_LowPriority,ke=t.unstable_IdlePriority,Ae=t.log,je=t.unstable_setDisableYieldValue,Me=null,Ne=null;function Pe(e){if(typeof Ae==`function`&&je(e),Ne&&typeof Ne.setStrictMode==`function`)try{Ne.setStrictMode(Me,e)}catch{}}var Fe=Math.clz32?Math.clz32:Re,Ie=Math.log,Le=Math.LN2;function Re(e){return e>>>=0,e===0?32:31-(Ie(e)/Le|0)|0}var ze=256,Be=262144,Ve=4194304;function He(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ue(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=He(n))):i=He(o):i=He(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=He(n))):i=He(o)):i=He(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function We(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ge(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ke(){var e=Ve;return Ve<<=1,!(Ve&62914560)&&(Ve=4194304),e}function qe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Je(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ye(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),rn=!1;if(nn)try{var an={};Object.defineProperty(an,`passive`,{get:function(){rn=!0}}),window.addEventListener(`test`,an,an),window.removeEventListener(`test`,an,an)}catch{rn=!1}var on=null,sn=null,cn=null;function ln(){if(cn)return cn;var e,t=sn,n=t.length,r,i=`value`in on?on.value:on.textContent,a=i.length;for(e=0;e=Bn),K=` `,Un=!1;function q(e,t){switch(e){case`keyup`:return Rn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function Wn(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Gn=!1;function Kn(e,t){switch(e){case`compositionend`:return Wn(t);case`keypress`:return t.which===32?(Un=!0,K):null;case`textInput`:return e=t.data,e===K&&Un?null:e;default:return null}}function J(e,t){if(Gn)return e===`compositionend`||!zn&&q(e,t)?(e=ln(),cn=sn=on=null,Gn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=fr(n)}}function mr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?mr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function hr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=jt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=jt(e.document)}return t}function gr(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var _r=nn&&`documentMode`in document&&11>=document.documentMode,vr=null,yr=null,br=null,xr=!1;function Sr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;xr||vr==null||vr!==jt(r)||(r=vr,`selectionStart`in r&&gr(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),br&&dr(br,r)||(br=r,r=Td(yr,`onSelect`),0>=o,i-=o,mi=1<<32-Fe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),Ci&&gi(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),Ci&&gi(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return Ci&&gi(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),Ci&&gi(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&_a(l)===r.type){n(e,r.sibling),c=a(r,o.props),wa(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ti(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ei(o.type,o.key,o.props,null,e.mode,c),wa(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=ii(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=_a(o),b(e,r,o,c)}if(ee(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,Ca(o),c);if(o.$$typeof===C)return b(e,r,Gi(e,o),c);Ta(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ni(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Sa=0;var i=b(e,t,n,r);return xa=null,i}catch(t){if(t===da||t===pa)throw t;var a=Xr(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Da=Ea(!0),Oa=Ea(!1),ka=!1;function Aa(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function ja(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Ma(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Na(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Ml&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=qr(e),Kr(e,null,n),t}return Ur(e,r,t,n),qr(e)}function Pa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ze(e,n)}}function Fa(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var Ia=!1;function La(){if(Ia){var e=na;if(e!==null)throw e}}function Ra(e,t,n,r){Ia=!1;var i=e.updateQueue;ka=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Fl&f)===f:(r&f)===f){f!==0&&f===ta&&(Ia=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:ka=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Ul|=o,e.lanes=o,e.memoizedState=d}}function za(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Ba(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Ds(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Es(e,t,aa(c,r),uu(e)):Es(e,t,r,uu(e))}catch(n){Es(e,t,{then:function(){},status:`rejected`,reason:n},uu())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function gs(){}function _s(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=vs(e).queue;hs(e,a,t,te,n===null?gs:function(){return ys(e),n(r)})}function vs(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Oo,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:Oo,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function ys(e){var t=vs(e);t.next===null&&(t=e.alternate.memoizedState),Es(e,t.next.queue,{},uu())}function bs(){return Wi(Qf)}function xs(){return Co().memoizedState}function Ss(){return Co().memoizedState}function Cs(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=uu();e=Ma(n);var r=Na(t,e,n);r!==null&&(fu(r,t,n),Pa(r,t,n)),t={cache:Zi()},e.payload=t;return}t=t.return}}function ws(e,t,n){var r=uu();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},Os(e)?ks(t,n):(n=Wr(e,t,n,r),n!==null&&(fu(n,e,r),As(n,t,r)))}function Ts(e,t,n){Es(e,t,n,uu())}function Es(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(Os(e))ks(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,ur(s,o))return Ur(e,t,i,0),Nl===null&&Hr(),!1}catch{}if(n=Wr(e,t,i,r),n!==null)return fu(n,e,r),As(n,t,r),!0}return!1}function Ds(e,t,n,r){if(r={lane:2,revertLane:ld(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},Os(e)){if(t)throw Error(i(479))}else t=Wr(e,n,r,2),t!==null&&fu(t,e,2)}function Os(e){var t=e.alternate;return e===no||t!==null&&t===no}function ks(e,t){oo=ao=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function As(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ze(e,n)}}var js={readContext:Wi,use:Eo,useCallback:po,useContext:po,useEffect:po,useImperativeHandle:po,useLayoutEffect:po,useInsertionEffect:po,useMemo:po,useReducer:po,useRef:po,useState:po,useDebugValue:po,useDeferredValue:po,useTransition:po,useSyncExternalStore:po,useId:po,useHostTransitionStatus:po,useFormState:po,useActionState:po,useOptimistic:po,useMemoCache:po,useCacheRefresh:po};js.useEffectEvent=po;var Ms={readContext:Wi,use:Eo,useCallback:function(e,t){return So().memoizedState=[e,t===void 0?null:t],e},useContext:Wi,useEffect:ns,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),es(4194308,4,cs.bind(null,t,e),n)},useLayoutEffect:function(e,t){return es(4194308,4,e,t)},useInsertionEffect:function(e,t){es(4,2,e,t)},useMemo:function(e,t){var n=So();t=t===void 0?null:t;var r=e();if(so){Pe(!0);try{e()}finally{Pe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=So();if(n!==void 0){var i=n(t);if(so){Pe(!0);try{n(t)}finally{Pe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=ws.bind(null,no,e),[r.memoizedState,e]},useRef:function(e){var t=So();return e={current:e},t.memoizedState=e},useState:function(e){e=Ro(e);var t=e.queue,n=Ts.bind(null,no,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:us,useDeferredValue:function(e,t){return ps(So(),e,t)},useTransition:function(){var e=Ro(!1);return e=hs.bind(null,no,e.queue,!0,!1),So().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=no,a=So();if(Ci){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Nl===null)throw Error(i(349));Fl&127||No(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,ns(Fo.bind(null,r,o,e),[e]),r.flags|=2048,Qo(9,{destroy:void 0},Po.bind(null,r,o,n,t),null),n},useId:function(){var e=So(),t=Nl.identifierPrefix;if(Ci){var n=hi,r=mi;n=(r&~(1<<32-Fe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=co++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[it]=t,o[at]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Pd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Tc(t)}}return Ac(t),Ec(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Tc(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=z.current,Ai(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=xi,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[it]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||jd(e.nodeValue,n)),e||Di(t,!0)}else e=Bd(e).createTextNode(r),e[it]=t,t.stateNode=e}return Ac(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=Ai(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[it]=t}else ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ac(t),e=!1}else n=Mi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?(Qa(t),t):(Qa(t),null);if(t.flags&128)throw Error(i(558))}return Ac(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=Ai(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[it]=t}else ji(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;Ac(t),a=!1}else a=Mi(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?(Qa(t),t):(Qa(t),null)}return Qa(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),Oc(t,t.updateQueue),Ac(t),null);case 4:return le(),e===null&&xd(t.stateNode.containerInfo),Ac(t),null;case 10:return Ri(t.type),Ac(t),null;case 19:if(ie($a),r=t.memoizedState,r===null)return Ac(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)kc(r,!1);else{if(Hl!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=eo(e),o!==null){for(t.flags|=128,kc(r,!1),e=o.updateQueue,t.updateQueue=e,Oc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)$r(n,e),n=n.sibling;return R($a,$a.current&1|2),Ci&&gi(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&B()>Ql&&(t.flags|=128,a=!0,kc(r,!1),t.lanes=4194304)}else{if(!a)if(e=eo(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,Oc(t,e),kc(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!Ci)return Ac(t),null}else 2*B()-r.renderingStartTime>Ql&&n!==536870912&&(t.flags|=128,a=!0,kc(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(Ac(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=B(),e.sibling=null,n=$a.current,R($a,a?n&1|2:n&1),Ci&&gi(t,r.treeForkCount),e);case 22:case 23:return Qa(t),Ga(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(Ac(t),t.subtreeFlags&6&&(t.flags|=8192)):Ac(t),n=t.updateQueue,n!==null&&Oc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&ie(sa),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),Ri(Xi),Ac(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Mc(e,t){switch(yi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return Ri(Xi),le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return de(t),null;case 31:if(t.memoizedState!==null){if(Qa(t),t.alternate===null)throw Error(i(340));ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if(Qa(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));ji()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return ie($a),null;case 4:return le(),null;case 10:return Ri(t.type),null;case 22:case 23:return Qa(t),Ga(),e!==null&&ie(sa),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return Ri(Xi),null;case 25:return null;default:return null}}function Nc(e,t){switch(yi(t),t.tag){case 3:Ri(Xi),le();break;case 26:case 27:case 5:de(t);break;case 4:le();break;case 31:t.memoizedState!==null&&Qa(t);break;case 13:Qa(t);break;case 19:ie($a);break;case 10:Ri(t.type);break;case 22:case 23:Qa(t),Ga(),e!==null&&ie(sa);break;case 24:Ri(Xi)}}function Pc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Hu(t,t.return,e)}}function Fc(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Hu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Hu(t,t.return,e)}}function Ic(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Ba(t,n)}catch(t){Hu(e,e.return,t)}}}function Lc(e,t,n){n.props=zs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Hu(e,t,n)}}function Rc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Hu(e,t,n)}}function zc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Hu(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Hu(e,t,n)}else n.current=null}function Bc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Hu(e,e.return,t)}}function Vc(e,t,n){try{var r=e.stateNode;Fd(r,e.type,n,t),r[at]=t}catch(t){Hu(e,e.return,t)}}function Hc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Zd(e.type)||e.tag===4}function Uc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Hc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Zd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Wc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=W));else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Wc(e,t,n),e=e.sibling;e!==null;)Wc(e,t,n),e=e.sibling}function Gc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Zd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Gc(e,t,n),e=e.sibling;e!==null;)Gc(e,t,n),e=e.sibling}function Kc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Pd(t,r,n),t[it]=e,t[at]=n}catch(t){Hu(e,e.return,t)}}var qc=!1,Jc=!1,Yc=!1,Xc=typeof WeakSet==`function`?WeakSet:Set,Zc=null;function Qc(e,t){if(e=e.containerInfo,Rd=sp,e=hr(e),gr(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(zd={focusedElem:e,selectionRange:n},sp=!1,Zc=t;Zc!==null;)if(t=Zc,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,Zc=e;else for(;Zc!==null;){switch(t=Zc,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Pd(o,r,n),o[it]=e,_t(o),r=o;break a;case`link`:var s=Vf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=pr(s,h),v=pr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=ou,ou=null;var o=nu,s=iu;if(tu=0,ru=nu=null,iu=0,Ml&6)throw Error(i(331));var c=Ml;if(Ml|=4,Ol(o.current),bl(o,o.current,s,n),Ml=c,nd(0,!1),Ne&&typeof Ne.onPostCommitFiberRoot==`function`)try{Ne.onPostCommitFiberRoot(Me,o)}catch{}return!0}finally{I.p=a,F.T=r,Ru(e,t)}}function Vu(e,t,n){t=oi(n,t),t=Gs(e.stateNode,t,2),e=Na(e,t,2),e!==null&&(Je(e,2),td(e))}function Hu(e,t,n){if(e.tag===3)Vu(e,e,n);else for(;t!==null;){if(t.tag===3){Vu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(eu===null||!eu.has(r))){e=oi(n,e),n=Ks(2),r=Na(t,n,2),r!==null&&(qs(n,r,t,e),Je(r,2),td(r));break}}t=t.return}}function Uu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Q;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Bl=!0,i.add(n),e=Wu.bind(null,e,t,n),t.then(e,e))}function Wu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Nl===e&&(Fl&n)===n&&(Hl===4||Hl===3&&(Fl&62914560)===Fl&&300>B()-Xl?!(Ml&2)&&yu(e,0):$|=n,Kl===Fl&&(Kl=0)),td(e)}function Gu(e,t){t===0&&(t=Ke()),e=Gr(e,t),e!==null&&(Je(e,t),td(e))}function Ku(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Gu(e,n)}function qu(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Gu(e,n)}function Ju(e,t){return be(e,t)}var Yu=null,Xu=null,Zu=!1,Qu=!1,$u=!1,ed=0;function td(e){e!==Xu&&e.next===null&&(Xu===null?Yu=Xu=e:Xu=Xu.next=e),Qu=!0,Zu||(Zu=!0,cd())}function nd(e,t){if(!$u&&Qu){$u=!0;do for(var n=!1,r=Yu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Fe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,sd(r,a))}else a=Fl,a=Ue(r,r===Nl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||We(r,a)||(n=!0,sd(r,a));r=r.next}while(n);$u=!1}}function rd(){id()}function id(){Qu=Zu=!1;var e=0;ed!==0&&Gd()&&(e=ed);for(var t=B(),n=null,r=Yu;r!==null;){var i=r.next,a=ad(r,t);a===0?(r.next=null,n===null?Yu=i:n.next=i,i===null&&(Xu=n)):(n=r,(e!==0||a&3)&&(Qu=!0)),r=i}tu!==0&&tu!==5||nd(e,!1),ed!==0&&(ed=0)}function ad(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Id(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function xf(e,t,n){var r=bf;if(r&&typeof t==`string`&&t){var i=Nt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),hf.has(i)||(hf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Pd(t,`link`,e),_t(t),r.head.appendChild(t)))}}function Sf(e){_f.D(e),xf(`dns-prefetch`,e,null)}function Cf(e,t){_f.C(e,t),xf(`preconnect`,e,t)}function wf(e,t,n){_f.L(e,t,n);var r=bf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Nt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Nt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Nt(n.imageSizes)+`"]`)):i+=`[href="`+Nt(e)+`"]`;var a=i;switch(t){case`style`:a=Af(e);break;case`script`:a=Pf(e)}mf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),mf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(jf(a))||t===`script`&&r.querySelector(Ff(a))||(t=r.createElement(`link`),Pd(t,`link`,e),_t(t),r.head.appendChild(t)))}}function Tf(e,t){_f.m(e,t);var n=bf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Nt(r)+`"][href="`+Nt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Pf(e)}if(!mf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),mf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(Ff(a)))return}r=n.createElement(`link`),Pd(r,`link`,e),_t(r),n.head.appendChild(r)}}}function Ef(e,t,n){_f.S(e,t,n);var r=bf;if(r&&e){var i=gt(r).hoistableStyles,a=Af(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(jf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=mf.get(a))&&Rf(e,n);var c=o=r.createElement(`link`);_t(c),Pd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Lf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Df(e,t){_f.X(e,t);var n=bf;if(n&&e){var r=gt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),_t(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Of(e,t){_f.M(e,t);var n=bf;if(n&&e){var r=gt(n).hoistableScripts,i=Pf(e),a=r.get(i);a||(a=n.querySelector(Ff(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=mf.get(i))&&zf(e,t),a=n.createElement(`script`),_t(a),Pd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t,n,r){var a=(a=z.current)?gf(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=Af(n.href),n=gt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=Af(n.href);var o=gt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(jf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),mf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},mf.set(e,n),o||Nf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Pf(n),n=gt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function Af(e){return`href="`+Nt(e)+`"`}function jf(e){return`link[rel="stylesheet"][`+e+`]`}function Mf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Nf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Pd(t,`link`,n),_t(t),e.head.appendChild(t))}function Pf(e){return`[src="`+Nt(e)+`"]`}function Ff(e){return`script[async]`+e}function If(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Nt(n.href)+`"]`);if(r)return t.instance=r,_t(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),_t(r),Pd(r,`style`,a),Lf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=Af(n.href);var o=e.querySelector(jf(a));if(o)return t.state.loading|=4,t.instance=o,_t(o),o;r=Mf(n),(a=mf.get(a))&&Rf(r,a),o=(e.ownerDocument||e).createElement(`link`),_t(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Pd(o,`link`,r),t.state.loading|=4,Lf(o,n.precedence,e),t.instance=o;case`script`:return o=Pf(n.src),(a=e.querySelector(Ff(o)))?(t.instance=a,_t(a),a):(r=n,(a=mf.get(o))&&(r=m({},n),zf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),_t(a),Pd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Lf(r,n.precedence,e));return t.instance}function Lf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Uf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Wf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Gf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=Af(r.href),a=t.querySelector(jf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Jf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,_t(a);return}a=t.ownerDocument||t,r=Mf(r),(i=mf.get(i))&&Rf(r,i),a=a.createElement(`link`),_t(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Pd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Jf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var Kf=0;function qf(e,t){return e.stylesheets&&e.count===0&&Xf(e,e.stylesheets),0Kf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Jf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Xf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Yf=null;function Xf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Yf=new Map,t.forEach(Zf,e),Yf=null,Jf.call(e))}function Zf(e,t){if(!(t.state.loading&4)){var n=Yf.get(e);if(n)var r=n.get(null);else{n=new Map,Yf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=l(d()),T=(0,w.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,w.createElement)(`svg`,{ref:c,...S,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:v(`lucide`,i),...!a&&!C(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])),E=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(T,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},D=E(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),O=E(`app-window`,[[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}],[`path`,{d:`M10 4v4`,key:`pp8u80`}],[`path`,{d:`M2 8h20`,key:`d11cs7`}],[`path`,{d:`M6 4v4`,key:`1svtjw`}]]),k=E(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),A=E(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),j=E(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]),M=E(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),N=E(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),P=E(`briefcase-business`,[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2`,key:`1ksdt3`}],[`path`,{d:`M22 13a18.15 18.15 0 0 1-20 0`,key:`12hx5q`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]),ee=E(`briefcase`,[[`path`,{d:`M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16`,key:`jecpp`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]),F=E(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),I=E(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),te=E(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),ne=E(`chart-column`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]]),re=E(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),L=E(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),ie=E(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),R=E(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),ae=E(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),oe=E(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),z=E(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),se=E(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ce=E(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),le=E(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),ue=E(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),de=E(`clipboard-copy`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2`,key:`4jdomd`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v4`,key:`3hqy98`}],[`path`,{d:`M21 14H11`,key:`1bme5i`}],[`path`,{d:`m15 10-4 4 4 4`,key:`5dvupr`}]]),fe=E(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),pe=E(`coffee`,[[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M14 2v2`,key:`6buw04`}],[`path`,{d:`M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1`,key:`pwadti`}],[`path`,{d:`M6 2v2`,key:`colzsn`}]]),me=E(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),he=E(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),ge=E(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),_e=E(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),ve=E(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),ye=E(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),be=E(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),xe=E(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Se=E(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),Ce=E(`graduation-cap`,[[`path`,{d:`M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z`,key:`j76jl0`}],[`path`,{d:`M22 10v6`,key:`1lu8f3`}],[`path`,{d:`M6 12.5V16a6 3 0 0 0 12 0v-3.5`,key:`1r8lef`}]]),B=E(`hand-coins`,[[`path`,{d:`M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17`,key:`geh8rc`}],[`path`,{d:`m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9`,key:`1fto5m`}],[`path`,{d:`m2 16 6 6`,key:`1pfhp9`}],[`circle`,{cx:`16`,cy:`9`,r:`2.9`,key:`1n0dlu`}],[`circle`,{cx:`6`,cy:`5`,r:`3`,key:`151irh`}]]),we=E(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),Te=E(`heart`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}]]),Ee=E(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),De=E(`lightbulb`,[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),Oe=E(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),ke=E(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),Ae=E(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),je=E(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Me=E(`mail-plus`,[[`path`,{d:`M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8`,key:`12jkf8`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M19 16v6`,key:`tddt3s`}],[`path`,{d:`M16 19h6`,key:`xwg31i`}]]),Ne=E(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Pe=E(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),Fe=E(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Ie=E(`message-square-reply`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`m10 8-3 3 3 3`,key:`fp6dz7`}],[`path`,{d:`M17 14v-1a2 2 0 0 0-2-2H7`,key:`1tkjnz`}]]),Le=E(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),Re=E(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),ze=E(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Be=E(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),Ve=E(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),He=E(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),Ue=E(`pen-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),We=E(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ge=E(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),Ke=E(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),qe=E(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Je=E(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Ye=E(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Xe=E(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Ze=E(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),Qe=E(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),$e=E(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),et=E(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),tt=E(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),nt=E(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),rt=E(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),it=E(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),at=E(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),ot=E(`trending-down`,[[`path`,{d:`M16 17h6v-6`,key:`t6n2it`}],[`path`,{d:`m22 17-8.5-8.5-5 5L2 7`,key:`x473p`}]]),st=E(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),ct=E(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),lt=E(`unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]),ut=E(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),dt=E(`user-check`,[[`path`,{d:`m16 11 2 2 4-4`,key:`9rsbq5`}],[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),ft=E(`user-round`,[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]]),pt=E(`users-round`,[[`path`,{d:`M18 21a8 8 0 0 0-16 0`,key:`3ypg7q`}],[`circle`,{cx:`10`,cy:`8`,r:`5`,key:`o932ke`}],[`path`,{d:`M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3`,key:`10s06x`}]]),mt=E(`video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),ht=E(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),gt=E(`workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]),_t=E(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),vt=E(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),yt=E(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),bt=_();function xt(e={}){let t=new Headers(e.headers||{});return!(e.body instanceof FormData)&&!t.has(`Content-Type`)&&t.set(`Content-Type`,`application/json`),t.has(`Accept`)||t.set(`Accept`,`application/json`),{...e,headers:t}}function St(e,t){return e?typeof e==`string`?e:e.error||e.fehler||e.message||t:t}function Ct(e=``){return String(e).trim().replace(/\/+$/,``)}var wt=Ct(void 0);function Tt(e){return e?/^https?:\/\//i.test(e)||!wt?e:e.startsWith(`/`)?`${wt}${e}`:`${wt}/${e}`:wt||`/`}async function V(e,t={}){let n=await fetch(Tt(e),xt(t)),r=n.headers.get(`content-type`)||``;if(!n.ok){let e=null;try{e=r.includes(`application/json`)?await n.json():await n.text()}catch{e=null}throw Error(St(e,`HTTP ${n.status}`))}return r.includes(`application/json`)?n.json():n}async function Et(e,t={}){let n;try{n=await fetch(Tt(e),xt(t))}catch{return null}if(n.status===404)return null;let r=n.headers.get(`content-type`)||``;if(!n.ok){let e=null;try{e=r.includes(`application/json`)?await n.json():await n.text()}catch{e=null}throw Error(St(e,`HTTP ${n.status}`))}return r.includes(`application/json`)?n.json():n}async function H(e,t){return V(e,{method:`POST`,body:JSON.stringify(t)})}async function U(e,t){return V(e,{method:`PUT`,body:JSON.stringify(t)})}async function Dt(e,t){let n={method:`DELETE`};return t!==void 0&&(n.body=JSON.stringify(t)),V(e,n)}var Ot=(0,w.createContext)(null);function kt(){let e=(0,w.useContext)(Ot);if(!e)throw Error(`useApp muss innerhalb des AppContext verwendet werden.`);return e}var At=[{key:`shell`,label:`App-Hintergrund`,hint:`Grundflaeche hinter allen Cards`},{key:`panel`,label:`Card-Flaeche`,hint:`Haupt-Cards (Bewerbungen, Jobs, Profil)`},{key:`panel-strong`,label:`Hover/Toolbar`,hint:`Aktive Tabs, Hover-Panels`},{key:`ink`,label:`Haupttext`,hint:`Ueberschriften, Werte`},{key:`muted`,label:`Sekundaertext`,hint:`Labels, Meta-Infos`},{key:`line`,label:`Borders/Linien`,hint:`Trennlinien, Card-Rahmen`},{key:`teal`,label:`Akzent Teal`,hint:`Primaere Aktionen, Highlights`},{key:`amber`,label:`Akzent Amber`,hint:`Warnungen, Badges`},{key:`coral`,label:`Akzent Coral`,hint:`Fehler, Zombie-Status`},{key:`sky`,label:`Akzent Sky`,hint:`Info, Links, Interviews`}],jt={dark:{shell:`18 20 30`,panel:`28 32 46`,"panel-strong":`36 40 56`,ink:`230 236 250`,muted:`140 152 178`,line:`68 76 100`,teal:`94 234 212`,amber:`251 191 36`,coral:`251 113 133`,sky:`129 161 255`},light:{shell:`248 249 252`,panel:`255 255 255`,"panel-strong":`242 244 248`,ink:`24 28 42`,muted:`100 112 136`,line:`220 225 235`,teal:`13 148 136`,amber:`217 119 6`,coral:`225 29 72`,sky:`37 99 235`}},Mt=[{id:`default`,label:`PBP Standard`,description:`Original-Schema mit teal/amber/coral/sky-Akzenten.`,palette:jt},{id:`modern_blue`,label:`Modern Blau`,description:`Kuehler Blauton dominant, ruhiger fuer lange Sessions.`,palette:{dark:{shell:`14 18 32`,panel:`22 30 50`,"panel-strong":`32 42 66`,ink:`228 236 252`,muted:`150 168 200`,line:`60 78 116`,teal:`94 220 230`,amber:`245 196 90`,coral:`246 130 155`,sky:`108 152 255`},light:{shell:`240 245 252`,panel:`255 255 255`,"panel-strong":`228 236 248`,ink:`20 32 56`,muted:`92 110 142`,line:`200 216 236`,teal:`20 130 154`,amber:`200 124 26`,coral:`210 50 100`,sky:`30 96 220`}}},{id:`warm_sand`,label:`Warm Sand`,description:`Warme Erdtoene, weicher als der Standard.`,palette:{dark:{shell:`30 25 22`,panel:`44 36 32`,"panel-strong":`56 46 40`,ink:`246 236 222`,muted:`176 158 138`,line:`94 76 60`,teal:`120 200 168`,amber:`248 188 92`,coral:`246 138 110`,sky:`186 168 218`},light:{shell:`250 244 234`,panel:`255 250 242`,"panel-strong":`242 232 218`,ink:`52 38 28`,muted:`128 102 78`,line:`224 208 184`,teal:`32 136 110`,amber:`200 118 28`,coral:`200 76 60`,sky:`120 96 168`}}},{id:`high_contrast`,label:`High Contrast`,description:`Maximaler Kontrast — Barrierefreiheit, Sehschwache.`,palette:{dark:{shell:`0 0 0`,panel:`16 16 20`,"panel-strong":`30 30 38`,ink:`255 255 255`,muted:`200 204 214`,line:`120 124 140`,teal:`0 255 200`,amber:`255 220 60`,coral:`255 100 110`,sky:`120 180 255`},light:{shell:`255 255 255`,panel:`255 255 255`,"panel-strong":`240 240 244`,ink:`0 0 0`,muted:`60 64 76`,line:`120 124 140`,teal:`0 110 96`,amber:`168 96 0`,coral:`190 16 56`,sky:`20 64 200`}}}],Nt=`pbp-theme-mode`,Pt=`pbp-theme-custom`,Ft=`pbp-theme-preset`;function It(){try{let e=localStorage.getItem(Ft);return e&&Mt.some(t=>t.id===e)?e:`default`}catch{return`default`}}function Lt(e){try{localStorage.setItem(Ft,e)}catch{}}function Rt(e){let t=Mt.find(t=>t.id===e);return t?t.palette:jt}function zt(e){if(!e)return`#000000`;let t=e.trim().split(/\s+/).map(e=>Math.max(0,Math.min(255,parseInt(e,10)||0)));return t.length===3?`#`+t.map(e=>e.toString(16).padStart(2,`0`)).join(``):`#000000`}function Bt(e){let t=/^#?([0-9a-f]{6})$/i.exec(e||``);if(!t)return null;let n=parseInt(t[1],16);return`${n>>16&255} ${n>>8&255} ${n&255}`}function Vt(){try{let e=localStorage.getItem(Nt);return e===`light`||e===`dark`||e===`system`?e:`system`}catch{return`system`}}function Ht(e){try{localStorage.setItem(Nt,e)}catch{}}function Ut(){try{let e=localStorage.getItem(Pt);if(!e)return{light:{},dark:{}};let t=JSON.parse(e);return{light:t?.light&&typeof t.light==`object`?t.light:{},dark:t?.dark&&typeof t.dark==`object`?t.dark:{}}}catch{return{light:{},dark:{}}}}function Wt(e){try{localStorage.setItem(Pt,JSON.stringify(e))}catch{}}function Gt(e){return e===`light`||e===`dark`?e:typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function Kt(e,t,n){if(typeof document>`u`)return;let r=Gt(e),i=document.documentElement;i.setAttribute(`data-theme`,r);let a=n&&n!==`default`?Rt(n)[r]||{}:null,o=t&&t[r]||{};At.forEach(({key:e})=>{let t=`--color-${e}`;o[e]?i.style.setProperty(t,o[e]):a&&a[e]?i.style.setProperty(t,a[e]):i.style.removeProperty(t)})}var qt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),W=o(((e,t)=>{t.exports=qt()}))(),Jt=class extends w.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){typeof console<`u`&&console.error&&console.error(`PBP-Render-Fehler abgefangen:`,e,t)}handleRetry=()=>this.setState({error:null});handleReload=()=>{typeof window<`u`&&window.location.reload()};render(){let{error:e}=this.state;return e?(0,W.jsx)(`div`,{className:`p-6`,children:(0,W.jsxs)(`div`,{className:`glass-card-strong max-w-2xl rounded-2xl border border-coral/25 p-6`,children:[(0,W.jsx)(`h2`,{className:`text-lg font-semibold text-ink`,children:`Dieser Bereich ist abgestuerzt`}),(0,W.jsx)(`p`,{className:`mt-2 text-sm leading-snug text-muted/70`,children:`In diesem Tab ist ein Anzeigefehler aufgetreten. Der Rest von PBP laeuft weiter — du kannst links einen anderen Bereich waehlen oder es hier nochmal versuchen. Deine Daten sind davon nicht betroffen.`}),(0,W.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto whitespace-pre-wrap rounded bg-black/20 p-2 font-mono text-[11px] text-coral/80`,children:String(e?.message||e)}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:this.handleRetry,className:`rounded-lg border border-white/10 px-3 py-1.5 text-sm text-ink transition hover:bg-white/5`,children:`Nochmal versuchen`}),(0,W.jsx)(`button`,{type:`button`,onClick:this.handleReload,className:`rounded-lg border border-white/10 px-3 py-1.5 text-sm text-ink transition hover:bg-white/5`,children:`Seite neu laden`})]})]})}):this.props.children}},Yt=s({analyzeUploadedDocuments:()=>tn,createFileSignature:()=>Xt,isEmailFile:()=>Qt,uploadDocumentFile:()=>$t,uploadEmailFile:()=>en});function Xt(e){return`${e.name}::${e.size}::${e.lastModified}::${e.webkitRelativePath||``}`}var Zt=new Set([`.msg`,`.eml`]);function Qt(e){let t=(e?.name||``).toLowerCase();return Zt.has(t.slice(t.lastIndexOf(`.`)))}async function $t(e,t=`sonstiges`,n={}){let r=new FormData;return r.append(`file`,e),r.append(`doc_type`,t),n.applicationId&&r.append(`link_application_id`,String(n.applicationId)),n.positionId&&r.append(`position_id`,String(n.positionId)),V(`/api/documents/upload`,{method:`POST`,body:r})}async function en(e){let t=new FormData;return t.append(`file`,e),V(`/api/emails/upload`,{method:`POST`,body:t})}async function tn(){return H(`/api/dokumente-analysieren`,{})}var nn=s({GLOBAL_FILE_DRAG_STATE_EVENT:()=>an,GLOBAL_FILE_DROP_EVENT:()=>rn,extractDroppedFiles:()=>un,isFileDragEvent:()=>ln}),rn=`pbp:global-file-drop`,an=`pbp:global-file-drag-state`;function on(e){return new Promise(t=>{e.file(e=>t(e||null),()=>t(null))})}function sn(e){return new Promise(t=>{e.readEntries(e=>t(e||[]),()=>t([]))})}async function cn(e){if(!e)return[];if(e.isFile){let t=await on(e);return t?[t]:[]}if(!e.isDirectory)return[];let t=e.createReader(),n=[];for(;;){let e=await sn(t);if(!e.length)break;for(let t of e){let e=await cn(t);n.push(...e)}}return n}function ln(e){let t=e?.dataTransfer;return t?Array.from(t.items||[]).some(e=>e.kind===`file`)?!0:Array.from(t.types||[]).includes(`Files`):!1}async function un(e){try{let t=Array.from(e?.items||[]).map(e=>e.webkitGetAsEntry?.()).filter(Boolean);if(!t.length)return Array.from(e?.files||[]).filter(e=>e&&e.name);let n=[];for(let e of t){let t=await cn(e);n.push(...t)}return(n.length?n:Array.from(e?.files||[])).filter(e=>e&&e.name)}catch{return Array.from(e?.files||[]).filter(e=>e&&e.name)}}function dn({hasActiveProfile:e,profileName:t,refreshChrome:n,pushToast:r}){let i=(0,w.useRef)(0),a=(0,w.useRef)(!1),o=(0,w.useRef)(!1),s=(0,w.useEffectEvent)(e=>{let t=!!e;o.current!==t&&(o.current=t,window.dispatchEvent(new CustomEvent(an,{detail:{active:t}})))}),c=(0,w.useEffectEvent)(()=>{i.current=0,s(!1)}),l=(0,w.useEffectEvent)(async i=>{if(a.current){r(`Es wird bereits ein Upload verarbeitet. Bitte kurz warten.`,`neutral`);return}let o=[],s=new Set;for(let e of i||[]){if(!e||!e.name)continue;let t=Xt(e);s.has(t)||(s.add(t),o.push(e))}if(!o.length)return;let c=new CustomEvent(rn,{cancelable:!0,detail:{files:o}});if(window.dispatchEvent(c),c.defaultPrevented)return;if(!e){r(`Bitte zuerst ein Profil aktivieren, bevor Dokumente hochgeladen werden.`,`danger`);return}a.current=!0;let l=o.filter(e=>Qt(e)),u=o.filter(e=>!Qt(e)),d=0,f=0,p=0;for(let e of l)try{let t=await en(e);p+=1;let n=t.match?.application?` → ${t.match.application.company}`:``,i=t.meetings?.length?` | ${t.meetings.length} Termin(e)`:``;r(`E-Mail importiert: ${t.parsed?.subject||e.name}${n}${i}`,`success`)}catch(t){f+=1,r(`E-Mail-Import fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}for(let e of u)try{await $t(e),d+=1}catch(t){f+=1,r(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}a.current=!1,await n({forceReload:!0});let m=d+p;if(m>0&&f===0){u.length>0&&r(`${d} Datei(en) für ${t||`das aktive Profil`} hochgeladen.`,`success`);return}if(m>0&&f>0){r(`${m} Datei(en) erfolgreich, ${f} fehlgeschlagen.`,`amber`);return}m===0&&f>0&&r(`Keine Datei konnte verarbeitet werden.`,`danger`)});return(0,w.useEffect)(()=>{function e(e){ln(e)&&(e.preventDefault(),i.current+=1,s(!0))}function t(e){ln(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,s(!0))}function n(e){ln(e)&&(e.preventDefault(),i.current=Math.max(0,i.current-1),i.current===0&&s(!1))}async function r(e){if(ln(e)){if(e.defaultPrevented){c();return}e.preventDefault(),c(),await l(await un(e.dataTransfer))}}return window.addEventListener(`dragenter`,e),window.addEventListener(`dragover`,t),window.addEventListener(`dragleave`,n),window.addEventListener(`drop`,r),()=>{window.removeEventListener(`dragenter`,e),window.removeEventListener(`dragover`,t),window.removeEventListener(`dragleave`,n),window.removeEventListener(`drop`,r),s(!1)}},[c,l,s]),null}var fn=3e3,pn=3e4;async function mn(){try{let e=await fetch(`/api/jobsuche/running`);return e.ok?await e.json():null}catch{return null}}function hn({onNavigateToJobs:e}){let[t,n]=(0,w.useState)({running:!1,progress:0,message:``}),[r,i]=(0,w.useState)(null),a=(0,w.useRef)(!1);if((0,w.useEffect)(()=>{let e=!1,t=null,r=async()=>{if(e)return;let o=await mn();if(e)return;if(o?.running)n({running:!0,progress:o.progress||0,message:o.message||``,jobId:o.job_id}),a.current=!0;else{if(a.current){a.current=!1;try{let e=await fetch(`/api/jobsuche/last`);if(e.ok){let t=await e.json();t?.neue_stellen!==void 0&&i({count:t.neue_stellen,timeoutQuellen:t.timeout_quellen||0,at:Date.now()})}}catch{}}n({running:!1,progress:0,message:``})}let s=o?.running?fn:pn;t=window.setTimeout(r,s)};return r(),()=>{e=!0,t&&window.clearTimeout(t)}},[]),t.running)return(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg bg-iris/15 px-2 py-1.5 text-[11px] font-medium text-iris`,title:t.message||`Jobsuche laeuft im Hintergrund`,children:[(0,W.jsx)(je,{className:`h-3 w-3 animate-spin`}),(0,W.jsxs)(`span`,{children:[`Jobsuche `,t.progress>0?`${t.progress}%`:`laeuft…`]})]});if(r){let t=r.timeoutQuellen>0,n=t?ct:ae,a=t?`bg-amber/15 text-amber hover:bg-amber/25`:`bg-teal/15 text-teal hover:bg-teal/25`,o=t?`Fertig — ${r.count} neu, ${r.timeoutQuellen} Timeout`:`Fertig — ${r.count} neue Stellen`;return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{i(null),e?.()},className:`flex items-center gap-1.5 rounded-lg px-2 py-1.5 text-[11px] font-medium cursor-pointer transition-colors ${a}`,title:`Klicken: zu Stellen wechseln (Badge zuruecksetzen)`,children:[(0,W.jsx)(n,{className:`h-3 w-3`}),(0,W.jsx)(`span`,{children:o})]})}return null}var gn=h(),_n=[`dashboard`,`profil`,`dokumente`,`stellen`,`bewerbungen`,`kontakte`,`kalender`,`statistiken`,`einstellungen`],vn=[{value:`in_vorbereitung`,label:`In Vorbereitung`},{value:`entwurf`,label:`Entwurf`},{value:`beworben`,label:`Beworben`},{value:`eingangsbestaetigung`,label:`Eingangsbestätigung`},{value:`interview`,label:`Interview`},{value:`zweitgespraech`,label:`Zweitgespräch`},{value:`interview_abgeschlossen`,label:`Interview abgeschlossen`},{value:`warte_auf_rueckmeldung`,label:`Warte auf Rückmeldung`},{value:`angebot`,label:`Angebot`},{value:`angenommen`,label:`Angenommen`},{value:`abgelehnt`,label:`Abgelehnt`},{value:`zurueckgezogen`,label:`Zurückgezogen`},{value:`abgelaufen`,label:`Abgelaufen`}];function G(...e){return e.filter(Boolean).join(` `)}function yn(){let e=window.location.hash.replace(/^#/,``).trim()||`dashboard`;return _n.includes(e)?e:`dashboard`}function bn(e){if(!e)return`Keine Angabe`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`}).format(t)}function xn(e){if(!e)return`Keine Angabe`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(t)}function Sn(e,t=`EUR`){if(e==null||e===``)return`Keine Angabe`;let n=Number(e);return Number.isNaN(n)?String(e):new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(n)+` ${t}`}function Cn(e){switch(e){case`in_vorbereitung`:return`violet`;case`angebot`:case`angenommen`:return`success`;case`zweitgespraech`:return`success`;case`interview_abgeschlossen`:return`teal`;case`interview`:case`eingangsbestaetigung`:return`sky`;case`warte_auf_rueckmeldung`:return`amber`;case`abgelehnt`:case`zurueckgezogen`:return`danger`;case`abgelaufen`:return`neutral`;case`beworben`:return`amber`;case`bearbeitet`:return`neutral`;default:return`neutral`}}function wn(e){switch(e){case`green`:return`success`;case`yellow`:return`amber`;case`red`:return`danger`;default:return`sky`}}function Tn(e){return{lebenslauf:`Lebenslauf`,lebenslauf_vorlage:`Lebenslauf (Vorlage)`,anschreiben:`Anschreiben`,anschreiben_vorlage:`Anschreiben (Vorlage)`,zeugnis:`Zeugnis`,zertifikat:`Zertifikat`,sonstiges:`Sonstiges`}[e]||e||`Unbekannt`}function En(e){let t=vn.find(t=>t.value===e);return t?t.label:{eingangsbestaetigung:`Eingangsbestätigung`,notiz:`Notiz`,bearbeitet:`Bearbeitet`}[e]||e||`Unbekannt`}function Dn(e){if(!e)return``;let t=String(e).trim();if(/^\d{4}-\d{2}$/.test(t))return t;if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,7);let n=t.match(/^(\d{1,2})\/(\d{4})$/);if(n)return`${n[2]}-${n[1].padStart(2,`0`)}`;let r=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/);return r?`${r[3]}-${r[2].padStart(2,`0`)}`:/^\d{4}$/.test(t)?`${t}-01`:t}async function On(e){await navigator.clipboard.writeText(e)}var kn=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/;function An(e){if(!e)return``;let t=String(e).match(kn);return t?t[0]:``}function jn({to:e=``,subject:t=``,body:n=``,cc:r=``,bcc:i=``}={}){let a=An(e);if(!a)return``;let o=[];return t&&o.push(`subject=${encodeURIComponent(t)}`),n&&o.push(`body=${encodeURIComponent(n)}`),r&&o.push(`cc=${encodeURIComponent(An(r)||r)}`),i&&o.push(`bcc=${encodeURIComponent(An(i)||i)}`),`mailto:${a}${o.length?`?${o.join(`&`)}`:``}`}function Mn(e,t){let n=An(e);if(!n)return``;let r=(t||``).trim();return jn({to:n,subject:r&&!/^(AW|RE):/i.test(r)?`AW: ${r}`:r||`AW:`})}function Nn(e=``){return e?e.includes(`showPage('profil')`)?e.includes(`showPositionForm`)?{page:`profil`,composer:`position`}:e.includes(`showSkillForm`)?{page:`profil`,composer:`skill`}:e.includes(`showEducationForm`)?{page:`profil`,composer:`education`}:{page:`profil`}:e.includes(`showPage('bewerbungen')`)?{page:`bewerbungen`}:e.includes(`showPage('stellen')`)?{page:`stellen`}:e.includes(`showPage('einstellungen')`)?{page:`einstellungen`}:e.includes(`wizardDocUpload`)?{page:`profil`,composer:`document`}:null:null}function Pn(e,t=180){let n=(e||``).replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t).trim()}...`}function Fn(e){return String(e||``).normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[.,;:!?]+/g,``).replace(/\s+/g,` `).trim()}var In=new Set([`kompetenzen`,`und kompetenzen`,`kenntnisse und kompetenzen`,`fahigkeiten und kompetenzen`,`personliche fahigkeiten und kompetenzen`,`skills`]);function Ln(e){let t=String(e||``).replace(/\s+/g,` `).trim();return!t||In.has(Fn(t))?``:t}function Rn(e){if(!e)return[];let t=[],n=e.positions||[],r=e.education||[],i=e.documents||[],a=n.find(e=>e.is_current)||n[0],o=[e.city,e.country].filter(Boolean).join(`, `),s=i.filter(e=>e.extraction_status&&e.extraction_status!==`nicht_extrahiert`).length;return e.name&&t.push(`Name: ${e.name}`),e.email&&t.push(`E-Mail: ${e.email}`),e.phone&&t.push(`Telefon: ${e.phone}`),o&&t.push(`Standort: ${o}`),e.summary&&t.push(`Ein Kurzprofil ist bereits vorhanden.`),(a?.title||a?.company)&&t.push(`Beruflicher Fokus: ${a.title||`Rolle`}${a.company?` bei ${a.company}`:``}.`),n.length&&t.push(`${n.length} berufliche Station(en) sind bereits hinterlegt.`),r.length&&t.push(`${r.length} Ausbildungsstation(en) sind vorhanden.`),i.length&&t.push(`${i.length} Dokument(e) liegen bereits im Profil.`),s>0&&t.push(s===1?`1 Dokument wurde bereits automatisiert ausgewertet.`:`${s} Dokument(e) wurden bereits automatisiert ausgewertet.`),e.suggested_job_titles?.length&&t.push(`Vorgeschlagene Jobtitel: ${e.suggested_job_titles.slice(0,3).map(e=>e.title).join(`, `)}.`),t}function zn(e){let t=(e||[]).findIndex(e=>!e.done);return t===-1?Math.max((e||[]).length-1,0):t}var Bn={primary:`bg-teal/85 text-shell font-semibold hover:bg-teal/95`,secondary:`border border-white/7 bg-white/[0.04] text-ink hover:bg-white/[0.07] hover:border-white/10`,ghost:`bg-transparent text-muted hover:text-ink hover:bg-white/[0.04]`,danger:`bg-coral/80 text-shell font-semibold hover:bg-coral/90`,subtle:`border border-white/5 bg-white/[0.03] text-muted hover:bg-white/[0.06] hover:text-ink`},Vn={sm:`h-9 px-3.5 text-[13px]`,md:`h-10 px-4 text-sm`,lg:`h-11 px-5 text-sm`},Hn=`inline-flex items-center justify-center gap-2 rounded-xl font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal/15 focus-visible:ring-offset-1 focus-visible:ring-offset-shell disabled:cursor-not-allowed disabled:opacity-50 transition-colors duration-150 ease-out`;function K({className:e,variant:t=`primary`,size:n=`md`,type:r=`button`,...i}){return(0,W.jsx)(`button`,{type:r,className:G(Hn,Bn[t],Vn[n],e),...i})}function Un({className:e,variant:t=`secondary`,size:n=`md`,children:r,...i}){return(0,W.jsx)(`a`,{className:G(Hn,Bn[t],Vn[n],e),...i,children:r})}function q({className:e,children:t,...n}){return(0,W.jsx)(`section`,{className:G(`glass-card rounded-2xl p-5`,e),...n,children:t})}function Wn({title:e,description:t,actions:n,eyebrow:r}){return(0,W.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`max-w-3xl space-y-1.5`,children:[r?(0,W.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-[0.2em] text-teal/80`,children:r}):null,(0,W.jsx)(`h1`,{className:`font-display text-2xl font-semibold tracking-tight text-ink sm:text-3xl`,children:e}),t?(0,W.jsx)(`p`,{className:`max-w-2xl text-sm text-muted/80`,children:t}):null]}),n?(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:n}):null]})}function Gn({title:e,description:t,action:n}){return(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:e}),t?(0,W.jsx)(`p`,{className:`text-[13px] text-muted/70`,children:t}):null]}),n]})}function Kn({label:e,value:t,note:n,tone:r=`neutral`}){return(0,W.jsxs)(`div`,{className:G(`glass-card-soft rounded-2xl p-4`,{neutral:`border-white/5`,sky:`border-sky/12`,success:`border-teal/12`,amber:`border-amber/12`,danger:`border-coral/12`}[r],{neutral:``,sky:``,success:``,amber:``,danger:``}[r]),children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-[0.18em] text-muted/70`,children:e}),(0,W.jsx)(`p`,{className:`mt-2 text-2xl font-semibold tracking-tight text-ink`,children:t}),n?(0,W.jsx)(`p`,{className:`mt-1.5 text-[13px] text-muted/60`,children:n}):null]})}function J({children:e,tone:t=`neutral`,className:n}){return(0,W.jsx)(`span`,{className:G(`inline-flex items-center rounded-lg border px-2.5 py-0.5 text-[11px] font-semibold tracking-wide`,{neutral:`border-white/8 bg-white/5 text-muted`,sky:`border-sky/15 bg-sky/8 text-sky`,success:`border-teal/15 bg-teal/8 text-teal`,amber:`border-amber/15 bg-amber/8 text-amber`,danger:`border-coral/15 bg-coral/8 text-coral`}[t],n),children:e})}function Y({label:e,hint:t,htmlFor:n,children:r,className:i}){return(0,W.jsxs)(`label`,{className:G(`grid gap-1.5 text-sm`,i),htmlFor:n,children:[(0,W.jsx)(`span`,{className:`text-[13px] font-medium text-ink/80`,children:e}),r,t?(0,W.jsx)(`span`,{className:`text-[12px] text-muted/60`,children:t}):null]})}var qn=`glass-input disabled:cursor-not-allowed disabled:opacity-50`;function X({className:e,...t}){return(0,W.jsx)(`input`,{className:G(qn,e),...t})}function Jn({className:e,rows:t=4,...n}){return(0,W.jsx)(`textarea`,{className:G(qn,`min-h-28 resize-y`,e),rows:t,...n})}function Yn({tags:e=[],onChange:t,placeholder:n=`Eingabe + Enter`,tone:r=`neutral`}){let[i,a]=(0,w.useState)(``),o=(0,w.useRef)(null),s={neutral:`border-white/8 bg-white/5 text-muted`,sky:`border-sky/15 bg-sky/8 text-sky`,success:`border-teal/15 bg-teal/8 text-teal`,amber:`border-amber/15 bg-amber/8 text-amber`,danger:`border-coral/15 bg-coral/8 text-coral`};function c(n){let r=n.trim();r&&!e.includes(r)&&t([...e,r]),a(``)}function l(n){t(e.filter((e,t)=>t!==n))}function u(e){(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),c(i))}function d(n){n.preventDefault();let r=n.clipboardData.getData(`text`).split(/[\n,;]+/).map(e=>e.trim()).filter(t=>t&&!e.includes(t));r.length>0&&t([...e,...r])}return(0,W.jsxs)(`div`,{className:`glass-input flex min-h-11 cursor-text flex-wrap items-center gap-1.5 !py-2`,onClick:()=>o.current?.focus(),children:[e.map((e,t)=>(0,W.jsxs)(`span`,{className:G(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-[12px] font-medium leading-tight select-none`,s[r]),onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),children:[e,(0,W.jsx)(`span`,{role:`button`,tabIndex:0,className:`ml-0.5 cursor-pointer rounded-sm p-0.5 opacity-60 transition-opacity hover:opacity-100`,onClick:e=>{e.stopPropagation(),l(t)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),l(t))},children:(0,W.jsx)(vt,{size:10})})]},`${e}-${t}`)),(0,W.jsx)(`input`,{ref:o,type:`text`,className:`min-w-[8rem] flex-1 border-none bg-transparent text-[13px] text-ink outline-none placeholder:text-muted/40`,value:i,onChange:e=>a(e.target.value),onKeyDown:u,onPaste:d,onBlur:()=>{i.trim()&&c(i)},placeholder:e.length===0?n:``})]})}function Xn({className:e,children:t,value:n,onChange:r,disabled:i,...a}){let[o,s]=(0,w.useState)(!1),c=(0,w.useRef)(null),l=(0,w.useRef)(null),[u,d]=(0,w.useState)(null),f=[];w.Children.forEach(t,e=>{e?.type===`option`&&f.push({value:e.props.value??``,label:e.props.children??``,disabled:e.props.disabled})});let p=f.find(e=>String(e.value)===String(n))?.label??f[0]?.label??``;(0,w.useEffect)(()=>{if(!o||!c.current)return;function e(){let e=c.current.getBoundingClientRect(),t=window.innerHeight-e.bottom<200&&e.top>200;d({position:`fixed`,left:e.left,minWidth:e.width,zIndex:9999,...t?{bottom:window.innerHeight-e.top+6}:{top:e.bottom+6}})}return e(),window.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e)}},[o]),(0,w.useEffect)(()=>{if(!o)return;function e(e){c.current?.contains(e.target)||l.current?.contains(e.target)||s(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[o]),(0,w.useEffect)(()=>{if(!o)return;function e(e){e.key===`Escape`&&s(!1)}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o]);function m(e){r?.({target:{value:e}}),s(!1)}return(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`button`,{ref:c,type:`button`,disabled:i,className:G(qn,`flex cursor-pointer items-center gap-2 text-left`,e),onClick:()=>s(e=>!e),...a,children:[(0,W.jsx)(`span`,{className:`flex-1 truncate`,children:p}),(0,W.jsx)(L,{size:14,className:G(`shrink-0 text-muted/50 transition-transform duration-200`,o&&`rotate-180`)})]}),o&&u&&(0,gn.createPortal)((0,W.jsx)(`div`,{ref:l,className:`soft-scrollbar overflow-y-auto rounded-xl border border-white/10 shadow-2xl backdrop-blur-2xl animate-rise`,style:{...u,background:`rgba(30, 34, 52, 0.95)`,maxHeight:`14rem`,overscrollBehavior:`contain`},onWheel:e=>{e.stopPropagation()},children:(0,W.jsx)(`div`,{className:`p-1`,children:f.map(e=>(0,W.jsx)(`button`,{type:`button`,disabled:e.disabled,className:G(`flex w-full items-center rounded-lg px-3 py-2 text-[13px] text-left transition-colors duration-150`,String(e.value)===String(n)?`bg-teal/10 font-medium text-teal`:`text-muted hover:bg-white/[0.06] hover:text-ink`),onClick:()=>m(e.value),children:e.label},e.value))})}),document.body)]})}function Zn({className:e,type:t=`checkbox`,...n}){return(0,W.jsxs)(`label`,{className:G(`inline-flex h-5 w-5 shrink-0 cursor-pointer select-none items-center justify-center align-middle`,e),children:[(0,W.jsx)(`input`,{type:t,className:`peer sr-only`,...n}),(0,W.jsx)(`span`,{"aria-hidden":`true`,className:G(`pointer-events-none inline-flex h-5 w-5 items-center justify-center rounded-md border-2 border-white/45 bg-panelstrong/80 text-transparent transition-colors`,`peer-checked:border-teal peer-checked:bg-teal peer-checked:text-shell peer-focus-visible:ring-2 peer-focus-visible:ring-teal/35`,`peer-disabled:cursor-not-allowed peer-disabled:opacity-60`),children:(0,W.jsx)(`svg`,{viewBox:`0 0 14 14`,className:`h-3 w-3`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,W.jsx)(`path`,{d:`M3 7.5 5.8 10.2 11 4.8`})})})]})}function Qn({title:e,description:t,action:n,className:r}){return(0,W.jsx)(q,{className:G(`glass-card-muted border-dashed text-center`,r),children:(0,W.jsxs)(`div`,{className:`mx-auto max-w-md space-y-2 py-8`,children:[(0,W.jsx)(`h3`,{className:`text-base font-semibold text-ink/80`,children:e}),(0,W.jsx)(`p`,{className:`text-[13px] text-muted/60`,children:t}),n?(0,W.jsx)(`div`,{className:`flex justify-center pt-2`,children:n}):null]})})}function $n({label:e=`Lade Daten...`}){return(0,W.jsx)(q,{className:`flex min-h-48 items-center justify-center`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-sm text-muted/70`,children:[(0,W.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-white/8 border-t-teal/70`}),e]})})}function er({open:e,title:t,description:n,onClose:r,children:i,footer:a,size:o=`lg`}){return(0,w.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&r()}return document.body.classList.add(`overflow-hidden`),window.addEventListener(`keydown`,t),()=>{document.body.classList.remove(`overflow-hidden`),window.removeEventListener(`keydown`,t)}},[e,r]),e?(0,gn.createPortal)((0,W.jsx)(`div`,{className:`glass-overlay fixed inset-0 z-[1000] flex items-center justify-center px-4 py-6`,onMouseDown:e=>{e.target===e.currentTarget&&r()},children:(0,W.jsxs)(`div`,{className:G(`glass-card-strong max-h-[90vh] w-full overflow-hidden rounded-3xl animate-rise`,o===`xl`?`max-w-5xl`:o===`lg`?`max-w-4xl`:`max-w-2xl`),children:[(0,W.jsxs)(`div`,{className:`border-b border-white/6 px-6 py-5`,children:[(0,W.jsx)(`h2`,{className:`text-xl font-semibold text-ink`,children:t}),n?(0,W.jsx)(`p`,{className:`mt-1.5 text-[13px] text-muted/70`,children:n}):null]}),(0,W.jsx)(`div`,{className:`soft-scrollbar max-h-[calc(90vh-10rem)] overflow-y-auto px-6 py-5`,children:i}),a?(0,W.jsx)(`div`,{className:`border-t border-white/6 px-6 py-4`,children:a}):null]})}),document.body):null}function tr({toasts:e,onDismiss:t}){return(0,W.jsx)(`div`,{className:`pointer-events-none fixed right-4 top-4 z-[1200] flex w-full max-w-sm flex-col gap-2`,children:e.map(e=>(0,W.jsx)(`div`,{className:G(`pointer-events-auto rounded-xl border px-4 py-3 backdrop-blur-xl animate-rise`,e.tone===`danger`?`border-coral/12 bg-coral/8 text-coral`:e.tone===`success`?`border-teal/12 bg-teal/8 text-teal`:`border-sky/12 bg-sky/8 text-sky`),children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[13px] font-medium`,children:e.message}),e.action&&(0,W.jsx)(`button`,{type:`button`,className:`mt-1.5 rounded-lg bg-white/10 px-3 py-1 text-xs font-medium hover:bg-white/20 transition-colors`,onClick:()=>{e.action.onClick?.(),t(e.id)},children:e.action.label})]}),(0,W.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-lg p-1 text-current/50 transition hover:bg-white/6 hover:text-current`,onClick:()=>t(e.id),children:(0,W.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,children:(0,W.jsx)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`})})})]})},e.id))})}function nr(e){return e===`fehler`?`danger`:e===`fertig`?`success`:`sky`}function rr(e){if(!e||!e.last_run)return null;let t=e.last_count??0,n=e.avg_time_s?` / ${e.avg_time_s.toFixed(1)}s`:``;switch(e.badge){case`ok`:return(0,W.jsxs)(J,{tone:`success`,className:`gap-1`,title:`Letzter Lauf: ${t} Treffer${n}`,children:[(0,W.jsx)(ae,{size:10}),t,` Treffer`,n]});case`stumm`:return(0,W.jsxs)(J,{tone:`amber`,className:`gap-1`,title:`Stumm seit ${e.consecutive_silent} Lauf(en)${e.last_status_detail?` — ${e.last_status_detail}`:``}`,children:[(0,W.jsx)(ht,{size:10}),`0 Treffer`,n]});case`leer`:return(0,W.jsxs)(J,{tone:`neutral`,className:`gap-1`,title:`Letzter Lauf brachte keine Treffer`,children:[`0 Treffer`,n]});case`fehler`:return(0,W.jsxs)(J,{tone:`danger`,className:`gap-1`,title:`${e.consecutive_failures} Fehler in Folge`,children:[(0,W.jsx)(ce,{size:10}),`Fehler`]});case`deaktiviert`:return(0,W.jsx)(J,{tone:`neutral`,className:`gap-1`,title:`Automatisch deaktiviert nach mehreren stillen Laeufen`,children:`Auto-Aus`});default:return null}}function ir(e){return e===`schnell`?(0,W.jsxs)(J,{tone:`success`,className:`gap-1`,children:[(0,W.jsx)(yt,{size:10}),`Schnell`]}):e===`langsam`?(0,W.jsxs)(J,{tone:`amber`,className:`gap-1`,children:[(0,W.jsx)(fe,{size:10}),`Browser`]}):e===`manuell`?(0,W.jsx)(J,{tone:`neutral`,className:`gap-1`,children:`Manuell`}):null}function ar({sources:e,loginJobs:t={},onToggle:n,onStartLogin:r}){return(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsxs)(`details`,{className:`rounded-xl border border-sky/20 bg-sky/5 px-4 py-3 mb-1 group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-xs text-muted list-none flex items-center justify-between`,children:[(0,W.jsxs)(`span`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Tipp:`}),` Vier Wege, eine Stelle ins PBP zu bekommen — auf Pfeil klicken zum Ausklappen.`]}),(0,W.jsx)(`span`,{className:`text-muted/60 group-open:rotate-90 transition-transform`,children:`▶`})]}),(0,W.jsxs)(`div`,{className:`mt-3 space-y-2 text-xs text-muted`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`1. Eingebauter Scraper`}),` — Default-Weg.`,` `,(0,W.jsxs)(J,{tone:`success`,className:`gap-1 inline-flex`,children:[(0,W.jsx)(yt,{size:9}),`Schnell`]}),` `,`Quellen laufen parallel und liefern in Sekunden.`,` `,(0,W.jsxs)(J,{tone:`amber`,className:`gap-1 inline-flex`,children:[(0,W.jsx)(fe,{size:9}),`Browser`]}),` `,`Quellen brauchen Google Chrome und 1-3 Minuten.`,` `,(0,W.jsx)(`a`,{href:`https://www.google.com/chrome/`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky underline`,children:`Chrome herunterladen`})]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`2. Claude in Chrome (Browser-Extension)`}),` — wenn der eingebaute Scraper streikt (Login, dynamische Seiten, Captcha), kann Claude in Chrome die Seite direkt im Browser durchgehen und Stellen ins PBP uebernehmen. Funktioniert besonders gut bei XING und LinkedIn.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`3. URL kopieren und in den Claude-Chat einfuegen`}),` — schnellster Weg fuer Einzel-Stellen. Anzeige im Browser oeffnen, URL kopieren, Claude im Chat schicken: `,(0,W.jsx)(`em`,{children:`„Leg diese Stelle bitte an: "`}),`. Claude liest die Anzeige selbst aus und legt sie inklusive Beschreibung, Firma und Anforderungen an.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsxs)(`strong`,{className:`text-ink`,children:[`4. Manuell ueber `,(0,W.jsx)(`code`,{children:`stelle_manuell_anlegen`})]}),` — wenn keiner der oberen Wege funktioniert (Stelle nur als PDF/Mail/Screenshot vorhanden). Claude bittest du dann, eine Stelle aus den Eckdaten anzulegen.`]}),(0,W.jsx)(`p`,{className:`pt-2 text-muted/70 border-t border-sky/10`,children:`Claude kann uebrigens auch dein Profil auf Jobportalen wie XING oder StepStone aktualisieren — frag einfach danach!`})]})]}),e.map(e=>{let i=t[e.key],a=i?.status===`running`,o=i?.status===`fertig`,s=!!e.defekt;return(0,W.jsx)(q,{"data-source-key":e.key,className:`glass-card-soft rounded-xl shadow-none ${s?`opacity-60`:``}`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-sm font-semibold ${s?`text-muted line-through decoration-muted/40`:`text-ink`}`,children:e.name}),s?(0,W.jsxs)(J,{tone:`danger`,className:`gap-1`,children:[(0,W.jsx)(j,{size:10}),`Defekt`]}):(0,W.jsx)(J,{tone:e.active?`success`:`neutral`,children:e.veraltet?`Manuell`:e.active?`Aktiv`:`Inaktiv`}),ir(e.geschwindigkeit),rr(e.health),e.beta?(0,W.jsx)(J,{tone:`amber`,children:`Beta`}):null,e.login_erforderlich?(0,W.jsx)(J,{tone:`amber`,children:`Login noetig`}):null,i?.status?(0,W.jsx)(J,{tone:nr(i.status),children:i.status===`running`?`Login laeuft`:i.status===`fertig`?`Session bereit`:`Login offen`}):null]}),(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:e.beschreibung}),s?(0,W.jsxs)(`div`,{className:`mt-1 rounded-lg border border-danger/30 bg-danger/5 px-3 py-2 space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,W.jsx)(j,{size:13,className:`shrink-0 text-danger`}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-danger`,children:`Automatische Suche aktuell nicht moeglich`})]}),e.defekt_grund?(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:e.defekt_grund}):null,e.manueller_fallback?(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Workaround:`}),` Per Chrome-Extension`,(0,W.jsxs)(`a`,{href:String(e.manueller_fallback).split(` `)[0],target:`_blank`,rel:`noopener noreferrer`,className:`ml-1 inline-flex items-center gap-1 text-sky underline`,children:[(String(e.manueller_fallback).split(` `)[0]||``).replace(/^https?:\/\//,``).slice(0,50),(0,W.jsx)(ve,{size:10})]}),` `,`oeffnen und passende Stellen via `,(0,W.jsx)(`code`,{className:`text-ink`,children:`stelle_manuell_anlegen`}),` nach PBP uebernehmen.`]}):null]}):null,!s&&e.login_erforderlich&&!e.beta?(0,W.jsx)(`p`,{className:`text-xs text-amber`,children:`Beim ersten Start oeffnet sich ein Browser-Fenster zur Anmeldung. Danach laeuft die Suche mit gespeicherter Session weiter.`}):null,!s&&e.warnung?(0,W.jsxs)(`div`,{className:`mt-1 rounded-lg border border-amber/30 bg-amber/10 px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,W.jsx)(ct,{size:13,className:`shrink-0 text-amber`}),(0,W.jsx)(`span`,{className:`text-xs font-semibold text-amber`,children:e.beta?`Beta-Feature`:`Hinweis`})]}),e.warnung.split(` -`).filter(Boolean).map((e,t)=>(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:e},t))]}):null,i?.message?(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:i.message}):null,!s&&e.active&&e.profil_optimierung?(0,W.jsx)(`div`,{className:`mt-1 rounded-lg border border-amber/15 bg-amber/5 px-3 py-2`,children:(0,W.jsx)(`p`,{className:`text-xs text-amber`,children:e.profil_optimierung})}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 self-center items-center gap-3`,children:[!s&&e.login_erforderlich&&!o?(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,disabled:a,onClick:()=>r?.(e),children:[a?(0,W.jsx)(je,{className:`animate-spin`,size:14}):null,a?`Login laeuft`:`Login starten`]}):null,(0,W.jsx)(Zn,{className:`shrink-0 flex-none self-center`,checked:!!e.active&&!s,disabled:s,title:s?`Quelle ist als defekt markiert. Bis zur Reparatur nur per Chrome-Extension nutzbar.`:void 0,onChange:t=>{if(s)return;let r=t.target.checked;n?.(e,r,{trigger:`checkbox`,autoStartLogin:r&&!!e.login_erforderlich&&!o})}})]})]})},e.key)})]})}var or=[`documents`,`conversation`,`sources`,`jobs`],sr=`/ersterfassung`,cr=`/jobsuche_workflow`,lr={IDLE:`idle`,ACTIVE:`active`,COMPLETE:`complete`};function ur(e){return Object.values(lr).includes(e)?e:lr.IDLE}function dr(e){return!Array.isArray(e)||!e.length?``:e.map((e,t)=>{let n=[e?.title||``,e?.company||``,e?.url||``,t].join(`::`);return[e?.hash||e?.id||e?.url||n,e?.is_active?`1`:`0`,e?.score??``,e?.updated_at||``,e?.found_at||``].join(`|`)}).sort().join(`||`)}function fr(e){return String(e||``).replace(/\s+/g,` `).trim()}function pr(e){return e===`uploading`?{tone:`sky`,label:`Upload läuft`}:e===`analyzing`?{tone:`sky`,label:`Analyse läuft`}:e===`done`?{tone:`success`,label:`Analysiert`}:e===`error`?{tone:`danger`,label:`Fehler`}:{tone:`neutral`,label:`Wartet`}}function mr(e){return!e||e===`nicht_extrahiert`?{tone:`neutral`,label:`Offen`}:e===`analysiert_leer`?{tone:`neutral`,label:`Analysiert (leer)`}:{tone:`success`,label:`Analysiert`}}function hr(e){let t=e.webkitRelativePath||e.name,n=t.split(`/`).pop()||t;return{id:`upload_${Math.random().toString(36).slice(2,10)}_${Date.now()}`,signature:Xt(e),name:t,basename:n,file:e,documentId:null,storedFilename:``,status:`queued`,message:`Wartet auf Upload...`}}function gr({open:e,profile:t,workspace:n,onDismiss:r,onComplete:i}){let{chrome:a,refreshChrome:o,pushToast:s}=kt(),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(`documents`),[g,_]=(0,w.useState)(lr.IDLE),[v,y]=(0,w.useState)(!1),[b,x]=(0,w.useState)(!1),[S,C]=(0,w.useState)({}),[T,E]=(0,w.useState)([]),[D,O]=(0,w.useState)(!1),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)([]),[N,P]=(0,w.useState)(!1),[ee,F]=(0,w.useState)({}),[I,te]=(0,w.useState)({}),[ne,L]=(0,w.useState)(``),[ie,R]=(0,w.useState)(``),[ae,oe]=(0,w.useState)(``),[z,se]=(0,w.useState)(!1),ce=(0,w.useRef)(new Map),le=(0,w.useRef)(Promise.resolve()),ue=(0,w.useRef)([]),de=(0,w.useRef)(null),fe=(0,w.useRef)(null),pe=(0,w.useRef)(!1),he=(0,w.useRef)(!1),ge=(0,w.useRef)(``),_e=(0,w.useRef)(0),ve=(0,w.useRef)(!1),ye=(0,w.useRef)(null),be=(0,w.useMemo)(()=>Rn(t),[t]),xe=t?.id?`profile_onboarding_conversation_${t.id}`:``,Se=t?.documents?.length||0,Ce=n?.applications?.total||0,B=c.filter(e=>e.active).length||n?.sources?.active||0,we=u.length||n?.jobs?.active||0,Te=n?.profile?.missing_areas||[],Ee=(t?.skills||[]).map(e=>{let t=Ln(e?.name);return t?{id:e?.id,name:t,category:e?.category||`fachlich`,level:e?.level??3,years_experience:e?.years_experience,last_used_year:e?.last_used_year}:null}).filter(Boolean),De={documentsDone:Se>0||Ce>0||T.length>0,conversationDone:g===lr.COMPLETE,sourcesDone:v&&B>0,jobsDone:we>0||b},Oe=(0,w.useMemo)(()=>or.map((e,t)=>({id:e,number:t+1,title:e===`documents`?`Unterlagen`:e===`conversation`?`Kennlerngespräch`:e===`sources`?`Quellen`:`Jobsuche`,done:e===`documents`?De.documentsDone:e===`conversation`?De.conversationDone:e===`sources`?De.sourcesDone:De.jobsDone})),[De.documentsDone,De.conversationDone,De.sourcesDone,De.jobsDone]),ke=zn(Oe),Ae=Oe.findIndex(e=>e.id===m),je=Oe.filter(e=>e.done).length,Me=Oe.every(e=>e.done),Ne=(0,w.useEffectEvent)(async()=>{if(!t?.id){ge.current=``,(0,w.startTransition)(()=>{l([]),d([]),p(!1)});return}try{let[e,t,n]=await Promise.all([V(`/api/sources`),V(`/api/jobs?active=true`),V(`/api/user-preferences/${xe}`)]),r=Array.isArray(t)?t:[],i=ur(n?.value);ve.current=i===lr.ACTIVE||i===lr.COMPLETE,ge.current=dr(r),(0,w.startTransition)(()=>{l(e||[]),d(r),_(i),p(!1)})}catch(e){s(`Onboarding-Daten konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>p(!1))}});(0,w.useEffect)(()=>{e&&(p(!0),Ne())},[e,t?.id]),(0,w.useEffect)(()=>{e&&h(e=>!e||!Oe.some(t=>t.id===e)?Oe[ke]?.id||`documents`:e)},[e,ke,Oe]),(0,w.useEffect)(()=>{e&&(ve.current=!1,ge.current=``,ye.current&&=(window.clearTimeout(ye.current),null),(0,w.startTransition)(()=>{y(!1),x(!1),E([]),O(!1),A(!1),M([]),P(!1)}),ue.current=[],L(``),R(``),oe(``),se(!1),te({}),F({}))},[e,t?.id]),(0,w.useEffect)(()=>{ue.current=T},[T]),(0,w.useEffect)(()=>{if(!e)return;function t(e){A(!!e?.detail?.active)}function n(e){let t=e?.detail?.files;t?.length&&(e.preventDefault(),h(`documents`),Ye(t))}return window.addEventListener(an,t),window.addEventListener(rn,n),()=>{window.removeEventListener(an,t),window.removeEventListener(rn,n)}},[e]),(0,w.useEffect)(()=>{e&&m===`sources`&&y(!0)},[e,m]),(0,w.useEffect)(()=>{if(e)return document.body.classList.add(`overflow-hidden`),()=>document.body.classList.remove(`overflow-hidden`)},[e]),(0,w.useEffect)(()=>()=>{ce.current.forEach(e=>window.clearInterval(e)),ce.current.clear(),ye.current&&window.clearTimeout(ye.current)},[]);let Pe=(0,w.useEffectEvent)(async()=>{if(xe)try{let e=ur((await V(`/api/user-preferences/${xe}`))?.value);if(e===g)return;(0,w.startTransition)(()=>_(e)),e===lr.ACTIVE&&!ve.current&&(ve.current=!0,s(`Kennlerngespräch gestartet.`,`sky`)),e===lr.COMPLETE&&(ve.current=!0,m===`conversation`&&h(`sources`),await o(),s(`Kennlerngespräch abgeschlossen. Weiter zu Quellen.`,`success`))}catch{}}),Fe=(0,w.useEffectEvent)(async()=>{if(!pe.current){pe.current=!0;try{await o({quiet:!0})}catch{}finally{pe.current=!1}}}),Ie=(0,w.useEffectEvent)(async()=>{if(!he.current){he.current=!0;try{let e=await V(`/api/jobs?active=true`),t=Array.isArray(e)?e:[],n=dr(t);n!==ge.current&&(ge.current=n,(0,w.startTransition)(()=>d(t))),t.length>0&&!b&&(0,w.startTransition)(()=>x(!0))}catch{}finally{he.current=!1}}});(0,w.useEffect)(()=>{if(!e||!xe||g===lr.COMPLETE)return;Pe();let t=window.setInterval(()=>{Pe()},2e3);return()=>window.clearInterval(t)},[e,g,xe,Pe]),(0,w.useEffect)(()=>{if(!e||g!==lr.ACTIVE||!xe)return;Fe();let t=window.setInterval(()=>{Fe()},2e3);return()=>{window.clearInterval(t),pe.current=!1}},[e,g,xe,Fe]),(0,w.useEffect)(()=>{if(!e||!t?.id)return;Ie();let n=window.setInterval(()=>{Ie()},2e3);return()=>{window.clearInterval(n),he.current=!1}},[e,t?.id,Ie]);let Le=(0,w.useMemo)(()=>new Set((t?.documents||[]).map(e=>e.id).filter(Boolean)),[t?.documents]),Re=(0,w.useMemo)(()=>new Set((t?.documents||[]).map(e=>e.filename).filter(Boolean)),[t?.documents]),ze=(0,w.useMemo)(()=>T.filter(e=>{if(e.status!==`done`)return!0;let t=e.documentId&&Le.has(e.documentId),n=e.storedFilename&&Re.has(e.storedFilename);return!(t||n)}),[T,Le,Re]),Be=(0,w.useMemo)(()=>t?.documents||[],[t?.documents]),Ve=(0,w.useMemo)(()=>Be,[Be]),He=Be.filter(e=>j.includes(e.id)).length,Ue=Be.length>0&&Be.every(e=>j.includes(e.id)),We=ze.length>0||Be.length>0;if((0,w.useEffect)(()=>{let e=new Set(Be.map(e=>e.id));M(t=>{let n=t.filter(t=>e.has(t));return n.length===t.length&&n.every((e,n)=>e===t[n])?t:n})},[Be]),!e||!t)return null;function Ge(e,t){(0,w.startTransition)(()=>{E(n=>{let r=n.map(n=>n.id===e?{...n,...t}:n);return ue.current=r,r})})}async function Ke(e={}){let t=!!e?.force,n=Date.now();if(!(!t&&n-_e.current<1800)){_e.current=n;try{await o({quiet:!0})}catch{}}}function qe(e){le.current=le.current.then(async()=>{Ge(e,{status:`analyzing`,message:`Analyse läuft...`});let t=await tn();t?.status===`keine_daten`?Ge(e,{status:`done`,message:t?.nachricht||`Analyse abgeschlossen (keine neuen Profildaten erkannt).`}):Ge(e,{status:`done`,message:t?.nachricht||`Analyse abgeschlossen.`}),await Ke({force:!ue.current.some(e=>e.status===`queued`||e.status===`uploading`||e.status===`analyzing`)})}).catch(t=>{Ge(e,{status:`error`,message:`Analyse fehlgeschlagen: ${t.message}`})})}async function Je(e){try{Ge(e.id,{status:`uploading`,message:`Upload läuft...`});let t=await $t(e.file);Ge(e.id,{status:`queued`,message:`Hochgeladen. Warte auf Analyse...`,documentId:t?.id||null,storedFilename:t?.filename||e.basename||e.name}),qe(e.id)}catch(t){Ge(e.id,{status:`error`,message:`Upload fehlgeschlagen: ${t.message}`}),s(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}}function Ye(e){let t=Array.from(e||[]).filter(e=>e&&e.name);if(!t.length)return;let n=new Set(ue.current.map(e=>e.signature)),r=[];for(let e of t){let t=hr(e);n.has(t.signature)||(n.add(t.signature),r.push(t))}if(!r.length){s(`Diese Dateien sind bereits enthalten.`,`neutral`);return}ue.current=[...ue.current,...r],E(e=>[...e,...r]),r.forEach(e=>{Je(e)})}function Xe(e,t){e&&M(n=>{let r=n.includes(e);return t&&!r?[...n,e]:!t&&r?n.filter(t=>t!==e):n})}function Ze(){let e=Be.map(e=>e.id);M(t=>{if(Ue)return t.filter(t=>!e.includes(t));let n=new Set(t);return e.forEach(e=>n.add(e)),[...n]})}async function Qe(){let e=Be.filter(e=>j.includes(e.id));if(!e.length)return;let t=e.length;if(window.confirm(`${t} Datei(en) wirklich entfernen?\n\nDie zugehörigen Extraktions-/Analyse-Einträge dieser Datei(en) werden ebenfalls gelöscht.`)){P(!0);try{let n=(await Promise.allSettled(e.map(e=>Dt(`/api/document/${e.id}`)))).filter(e=>e.status===`rejected`),r=new Set(e.map(e=>e.id)),i=new Set(e.map(e=>e.filename));if(E(e=>e.filter(e=>{if(e.documentId&&r.has(e.documentId))return!1;let t=e.storedFilename||e.basename||e.name.split(`/`).pop()||e.name;return!i.has(t)})),M([]),await o(),n.length){s(`${t-n.length} Datei(en) entfernt, ${n.length} Datei(en) konnten nicht gelöscht werden.`,`danger`);return}s(`${t} Datei(en) inklusive Analyse-Einträgen entfernt.`,`success`)}catch(e){s(`Dateien konnten nicht entfernt werden: ${e.message}`,`danger`)}finally{P(!1)}}}async function $e(){try{await On(sr),t?.id&&((0,w.startTransition)(()=>_(lr.ACTIVE)),await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${t.id}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${t.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${t.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${t.id}`,{value:lr.ACTIVE})])),s(`Befehl kopiert — füge ihn mit Strg+V in Claude ein.`,`success`,{duration:7200})}catch(e){s(`Befehl konnte nicht kopiert werden: ${e.message}`,`danger`)}}function et(e,t){let n=ce.current.get(e);n&&window.clearInterval(n);let r=window.setInterval(async()=>{try{let n=await V(`/api/background-jobs/${t}`);(0,w.startTransition)(()=>{C(r=>({...r,[e]:{status:n.status,message:n.message||``,jobId:t}}))}),n.status!==`running`&&(window.clearInterval(r),ce.current.delete(e),s(n.message||`Login abgeschlossen.`,n.status===`fehler`?`danger`:`success`))}catch(t){window.clearInterval(r),ce.current.delete(e),s(`Login-Status konnte nicht geladen werden: ${t.message}`,`danger`)}},1500);ce.current.set(e,r)}async function tt(e,t={}){if(!(!t.force&&S[e.key]?.status===`running`))try{let t=await H(`/api/sources/${e.key}/login`,{});(0,w.startTransition)(()=>{C(n=>({...n,[e.key]:{status:`running`,message:t.nachricht||``,jobId:t.job_id}}))}),et(e.key,t.job_id),s(t.nachricht||`${e.name}: Login gestartet.`,`sky`)}catch(e){s(`Login konnte nicht gestartet werden: ${e.message}`,`danger`)}}async function nt(e,t,n={}){let r=c,i=c.map(n=>n.key===e.key?{...n,active:t}:n);(0,w.startTransition)(()=>l(i));try{await H(`/api/sources`,{active_sources:i.filter(e=>e.active).map(e=>e.key)}),(n.autoStartLogin??(t&&e.login_erforderlich))&&await tt(e)}catch(e){(0,w.startTransition)(()=>l(r)),s(`Quelle konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function rt(){try{await On(cr),x(!0),Ie(),s(`Befehl kopiert — füge ihn mit Strg+V in Claude ein.`,`success`,{duration:7200})}catch(e){s(`Befehl konnte nicht kopiert werden: ${e.message}`,`danger`)}}async function it(e){if(e?.id){(0,w.startTransition)(()=>{F(t=>({...t,[e.id]:!0}))});try{await Dt(`/api/skill/${e.id}`),await o(),ne===e.id&&(L(``),R(``)),s(`Skill entfernt: ${e.name}`,`success`)}catch(e){s(`Skill konnte nicht entfernt werden: ${e.message}`,`danger`)}finally{(0,w.startTransition)(()=>{F(t=>({...t,[e.id]:!1}))})}}}function at(e){e?.id&&(L(e.id),R(e.name||``))}function ot(){ye.current&&=(window.clearTimeout(ye.current),null),L(``),R(``)}async function st(e,t={}){if(!e?.id)return;let n=t.closeEditor!==!1,r=!!t.silent,i=t.notifySuccess??!r,a=fr(Ln(t.value??ie));if(!a){r||s(`Skill-Name darf nicht leer sein.`,`danger`);return}if(Ee.some(t=>t.id!==e.id&&t.name.toLocaleLowerCase(`de-DE`)===a.toLocaleLowerCase(`de-DE`))){r||s(`Skill ist bereits vorhanden.`,`neutral`);return}if(fr(Ln(e.name)).toLocaleLowerCase(`de-DE`)===a.toLocaleLowerCase(`de-DE`)){n&&(L(``),R(``));return}(0,w.startTransition)(()=>{te(t=>({...t,[e.id]:!0}))});try{await U(`/api/skill/${e.id}`,{name:a,category:e.category||`fachlich`,level:e.level??3,years_experience:e.years_experience,last_used_year:e.last_used_year}),await o({quiet:!0}),n&&(L(``),R(``)),i&&s(`Skill aktualisiert: ${a}`,`success`)}catch(e){r||s(`Skill konnte nicht aktualisiert werden: ${e.message}`,`danger`)}finally{(0,w.startTransition)(()=>{te(t=>({...t,[e.id]:!1}))})}}function ct(e,t){e?.id&&(ye.current&&window.clearTimeout(ye.current),ye.current=window.setTimeout(()=>{st(e,{value:t,closeEditor:!1,silent:!0,notifySuccess:!1})},550))}async function lt(e){ye.current&&=(window.clearTimeout(ye.current),null),await st(e,{closeEditor:!0,notifySuccess:!1})}async function dt(){let e=fr(Ln(ae));if(!e){s(`Bitte einen gültigen Skill-Namen eingeben.`,`danger`);return}if(Ee.some(t=>t.name.toLocaleLowerCase(`de-DE`)===e.toLocaleLowerCase(`de-DE`))){s(`Skill ist bereits vorhanden.`,`neutral`),oe(``);return}se(!0);try{await H(`/api/skill`,{name:e,category:`fachlich`,level:3}),await o({quiet:!0}),oe(``),s(`Skill hinzugefügt: ${e}`,`success`)}catch(e){s(`Skill konnte nicht hinzugefügt werden: ${e.message}`,`danger`)}finally{se(!1)}}function ft(){window.confirm(`Das komplette Setup wirklich überspringen?`)&&r()}function pt(){let e=Oe[Ae+1];e&&h(e.id)}let mt=(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Lade Lebensläufe, Anschreiben, Zeugnisse oder bestehende Unterlagen hoch, damit direkt eine erste Analyse startet.`}),(0,W.jsxs)(`div`,{className:`mt-5 rounded-xl border-2 border-dashed border-white/12 bg-white/[0.04] p-4 sm:p-6`,children:[(0,W.jsxs)(`div`,{className:G(`rounded-xl border border-white/10 bg-sky/10 px-4 py-8 text-center transition`,(D||k)&&`border-sky/60 bg-sky/12 ring-2 ring-sky/35`),"data-global-drop-target":`profile-documents`,onDragOver:e=>{e.preventDefault(),O(!0)},onDragEnter:e=>{e.preventDefault(),O(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&O(!1)},onDrop:async e=>{e.preventDefault(),e.stopPropagation(),O(!1),Ye(await un(e.dataTransfer))},children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Dateien oder Ordner hier hineinziehen`}),(0,W.jsx)(`p`,{className:`mt-2 text-xs text-muted`,children:`Mehrfach-Upload und späteres Nachladen bleibt aktiv.`}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-center gap-2`,children:[(0,W.jsxs)(K,{type:`button`,variant:`secondary`,onClick:()=>de.current?.click(),children:[(0,W.jsx)(ut,{size:15}),`Dateien auswählen`]}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,type:`button`,onClick:()=>fe.current?.click(),children:`Ordner auswählen`})]}),(0,W.jsx)(`input`,{ref:de,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:e=>{Ye(e.target.files),e.target.value=``}}),(0,W.jsx)(`input`,{ref:fe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:e=>{Ye(e.target.files),e.target.value=``}})]}),We?(0,W.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[Ve.length?(0,W.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center justify-between gap-2 rounded-lg border border-white/10 bg-white/[0.02] px-3 py-2`,children:[(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[He,`/`,Ve.length,` markiert`]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:Ze,children:Ue?`Auswahl aufheben`:`Alle markieren`}),(0,W.jsx)(K,{size:`sm`,variant:`danger`,disabled:!He||N,onClick:Qe,children:N?`Lösche...`:`Ausgewählte entfernen`})]})]}):null,ze.map(e=>{let t=pr(e.status);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg border border-white/10 bg-white/[0.03] px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`truncate text-sm font-semibold text-ink`,children:e.name}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:e.message})]}),(0,W.jsx)(J,{tone:t.tone,children:t.label})]},e.id)}),Ve.map(e=>{let t=mr(e.extraction_status);return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg border border-white/10 bg-white/4 px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,W.jsx)(Zn,{checked:j.includes(e.id),onChange:t=>Xe(e.id,t.target.checked),disabled:N,"aria-label":`${e.filename} markieren`,className:`shrink-0 self-center`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`truncate text-sm font-semibold text-ink`,children:e.filename}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:Tn(e.doc_type)})]})]}),(0,W.jsx)(J,{tone:t.tone,children:t.label})]},e.id)})]}):null]})]}),ht=a?.status?.mcp_connection,gt=ht?.status===`connected`,_t=(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Um offene Punkte zu klären, führst du jetzt in Claude ein kurzes Kennlerngespräch.`}),ht&&!gt&&(0,W.jsxs)(`div`,{className:`mt-4 rounded-xl border border-amber/30 bg-amber/5 p-4`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-amber`,children:`Claude Verbindung prüfen`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:`Öffne Claude Desktop und prüfe unter Einstellungen > Entwickler ob PBP als MCP-Server angezeigt wird.`}),(0,W.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted`,children:[(0,W.jsx)(`p`,{children:`Falls nicht:`}),(0,W.jsx)(`p`,{children:`1. Ist das PBP-Konsolenfenster noch offen? (Nicht schließen!)`}),(0,W.jsx)(`p`,{children:`2. Claude Desktop beenden: Rechtsklick auf Symbol in Taskleiste → Beenden`}),(0,W.jsx)(`p`,{children:`3. Claude Desktop neu starten`}),(0,W.jsx)(`p`,{children:`4. Unter Einstellungen > Entwickler den MCP-Status prüfen`})]})]}),(0,W.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-3`,children:[(0,W.jsxs)(K,{variant:`secondary`,onClick:$e,children:[(0,W.jsx)(me,{size:15}),`/ersterfassung kopieren`]}),(0,W.jsx)(J,{tone:g===lr.COMPLETE?`success`:g===lr.ACTIVE?`sky`:`neutral`,children:g===lr.COMPLETE?`Abgeschlossen`:g===lr.ACTIVE?`Läuft`:`Noch offen`})]}),(0,W.jsxs)(`div`,{className:`mt-5 grid gap-3 md:grid-cols-2`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-white/10 bg-white/4 p-4`,children:[(0,W.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Bekannt`}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-2`,children:be.length?be.map(e=>(0,W.jsx)(`p`,{className:`text-sm text-ink`,children:e},e)):(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Noch keine belastbaren Angaben vorhanden.`})})]}),(0,W.jsxs)(`div`,{className:`rounded-xl border border-white/10 bg-white/[0.03] p-4`,children:[(0,W.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Offen`}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-2`,children:Te.length?Te.map(e=>(0,W.jsx)(`p`,{className:`text-sm text-ink`,children:e},e)):(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Aktuell sind keine großen Lücken offen.`})})]})]}),(0,W.jsxs)(`div`,{className:`mt-3 rounded-xl border border-white/10 bg-white/4 p-4`,children:[(0,W.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Skills`}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`text`,value:ae,onChange:e=>oe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),z||dt())},placeholder:`Neuen Skill hinzufügen`,className:`h-8 min-w-[15rem] rounded-lg border border-white/15 bg-white/[0.04] px-3 text-xs text-ink placeholder:text-muted focus:border-sky/45 focus:outline-none`}),(0,W.jsx)(K,{size:`sm`,type:`button`,variant:`secondary`,onClick:dt,disabled:z,children:z?`Füge hinzu...`:`Skill hinzufügen`})]}),(0,W.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:Ee.length?Ee.map(e=>(0,W.jsx)(`span`,{className:`inline-flex items-center gap-2 rounded-full border border-sky/20 bg-sky/10 px-2 py-1 text-xs font-semibold text-sky`,children:ne===e.id?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{type:`text`,value:ie,onChange:t=>{let n=t.target.value;R(n),ct(e,n)},onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),lt(e)),t.key===`Escape`&&(t.preventDefault(),ot())},className:`h-7 w-44 rounded-md border border-white/20 bg-white/[0.08] px-2 text-xs text-ink focus:border-sky/45 focus:outline-none`,"aria-label":`Skill bearbeiten: ${e.name}`}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,type:`button`,onClick:()=>lt(e),disabled:!!I[e.id],children:I[e.id]?`...`:`Fertig`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,className:`rounded px-1 text-left text-xs font-semibold text-sky transition hover:bg-white/10`,onClick:()=>at(e),title:`Skill bearbeiten: ${e.name}`,"aria-label":`Skill bearbeiten: ${e.name}`,children:e.name}),(0,W.jsx)(`button`,{type:`button`,className:`inline-flex h-4 w-4 items-center justify-center rounded-full text-sky/85 transition hover:bg-white/10 hover:text-sky`,onClick:t=>{t.stopPropagation(),it(e)},disabled:!e.id||!!ee[e.id],title:e.id?`Skill entfernen: ${e.name}`:`Skill kann nicht entfernt werden`,"aria-label":`Skill entfernen: ${e.name}`,children:(0,W.jsx)(vt,{size:10})})]})},e.id||e.name)):(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Noch keine Skills im Profil vorhanden.`})})]})]}),yt=(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[c.some(e=>e.active)?null:(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Wähle mindestens eine Quelle aus, die durchsucht werden soll.`}),(0,W.jsx)(`div`,{className:`mt-5`,children:(0,W.jsx)(ar,{sources:c,loginJobs:S,onToggle:nt,onStartLogin:tt})})]}),bt=m===`documents`?mt:m===`conversation`?_t:m===`sources`?yt:(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Starte jetzt den Jobsuche-Workflow in Claude.`}),(0,W.jsx)(`div`,{className:`mt-5 grid gap-3 sm:max-w-lg`,children:(0,W.jsxs)(K,{variant:`secondary`,onClick:rt,children:[(0,W.jsx)(me,{size:15}),`/jobsuche_workflow kopieren`]})}),(0,W.jsxs)(`p`,{className:`mt-4 text-xs text-muted`,children:[`Aktuell erkannte Jobs: `,we]})]}),xt=m===`conversation`&&g===lr.ACTIVE?`Kennlerngespräch läuft gerade. Weiter nur, wenn du bewusst unterbrechen willst.`:null;return(0,gn.createPortal)((0,W.jsx)(`div`,{id:`profile-onboarding-overlay`,className:`glass-overlay fixed inset-0 z-[980] flex items-start justify-center overflow-y-auto px-4 py-6 sm:px-6`,children:(0,W.jsxs)(`div`,{className:`glass-card-strong w-full max-w-6xl rounded-2xl p-6 sm:p-8`,children:[(0,W.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h2`,{className:`font-display text-3xl font-semibold text-ink sm:text-4xl`,children:[`Willkommen `,t.name||`ohne Namen`]}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:`Richte dein Profil in vier kurzen Schritten ein.`})]}),(0,W.jsxs)(J,{tone:Me?`success`:`sky`,children:[je,`/`,Oe.length,` Schritte`]})]}),(0,W.jsx)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:Oe.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:G(`glass-tab flex min-h-[4.25rem] items-center justify-between rounded-xl px-4 py-3 text-left transition`,m===e.id&&`glass-tab-active`),onClick:()=>h(e.id),children:[(0,W.jsxs)(`span`,{className:`text-sm font-semibold text-ink/90`,children:[e.number,`. `,e.title]}),e.done?(0,W.jsx)(`span`,{className:`inline-flex h-6 w-6 items-center justify-center rounded-full bg-teal/20 text-teal`,children:(0,W.jsx)(re,{size:13})}):null]},e.id))}),(0,W.jsx)(`div`,{className:`mt-6`,children:f?(0,W.jsx)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,W.jsxs)(`div`,{className:`flex min-h-40 items-center justify-center gap-3 text-sm text-muted`,children:[(0,W.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-white/12 border-t-teal`}),`Onboarding wird vorbereitet...`]})}):bt}),(0,W.jsxs)(`div`,{className:G(`mt-6 flex flex-wrap items-center gap-3 border-t border-white/10 pt-5`,xt?`justify-between`:`justify-end`),children:[xt?(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:xt}):null,(0,W.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:Aes&&d(!0),onMouseLeave:()=>d(!1),children:(0,W.jsxs)(`div`,{className:G(`sticky top-0 h-screen flex flex-col bg-shell/80 backdrop-blur-md border-r border-white/8`,`transition-[width,box-shadow] duration-200`,f?`w-[60px]`:`w-[240px]`,p&&`absolute top-0 left-0 z-50 shadow-2xl shadow-black/40`,!p&&`z-40`),children:[(0,W.jsx)(`div`,{className:`px-4 py-3 border-b border-white/8`,children:f?(0,W.jsx)(`span`,{className:`text-[13px] font-semibold text-ink block text-center`,title:`Persönliches Bewerbungs-Portal`,children:`PBP`}):(0,W.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,W.jsx)(`span`,{className:`brand-title sr-only`,children:`Persönliches Bewerbungs-Portal`}),o.version?(0,W.jsxs)(`span`,{className:`font-mono text-[10px] text-muted/40 select-none whitespace-nowrap`,children:[`v`,o.version]}):null,o.connectionStatus?(()=>{let e=_r[o.connectionStatus]||_r.disconnected;return(0,W.jsxs)(`button`,{type:`button`,onClick:o.onConnectionClick,className:G(`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors w-fit`,`hover:bg-white/[0.06]`,e.color),title:o.connectionStatus===`connected`?`Claude Desktop oeffnen`:`MCP: ${e.label} — Klicke fuer Hilfe`,children:[(0,W.jsx)(`span`,{className:G(`h-1.5 w-1.5 rounded-full`,e.dot)}),(0,W.jsx)(`span`,{children:e.label})]})})():null,o.llmState?(()=>{let e=vr[o.llmState]||vr.not_installed;return(0,W.jsxs)(`button`,{type:`button`,onClick:o.onLlmClick,className:G(`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors w-fit`,`hover:bg-white/[0.06]`,e.color),title:`${e.label} — Klicke fuer Details`,children:[(0,W.jsx)(`span`,{className:G(`h-1.5 w-1.5 rounded-full`,e.dot)}),(0,W.jsx)(`span`,{children:e.label})]})})():null]})}),(0,W.jsx)(`nav`,{className:`flex-shrink-0 overflow-y-auto px-2 py-3`,style:{maxHeight:`calc(100vh - 180px)`},children:(0,W.jsx)(`ul`,{className:`space-y-0.5`,children:e.map(e=>{let o=e.icon,s=t===e.id,c=i[e.id],l=s&&r?r:null;return(0,W.jsxs)(`li`,{children:[(0,W.jsxs)(`button`,{type:`button`,className:G(`tab w-full flex items-center gap-2.5 rounded-lg px-2.5 py-2 text-[13px] font-medium transition-colors`,s?`bg-white/[0.08] text-ink`:`text-muted hover:text-ink hover:bg-white/[0.04]`,f&&`justify-center`),"data-page":e.id,onClick:()=>n?.(e.id),title:f?e.title:void 0,children:[(0,W.jsx)(o,{size:16,className:s?`text-sky shrink-0`:`shrink-0`}),!f&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`span`,{className:`flex-1 text-left`,children:e.title}),c?(0,W.jsx)(`span`,{id:`tab-badge-${e.id}`,className:`tab-badge inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-amber/80 px-1 text-[10px] font-bold leading-none text-shell`,children:c}):(0,W.jsx)(`span`,{id:`tab-badge-${e.id}`,className:`hidden`,children:c})]})]}),!f&&l?(0,W.jsx)(`ul`,{className:`ml-6 mt-0.5 mb-1 space-y-0.5 border-l border-white/8 pl-2`,children:l.items.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsx)(`button`,{type:`button`,className:G(`w-full text-left rounded-md px-2 py-1.5 text-[12px] transition-colors`,e.active?`bg-sky/10 text-sky`:`text-muted/80 hover:text-ink hover:bg-white/[0.03]`),onClick:()=>l.onSelect?.(e.id),children:e.label})},e.id))}):null,(0,W.jsx)(`span`,{id:`tab-meta-${e.id}`,className:`sr-only`,children:a[e.id]||e.defaultMeta})]},e.id)})})}),!f&&l?(0,W.jsx)(`div`,{className:`border-t border-white/8 px-3 py-2 overflow-y-auto`,style:{flex:`1 1 0`,minHeight:0},children:l}):null,c?(0,W.jsxs)(`button`,{type:`button`,onClick:c,className:`border-t border-white/8 px-4 py-2.5 text-[11px] text-muted/60 hover:text-ink hover:bg-white/[0.03] transition-colors flex items-center justify-center gap-1.5`,title:f?`Sidebar ausklappen`:`Sidebar einklappen`,children:[f?(0,W.jsx)(R,{size:14}):(0,W.jsx)(L,{size:14,className:`rotate-90`}),!f&&(0,W.jsx)(`span`,{children:`Einklappen`})]}):null]})})}var br=`pbp_elwosa_hidden_until`,xr=30*1e3,Sr=3600*1e3,Cr=1800*1e3;function wr(){try{let e=localStorage.getItem(br);return e&&Number(e)||0}catch{return 0}}function Tr(e){try{localStorage.setItem(br,String(e))}catch{}}var Er=/\[link:([a-z_]+):([^|\]]+)\|([^\]]+)\]/g,Dr=/\*\*([^*]+)\*\*/g,Or=/`[^`]+`/g;function kr(e,{onCopy:t,onPause:n,onNavigate:r}){if(!e)return null;let i=[],a=0,o;for(Er.lastIndex=0;(o=Er.exec(e))!==null;)o.index>a&&i.push({type:`plain`,text:e.slice(a,o.index)}),i.push({type:`link`,linkType:o[1],linkId:o[2],label:o[3]}),a=o.index+o[0].length;return ae.type===`link`?[(0,W.jsx)(`button`,{type:`button`,onClick:t=>{if(t.stopPropagation(),e.linkType===`pause`)n?.(parseInt(e.linkId,10)||60);else if(e.linkType===`wiki`){let t=`https://github.com/MadGapun/PBP/wiki/${encodeURIComponent(e.linkId)}`;window.open(t,`_blank`,`noopener,noreferrer`)}else r?.(e.linkType,e.linkId)},className:`text-teal hover:text-teal/80 underline decoration-dotted decoration-teal/40 underline-offset-2 cursor-pointer`,title:e.linkType===`pause`?`Elwosa fuer ${e.linkId} Minuten pausieren`:`${e.linkType}: ${e.linkId}`,children:e.label},`l-${i}`)]:Ar(e.text,i,t))}function Ar(e,t,n){let r=[],i=0,a;for(Dr.lastIndex=0;(a=Dr.exec(e))!==null;)a.index>i&&r.push({type:`code-or-text`,text:e.slice(i,a.index)}),r.push({type:`bold`,text:a[1]}),i=a.index+a[0].length;return i{let i=`${t}-${r}`;if(e.type===`bold`)return[(0,W.jsx)(`strong`,{className:`font-semibold text-ink`,children:e.text},i)];let a=e.text.split(Or),o=e.text.match(Or)||[],s=[];return a.forEach((e,t)=>{if(e&&s.push((0,W.jsx)(`span`,{children:e},`${i}-s${t}`)),t{t.stopPropagation(),n?.(e)},className:`font-mono text-[11px] underline-offset-2 underline decoration-dotted decoration-teal/50 hover:text-teal cursor-pointer`,title:`Klicken um zu kopieren`,children:e},`${i}-c${t}`))}}),s})}function jr(e){if(!e)return``;try{let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`gerade eben`;if(r<60)return`vor ${r} min`;let i=Math.floor(r/60);return i<24?`vor ${i}h`:t.toLocaleDateString(`de-DE`,{day:`2-digit`,month:`2-digit`})}catch{return e.slice(11,16)}}function Mr(e){try{let t=new Date(e),n=new Date;if(t.toDateString()===n.toDateString())return`Heute`;let r=new Date;return r.setDate(n.getDate()-1),t.toDateString()===r.toDateString()?`Gestern`:t.toLocaleDateString(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`})}catch{return``}}function Nr({collapsed:e=!1,onToast:t,onNavigateToSettings:n,onNavigate:r}){let[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(()=>wr()>Date.now()),[u,d]=(0,w.useState)(!1),[f,p]=(0,w.useState)(!1),m=(0,w.useRef)(null),h=(0,w.useRef)(null),g=(0,w.useRef)(!0),[_,v]=(0,w.useState)(!1),[y,b]=(0,w.useState)(0),x=(0,w.useRef)(0);(0,w.useEffect)(()=>{let e=!1;async function t(){try{let[t,n]=await Promise.all([V(`/api/elwosa/messages?limit=10`),V(`/api/elwosa/status`)]);if(e)return;a((t?.messages||[]).slice().reverse()),s(n)}catch{}}async function n(){try{await H(`/api/elwosa/heartbeat`,{}),e||await t()}catch{}}t(),n(),m.current=setInterval(t,xr);let r=setInterval(n,Sr),i=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,i),()=>{e=!0,m.current&&clearInterval(m.current),clearInterval(r),document.removeEventListener(`visibilitychange`,i)}},[]),(0,w.useEffect)(()=>{if(!c)return;let e=wr()-Date.now();if(e<=0){l(!1);return}let t=setTimeout(()=>l(!1),e);return()=>clearTimeout(t)},[c]);function S(){let e=h.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<30;g.current=t,t&&(v(!1),b(0))}function C(){let e=h.current;e&&(e.scrollTop=e.scrollHeight,g.current=!0,v(!1),b(0))}if((0,w.useLayoutEffect)(()=>{let e=h.current;if(!e)return;let t=i.length,n=t>x.current;if(g.current)e.scrollTop=e.scrollHeight;else if(n){let e=t-x.current;b(t=>t+e),v(!0)}x.current=t},[i]),!o||!o.is_active&&o.ai_state===`off`)return null;if(c&&!e)return(0,W.jsx)(`div`,{className:`px-3 py-2 text-[10px] text-muted/40`,children:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{Tr(0),l(!1)},className:`flex items-center gap-1 hover:text-ink`,children:[(0,W.jsx)(be,{size:12}),` Elwosa wieder einblenden`]})});if(c&&e)return null;async function T(e){try{await navigator.clipboard.writeText(e),t?.(`„${e}" kopiert — paste in deinen Claude-Chat`,`success`)}catch{t?.(`Kopieren fehlgeschlagen`,`danger`)}}async function E(e){try{await Dt(`/api/elwosa/messages/${e}`),a(t=>t.filter(t=>t.id!==e))}catch{}}async function D(e){try{await H(`/api/elwosa/pause`,{minuten:e}),t?.(`Elwosa pausiert fuer ${e} Minuten`,`success`),d(!1)}catch{}}async function O(){if(confirm(`Elwosa-Verlauf wirklich loeschen?`))try{await Promise.all(i.map(e=>Dt(`/api/elwosa/messages/${e.id}`))),a([]),t?.(`Verlauf geloescht`,`success`),d(!1)}catch{}}function k(){Tr(Date.now()+Cr),l(!0)}let A=(0,W.jsx)(`div`,{className:`flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-teal/15 text-[11px] font-semibold text-teal`,children:`E`});if(e){let e=i.some(e=>!e.read_at);return(0,W.jsxs)(`div`,{className:`relative flex justify-center py-2`,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),title:i[i.length-1]?.content||`Elwosa`,children:[(0,W.jsxs)(`div`,{className:`relative`,children:[A,e&&(0,W.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-teal animate-pulse`})]}),f&&i.length>0&&(0,W.jsxs)(`div`,{className:`absolute left-12 bottom-0 z-50 w-72 rounded-lg border border-white/10 bg-bg/95 p-3 shadow-xl backdrop-blur-md`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[A,(0,W.jsx)(`span`,{className:`text-[11px] font-medium text-ink`,children:`Elwosa`})]}),(0,W.jsx)(`div`,{className:`space-y-2`,children:i.slice(-3).map(e=>(0,W.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted/80`,children:kr(e.content,{onCopy:T,onPause:D,onNavigate:r})},e.id))})]})]})}let j=[],M=null;return i.forEach(e=>{let t=Mr(e.created_at);t!==M&&(j.push({type:`day`,label:t}),M=t),j.push({type:`msg`,msg:e})}),(0,W.jsxs)(`div`,{className:`border-t border-white/5 px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[A,(0,W.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted/70`,children:`Elwosa`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>n?.(`ai`),className:`text-muted/40 hover:text-ink`,title:`Elwosa-Einstellungen oeffnen`,children:(0,W.jsx)($e,{size:12})}),(0,W.jsx)(`button`,{type:`button`,onClick:k,className:`text-muted/40 hover:text-ink`,title:`Fuer 30 Minuten ausblenden`,children:(0,W.jsx)(ye,{size:12})}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>d(!u),className:`text-muted/40 hover:text-ink`,title:`Menue`,children:(0,W.jsx)(_e,{size:12})}),u&&(0,W.jsxs)(`div`,{className:`absolute right-0 top-5 z-50 w-44 rounded-lg border border-white/10 bg-bg/95 py-1 shadow-xl backdrop-blur-md`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>D(60),className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,W.jsx)(He,{size:11}),` 1 Stunde pausieren`]}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>D(240),className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,W.jsx)(He,{size:11}),` 4 Stunden pausieren`]}),(0,W.jsxs)(`button`,{type:`button`,onClick:O,className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,W.jsx)(at,{size:11}),` Verlauf loeschen`]})]})]})]})]}),(0,W.jsxs)(`div`,{className:`relative`,children:[(0,W.jsxs)(`div`,{ref:h,onScroll:S,className:`space-y-2 min-h-[80px] overflow-y-auto pr-1`,style:{maxHeight:`100%`},children:[i.length===0&&(0,W.jsx)(`p`,{className:`text-[10px] text-muted/40 italic`,children:o.ai_state===`active`?`Elwosa ist still. Wenn die AI arbeitet, redet sie.`:`Elwosa: ${o.ai_state}`}),j.map((e,t)=>{if(e.type===`day`)return(0,W.jsxs)(`div`,{className:`text-[9px] uppercase tracking-wider text-muted/30 pt-1`,children:[`── `,e.label,` ──`]},`day-${t}`);let n=e.msg;return(0,W.jsxs)(`div`,{className:`group rounded-md bg-white/[0.02] p-2 hover:bg-white/[0.04] transition-colors`,children:[(0,W.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted/85`,children:kr(n.content,{onCopy:T,onPause:D,onNavigate:r})}),(0,W.jsxs)(`div`,{className:`mt-1 flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`text-[9px] text-muted/30`,children:jr(n.created_at)}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>E(n.id),className:`text-muted/20 opacity-0 group-hover:opacity-100 hover:text-coral transition-opacity`,title:`Diese Nachricht ausblenden`,children:(0,W.jsx)(vt,{size:11})})]})]},n.id)})]}),_&&(0,W.jsxs)(`button`,{type:`button`,onClick:C,className:`absolute bottom-1 left-1/2 -translate-x-1/2 flex items-center gap-1 rounded-full bg-teal/90 px-2.5 py-1 text-[10px] font-medium text-white shadow-lg hover:bg-teal transition-all`,title:`Zu den neuesten Nachrichten springen`,children:[(0,W.jsx)(L,{size:11}),y>0?`${y} neu`:`neueste`]})]})]})}var Pr=`pbp_dismissed_hints_v1`;function Fr(){try{let e=localStorage.getItem(Pr);if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t:[])}catch{return new Set}}function Ir(e){try{localStorage.setItem(Pr,JSON.stringify(Array.from(e)))}catch{}}function Lr({page:e,limit:t=2,onApply:n}){let[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(()=>Fr());(0,w.useEffect)(()=>{let n=!1;if(e)return fetch(`/api/learning/hints?page=${encodeURIComponent(e)}&limit=${t}`).then(e=>e.ok?e.json():null).then(e=>{n||!e||i(e.hints||[])}).catch(()=>{}),()=>{n=!0}},[e,t]);function s(e){o(t=>{let n=new Set(t);return n.add(e),Ir(n),n})}async function c(e){try{await fetch(`/api/learning/insights/${e}`,{method:`DELETE`})}catch{}s(e)}let l=r.filter(e=>!a.has(e.id));return l.length===0?null:(0,W.jsx)(`div`,{className:`space-y-1.5 mb-3`,children:l.map(e=>(0,W.jsxs)(`div`,{className:`flex items-start gap-2 p-2.5 rounded-lg border border-teal/20 bg-teal/[0.04] text-[12px]`,children:[(0,W.jsx)(De,{className:`h-4 w-4 text-teal mt-0.5 shrink-0`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-teal/80`,children:(e.kind||``).replace(/_/g,` `)}),(0,W.jsx)(`span`,{className:`font-medium text-ink truncate`,children:e.title})]}),e.recommendation&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted/70 mt-0.5`,children:e.recommendation}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5`,children:[n&&e.kind===`filter_recommendation`&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>n(e),className:`text-[11px] text-teal hover:underline`,children:`Vorschlag anwenden`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),className:`text-[11px] text-muted/40 hover:text-coral`,children:`Nicht mehr anzeigen`})]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>s(e.id),className:`text-muted/40 hover:text-ink shrink-0`,title:`Fuer diese Sitzung ausblenden`,children:(0,W.jsx)(vt,{className:`h-4 w-4`})})]},e.id))})}function Rr({jobHash:e,onClose:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(!0);return(0,w.useEffect)(()=>{if(!e)return;let t=!1;return s(!0),V(`/api/jobs/${e}`).then(e=>{t||(r(e),s(!1))}).catch(e=>{t||(a(e.message||`Konnte Stelle nicht laden`),s(!1))}),()=>{t=!0}},[e]),e?(0,W.jsxs)(er,{open:!0,title:`Stellendetails`,onClose:t,children:[o&&(0,W.jsx)(`p`,{className:`text-sm text-muted/70`,children:`Lade...`}),i&&(0,W.jsx)(`div`,{className:`rounded-lg border border-coral/20 bg-coral/[0.05] p-3 text-sm text-coral`,children:i}),n&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-xl font-semibold text-ink`,children:n.title}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[n.company||`Unbekannt`,n.location?` — ${n.location}`:``]})]}),!n.is_active&&n.dismiss_reason&&(0,W.jsxs)(`div`,{className:`rounded-lg border border-amber/20 bg-amber/[0.04] p-2 text-[11px] text-amber/80`,children:[`Diese Stelle ist aussortiert`,` (${n.dismiss_reason})`,` — Read-Only-Ansicht.`]}),(n.salary_min||n.salary_max)&&(0,W.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Gehalt:`}),` `,n.salary_min?Sn(n.salary_min):`?`,n.salary_max?` — ${Sn(n.salary_max)}`:``,n.salary_period?` / ${n.salary_period}`:``]}),n.score!==null&&n.score!==void 0&&(0,W.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Score:`}),` `,n.score]}),n.source&&(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Quelle: `,(0,W.jsx)(`span`,{className:`font-mono`,children:n.source}),n.found_at&&` · gefunden ${xn(n.found_at)}`]}),n.description&&(0,W.jsxs)(`details`,{open:!0,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/60`,children:`Beschreibung`}),(0,W.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-muted/80`,children:Pn(n.description,2e3)})]}),n.research_notes&&(0,W.jsxs)(`details`,{children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/60`,children:`Notizen`}),(0,W.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-muted/80`,children:n.research_notes})]}),(0,W.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[n.url&&(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:()=>window.open(n.url,`_blank`,`noopener`),children:[(0,W.jsx)(ve,{size:14}),`Original-URL`]}),(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:t,children:[(0,W.jsx)(vt,{size:14}),`Schliessen`]})]})]})]}):null}var zr=`modulepreload`,Br=function(e){return`/static/dashboard/`+e},Vr={},Hr=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Br(t,n),t in Vr)return;Vr[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:zr,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Ur={title:``,company:``,url:``,status:`beworben`,applied_at:new Date().toISOString().slice(0,10),notes:``},Wr=[`abgelehnt`,`zurueckgezogen`,`abgelaufen`],Gr=[`interview`,`zweitgespraech`,`interview_abgeschlossen`],Kr={firmenrecherche:`Firmenrecherche`,skillgap:`Skill-Gap`,gehalt:`Gehalt`,markt:`Markt-Trends`,fit:`Fit-Analyse`,allgemein:`Allgemein`};function qr({pushToast:e,onImported:t}){let n=(0,w.useRef)(null),[r,i]=(0,w.useState)(!1);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{ref:n,type:`file`,accept:`.msg,.eml`,className:`hidden`,onChange:async r=>{let a=r.target.files?.[0];if(a){i(!0);try{let n=new FormData;n.append(`file`,a);let r=await fetch(`/api/emails/upload`,{method:`POST`,body:n}),i=await r.json();if(!r.ok){e(i.error||`E-Mail-Upload fehlgeschlagen`,`danger`);return}e(`E-Mail importiert${i.match?.application?` → ${i.match.application.company} (${Math.round(i.match.confidence*100)}%)`:` (nicht zugeordnet)`}${i.detected_status?.status?` | Status: ${i.detected_status.status}`:``}${i.meetings?.length?` | ${i.meetings.length} Termin(e)`:``}${i.imported_documents?` | ${i.imported_documents} Dokument(e)`:``}`,`success`),t?.()}catch(t){e(`Upload fehlgeschlagen: ${t.message}`,`danger`)}finally{i(!1),n.current&&(n.current.value=``)}}}}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>n.current?.click(),disabled:r,children:[(0,W.jsx)(Ne,{size:14,className:`mr-1`}),r?`Importiere...`:`E-Mail importieren`]})]})}function Jr(){let{chrome:e,reloadKey:t,refreshChrome:n,pushToast:r,navigateTo:i,intent:a,clearIntent:o,copyPrompt:s}=kt(),[c,l]=(0,w.useState)(!0),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)([]),[m,h]=(0,w.useState)([]),[g,_]=(0,w.useState)([]),[v,y]=(0,w.useState)(null),[b,x]=(0,w.useState)({total:0,filteredTotal:0,archivedCount:0}),[S,C]=(0,w.useState)({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),[T,E]=(0,w.useState)(`neueste`),[D,O]=(0,w.useState)({open:!1,draft:Ur}),[A,j]=(0,w.useState)({open:!1,entry:null}),[M,N]=(0,w.useState)(null),[P,ee]=(0,w.useState)({open:!1,application:null,final_salary:``,description:``,start_date:``}),[I,ne]=(0,w.useState)(``),[L,ie]=(0,w.useState)(null),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(null),[se,ce]=(0,w.useState)(``),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)(null),[pe,me]=(0,w.useState)(``),[he,_e]=(0,w.useState)([]),[ye,be]=(0,w.useState)(Ur.status),[Se,Ce]=(0,w.useState)([]),[B,we]=(0,w.useState)([]),[Te,Ee]=(0,w.useState)([]),[De,Oe]=(0,w.useState)(``),[Ae,je]=(0,w.useState)(``),[Me,Pe]=(0,w.useState)(``),[Fe,Le]=(0,w.useState)(!1),Re=(0,w.useDeferredValue)(S.query),ze=S.showArchived||Wr.includes(S.status),Be=(0,w.useEffectEvent)(async()=>{try{let[e,t,n,r]=await Promise.all([V(`/api/applications?limit=500&include_archived=${ze?`true`:`false`}`),V(`/api/follow-ups`),V(`/api/meetings`).catch(()=>({meetings:[]})),V(`/api/applications/zombies`).catch(()=>({zombies:[]}))]);(0,w.startTransition)(()=>{d(e?.applications||[]),x({total:Number(e?.total||0),filteredTotal:Number(e?.filtered_total||0),archivedCount:Number(e?.archived_count||0)}),p(t?.follow_ups||[]),h(n?.meetings||[]),_(r?.zombies||[]),l(!1)})}catch(e){r(`Bewerbungen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>l(!1))}});(0,w.useEffect)(()=>{l(!0),Be()},[t,ze]);async function Ve(e,t){t&&t.stopPropagation();try{await H(`/api/follow-ups/${e}/complete`,{}),r(`Nachfass als erledigt markiert.`,`success`),Be()}catch(e){r(`Konnte nicht abhaken: ${e.message}`,`danger`)}}(0,w.useEffect)(()=>{!a||a.page!==`bewerbungen`||(a.filter===`interview`?(C({query:``,status:`interview`,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(null),o()):a.filter===`followups_due`?(C({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(`followups_due`),o()):a.filter===`zombies`&&(C({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(`zombies`),o()))},[a,o]);async function He(e,t,i={}){try{if(await U(`/api/applications/${e}/status`,{status:t}),d(n=>n.map(n=>n.id===e?{...n,status:t}:n)),i.reloadTimeline&&await Je(e),await n({quiet:!0,forceReload:!0}),r(`Status aktualisiert.`,`success`),t===`angenommen`){let t=u.find(t=>t.id===e)||A.entry?.application||{id:e};ee({open:!0,application:t,final_salary:t.final_salary||``,description:``,start_date:new Date().toISOString().slice(0,10)})}}catch(e){i.rollbackStatus&&be(i.rollbackStatus),r(`Status konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function Ue(){let e=P.application;if(!e?.id){ee({open:!1,application:null,final_salary:``,description:``,start_date:``});return}try{P.final_salary&&P.final_salary!==(e.final_salary||``)&&await U(`/api/applications/${e.id}`,{final_salary:P.final_salary}),await H(`/api/applications/${e.id}/adopt-position`,{start_date:P.start_date||void 0,description:P.description||void 0}),r(`Position ins Profil uebernommen und Gehalt gespeichert.`,`success`),await n({quiet:!0,forceReload:!0})}catch(e){r(`Konnte Abschluss nicht speichern: ${e.message}`,`danger`)}finally{ee({open:!1,application:null,final_salary:``,description:``,start_date:``})}}async function Ge(){try{await H(`/api/applications`,D.draft),O({open:!1,draft:Ur}),await n(),r(`Bewerbung angelegt.`,`success`)}catch(e){r(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function Ke(e){try{let[t,n,r,i,a]=await Promise.all([V(`/api/application/${e.id}/timeline`),V(`/api/documents`),V(`/api/applications/${e.id}/meetings`).catch(()=>({meetings:[]})),V(`/api/applications/${e.id}/emails`).catch(()=>({emails:[]})),V(`/api/applications/${e.id}/tasks`).catch(()=>[])]);j({open:!0,entry:t}),be(t?.application?.status||Ur.status),_e(n?.documents||[]),Ce(r?.meetings||[]),we(i?.emails||[]),Ee(Array.isArray(a)?a:[]),Oe(``),Pe(t?.job?.research_notes||``),ne(``),ie(null),ue(``)}catch(e){r(`Timeline konnte nicht geladen werden: ${e.message}`,`danger`)}}async function Je(e){try{let t=await V(`/api/application/${e}/timeline`);j(e=>({...e,entry:t})),be(t?.application?.status||Ur.status)}catch{}}async function Ye(e){try{let t=await V(`/api/applications/${e}/tasks`);Ee(Array.isArray(t)?t:[])}catch{}}async function Ze(){let e=A.entry?.application?.id,t=(De||``).trim();if(!(!e||!t))try{await H(`/api/applications/${e}/tasks`,{titel:t,faellig_am:Ae||void 0}),Oe(``),je(``),await Ye(e)}catch(e){r(`Todo konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function Qe(e){let t=A.entry?.application?.id;if(!t)return;let n=e.status===`erledigt`;try{await H(`/api/tasks/${e.id}/${n?`reopen`:`complete`}`,{}),await Ye(t)}catch(e){r(`Todo-Status fehlgeschlagen: ${e.message}`,`danger`)}}async function $e(e){let t=A.entry?.application?.id;if(t)try{await Dt(`/api/tasks/${e.id}`),await Ye(t)}catch(e){r(`Todo loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function et(e){let t=A.entry?.application?.id,n=A.entry?.application?.status||Ur.status;!t||!e||e===n||(be(e),await He(t,e,{reloadTimeline:!0,rollbackStatus:n}))}async function tt(e=null){let t=e?pe.trim():I.trim();if(!t)return;let n=A.entry?.application?.id;if(n)try{await H(`/api/applications/${n}/notes`,{text:t,parent_event_id:e}),e?(me(``),fe(null)):ne(``),await Je(n),r(`Notiz hinzugefügt.`,`success`)}catch(e){r(`Notiz konnte nicht gespeichert werden: ${e.message}`,`danger`)}}async function nt(e){let t=R.trim();if(!t)return;let n=A.entry?.application?.id;if(n)try{await U(`/api/applications/${n}/notes/${e}`,{text:t}),ie(null),ae(``),await Je(n),r(`Notiz aktualisiert.`,`success`)}catch(e){r(`Notiz konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function rt(e){let t=A.entry?.application?.id;if(t)try{await Dt(`/api/applications/${t}/notes/${e}`),await Je(t),r(`Notiz gelöscht.`,`success`)}catch(e){r(`Notiz konnte nicht gelöscht werden: ${e.message}`,`danger`)}}async function it(e){let t=A.entry?.application?.id;if(!t)return;let n=(se||``).trim();if(!n){r(`Bitte ein Datum eingeben.`,`danger`);return}try{await U(`/api/applications/${t}/events/${e}/date`,{event_date:n}),z(null),ce(``),await Je(t),r(`Event-Datum korrigiert.`,`success`)}catch(e){r(`Datum konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function ot(e){let t=A.entry?.application?.id;if(t)try{await H(`/api/applications/${t}/link-document`,{document_id:e}),await Je(t),r(`Dokument verknüpft.`,`success`)}catch(e){r(`Verknüpfung fehlgeschlagen: ${e.message}`,`danger`)}}if(c)return(0,W.jsx)($n,{label:`Bewerbungen werden geladen...`});let st=new Set(f.filter(e=>e.faellig).map(e=>e.application_id).filter(Boolean)),ct=new Set(g.map(e=>e.id).filter(Boolean)),lt=u.filter(e=>{let t=`${e.title||``} ${e.company||``} ${e.notes||``}`.toLowerCase(),n=!Re||t.includes(Re.toLowerCase()),r=!S.status||(S.status===`interview`?Gr.includes(e.status):e.status===S.status),i=(!S.fromDate||(e.applied_at||``)>=S.fromDate)&&(!S.toDate||(e.applied_at||``)<=S.toDate+`T23:59:59`),a=!S.stellenart||(S.stellenart===`freelance`?e.job_employment_type&&e.job_employment_type!==`festanstellung`:e.job_employment_type===`festanstellung`||!e.job_employment_type),o=!v||v===`followups_due`&&st.has(e.id)||v===`zombies`&&ct.has(e.id);return n&&r&&i&&a&&o}),dt={angebot:0,interview_abgeschlossen:1,zweitgespraech:2,interview:3,warte_auf_rueckmeldung:4,eingangsbestaetigung:5,beworben:6,in_vorbereitung:7,entwurf:8,angenommen:9,abgelehnt:10,zurueckgezogen:11,abgelaufen:12},ft=[...lt].sort((e,t)=>{if(T===`firma`)return(e.company||``).localeCompare(t.company||``,`de`);if(T===`status`){let n=dt[e.status]??99,r=dt[t.status]??99;return n===r?(t.applied_at||``).localeCompare(e.applied_at||``):n-r}return(t.applied_at||t.created_at||``).localeCompare(e.applied_at||e.created_at||``)}),pt=f.filter(e=>e.faellig),ht=Number(b.archivedCount||0),_t=u.filter(e=>!Wr.includes(e.status)).length,yt=u.filter(e=>Wr.includes(e.status)).length,bt=u.filter(e=>Gr.includes(e.status)).length,xt=u.filter(e=>[`in_vorbereitung`,`entwurf`].includes(e.status)).length,St=Number(e.workspace?.jobs?.active||0),Ct=u.map(e=>Date.parse(e?.applied_at||e?.created_at||e?.updated_at||``)).filter(e=>Number.isFinite(e)),wt=(()=>{if(!u.length)return 0;if(!Ct.length)return u.length;let e=Math.min(...Ct),t=Math.max(1,Math.ceil((Date.now()-e)/(1e3*60*60*24))+1);return u.length/(t/7)})(),Et=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:wt>0&&wt<10?1:0,maximumFractionDigits:wt>0&&wt<10?1:0}).format(wt),Ot=(()=>{if(pt.length>0)return{badge:`Priorität 1`,tone:`danger`,title:`Fällige Nachfassaktionen zuerst schließen`,description:`${pt.length} Follow-up(s) sind fällig oder überfällig. Aktualisiere Status und Notizen, bevor neue Fälle liegen bleiben.`,actionLabel:`Fällige anzeigen`,action:()=>{y(`followups_due`),setTimeout(()=>{let e=document.getElementById(`offene-aktionen`);e?.scrollIntoView&&e.scrollIntoView({behavior:`smooth`,block:`start`})},50)}};if(xt>0){let e=u.some(e=>e.status===`in_vorbereitung`)?`in_vorbereitung`:`entwurf`;return{badge:`Entwürfe`,tone:`amber`,title:`Fast fertige Bewerbungen abschließen`,description:`${xt} Bewerbung(en) stehen noch auf Entwurf oder Vorbereitung. Zieh zuerst die halbfertigen Fälle über die Ziellinie.`,actionLabel:`Entwürfe filtern`,action:()=>C(t=>({...t,status:e,showArchived:!1}))}}return!_t&&St>0?{badge:`Start`,tone:`sky`,title:`Aus vorhandenen Stellen die erste Bewerbung machen`,description:`${St} aktive Stellen sind da, aber noch keine aktive Bewerbung. Nutze eine Stelle als Startpunkt oder lege manuell eine Bewerbung an.`,actionLabel:`Bewerbung anlegen`,action:()=>O({open:!0,draft:Ur})}:bt>0?{badge:`Interview`,tone:`amber`,title:`Interview-Phase eng begleiten`,description:`${bt} Bewerbung(en) stehen im Interview oder Zweitgespräch. Halte Status, Termine und Notizen bewusst zusammen.`,actionLabel:`Interview filtern`,action:()=>C(e=>({...e,status:`interview`,showArchived:!1}))}:ht>0&&!S.showArchived&&!Wr.includes(S.status)?{badge:`Archiv`,tone:`neutral`,title:`Archivierte Bewerbungen bleiben bewusst aus dem Weg`,description:`${ht} ältere Fälle liegen im Archiv. Blende sie nur ein, wenn du Gründe, Quellen oder alte Kontakte prüfen willst.`,actionLabel:`Archiv einblenden`,action:()=>C(e=>({...e,showArchived:!0}))}:{badge:`Auf Kurs`,tone:`success`,title:`Bewerbungsboard ist gerade sauber`,description:`Im Moment ist nichts akut liegen geblieben. Nutze die Liste für klare Statuspflege statt nur zum Sammeln.`}})();return(0,W.jsxs)(`div`,{id:`page-bewerbungen`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Bewerbungen`}),(0,W.jsx)(Lr,{page:`bewerbungen`}),M&&(0,W.jsx)(Rr,{jobHash:M,onClose:()=>N(null)}),(0,W.jsx)(`div`,{className:`mb-6 flex items-baseline justify-end gap-4`,children:(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(Un,{size:`sm`,href:Tt(`/api/cv/export/docx`),target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ge,{size:14}),`CV als DOCX`]}),(0,W.jsxs)(K,{size:`sm`,onClick:()=>O({open:!0,draft:Ur}),children:[(0,W.jsx)(qe,{size:14}),`Bewerbung`]})]})}),(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,W.jsx)(Kn,{label:S.showArchived||Wr.includes(S.status)?`Sichtbare Bewerbungen`:`Aktive Bewerbungen`,value:S.showArchived||Wr.includes(S.status)?u.length:_t,note:ht>0?`${_t} aktiv · ${ht} archiviert`:`${St} aktive Stellen im Board`,tone:`sky`}),(0,W.jsx)(Kn,{label:`Bewerbungen pro Woche`,value:Et,note:`Ø seit erster Bewerbung`,tone:`sky`}),(0,W.jsx)(Kn,{label:`Follow-ups`,value:pt.length,note:`Offene Nachfassaktionen`,tone:pt.length?`danger`:`neutral`}),(0,W.jsx)(Kn,{label:`Interviews`,value:bt,note:`Aktive Interview-Phase`,tone:`amber`})]}),(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(J,{tone:Ot.tone,children:Ot.badge}),ht>0&&!S.showArchived&&!Wr.includes(S.status)?(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[ht,` archivierte Fälle sind aktuell ausgeblendet.`]}):null]}),(0,W.jsx)(`h2`,{className:`mt-3 text-base font-semibold text-ink`,children:Ot.title}),(0,W.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:Ot.description})]}),Ot.actionLabel?(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:Ot.action,children:Ot.actionLabel}):null]})}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Filter`,description:`Schneller Blick auf einzelne Status-Cluster.`}),v&&(0,W.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 rounded-xl border border-sky/25 bg-sky/10 px-3 py-2 text-xs text-sky`,children:[(0,W.jsx)(`span`,{className:`font-semibold`,children:v===`followups_due`?`Filter: Nachfrage faellig`:`Filter: Seit > 60 Tagen ohne Antwort`}),(0,W.jsxs)(`span`,{className:`text-muted/60`,children:[`(`,lt.length,v===`followups_due`?` von ${st.size}`:` von ${ct.size}`,`)`]}),(0,W.jsx)(`button`,{type:`button`,className:`ml-auto rounded-md px-2 py-0.5 hover:bg-sky/20`,onClick:()=>y(null),children:`Filter zuruecksetzen`})]}),(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(K,{size:`sm`,variant:S.showArchived?`secondary`:`ghost`,onClick:()=>C(e=>({...e,showArchived:!e.showArchived})),children:[(0,W.jsx)(k,{size:14}),S.showArchived?`Archiv eingeblendet`:`Archivierte anzeigen`]}),ht>0?(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[ht,` archivierte Bewerbung(en)`,yt>0?`, davon ${yt} sichtbar`:``,`.`]}):(0,W.jsx)(`span`,{className:`text-xs text-muted/50`,children:`Zurzeit keine archivierten Bewerbungen.`})]}),(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-[minmax(0,1fr)_14rem_10rem_10rem_10rem]`,children:[(0,W.jsx)(Y,{label:`Suche`,children:(0,W.jsx)(X,{value:S.query,onChange:e=>C(t=>({...t,query:e.target.value})),placeholder:`Titel, Firma oder Notizen`})}),(0,W.jsx)(Y,{label:`Status`,children:(0,W.jsxs)(Xn,{value:S.status,onChange:e=>C(t=>({...t,status:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Alle`}),(0,W.jsx)(`option`,{value:`in_vorbereitung`,children:`In Vorbereitung`}),(0,W.jsx)(`option`,{value:`entwurf`,children:`Entwurf`}),(0,W.jsx)(`option`,{value:`beworben`,children:`Beworben`}),(0,W.jsx)(`option`,{value:`interview`,children:`Interview`}),(0,W.jsx)(`option`,{value:`zweitgespraech`,children:`Zweitgespräch`}),(0,W.jsx)(`option`,{value:`interview_abgeschlossen`,children:`Interview abgeschlossen`}),(0,W.jsx)(`option`,{value:`angebot`,children:`Angebot`}),(0,W.jsx)(`option`,{value:`abgelehnt`,children:`Abgelehnt`}),(0,W.jsx)(`option`,{value:`zurueckgezogen`,children:`Zurückgezogen`}),(0,W.jsx)(`option`,{value:`abgelaufen`,children:`Abgelaufen`})]})}),(0,W.jsx)(Y,{label:`Stellenart`,children:(0,W.jsxs)(Xn,{value:S.stellenart,onChange:e=>C(t=>({...t,stellenart:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Alle`}),(0,W.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,W.jsx)(`option`,{value:`freelance`,children:`Freelance`})]})}),(0,W.jsx)(Y,{label:`Von`,children:(0,W.jsx)(X,{type:`date`,value:S.fromDate,onChange:e=>C(t=>({...t,fromDate:e.target.value}))})}),(0,W.jsx)(Y,{label:`Bis`,children:(0,W.jsx)(X,{type:`date`,value:S.toDate,onChange:e=>C(t=>({...t,toDate:e.target.value}))})})]})]}),(f.length>0||m.length>0)&&(0,W.jsxs)(`div`,{id:`offene-aktionen`,className:`mb-6 grid gap-4 xl:grid-cols-[2fr_1fr]`,children:[(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(Gn,{title:`Offene Aktionen (${m.length+f.length})`}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>i(`kalender`,{filter:`followups`}),children:`Alle im Kalender`})]}),(0,W.jsxs)(`div`,{className:`grid gap-1.5`,children:[m.slice(0,5).map(e=>(0,W.jsxs)(`div`,{title:`${e.title||`Termin`} — ${e.app_company||``}`,onClick:()=>e.application_id?Ke({id:e.application_id}):i(`kalender`),className:`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm cursor-pointer transition-colors min-w-0 bg-teal/8 border border-teal/15 hover:bg-teal/15`,children:[(0,W.jsx)(te,{size:14,className:`shrink-0 text-teal`}),(0,W.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-ink font-medium`,children:[e.title||`Termin`,e.app_company?` \u2014 ${e.app_company}`:``]}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted/50`,children:bn(e.meeting_date)}),(0,W.jsx)(J,{tone:`success`,children:`Termin`})]},`m-${e.id}`)),m.length>5&&(0,W.jsxs)(`p`,{className:`text-xs text-muted/40 px-3 pt-1`,children:[`+`,m.length-5,` weitere Termine im Kalender`]}),f.slice(0,5).map(e=>(0,W.jsxs)(`div`,{title:`${e.title} — ${e.company}`,onClick:()=>Ke({id:e.application_id}),className:G(`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm cursor-pointer transition-colors min-w-0`,e.faellig?`bg-coral/8 border border-coral/15 hover:bg-coral/15`:`bg-white/[0.03] border border-white/5 hover:bg-white/[0.07]`),children:[(0,W.jsx)(F,{size:14,className:G(`shrink-0`,e.faellig?`text-coral`:`text-muted/40`)}),(0,W.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-ink font-medium`,children:[e.title,` — `,e.company]}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted/50`,children:bn(e.scheduled_date)}),(0,W.jsx)(J,{tone:e.faellig?`danger`:`sky`,children:e.faellig?`Fällig`:`Geplant`}),(0,W.jsx)(`button`,{type:`button`,title:`Als erledigt markieren`,onClick:t=>Ve(e.id,t),className:`shrink-0 rounded-md p-1 text-teal/70 hover:bg-teal/10 hover:text-teal transition-colors`,children:(0,W.jsx)(re,{size:15})})]},e.id)),f.length>5&&(0,W.jsxs)(`p`,{className:`text-xs text-muted/40 px-3 pt-1`,children:[`+`,f.length-5,` weitere Nachfragen im Kalender`]})]})]}),(0,W.jsxs)(q,{className:`rounded-2xl xl:self-start`,children:[(0,W.jsxs)(`h2`,{className:`text-sm font-semibold text-ink`,children:[(0,W.jsx)(ut,{size:14,className:`mr-1.5 inline-block text-teal/60`}),`Schnell-Import`]}),(0,W.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/50`,children:`Dokumente oder E-Mails hier ablegen.`}),(0,W.jsx)(`div`,{className:`mt-3 grid gap-2`,children:(0,W.jsx)(qr,{pushToast:r,onImported:()=>loadData()})}),(0,W.jsx)(`div`,{className:`mt-3 rounded-lg border border-dashed border-white/10 p-4 text-center text-xs text-muted/40`,children:`Dateien per Drag & Drop auf die Seite ziehen`})]})]}),(0,W.jsx)(`div`,{children:(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 mb-4`,children:[(0,W.jsx)(Gn,{title:`Bewerbungen`,description:`Statuswechsel werden direkt in der Historie vermerkt.`}),(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:[[`neueste`,`Neueste`],[`status`,`Status`],[`firma`,`Firma A-Z`]].map(([e,t])=>(0,W.jsx)(`button`,{type:`button`,className:G(`rounded-lg px-3 py-1.5 text-xs font-medium transition`,T===e?`bg-sky/20 text-sky`:`text-muted hover:text-ink hover:bg-white/5`),onClick:()=>E(e),children:t},e))})]}),(0,W.jsx)(`div`,{className:`grid gap-4`,children:ft.length?ft.map(e=>(0,W.jsxs)(q,{className:G(`flex flex-col rounded-xl shadow-none`,e.job_employment_type&&e.job_employment_type!==`festanstellung`?`border border-emerald-600/40 bg-emerald-950/20`:`glass-card-soft`),children:[(0,W.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(J,{tone:Cn(e.status),children:e.status||`offen`}),(0,W.jsx)(`button`,{className:`font-mono text-[10px] text-muted/40 hover:text-sky cursor-pointer transition-colors`,title:`ID: ${e.id} — Klicken zum Kopieren`,onClick:t=>{t.stopPropagation(),navigator.clipboard.writeText(e.id),r(`ID ${e.id.slice(0,8)} kopiert`,`success`)},children:e.id?.slice(0,8)}),(0,W.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:bn(e.applied_at)}),e.applied_at&&(()=>{let t=Math.floor((Date.now()-Date.parse(e.applied_at))/864e5);return t>0?(0,W.jsxs)(`span`,{className:`text-xs text-muted/40`,children:[`vor `,t,`d`]}):null})(),e.document_count>0&&(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs text-muted/50`,children:[(0,W.jsx)(xe,{size:12}),` `,e.document_count]}),e.is_imported?(0,W.jsx)(J,{tone:`neutral`,children:`Import`}):null,e.bewerbungsart&&e.bewerbungsart!==`mit_dokumenten`&&(0,W.jsx)(J,{tone:`neutral`,children:e.bewerbungsart===`ueber_portal`?`Portal`:e.bewerbungsart===`elektronisch`?`E-Mail`:e.bewerbungsart}),e.job_employment_type&&e.job_employment_type!==`festanstellung`&&(0,W.jsx)(J,{tone:`success`,children:`Freelance`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`h3`,{className:`text-xl font-semibold text-ink cursor-pointer hover:text-sky transition-colors`,onClick:()=>Ke(e),children:e.title}),e.url?(0,W.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-muted/40 hover:text-sky transition-colors`,title:`Stellenanzeige öffnen`,children:(0,W.jsx)(ve,{size:14})}):null]}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[e.company,e.ansprechpartner?` — ${e.ansprechpartner}`:``]}),e.notes?(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:Pn(e.notes,150)}):null,e.last_note?(0,W.jsxs)(`p`,{className:`text-xs text-muted/40 truncate`,children:[`Letzte Notiz: `,Pn(e.last_note,100)]}):null]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-3 border-t border-white/[0.06] pt-4`,children:[(0,W.jsx)(Xn,{value:e.status||`beworben`,onChange:t=>He(e.id,t.target.value),children:vn.map(e=>(0,W.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,W.jsxs)(K,{variant:`secondary`,onClick:()=>Ke(e),children:[(0,W.jsx)(gt,{size:15}),`Timeline`]}),e.url&&(0,W.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:(0,W.jsxs)(K,{variant:`secondary`,type:`button`,onClick:e=>e.stopPropagation(),children:[(0,W.jsx)(ve,{size:15}),`Stellenanzeige`]})})]})]},e.id)):(0,W.jsx)(Qn,{title:ht>0&&!S.showArchived?`Keine aktiven Bewerbungen im Filter`:`Noch keine Bewerbungen`,description:ht>0&&!S.showArchived?`Aktive Bewerbungen passen gerade nicht zum Filter. Archivierte Fälle kannst du oben gezielt einblenden.`:`Lege eine neue Bewerbung an oder übernimm sie direkt aus einer Stelle.`,action:(0,W.jsx)(K,{onClick:()=>O({open:!0,draft:Ur}),children:`Bewerbung anlegen`})})})]})})]}),(0,W.jsx)(er,{open:D.open,title:`Neue Bewerbung`,onClose:()=>O({open:!1,draft:Ur}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>O({open:!1,draft:Ur}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:Ge,children:`Bewerbung speichern`})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[[`title`,`company`,`url`,`applied_at`].map(e=>(0,W.jsx)(Y,{label:e,children:(0,W.jsx)(X,{value:D.draft[e]||``,onChange:t=>O(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e)),(0,W.jsx)(Y,{label:`Status`,children:(0,W.jsx)(Xn,{value:D.draft.status,onChange:e=>O(t=>({...t,draft:{...t.draft,status:e.target.value}})),children:vn.filter(e=>![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.value)).map(e=>(0,W.jsx)(`option`,{value:e.value,children:e.label},e.value))})}),(0,W.jsx)(Y,{label:`Notizen`,children:(0,W.jsx)(Jn,{rows:4,value:D.draft.notes,onChange:e=>O(t=>({...t,draft:{...t.draft,notes:e.target.value}}))})})]})}),(0,W.jsx)(er,{open:A.open,title:`Timeline - ${A.entry?.application?.title||``}`,onClose:()=>j({open:!1,entry:null}),size:`xl`,footer:(()=>{let e=A.entry?.application?.id,t=t=>{let n=new URLSearchParams;return t.dokumente?n.set(`dokumente`,`1`):n.set(`dokumente`,`0`),t.mails?n.set(`mails`,`1`):n.set(`mails`,`0`),t.pdf&&n.set(`pdf`,`1`),`/api/application/${e}/export.zip?${n}`};return(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(Un,{size:`sm`,href:`/api/application/${e}/timeline/print`,target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ge,{size:14}),` Protokoll drucken`]}),(0,W.jsxs)(Un,{size:`sm`,variant:`ghost`,href:t({dokumente:!0,mails:!0,pdf:!1}),title:`Komplettes Dossier als ZIP herunterladen (Bericht, Stelle, Notizen, Termine.ics, Mails, Dokumente)`,children:[(0,W.jsx)(ge,{size:14}),` Als ZIP exportieren`]}),(0,W.jsxs)(Un,{size:`sm`,variant:`ghost`,href:t({dokumente:!0,mails:!0,pdf:!0}),title:`ZIP mit zusaetzlichem PDF-Bericht (etwas langsamer, da Browser im Hintergrund rendert)`,children:[(0,W.jsx)(ge,{size:14}),` ZIP + PDF`]})]}),(0,W.jsx)(K,{onClick:()=>j({open:!1,entry:null}),children:`Schließen`})]})})(),children:(0,W.jsxs)(`div`,{className:`grid gap-5`,children:[A.entry?.application&&(()=>{let e=A.entry.application;return(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Bewerbung`}),(0,W.jsx)(`button`,{className:`font-mono text-[10px] text-muted/30 hover:text-sky cursor-pointer`,title:`Bewerbung-ID: ${e.id}`,onClick:()=>{navigator.clipboard.writeText(e.id),r(`ID ${e.id?.slice(0,8)} kopiert`,`success`)},children:e.id?.slice(0,8)}),e.job_hash&&(0,W.jsxs)(`button`,{className:`font-mono text-[10px] text-muted/30 hover:text-sky cursor-pointer`,title:`Stelle anzeigen`,onClick:()=>N(e.job_hash),children:[(0,W.jsx)(ve,{size:8,className:`mr-0.5 inline`}),`Stelle: `,e.job_hash?.slice(0,8)]})]}),(0,W.jsx)(`h3`,{className:`mt-1 text-base font-semibold text-ink`,children:e.title}),(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:e.company}),(e.vermittler||e.endkunde)&&(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2 text-xs text-muted/60`,children:[e.vermittler&&(0,W.jsxs)(`span`,{children:[`Vermittler: `,e.vermittler]}),e.endkunde&&(0,W.jsxs)(`span`,{children:[`Endkunde: `,e.endkunde]})]})]}),(0,W.jsx)(J,{tone:Cn(e.status),children:e.status})]}),(e.ansprechpartner||e.kontakt_email)&&(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-3 text-sm text-muted/70`,children:[e.ansprechpartner&&(0,W.jsxs)(`span`,{children:[`Kontakt: `,e.ansprechpartner]}),e.kontakt_email&&(()=>{let t=jn({to:e.kontakt_email});return t?(0,W.jsx)(`a`,{href:t,className:`text-sky hover:underline`,children:e.kontakt_email}):(0,W.jsx)(`span`,{children:e.kontakt_email})})()]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-3`,children:[e.portal_name&&(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Portal: `,e.portal_name]}),(e.url||A.entry.job?.url)&&(0,W.jsxs)(`a`,{href:e.url||A.entry.job?.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-sky hover:underline`,children:[(0,W.jsx)(ve,{size:12}),`Stellenanzeige öffnen`]})]}),(0,W.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[e.applied_at&&(0,W.jsxs)(`span`,{className:`text-xs text-muted/40`,children:[`Beworben am: `,bn(e.applied_at)]}),e.is_imported?(0,W.jsx)(J,{tone:`neutral`,children:`Importiert`}):null]}),(0,W.jsxs)(`details`,{className:`mt-3 border-t border-white/[0.06] pt-3`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-sm font-medium text-muted/60 hover:text-ink flex items-center gap-1.5`,children:[(0,W.jsx)(We,{size:13}),`Bewerbung bearbeiten`]}),(0,W.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[[{key:`title`,label:`Stellentitel`},{key:`company`,label:`Firma (Endkunde)`},{key:`vermittler`,label:`Vermittler`},{key:`endkunde`,label:`Endkunde`},{key:`ansprechpartner`,label:`Ansprechpartner`},{key:`kontakt_email`,label:`Kontakt-E-Mail`},{key:`gehaltsvorstellung`,label:`Gehaltsvorstellung`,placeholder:`z.B. 65.000€/Jahr, 850€/Tag`},{key:`final_salary`,label:`Tatsächliches Gehalt (nach Zusage)`,placeholder:`z.B. 72.000€/Jahr`},{key:`portal_name`,label:`Portal`},{key:`url`,label:`URL`}].map(({key:t,label:n,placeholder:i})=>(0,W.jsx)(Y,{label:n,children:(0,W.jsx)(X,{defaultValue:e[t]||``,placeholder:i||``,onBlur:async i=>{let a=i.target.value;if(a!==(e[t]||``))try{await U(`/api/applications/${e.id}`,{[t]:a}),await Je(e.id),r(`${n} aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}}})},t)),(0,W.jsx)(Y,{label:`Stellenart`,children:(0,W.jsxs)(Xn,{value:e.job_employment_type||`festanstellung`,onChange:async t=>{let n=t.target.value;try{await U(`/api/applications/${e.id}`,{employment_type:n}),await Je(e.id),r(`Stellenart aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},children:[(0,W.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,W.jsx)(`option`,{value:`freelance`,children:`Freelance`}),(0,W.jsx)(`option`,{value:`praktikum`,children:`Praktikum`}),(0,W.jsx)(`option`,{value:`werkstudent`,children:`Werkstudent`})]})}),(0,W.jsx)(Y,{label:`Bewerbungsdatum`,children:(0,W.jsx)(X,{type:`date`,defaultValue:(e.applied_at||``).slice(0,10),onBlur:async t=>{let n=t.target.value;if(n!==(e.applied_at||``).slice(0,10))try{await U(`/api/applications/${e.id}`,{applied_at:n}),await Je(e.id),r(`Bewerbungsdatum aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}}})}),(0,W.jsx)(Y,{label:`Importiert`,children:(0,W.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer mt-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,defaultChecked:!!e.is_imported,onChange:async t=>{try{await U(`/api/applications/${e.id}`,{is_imported:t.target.checked?1:0}),await Je(e.id),r(t.target.checked?`Als importiert markiert.`:`Import-Markierung entfernt.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},className:`rounded border-white/20 bg-white/5 text-sky focus:ring-sky/30`}),(0,W.jsx)(`span`,{className:`text-sm text-muted/60`,children:`Bewerbung existierte vor PBP`})]})})]})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-end gap-3 border-t border-white/[0.06] pt-4`,children:[(0,W.jsx)(Y,{className:`min-w-[14rem] flex-1`,label:`Status direkt ändern`,children:(0,W.jsx)(Xn,{value:ye,onChange:e=>et(e.target.value),children:vn.map(e=>(0,W.jsx)(`option`,{value:e.value,children:e.label},e.value))})}),(0,W.jsx)(`p`,{className:`pb-2 text-xs text-muted/50`,children:`Der Status wird sofort gespeichert und als Timeline-Eintrag protokolliert.`})]})]})})(),A.entry?.job?(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Stellendetails`}),(0,W.jsx)(`h3`,{className:`mt-2 text-base font-semibold text-ink`,children:A.entry.job.title}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[A.entry.job.company,A.entry.job.location?` — ${A.entry.job.location}`:``]}),(0,W.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,W.jsx)(J,{tone:`sky`,children:A.entry.job.source||`Quelle`}),(0,W.jsxs)(J,{tone:`amber`,children:[`Score `,A.entry.job.score||0]}),A.entry.job.remote_level&&A.entry.job.remote_level!==`unbekannt`?(0,W.jsx)(J,{tone:`success`,children:A.entry.job.remote_level}):null]}),A.entry.job.salary_min?(0,W.jsxs)(`p`,{className:`mt-2 text-sm text-ink`,children:[`Gehalt: `,Sn(A.entry.job.salary_min),A.entry.job.salary_max?` bis ${Sn(A.entry.job.salary_max)}`:``,A.entry.job.salary_estimated?` (geschätzt)`:``]}):null,A.entry.job.url&&(0,W.jsx)(`a`,{href:A.entry.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`mt-2 inline-flex items-center gap-1 text-sm text-sky hover:underline`,children:`Stellenanzeige öffnen`}),A.entry.job.description&&(0,W.jsxs)(`details`,{className:`mt-3`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium text-muted/60 hover:text-ink`,children:`Stellenbeschreibung anzeigen`}),(0,W.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto rounded-lg bg-white/[0.02] p-3 text-sm text-muted/70 whitespace-pre-wrap`,children:A.entry.job.description})]})]}):null,A.entry?.job?(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Firmen-Recherche`}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>{let e=A.entry.application||{};s(`/firmen_recherche firma="${e.endkunde&&e.endkunde.trim()||e.company&&e.company.trim()||A.entry.job?.company||``}"`)},children:`Mit Claude aktualisieren`})]}),(0,W.jsx)(Jn,{rows:6,value:Me,onChange:e=>Pe(e.target.value),placeholder:`Notizen zur Firma — Kennzahlen, Kultur, News, Ansprechpartner. Claude kann das per Button oben generieren.`,className:`mt-2`}),(0,W.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,W.jsx)(K,{size:`sm`,disabled:Fe||Me===(A.entry?.job?.research_notes||``),onClick:async()=>{Le(!0);try{await U(`/api/applications/${A.entry.application.id}/research-notes`,{research_notes:Me}),r(`Firmen-Recherche gespeichert.`,`success`),await Je(A.entry.application.id)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{Le(!1)}},children:`Speichern`})})]}):null,A.entry?.application?(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Recherchen`}),Array.isArray(A.entry.recherchen)&&A.entry.recherchen.length>0?(0,W.jsx)(`div`,{className:`mt-2 space-y-2`,children:A.entry.recherchen.map(e=>(0,W.jsxs)(`details`,{className:`rounded-lg border border-white/5 bg-white/[0.02] px-3 py-2`,children:[(0,W.jsxs)(`summary`,{className:`flex cursor-pointer items-center justify-between gap-2 text-xs`,children:[(0,W.jsx)(`span`,{className:`font-semibold text-foreground/90`,children:Kr[e.kategorie]||e.kategorie}),(0,W.jsx)(`span`,{className:`text-[10px] text-muted/60`,children:e.datum})]}),(0,W.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-foreground/80`,children:e.text})]},e.id))}):(0,W.jsxs)(`p`,{className:`mt-2 text-xs text-muted/60`,children:[`Noch keine Recherchen gespeichert. Claude legt sie via`,` `,`firmen_recherche, skill_gap_analyse oder recherche_speichern an.`]})]}):null,A.entry?.application?.fit_analyse?(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Fit-Analyse`}),(0,W.jsxs)(`div`,{className:`mt-2 space-y-1 text-sm`,children:[A.entry.application.fit_analyse.total_score!=null&&(0,W.jsxs)(`p`,{className:`text-ink font-medium`,children:[`Fit-Score: `,A.entry.application.fit_analyse.total_score,`/10`]}),A.entry.application.fit_analyse.summary&&(0,W.jsx)(`p`,{className:`text-muted/70`,children:A.entry.application.fit_analyse.summary}),(A.entry.application.fit_analyse.muss_hits||[]).length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:A.entry.application.fit_analyse.muss_hits.map((e,t)=>(0,W.jsx)(J,{tone:`success`,children:e},t))}),(A.entry.application.fit_analyse.risks||[]).length>0&&(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:A.entry.application.fit_analyse.risks.map((e,t)=>(0,W.jsx)(J,{tone:`danger`,children:e},t))})]})]}):null,(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Dokumente`}),(A.entry?.documents||[]).length>0&&(0,W.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:A.entry.documents.map(e=>(0,W.jsxs)(`a`,{href:`/api/documents/${e.id}/download`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-2 text-sm text-ink hover:text-sky transition-colors cursor-pointer rounded-lg px-2 py-1.5 -mx-2 hover:bg-white/[0.04]`,children:[(0,W.jsx)(xe,{size:14,className:`shrink-0 text-muted/50`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.filename}),e.doc_type?(0,W.jsx)(J,{tone:`sky`,children:e.doc_type}):null,(0,W.jsx)(ve,{size:12,className:`shrink-0 ml-auto text-muted/30`})]},e.id))}),(0,W.jsxs)(`div`,{className:`mt-3 border-2 border-dashed border-white/10 rounded-lg p-4 text-center hover:border-sky/30 hover:bg-sky/[0.02] transition-all cursor-pointer`,onDragOver:e=>{e.preventDefault(),e.currentTarget.classList.add(`border-sky/40`,`bg-sky/[0.05]`)},onDragLeave:e=>{e.currentTarget.classList.remove(`border-sky/40`,`bg-sky/[0.05]`)},onDrop:async e=>{e.preventDefault(),e.currentTarget.classList.remove(`border-sky/40`,`bg-sky/[0.05]`);let{extractDroppedFiles:t}=await Hr(async()=>{let{extractDroppedFiles:e}=await Promise.resolve().then(()=>nn);return{extractDroppedFiles:e}},void 0),{uploadDocumentFile:n}=await Hr(async()=>{let{uploadDocumentFile:e}=await Promise.resolve().then(()=>Yt);return{uploadDocumentFile:e}},void 0),i=await t(e.dataTransfer),a=A.entry?.application?.id;for(let e of i)try{let t=(await n(e,`sonstiges`,{applicationId:a}))?.duplicate_of?`verknuepft (war schon vorhanden)`:`hochgeladen und verknuepft`;r(`'${e.name}' ${t}.`,`success`)}catch(e){r(`Upload fehlgeschlagen: ${e.message}`,`danger`)}a&&await Je(a)},onClick:()=>{let e=document.createElement(`input`);e.type=`file`,e.multiple=!0,e.accept=`.pdf,.docx,.doc,.txt,.msg,.eml`,e.onchange=async e=>{let{uploadDocumentFile:t}=await Hr(async()=>{let{uploadDocumentFile:e}=await Promise.resolve().then(()=>Yt);return{uploadDocumentFile:e}},void 0),n=A.entry?.application?.id;for(let i of e.target.files)try{let e=(await t(i,`sonstiges`,{applicationId:n}))?.duplicate_of?`verknuepft (war schon vorhanden)`:`hochgeladen und verknuepft`;r(`'${i.name}' ${e}.`,`success`)}catch(e){r(`Upload fehlgeschlagen: ${e.message}`,`danger`)}n&&await Je(n)},e.click()},children:[(0,W.jsx)(ut,{size:20,className:`mx-auto text-muted/30`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted/50`,children:`Datei hierher ziehen oder klicken zum Upload`})]}),he.length>0&&(0,W.jsxs)(`details`,{className:`mt-2`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-xs text-muted/50 hover:text-sky flex items-center gap-1`,children:[(0,W.jsx)(ke,{size:12}),` Vorhandenes Dokument verknüpfen`]}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-1 max-h-40 overflow-y-auto`,children:he.filter(e=>!e.linked_application_id).slice(0,20).map(e=>(0,W.jsxs)(`button`,{className:`flex items-center gap-2 text-xs text-ink hover:text-sky rounded px-2 py-1 hover:bg-white/[0.04] text-left w-full`,onClick:()=>ot(e.id),children:[(0,W.jsx)(xe,{size:12,className:`shrink-0 text-muted/40`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.filename})]},e.id))})]})]}),(0,W.jsx)(Qr,{applicationId:A.entry?.application?.id,pushToast:r}),(0,W.jsx)(Yr,{applicationId:A.entry?.application?.id,pushToast:r}),(0,W.jsx)(Zr,{applicationId:A.entry?.application?.id,pushToast:r}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,W.jsx)(re,{size:12,className:`mr-1 inline`}),`Aufgaben (`,Te.filter(e=>e.status===`offen`).length,` offen)`]}),(0,W.jsxs)(`div`,{className:`mt-2 grid gap-1.5`,children:[Te.length===0&&(0,W.jsx)(`p`,{className:`text-xs text-muted/50 px-1`,children:`Noch keine Aufgaben. Lege unten eine an.`}),Te.map(e=>{let t=e.status===`erledigt`,n=!t&&e.faellig_am&&e.faellig_amQe(e),className:`shrink-0 rounded-md p-1 transition-colors ${t?`text-teal`:`text-muted/40 hover:text-teal hover:bg-teal/10`}`,children:(0,W.jsx)(re,{size:14})}),(0,W.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-sm ${t?`text-muted/40 line-through`:`text-ink`}`,children:[e.titel,e.faellig_am?(0,W.jsxs)(`span`,{className:`ml-2 text-xs ${n?`font-semibold text-coral`:`text-muted/50`}`,children:[n?`überfällig: `:`bis `,bn(e.faellig_am)]}):null]}),(0,W.jsx)(`button`,{type:`button`,title:`Loeschen`,onClick:()=>$e(e),className:`shrink-0 rounded-md p-1 text-muted/30 hover:text-coral hover:bg-coral/10 transition-colors`,children:(0,W.jsx)(at,{size:13})})]},e.id)})]}),(0,W.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,W.jsx)(X,{className:`flex-1`,value:De,onChange:e=>Oe(e.target.value),placeholder:`Neue Aufgabe (z.B. Gehalt recherchieren)`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),Ze())}}),(0,W.jsx)(`input`,{type:`date`,value:Ae,onChange:e=>je(e.target.value),title:`Erledigt bis (optional)`,className:`shrink-0 rounded-lg border border-white/10 bg-white/[0.03] px-2 py-1.5 text-sm text-ink [color-scheme:dark]`}),(0,W.jsx)(K,{type:`button`,variant:`secondary`,onClick:Ze,disabled:!De.trim(),children:(0,W.jsx)(qe,{size:14})})]})]}),Se.length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,W.jsx)(te,{size:12,className:`mr-1 inline`}),`Termine (`,Se.length,`)`]}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:Se.map(e=>{let t=new Date(e.meeting_date),n=t{confirm(`Termin wirklich löschen?`)&&(await Dt(`/api/meetings/${e.id}`),r(`Termin gelöscht.`,`success`),loadTimeline())},className:`inline-flex items-center rounded bg-white/5 px-1.5 py-1 text-[10px] text-muted/40 hover:bg-danger/15 hover:text-danger`,title:`Termin löschen`,children:(0,W.jsx)(at,{size:10})}),e.meeting_url&&!n&&(0,W.jsxs)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 rounded bg-teal/15 px-2 py-1 text-[11px] font-semibold text-teal hover:bg-teal/25`,children:[(0,W.jsx)(mt,{size:12}),` Beitreten`]})]})]},e.id)})})]}),B.length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,W.jsx)(Ne,{size:12,className:`mr-1 inline`}),`E-Mails (`,B.length,`)`]}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:B.map(e=>{let t=e.direction===`ausgang`?e.recipients:e.sender,n=Mn(t,e.subject),r=jn({to:t});return(0,W.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-3 py-2 border border-white/[0.04] hover:bg-white/[0.06] transition-colors`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-xs ${e.direction===`ausgang`?`text-sky`:`text-amber`}`,children:e.direction===`ausgang`?`↗`:`↙`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`truncate text-sm text-ink`,children:e.subject||`Ohne Betreff`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/50`,children:[e.direction===`ausgang`?`An`:`Von`,`:`,` `,r?(0,W.jsx)(`a`,{href:r,className:`text-sky hover:underline`,children:t}):(0,W.jsx)(`span`,{children:t}),e.sent_date&&(0,W.jsx)(`span`,{className:`ml-2`,children:bn(e.sent_date)})]})]}),e.detected_status&&(0,W.jsx)(J,{tone:Cn(e.detected_status),children:e.detected_status}),n&&(0,W.jsx)(`a`,{href:n,className:`shrink-0 text-muted/30 hover:text-sky transition-colors`,title:`Im Mail-Client antworten`,"aria-label":`Im Mail-Client antworten`,children:(0,W.jsx)(Ie,{size:14})}),(0,W.jsx)(`a`,{href:`/api/emails/${e.id}/download`,download:e.filename||!0,className:`shrink-0 text-muted/30 hover:text-sky transition-colors`,title:`E-Mail herunterladen`,"aria-label":`E-Mail herunterladen`,children:(0,W.jsx)(ge,{size:14})})]},e.id)})})]}),A.entry?.application&&(0,W.jsx)($r,{applicationId:A.entry.application.id,pushToast:r,onCreated:async()=>{let e=A.entry.application.id;await Je(e),Ce((await V(`/api/applications/${e}/meetings`).catch(()=>({meetings:[]})))?.meetings||[])}}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Dokument verknüpfen`}),(0,W.jsxs)(`div`,{className:`mt-2 relative`,children:[(0,W.jsx)(Xe,{size:14,className:`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted/50`}),(0,W.jsx)(X,{className:`!pl-9`,placeholder:`Dokument suchen...`,value:le,onChange:e=>ue(e.target.value)})]}),le.trim()&&(0,W.jsxs)(`div`,{className:`mt-2 max-h-40 overflow-y-auto rounded-lg border border-white/5 bg-white/[0.02]`,children:[he.filter(e=>{let t=le.toLowerCase();return(e.filename||``).toLowerCase().includes(t)||(e.doc_type||``).toLowerCase().includes(t)}).slice(0,8).map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm text-ink transition-colors hover:bg-white/[0.06]`,onClick:()=>{ot(e.id),ue(``)},children:[(0,W.jsx)(ke,{size:14,className:`shrink-0 text-teal/60`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.filename}),e.doc_type?(0,W.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] text-muted/50`,children:e.doc_type}):null]},e.id)),he.filter(e=>{let t=le.toLowerCase();return(e.filename||``).toLowerCase().includes(t)||(e.doc_type||``).toLowerCase().includes(t)}).length===0?(0,W.jsx)(`p`,{className:`px-3 py-2 text-sm text-muted/50`,children:`Kein Dokument gefunden.`}):null]})]}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Neue Notiz`}),(0,W.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,W.jsx)(Jn,{rows:2,className:`flex-1`,placeholder:`Notiz hinzufügen...`,value:I,onChange:e=>ne(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&tt()}}),(0,W.jsxs)(K,{className:`shrink-0 self-end`,onClick:()=>tt(),disabled:!I.trim(),children:[(0,W.jsx)(qe,{size:14}),`Hinzufügen`]})]})]}),(A.entry?.unified_timeline||[]).filter(e=>e._source===`email`||e._source===`meeting`).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Automatische Einträge`}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:(A.entry?.unified_timeline||[]).filter(e=>e._source===`email`||e._source===`meeting`).map(e=>(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,W.jsx)(J,{tone:e._source===`email`?`sky`:`success`,children:e._source===`email`?`E-Mail`:`Termin`}),(0,W.jsx)(`span`,{className:`text-xs text-muted/40 shrink-0`,children:bn(e.event_date)}),(0,W.jsx)(`span`,{className:`text-ink truncate`,children:e.description})]},e.id))})]}),(A.entry?.events||[]).length?A.entry.events.filter(e=>!e.parent_event_id).map(e=>(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`space-y-1`,children:[(0,W.jsx)(J,{tone:Cn(e.status||e.event_type),children:e.status||e.event_type||`notiz`}),oe===e.id?(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`input`,{type:`date`,value:se,onChange:e=>ce(e.target.value),onKeyDown:t=>{t.key===`Enter`&&it(e.id),t.key===`Escape`&&z(null)},className:`text-[12px] px-1 py-0.5 rounded bg-shell/60 border border-line/40 text-ink`,autoFocus:!0}),(0,W.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>it(e.id),title:`Datum speichern`,children:(0,W.jsx)(re,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>z(null),title:`Abbrechen`,children:(0,W.jsx)(vt,{size:14})})]}):(0,W.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-ink hover:underline cursor-pointer`,onClick:()=>{z(e.id),ce((e.event_date||``).slice(0,10))},title:`Datum aendern`,children:xn(e.event_date)})]}),(0,W.jsx)(`div`,{className:`flex-1 min-w-0`,children:L===e.id?(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(Jn,{rows:2,className:`flex-1`,value:R,onChange:e=>ae(e.target.value),onKeyDown:t=>{t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&nt(e.id)},autoFocus:!0}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-1 shrink-0`,children:[(0,W.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>nt(e.id),children:(0,W.jsx)(re,{size:16})}),(0,W.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>ie(null),children:(0,W.jsx)(vt,{size:16})})]})]}):(0,W.jsx)(`p`,{className:`text-sm text-ink`,children:e.notes||e.text||`Keine Notiz`})}),(e.event_type===`notiz`||e.status===`notiz`)&&L!==e.id?(0,W.jsxs)(`div`,{className:`flex gap-1.5 shrink-0`,children:[(0,W.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-sky transition-colors`,onClick:()=>{fe(e.id),me(``)},title:`Antworten`,children:(0,W.jsx)(Ie,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-ink transition-colors`,onClick:()=>{ie(e.id),ae(e.notes||e.text||``)},title:`Bearbeiten`,children:(0,W.jsx)(We,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-coral transition-colors`,onClick:()=>rt(e.id),title:`Löschen`,children:(0,W.jsx)(at,{size:14})})]}):null]}),de===e.id&&(0,W.jsxs)(`div`,{className:`ml-8 mt-2 flex gap-2`,children:[(0,W.jsx)(X,{className:`flex-1`,placeholder:`Antwort schreiben...`,value:pe,onChange:e=>me(e.target.value),onKeyDown:t=>{t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&tt(e.id)}}),(0,W.jsx)(K,{size:`sm`,onClick:()=>tt(e.id),disabled:!pe.trim(),children:`Antworten`}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>fe(null),children:(0,W.jsx)(vt,{size:14})})]}),(A.entry?.events||[]).filter(t=>t.parent_event_id===e.id).map(e=>(0,W.jsxs)(q,{className:`ml-8 mt-2 glass-card-soft rounded-lg shadow-none border-l-2 border-sky/20`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-xs text-muted/40`,children:xn(e.event_date)}),(0,W.jsx)(J,{tone:`sky`,children:`Antwort`})]}),(0,W.jsx)(`p`,{className:`text-sm text-ink mt-1`,children:e.notes||e.text})]},e.id))]},`${e.id}-${e.event_date}`)):(0,W.jsx)(Qn,{title:`Keine Timeline-Einträge`,description:`Für diese Bewerbung liegt noch keine Historie vor.`})]})}),(0,W.jsx)(er,{open:P.open,title:`Gl\u00fcckwunsch \u2014 Abschluss bei ${P.application?.company||``}`,onClose:()=>ee({open:!1,application:null,final_salary:``,description:``,start_date:``}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ee({open:!1,application:null,final_salary:``,description:``,start_date:``}),children:`Sp\\u00e4ter`}),(0,W.jsx)(K,{onClick:Ue,children:`\\u00dcbernehmen und speichern`})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted/70`,children:`Du hast die Zusage erhalten. Hier ein kleiner Abschluss-Flow: Position ins Profil \\u00fcbernehmen, Gehalt festhalten, optional eine Beschreibung erg\\u00e4nzen.`}),(0,W.jsx)(Y,{label:`Position (wird als aktuelle Stelle angelegt)`,children:(0,W.jsx)(X,{value:P.application?.title||``,disabled:!0})}),(0,W.jsx)(Y,{label:`Start-Datum`,children:(0,W.jsx)(X,{type:`date`,value:P.start_date||``,onChange:e=>ee(t=>({...t,start_date:e.target.value}))})}),(0,W.jsx)(Y,{label:`Tats\\u00e4chliches Gehalt (optional)`,children:(0,W.jsx)(X,{placeholder:`z.B. 72.000\\u20ac/Jahr`,value:P.final_salary,onChange:e=>ee(t=>({...t,final_salary:e.target.value}))})}),(0,W.jsx)(Y,{label:`Beschreibung der Rolle (optional)`,children:(0,W.jsx)(X,{placeholder:`Kurzbeschreibung, z.B. Verantwortung, Team, Technologie`,value:P.description,onChange:e=>ee(t=>({...t,description:e.target.value}))})}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Offene Follow-ups wurden bereits automatisch als hinf\\u00e4llig markiert.`})]})})]})}function Yr({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(``),[f,p]=(0,w.useState)(null);async function m(){if(e)try{r((await fetch(`/api/applications/${e}/jobs`).then(e=>e.ok?e.json():null))?.jobs||[])}catch{}}(0,w.useEffect)(()=>{m()},[e]);async function h(){try{s((await fetch(`/api/jobs?filter=alle&limit=100`).then(e=>e.ok?e.json():null))?.jobs||[])}catch{}}async function g(n){try{await fetch(`/api/applications/${e}/jobs`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({job_hash:n,version_label:u||void 0})}),t(`Stelle verknuepft`,`success`),await m(),a(!1),l(``),d(``)}catch(e){t(`Verknuepfen fehlgeschlagen: ${e.message}`,`danger`)}}async function _(n){try{await fetch(`/api/applications/${e}/jobs/${encodeURIComponent(n)}`,{method:`DELETE`}),t(`Verknuepfung entfernt`,`success`),await m()}catch(e){t(`Entfernen fehlgeschlagen: ${e.message}`,`danger`)}}if(n.length<=1&&!i)return(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-1`,children:`Verknuepfte Stellen`}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/50 mb-2`,children:`Falls sich diese Bewerbung auf mehrere Stellen-Varianten bezieht (z.B. Repost, Vermittler+Endkunde-Sicht).`}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{a(!0),h()},className:`text-[11px] text-sky hover:underline inline-flex items-center gap-1`,children:[(0,W.jsx)(qe,{size:11}),` Weitere Stelle verknuepfen`]})]});let v=c?o.filter(e=>((e.title||``)+` `+(e.company||``)).toLowerCase().includes(c.toLowerCase())):o;return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:[`Verknuepfte Stellen (`,n.length,`)`]}),(0,W.jsx)(`ul`,{className:`space-y-1.5 mb-2`,children:n.map(e=>(0,W.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-ink font-medium`,children:e.title}),e.link_primary&&(0,W.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-teal/15 text-teal px-1.5 py-0.5 text-[9px]`,children:`primaer`}),e.link_version&&(0,W.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-sky/15 text-sky px-1.5 py-0.5 text-[9px]`,children:e.link_version}),(0,W.jsxs)(`p`,{className:`text-muted/50 text-[11px]`,children:[e.company,` · `,e.source,` · Score `,e.score||0]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[n.length>=2&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>p(e.hash),className:`text-muted/40 hover:text-sky text-[11px]`,title:`Mit anderer Stelle vergleichen`,children:`🆚`}),!e.link_primary&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>_(e.hash),className:`text-muted/40 hover:text-coral text-[11px]`,title:`Verknuepfung entfernen`,children:(0,W.jsx)(vt,{size:12})})]})]},e.hash))}),!i&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{a(!0),h()},className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,W.jsx)(qe,{size:11}),` Weitere Stelle`]}),i&&(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-2 mt-2`,children:[(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:(0,W.jsx)(`input`,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:`Version-Bezeichnung (z.B. Repost, Vermittler-Sicht)`,className:`flex-1 min-w-[200px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`})}),(0,W.jsx)(`input`,{type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:`Stelle suchen...`,className:`w-full rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink mb-2`,autoFocus:!0}),(0,W.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-0.5`,children:v.slice(0,15).map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>g(e.hash),className:`w-full text-left px-2 py-1 rounded text-[12px] text-ink hover:bg-white/[0.04]`,children:[e.title,(0,W.jsxs)(`span`,{className:`text-muted/50 ml-1.5`,children:[`· `,e.company]})]},e.hash))}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{a(!1),l(``),d(``)},className:`mt-2 text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]})]}),f&&(0,W.jsx)(Xr,{hashA:n.find(e=>e.link_primary)?.hash||n[0]?.hash,hashB:f,onClose:()=>p(null),pushToast:t})]})}function Xr({hashA:e,hashB:t,onClose:n,pushToast:r}){let[i,a]=(0,w.useState)(null);if((0,w.useEffect)(()=>{fetch(`/api/jobs/compare?a=${encodeURIComponent(e)}&b=${encodeURIComponent(t)}`).then(e=>e.ok?e.json():null).then(a).catch(e=>r?.(`Vergleich fehlgeschlagen: ${e.message}`,`danger`))},[e,t]),!i)return(0,W.jsx)(er,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade Vergleich...`})});if(i.fehler)return(0,W.jsx)(er,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,W.jsx)(`p`,{className:`text-sm text-coral`,children:i.fehler})});let o=i.stelle_a,s=i.stelle_b,c=i.vergleich;return(0,W.jsx)(er,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,W.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-3`,children:[o,s].map((e,t)=>(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase text-muted/50 mb-1`,children:t===0?`Stelle A`:`Stelle B`}),(0,W.jsx)(`p`,{className:`font-semibold text-ink`,children:e.title}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/70`,children:e.company}),(0,W.jsxs)(`div`,{className:`mt-2 space-y-0.5 text-[11px] text-muted/60`,children:[(0,W.jsxs)(`p`,{children:[`Score: `,(0,W.jsx)(`span`,{className:`text-ink`,children:e.score||0})]}),(0,W.jsxs)(`p`,{children:[`Quelle: `,(0,W.jsx)(`span`,{className:`text-ink`,children:e.source})]}),(0,W.jsxs)(`p`,{children:[`Standort: `,(0,W.jsx)(`span`,{className:`text-ink`,children:e.location||`—`})]}),(0,W.jsxs)(`p`,{children:[`Gehalt: `,e.salary_min?`${e.salary_min}–${e.salary_max||`?`} €`:`—`]}),(0,W.jsxs)(`p`,{children:[`Status: `,e.is_active?`aktiv`:`aussortiert`]}),(0,W.jsxs)(`p`,{children:[`Beschreibung: `,e.description_length,` Zeichen`]})]})]},t))}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase text-muted/50 mb-2`,children:`Vergleich`}),(0,W.jsxs)(`div`,{className:`space-y-1.5 text-[12px]`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Score-Diff:`}),` `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[c.score_diff>0?`+`:``,c.score_diff]}),` `,(0,W.jsx)(`span`,{className:`text-muted/40`,children:`(A − B)`})]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Beschreibung-Overlap:`}),` `,(0,W.jsxs)(`span`,{className:`font-mono`,children:[c.beschreibung_overlap_pct,`%`]})]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Gleiche Firma:`}),` `,c.gleiche_firma?`✓ Ja`:`✗ Nein`]}),c.titel_gemeinsam.length>0&&(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Titel — gemeinsam:`}),` `,(0,W.jsx)(`span`,{className:`text-teal`,children:c.titel_gemeinsam.slice(0,8).join(`, `)})]}),c.titel_nur_a.length>0&&(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Titel — nur A:`}),` `,(0,W.jsx)(`span`,{className:`text-amber`,children:c.titel_nur_a.slice(0,6).join(`, `)})]}),c.titel_nur_b.length>0&&(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/60`,children:`Titel — nur B:`}),` `,(0,W.jsx)(`span`,{className:`text-amber`,children:c.titel_nur_b.slice(0,6).join(`, `)})]})]})]}),(0,W.jsx)(`div`,{className:`flex justify-end pt-2 border-t border-white/5`,children:(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:n,children:`Schliessen`})})]})})}function Zr({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)({kategorie:`tool`,betrag_eur:``,beschreibung:``}),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(!1);async function u(){if(e)try{r(await fetch(`/api/applications/${e}/aufwand`).then(e=>e.ok?e.json():null)),s((await fetch(`/api/applications/${e}/costs`).then(e=>e.ok?e.json():null))?.costs||[])}catch{}}(0,w.useEffect)(()=>{u()},[e]);async function d(){let n=parseFloat(i.betrag_eur);if(!n||n<=0){t(`Betrag muss > 0 sein`,`danger`);return}try{await fetch(`/api/applications/${e}/costs`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:i.kategorie,amount:n,description:i.beschreibung})}),t(`${n.toFixed(2)} € erfasst`,`success`),a({kategorie:`tool`,betrag_eur:``,beschreibung:``}),l(!1),await u()}catch(e){t(`Erfassen fehlgeschlagen: ${e.message}`,`danger`)}}async function f(e){try{await fetch(`/api/costs/${e}`,{method:`DELETE`}),await u()}catch{}}if(!n)return null;let p=n.kosten_summe_eur>0||n.reisekosten_brutto_eur>0||n.termine_anzahl>0;return(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Aufwand fuer diese Bewerbung`}),!p&&!c&&(0,W.jsx)(`p`,{className:`text-[12px] text-muted/50 mb-2`,children:`Trage Reisekosten, Tool-Abos oder Pruefungs-Gebuehren ein — fuer einen ehrlichen Blick auf den realen Aufwand pro Bewerbung.`}),p&&(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 mb-2 text-[11px]`,children:[n.termine_anzahl>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-muted/50`,children:`Termine`}),(0,W.jsx)(`p`,{className:`text-ink font-medium`,children:n.termine_anzahl})]}),n.termine_dauer_min_summe>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-muted/50`,children:`Dauer (gesamt)`}),(0,W.jsxs)(`p`,{className:`text-ink font-medium`,children:[Math.round(n.termine_dauer_min_summe/60),` h`]})]}),n.vorbereitungszeit_min_summe>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-muted/50`,children:`Vorbereitung`}),(0,W.jsxs)(`p`,{className:`text-ink font-medium`,children:[Math.round(n.vorbereitungszeit_min_summe/60),` h`]})]}),n.reisekosten_brutto_eur>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-muted/50`,children:`Reisekosten netto`}),(0,W.jsxs)(`p`,{className:`text-ink font-medium`,children:[n.reisekosten_netto_eur.toFixed(2),` €`]})]}),n.kosten_summe_eur>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-muted/50`,children:`Sonstige Kosten`}),(0,W.jsxs)(`p`,{className:`text-ink font-medium`,children:[n.kosten_summe_eur.toFixed(2),` €`]})]})]}),o.length>0&&(0,W.jsx)(`ul`,{className:`space-y-1 mb-2 border-t border-white/5 pt-2`,children:o.map(e=>(0,W.jsxs)(`li`,{className:`flex items-center justify-between text-[11px]`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`span`,{className:`text-ink font-mono`,children:[(e.amount||0).toFixed(2),` €`]}),(0,W.jsx)(`span`,{className:`ml-1.5 text-muted/50`,children:e.kind}),e.description&&(0,W.jsxs)(`span`,{className:`ml-1.5 text-muted/40 truncate`,children:[`— `,e.description]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(e.id),className:`text-muted/40 hover:text-coral text-[11px] shrink-0`,children:(0,W.jsx)(vt,{size:11})})]},e.id))}),c?(0,W.jsx)(`div`,{className:`border-t border-white/5 pt-2 space-y-1.5`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(`select`,{value:i.kategorie,onChange:e=>a({...i,kategorie:e.target.value}),className:`rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,children:[(0,W.jsx)(`option`,{value:`tool`,children:`Tool/Abo`}),(0,W.jsx)(`option`,{value:`pruefung`,children:`Pruefung`}),(0,W.jsx)(`option`,{value:`reise`,children:`Reise`}),(0,W.jsx)(`option`,{value:`fortbildung`,children:`Fortbildung`}),(0,W.jsx)(`option`,{value:`sonstiges`,children:`Sonstiges`})]}),(0,W.jsx)(`input`,{type:`number`,step:`0.01`,value:i.betrag_eur,onChange:e=>a({...i,betrag_eur:e.target.value}),placeholder:`EUR`,className:`w-20 rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,W.jsx)(`input`,{type:`text`,value:i.beschreibung,onChange:e=>a({...i,beschreibung:e.target.value}),placeholder:`z.B. LinkedIn Premium 1 Monat`,className:`flex-1 min-w-[150px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,W.jsx)(`button`,{type:`button`,onClick:d,className:`rounded bg-sky/15 text-sky px-2 py-1 text-[11px] hover:bg-sky/25`,children:`Speichern`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>l(!1),className:`text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]})}):(0,W.jsxs)(`button`,{type:`button`,onClick:()=>l(!0),className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,W.jsx)(qe,{size:11}),` Kosten erfassen`]})]})}function Qr({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(!1),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(`recruiter`),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(``),g=[{v:`recruiter`,l:`Recruiter`},{v:`hiring_manager`,l:`Hiring Manager`},{v:`interviewer`,l:`Interviewer`},{v:`hr`,l:`HR`},{v:`kollege`,l:`Kollege`},{v:`mentor`,l:`Mentor`}];async function _(){if(e)try{r((await fetch(`/api/applications/${e}/contacts`).then(e=>e.ok?e.json():null))?.contacts||[])}catch{}}async function v(){try{a((await fetch(`/api/contacts`).then(e=>e.ok?e.json():null))?.contacts||[])}catch{}}(0,w.useEffect)(()=>{_()},[e]);async function y(n){try{await fetch(`/api/contacts/${n}/links`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_kind:`application`,target_id:e,role:u})}),t(`Verknuepft`,`success`),await _(),s(!1),l(``)}catch(e){t(`Verknuepfen fehlgeschlagen: ${e.message}`,`danger`)}}async function b(){if(m.trim()){p(!0);try{let n=await fetch(`/api/contacts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({full_name:m.trim(),tags:[u]})}).then(e=>e.json());n?.id&&(await fetch(`/api/contacts/${n.id}/links`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_kind:`application`,target_id:e,role:u})}),t(`„${m}" angelegt und verknuepft`,`success`),h(``),s(!1),await _())}catch(e){t(`Anlegen fehlgeschlagen: ${e.message}`,`danger`)}finally{p(!1)}}}async function x(e){try{await fetch(`/api/contacts/links/${e}`,{method:`DELETE`}),t(`Entfernt`,`success`),await _()}catch(e){t(`Entfernen fehlgeschlagen: ${e.message}`,`danger`)}}let S=c?i.filter(e=>(e.full_name+` `+(e.email||``)+` `+(e.company||``)).toLowerCase().includes(c.toLowerCase())):i;return(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Beteiligte Personen`}),n.length===0&&!o&&(0,W.jsxs)(`div`,{className:`text-center py-4 text-muted/50`,children:[(0,W.jsx)(`p`,{className:`text-[12px] mb-2`,children:`Noch niemand verknuepft. Wer war beim Interview dabei? Wer hat angeschrieben?`}),(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(!0),v()},className:`text-[12px] text-sky hover:underline inline-flex items-center gap-1`,children:[(0,W.jsx)(qe,{size:12}),` Person hinzufuegen`]})]}),n.length>0&&(0,W.jsx)(`ul`,{className:`space-y-1.5 mb-2`,children:n.map(e=>(0,W.jsxs)(`li`,{className:`flex items-center justify-between gap-2 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-ink font-medium`,children:e.full_name}),e.link_role&&(0,W.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-sky/15 text-sky px-1.5 py-0.5 text-[9px]`,children:g.find(t=>t.v===e.link_role)?.l||e.link_role}),e.company&&(0,W.jsx)(`span`,{className:`ml-1.5 text-muted/50 text-[11px]`,children:e.company})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>x(e.link_id),className:`text-muted/40 hover:text-coral text-[11px]`,title:`Verknuepfung entfernen`,children:(0,W.jsx)(vt,{size:12})})]},e.link_id))}),!o&&n.length>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{s(!0),v()},className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,W.jsx)(qe,{size:11}),` Weitere Person`]}),o&&(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-2 mt-2`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:[(0,W.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,children:g.map(e=>(0,W.jsx)(`option`,{value:e.v,children:e.l},e.v))}),(0,W.jsx)(`input`,{type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:`Vorhandenen Kontakt suchen...`,className:`flex-1 min-w-[150px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,autoFocus:!0}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{s(!1),l(``),h(``)},className:`text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]}),S.length>0&&(0,W.jsx)(`div`,{className:`max-h-32 overflow-y-auto space-y-0.5 mb-2`,children:S.slice(0,10).map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>y(e.id),className:`w-full text-left px-2 py-1 rounded text-[12px] text-ink hover:bg-white/[0.04]`,children:[e.full_name,e.company&&(0,W.jsxs)(`span`,{className:`text-muted/50 ml-1.5`,children:[`· `,e.company]})]},e.id))}),(0,W.jsx)(`div`,{className:`text-[11px] text-muted/50 mb-1`,children:`Oder neue Person anlegen:`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`input`,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Vor- und Nachname`,className:`flex-1 rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,W.jsx)(`button`,{type:`button`,disabled:!m.trim()||f,onClick:b,className:`rounded bg-sky/15 text-sky px-2 py-1 text-[12px] hover:bg-sky/25 disabled:opacity-50`,children:f?`...`:`Anlegen`})]})]})]})}function $r({applicationId:e,pushToast:t,onCreated:n}){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(`Vorstellungsgespräch`),[s,c]=(0,w.useState)(``),[l,u]=(0,w.useState)(`10:00`),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(!1);async function h(){if(!s){t(`Bitte ein Datum angeben.`,`danger`);return}m(!0);try{await H(`/api/meetings`,{application_id:e,title:a,meeting_date:`${s}T${l||`10:00`}:00`,meeting_url:d||void 0,platform:d.includes(`teams`)?`teams`:d.includes(`zoom`)?`zoom`:d.includes(`meet.google`)?`google_meet`:void 0}),t(`Termin erstellt.`,`success`),i(!1),o(`Vorstellungsgespräch`),c(``),u(`10:00`),f(``),n()}catch(e){t(`Termin konnte nicht erstellt werden: ${e.message}`,`danger`)}finally{m(!1)}}return r?(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,W.jsx)(te,{size:12,className:`mr-1 inline`}),`Neuer Termin`]}),(0,W.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Titel`}),(0,W.jsx)(`input`,{type:`text`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:a,onChange:e=>o(e.target.value)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Datum`}),(0,W.jsx)(`input`,{type:`date`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:s,onChange:e=>c(e.target.value)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Uhrzeit`}),(0,W.jsx)(`input`,{type:`time`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:l,onChange:e=>u(e.target.value)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Meeting-Link (optional)`}),(0,W.jsx)(`input`,{type:`url`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,placeholder:`https://teams...`,value:d,onChange:e=>f(e.target.value)})]})]}),(0,W.jsxs)(`div`,{className:`mt-3 flex gap-2`,children:[(0,W.jsxs)(K,{size:`sm`,onClick:h,disabled:p||!s,children:[(0,W.jsx)(qe,{size:14}),`Erstellen`]}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>i(!1),children:`Abbrechen`})]})]}):(0,W.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-center gap-1.5 rounded-xl border border-dashed border-white/10 px-3 py-2.5 text-[13px] text-muted/50 transition hover:border-teal/30 hover:text-teal/70`,onClick:()=>i(!0),children:[(0,W.jsx)(te,{size:14}),`Termin hinzufügen`]})}var ei=[{value:`recruiter`,label:`Recruiter`},{value:`headhunter`,label:`Headhunter`},{value:`hiring_manager`,label:`Hiring Manager`},{value:`interviewer`,label:`Interviewer`},{value:`hr`,label:`HR`},{value:`kollege`,label:`Kollege`},{value:`mentor`,label:`Mentor`},{value:`sonstiges`,label:`Sonstiges`}],ti=Object.fromEntries(ei.map(e=>[e.value,e.label])),ni=null,ri=`pbp-contact-categories-changed`;async function ii(){if(ni!==null)return ni;try{ni=(await V(`/api/contacts/categories`))?.categories||[]}catch{ni=[]}return ni}function ai(){ni=null,window.dispatchEvent(new CustomEvent(ri))}function oi(){let[e,t]=(0,w.useState)(ni||[]);return(0,w.useEffect)(()=>{let e=!1;ni===null&&ii().then(n=>{e||t(n)});let n=()=>{ii().then(n=>{e||t(n)})};return window.addEventListener(ri,n),()=>{e=!0,window.removeEventListener(ri,n)}},[]),e}function si({role:e}){let t=oi().find(t=>t.slug===e),n=t?.name||ti[e]||e,r=t?.color;return r?(0,W.jsx)(`span`,{className:`inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium`,style:{backgroundColor:r+`26`,color:r},children:n}):(0,W.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-sky/15 text-sky px-2 py-0.5 text-[10px] font-medium`,children:n})}function ci({contact:e,onClick:t}){return(0,W.jsx)(`button`,{type:`button`,onClick:t,className:`glass-card text-left rounded-xl px-4 py-3 hover:bg-white/[0.04] transition-colors w-full`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-[15px] font-semibold text-ink truncate`,children:e.full_name}),e.position&&e.company&&(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60 truncate`,children:[e.position,` · `,e.company]}),!e.position&&e.company&&(0,W.jsx)(`p`,{className:`text-[12px] text-muted/60 truncate`,children:e.company}),(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1`,children:[(e.tags||[]).slice(0,3).map(e=>(0,W.jsx)(si,{role:e},e)),(e.tags||[]).length>3&&(0,W.jsxs)(`span`,{className:`text-[10px] text-muted/40`,children:[`+`,e.tags.length-3]})]})]}),(0,W.jsx)(R,{size:16,className:`text-muted/30 shrink-0 mt-0.5`})]})})}function li({contact:e,onClose:t,onSaved:n,onDeleted:r,pushToast:i}){let a=!!e?.id,[o,s]=(0,w.useState)(()=>({full_name:e?.full_name||``,email:e?.email||``,phone:e?.phone||``,company:e?.company||``,position:e?.position||``,linkedin_url:e?.linkedin_url||``,tags:e?.tags||[],notes:e?.notes||``})),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)(!1);(0,w.useEffect)(()=>{a&&V(`/api/contacts/${e.id}/links`).catch(()=>null).then(e=>{e?.links&&l(e.links)})},[e?.id]);function f(e){s(t=>({...t,tags:t.tags.includes(e)?t.tags.filter(t=>t!==e):[...t.tags,e]}))}async function p(){if(!o.full_name.trim()){i(`Name ist Pflicht.`,`danger`);return}d(!0);try{a?await U(`/api/contacts/${e.id}`,o):await H(`/api/contacts`,o),i(a?`Kontakt aktualisiert`:`Kontakt angelegt`,`success`),n?.(),t()}catch(e){i(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{d(!1)}}async function m(){if(confirm(`Kontakt „${e.full_name}" wirklich loeschen?`))try{await Dt(`/api/contacts/${e.id}`),i(`Kontakt geloescht`,`success`),r?.(),t()}catch(e){i(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}return(0,W.jsx)(er,{open:!0,title:a?`Kontakt bearbeiten`:`Neuer Kontakt`,onClose:t,children:(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(Y,{label:`Name`,required:!0,children:(0,W.jsx)(X,{value:o.full_name,onChange:e=>s({...o,full_name:e.target.value}),placeholder:`z.B. Maria Mustermann`})}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`E-Mail`,children:(0,W.jsx)(X,{type:`email`,value:o.email,onChange:e=>s({...o,email:e.target.value}),placeholder:`maria@firma.de`})}),(0,W.jsx)(Y,{label:`Telefon`,children:(0,W.jsx)(X,{value:o.phone,onChange:e=>s({...o,phone:e.target.value}),placeholder:`+49 ...`})})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`Firma`,children:(0,W.jsx)(X,{value:o.company,onChange:e=>s({...o,company:e.target.value}),placeholder:`z.B. TestCorp GmbH`})}),(0,W.jsx)(Y,{label:`Position`,children:(0,W.jsx)(X,{value:o.position,onChange:e=>s({...o,position:e.target.value}),placeholder:`z.B. Talent Acquisition Lead`})})]}),(0,W.jsxs)(Y,{label:`LinkedIn`,children:[(0,W.jsxs)(`div`,{className:`flex items-stretch gap-2`,children:[(0,W.jsx)(X,{className:`flex-1`,value:o.linkedin_url,onChange:e=>s({...o,linkedin_url:e.target.value}),placeholder:`https://linkedin.com/in/...`}),o.linkedin_url&&o.linkedin_url.includes(`linkedin.com/in/`)&&(0,W.jsx)(`button`,{type:`button`,onClick:async()=>{try{let t=await H(`/api/contacts/enrich-from-linkedin`,{contact_id:e?.id||``,linkedin_url:o.linkedin_url});if(t?.prompt)try{await navigator.clipboard.writeText(t.prompt),i(`Prompt in Zwischenablage. In Claude einfuegen — der eingeloggte Chrome-Tab holt die LinkedIn-Daten.`,`success`,{duration:8e3})}catch{i(`Prompt erzeugt. Bitte aus dem Backend-Response kopieren.`,`info`)}}catch(e){i(`Anreichern fehlgeschlagen: ${e.message}`,`danger`)}},className:`rounded-lg border border-sky/20 bg-sky/[0.08] px-3 text-[12px] text-sky hover:bg-sky/[0.15] whitespace-nowrap`,title:`LinkedIn-Daten via Claude-in-Chrome holen`,children:`Daten holen`})]}),o.linkedin_url&&o.linkedin_url.includes(`linkedin.com/in/`)&&(0,W.jsxs)(`p`,{className:`mt-1 text-[11px] text-muted/50`,children:[(0,W.jsx)(`span`,{className:`text-sky`,children:`„Daten holen"`}),` erzeugt einen Claude-Prompt. Claude oeffnet das Profil im eingeloggten Chrome-Tab und liest Name/Position/Firma.`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/60 mb-1.5 uppercase tracking-[0.1em]`,children:`Rollen / Tags`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/50 mb-2`,children:`Was diese Person fuer dich ist. Mehrere moeglich — z.B. „Recruiter" + „HR".`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:ei.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(e.value),className:`rounded-full px-2.5 py-1 text-[11px] font-medium transition-colors ${o.tags.includes(e.value)?`bg-sky/20 text-sky`:`bg-white/[0.03] text-muted/60 hover:bg-white/[0.07]`}`,children:e.label},e.value))})]}),(0,W.jsx)(Y,{label:`Notizen`,children:(0,W.jsx)(`textarea`,{value:o.notes,onChange:e=>s({...o,notes:e.target.value}),rows:3,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-sm text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`,placeholder:`Wie habt ihr euch kennengelernt, was ist wichtig zu wissen...`})}),a&&c.length>0&&(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-3`,children:[(0,W.jsxs)(`p`,{className:`text-[11px] font-semibold text-muted/60 mb-2 uppercase tracking-[0.1em]`,children:[`Verknuepfungen (`,c.length,`)`]}),(0,W.jsx)(`ul`,{className:`space-y-1 text-[12px] text-muted/70`,children:c.slice(0,8).map(e=>(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`span`,{className:`text-muted/40`,children:e.target_kind}),` · `,e.role&&(0,W.jsx)(si,{role:e.role})]},e.id))})]}),(0,W.jsxs)(`div`,{className:`flex justify-between pt-3 border-t border-white/5`,children:[a?(0,W.jsxs)(`button`,{type:`button`,onClick:m,className:`text-[12px] text-coral/70 hover:text-coral inline-flex items-center gap-1`,children:[(0,W.jsx)(at,{size:12}),` Loeschen`]}):(0,W.jsx)(`span`,{}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:t,children:`Abbrechen`}),(0,W.jsx)(K,{size:`sm`,onClick:p,disabled:u,children:u?`Speichere...`:a?`Speichern`:`Anlegen`})]})]})]})})}function ui({pushToast:e,onChange:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)(!1);async function o(){try{r((await V(`/api/contacts/pending`))?.pending||[])}catch{}}(0,w.useEffect)(()=>{o()},[]);async function s(n){a(!0);try{await H(`/api/contacts/pending/${n}/approve`,{}),e(`Kontakt genehmigt`,`success`),await o(),t?.()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{a(!1)}}async function c(t){a(!0);try{await Dt(`/api/contacts/pending/${t}`),e(`Kontakt verworfen`,`success`),await o()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{a(!1)}}return n.length===0?null:(0,W.jsxs)(q,{className:`rounded-2xl mb-4 border-amber/30 bg-amber/[0.04]`,children:[(0,W.jsx)(`div`,{className:`mb-2 flex items-center justify-between`,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-amber/80`,children:`Vorschlaege von der lokalen AI`}),(0,W.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[n.length,` Kontakt`,n.length===1?``:`e`,` aus Bewerbungen/Mails extrahiert — warten auf deine Genehmigung`]})]})}),(0,W.jsx)(`div`,{className:`space-y-2 mt-3`,children:n.slice(0,10).map(e=>(0,W.jsxs)(`div`,{className:`glass-card p-2 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:e.full_name}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60`,children:[e.position&&(0,W.jsx)(W.Fragment,{children:e.position}),e.position&&e.company&&` · `,e.company,e.email&&(0,W.jsx)(`span`,{className:`ml-2 text-muted/40`,children:e.email})]}),(0,W.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:(e.tags||[]).map(e=>(0,W.jsx)(si,{role:e},e))})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,W.jsx)(K,{size:`xs`,onClick:()=>s(e.id),disabled:i,children:`Akzeptieren`}),(0,W.jsx)(K,{size:`xs`,variant:`secondary`,onClick:()=>c(e.id),disabled:i,children:`Verwerfen`})]})]},e.id))}),n.length>10&&(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[`+`,n.length-10,` weitere — genehmige diese erst, dann kommen die naechsten.`]})]})}function di({pushToast:e}){let[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(``);async function l(){try{n((await V(`/api/contacts/categories`))?.categories||[]),ai()}catch{}}(0,w.useEffect)(()=>{l()},[]);async function u(){if(s.trim()){o(!0);try{await H(`/api/contacts/categories`,{name:s.trim()}),e(`Kategorie "${s.trim()}" angelegt`,`success`),c(``),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}}async function d(t,n){try{await U(`/api/contacts/categories/${t}`,{color:n}),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function f(t,n){if(n.trim())try{await U(`/api/contacts/categories/${t}`,{name:n.trim()}),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function p(t,n){if(confirm(`Kategorie "${n}" wirklich loeschen?`)){o(!0);try{let r=await fetch(`/api/contacts/categories/${t}`,{method:`DELETE`}),i=await r.json();if(!r.ok||i.fehler){e(i.fehler||`Loeschen fehlgeschlagen`,`danger`);return}e(`"${n}" geloescht`,`success`),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}}return(0,W.jsxs)(q,{className:`rounded-2xl mb-4`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`w-full flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`text-left`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Kategorien verwalten`}),(0,W.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[t.length,` Kategorie`,t.length===1?``:`n`,` mit Farben`]})]}),(0,W.jsx)(`span`,{className:`text-muted/40 text-xs`,children:r?`▲`:`▼`})]}),r&&(0,W.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[t.map(e=>(0,W.jsxs)(`div`,{className:`flex items-center gap-3 p-2 rounded-md hover:bg-white/[0.03]`,children:[(0,W.jsx)(`input`,{type:`color`,value:e.color,onChange:t=>d(e.id,t.target.value),className:`h-7 w-10 rounded cursor-pointer border border-white/10`,title:`Farbe aendern`}),(0,W.jsx)(`input`,{type:`text`,defaultValue:e.name,onBlur:t=>{t.target.value!==e.name&&f(e.id,t.target.value)},className:`flex-1 bg-transparent text-[13px] text-ink focus:outline-none focus:bg-white/[0.04] px-2 py-1 rounded`}),(0,W.jsxs)(`span`,{className:`text-[10px] text-muted/40 font-mono shrink-0`,children:[e.contact_count,` Kontakt`,e.contact_count===1?``:`e`]}),e.is_system?(0,W.jsx)(`span`,{className:`text-[10px] text-muted/40 italic shrink-0`,children:`System`}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>p(e.id,e.name),disabled:a,className:`text-muted/40 hover:text-coral shrink-0`,title:`Kategorie loeschen`,children:(0,W.jsx)(at,{size:12})})]},e.id)),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 pt-3 border-t border-white/5`,children:[(0,W.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Enter`&&u(),placeholder:`Neue Kategorie (z.B. Headhunter)`,className:`flex-1 bg-white/[0.03] border border-white/10 rounded-md px-2 py-1.5 text-[12px] text-ink placeholder-muted/40 focus:border-teal/40 focus:outline-none`}),(0,W.jsxs)(K,{size:`xs`,onClick:u,disabled:a||!s.trim(),children:[(0,W.jsx)(qe,{size:12}),` Anlegen`]})]})]})]})}function fi(){let{reloadKey:e,pushToast:t}=kt(),[n,r]=(0,w.useState)(!0),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(null),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(!1);async function g(){r(!0);try{let e=new URLSearchParams;o&&e.set(`search`,o),c&&e.set(`role`,c);let t=await V(`/api/contacts?${e}`);(0,w.startTransition)(()=>a(t?.contacts||[]))}catch(e){t(`Laden fehlgeschlagen: ${e.message}`,`danger`)}finally{r(!1)}}(0,w.useEffect)(()=>{g()},[e,o,c]);function _(){d(null),p(!0)}function v(e){d(e),p(!0)}if(n&&i.length===0)return(0,W.jsx)($n,{label:`Kontakte werden geladen...`});let y=i.length===0&&!o&&!c;return(0,W.jsxs)(`div`,{id:`page-kontakte`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Kontakte`}),(0,W.jsxs)(`div`,{className:`mb-6 flex items-center justify-between gap-4 flex-wrap`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Kontakte`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/60 mt-0.5`,children:`Personen mit Rollen und Historie ueber Bewerbungen, Stellen und Termine`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(K,{size:`sm`,variant:`secondary`,onClick:()=>h(!0),children:[(0,W.jsx)(ge,{size:14,className:`mr-1`}),` Importieren`]}),(0,W.jsxs)(K,{size:`sm`,onClick:_,children:[(0,W.jsx)(qe,{size:14,className:`mr-1`}),` Neuer Kontakt`]})]})]}),(0,W.jsx)(ui,{pushToast:t,onChange:g}),(0,W.jsx)(di,{pushToast:t}),!y&&(0,W.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-[200px] relative`,children:[(0,W.jsx)(Xe,{size:14,className:`absolute left-3 top-1/2 -translate-y-1/2 text-muted/40`}),(0,W.jsx)(`input`,{type:`search`,value:o,onChange:e=>s(e.target.value),placeholder:`Name, E-Mail, Firma...`,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] pl-9 pr-3 py-2 text-[13px] text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`})]}),(0,W.jsxs)(`select`,{value:c,onChange:e=>l(e.target.value),className:`rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`,children:[(0,W.jsx)(`option`,{value:``,children:`Alle Rollen`}),ei.map(e=>(0,W.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),(o||c)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{s(``),l(``)},className:`text-[11px] text-muted/50 hover:text-ink underline`,children:`zuruecksetzen`})]}),y?(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsxs)(`div`,{className:`text-center py-12`,children:[(0,W.jsx)(pt,{size:48,className:`mx-auto text-muted/20 mb-4`}),(0,W.jsx)(`h3`,{className:`text-lg font-semibold text-ink mb-2`,children:`Noch keine Kontakte`}),(0,W.jsxs)(`p`,{className:`text-sm text-muted/70 max-w-md mx-auto mb-1.5`,children:[`Kontakte sind `,(0,W.jsx)(`strong`,{className:`text-ink/90`,children:`Personen, die mit deiner Jobsuche zu tun haben`}),` — Recruiter, Hiring Manager, Interviewer, Mentoren, Kollegen.`]}),(0,W.jsx)(`p`,{className:`text-sm text-muted/70 max-w-md mx-auto mb-6`,children:`Du kannst sie spaeter mit Bewerbungen oder Terminen verknuepfen, um die Historie pro Person zu sehen.`}),(0,W.jsxs)(K,{onClick:_,children:[(0,W.jsx)(qe,{size:14,className:`mr-1.5`}),`Ersten Kontakt anlegen`]})]})}):i.length===0?(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsxs)(`div`,{className:`py-8 text-center text-muted/60`,children:[(0,W.jsx)(`p`,{className:`text-sm`,children:`Keine Kontakte mit diesen Filtern.`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{s(``),l(``)},className:`text-[12px] text-sky hover:underline mt-2`,children:`Filter zuruecksetzen`})]})}):(0,W.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2 lg:grid-cols-3`,children:i.map(e=>(0,W.jsx)(ci,{contact:e,onClick:()=>v(e)},e.id))}),f&&(0,W.jsx)(li,{contact:u,onClose:()=>p(!1),onSaved:g,onDeleted:g,pushToast:t}),m&&(0,W.jsx)(pi,{onClose:()=>h(!1),onImported:e=>{t(`${e} Kontakte importiert.`,`success`),g(),h(!1)},pushToast:t})]})}function pi({onClose:e,onImported:t,pushToast:n}){let[r,i]=(0,w.useState)(!0),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(new Set),[l,u]=(0,w.useState)(!1);(0,w.useEffect)(()=>{let e=!1;return V(`/api/contacts/discover`).then(t=>{if(e)return;o(t);let n=new Set;(t?.from_applications||[]).forEach((e,t)=>n.add(`app-${t}`)),c(n)}).catch(e=>n(`Laden fehlgeschlagen: ${e.message}`,`danger`)).finally(()=>!e&&i(!1)),()=>{e=!0}},[]);function d(e){c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function f(e,t){c(n=>{let r=new Set(n),i=t.every((t,n)=>r.has(`${e}-${n}`));return t.forEach((t,n)=>{i?r.delete(`${e}-${n}`):r.add(`${e}-${n}`)}),r})}async function p(){if(!a)return;let e=[];if((a.from_applications||[]).forEach((t,n)=>{s.has(`app-${n}`)&&e.push(t)}),(a.from_emails||[]).forEach((t,n)=>{s.has(`mail-${n}`)&&e.push(t)}),e.length===0){n(`Keine Kontakte ausgewaehlt.`,`warning`);return}u(!0);try{t((await H(`/api/contacts/import-discovered`,{candidates:e}))?.created||0)}catch(e){n(`Import fehlgeschlagen: ${e.message}`,`danger`)}finally{u(!1)}}if(r)return(0,W.jsx)(er,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Suche Kandidaten in Bewerbungen und Mails...`})});let m=a?.from_applications||[],h=a?.from_emails||[],g=s.size;return m.length===0&&h.length===0?(0,W.jsx)(er,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,W.jsxs)(`div`,{className:`text-sm text-muted/70 space-y-3`,children:[(0,W.jsx)(`p`,{children:`Keine neuen Kontakt-Kandidaten gefunden. Entweder hast du noch keine Bewerbungen mit Ansprechpartner erfasst, oder alle gefundenen Personen sind bereits als Kontakt angelegt.`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/50`,children:[`Tipp: Bewerbungen mit gefuelltem Feld `,(0,W.jsx)(`em`,{children:`Ansprechpartner`}),` oder`,(0,W.jsx)(`em`,{children:` Kontakt-E-Mail`}),` sind die beste Quelle.`]}),(0,W.jsx)(`div`,{className:`flex justify-end pt-2`,children:(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:e,children:`Schliessen`})})]})}):(0,W.jsx)(er,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Aus deinen Bewerbungen und E-Mail-Dokumenten konnten `,m.length+h.length,` potenzielle Kontakte gefunden werden. Waehle aus, welche du als Kontakt anlegen moechtest. Bestehende Kontakte sind ausgefiltert.`]}),m.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsxs)(`h3`,{className:`text-sm font-medium text-ink`,children:[`Aus Bewerbungen (`,m.length,`)`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(`app`,m),className:`text-[11px] text-sky hover:underline`,children:`Alle umschalten`})]}),(0,W.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-1.5`,children:m.map((e,t)=>(0,W.jsxs)(`label`,{className:`flex items-start gap-2 p-2 rounded-md hover:bg-white/[0.03] cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:s.has(`app-${t}`),onChange:()=>d(`app-${t}`),className:`mt-1`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.full_name}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:[e.email&&(0,W.jsx)(`span`,{children:e.email}),e.email&&e.company&&` · `,e.company&&(0,W.jsx)(`span`,{children:e.company})]})]})]},`app-${t}`))})]}),h.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsxs)(`h3`,{className:`text-sm font-medium text-ink`,children:[`Aus Mail-Dokumenten (`,h.length,`)`,(0,W.jsx)(`span`,{className:`ml-2 text-[10px] uppercase tracking-wide text-amber/80`,children:`Heuristik — pruefe sorgfaeltig`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(`mail`,h),className:`text-[11px] text-sky hover:underline`,children:`Alle umschalten`})]}),(0,W.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-1.5`,children:h.map((e,t)=>(0,W.jsxs)(`label`,{className:`flex items-start gap-2 p-2 rounded-md hover:bg-white/[0.03] cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:s.has(`mail-${t}`),onChange:()=>d(`mail-${t}`),className:`mt-1`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.full_name}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:[e.email,e.found_in?.length>0&&(0,W.jsxs)(`span`,{className:`ml-2 text-muted/40`,children:[`aus `,e.found_in.length,` `,e.found_in.length===1?`Mail`:`Mails`]})]})]})]},`mail-${t}`))})]}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between pt-3 border-t border-white/5`,children:[(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[g,` ausgewaehlt`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:e,disabled:l,children:`Abbrechen`}),(0,W.jsx)(K,{size:`sm`,onClick:p,disabled:l||g===0,children:l?`Importiere...`:`${g} importieren`})]})]})]})})}function mi(e){if(e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function hi(e=[]){let t=[],n=[];for(let r of e){let e=mi(r?.salary_min),i=mi(r?.salary_max);if(e===null&&i===null)continue;e===null&&(e=i),i===null&&(i=e);let a={min:e,max:i,salaryType:String(r?.salary_type||``).toLowerCase()};r?.salary_estimated?n.push(a):t.push(a)}let r=[...t,...n],i=t.length===0&&n.length>0,a=r.filter(e=>e.salaryType===`jaehrlich`&&e.min>=2e4);if(!a.length)return{jobsWithSalary:r.length,annualBasisCount:0,averageMin:null,averageMax:null,bandMin:null,bandMax:null,allEstimated:i};let o=a.map(e=>e.min),s=a.map(e=>e.max);return{jobsWithSalary:r.length,annualBasisCount:a.length,averageMin:Math.round(o.reduce((e,t)=>e+t,0)/o.length),averageMax:Math.round(s.reduce((e,t)=>e+t,0)/s.length),bandMin:Math.min(...o),bandMax:Math.max(...s),allEstimated:i}}function gi(){let{chrome:e,reloadKey:t,refreshChrome:n,navigateTo:r,copyPrompt:i,pushToast:a,startJobsuche:o}=kt(),s=(0,w.useRef)({message:``,at:0}),[c,l]=(0,w.useState)(!0),[u,d]=(0,w.useState)(null),[f,p]=(0,w.useState)({jobs:[],applications:[],followUps:[],statistics:{},zombies:[],meetings:[],emails:[]}),[m,h]=(0,w.useState)(null),[g,_]=(0,w.useState)([]),[v,y]=(0,w.useState)([]),[b,x]=(0,w.useState)(()=>Math.floor(Math.random()*5)),[S,C]=(0,w.useState)(()=>{try{return JSON.parse(localStorage.getItem(`pbp_dismissed_hints`)||`[]`)}catch{return[]}}),[T,E]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp_dashboard_quickhelp_open`);return e===null?!0:e===`1`}catch{return!0}}),D=(0,w.useEffectEvent)(async()=>{if(!e.status?.has_profile){(0,w.startTransition)(()=>{p({jobs:[],applications:[],followUps:[],statistics:{},zombies:[],meetings:[],emails:[]}),l(!1)});return}try{let[e,t,n,r,i,o,c,u]=await Promise.all([Et(`/api/jobs?active=true`),Et(`/api/applications`),Et(`/api/follow-ups`),Et(`/api/statistics`),Et(`/api/applications/zombies`),Et(`/api/meetings`),Et(`/api/emails`),Et(`/api/daily-impulse`)]);if(!e&&!t&&!n&&!r){let e=`Server nicht erreichbar — LiveUpdate pausiert.`,t=Date.now();(e!==s.current.message||t-s.current.at>3e4)&&(s.current={message:e,at:t},a(e,`danger`)),(0,w.startTransition)(()=>l(!1));return}(0,w.startTransition)(()=>{p({jobs:e||[],applications:t?.applications||[],followUps:n?.follow_ups||[],statistics:r||{},zombies:i?.zombies||[],meetings:o?.meetings||[],emails:c?.emails||[]}),u&&d(u),l(!1)}),Et(`/api/scraper-health`).then(e=>{e?.scrapers?.length&&_(e.scrapers)}).catch(()=>{}),Et(`/api/public/hints`).then(e=>{e?.hints?.length&&y(e.hints)}).catch(()=>{})}catch(e){let t=`Dashboard-Daten konnten nicht geladen werden: ${e.message}`,n=Date.now();(t!==s.current.message||n-s.current.at>1e4)&&(s.current={message:t,at:n},a(t,`danger`)),(0,w.startTransition)(()=>l(!1))}});if((0,w.useEffect)(()=>{l(!0),D()},[t,e.status?.has_profile]),c&&e.status?.has_profile)return(0,W.jsx)($n,{label:`Dashboard wird vorbereitet...`});let O=f.followUps.filter(e=>e.faellig),k=f.statistics?.applications_by_status?.interview||0,j=Number(f.statistics?.total_applications||f.applications?.length||0),M=(f.applications||[]).map(e=>Date.parse(e?.applied_at||e?.created_at||e?.updated_at||``)).filter(e=>Number.isFinite(e)),P=(()=>{let e=e=>new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:e>0&&e<10?1:0,maximumFractionDigits:e>0&&e<10?1:0}).format(e),t=Date.now(),n=1e3*60*60*24,r=[],i=M.filter(e=>t-e<=30*n).length;r.push({value:e(j?i/(30/7):0),note:`Ø seit 1 Monat`});let a=M.filter(e=>t-e<=365*n).length;if(r.push({value:e(j?a/(365/7):0),note:`Ø seit 1 Jahr`}),M.length){let i=Math.min(...M),a=Math.max(1,Math.ceil((t-i)/n)+1);r.push({value:e(j/(a/7)),note:`Ø gesamt`})}else r.push({value:e(j),note:`Ø gesamt`});let o=Date.parse(f.statistics?.profile_created_at||``);if(Number.isFinite(o)){let i=Math.max(1,Math.ceil((t-o)/n)+1);r.push({value:e(j/(i/7)),note:`Ø seit PBP-Start`})}else r.push(r[2]);let s=(f.statistics?.active_jobs||0)+(f.statistics?.dismissed_jobs||0);return s>0?r.push({value:e(j/s*100),note:`pro 100 Stellen (${s} analysiert)`}):r.push({value:`—`,note:`Noch keine Stellen analysiert`}),r})(),F=P[b%P.length],I=F.value,re=new Set((f.applications||[]).filter(e=>e.job_hash&&![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.status)).map(e=>e.job_hash)),L=f.jobs.filter(e=>!re.has(e.hash)).length,ie=f.jobs.length,R=hi(f.jobs),ae=!!R.allEstimated,se=Number(R.annualBasisCount||0),ce=Number(R.averageMin),le=Number(R.averageMax),de=Number.isFinite(ce),fe=Number.isFinite(le),pe=de&&fe?Math.round((ce+le)/2):de?Math.round(ce):fe?Math.round(le):null,me=Number(R.bandMin),he=Number(R.bandMax),_e=Number.isFinite(me),ve=Number.isFinite(he),ye=e=>new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(Math.round(e)),be=_e&&ve?`${ye(me)} – ${ye(he)} EUR`:_e?Sn(me):ve?Sn(he):`Keine Angabe`,xe=e.searchStatus?.last_search||``,Se=Number(e.searchStatus?.days_ago),Ce=Number.isFinite(Se),we=k+Number(f.statistics?.applications_by_status?.zweitgespraech||0),Te=new Date;Te.setHours(0,0,0,0);let De=new Date(Te);De.setDate(De.getDate()+7);let Oe=f.followUps.filter(e=>{let t=String(e?.app_status||``).toLowerCase();if(t!==`interview`&&t!==`zweitgespraech`)return!1;let n=Date.parse(e?.scheduled_date||``);if(Number.isNaN(n))return!1;let r=new Date(n);return r>=Te&&r<=De}).sort((e,t)=>String(e.scheduled_date||``).localeCompare(String(t.scheduled_date||``))),ke=!xe||!Ce||Se>0,Ae=ie>0?j/ie:0,je=Number(e.workspace?.sources?.active||0),Pe=ie>=3&&Ae>=.6&&je<2,Fe=[];ke&&Fe.push({id:`jobsuche`,title:`Neue Jobsuche starten`,description:xe&&Ce?`Die letzte Jobsuche war vor ${Se} ${Se===1?`Tag`:`Tagen`}.`:`Heute wurde noch keine Jobsuche durchgeführt.`,tone:`danger`,actionLabel:`Jetzt starten`,action:()=>o()}),we>0&&Oe.length===0&&Fe.push({id:`interviews`,title:`Interview vorbereiten`,description:`${we} Bewerbung(en) sind im Interview-Status.`,tone:`amber`,actionLabel:`Vorbereiten`,action:()=>r(`bewerbungen`,{filter:`interview`})}),O.length>0&&Fe.push({id:`followups`,title:`Nachfragen nicht vergessen`,description:`Bei ${O.length} Bewerbung(en) solltest du nachhaken.`,tone:`sky`,actionLabel:`Öffnen`,action:()=>r(`bewerbungen`,{filter:`followups_due`})}),f.zombies.length>0&&Fe.push({id:`zombies`,title:`Lange keine Antwort bekommen`,description:`${f.zombies.length} Bewerbung(en) warten seit ueber 60 Tagen auf Rueckmeldung.`,tone:`amber`,actionLabel:`Bewerbungen`,action:()=>r(`bewerbungen`,{filter:`zombies`})}),Pe&&Fe.push({id:`quellen`,title:`Neue Quellen hinzufügen`,description:`${j} von ${ie} aktiven Stellen sind bereits in Bewerbungen.`,tone:`success`,actionLabel:`Quellen`,action:()=>r(`einstellungen`)});let Ie=e.workspace?.readiness||{},Re=Array.isArray(e.workspace?.ueberfaellige_aufgaben)?e.workspace.ueberfaellige_aufgaben:[],ze=Array.isArray(e.workspace?.todos)?e.workspace.todos:[],Be=Number(e.workspace?.profile?.completeness||0),Ve=Number(e.workspace?.jobs?.ohne_beschreibung||0);async function He(e){if(e){if(String(e.typ||``)===`beschreibung_nachladen`||String(e.aktion||``).includes(`beschreibung_fehlt`)){r(`stellen`,{missingDescriptionOnly:!0});return}if(e.action_type===`prompt`&&e.action_target){await i(e.action_target);return}e.action_type===`page`&&e.action_target&&r(e.action_target)}}return e.status?.has_profile?(0,W.jsxs)(`div`,{id:`page-dashboard`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Dashboard`}),(0,W.jsx)(Lr,{page:`dashboard`}),v.filter(e=>!S.includes(e.id)).length>0&&(0,W.jsx)(`div`,{className:`mb-4 space-y-2`,children:v.filter(e=>!S.includes(e.id)).map(e=>(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border px-4 py-3 text-sm ${e.type===`warning`?`border-amber-500/20 bg-amber-500/5 text-amber-200`:`border-sky-500/20 bg-sky-500/5 text-sky-200`}`,children:[(0,W.jsxs)(`div`,{children:[e.title&&(0,W.jsxs)(`span`,{className:`font-medium`,children:[e.title,` `]}),e.text,e.url?(0,W.jsxs)(W.Fragment,{children:[` `,(0,W.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium underline underline-offset-2 hover:opacity-80`,children:[e.url_label||`Mehr erfahren`,` →`]})]}):null]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{let t=[...S,e.id];C(t);try{localStorage.setItem(`pbp_dismissed_hints`,JSON.stringify(t))}catch{}},className:`shrink-0 rounded p-0.5 opacity-50 hover:opacity-100 transition-opacity`,title:`Schliessen`,children:(0,W.jsx)(vt,{size:14})})]},e.id))}),(0,W.jsxs)(`div`,{className:`mb-5 grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,W.jsx)(Kn,{label:`Bewerbungen`,value:j,note:`${j} geschrieben${L>0?` / ${L} unbearbeitete Stellen`:``}`,tone:`sky`}),(0,W.jsx)(Kn,{label:(0,W.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[`Bew. / Woche`,(0,W.jsx)(`button`,{type:`button`,onClick:()=>x(e=>(e+1)%P.length),className:`rounded p-0.5 text-muted/30 hover:text-sky transition-colors`,title:`Andere Perspektive`,children:(0,W.jsx)(Je,{size:11})})]}),value:I,note:F.note,tone:`sky`}),(0,W.jsx)(Kn,{label:`Gehaltsdurchschnitt${ae?` (geschätzt)`:``}`,value:pe===null?`Keine Angabe`:Sn(pe),note:se>0?`Auf Basis von ${se} Stellen mit Jahresgehalt`:`Noch keine Gehaltsdaten`,tone:`success`}),(0,W.jsx)(Kn,{label:`Gehaltsbandbreite${ae?` (geschätzt)`:``}`,value:be,note:se>0?`Niedrigster bis höchster Wert über ${se} Stellen`:`Echte Min/Max-Spanne über alle Stellen`,tone:`success`})]}),(0,W.jsxs)(`div`,{className:`mb-5 grid gap-4`,children:[Re.length>0&&(0,W.jsx)(q,{className:`rounded-2xl border border-coral/40 bg-coral/[0.08]`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(ue,{size:16,className:`text-coral`}),(0,W.jsxs)(`p`,{className:`text-sm font-bold uppercase tracking-[0.12em] text-coral`,children:[Re.length,` `,Re.length===1?`Aufgabe überfällig`:`Aufgaben überfällig`]})]}),(0,W.jsxs)(`ul`,{className:`mt-2 space-y-1`,children:[Re.slice(0,5).map(e=>(0,W.jsxs)(`li`,{className:`text-sm text-ink`,children:[(0,W.jsx)(`span`,{className:`font-medium`,children:e.titel}),e.bewerbung_titel?(0,W.jsxs)(`span`,{className:`text-muted/60`,children:[` — `,e.bewerbung_titel,e.firma?` (${e.firma})`:``]}):null,(0,W.jsxs)(`span`,{className:`ml-2 text-xs font-semibold text-coral`,children:[`fällig `,bn(e.faellig_am)]})]},e.id)),Re.length>5&&(0,W.jsxs)(`li`,{className:`text-xs text-muted/60`,children:[`und `,Re.length-5,` weitere …`]})]})]}),(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:()=>r(`bewerbungen`),children:`Zu den Bewerbungen`})]})}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(J,{tone:wn(Ie.tone),children:Ie.label||`Nächster Schritt`}),(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[Be,`% Profil vollständig`]}),Ve>0?(0,W.jsxs)(`span`,{className:`text-xs text-amber`,children:[Ve,` Treffer mit unsicherem Score`]}):null]}),(0,W.jsx)(`p`,{className:`mt-3 text-[11px] font-semibold uppercase tracking-[0.15em] text-muted/55`,children:`Nächster sinnvoller Schritt`}),(0,W.jsx)(`h2`,{className:`mt-1 text-base font-semibold text-ink`,children:Ie.headline||`Weiter im Prozess`}),(0,W.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:Ie.description||`PBP zeigt dir hier immer, was als Nächstes sinnvoll ist.`})]}),(0,W.jsx)(`div`,{className:`flex shrink-0 gap-2`,children:Ie.action_label&&Ie.action_target!==`dashboard`?(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:()=>He(Ie),children:Ie.action_label}):null})]}),(Fe.length>0||ze.length>0)&&(0,W.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[Fe.map(e=>(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl border border-white/[0.05] px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex items-center gap-2.5`,children:[(0,W.jsx)(J,{tone:e.tone,children:e.id===`jobsuche`?`Priorität 1`:e.id===`interviews`?`Priorität 2`:e.id===`followups`?`Priorität 3`:`Empfehlung`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-0.5 text-[12px] text-muted/60`,children:e.description})]})]}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:e.action,children:e.actionLabel})]},e.id)),ze.slice(0,2).map(e=>(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl border border-white/[0.05] px-4 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex items-center gap-2.5`,children:[(0,W.jsx)(J,{tone:e.prioritaet===`hoch`?`amber`:`blue`,children:`Hinweis`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:e.text}),(0,W.jsx)(`p`,{className:`mt-0.5 text-[12px] text-muted/60`,children:e.prioritaet===`hoch`?`Bitte zuerst prüfen.`:`Optional, aber sinnvoll für sauberere Ergebnisse.`})]})]}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>He(e),children:`Öffnen`})]},`ws-${e.typ}-${e.text}`))]})]}),u?.enabled&&u?.impulse?.text&&(0,W.jsx)(q,{className:`rounded-2xl border-amber-600/30 bg-amber-950/10`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsx)(`p`,{className:`mb-1 text-[11px] font-semibold uppercase tracking-[0.15em] text-amber-400/60`,children:u.impulse.title||`Heute für dich`}),(0,W.jsx)(`p`,{className:`text-sm italic text-muted`,children:u.impulse.text})]}),(0,W.jsx)(`button`,{className:`shrink-0 text-xs text-muted/40 hover:text-muted`,title:`Tagesimpuls ausblenden`,onClick:async()=>{try{await H(`/api/daily-impulse/toggle`),d(e=>({...e,enabled:!1}))}catch{}},children:`ausblenden`})]})})]}),(()=>{let e=Oe.filter(e=>!f.meetings.some(t=>t.application_id===e.application_id&&t.meeting_date?.startsWith(e.scheduled_date))).map(e=>({id:`interview-${e.id}`,title:`Interview vorbereiten`,meeting_date:e.scheduled_date+`T09:00:00`,app_company:e.company||e.title||``,app_title:e.title||``,platform:null,meeting_url:null,application_id:e.application_id,_isInterview:!0})),t=[...f.meetings,...e].sort((e,t)=>String(e.meeting_date||``).localeCompare(String(t.meeting_date||``)));return t.length===0?null:(0,W.jsxs)(q,{className:`mb-5 rounded-2xl`,children:[(0,W.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,W.jsxs)(`button`,{type:`button`,className:`text-sm font-semibold text-ink hover:text-sky transition-colors flex items-center gap-1.5`,onClick:()=>r(`kalender`),children:[(0,W.jsx)(te,{size:14,className:`text-teal/60`}),`Anstehende Termine`]})}),(0,W.jsx)(`div`,{className:`mt-3 grid gap-2`,children:t.slice(0,5).map(e=>{let t=new Date(e.meeting_date),o=t-new Date,s=Math.floor(o/(1e3*60*60*24)),c=Math.floor(o/(1e3*60*60)),l=s>1?`in ${s} Tagen`:s===1?`morgen`:c>0?`in ${c} Stunden`:o>0?`jetzt gleich`:`vergangen`,u=s===0&&o>0,d=e.is_private,f=e.platform===`teams`?`Teams`:e.platform===`zoom`?`Zoom`:e.platform===`google_meet`?`Meet`:``;return(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border px-4 py-3 cursor-pointer transition-colors hover:bg-white/[0.03] ${u?`border-teal/30 bg-teal/5`:`border-white/[0.04]`}`,onClick:()=>{d?r(`kalender`):e.application_id?r(`bewerbungen`,{highlight:e.application_id}):r(`kalender`)},children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:d?`Geblockt`:e.title||e.app_title||`Termin`}),!d&&(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[e.app_company&&(0,W.jsxs)(`span`,{className:`font-medium text-muted/80`,children:[e.app_company,` — `]}),bn(e.meeting_date),` `,t.toLocaleTimeString(`de-DE`,{hour:`2-digit`,minute:`2-digit`}),` Uhr`,f&&(0,W.jsx)(`span`,{className:`ml-1.5 rounded bg-sky/15 px-1.5 py-px text-[10px] font-bold text-sky`,children:f})]}),d&&(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/40`,children:[bn(e.meeting_date),` `,t.toLocaleTimeString(`de-DE`,{hour:`2-digit`,minute:`2-digit`}),` Uhr`]}),(0,W.jsx)(`p`,{className:`mt-0.5 text-[11px] font-medium ${u?`text-teal`:s<=3?`text-amber`:`text-muted/50`}`,children:l})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[!e._isInterview&&!e.is_follow_up&&!d&&(0,W.jsxs)(`a`,{href:`/api/meetings/${e.id}/ics`,download:!0,onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1 rounded-lg bg-white/5 px-2 py-1.5 text-[11px] font-semibold text-muted/50 transition hover:bg-white/10 hover:text-ink`,title:`Als .ics exportieren`,children:[(0,W.jsx)(ge,{size:12}),` .ics`]}),e._isInterview?(0,W.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(`/interview_vorbereitung${e.app_title?` stelle="${e.app_title}"`:``}${e.app_company?` firma="${e.app_company}"`:``}`)},className:`inline-flex items-center gap-1.5 rounded-lg bg-amber/15 px-3 py-1.5 text-[12px] font-semibold text-amber transition hover:bg-amber/25`,children:[(0,W.jsx)(te,{size:14}),`Vorbereiten`]}):e.is_follow_up?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();let r=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${r}/complete`,{}),a(`Nachfass als erledigt markiert.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,title:`Nachfass erledigt`,children:`Erledigt`}),(0,W.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();let r=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${r}/dismiss`,{}),a(`Nachfass als hinfaellig geschlossen.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-white/5 px-3 py-1.5 text-[12px] font-semibold text-muted/70 transition hover:bg-white/10 hover:text-ink`,title:`Nicht mehr noetig`,children:`Hinfällig`})]}):!d&&e.meeting_url?(0,W.jsxs)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,children:[(0,W.jsx)(mt,{size:14}),`Beitreten`]}):null,!e._isInterview&&!e.is_follow_up&&!d&&o<0&&(e.status===`geplant`||e.status===`bestaetigt`)&&(0,W.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();try{await U(`/api/meetings/${e.id}`,{status:`durchgefuehrt`}),a(`Termin als durchgeführt markiert.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,title:`Termin hat stattgefunden`,children:`Durchgeführt`})]})]},e.id)})})]})})(),(0,W.jsx)(xi,{pushToast:a,refreshChrome:n}),(0,W.jsx)(yi,{pushToast:a,navigateTo:r}),(0,W.jsx)(_i,{pushToast:a,navigateTo:r}),(0,W.jsx)(vi,{pushToast:a,navigateTo:r}),(0,W.jsxs)(`div`,{id:`dashboard-content`,className:`grid gap-5`,children:[(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Schnellzugriff`})}),(0,W.jsxs)(`details`,{className:`mt-1.5 rounded-lg border border-sky/15 bg-sky/[0.05] px-3 py-2 group`,open:T,onToggle:e=>{let t=e.currentTarget.open;E(t);try{localStorage.setItem(`pbp_dashboard_quickhelp_open`,t?`1`:`0`)}catch{}},children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer list-none flex items-center gap-2 text-[12px] text-muted/80`,children:[(0,W.jsx)(Ee,{size:13,className:`shrink-0 text-sky/70`}),(0,W.jsx)(`span`,{className:`flex-1`,children:(0,W.jsx)(`strong`,{className:`text-ink/90`,children:`Was ist der Schnellzugriff?`})}),(0,W.jsx)(`span`,{className:`text-muted/50 text-[10px] group-open:rotate-90 transition-transform shrink-0`,children:`▶`})]}),(0,W.jsxs)(`p`,{className:`mt-2 pl-[21px] text-[12px] text-muted/80 leading-relaxed`,children:[`Beispiel-Prompts fuer Claude Desktop. `,(0,W.jsx)(`strong`,{className:`text-ink/90`,children:`Klick auf eine Karte kopiert den Prompt in die Zwischenablage`}),` — danach in Claude einfuegen und absenden. Du kannst auch frei mit Claude reden; das hier sind nur Vorschlaege fuer haeufige Workflows. Die `,(0,W.jsx)(`strong`,{className:`text-ink/90`,children:`vollstaendige Liste aller Prompts`}),` findest du unter „Hilfe & Support" → Reiter „Prompts".`]})]}),[{title:`Profil`,items:[{prompt:`/ersterfassung`,label:`Kennenlernen`,desc:`Profil im Gespraech erstellen`,icon:oe},{prompt:`/willkommen`,label:`Wo stehe ich?`,desc:`Dein aktueller Stand`,icon:N},{prompt:`/profil_erweiterung`,label:`Dokumente analysieren`,desc:`Profil ergaenzen, Skills extrahieren, CV bewerten`,icon:z}]},{title:`Jobsuche & Bewerbung`,items:[{prompt:`/jobsuche_workflow`,label:`Jobsuche starten`,desc:`Jobboersen durchsuchen lassen`,icon:Xe},{prompt:`/bewerbung_schreiben`,label:`Bewerbung schreiben`,desc:`Anschreiben erstellen lassen`,icon:Ze},{prompt:`/auto_bewerbung`,label:`Inbound erfassen`,desc:`Recruiter hat sich gemeldet`,icon:Me}]},{title:`Interview & Verhandlung`,items:[{prompt:`/interview_vorbereitung`,label:`Interview vorbereiten`,desc:`Typische Fragen ueben`,icon:ee},{prompt:`/interview_simulation`,label:`Uebungsgespraech`,desc:`Probelauf mit Claude`,icon:Le},{prompt:`/gehaltsverhandlung`,label:`Gehalt verhandeln`,desc:`Strategie besprechen`,icon:B}]},{title:`Analyse & Strategie`,items:[{prompt:`/profil_analyse`,label:`Staerken erkennen`,desc:`Was kann ich besonders gut?`,icon:ne},{prompt:`/profil_ueberpruefen`,label:`Profil-Check`,desc:`Fehler finden und korrigieren`,icon:dt},{prompt:`/ablehnungs_coaching`,label:`Aus Absagen lernen`,desc:`Muster erkennen, Strategie anpassen`,icon:ot}]}].map(e=>(0,W.jsxs)(`div`,{className:`mt-3`,children:[(0,W.jsx)(`p`,{className:`mb-1.5 text-[11px] font-semibold uppercase tracking-[0.15em] text-teal/60`,children:e.title}),(0,W.jsx)(`div`,{className:`grid grid-cols-1 gap-1.5 sm:grid-cols-3`,children:e.items.map(({prompt:e,label:t,desc:n,icon:r,isNew:a})=>(0,W.jsxs)(`button`,{type:`button`,className:`glass-tab flex items-center gap-3 rounded-xl px-3.5 py-2.5 text-left transition`,onClick:()=>i(e),children:[(0,W.jsx)(r,{size:16,className:`shrink-0 text-teal/50`}),(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[13px] font-semibold text-ink/90`,children:[t,a?(0,W.jsx)(`span`,{className:`rounded bg-teal/15 px-1.5 py-px text-[10px] font-bold text-teal`,children:`NEU`}):null]}),(0,W.jsx)(`span`,{className:`block truncate text-[11px] text-muted/60`,children:n})]})]},e))})]},e.title))]}),(0,W.jsxs)(`div`,{className:`grid gap-3 xl:grid-cols-2`,children:[(0,W.jsxs)(q,{className:`overflow-hidden rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Top-Stellen`}),(0,W.jsx)(`span`,{className:`text-[11px] text-muted/40`,children:e.searchStatus?.last_search?`Aktualisiert ${e.searchStatus.days_ago===0?`heute`:e.searchStatus.days_ago===1?`gestern`:`vor ${e.searchStatus.days_ago} Tagen`}`:`Noch nie gesucht`})]}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>r(`stellen`),children:`Alle`})]}),g.length>0&&(0,W.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-2 text-[10px] text-muted/50`,children:[(0,W.jsx)(`span`,{children:`Scraper:`}),g.map(e=>{let t=e.is_active&&e.consecutive_failures<3,n=e.is_active&&e.consecutive_failures>=3&&e.consecutive_failures<10,r=!e.is_active,i=r?`bg-red-500/60`:n?`bg-amber-400/80`:t?`bg-emerald-400/80`:`bg-zinc-500/40`;return(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,title:`${e.scraper_name}: ${r?`deaktiviert`:e.consecutive_failures>0?`${e.consecutive_failures} Fehler`:`OK`} (${e.total_successes}/${e.total_runs} erfolgreich)`,children:[(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full ${i}`}),e.scraper_name]},e.scraper_name)})]}),(0,W.jsx)(`div`,{className:`mt-3 grid gap-2`,children:(()=>{let e=new Set((f.applications||[]).map(e=>e.job_hash).filter(Boolean)),t=f.jobs.filter(t=>!e.has(t.hash)).sort((e,t)=>(t.score||0)-(e.score||0)).slice(0,3);return t.length?t.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`group flex min-w-0 w-full cursor-pointer items-center justify-between gap-3 rounded-xl border border-white/[0.04] px-4 py-3 text-left transition-all duration-150 hover:-translate-y-[1px] hover:border-sky/35 hover:bg-white/[0.06] hover:shadow-[0_8px_20px_rgba(14,165,233,0.12)] hover:text-ink`,onClick:()=>r(`stellen`,{focus:`job`,jobHash:e.hash}),children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`truncate text-[13px] font-medium text-ink`,children:e.title}),(0,W.jsxs)(`p`,{className:`truncate text-[12px] text-muted/50`,children:[e.company||`Unbekannt`,e.location?` - ${e.location}`:``]})]}),(0,W.jsx)(`span`,{className:`shrink-0`,children:(0,W.jsxs)(J,{tone:`amber`,children:[`Score `,e.score||0]})})]},e.hash)):(0,W.jsxs)(`p`,{className:`py-4 text-center text-[13px] text-muted/50`,children:[`Noch keine Stellen.`,` `,(0,W.jsx)(`button`,{type:`button`,className:`text-teal/70 hover:text-teal`,onClick:()=>o(),children:`Suche starten`})]})})()})]}),(0,W.jsxs)(q,{className:`overflow-hidden rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsxs)(`h2`,{className:`text-sm font-semibold text-ink`,children:[(0,W.jsx)(Ne,{size:14,className:`mr-1.5 inline-block text-teal/60`}),`E-Mails`,f.emails.filter(e=>!e.application_id).length>0&&(0,W.jsxs)(`span`,{className:`ml-1.5 rounded-full bg-amber/20 px-1.5 py-px text-[10px] font-bold text-amber`,children:[f.emails.filter(e=>!e.application_id).length,` offen`]})]}),(0,W.jsx)(Si,{pushToast:a})]}),(0,W.jsx)(`div`,{className:`mt-3 grid gap-1.5`,children:f.emails.length>0?f.emails.slice(0,6).map(e=>(0,W.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-2 rounded-lg border border-white/[0.04] px-3 py-2 text-left transition hover:bg-white/[0.04]`,onClick:async()=>{try{h(await V(`/api/emails/${e.id}`))}catch{h(e)}},children:[(0,W.jsx)(`span`,{className:`shrink-0 text-sm ${e.direction===`ausgang`?`text-sky`:`text-amber`}`,children:e.direction===`ausgang`?`↗`:`↙`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`truncate text-[13px] text-ink`,children:e.subject||`Ohne Betreff`}),(0,W.jsxs)(`p`,{className:`truncate text-[11px] text-muted/50`,children:[e.sender||e.recipients,e.sent_date&&(0,W.jsx)(`span`,{className:`ml-1.5`,children:bn(e.sent_date)})]})]}),!e.application_id&&(0,W.jsx)(J,{tone:`amber`,children:`Offen`}),e.detected_status&&(0,W.jsx)(J,{tone:`sky`,children:e.detected_status})]},e.id)):(0,W.jsx)(`p`,{className:`py-4 text-center text-[13px] text-muted/50`,children:`Keine E-Mails importiert. Drag & Drop oder Button nutzen.`})})]})]})]}),m&&(0,W.jsx)(bi,{email:m,applications:f.applications,onClose:()=>h(null),pushToast:a,onUpdate:()=>{h(null),D()}})]}):(0,W.jsxs)(`div`,{id:`page-dashboard`,className:`page active`,children:[(0,W.jsx)(Wn,{title:`Dashboard`,description:`Hier siehst du auf einen Blick, was als Nächstes zu tun ist.`,eyebrow:`Uebersicht`}),(0,W.jsx)(`div`,{id:`welcome-screen`,className:`grid gap-6`,children:(0,W.jsx)(q,{className:`glass-hero rounded-2xl p-8`,children:(0,W.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-[minmax(0,1.3fr)_minmax(18rem,0.9fr)]`,children:[(0,W.jsxs)(`div`,{className:`space-y-5`,children:[(0,W.jsx)(J,{tone:`sky`,children:`Dein Bewerbungs-Begleiter`}),(0,W.jsx)(`h2`,{className:`font-display text-4xl font-semibold tracking-tight text-ink`,children:`Willkommen bei PBP`}),(0,W.jsx)(`p`,{className:`max-w-2xl text-base text-muted`,children:`PBP hilft dir Schritt für Schritt durch den Bewerbungsprozess — vom Lebenslauf bis zum Vorstellungsgespräch. Alles bleibt auf deinem Rechner.`}),(0,W.jsx)(`p`,{className:`max-w-2xl text-sm text-muted/70`,children:`Du musst nicht wissen, was du tun sollst — PBP zeigt dir bei jedem Schritt, was als Nächstes sinnvoll ist.`}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,W.jsxs)(K,{onClick:()=>r(`profil`),children:[`Starte dein Profil (ca. 10 Minuten)`,(0,W.jsx)(A,{size:15})]}),(0,W.jsxs)(K,{variant:`ghost`,onClick:()=>r(`profil`,{composer:`document`}),children:[(0,W.jsx)(ut,{size:15}),`Ich habe schon Unterlagen (optional)`]})]})]}),(0,W.jsx)(`div`,{className:`grid gap-4`,children:[{title:`Schritt 1 — Profil`,text:`Erzähl Claude von dir. Deine Erfahrung, deine Stärken, deine Wünsche.`},{title:`Schritt 2 — Stellen finden`,text:`PBP durchsucht Jobbörsen und zeigt dir passende Stellen mit Bewertung.`},{title:`Schritt 3 — Bewerben`,text:`Anschreiben erstellen, Bewerbungen verfolgen, Termine im Blick behalten.`}].map(e=>(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:e.title}),(0,W.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-ink`,children:e.text})]},e.title))})]})})})]})}function _i({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(!1);if((0,w.useEffect)(()=>{try{let e=localStorage.getItem(`pbp_local_ai_banner_dismissed_until`);if(e&&new Date(e)>new Date){a(!0);return}}catch{}fetch(`/api/llm/status`).then(e=>e.ok?e.json():null).then(e=>r(e)).catch(()=>{})},[]),i||!n||!(n.ollama_available&&(n.available_models?.length||0)>0&&n.user_state===`off`))return null;function o(){try{let e=new Date;e.setDate(e.getDate()+7),localStorage.setItem(`pbp_local_ai_banner_dismissed_until`,e.toISOString())}catch{}a(!0)}async function s(){try{await H(`/api/llm/state`,{state:`active`}),e(`Lokale KI aktiviert.`,`success`),a(!0)}catch(t){e(`Aktivieren fehlgeschlagen: ${t.message}`,`danger`)}}return(0,W.jsx)(q,{className:`rounded-2xl border-sky/30 bg-sky/[0.06]`,children:(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(`div`,{className:`text-2xl`,children:`🟡`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink mb-1`,children:`Ollama erkannt — willst du PBP-Lokale-KI aktivieren?`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/70 mb-3`,children:[`Spart Claude-Tokens fuer Standard-Aufgaben (Doku-Klassifikation, Skill-Extraktion, Stellen-Vorfilterung). Daten bleiben lokal. Aktuell installiert: `,(0,W.jsx)(`strong`,{className:`text-ink`,children:(n.available_models||[]).join(`, `)})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(K,{size:`sm`,onClick:s,children:`Aktivieren`}),(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:()=>t(`einstellungen`,{tab:`ai`}),children:`In Einstellungen ansehen`}),(0,W.jsx)(`button`,{type:`button`,onClick:o,className:`text-[11px] text-muted/60 hover:text-ink underline ml-2`,children:`Spaeter (7 Tage)`})]})]})]})})}function vi({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(!0);(0,w.useEffect)(()=>{let e=!1;return fetch(`/api/activity/aggregate?days=30`).then(e=>e.ok?e.json():null).then(t=>{e||r(t)}).catch(()=>{}),fetch(`/api/learning/insights?only_active=1&limit=10`).then(e=>e.ok?e.json():null).then(t=>{!e&&t?.insights&&a(t.insights)}).catch(()=>{}),()=>{e=!0}},[]);let c=async e=>{try{(await fetch(`/api/learning/insights/${e}`,{method:`DELETE`})).ok&&a(t=>t.filter(t=>t.id!==e))}catch{}};return!n||n.total_events<50&&(n.anti_patterns||[]).length===0&&i.length===0?null:(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),className:`w-full flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`text-left`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Was PBP gelernt hat`}),(0,W.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[n.total_events,` Events in `,n.window_days,` Tagen`,n.anti_patterns?.length>0&&(0,W.jsxs)(`span`,{className:`ml-2 text-amber`,children:[`· `,n.anti_patterns.length,` Hinweis`,n.anti_patterns.length===1?``:`e`]}),i.length>0&&(0,W.jsxs)(`span`,{className:`ml-2 text-teal`,children:[`· `,i.length,` KI-Insight`,i.length===1?``:`s`]})]})]}),(0,W.jsx)(`span`,{className:`text-muted/40 text-xs`,children:o?`▼`:`▲`})]}),!o&&(0,W.jsxs)(`div`,{className:`mt-4 grid gap-4 lg:grid-cols-2`,children:[n.top_pages?.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Top-Seiten`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.top_pages.map(e=>(0,W.jsxs)(`div`,{className:`glass-card p-2 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`font-medium text-ink`,children:e.page}),(0,W.jsxs)(`span`,{className:`text-muted/50`,children:[e.views,`× besucht`]})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60 mt-0.5`,children:[e.dwell_minutes,` min Verweildauer · `,e.clicks_per_view,` Klicks/Besuch`]})]},e.page))})]}),n.dismiss_reasons_top?.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Top-Aussortier-Gruende`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.dismiss_reasons_top.map(e=>(0,W.jsxs)(`div`,{className:`glass-card p-2 text-[12px] flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`font-medium text-ink`,children:e.reason}),(0,W.jsxs)(`span`,{className:`text-muted/50`,children:[e.count,`×`]})]},e.reason))})]}),n.top_filters?.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Haeufige Filter`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.top_filters.map(e=>(0,W.jsxs)(`div`,{className:`glass-card p-2 text-[12px] flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`font-mono text-ink`,children:e.filter}),(0,W.jsxs)(`span`,{className:`text-muted/50`,children:[e.count,`×`]})]},e.filter))})]}),Object.keys(n.workflow_stats||{}).length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Workflows`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:Object.entries(n.workflow_stats).map(([e,t])=>{let n=t.start||0,r=t.complete||0,i=t.abort||0,a=n>0?Math.round(r/n*100):0;return(0,W.jsxs)(`div`,{className:`glass-card p-2 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`span`,{className:`font-medium text-ink`,children:e}),(0,W.jsxs)(`span`,{className:a>=70?`text-teal`:a>=40?`text-amber`:`text-coral`,children:[a,`%`]})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-0.5`,children:[n,` gestartet · `,r,` abgeschlossen · `,i,` abgebrochen`]})]},e)})})]}),i.length>0&&(0,W.jsxs)(`div`,{className:`lg:col-span-2`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-teal/80 uppercase mb-2`,children:`KI-Erkenntnisse aus deinem Verhalten`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:i.map(e=>(0,W.jsx)(`div`,{className:`glass-card p-3 text-[12px] border-teal/20 bg-teal/[0.03]`,children:(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded bg-teal/10 text-teal`,children:e.kind?.replace(/_/g,` `)}),(0,W.jsx)(`span`,{className:`font-medium text-ink`,children:e.title})]}),e.recommendation&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted/70 mt-1.5`,children:e.recommendation}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted/40 mt-1`,children:[e.observed_count,`× beobachtet`,e.app_version_at_creation&&` · seit v${e.app_version_at_creation}`]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),className:`text-[10px] text-muted/40 hover:text-coral`,title:`Nicht mehr anzeigen`,children:`×`})]})},e.id))})]}),n.anti_patterns?.length>0&&(0,W.jsxs)(`div`,{className:`lg:col-span-2`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-amber/80 uppercase mb-2`,children:`Beobachtungen`}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.anti_patterns.map((e,t)=>(0,W.jsx)(`div`,{className:`glass-card p-3 text-[12px] border-amber/20 bg-amber/[0.03]`,children:(0,W.jsx)(`p`,{className:`text-muted/80`,children:e.message})},t))})]})]})]})}function yi({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp_recap_dismissed_until`);if(e&&Number(e)>Date.now())return!0}catch{}return!1});if((0,w.useEffect)(()=>{let e=!1;return fetch(`/api/recap`).then(e=>e.ok?e.json():null).then(t=>{t&&!e&&r(t)}).catch(()=>{}),()=>{e=!0}},[]),i||!n||!n.has_anything)return null;let o=[];return n.new_jobs>0&&o.push({icon:Xe,color:`text-sky`,label:`Neue Stellen`,value:n.new_jobs,onClick:()=>t?.(`stellen`)}),n.new_applications>0&&o.push({icon:Ze,color:`text-teal`,label:`Neue Bewerbungen`,value:n.new_applications,onClick:()=>t?.(`bewerbungen`)}),n.new_emails>0&&o.push({icon:Ne,color:`text-amber`,label:`Neue E-Mails`,value:n.new_emails,onClick:()=>t?.(`bewerbungen`)}),n.status_changes>0&&o.push({icon:Ie,color:`text-teal/80`,label:`Statuswechsel`,value:n.status_changes,onClick:()=>t?.(`bewerbungen`)}),n.overdue_followups>0&&o.push({icon:ue,color:`text-coral`,label:`Faellige Follow-ups`,value:n.overdue_followups,onClick:()=>t?.(`bewerbungen`)}),n.upcoming_meetings>0&&o.push({icon:te,color:`text-sky`,label:`Anstehende Termine`,value:n.upcoming_meetings,onClick:()=>t?.(`kalender`)}),(0,W.jsxs)(q,{className:`rounded-2xl border-sky/15 bg-sky/[0.04]`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Was hat sich getan?`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60 mt-0.5`,children:`Aktivitaet seit deinem letzten Besuch`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{try{localStorage.setItem(`pbp_recap_dismissed_until`,String(Date.now()+1440*60*1e3))}catch{}a(!0)},className:`text-muted/40 hover:text-ink text-xs`,title:`Bis morgen ausblenden`,children:`✕`})]}),(0,W.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:o.map((e,t)=>(0,W.jsxs)(`button`,{type:`button`,onClick:e.onClick,className:`glass-card flex items-center gap-3 px-3 py-2.5 rounded-lg text-left hover:bg-white/[0.04] transition`,children:[(0,W.jsx)(e.icon,{size:16,className:e.color}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60`,children:e.label}),(0,W.jsx)(`p`,{className:`text-lg font-semibold text-ink`,children:e.value})]})]},t))}),n.top_jobs?.length>0&&(0,W.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-white/5`,children:[(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60 mb-1.5`,children:`Top neue Stellen:`}),(0,W.jsx)(`ul`,{className:`space-y-1`,children:n.top_jobs.slice(0,3).map(e=>(0,W.jsxs)(`li`,{className:`text-[12px] text-muted/80`,children:[(0,W.jsxs)(`span`,{className:`text-teal/70 font-mono mr-1.5`,children:[`[`,e.score,`]`]}),(0,W.jsx)(`span`,{className:`text-ink/90`,children:e.title}),(0,W.jsxs)(`span`,{className:`text-muted/50`,children:[` bei `,e.company]})]},e.hash))})]})]})}function bi({email:e,applications:t,onClose:n,pushToast:r,onUpdate:i}){let[a,o]=(0,w.useState)(e.application_id||``),[s,c]=(0,w.useState)(!1);async function l(){if(a)try{await H(`/api/emails/${e.id}/confirm-match`,{application_id:a}),r(`E-Mail zugeordnet.`,`success`),i()}catch(e){r(`Zuordnung fehlgeschlagen: ${e.message}`,`danger`)}}async function u(){try{let t=await H(`/api/emails/${e.id}/create-application`,{});r(`Bewerbung "${t.title}" @ ${t.company} angelegt.`,`success`),i()}catch(e){r(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function d(t){c(!0);try{await H(`/api/emails/${e.id}/apply-status`,{status:t}),r(`Status '${t}' angewendet.`,`success`),i()}catch(e){r(`Status konnte nicht angewendet werden: ${e.message}`,`danger`)}finally{c(!1)}}async function f(){try{await V(`/api/emails/${e.id}`,{method:`DELETE`}),r(`E-Mail gelöscht.`,`success`),i()}catch(e){r(`Löschen fehlgeschlagen: ${e.message}`,`danger`)}}let p=e.direction===`ausgang`?e.recipients:e.sender,m=Mn(p,e.subject),h=jn({to:e.sender}),g=jn({to:e.recipients});return(0,W.jsx)(er,{open:!0,title:e.subject||`E-Mail`,onClose:n,footer:(0,W.jsxs)(`div`,{className:`flex justify-between`,children:[(0,W.jsx)(K,{variant:`ghost`,className:`text-coral`,onClick:f,children:`Löschen`}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[m&&(0,W.jsxs)(`a`,{href:m,className:`inline-flex items-center gap-1 rounded-lg bg-sky/15 px-3 py-1.5 text-sm font-semibold text-sky hover:bg-sky/25 transition-colors`,title:`Im Mail-Client antworten an ${An(p)}`,children:[(0,W.jsx)(Ie,{size:14}),` Antworten`]}),(0,W.jsx)(K,{onClick:n,children:`Schließen`})]})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,W.jsxs)(`div`,{className:`grid gap-1.5 text-sm`,children:[(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Von:`}),h?(0,W.jsx)(`a`,{href:h,className:`text-sky hover:underline`,children:e.sender}):(0,W.jsx)(`span`,{className:`text-ink`,children:e.sender})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`An:`}),g?(0,W.jsx)(`a`,{href:g,className:`text-sky hover:underline`,children:e.recipients}):(0,W.jsx)(`span`,{className:`text-ink`,children:e.recipients})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Datum:`}),(0,W.jsx)(`span`,{className:`text-ink`,children:bn(e.sent_date)})]}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Richtung:`}),(0,W.jsx)(J,{tone:e.direction===`ausgang`?`sky`:`amber`,children:e.direction===`ausgang`?`Ausgehend`:`Eingehend`})]})]})}),e.body_text&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Inhalt`}),(0,W.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto rounded-lg bg-white/[0.02] p-3 text-sm text-muted/70 whitespace-pre-wrap`,children:e.body_text})]}),e.detected_status&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Erkannter Status`}),(0,W.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,W.jsx)(J,{tone:`sky`,children:e.detected_status}),(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Konfidenz: `,Math.round((e.detected_status_confidence||0)*100),`%`]}),e.application_id&&(0,W.jsx)(K,{size:`sm`,onClick:()=>d(e.detected_status),disabled:s,children:`Status übernehmen`})]})]}),(e.attachments_meta||[]).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[`Anhänge (`,e.attachments_meta.length,`)`]}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-1`,children:e.attachments_meta.map((e,t)=>(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-ink`,children:[(0,W.jsx)(`span`,{className:`text-muted/50`,children:`📎`}),(0,W.jsx)(`span`,{children:e.filename}),e.imported&&(0,W.jsx)(J,{tone:`success`,children:`Importiert`}),e.duplicate_of&&(0,W.jsx)(J,{tone:`neutral`,children:`Duplikat`})]},t))})]}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Bewerbung zuordnen`}),(0,W.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,W.jsxs)(Xn,{className:`flex-1`,value:a,onChange:e=>o(e.target.value),children:[(0,W.jsx)(`option`,{value:``,children:`— Nicht zugeordnet —`}),(t||[]).map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[e.title,` @ `,e.company]},e.id))]}),(0,W.jsx)(K,{size:`sm`,onClick:l,disabled:!a,children:`Zuordnen`})]}),e.match_confidence>0&&e.match_confidence<1&&(0,W.jsxs)(`p`,{className:`mt-1 text-xs text-muted/50`,children:[`Auto-Match Konfidenz: `,Math.round(e.match_confidence*100),`%`]}),!e.application_id&&(0,W.jsxs)(`div`,{className:`mt-3 border-t border-white/[0.04] pt-3`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted/50 mb-2`,children:`Keine passende Bewerbung? Lege eine neue aus dieser E-Mail an — Subject als Titel, Absender-Domain als Firma.`}),(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:u,children:`Neue Bewerbung daraus erstellen`})]})]})]})})}function xi({pushToast:e,refreshChrome:t}){let n=(0,w.useRef)(null),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1);async function s(n){if(!n?.length)return;i(!0);let r=0;try{let i=new Set;for(let e of n){let t=Xt(e);i.has(t)||(i.add(t),await $t(e),r++)}r>0&&(e(`${r} Dokument${r>1?`e`:``} hochgeladen`,`success`),await t({forceReload:!0}))}catch(t){e(`Upload-Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return(0,W.jsxs)(q,{className:`mb-5 rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(ut,{size:14,className:`text-teal/60`}),(0,W.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Dokumente importieren`})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Si,{pushToast:e}),(0,W.jsx)(`input`,{ref:n,type:`file`,multiple:!0,accept:`.pdf,.docx,.doc,.txt,.csv,.json,.xml,.rtf`,className:`hidden`,onChange:async e=>{await s(Array.from(e.target.files||[])),n.current&&(n.current.value=``)}}),(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>n.current?.click(),disabled:r,children:r?`Importiere...`:`Dateien auswaehlen`})]})]}),(0,W.jsx)(`div`,{className:`mt-3 rounded-xl border-2 border-dashed px-4 py-4 text-center text-xs transition ${a?`border-sky/60 bg-sky/10 text-sky`:`border-white/10 text-muted/40`}`,onDragOver:e=>{e.preventDefault(),o(!0)},onDragEnter:e=>{e.preventDefault(),o(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&o(!1)},onDrop:async e=>{e.preventDefault(),o(!1),await s(await un(e.dataTransfer))},children:a?`Loslassen zum Hochladen`:`Dokumente oder E-Mails per Drag & Drop hier ablegen`})]})}function Si({pushToast:e}){let t=(0,w.useRef)(null),[n,r]=(0,w.useState)(!1);return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`input`,{ref:t,type:`file`,accept:`.msg,.eml`,className:`hidden`,onChange:async n=>{let i=n.target.files?.[0];if(i){r(!0);try{let t=new FormData;t.append(`file`,i);let n=await fetch(`/api/emails/upload`,{method:`POST`,body:t}),r=await n.json();if(!n.ok){e(r.error||`E-Mail-Upload fehlgeschlagen`,`danger`);return}e(`E-Mail importiert${r.match?.application?` → ${r.match.application.company} (${Math.round(r.match.confidence*100)}%)`:` (nicht zugeordnet)`}${r.detected_status?.status?` | Status: ${r.detected_status.status}`:``}${r.meetings?.length?` | ${r.meetings.length} Termin(e)`:``}${r.imported_documents?` | ${r.imported_documents} Dokument(e)`:``}`,`success`)}catch(t){e(`Upload fehlgeschlagen: ${t.message}`,`danger`)}finally{r(!1),t.current&&(t.current.value=``)}}}}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>t.current?.click(),disabled:n,children:[(0,W.jsx)(Ne,{size:14,className:`mr-1`}),n?`Importiere...`:`E-Mail importieren`]})]})}var Ci={job_hash:``,title:``,company:``,url:``,status:`beworben`,notes:``},wi={open:!1,job:null,type:`firma`,value:``},Ti={open:!1,job:null,selectedReasons:[],customReason:``},Ei=1800;function Di(e,t){return e?t===`firma`?String(e.company||``).trim():t===`ort`?String(e.location||``).trim():String(e.title||``).trim():``}function Oi(e){return`job-card-${encodeURIComponent(String(e||``))}`}function ki(e){if(e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function Ai(e=[]){let t=[],n=[];for(let r of e){let e=ki(r?.salary_min),i=ki(r?.salary_max);if(e===null&&i===null)continue;e===null&&(e=i),i===null&&(i=e);let a={min:e,max:i,salaryType:String(r?.salary_type||``).toLowerCase()};r?.salary_estimated?n.push(a):t.push(a)}let r=[...t,...n],i=t.length===0&&n.length>0,a=r.filter(e=>e.salaryType===`jaehrlich`&&e.min>=2e4);if(!a.length)return{jobsWithSalary:r.length,annualBasisCount:0,averageMin:null,averageMax:null,bandMin:null,bandMax:null,allEstimated:i};let o=a.map(e=>e.min),s=a.map(e=>e.max);return{jobsWithSalary:r.length,annualBasisCount:a.length,averageMin:Math.round(o.reduce((e,t)=>e+t,0)/o.length),averageMax:Math.round(s.reduce((e,t)=>e+t,0)/s.length),bandMin:Math.min(...o),bandMax:Math.max(...s),allEstimated:i}}function ji(e){return Number(e?.score||0)>0&&String(e?.description||``).trim().length<50}function Mi(){let{chrome:e,intent:t,clearIntent:n,reloadKey:r,refreshChrome:i,pushToast:a,copyPrompt:o,navigateTo:s,startJobsuche:c}=kt(),[l,u]=(0,w.useState)(!0),[d,f]=(0,w.useState)([]),[p,m]=(0,w.useState)([]),[h,g]=(0,w.useState)([]),_=Number(e?.search_criteria?.min_score_schwelle??0),[v,y]=(0,w.useState)({query:``,source:``,minScore:String(Math.max(0,_)),remote:``,salaryOnly:!1,sort:`score_desc`,view:`active`,employmentType:``,hideApplied:!0,missingDescriptionOnly:!1}),[b,x]=(0,w.useState)(new Set),[S,C]=(0,w.useState)({open:!1,title:``,analysis:null}),[T,E]=(0,w.useState)({open:!1,job:null,editing:!1}),[D,O]=(0,w.useState)(!1),[k,A]=(0,w.useState)({}),[M,N]=(0,w.useState)({open:!1,draft:Ci}),[P,ee]=(0,w.useState)(wi),[F,I]=(0,w.useState)({running:!1,progress:0,message:``}),[te,ne]=(0,w.useState)(``),[L,ie]=(0,w.useState)(``),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(``),[se,ce]=(0,w.useState)(Ti),[le,ue]=(0,w.useState)([]),[fe,pe]=(0,w.useState)(0),[me,he]=(0,w.useState)(!1),[_e,be]=(0,w.useState)(()=>{let e=localStorage.getItem(`pbp_jobs_page_size`);return e?Number(e):20}),[xe,Se]=(0,w.useState)(!1),Ce=(0,w.useRef)(!1),B=(0,w.useRef)(!1),we=(0,w.useDeferredValue)(v.query),Te=(0,w.useCallback)(e=>{E({open:!0,job:e,editing:!1})},[]),Ee=(0,w.useEffectEvent)(async(e={})=>{let t=!!e?.silent,n=!!e?.append,r=e?.pageSize||_e,i=n?d.length:0;try{let e=r>0?`/api/jobs?active=true&exclude_blacklisted=true&limit=${r}&offset=${i}`:`/api/jobs?active=true&exclude_blacklisted=true`,[t,a,o,s,c]=await Promise.all([V(e),n?Promise.resolve(null):V(`/api/jobs?active=false`),n?Promise.resolve(null):V(`/api/follow-ups`),n?Promise.resolve(null):V(`/api/applications`),n?Promise.resolve(null):Et(`/api/dismiss-reasons`)]);(0,w.startTransition)(()=>{let e=t&&!Array.isArray(t)&&t.jobs,r=e?t.jobs:t||[];f(n?e=>[...e,...r]:r),e?(pe(t.total||0),he(!!t.has_more)):(pe(r.length),he(!1)),n||(a&&m(a||[]),o&&g(o?.follow_ups||[]),s&&x(new Set((s?.applications||[]).filter(e=>e.job_hash&&![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.status)).map(e=>e.job_hash))),c&&ue(c)),u(!1),Se(!1)})}catch(e){t||a(`Stellen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>{u(!1),Se(!1)})}}),De=(0,w.useEffectEvent)(async()=>{try{let e=await Et(`/api/jobsuche/running`);if(!e){B.current=!1,Ce.current&&(Ce.current=!1,await Ee({silent:!0}),await i({quiet:!0})),(0,w.startTransition)(()=>I({running:!1,progress:0,message:``}));return}let t=!!e?.running,n=Math.max(0,Math.min(100,Number(e?.progress||0))),r=String(e?.message||``);if(B.current=!1,(0,w.startTransition)(()=>I({running:t,progress:n,message:r})),t){Ce.current=!0;return}Ce.current&&(Ce.current=!1,await Ee({silent:!0}),await i({quiet:!0}))}catch(e){B.current||(B.current=!0,a(`Live-Aktualisierung fehlgeschlagen: ${e.message}`,`danger`))}});(0,w.useEffect)(()=>{u(!0),Ee()},[r]),(0,w.useEffect)(()=>{let e=!1,t=null,n=async()=>{if(e||(await De(),e))return;let r=Ce.current?5e3:3e4;t=window.setTimeout(n,r)};return n(),()=>{e=!0,Ce.current=!1,t&&window.clearTimeout(t)}},[r,De]),(0,w.useEffect)(()=>{t?.page===`stellen`&&(t.focus===`job`&&t.jobHash&&(y(e=>({...e,view:`active`,query:``,source:``,minScore:`0`,remote:``,salaryOnly:!1,missingDescriptionOnly:!1})),ne(String(t.jobHash))),t.missingDescriptionOnly&&y(e=>({...e,view:`active`,missingDescriptionOnly:!0})),n())},[t]),(0,w.useEffect)(()=>{if(l||!te)return;let e=document.getElementById(Oi(te));if(!e)return;e.scrollIntoView({behavior:`smooth`,block:`center`}),ie(te),ne(``);let t=window.setTimeout(()=>{ie(e=>e===te?``:e)},Ei);return()=>window.clearTimeout(t)},[l,te,d,p,v.view,v.query,v.source,v.minScore,v.remote,v.salaryOnly,v.missingDescriptionOnly,v.sort]);async function Oe(e){try{let t=await V(`/api/jobs/${e.hash}/fit-analyse`);C({open:!0,title:e.title,hash:e.hash,analysis:t})}catch(e){a(`Fit-Analyse fehlgeschlagen: ${e.message}`,`danger`)}}async function ke(e,t,n){try{await H(e,t);let r=t.hash;e.includes(`/dismiss`)?(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(r)));let e=d.find(e=>String(e.hash)===String(r));e&&m(t=>[{...e,status:`aussortiert`},...t])}):e.includes(`/restore`)&&(0,w.startTransition)(()=>{m(e=>e.filter(e=>String(e.hash)!==String(r)));let e=p.find(e=>String(e.hash)===String(r));e&&f(t=>[{...e,status:`aktiv`},...t])}),i({quiet:!0}),a(n,`success`)}catch(e){a(`${n} fehlgeschlagen: ${e.message}`,`danger`)}}async function Ae(){try{await H(`/api/applications`,M.draft),N({open:!1,draft:Ci}),await i(),a(`Bewerbung angelegt.`,`success`),s(`bewerbungen`)}catch(e){a(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}function je(e){ce({open:!0,job:e,selectedReasons:[],customReason:``})}async function Me(){let e=[...se.selectedReasons];if(se.customReason.trim()&&e.push(se.customReason.trim()),!e.length){a(`Bitte mindestens einen Ablehnungsgrund auswählen.`,`danger`);return}let t=se.job?.hash;if(t)try{await H(`/api/jobs/dismiss`,{hash:t,reasons:e}),(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(t)));let e=d.find(e=>String(e.hash)===String(t));e&&m(t=>[{...e,status:`aussortiert`},...t])}),i({quiet:!0});try{let e=await Et(`/api/dismiss-reasons`);e&&ue(e)}catch{}a(`Stelle aussortiert.`,`success`),ce(Ti)}catch(e){a(`Stelle konnte nicht aussortiert werden: ${e.message}`,`danger`)}}function Ne(e){ce(t=>{let n=t.selectedReasons.includes(e)?t.selectedReasons.filter(t=>t!==e):[...t.selectedReasons,e];return{...t,selectedReasons:n}})}function Pe(e){let t=e?.company?`firma`:e?.location?`ort`:`keyword`;ee({open:!0,job:e,type:t,value:Di(e,t)})}async function Fe(){let e=(P.value||``).trim();if(!e){a(`Bitte einen Wert für die Blacklist eingeben.`,`danger`);return}try{await H(`/api/blacklist`,{type:P.type,value:e});let t=P.job?.hash;t&&(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(t)))}),i({quiet:!0}),a(`Blacklist-Eintrag gespeichert: ${e}`,`success`),ee(wi)}catch(e){a(`Blacklist-Eintrag fehlgeschlagen: ${e.message}`,`danger`)}}async function Ie(e){try{let t=(await U(`/api/jobs/${e.hash}/pin`,{})).is_pinned;(0,w.startTransition)(()=>{f(n=>n.map(n=>String(n.hash)===String(e.hash)?{...n,is_pinned:t?1:0}:n))}),i({quiet:!0}),a(t?`Stelle angepinnt.`:`Pin entfernt.`,`success`)}catch(e){a(`Pin-Aktion fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){let t=Math.max(0,Math.min(100,Math.round(Number(oe)||0)));try{await U(`/api/jobs/${e.hash}/score`,{score:t}),ae(``),z(``),(0,w.startTransition)(()=>{f(n=>n.map(n=>String(n.hash)===String(e.hash)?{...n,score:t}:n))}),i({quiet:!0}),a(`Score auf ${t} gesetzt.`,`success`)}catch(e){a(`Score konnte nicht gespeichert werden: ${e.message}`,`danger`)}}if(l)return(0,W.jsx)($n,{label:`Stellen werden geladen...`});let Re=[...d,...p],ze=[...new Set(Re.map(e=>e.source).filter(Boolean))],Be=[...new Set(Re.map(e=>e.remote_level).filter(e=>e&&e!==`unbekannt`))],Ve=[...new Set(Re.map(e=>e.employment_type).filter(Boolean))],He=v.view===`active`?d:p,Ue=d.filter(e=>Number(e?.score||0)>0),Je=d.filter(ji).length,Ze=He.filter(e=>b.has(e.hash)).length,Qe=Ai(d),$e=Number(Qe.jobsWithSalary||0),et=!!Qe.allEstimated,tt=Number(Qe.annualBasisCount||0),nt=Number(Qe.averageMin),rt=Number(Qe.averageMax),at=Number.isFinite(nt),ot=Number.isFinite(rt),st=at&&ot?Math.round((nt+rt)/2):at?Math.round(nt):ot?Math.round(rt):null,ct=e=>new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(Math.round(e)),lt=Number(Qe.bandMin),ut=Number(Qe.bandMax),dt=Number.isFinite(lt),ft=Number.isFinite(ut),pt=dt&&ft?`${ct(lt)} – ${ct(ut)} EUR`:dt?Sn(lt):ft?Sn(ut):`Keine Angabe`,mt=(He.length?He:Re).reduce((e,t)=>{let n=t.updated_at||t.found_at||``,r=Date.parse(n);return Number.isNaN(r)?e:r>e.timestamp?{raw:n,timestamp:r}:e},{raw:``,timestamp:-1/0}).raw,ht=Ue.length?Math.round(Ue.reduce((e,t)=>e+Number(t.score||0),0)/Ue.length):0,gt=He.filter(e=>{let t=`${e.title||``} ${e.company||``} ${e.description||``}`.toLowerCase(),n=!we||t.includes(we.toLowerCase()),r=!v.source||e.source===v.source,i=Number(e.score||0)>=Number(v.minScore||0),a=!v.remote||e.remote_level===v.remote,o=!v.salaryOnly||e.salary_min&&e.salary_min>0,s=!v.employmentType||e.employment_type===v.employmentType,c=!v.hideApplied||!b.has(e.hash),l=!v.missingDescriptionOnly||ji(e);return n&&r&&i&&a&&o&&s&&c&&l}).sort((e,t)=>{let n=e.is_pinned?1:0,r=t.is_pinned?1:0;if(n!==r)return r-n;switch(v.sort){case`score_desc`:return(t.score||0)-(e.score||0);case`score_asc`:return(e.score||0)-(t.score||0);case`salary_desc`:return(t.salary_max||t.salary_min||0)-(e.salary_max||e.salary_min||0);case`company`:return(e.company||``).localeCompare(t.company||``);case`title`:return(e.title||``).localeCompare(t.title||``);default:return 0}}),_t=gt.filter(ji).length,yt=!e.searchStatus?.last_search||Number(e.searchStatus?.days_ago||0)>0,bt=F.running?{badge:`Läuft`,tone:`sky`,title:`Jobsuche wird gerade aktualisiert`,description:F.message||`Neue Treffer kommen laufend rein. Prüfe die Liste erst, wenn die Suche durch ist.`}:v.view===`active`&&Je>0?{badge:`Score prüfen`,tone:`amber`,title:`Ein Teil der Scores ist noch nicht belastbar`,description:`${Je} aktive Stelle(n) haben keine oder nur eine sehr kurze Beschreibung. Prüfe diese Treffer vor einer Entscheidung direkt gegen die Originalanzeige.`,actionLabel:v.missingDescriptionOnly?`Alle Stellen zeigen`:`Nur diese Stellen zeigen`,action:()=>y(e=>({...e,view:`active`,missingDescriptionOnly:!e.missingDescriptionOnly}))}:v.view===`active`&>.length===0&&He.length>0&&v.hideApplied&&Ze===He.length?{badge:`Filter`,tone:`sky`,title:`Alle sichtbaren Treffer sind nur wegen "Beworbene ausblenden" weg`,description:`Für einen Vollcheck lohnt sich ein kurzer Blick auf bereits bearbeitete Stellen, bevor du unnötig neu suchst.`,actionLabel:`Beworbene einblenden`,action:()=>y(e=>({...e,hideApplied:!1}))}:v.view===`active`&>.length===0&&He.length>0?{badge:`Filter`,tone:`neutral`,title:`Die aktuelle Filterkombination ist strenger als nötig`,description:`Gerade passt kein Treffer mehr durch die Filter. Lockere zuerst die Auswahl, bevor du annimmst, dass nichts Passendes da ist.`,actionLabel:`Filter zurücksetzen`,action:()=>y(e=>({...e,query:``,source:``,minScore:`0`,remote:``,salaryOnly:!1,employmentType:``,hideApplied:!0,missingDescriptionOnly:!1}))}:v.view===`active`&>.length===0&&yt?{badge:`Suche`,tone:`danger`,title:`Erst die Jobsuche erneuern, dann wieder aussortieren`,description:`Die Suche ist veraltet oder noch nie gelaufen. Neue Treffer bringen jetzt mehr als noch feinere Filter.`,actionLabel:`Jobsuche starten`,action:()=>c()}:v.view===`dismissed`&&p.length>0?{badge:`Review`,tone:`neutral`,title:`Ausgeblendete Stellen sind dein späteres Prüfregal`,description:`Hier solltest du nur bewusst wiederherstellen, nicht wahllos zurückholen. Nutze die Gründe als Lernsignal für bessere Filter.`}:{badge:`Auf Kurs`,tone:`success`,title:`Die Stellenliste ist arbeitsfähig`,description:`Prüfe jetzt die besten Treffer, bevor du neue Suchrunden startest. Erst sichten, dann bewerben, dann nachschärfen.`};return(0,W.jsxs)(`div`,{id:`page-stellen`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Stellen`}),(0,W.jsx)(Lr,{page:`stellen`}),(0,W.jsx)(`div`,{className:`mb-6 flex items-baseline gap-2`,children:(0,W.jsx)(`span`,{className:`text-[11px] text-muted/40`,children:F.running?`Jobsuche läuft${F.progress>0?` (${Math.round(F.progress)}%)`:``}`:e.searchStatus?.last_search?`Aktualisiert ${e.searchStatus.days_ago===0?`heute`:e.searchStatus.days_ago===1?`gestern`:`vor ${e.searchStatus.days_ago} Tagen`}`:`Noch nie gesucht`})}),F.running&&(0,W.jsxs)(`div`,{className:`mb-4 rounded-lg border border-sky-500/20 bg-sky-500/5 p-4`,children:[(0,W.jsxs)(`div`,{className:`mb-2 flex items-center justify-between text-sm`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2 font-medium text-sky-300`,children:[(0,W.jsx)(`span`,{className:`h-3 w-3 animate-spin rounded-full border-2 border-sky-500/30 border-t-sky-400`}),(F.message||`Jobsuche läuft...`).split(` | `)[0]]}),(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[Math.round(F.progress),`%`]})]}),(0,W.jsx)(`div`,{className:`h-2 overflow-hidden rounded-full bg-white/5`,children:(0,W.jsx)(`div`,{className:`h-full rounded-full bg-sky-500 transition-all duration-500 ease-out`,style:{width:`${Math.max(2,F.progress)}%`}})}),F.message?.includes(` | `)&&(0,W.jsx)(`p`,{className:`mt-2 text-xs text-muted/40`,children:F.message.split(` | `).slice(1).join(` — `)})]}),(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,W.jsx)(Kn,{label:`Aktive Stellen`,value:gt.length,note:(()=>{let e=b.size,t=p.length,n=Math.max(0,fe-gt.length-e-t);if(fe>gt.length){let r=[];return e>0&&r.push(`${e} mit Bewerbung`),t>0&&r.push(`${t} aussortiert`),n>0&&r.push(`${n} ausgefiltert`),r.length>0?`${fe} gesamt (${r.join(`, `)})`:`${fe} gesamt`}return $e>0?`${$e} mit Gehalt${et?` (geschätzt)`:``}`:`Keine Gehaltsdaten`})(),tone:`success`}),(0,W.jsx)(Kn,{label:`Gehaltsdurchschnitt${et?` (geschätzt)`:``}`,value:st===null?`Keine Angabe`:Sn(st),note:tt>0?`Auf Basis von ${tt} Stellen mit Jahresgehalt`:`Noch keine Gehaltsdaten`,tone:`success`}),(0,W.jsx)(Kn,{label:`Gehaltsbandbreite${et?` (geschätzt)`:``}`,value:pt,note:tt>0?`Niedrigster bis höchster Wert über ${tt} Stellen`:`Echte Min/Max-Spanne ueber alle Stellen`,tone:`success`}),(0,W.jsx)(Kn,{label:`Durchschnittsscore`,value:ht,note:Ue.length>0?`${Ue.length} bewertete Treffer`:`Noch keine bewerteten Treffer`,tone:`sky`})]}),(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,W.jsxs)(`div`,{className:`min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(J,{tone:bt.tone,children:bt.badge}),_t>0?(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[_t,` Treffer im aktuellen Blick brauchen erst mehr Beschreibung.`]}):null]}),(0,W.jsx)(`h2`,{className:`mt-3 text-base font-semibold text-ink`,children:bt.title}),(0,W.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:bt.description})]}),bt.actionLabel?(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:bt.action,children:bt.actionLabel}):null]})}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,W.jsx)(Xe,{className:`pointer-events-none absolute left-4 top-1/2 -translate-y-1/2 text-muted/50`,size:16}),(0,W.jsx)(X,{className:`w-full !rounded-xl !pl-11 !pr-10`,value:v.query,onChange:e=>y(t=>({...t,query:e.target.value})),placeholder:`Titel, Firma oder Schlagwort suchen...`}),v.query&&(0,W.jsx)(`button`,{type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted/50 hover:text-ink`,onClick:()=>y(e=>({...e,query:``})),children:(0,W.jsx)(vt,{size:16})})]}),(0,W.jsxs)(`span`,{className:`shrink-0 text-[12px] tabular-nums text-muted/50`,children:[gt.length,fe>d.length?` / ${fe}`:` / ${He.length}`]}),(0,W.jsxs)(Xn,{className:`!min-h-0 !w-auto !rounded-lg !px-2 !py-1 text-[11px] !border-white/5 !bg-white/[0.03]`,value:_e,onChange:async e=>{let t=Number(e.target.value);be(t),localStorage.setItem(`pbp_jobs_page_size`,String(t)),u(!0),await Ee({pageSize:t})},children:[(0,W.jsx)(`option`,{value:`20`,children:`20 pro Seite`}),(0,W.jsx)(`option`,{value:`50`,children:`50 pro Seite`}),(0,W.jsx)(`option`,{value:`100`,children:`100 pro Seite`}),(0,W.jsx)(`option`,{value:`0`,children:`Alle`})]})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-2.5`,children:[(0,W.jsx)(`div`,{className:`grid grid-cols-2 overflow-hidden rounded-xl border border-white/5 bg-white/[0.03]`,children:[[`active`,`Aktive`],[`dismissed`,`Ausgeblendet`]].map(([e,t])=>(0,W.jsx)(`button`,{type:`button`,className:G(`px-4 py-2 text-center text-[13px] font-medium outline-none transition-colors`,v.view===e?`bg-white/[0.08] text-ink`:`text-muted/40 hover:bg-white/[0.03] hover:text-muted/60`),onClick:()=>y(t=>({...t,view:e})),children:t},e))}),(0,W.jsx)(`span`,{className:`mx-0.5 h-5 w-px bg-white/5`}),(0,W.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,W.jsxs)(Xn,{className:G(`!h-9 !min-h-0 !w-auto !rounded-xl !pl-3 !pr-3 !py-0 !text-[13px]`,v.source?`!border-teal/20 !bg-teal/8 !text-teal/80`:`!border-white/5 !bg-white/[0.03] !text-muted/60`),value:v.source,onChange:e=>y(t=>({...t,source:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Alle Quellen`}),ze.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),v.source&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,source:``})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,W.jsx)(vt,{size:14})})]}),(0,W.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,W.jsxs)(Xn,{className:G(`!h-9 !min-h-0 !w-auto !rounded-xl !pl-3 !pr-3 !py-0 !text-[13px]`,v.remote?`!border-teal/20 !bg-teal/8 !text-teal/80`:`!border-white/5 !bg-white/[0.03] !text-muted/60`),value:v.remote,onChange:e=>y(t=>({...t,remote:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Remote: Alle`}),Be.map(e=>(0,W.jsx)(`option`,{value:e,children:e},e))]}),v.remote&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,remote:``})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,W.jsx)(vt,{size:14})})]}),(0,W.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,W.jsxs)(`div`,{className:G(`flex items-center gap-1.5 rounded-xl border px-3 py-1.5 transition-colors`,Number(v.minScore||0)>0?`border-teal/20 bg-teal/8`:`border-white/5 bg-white/[0.03]`),children:[(0,W.jsx)(`span`,{className:G(`text-[13px]`,Number(v.minScore||0)>0?`text-teal/80`:`text-muted/40`),children:`Score ≥`}),(0,W.jsx)(`input`,{type:`number`,className:G(`w-10 rounded-md border bg-white/[0.04] text-center text-[13px] font-medium outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,Number(v.minScore||0)>0?`border-teal/30 text-teal/80 focus:border-teal/50`:`border-white/10 text-muted/70 focus:border-teal/40`),value:v.minScore,onChange:e=>y(t=>({...t,minScore:e.target.value}))})]}),Number(v.minScore||0)>0&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,minScore:`0`})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,W.jsx)(vt,{size:14})})]}),(0,W.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`button`,{type:`button`,className:G(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.salaryOnly?`border-teal/20 bg-teal/8 text-teal/80`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,salaryOnly:!e.salaryOnly})),children:`Nur mit Gehalt`}),v.salaryOnly&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,salaryOnly:!1})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,W.jsx)(vt,{size:14})})]}),Ve.length>1&&(0,W.jsxs)(Xn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:v.employmentType,onChange:e=>y(t=>({...t,employmentType:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Alle Stellenarten`}),Ve.map(e=>(0,W.jsx)(`option`,{value:e,children:e===`festanstellung`?`Festanstellung`:e===`freelance`?`Freelance`:e===`praktikum`?`Praktikum`:e===`werkstudent`?`Werkstudent`:e},e))]}),(0,W.jsxs)(`button`,{type:`button`,className:G(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.hideApplied?`border-sky/20 bg-sky/8 text-sky/80`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,hideApplied:!e.hideApplied})),children:[(0,W.jsx)(ye,{size:14}),`Beworbene ausblenden`]}),(0,W.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,W.jsx)(`button`,{type:`button`,className:G(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.missingDescriptionOnly?`border-amber/20 bg-amber/8 text-amber`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,missingDescriptionOnly:!e.missingDescriptionOnly})),children:`Nur ohne Beschreibung`}),v.missingDescriptionOnly&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,missingDescriptionOnly:!1})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,W.jsx)(vt,{size:14})})]}),(0,W.jsx)(`div`,{className:`flex-1`}),(0,W.jsxs)(Xn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:v.sort,onChange:e=>y(t=>({...t,sort:e.target.value})),children:[(0,W.jsx)(`option`,{value:`score_desc`,children:`Score abst.`}),(0,W.jsx)(`option`,{value:`score_asc`,children:`Score aufst.`}),(0,W.jsx)(`option`,{value:`salary_desc`,children:`Gehalt abst.`}),(0,W.jsx)(`option`,{value:`company`,children:`Firma A–Z`}),(0,W.jsx)(`option`,{value:`title`,children:`Titel A–Z`})]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/45`,children:[`Zuletzt aktualisiert: `,mt?xn(mt):`Keine Angabe`]})}),gt.length?gt.map(e=>(0,W.jsxs)(q,{id:Oi(e.hash),className:G(`flex flex-col rounded-xl transition-[border-color,box-shadow,background-color] duration-300`,L===String(e.hash)&&`job-card-highlight`,e.is_pinned&&`border-amber/20 bg-amber/[0.02]`,!e.is_pinned&&e.employment_type===`freelance`&&`border-violet-400/25 bg-violet-400/[0.02]`),children:[(0,W.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`font-mono text-[10px] text-muted/30 hover:text-sky transition-colors`,title:`ID kopieren`,onClick:async()=>{try{await navigator.clipboard.writeText(e.hash),a(`ID kopiert.`,`success`,{duration:2e3})}catch{}},children:[`#`,String(e.hash).slice(0,12)]}),e.is_pinned?(0,W.jsxs)(J,{tone:`amber`,children:[(0,W.jsx)(Ke,{size:12,className:`inline -mt-0.5`}),` Angepinnt`]}):null,(0,W.jsx)(J,{tone:`sky`,children:e.source||`Quelle`}),R===String(e.hash)?(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-amber/30 bg-amber/10 px-2.5 py-0.5`,children:[(0,W.jsx)(`input`,{type:`number`,min:0,max:100,className:`w-12 rounded border border-white/10 bg-white/[0.06] px-1.5 py-0.5 text-center text-[12px] font-medium text-ink outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,value:oe,onChange:e=>z(e.target.value),onKeyDown:t=>{t.key===`Enter`&&Le(e),t.key===`Escape`&&ae(``)},autoFocus:!0}),(0,W.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>Le(e),children:(0,W.jsx)(re,{size:14})}),(0,W.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>ae(``),children:(0,W.jsx)(vt,{size:14})})]}):(0,W.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded-full border border-transparent bg-amber/10 px-2.5 py-0.5 text-[12px] font-semibold text-amber transition-colors hover:border-amber/30 hover:bg-amber/20`,onClick:()=>{ae(String(e.hash)),z(String(e.score||0))},title:`Score bearbeiten`,children:[`Score `,e.score||0,(0,W.jsx)(We,{size:11})]}),e.remote_level&&e.remote_level!==`unbekannt`?(0,W.jsx)(J,{tone:`success`,children:e.remote_level}):null,e.employment_type?(0,W.jsx)(J,{tone:e.employment_type===`freelance`?`success`:e.employment_type===`festanstellung`?`sky`:e.employment_type===`praktikum`?`amber`:`neutral`,children:e.employment_type===`freelance`?`Freelance`:e.employment_type===`festanstellung`?`Festanstellung`:e.employment_type===`praktikum`?`Praktikum`:e.employment_type===`werkstudent`?`Werkstudent`:e.employment_type}):null,b.has(e.hash)?(0,W.jsx)(`button`,{className:`cursor-pointer`,onClick:e=>{e.stopPropagation(),window.location.hash=`bewerbungen`},title:`Zur Bewerbung wechseln`,children:(0,W.jsx)(J,{tone:`success`,children:`Bereits beworben`})}):null,ji(e)?(0,W.jsx)(J,{tone:`amber`,children:`Score unsicher`}):null]}),(0,W.jsxs)(`div`,{role:`button`,tabIndex:0,className:`cursor-pointer group rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-sky/50 focus-visible:ring-offset-2 focus-visible:ring-offset-night`,onClick:()=>Te(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),Te(e))},title:`Details anzeigen`,children:[(0,W.jsx)(`h2`,{className:`text-2xl font-semibold text-ink group-hover:text-sky transition-colors`,children:e.title}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[e.company||`Unbekannte Firma`,e.location?` - ${e.location}`:``]}),(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:Pn(e.description,220)}),ji(e)?(0,W.jsx)(`p`,{className:`text-xs text-amber`,children:`Beschreibung fehlt oder ist sehr kurz. Prüfe die Originalanzeige, bevor du den Score zu ernst nimmst.`}):null,e.salary_min?(0,W.jsxs)(`p`,{className:`text-sm text-ink`,children:[`Gehalt: `,Sn(e.salary_min),e.salary_max?` bis ${Sn(e.salary_max)}`:``,e.salary_estimated?` (geschätzt)`:``]}):null]})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-3 border-t border-white/[0.06] pt-4`,children:[(0,W.jsxs)(K,{variant:e.is_pinned?`subtle`:`secondary`,onClick:()=>Ie(e),children:[e.is_pinned?(0,W.jsx)(Ge,{size:15}):(0,W.jsx)(Ke,{size:15}),e.is_pinned?`Entpinnen`:`Anpinnen`]}),(0,W.jsxs)(K,{variant:`secondary`,onClick:()=>Oe(e),children:[(0,W.jsx)(it,{size:15}),`Fit-Analyse`]}),(0,W.jsxs)(K,{onClick:()=>N({open:!0,draft:{job_hash:e.hash,title:e.title||``,company:e.company||``,url:e.url||``,status:`beworben`,notes:``}}),children:[(0,W.jsx)(qe,{size:15}),`Bewerbung erfassen`]}),(0,W.jsxs)(K,{variant:`ghost`,onClick:()=>Pe(e),children:[(0,W.jsx)(j,{size:15}),`Zur Blacklist`]}),v.view===`active`?(0,W.jsxs)(K,{variant:`danger`,onClick:()=>je(e),children:[(0,W.jsx)(ye,{size:15}),`Passt nicht`]}):(0,W.jsxs)(K,{variant:`ghost`,onClick:()=>ke(`/api/jobs/restore`,{hash:e.hash},`Stelle wiederhergestellt`),children:[(0,W.jsx)(Ye,{size:15}),`Wiederherstellen`]}),e.url?(0,W.jsxs)(Un,{href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ve,{size:15}),`Anzeige`]}):null]})]},e.hash)):null,gt.length>0&&me&&v.view===`active`&&(0,W.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-4`,children:[(0,W.jsx)(K,{variant:`secondary`,disabled:xe,onClick:async()=>{Se(!0),await Ee({append:!0,silent:!0})},children:xe?`Laden...`:`Mehr laden (${d.length} von ${fe})`}),(0,W.jsx)(K,{variant:`ghost`,onClick:async()=>{be(0),localStorage.setItem(`pbp_jobs_page_size`,`0`),u(!0),await Ee({pageSize:0})},children:`Alle laden`})]}),gt.length===0&&(0,W.jsx)(Qn,{title:v.view===`active`?`Keine aktiven Stellen`:`Keine ausgeblendeten Stellen`,description:v.view===`active`?`Starte eine Jobsuche oder öffne das Suchprofil, um neue Stellen zu finden.`:`Ausgeblendete Jobs können hier später wieder aktiviert werden.`,action:v.view===`active`?(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsx)(K,{onClick:()=>s(`einstellungen`),children:`Suchprofil öffnen`}),(0,W.jsxs)(K,{variant:`secondary`,onClick:()=>c(),children:[(0,W.jsx)(Xe,{size:15}),`Jobsuche starten`]})]}):null})]})]}),(0,W.jsx)(er,{open:S.open,title:`Fit-Analyse \u2014 ${S.title}`,onClose:()=>C({open:!1,title:``,hash:``,analysis:null}),footer:(0,W.jsx)(`div`,{className:`flex justify-end`,children:(0,W.jsx)(K,{onClick:()=>C({open:!1,title:``,hash:``,analysis:null}),children:`Schliessen`})}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:`Gesamtscore`}),(0,W.jsx)(`p`,{className:`mt-3 text-4xl font-semibold text-ink`,children:S.analysis?.total_score??0}),S.analysis?.hochschulabschluss_gefordert&&(0,W.jsx)(`p`,{className:`mt-1 text-xs text-coral font-medium`,children:`Hochschulabschluss gefordert`})]}),S.analysis?.factors&&Object.keys(S.analysis.factors).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink mb-2`,children:`Score-Faktoren`}),(0,W.jsx)(`div`,{className:`grid gap-1`,children:Object.entries(S.analysis.factors).map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,W.jsx)(`span`,{className:`text-muted/70`,children:e}),(0,W.jsxs)(`span`,{className:`font-medium ${t>=0?`text-teal`:`text-coral`}`,children:[t>=0?`+`:``,t]})]},e))})]}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`MUSS-Treffer`}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:(S.analysis?.muss_hits||[]).join(`, `)||`Keine`})]}),(S.analysis?.missing_muss||[]).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Fehlende MUSS-Kriterien`}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-coral/80`,children:S.analysis.missing_muss.join(`, `)})]}),(S.analysis?.plus_hits||[]).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`PLUS-Treffer`}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-teal/80`,children:S.analysis.plus_hits.join(`, `)})]}),(S.analysis?.risks||[]).length>0&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Risiken`}),(0,W.jsx)(`div`,{className:`mt-2 grid gap-2 text-sm text-coral/70`,children:S.analysis.risks.map(e=>(0,W.jsx)(`p`,{children:e},e))})]}),S.analysis?.research_notes&&(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none border border-sky/15`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-sky`,children:`Claude-Analyse`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{navigator.clipboard.writeText(S.analysis.research_notes).then(()=>a(`Analyse in Zwischenablage kopiert`,`success`),()=>a(`Kopieren fehlgeschlagen`,`danger`))},className:`text-muted/40 hover:text-sky transition-colors`,title:`In Zwischenablage kopieren`,children:(0,W.jsx)(de,{size:14})})]}),(0,W.jsx)(`p`,{className:`text-sm text-muted/70 whitespace-pre-line`,children:S.analysis.research_notes})]}),(0,W.jsxs)(K,{variant:`secondary`,className:`w-full`,onClick:()=>{let e=S.hash||``;o(`Bewerte die Stelle "${S.title}" (Hash: ${e}) detailliert fuer mich. Rufe die Stellenbeschreibung ab, vergleiche sie mit meinem Profil und gib mir eine ehrliche Einschaetzung: Staerken, Schwaechen, Risiken, und ob sich eine Bewerbung lohnt.`)},children:[(0,W.jsx)(Xe,{size:15}),`Detailbewertung durch Claude anfordern`]})]})}),(0,W.jsx)(er,{open:M.open,title:`Bewerbung aus Stelle anlegen`,onClose:()=>N({open:!1,draft:Ci}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>N({open:!1,draft:Ci}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:Ae,children:`Bewerbung speichern`})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[[`title`,`company`,`url`].map(e=>(0,W.jsx)(Y,{label:e,children:(0,W.jsx)(X,{value:M.draft[e]||``,onChange:t=>N(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e)),(0,W.jsx)(Y,{label:`Status`,children:(0,W.jsxs)(Xn,{value:M.draft.status,onChange:e=>N(t=>({...t,draft:{...t.draft,status:e.target.value}})),children:[(0,W.jsx)(`option`,{value:`beworben`,children:`Beworben`}),(0,W.jsx)(`option`,{value:`entwurf`,children:`Entwurf`})]})}),(0,W.jsx)(Y,{label:`Notizen`,children:(0,W.jsx)(Jn,{rows:4,value:M.draft.notes,onChange:e=>N(t=>({...t,draft:{...t.draft,notes:e.target.value}}))})})]})}),(0,W.jsx)(er,{open:P.open,title:`Zur Blacklist hinzufügen`,onClose:()=>ee(wi),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ee(wi),children:`Abbrechen`}),(0,W.jsxs)(K,{onClick:Fe,children:[(0,W.jsx)(j,{size:15}),`Blockieren`]})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(Y,{label:`Typ`,children:(0,W.jsxs)(Xn,{value:P.type,onChange:e=>ee(t=>({...t,type:e.target.value,value:Di(t.job,e.target.value)})),children:[(0,W.jsx)(`option`,{value:`keyword`,children:`Keyword`}),(0,W.jsx)(`option`,{value:`firma`,children:`Firma`}),(0,W.jsx)(`option`,{value:`ort`,children:`Ort`})]})}),(0,W.jsx)(Y,{label:`Wert, der blockiert wird`,children:(0,W.jsx)(X,{value:P.value,onChange:e=>ee(t=>({...t,value:e.target.value}))})}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:`Vorschau`}),(0,W.jsxs)(`p`,{className:`mt-2 text-sm text-ink`,children:[`Blockiert wird:`,` `,(0,W.jsx)(`span`,{className:`font-semibold`,children:P.value?.trim()||`(kein Wert)`})]})]})]})}),(0,W.jsx)(er,{open:se.open,title:`Stelle aussortieren — ${se.job?.title||``}`,onClose:()=>ce(Ti),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ce(Ti),children:`Abbrechen`}),(0,W.jsxs)(K,{variant:`danger`,onClick:Me,children:[(0,W.jsx)(ye,{size:15}),`Aussortieren`]})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Warum passt diese Stelle nicht? (Mehrfachauswahl möglich)`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(le.length?le:[{label:`zu_weit_entfernt`},{label:`gehalt_zu_niedrig`},{label:`falsches_fachgebiet`},{label:`zu_junior`},{label:`zu_senior`},{label:`unpassendes_arbeitsmodell`},{label:`firma_uninteressant`},{label:`zeitarbeit`},{label:`befristet`},{label:`sonstiges`}]).map(e=>{let t=se.selectedReasons.includes(e.label),n=e.label.replace(/_/g,` `).replace(/^\w/,e=>e.toUpperCase());return(0,W.jsxs)(`button`,{type:`button`,className:G(`rounded-lg border px-3 py-1.5 text-[13px] font-medium transition-colors`,t?`border-coral/30 bg-coral/15 text-coral`:`border-white/10 bg-white/[0.04] text-muted/60 hover:bg-white/[0.08] hover:text-muted/80`),onClick:()=>Ne(e.label),children:[t?(0,W.jsx)(re,{size:12,className:`mr-1 inline -mt-0.5`}):null,n,e.usage_count>0?(0,W.jsxs)(`span`,{className:`ml-1 text-[11px] opacity-50`,children:[`(`,e.usage_count,`)`]}):null]},e.label)})}),(0,W.jsx)(Y,{label:`Eigener Grund (optional)`,children:(0,W.jsx)(X,{placeholder:`z.B. kein Home-Office möglich`,value:se.customReason,onChange:e=>ce(t=>({...t,customReason:e.target.value}))})})]})}),T.open&&T.job&&(0,W.jsx)(er,{open:T.open,title:T.editing?`Stelle bearbeiten`:`Stellendetails`,onClose:()=>E({open:!1,job:null,editing:!1}),size:`xl`,children:T.editing?(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsx)(Y,{label:`Titel`,children:(0,W.jsx)(X,{value:k.title||``,onChange:e=>A(t=>({...t,title:e.target.value}))})}),(0,W.jsx)(Y,{label:`Firma`,children:(0,W.jsx)(X,{value:k.company||``,onChange:e=>A(t=>({...t,company:e.target.value}))})}),(0,W.jsx)(Y,{label:`Standort`,children:(0,W.jsx)(X,{value:k.location||``,onChange:e=>A(t=>({...t,location:e.target.value}))})}),(0,W.jsx)(Y,{label:`Beschreibung`,children:(0,W.jsx)(Jn,{value:k.description||``,onChange:e=>A(t=>({...t,description:e.target.value})),className:`!min-h-40`})}),(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsx)(K,{variant:`primary`,onClick:async()=>{await U(`/api/jobs/${T.job.hash}`,k),a(`Stelle aktualisiert`,`success`),E({open:!1,job:null,editing:!1}),Ee({silent:!0})},children:`Speichern`}),(0,W.jsx)(K,{variant:`ghost`,onClick:()=>E(e=>({...e,editing:!1})),children:`Abbrechen`})]})]}):(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-xl font-semibold text-ink`,children:T.job.title}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[T.job.company||`Unbekannt`,T.job.location?` — ${T.job.location}`:``]})]}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>{A({title:T.job.title||``,company:T.job.company||``,location:T.job.location||``,description:T.job.description||``}),E(e=>({...e,editing:!0}))},children:[(0,W.jsx)(We,{size:14}),` Bearbeiten`]})]}),(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`font-mono text-[10px] text-muted/40 hover:text-sky transition-colors`,title:`ID kopieren`,onClick:async()=>{try{await navigator.clipboard.writeText(T.job.hash),a(`ID kopiert.`,`success`,{duration:2e3})}catch{}},children:[`#`,String(T.job.hash).slice(0,12)]}),(0,W.jsx)(J,{tone:`sky`,children:T.job.source||`Quelle`}),T.job.employment_type?(0,W.jsx)(J,{tone:T.job.employment_type===`freelance`?`success`:`neutral`,children:T.job.employment_type}):null,T.job.remote_level&&T.job.remote_level!==`unbekannt`?(0,W.jsx)(J,{tone:`success`,children:T.job.remote_level}):null,(0,W.jsxs)(J,{tone:`amber`,children:[`Score `,T.job.score||0]}),ji(T.job)?(0,W.jsx)(J,{tone:`amber`,children:`Score unsicher`}):null,T.job.is_pinned?(0,W.jsxs)(J,{tone:`amber`,children:[(0,W.jsx)(Ke,{size:12,className:`inline`}),` Angepinnt`]}):null]}),T.job.salary_min?(0,W.jsxs)(`p`,{className:`text-sm text-teal font-medium`,children:[`Gehalt: `,Sn(T.job.salary_min),` - `,Sn(T.job.salary_max),T.job.salary_type?` (${T.job.salary_type})`:``,T.job.salary_estimated?` (geschaetzt)`:``]}):null,T.job.url?(0,W.jsxs)(`a`,{href:T.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 text-sm text-sky hover:underline`,children:[(0,W.jsx)(ve,{size:14}),` Stellenanzeige oeffnen`]}):null,ji(T.job)?(0,W.jsxs)(q,{className:`rounded-xl border-amber/20 bg-amber/10 shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Beschreibung zuerst nachziehen`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:`Für diese Stelle fehlt eine belastbare Beschreibung. Der Score ist deshalb nur eine Vororientierung und kein sauberes Urteil.`}),(0,W.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,W.jsxs)(K,{size:`sm`,disabled:D,onClick:async()=>{if(T.job?.hash){O(!0);try{a(`Beschreibung nachgeladen (${(await H(`/api/jobs/${T.job.hash}/refetch-description`,{})).chars} Zeichen)`,`success`);let e=await V(`/api/jobs/${T.job.hash}`);e&&E(t=>({...t,job:e})),await Ee({silent:!0})}catch(e){a(`Nachladen fehlgeschlagen: ${e.message}`,`danger`)}finally{O(!1)}}},children:[(0,W.jsx)(ge,{size:14}),D?`Lade...`:`Beschreibung jetzt nachladen`]}),T.job.url?(0,W.jsxs)(`a`,{href:T.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 rounded-lg border border-amber/30 px-3 py-1.5 text-xs text-amber hover:bg-amber/10`,children:[(0,W.jsx)(ve,{size:12}),` Im Browser oeffnen + manuell kopieren`]}):null]}),(0,W.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/60`,children:[`Tipp: Du kannst auch Claude bitten — `,(0,W.jsx)(`code`,{className:`text-amber`,children:`stellenbeschreibung_nachladen`}),` als Tool. Massen-Nachzug laeuft sowieso im Hintergrund (max 8 pro Auto-Run, mit Backoff).`]})]}):null,T.job.description?(0,W.jsxs)(`div`,{className:`glass-card p-4 rounded-xl`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-ink mb-2`,children:`Stellenbeschreibung`}),(0,W.jsx)(`p`,{className:`text-sm text-muted/70 whitespace-pre-wrap`,children:T.job.description})]}):null,T.job.found_at?(0,W.jsxs)(`p`,{className:`text-xs text-muted/40`,children:[`Gefunden: `,xn(T.job.found_at)]}):null,(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2 border-t border-white/[0.06] pt-4 mt-4`,children:[(0,W.jsxs)(K,{onClick:()=>{E({open:!1,job:null,editing:!1}),N({open:!0,draft:{job_hash:T.job.hash,title:T.job.title||``,company:T.job.company||``,url:T.job.url||``,status:`beworben`,notes:``}})},children:[(0,W.jsx)(qe,{size:15}),` Bewerbung erfassen`]}),(0,W.jsxs)(K,{variant:`secondary`,onClick:()=>{E({open:!1,job:null,editing:!1}),Oe(T.job)},children:[(0,W.jsx)(it,{size:15}),` Fit-Analyse`]}),(0,W.jsxs)(K,{variant:T.job.is_pinned?`subtle`:`secondary`,onClick:async()=>{await Ie(T.job),E(e=>({...e,job:{...e.job,is_pinned:e.job.is_pinned?0:1}}))},children:[T.job.is_pinned?(0,W.jsx)(Ge,{size:15}):(0,W.jsx)(Ke,{size:15}),T.job.is_pinned?`Entpinnen`:`Anpinnen`]}),(0,W.jsxs)(K,{variant:`ghost`,onClick:()=>{E({open:!1,job:null,editing:!1}),Pe(T.job)},children:[(0,W.jsx)(j,{size:15}),` Blacklist`]})]})]})})]})}var Ni={name:``,email:``,phone:``,address:``,city:``,plz:``,country:`Deutschland`,birthday:``,nationality:``,summary:``,informal_notes:``,preferences:{stellentyp:``,min_gehalt:``,ziel_gehalt:``,min_tagessatz:``,min_stundensatz:``,max_entfernung_km:``}},Pi={id:``,company:``,title:``,location:``,start_date:``,end_date:``,is_current:!1,employment_type:`festanstellung`,industry:``,description:``,tasks:``,achievements:``,technologies:``},Fi={name:``,role:``,duration:``,start_date:``,end_date:``,technologies:``,description:``,situation:``,task:``,action:``,result:``},Ii={id:``,institution:``,degree:``,field_of_study:``,start_date:``,end_date:``},Li={id:``,name:``,category:`fachlich`,level:3,years_experience:``,since_year:``,end_year:``,level_current:``},Ri={fachlich:`Fachlich`,tool:`Tools`,methodisch:`Methodisch`,soft_skill:`Soft Skills`,sprache:`Sprachen`},zi={fachlich:`fachlich`,fachkenntnisse:`fachlich`,technisch:`fachlich`,"ki/ml":`fachlich`,tool:`tool`,tools:`tool`,methodisch:`methodisch`,soft_skill:`soft_skill`,"soft skills":`soft_skill`,"soft skill":`soft_skill`,sprache:`sprache`,sprachen:`sprache`};function Bi(e){return e&&zi[String(e).trim().toLowerCase()]||`fachlich`}var Vi={festanstellung:`Festanstellung`,freelance:`Freelance`,teilzeit:`Teilzeit`,praktikum:`Praktikum`};function Hi(e){let t=e?.start_date||``,n=e?.is_current?`heute`:e?.end_date||``;return[e?.location,t,n].filter(Boolean).join(` - `)}function Ui(e){return e?{...Ni,...e,preferences:{...Ni.preferences,...e.preferences||{}}}:Ni}function Wi(e){let t={...e.preferences||{}};return[`min_gehalt`,`ziel_gehalt`,`min_tagessatz`,`min_stundensatz`,`max_entfernung_km`].forEach(e=>{if(t[e]===``||t[e]===null||t[e]===void 0){t[e]=null;return}let n=Number(t[e]);t[e]=Number.isFinite(n)?n:null}),{...e,preferences:t}}var Gi=[{value:`festanstellung`,label:`Festanstellung`},{value:`freelance`,label:`Freelance`},{value:`teilzeit`,label:`Teilzeit`},{value:`praktikum`,label:`Praktikum`},{value:`werkstudent`,label:`Werkstudent`}],Ki={festanstellung:50,freelance:200,teilzeit:30,praktikum:50,werkstudent:50};function qi(e){let t=e?.stellentypen||[];!t.length&&e?.stellentyp&&(t=[e.stellentyp]),t.length||(t=[`festanstellung`]);let n=e?.max_entfernung||{};return{keywords_muss:[...e?.keywords_muss||[]],keywords_plus:[...e?.keywords_plus||[]],keywords_minus:[...e?.keywords_minus||[]],keywords_ausschluss:[...e?.keywords_ausschluss||[]],regionen:[...e?.regionen||[]],min_gehalt:e?.min_gehalt??``,min_tagessatz:e?.min_tagessatz??``,min_stundensatz:e?.min_stundensatz??``,max_entfernung_km:e?.max_entfernung_km??``,stellentypen:t,max_entfernung_festanstellung:n.festanstellung??Ki.festanstellung,max_entfernung_freelance:n.freelance??Ki.freelance,max_entfernung_teilzeit:n.teilzeit??Ki.teilzeit,max_entfernung_praktikum:n.praktikum??Ki.praktikum,max_entfernung_werkstudent:n.werkstudent??Ki.werkstudent,gewichtung_muss:e?.gewichtung?.muss??2,gewichtung_plus:e?.gewichtung?.plus??1,gewichtung_minus:e?.gewichtung?.minus??1,gewichtung_remote:e?.gewichtung?.remote??2,gewichtung_naehe:e?.gewichtung?.naehe??2,gewichtung_fern_malus:e?.gewichtung?.fern_malus??3,gewichtung_gehalt:e?.gewichtung?.gehalt??1,min_score_schwelle:e?.min_score_schwelle??1}}function Ji(e){return{keywords_muss:e.keywords_muss,keywords_plus:e.keywords_plus,keywords_minus:e.keywords_minus,keywords_ausschluss:e.keywords_ausschluss,regionen:e.regionen,min_gehalt:e.min_gehalt===``?null:Number(e.min_gehalt),min_tagessatz:e.min_tagessatz===``?null:Number(e.min_tagessatz),min_stundensatz:e.min_stundensatz===``?null:Number(e.min_stundensatz),max_entfernung_km:e.max_entfernung_km===``?null:Number(e.max_entfernung_km),stellentypen:e.stellentypen,max_entfernung:{festanstellung:Number(e.max_entfernung_festanstellung)||50,freelance:Number(e.max_entfernung_freelance)||200,teilzeit:Number(e.max_entfernung_teilzeit)||30,praktikum:Number(e.max_entfernung_praktikum)||50,werkstudent:Number(e.max_entfernung_werkstudent)||50},gewichtung:{muss:Number(e.gewichtung_muss),plus:Number(e.gewichtung_plus),minus:Number(e.gewichtung_minus),remote:Number(e.gewichtung_remote),naehe:Number(e.gewichtung_naehe),fern_malus:Number(e.gewichtung_fern_malus),gehalt:Number(e.gewichtung_gehalt)},min_score_schwelle:Number(e.min_score_schwelle)||1}}function Yi(e){if(e===``||e==null)return null;let t=Number(e);return Number.isFinite(t)?Math.trunc(t):null}function Xi(e){let t=new Date().getFullYear(),n={...Li,...e||{}},r=Yi(n.years_experience),i=Yi(n.start_year??n.since_year),a=r===null?``:Math.min(t,Math.max(1900,t-Math.max(0,r))),o=i===null?a:i,s=Yi(n.end_year),c=Yi(n.level_current);return{...n,category:Bi(n.category),years_experience:r===null?``:r,since_year:o,end_year:s===null?``:s,level_current:c===null?``:c}}function Zi(e){let t=new Date().getFullYear(),n=Yi(e.level),r=Yi(e.years_experience),i=Yi(e.since_year),a=i===null?null:Math.min(t,Math.max(1900,i)),o=Yi(e.end_year),s=o===null?null:Math.min(t,Math.max(1900,o)),c=Yi(e.level_current),l=s??t,u=a===null?r:Math.max(0,l-a);return{name:(e.name||``).trim(),category:e.category||`fachlich`,level:Math.min(5,Math.max(1,n??3)),years_experience:u,start_year:a,end_year:s,level_current:c===null?null:Math.min(5,Math.max(1,c))}}var Qi={ausstehend:{label:`Ausstehend`,tone:`amber`},angewendet:{label:`Angewendet`,tone:`success`},teilweise:{label:`Teilweise`,tone:`sky`},verworfen:{label:`Verworfen`,tone:`danger`},manuell_korrigiert:{label:`Manuell korrigiert`,tone:`sky`}};function $i(e){return!e||typeof e!=`object`?0:Object.values(e).filter(e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!0).length}function ea(){let{chrome:e,intent:t,clearIntent:n,reloadKey:r,refreshChrome:i,navigateTo:a,pushToast:o,copyPrompt:s,openCreateProfileModal:c}=kt(),[l,u]=(0,w.useState)(!0),[d,f]=(0,w.useState)(null),[p,m]=(0,w.useState)(Ni),[h,g]=(0,w.useState)(qi({})),[_,v]=(0,w.useState)([]),[y,b]=(0,w.useState)({type:`firma`,value:``}),[x,S]=(0,w.useState)({completeness:0}),[C,T]=(0,w.useState)([]),[E,D]=(0,w.useState)(null),[O,k]=(0,w.useState)({open:!1,draft:Pi}),[A,M]=(0,w.useState)({open:!1,positionId:``,draft:Fi}),[N,ee]=(0,w.useState)({open:!1,draft:Ii}),[F,I]=(0,w.useState)({open:!1,draft:Li}),[te,ne]=(0,w.useState)(``),[re,ae]=(0,w.useState)({}),[oe,z]=(0,w.useState)(``),[se,ce]=(0,w.useState)(!1),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)({doc_type:`sonstiges`}),[pe,he]=(0,w.useState)(!1),[_e,ve]=(0,w.useState)({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),ye=(0,w.useRef)(null),be=(0,w.useRef)(!0),xe=(0,w.useRef)(``),B=(0,w.useRef)(!0),we=(0,w.useRef)(``),Te=new Date().getFullYear(),Ee=(0,w.useRef)(null),De=[{key:`experience`,label:`Berufserfahrung`,value:d?.positions?.length||0,note:`Positionen`},{key:`education`,label:`Ausbildungen`,value:d?.education?.length||0,note:`Ausbildungen erfasst`},{key:`skills`,label:`Skills`,value:d?.skills?.length||0,note:`Kompetenzen erfasst`},{key:`completeness`,label:`Vollständigkeit des Profils`,value:`${Math.round(Number(x?.completeness||0))}%`,note:`Fortschritt`}],Oe=(0,w.useEffectEvent)(async()=>{try{let e=await Promise.allSettled([Et(`/api/profile`),V(`/api/profile/completeness`),V(`/api/extractions`),V(`/api/search-criteria`),V(`/api/blacklist`),Et(`/api/keyword-suggestions`)]),t=e[0].status===`fulfilled`?e[0].value:null,n=e[1].status===`fulfilled`?e[1].value:null,r=e[2].status===`fulfilled`?e[2].value:null,i=e[3].status===`fulfilled`?e[3].value:{},a=e[4].status===`fulfilled`?e[4].value:[],o=e[5].status===`fulfilled`?e[5].value:null,s=Ui(t),c=qi(i||{});be.current=!0,xe.current=t?JSON.stringify(Wi(s)):``,B.current=!0,we.current=JSON.stringify(Ji(c)),(0,w.startTransition)(()=>{f(t),m(s),g(c),v(a||[]),S(n||{completeness:0}),T(r?.extractions||[]),D(o),u(!1)})}catch(e){o(`Profilseite konnte nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>u(!1))}});(0,w.useEffect)(()=>{u(!0),Oe()},[r]),(0,w.useEffect)(()=>{if(l||!d)return;if(be.current){be.current=!1;return}let e=Wi(p),t=JSON.stringify(e);if(t===xe.current)return;let n=window.setTimeout(async()=>{try{await H(`/api/profile`,e),xe.current=t,(0,w.startTransition)(()=>{f(t=>t&&{...t,...e,preferences:{...t.preferences,...e.preferences}})}),await i({quiet:!0})}catch(e){o(`Profil konnte nicht gespeichert werden: ${e.message}`,`danger`)}},700);return()=>window.clearTimeout(n)},[p,l,d,o,i]),(0,w.useEffect)(()=>{if(l)return;if(B.current){B.current=!1;return}let e=Ji(h),t=JSON.stringify(e);if(t===we.current)return;let n=window.setTimeout(async()=>{try{await H(`/api/search-criteria`,e),we.current=t,await i({quiet:!0})}catch(e){o(`Suchkriterien konnten nicht gespeichert werden: ${e.message}`,`danger`)}},600);return()=>window.clearTimeout(n)},[h,l,o,i]),(0,w.useEffect)(()=>{t?.page===`profil`&&(t.composer===`position`&&k({open:!0,draft:Pi}),t.composer===`education`&&ee({open:!0,draft:Ii}),t.composer===`skill`&&I({open:!0,draft:Xi(Li)}),t.composer===`document`&&document.getElementById(`section-documents`)?.scrollIntoView({behavior:`smooth`,block:`start`}),n())},[t]);async function ke(e,t,{keepOpen:n=!1}={}){let r=t.draft;try{if(e===`position`){let{id:e,...t}=r,n=e;e?await U(`/api/position/${e}`,t):n=(await H(`/api/position`,t))?.id||e;let i={...t,id:n,projects:Array.isArray(r.projects)?r.projects:[]};(0,w.startTransition)(()=>{f(t=>{if(!t)return t;let n=Array.isArray(t.positions)?t.positions:[],r=e?n.map(t=>t.id===e?{...t,...i}:t):[i,...n];return{...t,positions:r}})}),k({open:!1,draft:Pi})}if(e===`education`){let{id:e,...t}=r,n=e;e?await U(`/api/education/${e}`,t):n=(await H(`/api/education`,t))?.id||e;let i={...t,id:n};(0,w.startTransition)(()=>{f(t=>{if(!t)return t;let n=Array.isArray(t.education)?t.education:[],r=e?n.map(t=>t.id===e?{...t,...i}:t):[i,...n];return{...t,education:r}})}),ee({open:!1,draft:Ii})}if(e===`skill`){let e=Zi(r),t=r.id,i=!!r.id,a=Array.isArray(d?.skills)?d.skills:[],o=i?a.findIndex(e=>e.id===r.id):-1,s=n&&i&&o>=0&&o{f(e=>{if(!e)return e;let t=Array.isArray(e.skills)?e.skills:[],n=r.id?t.map(e=>e.id===r.id?{...e,...c}:e):[c,...t];return{...e,skills:n}})}),I(n?{open:!0,draft:Xi(s||Li)}:{open:!1,draft:Li})}await i({quiet:!0}),o(`Eintrag gespeichert.`,`success`)}catch(e){o(`Eintrag konnte nicht gespeichert werden: ${e.message}`,`danger`)}}function Ae(e){ae(t=>({...t,[e]:!t[e]}))}async function je(){if(A.positionId){if(!A.draft.name?.trim()){o(`Projektname ist ein Pflichtfeld.`,`danger`);return}try{let e=!!A.draft.id;if(e){let{id:e,...t}=A.draft;await U(`/api/project/${e}`,t),(0,w.startTransition)(()=>{f(n=>n&&{...n,positions:(n.positions||[]).map(n=>n.id===A.positionId?{...n,projects:(n.projects||[]).map(n=>n.id===e?{...n,...t}:n)}:n)})})}else{let e=await H(`/api/project`,{...A.draft,position_id:A.positionId}),t={...A.draft,id:e?.id||``};(0,w.startTransition)(()=>{f(e=>e&&{...e,positions:(e.positions||[]).map(e=>{if(e.id!==A.positionId)return e;let n=Array.isArray(e.projects)?e.projects:[];return{...e,projects:[...n,t]}})})})}M({open:!1,positionId:``,draft:Fi}),await i({quiet:!0}),o(e?`Projekt aktualisiert.`:`Projekt gespeichert.`,`success`)}catch(e){o(`Projekt konnte nicht gespeichert werden: ${e.message}`,`danger`)}}}async function Me(e,t){if(window.confirm(`Projekt wirklich löschen?`))try{await Dt(`/api/project/${t}`),(0,w.startTransition)(()=>{f(n=>n&&{...n,positions:(n.positions||[]).map(n=>n.id===e?{...n,projects:(n.projects||[]).filter(e=>e.id!==t)}:n)})}),await i({quiet:!0}),o(`Projekt gelöscht.`,`success`)}catch(e){o(`Projekt konnte nicht gelöscht werden: ${e.message}`,`danger`)}}async function Ne(e={}){if(e?.syncChrome){await Promise.all([Oe(),i({quiet:!0})]);return}await Oe()}async function Pe(e){let t=Array.from(e||[]).filter(e=>e&&e.name);if(!t.length)return;let n=new Set,r=[];for(let e of t){let t=Xt(e);n.has(t)||(n.add(t),r.push(e))}if(!r.length){o(`Diese Dateien sind bereits enthalten.`,`neutral`);return}let i=0,a=0;for(let e of r)try{await $t(e,de.doc_type||`sonstiges`),i+=1}catch(t){a+=1,o(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}if(i>0)try{await tn()}catch(e){o(`Analyse nach Upload fehlgeschlagen: ${e.message}`,`danger`)}if(await Ne({syncChrome:!0}),i>0&&a===0){o(`${i} Dokument(e) hochgeladen und analysiert.`,`success`);return}if(i>0&&a>0){o(`${i} Dokument(e) hochgeladen, ${a} fehlgeschlagen.`,`amber`);return}o(`Keine Datei konnte verarbeitet werden.`,`danger`)}async function Fe(){if(!le){o(`Bitte einen Ordnerpfad eingeben.`,`danger`);return}try{let e=await H(`/api/documents/import-folder`,{folder_path:le,import_documents:!0,import_applications:!0});if(ce(!1),ue(``),await Ne({syncChrome:!0}),e?.warning_count){let t=Array.isArray(e.warnings)&&e.warnings.length?` ${e.warnings[0]}`:``;o(`Ordnerimport abgeschlossen mit ${e.warning_count} Hinweis(en).${t}`,`amber`);return}o(`Ordnerimport abgeschlossen.`,`success`)}catch(e){o(`Ordnerimport fehlgeschlagen: ${e.message}`,`danger`)}}async function Ie(e,t,n={}){try{await e(),typeof n.onSuccess==`function`&&await n.onSuccess(),n.localRefresh?await Ne({syncChrome:!!n.syncChrome}):await i({quiet:!0}),o(t,`success`)}catch(e){o(`${t} fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){try{await s((await V(`/api/document/${e.id}/analysis-prompt`)).prompt)}catch(e){o(`Analyse-Prompt konnte nicht kopiert werden: ${e.message}`,`danger`)}}async function Re(){let e=String(y.value||``).trim();if(!e){o(`Bitte einen Wert für die Blacklist eingeben.`,`danger`);return}try{await H(`/api/blacklist`,{...y,value:e}),b({type:`firma`,value:``});let t=await V(`/api/blacklist`);(0,w.startTransition)(()=>v(t||[])),await i({quiet:!0}),o(`Blacklist-Eintrag angelegt.`,`success`)}catch(e){o(`Blacklist-Eintrag fehlgeschlagen: ${e.message}`,`danger`)}}async function ze(e){try{await Dt(`/api/blacklist/${e}`),(0,w.startTransition)(()=>v(t=>t.filter(t=>t.id!==e))),await i({quiet:!0}),o(`Blacklist-Eintrag entfernt.`,`success`)}catch(t){let n=String(t?.message||``);if(n.includes(`Blacklist-Eintrag nicht gefunden`)){(0,w.startTransition)(()=>v(t=>t.filter(t=>t.id!==e))),o(`Blacklist-Eintrag war bereits entfernt.`,`sky`);return}if(n.includes(`HTTP 404`)){o(`Löschen-Endpunkt nicht gefunden. Bitte Dashboard-Server neu starten.`,`danger`);return}o(`Blacklist-Eintrag konnte nicht gelöscht werden: ${n}`,`danger`)}}async function Be(){if(!_e.document?.id)return;let e={};try{e=JSON.parse(_e.draftText||`{}`)}catch{o(`JSON ist ungültig. Bitte Syntax prüfen.`,`danger`);return}ve(e=>({...e,saving:!0}));try{let t=await U(`/api/document/${_e.document.id}/extraction`,{corrected_fields:e});await Ne({syncChrome:!0});let n=Object.keys(t?.angewendet||{});o(n.length?`Korrekturen übernommen: ${n.join(`, `)}`:`Korrekturen gespeichert.`,`success`),ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`})}catch(e){o(`Korrekturen konnten nicht gespeichert werden: ${e.message}`,`danger`),ve(e=>({...e,saving:!1}))}}if(l)return(0,W.jsx)($n,{label:`Profil wird geladen...`});if(!e.status?.has_profile||!d)return(0,W.jsxs)(`div`,{id:`page-profil`,className:`page active`,children:[(0,W.jsx)(Wn,{title:`Profil`,description:`Lege dein erstes Profil an oder importiere vorhandene Daten.`,eyebrow:`Profil`}),(0,W.jsx)(Qn,{title:`Noch kein aktives Profil`,description:`Ohne Profil bleiben Matching, Exporte und automatische Auswertungen leer.`,action:(0,W.jsx)(K,{onClick:c,children:`Profil anlegen`})})]});let Ve=d.documents||[],He=Ve.reduce((e,t)=>{let n=Date.parse(t?.created_at||``);return Number.isNaN(n)?e:n>e.timestamp?{item:t,timestamp:n}:e},{item:null,timestamp:-1/0}).item,Ue=He?.created_at?xn(He.created_at):`Noch keine Uploads`,We=Ve.filter(e=>[`angewendet`,`teilweise`,`manuell_korrigiert`,`verworfen`].includes(String(e?.extraction_status||``))).length,Ge=Math.max(0,Ve.length-We),Ke=Ve.reduce((e,t)=>{let n=Tn(t?.doc_type||`sonstiges`);return e[n]=(e[n]||0)+1,e},{}),Je=Object.entries(Ke).sort(([,e],[,t])=>Number(t)-Number(e)).slice(0,4),Ye=[{label:`MUSS-Kriterium`,key:`gewichtung_muss`,chip:`Pflicht`,desc:`Harte Anforderungen aus deinem Profil. MUSS=5: Stelle ohne dieses Skill bekommt einen deutlichen Score-Abzug. MUSS=0: das Kriterium ist für das Ranking irrelevant.`,color:`teal`},{label:`PLUS-Punkte`,key:`gewichtung_plus`,chip:`Bonus`,desc:`Nice-to-have-Skills. Höherer Wert = mehr Score-Bonus pro Match. Wirkt nur additiv, blockt nichts.`,color:`sky`},{label:`MINUS-Abzug`,key:`gewichtung_minus`,chip:`Malus`,desc:`Score-Abzug pro Minus-Keyword-Treffer (#667). Weiche Abwertung — die Stelle bleibt sichtbar, rutscht aber nach unten. 0 = Minus-Keywords ohne Wirkung.`,color:`coral`},{label:`Remote`,key:`gewichtung_remote`,chip:`Modus`,desc:`Wie stark Remote-/Hybrid-Stellen aufgewertet werden. Hoch = Remote-Stellen rutschen nach oben, auch wenn andere Kriterien schwächer matchen.`,color:`sky`},{label:`Nähe`,key:`gewichtung_naehe`,chip:`Standort`,desc:`Wie stark Stellen in Pendel-Nähe (< 50 km) aufgewertet werden. Bei Vor-Ort-Präferenz hoch setzen.`,color:`teal`},{label:`Fern-Malus`,key:`gewichtung_fern_malus`,chip:`Abzug`,desc:`Score-Abzug bei Distanz > 200 km (ohne Remote-Option). Hoch = ferne Stellen sind quasi unsichtbar. 0 = Distanz egal.`,color:`coral`},{label:`Gehalt`,key:`gewichtung_gehalt`,chip:`Vergütung`,desc:`Wie stark Gehaltsangaben in der Ausschreibung ins Ranking einfliessen. Stellen ohne Gehaltsangabe werden dadurch nicht bestraft.`,color:`amber`}],Xe=e=>{let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(10,t)):0},Ze=e=>Number.isInteger(e)?String(e):e.toFixed(1),Qe={teal:{track:`bg-teal/20`,fill:`bg-teal`,thumb:`accent-teal`,value:`text-teal`,label:`text-ink/70`},sky:{track:`bg-sky/20`,fill:`bg-sky`,thumb:`accent-sky`,value:`text-sky`,label:`text-ink/70`},coral:{track:`bg-coral/20`,fill:`bg-coral`,thumb:`accent-coral`,value:`text-coral`,label:`text-ink/70`},amber:{track:`bg-amber/20`,fill:`bg-amber`,thumb:`accent-amber`,value:`text-amber`,label:`text-ink/70`}},$e=e=>{let t=Xe(h[e.key]),n=Qe[e.color];return(0,W.jsxs)(`div`,{className:`group flex items-center gap-4 py-2`,children:[(0,W.jsxs)(`div`,{className:`w-28 shrink-0`,children:[(0,W.jsx)(`p`,{className:G(`text-[12px] font-semibold`,n.label),title:e.desc,children:e.label}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted/50`,children:e.chip})]}),(0,W.jsxs)(`div`,{className:`flex flex-1 flex-col gap-0.5`,children:[(0,W.jsx)(`div`,{className:`relative flex items-center`,children:(0,W.jsx)(`input`,{type:`range`,min:0,max:10,step:.5,value:t,onChange:t=>g(n=>({...n,[e.key]:t.target.value})),className:G(`weight-slider h-1.5 w-full cursor-pointer appearance-none rounded-full`,n.track,n.thumb),style:{background:`linear-gradient(to right, var(--slider-fill) ${t*10}%, transparent ${t*10}%)`,"--slider-fill":`var(--color-${e.color})`}})}),(0,W.jsxs)(`div`,{className:`flex justify-between text-[9px] text-muted/40`,children:[(0,W.jsx)(`span`,{children:`unwichtig`}),(0,W.jsx)(`span`,{children:`sehr wichtig`})]})]}),(0,W.jsx)(`span`,{className:G(`w-8 text-right text-sm font-bold tabular-nums`,n.value),children:Ze(t)})]},e.key)};return(0,W.jsxs)(`div`,{id:`page-profil`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Profil`}),(0,W.jsxs)(`div`,{className:`mb-6 flex items-center justify-end gap-2`,children:[(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>a(`einstellungen`,{tab:`datenschutz`}),children:[(0,W.jsx)(ge,{size:15}),` Export & Backup`]}),(0,W.jsx)(`button`,{type:`button`,className:`text-xs text-muted/40 hover:text-coral transition-colors`,onClick:()=>a(`einstellungen`,{tab:`gefahrenzone`}),children:`Profil loeschen? → Gefahrenzone`})]}),(0,W.jsx)(`div`,{className:`grid gap-6`,children:(0,W.jsxs)(`div`,{id:`profil-uebersicht-wrapper`,className:`grid gap-6`,children:[(0,W.jsx)(`div`,{id:`profil-uebersicht`,className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:De.map(e=>(0,W.jsx)(Kn,{label:e.label,value:e.value,note:e.note,tone:`neutral`},e.key))}),(0,W.jsxs)(q,{id:`profil-persoenlich`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Persönliche Daten`,description:`Diese Daten fließen in CV, Anschreiben und Matching ein.`}),(0,W.jsxs)(`div`,{className:`grid gap-5`,children:[(0,W.jsxs)(`div`,{className:`grid gap-5 md:grid-cols-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Kontakt`}),(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(Y,{label:`Name`,children:(0,W.jsx)(X,{value:p.name||``,onChange:e=>m(t=>({...t,name:e.target.value}))})}),(0,W.jsx)(Y,{label:`E-Mail`,children:(0,W.jsx)(X,{value:p.email||``,onChange:e=>m(t=>({...t,email:e.target.value}))})}),(0,W.jsx)(Y,{label:`Telefon`,children:(0,W.jsx)(X,{value:p.phone||``,onChange:e=>m(t=>({...t,phone:e.target.value}))})})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Adresse`}),(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(Y,{label:`Strasse`,children:(0,W.jsx)(X,{value:p.address||``,onChange:e=>m(t=>({...t,address:e.target.value}))})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-[6rem_minmax(0,8rem)_minmax(0,1fr)] gap-3`,children:[(0,W.jsx)(Y,{label:`PLZ`,children:(0,W.jsx)(X,{value:p.plz||``,onChange:e=>m(t=>({...t,plz:e.target.value}))})}),(0,W.jsx)(Y,{label:`Ort`,children:(0,W.jsx)(X,{value:p.city||``,onChange:e=>m(t=>({...t,city:e.target.value}))})}),(0,W.jsx)(Y,{label:`Land`,children:(0,W.jsx)(X,{value:p.country||``,onChange:e=>m(t=>({...t,country:e.target.value}))})})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,W.jsx)(Y,{label:`Geburtsdatum`,children:(0,W.jsx)(X,{value:p.birthday||``,onChange:e=>m(t=>({...t,birthday:e.target.value}))})}),(0,W.jsx)(Y,{label:`Nationalität`,children:(0,W.jsx)(X,{value:p.nationality||``,onChange:e=>m(t=>({...t,nationality:e.target.value}))})})]})]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsx)(Y,{label:`Kurzprofil / Summary`,children:(0,W.jsx)(Jn,{rows:4,value:p.summary||``,onChange:e=>m(t=>({...t,summary:e.target.value}))})}),(0,W.jsx)(Y,{label:`Informelle Notizen`,children:(0,W.jsx)(Jn,{rows:3,value:p.informal_notes||``,onChange:e=>m(t=>({...t,informal_notes:e.target.value}))})})]})]})]}),(0,W.jsxs)(q,{id:`profil-suchkriterien`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Suchkriterien`,description:`Keywords und Gewichtungen für Matching und Scoring.`}),E?.status===`ok`&&(E.vorschlaege_plus?.length>0||E.vorschlaege_ausschluss?.length>0)&&(0,W.jsxs)(`div`,{className:`mb-4 rounded-xl border border-sky/20 bg-sky/[0.04] p-3`,children:[(0,W.jsxs)(`p`,{className:`text-xs font-semibold text-sky/80 mb-1`,children:[`Vorschlaege aus deinen `,E.aktive_stellen,` aktiven Stellen`]}),E.datenquelle?(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60 mb-2 italic`,children:[`Basis: `,E.datenquelle]}):null,E.vorschlaege_plus?.length>0&&(0,W.jsxs)(`div`,{className:`mb-2`,children:[(0,W.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/60 mb-1.5`,children:`Haeufig in deinen Bewerbungen, fehlen in deinen PLUS-Keywords`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:E.vorschlaege_plus.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>g(t=>{let n=t.keywords_plus||[];return n.includes(e.keyword)?t:{...t,keywords_plus:[...n,e.keyword]}}),className:`rounded-lg bg-success/15 px-2.5 py-1 text-xs text-success transition hover:bg-success/25`,title:`In ${e.in_guten_stellen} guten / ${e.in_schlechten_stellen} schlechten Stellen — klicken zum Hinzufuegen`,children:[`+ `,e.keyword]},e.keyword))})]}),E.vorschlaege_ausschluss?.length>0&&(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/60 mb-1.5`,children:`Haeufig in von dir aussortierten Stellen — als Ausschluss empfohlen`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:E.vorschlaege_ausschluss.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>g(t=>{let n=t.keywords_ausschluss||[];return n.includes(e.keyword)?t:{...t,keywords_ausschluss:[...n,e.keyword]}}),className:`rounded-lg bg-danger/15 px-2.5 py-1 text-xs text-danger transition hover:bg-danger/25`,title:`In ${e.in_schlechten_stellen} schlechten / ${e.in_guten_stellen} guten Stellen — klicken zum Ausschliessen`,children:[`− `,e.keyword]},e.keyword))})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[[[`MUSS-Keywords`,`keywords_muss`,`sky`,`z.B. Data Scientist`],[`PLUS-Keywords`,`keywords_plus`,`success`,`z.B. Python, Machine Learning`],[`MINUS-Keywords (weiche Abwertung)`,`keywords_minus`,`amber`,`z.B. Automotive, SAP-only`],[`Ausschluss-Keywords (harter Filter)`,`keywords_ausschluss`,`danger`,`z.B. Praktikum, Junior`],[`Regionen`,`regionen`,`amber`,`z.B. Hamburg, Berlin`]].map(([e,t,n,r])=>(0,W.jsx)(Y,{label:e,children:(0,W.jsx)(Yn,{tags:h[t]||[],onChange:e=>g(n=>({...n,[t]:e})),tone:n,placeholder:r})},t)),(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,W.jsx)(Y,{label:`Min. Gehalt`,children:(0,W.jsx)(X,{type:`number`,value:h.min_gehalt,onChange:e=>g(t=>({...t,min_gehalt:e.target.value}))})}),(0,W.jsx)(Y,{label:`Min. Tagessatz`,children:(0,W.jsx)(X,{type:`number`,value:h.min_tagessatz,onChange:e=>g(t=>({...t,min_tagessatz:e.target.value}))})}),(0,W.jsx)(Y,{label:`Min. Stundensatz`,children:(0,W.jsx)(X,{type:`number`,value:h.min_stundensatz,onChange:e=>g(t=>({...t,min_stundensatz:e.target.value}))})})]}),(0,W.jsx)(Y,{label:`Stellentypen (Multi-Select)`,children:(0,W.jsx)(`div`,{className:`flex flex-wrap gap-4`,children:Gi.map(({value:e,label:t})=>(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-muted`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:h.stellentypen?.includes(e),onChange:()=>g(t=>{let n=t.stellentypen?.includes(e)?t.stellentypen.filter(t=>t!==e):[...t.stellentypen||[],e];return{...t,stellentypen:n.length?n:[`festanstellung`]}}),className:`h-4 w-4 accent-sky-500`}),t]},e))})}),(0,W.jsxs)(Y,{label:`Max. Entfernung pro Stellentyp (km)`,children:[(0,W.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2 md:grid-cols-3`,children:Gi.filter(({value:e})=>h.stellentypen?.includes(e)).map(({value:e,label:t})=>(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(`span`,{className:`min-w-[7rem] text-xs text-muted/60`,children:[t,`:`]}),(0,W.jsx)(X,{type:`number`,className:`!w-20`,value:h[`max_entfernung_${e}`],onChange:t=>g(n=>({...n,[`max_entfernung_${e}`]:t.target.value}))}),(0,W.jsx)(`span`,{className:`text-xs text-muted/40`,children:`km`})]},e))}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted/40`,children:`Entfernung beeinflusst den Fit-Score als Malus. Freelance hat standardmaessig eine hoehere Toleranz.`})]}),(0,W.jsx)(`div`,{className:`mt-2 rounded-xl border border-sky/20 bg-sky/[0.05] p-3 text-[12px] text-muted/80`,children:(0,W.jsxs)(`p`,{className:`leading-snug`,children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Wie das Scoring funktioniert:`}),` `,`Jede gefundene Stelle bekommt einen Score von 0-100. Diese Regler bestimmen, wie stark einzelne Faktoren ins Ranking einfliessen. Hoeher = wichtiger. Wert auf 0 = Faktor wird ignoriert. Mouse-over auf den Label-Text fuer Details.`]})}),(0,W.jsx)(`div`,{className:`mt-2 divide-y divide-white/[0.06] rounded-xl border border-white/10 bg-white/[0.02] px-4`,children:Ye.map(e=>$e(e))}),(0,W.jsxs)(Y,{label:`Mindest-Score (Stellen unter dieser Schwelle werden ausgefiltert)`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`input`,{type:`range`,min:0,max:20,step:1,value:Number(h.min_score_schwelle)||1,onChange:e=>g(t=>({...t,min_score_schwelle:Number(e.target.value)})),className:`flex-1 h-1.5 cursor-pointer appearance-none rounded-full bg-sky/20 accent-sky`}),(0,W.jsx)(`span`,{className:`w-12 text-right text-sm font-bold tabular-nums text-sky`,children:Number(h.min_score_schwelle)||1})]}),(0,W.jsxs)(`p`,{className:`mt-1 text-xs text-muted/50`,children:[(0,W.jsx)(`strong`,{children:`0–1:`}),` sehr offen — Stellen mit minimalem Keyword-Treffer kommen rein.`,` `,(0,W.jsx)(`strong`,{children:`3–5:`}),` mittel — empfohlen.`,` `,(0,W.jsx)(`strong`,{children:`10+:`}),` nur klar passende Stellen. Greift beim naechsten Such-Lauf; bestehende Stellen bleiben sichtbar.`]})]}),(0,W.jsxs)(`div`,{id:`profil-blacklist`,className:`mt-2 border-t border-white/8 pt-5`,children:[(0,W.jsx)(Gn,{title:`Blacklist`,description:`Ausschlüsse für Firmen oder Keywords.`}),(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-[12rem_minmax(0,1fr)_auto]`,children:[(0,W.jsx)(Y,{label:`Typ`,children:(0,W.jsxs)(Xn,{value:y.type,onChange:e=>b(t=>({...t,type:e.target.value})),children:[(0,W.jsx)(`option`,{value:`firma`,children:`Firma`}),(0,W.jsx)(`option`,{value:`keyword`,children:`Keyword`}),(0,W.jsx)(`option`,{value:`ort`,children:`Ort`})]})}),(0,W.jsx)(Y,{label:`Wert`,children:(0,W.jsx)(X,{value:y.value,onChange:e=>b(t=>({...t,value:e.target.value}))})}),(0,W.jsx)(`div`,{className:`flex items-end`,children:(0,W.jsxs)(K,{onClick:Re,children:[(0,W.jsx)(j,{size:15}),`Hinzufügen`]})})]}),(0,W.jsx)(`div`,{className:`mt-6 grid gap-3`,children:_.length?_.map(e=>(0,W.jsx)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-3`,children:[(0,W.jsx)(J,{tone:`danger`,children:e.type}),(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:e.value})]}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>ze(e.id),disabled:!e.id,title:`Eintrag löschen`,"aria-label":`Blacklist-Eintrag ${e.value} löschen`,children:[(0,W.jsx)(at,{size:14}),`Entfernen`]})]})},e.id??`${e.type}-${e.value}`)):(0,W.jsx)(Qn,{title:`Keine Blacklist-Einträge`,description:`Ausschlüsse erscheinen hier nach dem Speichern.`})})]})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[(0,W.jsxs)(q,{id:`profil-erfahrung`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Berufserfahrung`,description:`Positionen für CV und Matching.`,action:(0,W.jsxs)(K,{onClick:()=>k({open:!0,draft:Pi}),children:[(0,W.jsx)(qe,{size:15}),`Position`]})}),(0,W.jsx)(`div`,{className:`grid gap-4`,children:d.positions?.length?d.positions.map(e=>{let t=!!re[e.id],n=e.projects||[],r=n.length,i=`${r} ${r===1?`Projekt`:`Projekte`}`;return(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1 cursor-pointer space-y-2`,role:`button`,tabIndex:0,onClick:()=>Ae(e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&Ae(e.id)},children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(J,{tone:`sky`,children:e.company||`Unbekannt`}),(0,W.jsx)(J,{tone:r?`success`:`neutral`,children:i})]}),(0,W.jsx)(`h3`,{className:`text-lg font-semibold text-ink`,children:e.title||`Ohne Titel`}),(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:Hi(e)})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:()=>k({open:!0,draft:{...e,start_date:Dn(e.start_date),end_date:Dn(e.end_date)}}),children:`Bearbeiten`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>Ae(e.id),className:`p-1`,children:(0,W.jsx)(L,{size:18,className:G(`text-muted transition-transform duration-200`,t&&`rotate-180`)})})]})]}),t?(0,W.jsxs)(`div`,{className:`mt-4 grid gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[e.employment_type?(0,W.jsx)(J,{tone:`neutral`,children:Vi[e.employment_type]||e.employment_type}):null,e.industry?(0,W.jsx)(J,{tone:`neutral`,children:e.industry}):null]}),e.description?(0,W.jsx)(`p`,{className:`text-sm text-muted/80`,children:e.description}):null,e.tasks?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Aufgaben`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-muted/80`,children:e.tasks})]}):null,e.achievements?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Erfolge`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-teal/80`,children:e.achievements})]}):null,e.technologies?(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Technologien`}),(0,W.jsx)(`p`,{className:`mt-1 text-sm text-muted/80`,children:e.technologies})]}):null,(0,W.jsxs)(`div`,{className:`rounded-xl border border-white/[0.04] bg-white/[0.01] p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:[`Projekte (`,n.length,`)`]}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>M({open:!0,positionId:e.id,draft:Fi}),children:[(0,W.jsx)(qe,{size:13}),`Projekt`]})]}),n.length?(0,W.jsx)(`div`,{className:`mt-3 grid gap-2`,children:n.map((t,n)=>(0,W.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] bg-white/[0.015] p-3`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:t.name||`Projekt`}),t.role?(0,W.jsx)(J,{tone:`sky`,children:t.role}):null]}),t.start_date||t.end_date||t.duration?(0,W.jsxs)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:[t.start_date||t.end_date?`${t.start_date||`?`} – ${t.end_date||`heute`}`:``,t.duration&&(t.start_date||t.end_date)?` (${t.duration})`:t.duration||``]}):null,t.description?(0,W.jsx)(`p`,{className:`mt-2 text-[12px] text-muted/70`,children:t.description}):null,(0,W.jsxs)(`div`,{className:`mt-2 grid gap-1 text-[12px]`,children:[t.situation?(0,W.jsxs)(`p`,{className:`text-muted/70`,children:[(0,W.jsx)(`strong`,{children:`S:`}),` `,t.situation]}):null,t.task?(0,W.jsxs)(`p`,{className:`text-muted/70`,children:[(0,W.jsx)(`strong`,{children:`T:`}),` `,t.task]}):null,t.action?(0,W.jsxs)(`p`,{className:`text-muted/70`,children:[(0,W.jsx)(`strong`,{children:`A:`}),` `,t.action]}):null,t.result?(0,W.jsxs)(`p`,{className:`text-teal/80`,children:[(0,W.jsx)(`strong`,{children:`R:`}),` `,t.result]}):null]}),t.technologies?(0,W.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/50`,children:[`Tech: `,t.technologies]}):null,(0,W.jsxs)(`div`,{className:`mt-2 flex gap-3 border-t border-white/[0.04] pt-2`,children:[(0,W.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-ink transition-colors`,onClick:()=>M({open:!0,positionId:e.id,draft:{...t}}),children:`Bearbeiten`}),(0,W.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-coral transition-colors`,onClick:()=>Me(e.id,t.id),children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,W.jsx)(at,{size:11}),` Löschen`]})})]})]},t.id||`${e.id}-${n}`))}):(0,W.jsx)(`p`,{className:`mt-2 text-[12px] text-muted/50`,children:`Noch keine Projekte erfasst.`})]})]}):null]},e.id)}):(0,W.jsx)(Qn,{title:`Noch keine Positionen`,description:`Berufserfahrung ist ein Kernbaustein des Profils.`,action:(0,W.jsxs)(K,{onClick:()=>k({open:!0,draft:Pi}),children:[(0,W.jsx)(P,{size:15}),`Position erfassen`]})})})]}),(0,W.jsxs)(q,{id:`profil-ausbildung`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Ausbildung`,description:`Studium und Ausbildung.`,action:(0,W.jsxs)(K,{onClick:()=>ee({open:!0,draft:Ii}),children:[(0,W.jsx)(qe,{size:15}),`Ausbildung`]})}),(0,W.jsx)(`div`,{className:`grid gap-4`,children:d.education?.length?d.education.map(e=>(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`h3`,{className:`text-lg font-semibold text-ink`,children:e.institution}),(0,W.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:[e.degree,e.field_of_study].filter(Boolean).join(` - `)}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ee({open:!0,draft:{...e,start_date:Dn(e.start_date),end_date:Dn(e.end_date)}}),children:`Bearbeiten`}),(0,W.jsxs)(K,{variant:`ghost`,onClick:()=>{window.confirm(`Ausbildung "${e.institution}" wirklich loeschen?`)&&Ie(()=>Dt(`/api/education/${e.id}`),`Ausbildung gelöscht`,{onSuccess:()=>(0,w.startTransition)(()=>{f(t=>t&&{...t,education:(t.education||[]).filter(t=>t.id!==e.id)})})})},children:[(0,W.jsx)(at,{size:15}),`Löschen`]})]})]},e.id)):(0,W.jsx)(Qn,{title:`Noch keine Ausbildung`,description:`Füge Ausbildung oder Studium hinzu.`,action:(0,W.jsxs)(K,{onClick:()=>ee({open:!0,draft:Ii}),children:[(0,W.jsx)(Ce,{size:15}),`Ausbildung erfassen`]})})})]}),(0,W.jsxs)(q,{id:`profil-skills`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Skills`,description:`Kompetenzen für Matching und Fit-Analyse.`,action:(0,W.jsxs)(K,{onClick:()=>I({open:!0,draft:Xi(Li)}),children:[(0,W.jsx)(qe,{size:15}),`Skill`]})}),(d.skills?.length||0)>6&&(0,W.jsxs)(`div`,{className:`mb-4 flex items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`text`,value:te,onChange:e=>ne(e.target.value),placeholder:`Skill suchen (Name oder Kategorie)...`,className:`w-full max-w-sm rounded-lg border border-white/5 bg-white/[0.03] px-3 py-1.5 text-sm text-ink placeholder:text-muted/40 focus:border-sky/40 focus:outline-none`,"aria-label":`Skill-Filter`}),te&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>ne(``),className:`text-[11px] text-muted/60 hover:text-ink underline`,children:`zuruecksetzen`})]}),d.skills?.length?(()=>{let e=te.trim().toLowerCase(),t=e?d.skills.filter(t=>(t.name||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)||(Ri[Bi(t.category)]||``).toLowerCase().includes(e)):d.skills;if(t.length===0)return(0,W.jsxs)(`p`,{className:`py-6 text-center text-sm text-muted/40`,children:[`Kein Skill matcht „`,te,`". `,(0,W.jsx)(`button`,{onClick:()=>ne(``),className:`text-sky underline`,children:`Filter zuruecksetzen`})]});let n={};for(let e of t){let t=Bi(e.category);n[t]||(n[t]=[]),n[t].push(e)}return(0,W.jsx)(`div`,{className:`grid gap-5`,children:Object.entries(n).map(([e,t])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`mb-2.5 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:Ri[e]||e}),(0,W.jsx)(`div`,{className:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`,children:t.map(e=>{let t=Yi(e.start_year),n=Yi(e.end_year),r=t?Math.max(0,(n??Te)-t):Yi(e.years_experience)??null,a=Yi(e.level)??0,s=Yi(e.level_current),c=s===null?a:s,l=n!==null,u;return u=t&&n?`${t}–${n}`:t?`seit ${t}`:r===null?null:`seit ${Math.max(1900,Te-r)}`,(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none ${l?`opacity-80`:``}`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(J,{tone:`sky`,children:Ri[Bi(e.category)]}),(0,W.jsx)(`div`,{className:`flex items-center gap-1`,title:s===null?`Level ${a}/5`:`Aktuell ${s}/5 (Spitze ${a}/5)`,children:[1,2,3,4,5].map(t=>(0,W.jsx)(`button`,{type:`button`,className:`h-2.5 w-2.5 rounded-full transition-colors ${t<=c?l?c<=2?`bg-amber/70`:`bg-amber`:c<=2?`bg-amber`:c<=3?`bg-sky`:`bg-teal`:`bg-white/[0.08] hover:bg-white/[0.2]`}`,onClick:async()=>{let n=t===a?t-1:t;try{await U(`/api/skill/${e.id}`,{...e,level:n}),f(t=>({...t,skills:t.skills.map(t=>t.id===e.id?{...t,level:n}:t)})),await i({quiet:!0})}catch(e){o(`Level konnte nicht geändert werden: ${e.message}`,`danger`)}}},t))})]}),(0,W.jsx)(`h3`,{className:`mt-2 text-sm font-semibold text-ink`,children:e.name}),(0,W.jsxs)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:[r!==null&&u?`${r} Jahre Erfahrung · ${u}`:u||`Ohne Erfahrungsjahre`,l&&s!==null&&sI({open:!0,draft:Xi(e)}),children:`Bearbeiten`}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>{window.confirm(`Skill "${e.name}" wirklich löschen?`)&&Ie(()=>Dt(`/api/skill/${e.id}`),`Skill gelöscht`,{onSuccess:()=>(0,w.startTransition)(()=>{f(t=>t&&{...t,skills:(t.skills||[]).filter(t=>t.id!==e.id)})})})},children:[(0,W.jsx)(at,{size:13}),`Löschen`]})]})]},e.id)})})]},e))})})():(0,W.jsx)(Qn,{title:`Noch keine Skills`,description:`Lege Fach-, Tool- oder Soft-Skills an.`,action:(0,W.jsxs)(K,{onClick:()=>I({open:!0,draft:Xi(Li)}),children:[(0,W.jsx)(_t,{size:15}),`Skill erfassen`]})})]})]}),(0,W.jsxs)(q,{id:`profil-dokumente`,className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Dokumente`,description:`Upload und Schnell-Import. Suche, Filter und Verwaltung findest du im Docs-Tab.`,action:(0,W.jsxs)(`div`,{className:`flex gap-2`,children:[(0,W.jsxs)(K,{type:`button`,variant:`secondary`,onClick:()=>s(`/profil_erweiterung`),children:[(0,W.jsx)(me,{size:15}),`Profil-Prompt kopieren`]}),(0,W.jsxs)(K,{type:`button`,onClick:()=>a(`dokumente`),children:[(0,W.jsx)(Se,{size:15}),`Docs-Tab oeffnen`]})]})}),(0,W.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.2fr)_minmax(18rem,0.8fr)]`,children:[(0,W.jsx)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(Y,{label:`Dokumenttyp`,children:(0,W.jsxs)(Xn,{value:de.doc_type,onChange:e=>fe(t=>({...t,doc_type:e.target.value})),children:[(0,W.jsx)(`option`,{value:`sonstiges`,children:`Automatisch / Sonstiges`}),(0,W.jsx)(`option`,{value:`lebenslauf`,children:`Lebenslauf`}),(0,W.jsx)(`option`,{value:`anschreiben`,children:`Anschreiben`}),(0,W.jsx)(`option`,{value:`zeugnis`,children:`Zeugnis`}),(0,W.jsx)(`option`,{value:`zertifikat`,children:`Zertifikat`})]})}),(0,W.jsxs)(`div`,{className:G(`rounded-xl border-2 border-dashed border-white/15 bg-white/[0.02] p-5 transition`,pe&&`border-sky/60 bg-sky/10 ring-2 ring-sky/35`),onDragOver:e=>{e.preventDefault(),e.stopPropagation(),he(!0)},onDragEnter:e=>{e.preventDefault(),e.stopPropagation(),he(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),!e.currentTarget.contains(e.relatedTarget)&&he(!1)},onDrop:async e=>{e.preventDefault(),e.stopPropagation(),he(!1),await Pe(await un(e.dataTransfer))},children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Dateien oder Ordner hier hineinziehen`}),(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:`Mehrfach-Upload bleibt aktiv.`}),(0,W.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,W.jsxs)(K,{type:`button`,variant:`secondary`,onClick:()=>ye.current?.click(),children:[(0,W.jsx)(ut,{size:15}),`Dateien auswaehlen`]}),(0,W.jsx)(K,{type:`button`,variant:`ghost`,onClick:()=>Ee.current?.click(),children:`Ordner auswaehlen`})]}),(0,W.jsx)(`input`,{ref:ye,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:async e=>{await Pe(e.target.files),e.target.value=``}}),(0,W.jsx)(`input`,{ref:Ee,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:async e=>{await Pe(e.target.files),e.target.value=``}})]})]})}),(0,W.jsxs)(q,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Dokumentenstatus`}),(0,W.jsxs)(`div`,{className:`mt-3 grid grid-cols-2 gap-2`,children:[(0,W.jsxs)(`div`,{className:`rounded-lg border border-white/[0.05] bg-white/[0.02] px-3 py-2.5`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:`Gesamt`}),(0,W.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-ink`,children:Ve.length})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-teal/15 bg-teal/[0.06] px-3 py-2.5`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-teal/70`,children:`Bearbeitet`}),(0,W.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-teal`,children:We})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-amber/15 bg-amber/[0.06] px-3 py-2.5`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-amber/70`,children:`Offen`}),(0,W.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-amber`,children:Ge})]}),(0,W.jsxs)(`div`,{className:`rounded-lg border border-white/[0.05] bg-white/[0.02] px-3 py-2.5`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:`Letzte Aktivitaet`}),(0,W.jsx)(`p`,{className:`mt-1 text-[12px] font-medium text-ink/90`,children:Ue})]})]}),(0,W.jsxs)(`div`,{className:`mt-4 rounded-lg border border-white/[0.05] bg-white/[0.02] p-3`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/50`,children:`Dokumenttypen`}),(0,W.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:Je.length?Je.map(([e,t])=>(0,W.jsxs)(J,{tone:`neutral`,children:[e,` (`,t,`)`]},e)):(0,W.jsx)(`span`,{className:`text-[12px] text-muted/60`,children:`Noch keine Dokumente vorhanden.`})})]}),(0,W.jsxs)(K,{type:`button`,className:`mt-4 w-full`,onClick:()=>a(`dokumente`),children:[(0,W.jsx)(Se,{size:15}),`Alle Dokumente anzeigen (`,Ve.length,`)`]})]})]})]}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Extraktions-Verlauf (${C.length})`,description:`Typ, Status und erkannte Bereiche pro Lauf.`}),C.length?(0,W.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-white/[0.05]`,children:C.slice(0,10).map((e,t)=>{let n=Qi[e.status]||{label:e.status||`Unbekannt`,tone:`neutral`},r=oe===e.id,i=$i(e.extracted_fields),a=Array.isArray(e.conflicts)?e.conflicts.length:0,o=Object.keys(e.extracted_fields||{}),s=Object.entries(e.applied_fields||{}).map(([e,t])=>Array.isArray(t)?`${e}: ${t.length}`:t&&typeof t==`object`?`${e}: ${Object.keys(t).length}`:`${e}: ${t??0}`).join(` | `),c=[o.length?o.join(`, `):`${i} Bereiche extrahiert`];return s&&c.push(`→ ${s}`),a&&c.push(`${a} Konflikte`),(0,W.jsxs)(`div`,{className:G(`px-4 py-3 transition-colors`,r?`bg-white/[0.03]`:`hover:bg-white/[0.02]`,tz(t=>t===e.id?``:e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),z(t=>t===e.id?``:e.id))},children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`p`,{className:`text-[15px] font-semibold text-ink`,children:e.extraction_type||e.filename||`auto`}),(0,W.jsx)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:xn(e.created_at)})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(J,{tone:n.tone,children:n.label}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:t=>{t.stopPropagation(),window.confirm(`Diesen Historieneintrag wirklich löschen?`)&&Ie(()=>Dt(`/api/extraction-history/${e.id}`),`Historieneintrag gelöscht`,{localRefresh:!0,syncChrome:!0})},children:[(0,W.jsx)(at,{size:14}),`Löschen`]})]}),(0,W.jsx)(L,{size:20,className:G(`shrink-0 text-muted/60 transition-transform duration-200`,r&&`rotate-180`)})]}),(0,W.jsx)(`p`,{className:`mt-2 text-[13px] text-muted/70`,children:c.join(`, `)})]}),(0,W.jsx)(`div`,{className:G(`grid transition-all duration-300 ease-out`,r?`mt-3 grid-rows-[1fr] opacity-100`:`mt-0 grid-rows-[0fr] opacity-0`),children:(0,W.jsx)(`div`,{className:`overflow-hidden`,children:(0,W.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-white/[0.05] bg-white/[0.02] p-3`,children:[o.map(t=>{let n=e.extracted_fields[t],r=e.applied_fields?.[t];return(0,W.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] bg-white/[0.02] p-2.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-teal/80`,children:t}),r!=null&&(0,W.jsx)(J,{tone:`success`,children:typeof r==`number`?`${r} übernommen`:`übernommen`})]}),(0,W.jsx)(`div`,{className:`mt-1.5 text-[12px] text-ink/80`,children:Array.isArray(n)?(0,W.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[n.slice(0,12).map((e,t)=>(0,W.jsx)(`span`,{className:`inline-block rounded-md border border-white/[0.06] bg-white/[0.04] px-2 py-0.5 text-[11px]`,children:typeof e==`string`?e:e?.name||e?.title||e?.institution||JSON.stringify(e).slice(0,40)},t)),n.length>12&&(0,W.jsxs)(`span`,{className:`text-[11px] text-muted/50`,children:[`+`,n.length-12,` weitere`]})]}):n&&typeof n==`object`?(0,W.jsx)(`div`,{className:`grid gap-1 sm:grid-cols-2`,children:Object.entries(n).map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,W.jsxs)(`span`,{className:`shrink-0 text-[11px] text-muted/50`,children:[e,`:`]}),(0,W.jsx)(`span`,{className:`text-[11px] text-ink/80 truncate`,children:String(t??`–`)})]},e))}):(0,W.jsx)(`p`,{className:`text-[11px] text-ink/70`,children:String(n??`–`)})})]},t)}),a>0&&(0,W.jsxs)(`div`,{className:`rounded-lg border border-coral/15 bg-coral/[0.04] p-2.5`,children:[(0,W.jsxs)(`p`,{className:`text-[11px] font-semibold text-coral/80`,children:[`Konflikte (`,a,`)`]}),(0,W.jsx)(`p`,{className:`mt-1 text-[12px] text-ink/70`,children:(e.conflicts||[]).slice(0,5).map(e=>typeof e==`string`?e:e?.field||e?.key||`Konflikt`).join(`, `)})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-muted/40`,children:[(0,W.jsxs)(`span`,{children:[`ID: `,e.id||`n/a`]}),(0,W.jsxs)(`span`,{children:[`Dokument: `,e.document_id||`n/a`]}),(0,W.jsxs)(`span`,{children:[`Abgeschlossen: `,e.completed_at?xn(e.completed_at):`Noch offen`]})]})]})})})]},e.id)})}):(0,W.jsx)(Qn,{title:`Keine Extraktionshistorie`,description:`Sobald Dokumente analysiert werden, erscheinen die Einträge hier.`})]})]})}),(0,W.jsxs)(er,{open:O.open,title:O.draft.id?`Position bearbeiten`:`Neue Position`,onClose:()=>k({open:!1,draft:Pi}),footer:(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[O.draft.id?(0,W.jsxs)(K,{variant:`danger`,onClick:()=>{window.confirm(`Position wirklich loeschen? Alle zugehoerigen Projekte werden ebenfalls geloescht.`)&&Ie(()=>Dt(`/api/position/${O.draft.id}`),`Position geloescht`,{onSuccess:()=>{k({open:!1,draft:Pi}),(0,w.startTransition)(()=>{f(e=>e&&{...e,positions:(e.positions||[]).filter(e=>e.id!==O.draft.id)})})}})},children:[(0,W.jsx)(at,{size:15}),` Loeschen`]}):(0,W.jsx)(`span`,{}),(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>k({open:!1,draft:Pi}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:()=>ke(`position`,O),children:`Speichern`})]})]}),children:[(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`Firma`,children:(0,W.jsx)(X,{value:O.draft.company||``,onChange:e=>k(t=>({...t,draft:{...t.draft,company:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Titel`,children:(0,W.jsx)(X,{value:O.draft.title||``,onChange:e=>k(t=>({...t,draft:{...t.draft,title:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Standort`,children:(0,W.jsx)(X,{value:O.draft.location||``,onChange:e=>k(t=>({...t,draft:{...t.draft,location:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Branche`,children:(0,W.jsx)(X,{value:O.draft.industry||``,onChange:e=>k(t=>({...t,draft:{...t.draft,industry:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Von`,children:(0,W.jsx)(X,{type:`month`,value:O.draft.start_date||``,onChange:e=>k(t=>({...t,draft:{...t.draft,start_date:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Bis`,children:(0,W.jsx)(X,{type:`month`,value:O.draft.end_date||``,disabled:!!O.draft.is_current,onChange:e=>k(t=>({...t,draft:{...t.draft,end_date:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Anstellungsart`,children:(0,W.jsxs)(Xn,{value:O.draft.employment_type||`festanstellung`,onChange:e=>k(t=>({...t,draft:{...t.draft,employment_type:e.target.value}})),children:[(0,W.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,W.jsx)(`option`,{value:`freelance`,children:`Freelance`}),(0,W.jsx)(`option`,{value:`teilzeit`,children:`Teilzeit`}),(0,W.jsx)(`option`,{value:`praktikum`,children:`Praktikum`})]})}),(0,W.jsxs)(`label`,{className:`mt-8 inline-flex items-center gap-2 text-sm text-ink`,children:[(0,W.jsx)(Zn,{checked:!!O.draft.is_current,onChange:e=>k(t=>({...t,draft:{...t.draft,is_current:e.target.checked,end_date:e.target.checked?``:t.draft.end_date}}))}),`Aktuelle Position`]})]}),(0,W.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,W.jsx)(Y,{label:`Beschreibung`,children:(0,W.jsx)(Jn,{rows:2,value:O.draft.description||``,onChange:e=>k(t=>({...t,draft:{...t.draft,description:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Aufgaben`,children:(0,W.jsx)(Jn,{rows:3,value:O.draft.tasks||``,onChange:e=>k(t=>({...t,draft:{...t.draft,tasks:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Erfolge / Achievements`,children:(0,W.jsx)(Jn,{rows:2,value:O.draft.achievements||``,onChange:e=>k(t=>({...t,draft:{...t.draft,achievements:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Technologien`,children:(0,W.jsx)(X,{value:O.draft.technologies||``,onChange:e=>k(t=>({...t,draft:{...t.draft,technologies:e.target.value}}))})})]})]}),(0,W.jsx)(er,{open:A.open,title:A.draft?.id?`Projekt bearbeiten (STAR-Methode)`:`Projekt hinzufügen (STAR-Methode)`,onClose:()=>M({open:!1,positionId:``,draft:Fi}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>M({open:!1,positionId:``,draft:Fi}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:je,children:`Speichern`})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`Projektname`,children:(0,W.jsx)(X,{value:A.draft.name||``,onChange:e=>M(t=>({...t,draft:{...t.draft,name:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Rolle`,children:(0,W.jsx)(X,{value:A.draft.role||``,onChange:e=>M(t=>({...t,draft:{...t.draft,role:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Dauer`,children:(0,W.jsx)(X,{value:A.draft.duration||``,onChange:e=>M(t=>({...t,draft:{...t.draft,duration:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Technologien`,children:(0,W.jsx)(X,{value:A.draft.technologies||``,onChange:e=>M(t=>({...t,draft:{...t.draft,technologies:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Projektbeginn`,children:(0,W.jsx)(X,{type:`month`,value:A.draft.start_date||``,onChange:e=>M(t=>({...t,draft:{...t.draft,start_date:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Projektende`,children:(0,W.jsx)(X,{type:`month`,value:A.draft.end_date||``,onChange:e=>M(t=>({...t,draft:{...t.draft,end_date:e.target.value}}))})})]}),(0,W.jsx)(Y,{label:`Beschreibung`,children:(0,W.jsx)(Jn,{rows:2,value:A.draft.description||``,onChange:e=>M(t=>({...t,draft:{...t.draft,description:e.target.value}}))})}),(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-teal/70`,children:`STAR-Methode`}),(0,W.jsx)(Y,{label:`S - Situation`,children:(0,W.jsx)(Jn,{rows:2,value:A.draft.situation||``,onChange:e=>M(t=>({...t,draft:{...t.draft,situation:e.target.value}}))})}),(0,W.jsx)(Y,{label:`T - Task / Aufgabe`,children:(0,W.jsx)(Jn,{rows:2,value:A.draft.task||``,onChange:e=>M(t=>({...t,draft:{...t.draft,task:e.target.value}}))})}),(0,W.jsx)(Y,{label:`A - Action / Vorgehen`,children:(0,W.jsx)(Jn,{rows:2,value:A.draft.action||``,onChange:e=>M(t=>({...t,draft:{...t.draft,action:e.target.value}}))})}),(0,W.jsx)(Y,{label:`R - Result / Ergebnis`,children:(0,W.jsx)(Jn,{rows:2,value:A.draft.result||``,onChange:e=>M(t=>({...t,draft:{...t.draft,result:e.target.value}}))})})]})}),(0,W.jsx)(er,{open:N.open,title:N.draft.id?`Ausbildung bearbeiten`:`Ausbildung hinzufügen`,onClose:()=>ee({open:!1,draft:Ii}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ee({open:!1,draft:Ii}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:()=>ke(`education`,N),children:`Speichern`})]}),children:(0,W.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[[`institution`,`Institution`],[`degree`,`Abschluss`],[`field_of_study`,`Fachrichtung`],[`start_date`,`Startdatum`],[`end_date`,`Enddatum`]].map(([e,t])=>(0,W.jsx)(Y,{label:t,children:(0,W.jsx)(X,{value:N.draft[e]||``,onChange:t=>ee(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e))})}),(0,W.jsx)(er,{open:F.open,title:F.draft.id?`Skill bearbeiten`:`Skill hinzufügen`,onClose:()=>I({open:!1,draft:Li}),footer:(()=>{let e=d?.skills||[],t=F.draft.id?e.findIndex(e=>e.id===F.draft.id):-1,n=t>0,r=t>=0&&t1?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(K,{variant:`ghost`,disabled:!n,onClick:()=>I({open:!0,draft:Xi(e[t-1])}),children:(0,W.jsx)(ie,{size:16})}),(0,W.jsxs)(`span`,{className:`flex items-center text-xs text-muted/60 tabular-nums`,children:[t+1,`/`,e.length]}),(0,W.jsx)(K,{variant:`ghost`,disabled:!r,onClick:()=>I({open:!0,draft:Xi(e[t+1])}),children:(0,W.jsx)(R,{size:16})})]}):null}),(0,W.jsxs)(`div`,{className:`flex gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>I({open:!1,draft:Li}),children:`Abbrechen`}),(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ke(`skill`,F,{keepOpen:!0}),children:`Speichern & weiter`}),(0,W.jsx)(K,{onClick:()=>ke(`skill`,F),children:`Speichern`})]})]})})(),children:(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`Name`,children:(0,W.jsx)(X,{value:F.draft.name,onChange:e=>I(t=>({...t,draft:{...t.draft,name:e.target.value}}))})}),(0,W.jsx)(Y,{label:`Kategorie`,children:(0,W.jsxs)(Xn,{value:F.draft.category,onChange:e=>I(t=>({...t,draft:{...t.draft,category:e.target.value}})),children:[(0,W.jsx)(`option`,{value:`fachlich`,children:`Fachlich`}),(0,W.jsx)(`option`,{value:`tool`,children:`Tool`}),(0,W.jsx)(`option`,{value:`methodisch`,children:`Methodisch`}),(0,W.jsx)(`option`,{value:`soft_skill`,children:`Soft Skill`}),(0,W.jsx)(`option`,{value:`sprache`,children:`Sprache`})]})}),(0,W.jsx)(Y,{label:`Spitzen-Niveau (zum Zeitpunkt der Erfahrung)`,children:(()=>{let e=Math.max(1,Math.min(5,Number(F.draft.level)||3)),t=e=>I(t=>({...t,draft:{...t.draft,level:e}}));return(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:[1,2,3,4,5].map(n=>(0,W.jsx)(`button`,{type:`button`,"aria-label":`Level ${n} von 5`,onClick:()=>t(n),className:G(`h-5 w-5 rounded-full border transition-all`,n<=e?`bg-sky border-sky`:`bg-transparent border-muted/30 hover:border-muted/60`)},n))}),(0,W.jsx)(`span`,{className:`text-xs text-muted/60`,children:e===1?`Grundkenntnisse`:e===2?`Erweiterte Grundkenntnisse`:e===3?`Solide Praxiserfahrung`:e===4?`Fortgeschritten`:`Experte`})]})})()}),(0,W.jsx)(Y,{label:`Jahre Erfahrung`,children:(0,W.jsx)(X,{type:`number`,min:`0`,value:F.draft.years_experience,onChange:e=>{let t=Yi(e.target.value),n=t===null?``:Math.min(Te,Math.max(1900,Te-Math.max(0,t)));I(t=>({...t,draft:{...t.draft,years_experience:e.target.value,since_year:n}}))}})}),(0,W.jsx)(Y,{label:`Von (Jahr)`,children:(0,W.jsx)(X,{type:`number`,min:`1900`,max:String(Te),value:F.draft.since_year,onChange:e=>{let t=Yi(e.target.value),n=t===null?``:Math.max(0,Te-Math.min(Te,Math.max(1900,t)));I(r=>({...r,draft:{...r.draft,since_year:e.target.value,years_experience:F.draft.end_year?Math.max(0,Yi(F.draft.end_year)-t):n}}))}})}),(0,W.jsx)(Y,{label:`Bis (Jahr) — leer = laufend`,children:(0,W.jsx)(X,{type:`number`,min:`1900`,max:String(Te),placeholder:`(laufend)`,value:F.draft.end_year,onChange:e=>{I(t=>({...t,draft:{...t.draft,end_year:e.target.value}}))}})}),F.draft.end_year?(0,W.jsx)(Y,{label:`Aktuell verfügbares Niveau`,children:(()=>{let e=Math.max(1,Math.min(5,Number(F.draft.level)||3)),t=F.draft.level_current,n=t===``||t==null,r=n?e:Math.max(1,Math.min(5,Number(t)||e)),i=e=>I(t=>({...t,draft:{...t.draft,level_current:e}}));return(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`flex gap-1.5`,children:[1,2,3,4,5].map(e=>(0,W.jsx)(`button`,{type:`button`,"aria-label":`Aktuelles Level ${e} von 5`,onClick:()=>i(e),className:G(`h-5 w-5 rounded-full border transition-all`,e<=r?n?`bg-sky/40 border-sky/40`:`bg-amber border-amber`:`bg-transparent border-muted/30 hover:border-muted/60`)},e))}),(0,W.jsx)(`span`,{className:`text-xs text-muted/60`,children:n?`(= Spitzen-Niveau ${e})`:r===1?`Grundkenntnisse`:r===2?`Erweiterte Grundkenntnisse`:r===3?`Solide Praxiserfahrung`:r===4?`Fortgeschritten`:`Experte`}),!n&&(0,W.jsx)(`button`,{type:`button`,className:`text-[11px] text-muted/50 hover:text-muted underline`,onClick:()=>i(``),children:`zuruecksetzen`})]}),(0,W.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Wenn der Skill ruht: das aktuell noch abrufbare Niveau (Prinzip- Verstaendnis bleibt, Tiefe verfaellt). Leer = identisch mit Spitzen-Niveau.`})]})})()}):null,F.draft.end_year?(0,W.jsx)(`div`,{className:`md:col-span-2`,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-md bg-amber/10 border border-amber/30 px-2 py-1 text-xs text-amber`,children:[`Skill ruht seit `,F.draft.end_year,F.draft.since_year?` (aktiv ${F.draft.since_year}–${F.draft.end_year})`:``]})}):F.draft.since_year?(0,W.jsx)(`div`,{className:`md:col-span-2`,children:(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-md bg-success/10 border border-success/30 px-2 py-1 text-xs text-success`,children:[`Aktiv seit `,F.draft.since_year]})}):null]})}),(0,W.jsx)(er,{open:se,title:`Ordner importieren`,description:`Gib einen lokalen Ordnerpfad an, um bestehende Unterlagen zu importieren.`,onClose:()=>ce(!1),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ce(!1),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:Fe,children:`Import starten`})]}),children:(0,W.jsx)(Y,{label:`Ordnerpfad`,children:(0,W.jsx)(X,{value:le,onChange:e=>ue(e.target.value),placeholder:`C:\\\\Users\\\\...\\\\Bewerbungen`})})}),(0,W.jsx)(er,{open:_e.open,title:`Extraktion prüfen${_e.document?.filename?`: ${_e.document.filename}`:``}`,description:`Hier bearbeitest du bereits erkannte Felder, bevor sie ins Profil übernommen werden. Für Claude nutze den Analyse-Prompt.`,onClose:()=>ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),footer:(0,W.jsxs)(`div`,{className:`flex w-full flex-wrap items-center justify-between gap-3`,children:[_e.document?(0,W.jsxs)(K,{variant:`secondary`,onClick:()=>Le(_e.document),children:[(0,W.jsx)(tt,{size:15}),`Analyse-Prompt kopieren`]}):(0,W.jsx)(`span`,{}),(0,W.jsx)(K,{variant:`ghost`,onClick:()=>ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),children:`Schließen`}),(0,W.jsx)(K,{onClick:Be,disabled:_e.loading||_e.saving||!_e.extraction,children:_e.saving?`Speichere...`:`Korrekturen ins Profil übernehmen`})]}),children:_e.loading?(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Extraktion wird geladen...`}):_e.extraction?(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,W.jsx)(Y,{label:`Status`,children:(0,W.jsx)(X,{value:_e.extraction.status||``,readOnly:!0})}),(0,W.jsx)(Y,{label:`Typ`,children:(0,W.jsx)(X,{value:_e.extraction.extraction_type||``,readOnly:!0})}),(0,W.jsx)(Y,{label:`Zeitpunkt`,children:(0,W.jsx)(X,{value:xn(_e.extraction.created_at),readOnly:!0})})]}),(0,W.jsx)(Y,{label:`Extrahierte Felder (JSON)`,children:(0,W.jsx)(Jn,{rows:16,value:_e.draftText,onChange:e=>ve(t=>({...t,draftText:e.target.value}))})}),(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Unterstützte Korrekturen für die direkte Profil-Übernahme: `,(0,W.jsx)(`code`,{children:`persoenliche_daten`}),` und `,(0,W.jsx)(`code`,{children:`skills`}),`.`]})]}):(0,W.jsx)(`p`,{className:`text-sm text-muted`,children:`Für dieses Dokument liegt noch keine interne Extraktion vor. Nutze den Analyse-Prompt, wenn Claude genau diese Datei auswerten soll.`})})]})}function ta(){let{themeMode:e,themeCustom:t,setThemeMode:n,setThemeColor:r,resetThemeMode:i,resetAllTheme:a,defaultPalette:o,themePreset:s,setThemePreset:c,themePresets:l,pushToast:u}=kt(),[d,f]=(0,w.useState)(null),p=[{id:`system`,label:`System`,Icon:Re,hint:`Folge OS-Einstellung`},{id:`light`,label:`Hell`,Icon:rt,hint:`Immer helles Theme`},{id:`dark`,label:`Dunkel`,Icon:ze,hint:`Immer dunkles Theme`}];function m(e){let n=l.find(e=>e.id===s),a=n&&n.id!==`default`&&n.palette[e]||o[e],c=t&&t[e]||{};return(0,W.jsxs)(`div`,{className:`mt-3 grid gap-3 rounded-xl border border-line/40 bg-shell/40 p-4`,children:[(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Aenderungen werden lokal in deinem Browser gespeichert und sofort angewendet.`}),(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>{i(e),u(`${e===`light`?`Helles`:`Dunkles`} Theme auf Standard zurueckgesetzt`,`success`)},children:[(0,W.jsx)(Ye,{size:14}),` Standard wiederherstellen`]})]}),(0,W.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:At.map(({key:t,label:n,hint:i})=>{let o=c[t]||a[t],s=!!c[t];return(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-line/30 bg-panel/40 p-2.5`,children:[(0,W.jsx)(`input`,{type:`color`,value:zt(o),onChange:n=>{let i=Bt(n.target.value);i&&r(e,t,i)},className:`h-9 w-10 cursor-pointer rounded-md border border-line/40 bg-transparent`,"aria-label":`Farbe ${n}`}),(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`p`,{className:`text-[13px] font-medium text-ink`,children:[n,s&&(0,W.jsx)(`span`,{className:`ml-2 text-[10px] uppercase tracking-wider text-amber`,children:`Angepasst`})]}),(0,W.jsx)(`p`,{className:`truncate text-[11px] text-muted`,children:i})]}),s&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>r(e,t,null),className:`rounded-md p-1 text-muted hover:text-ink`,title:`Auf Standard zuruecksetzen`,children:(0,W.jsx)(Ye,{size:13})})]},t)})})]})}return(0,W.jsxs)(q,{children:[(0,W.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-sky h-10 w-10`,children:(0,W.jsx)(Ve,{size:18})}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Erscheinungsbild`}),(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Theme-Modus waehlen und Farben individuell anpassen.`})]})]}),(0,W.jsx)(`div`,{className:`mb-4 grid grid-cols-3 gap-2`,children:p.map(({id:t,label:r,Icon:i,hint:a})=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(t),className:`flex flex-col items-center gap-1.5 rounded-xl border p-3 transition-colors ${e===t?`border-sky/40 bg-sky/10 text-sky`:`border-line/40 bg-shell/40 text-muted hover:text-ink hover:border-line/60`}`,title:a,children:[(0,W.jsx)(i,{size:18}),(0,W.jsx)(`span`,{className:`text-sm font-medium`,children:r})]},t))}),(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`p`,{className:`mb-2 text-xs font-medium uppercase tracking-wide text-muted/70`,children:`Farb-Schema`}),(0,W.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-4`,children:l.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{c(e.id),u(`Farb-Schema: ${e.label}`,`success`,{duration:2200})},className:`rounded-xl border p-3 text-left transition-colors ${s===e.id?`border-teal/40 bg-teal/10 text-ink`:`border-line/40 bg-shell/40 text-muted hover:text-ink hover:border-line/60`}`,title:e.description,children:[(0,W.jsx)(`div`,{className:`mb-1.5 flex items-center gap-1.5`,children:[`teal`,`amber`,`coral`,`sky`].map(t=>(0,W.jsx)(`span`,{className:`h-3 w-3 rounded-full border border-white/10`,style:{background:`rgb(${e.palette.dark[t]})`}},t))}),(0,W.jsx)(`p`,{className:`text-sm font-medium leading-tight`,children:e.label}),(0,W.jsx)(`p`,{className:`mt-0.5 text-[11px] leading-snug text-muted/60`,children:e.description})]},e.id))}),(0,W.jsx)(`p`,{className:`mt-2 text-[11px] text-muted/60`,children:`Ein Schema setzt alle Farben fuer Hell + Dunkel auf einmal. Einzelne Tokens lassen sich darunter weiter individuell anpassen (Custom-Override pro Token).`})]}),(0,W.jsx)(`div`,{className:`grid gap-2`,children:[`light`,`dark`].map(e=>{let n=d===e,r=Object.keys(t&&t[e]||{}).length;return(0,W.jsxs)(`div`,{className:`rounded-xl border border-line/40`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>f(n?null:e),className:`flex w-full items-center justify-between gap-3 p-3 text-left hover:bg-white/[0.03]`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[e===`light`?(0,W.jsx)(rt,{size:15}):(0,W.jsx)(ze,{size:15}),e===`light`?`Helles Theme anpassen`:`Dunkles Theme anpassen`,r>0&&(0,W.jsxs)(J,{tone:`amber`,children:[r,` angepasst`]})]}),(0,W.jsx)(`span`,{className:`text-xs text-muted`,children:n?`Schliessen`:`Oeffnen`})]}),n&&(0,W.jsx)(`div`,{className:`px-3 pb-3`,children:m(e)})]},e)})}),(0,W.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,W.jsxs)(K,{variant:`ghost`,size:`sm`,onClick:()=>{a(),u(`Theme komplett auf Standard zurueckgesetzt`,`success`)},children:[(0,W.jsx)(Ye,{size:14}),` Alles zuruecksetzen`]})})]})}function na({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1);async function s(){try{let[e,t]=await Promise.all([V(`/api/activity/stats`),V(`/api/settings/learning`)]);n(e),i(t)}catch(t){e(`Lern-System-Status laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{s()},[]);async function c(t){let n=t.target.checked;o(!0);try{await U(`/api/settings/learning`,{learning_enabled:n}),(await Hr(()=>Promise.resolve().then(()=>_U),void 0)).setLearningEnabled(n),await s(),e(n?`Lern-Modus aktiviert. Daten bleiben lokal.`:`Lern-Modus deaktiviert. Bestehende Daten bleiben — du kannst sie unten loeschen.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}async function l(){if(confirm(`Wirklich ALLE gesammelten Lern-Daten loeschen? Domain-Daten (Bewerbungen, Stellen, etc.) bleiben unangetastet.`)){o(!0);try{e(`${(await Dt(`/api/activity/clear`))?.deleted||0} Lern-Events geloescht.`,`success`),await s()}catch(t){e(`Loeschen fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}}return!t||!r?null:(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Lern-System (Privatsphaere)`,description:`PBP kann aus deinem Verhalten lernen, um sich anzupassen — alle Daten bleiben LOKAL.`}),(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!r.learning_enabled,onChange:c,disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Lern-Modus aktiv (empfohlen)`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:[`Wenn aktiv, sammelt PBP `,(0,W.jsx)(`strong`,{children:`lokal`}),` Klicks, Scroll- und Verweildauer-Daten in der eigenen DB. Diese Daten `,(0,W.jsx)(`strong`,{children:`verlassen deinen Rechner NICHT`}),`. Sie helfen PBP, sich an deinen Workflow anzupassen — z.B. haeufig genutzte Filter als Default zu lernen, ueberfluessige Klicks zu erkennen, oder mit der lokalen AI Muster auszuwerten. Du kannst es jederzeit ausschalten.`]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[(0,W.jsx)(`strong`,{children:`Vorteil:`}),` PBP wird mit der Zeit treffsicherer in Auto-Aussortierung, Filter-Vorschlaegen und passt UI an dein Verhalten an. Ohne Lern-Modus bleibt PBP statisch wie heute.`]})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 text-[12px] text-muted/70`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:t.total_events}),` Events insgesamt erfasst`]}),t.oldest_event_at&&(0,W.jsxs)(`p`,{children:[`Aeltester Eintrag: `,new Date(t.oldest_event_at).toLocaleDateString(`de-DE`)]}),t.by_type?.length>0&&(0,W.jsxs)(`details`,{className:`mt-2`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer text-[11px] text-muted/60`,children:[`Verteilung nach Event-Typ (`,t.by_type.length,`)`]}),(0,W.jsx)(`ul`,{className:`mt-1 space-y-0.5 text-[11px]`,children:t.by_type.map(e=>(0,W.jsxs)(`li`,{className:`font-mono`,children:[e.type,`: `,e.count]},e.type))})]})]}),t.total_events>0&&(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:l,disabled:a,children:`Alle Lern-Daten loeschen`})]})]})}function ra({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1);async function l(){try{n(await V(`/api/telemetry/settings`))}catch(t){e(`Telemetrie-Settings laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{l()},[]);async function u(){o(!0);try{i(await V(`/api/telemetry/preview`)),c(!0)}catch(t){e(`Vorschau laden: ${t.message}`,`danger`)}finally{o(!1)}}async function d(t){let n=t.target.checked;o(!0);try{await U(`/api/telemetry/settings`,{enabled:n}),await l(),e(n?`Telemetrie-Sharing aktiviert. Du wirst nur wochenweise gefragt.`:`Telemetrie-Sharing deaktiviert. Es geht nichts raus.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}async function f(t){let n=parseInt(t.target.value,10);o(!0);try{await U(`/api/telemetry/settings`,{interval_days:n}),await l(),e(n===0?`Auto-Trigger deaktiviert`:`Intervall: alle ${n} Tage`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}function p(){if(!r)return;let e=`mailto:${encodeURIComponent(r.recipient)}?subject=${encodeURIComponent(r.mail.subject)}&body=${encodeURIComponent(r.mail.body)}`;window.open(e,`_blank`),H(`/api/telemetry/mark-shared`,{}).then(()=>l()).catch(()=>{})}if(!t)return null;let m=r?.trigger||{};return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Telemetrie-Sharing (optional)`,description:`Hilf das Lern-System fuer alle PBP-Nutzer zu verbessern, indem du anonymisierte Erkenntnisse an ${t.recipient} schickst — wochenweise (nicht taeglich), opt-in, jederzeit abschaltbar.`}),(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!t.enabled,onChange:d,disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Telemetrie-Sharing aktiv`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:[`Wenn aktiv: PBP zeigt dir `,(0,W.jsx)(`strong`,{children:`wochenweise`}),` (nicht taeglich) eine Vorschau, was geteilt werden koennte. Du entscheidest jedes Mal selbst, ob du die Mail tatsaechlich abschickst.`]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[(0,W.jsx)(`strong`,{children:`Was wird geteilt:`}),` nur signifikante Insights (≥ 5x beobachtet ODER score ≥ 0.8), aggregierte Zahlen, anonymisierte Workflow-Stats. `,(0,W.jsx)(`strong`,{children:`Was NICHT:`}),`Profildaten, Job-Titel, Firmen, Anschreiben, Mails.`]})]})]}),t.enabled&&(0,W.jsxs)(`div`,{className:`glass-card p-3 border-sky/15 border space-y-2`,children:[(0,W.jsxs)(`label`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(`span`,{className:`text-sm text-ink`,children:`Frage mich…`}),(0,W.jsxs)(Xn,{value:String(t.interval_days),onChange:f,disabled:a,children:[(0,W.jsx)(`option`,{value:`0`,children:`Nie automatisch (nur manuell)`}),(0,W.jsx)(`option`,{value:`7`,children:`Wochenweise (Standard)`}),(0,W.jsx)(`option`,{value:`14`,children:`Alle 2 Wochen`}),(0,W.jsx)(`option`,{value:`30`,children:`Monatlich`})]})]}),t.last_share_at&&(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Letzter Share: `,new Date(t.last_share_at).toLocaleString(`de-DE`)]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:u,disabled:a,children:`Jetzt Vorschau anzeigen`}),m.due===!1&&m.reason&&(0,W.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:m.reason})]}),s&&r&&(0,W.jsxs)(`div`,{className:`glass-card p-3 border-teal/20 border space-y-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Vorschau-Mail`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>c(!1),className:`text-[11px] text-muted/40 hover:text-ink`,children:`schliessen`})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Empfaenger: `,(0,W.jsx)(`span`,{className:`font-mono text-ink`,children:r.recipient})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Betreff: `,(0,W.jsx)(`span`,{className:`text-ink`,children:r.mail.subject})]}),(0,W.jsx)(`pre`,{className:`text-[11px] font-mono text-muted/80 bg-black/20 p-2 rounded max-h-64 overflow-auto whitespace-pre-wrap`,children:r.mail.body}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(K,{size:`sm`,onClick:p,children:`In Mail-Client oeffnen`}),(0,W.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:`Du kannst die Mail noch bearbeiten oder verwerfen — nichts geht automatisch raus.`})]})]})]})]})}function ia({sources:e,onToggle:t,pushToast:n}){let[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1);if((0,w.useEffect)(()=>{let e=!1;return V(`/api/profile/recommended-sources`).then(t=>{e||i(t)}).catch(()=>{}),()=>{e=!0}},[]),!r||r.type===`mixed`&&r.confidence<.5)return null;let l=r.recommended||[],u=new Map((e||[]).map(e=>[e.key,e])),d=new Set((e||[]).filter(e=>e.active).map(e=>e.key)),f=l.filter(e=>!d.has(e));async function p(){o(!0);let e=0;for(let n of f){let r=u.get(n);if(r)try{await t(r,!0),e+=1}catch{}}n(e>0?`${e} Quelle${e===1?``:`n`} aktiviert.`:`Bereits alles aktiv.`,`success`),o(!1)}return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`button`,{type:`button`,onClick:()=>c(!s),className:`w-full flex items-center justify-between`,children:[(0,W.jsxs)(`div`,{className:`text-left`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Empfohlene Quellen fuer dein Profil`}),(0,W.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[r.label,f.length>0&&(0,W.jsxs)(`span`,{className:`ml-2 text-amber/80`,children:[`· `,f.length,` noch nicht aktiv`]})]})]}),(0,W.jsx)(`span`,{className:`text-muted/40 text-xs`,children:s?`▼`:`▲`})]}),!s&&(0,W.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,W.jsx)(`p`,{className:`text-[12px] text-muted/70`,children:r.rationale}),r.reasons?.length>0&&(0,W.jsxs)(`details`,{children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/50`,children:`Wie PBP das erkannt hat`}),(0,W.jsx)(`ul`,{className:`mt-1.5 ml-4 list-disc text-[11px] text-muted/60`,children:r.reasons.map((e,t)=>(0,W.jsx)(`li`,{children:e},t))})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:[`Empfohlen (`,l.length,`)`]}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:l.map(e=>{let t=d.has(e);return(0,W.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[11px] ${t?`bg-teal/15 border-teal/30 text-teal`:`bg-amber/[0.04] border-amber/20 text-amber/80`}`,children:[t?`✓`:`+`,e]},e)})})]}),f.length>0&&(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsxs)(K,{onClick:p,disabled:a,size:`sm`,children:[f.length,` fehlende empfohlene Quelle`,f.length===1?``:`n`,` aktivieren`]}),(0,W.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:`Du kannst jede Quelle einzeln auch wieder abschalten.`})]})]})]})}function aa({pushToast:e}){let[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(!1);async function a(){try{n((await V(`/api/scraper-health`))?.scrapers||[])}catch{}}(0,w.useEffect)(()=>{a()},[]);function o(e){return e.is_active?e.consecutive_failures>=3?`warn`:e.consecutive_silent>=2?`silent`:e.total_runs>0&&e.total_successes/e.total_runs>=.7?`ok`:e.total_runs>0?`warn`:`unknown`:e.reactivate_at?`probing`:`off`}let s={ok:{color:`bg-teal/80`,label:`OK`},warn:{color:`bg-amber/80`,label:`Warnung`},silent:{color:`bg-amber/80`,label:`Stumm`},probing:{color:`bg-amber/40`,label:`Probe geplant`},off:{color:`bg-coral/70`,label:`Aus`},unknown:{color:`bg-muted/40`,label:`Unbekannt`}};function c(e){if(!e)return`—`;try{let t=new Date(e),n=new Date,r=Math.round((t-n)/36e5);return Math.abs(r)<1?`in <1h`:r<0?`vor ${Math.abs(r)}h`:r<24?`in ${r}h`:`in ${Math.round(r/24)}d`}catch{return e.slice(0,10)}}async function l(t){i(!0);try{await H(`/api/scraper-health/${t}/probe-result`,{success:!0}),e(`${t} reaktiviert`,`success`),await a()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}async function u(t){i(!0);try{await H(`/api/scraper-health/${t}/toggle`,{active:!1}),e(`${t} deaktiviert`,`success`),await a()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return t.length===0?null:(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Quellen-Health`,description:`Erfolgsquote pro Scraper, Auto-Reactivate-Plan und Reaktivieren-Buttons.`}),(0,W.jsx)(`div`,{className:`space-y-2`,children:t.map(e=>{let t=s[o(e)],n=e.total_runs>0?Math.round(e.total_successes/e.total_runs*100):0;return(0,W.jsxs)(`div`,{className:`glass-card p-3 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,W.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full ${t.color} shrink-0`}),(0,W.jsx)(`span`,{className:`font-medium text-ink truncate`,children:e.scraper_name}),(0,W.jsxs)(`span`,{className:`text-[10px] text-muted/50`,children:[`[`,t.label,`]`]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] text-muted/60 shrink-0`,children:[(0,W.jsxs)(`span`,{children:[n,`% Quote`]}),(0,W.jsx)(`span`,{children:`·`}),(0,W.jsxs)(`span`,{children:[e.total_successes,`/`,e.total_runs]})]})]}),(0,W.jsxs)(`div`,{className:`mt-1.5 grid grid-cols-2 gap-2 text-[10px] text-muted/50`,children:[(0,W.jsxs)(`div`,{children:[`Letzter Lauf: `,e.last_run?new Date(e.last_run).toLocaleString(`de-DE`):`—`]}),e.consecutive_failures>0&&(0,W.jsxs)(`div`,{className:`text-coral/80`,children:[e.consecutive_failures,` Fehler in Folge`]}),e.consecutive_silent>0&&(0,W.jsxs)(`div`,{className:`text-amber/80`,children:[e.consecutive_silent,` Mal stumm`]}),e.reactivate_at&&(0,W.jsxs)(`div`,{className:`text-amber/80`,children:[`Probe-Run `,c(e.reactivate_at),` (Versuch `,e.reactivate_attempt,`)`]}),e.retry_after&&(0,W.jsxs)(`div`,{className:`text-coral/80`,children:[`Retry-After `,c(e.retry_after)]})]}),(0,W.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[!e.is_active&&(0,W.jsx)(K,{size:`xs`,variant:`secondary`,onClick:()=>l(e.scraper_name),disabled:r,children:`Jetzt reaktivieren`}),e.is_active&&(0,W.jsx)(K,{size:`xs`,variant:`secondary`,onClick:()=>u(e.scraper_name),disabled:r,children:`Deaktivieren`})]})]},e.scraper_name)})})]})}function oa({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(``),[a,o]=(0,w.useState)(!1);async function s(){try{let e=await V(`/api/settings/pbp-start-date`);n(e),i(e.override||``)}catch(t){e(`PBP-Start-Datum laden fehlgeschlagen: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{s()},[]);async function c(){o(!0);try{await U(`/api/settings/pbp-start-date`,{date:r||``}),await s(),e(r?`PBP-Start-Datum gesetzt`:`Auf Auto-Detect zurueckgesetzt`,`success`)}catch(t){e(`Speichern fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}return t?(0,W.jsxs)(`div`,{className:`mt-5 glass-card p-3 border-sky/15 border`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink mb-1`,children:`PBP-Nutzung gestartet am`}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/70 mb-3`,children:[`Steuert, ab welchem Datum die Bewerbungen im Bericht als „mit PBP erfasst" gelten. Daten davor werden im PDF grau markiert (nachtraeglich erfasst, ggf. unvollstaendig). Default: Auto-Detect aus dem ersten Bewerbungs-Ereignis (`,(0,W.jsx)(`strong`,{className:`text-ink`,children:t.auto_detect||`noch keine Daten`}),`).`]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`input`,{type:`date`,value:r,onChange:e=>i(e.target.value),disabled:a,className:`rounded-lg border border-white/8 bg-white/[0.03] px-3 py-1.5 text-[13px] text-ink`}),(0,W.jsx)(K,{size:`sm`,onClick:c,disabled:a,children:a?`...`:`Speichern`}),t.override&&(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:()=>{i(``),c()},disabled:a,children:`Auf Auto-Detect zuruecksetzen`})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[`Aktuell wirksam: `,(0,W.jsx)(`strong`,{className:`text-ink`,children:t.effective||`—`}),t.override?` (User-Override)`:` (Auto-Detect)`]})]}):null}var sa=[{v:0,l:`Aus`},{v:1,l:`Taeglich`},{v:3,l:`Alle 3 Tage`},{v:7,l:`Woechentlich`},{v:14,l:`Alle 2 Wochen`},{v:30,l:`Monatlich`}];function ca({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1);async function a(){try{n(await V(`/api/automatik/settings`))}catch{}}(0,w.useEffect)(()=>{a()},[]);async function o(t,n){i(!0);try{await U(`/api/automatik/settings`,{[t]:Number(n)}),await a(),e(`Automatik gespeichert.`,`success`)}catch(t){e(t?.message||`Speichern fehlgeschlagen.`,`danger`)}finally{i(!1)}}async function s(t){i(!0);try{let n=await H(`/api/automatik/run-now`,{kind:t});await a();let r=`Angestossen.`;t===`lernen`?r=`Lern-Lauf angestossen.`:n.status===`gestartet`?r=`Interne Jobsuche gestartet.`:n.status===`keine_internen_quellen`?r=`Keine internen Quellen aktiv — nichts zu suchen.`:n.status===`laeuft_bereits`&&(r=`Eine Jobsuche laeuft bereits.`),e(r,`success`)}catch(t){e(t?.message||`Lauf fehlgeschlagen.`,`danger`)}finally{i(!1)}}if(!t)return null;let c=e=>{if(!e)return`noch nie`;if(e===`faellig`)return`faellig`;try{return new Date(e).toLocaleString(`de-DE`)}catch{return e}},l=(e,n,i,a)=>(0,W.jsxs)(`div`,{className:`glass-card p-4 space-y-2`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:n}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/60`,children:i}),(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(Xn,{value:String(t[e].intervall_tage),onChange:t=>o(`${e}_intervall_tage`,t.target.value),disabled:r,children:sa.map(e=>(0,W.jsx)(`option`,{value:e.v,children:e.l},e.v))}),(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:()=>s(e),disabled:r,children:a})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Letzter Lauf: `,c(t[e].letzter_lauf),` · Naechster: `,c(t[e].naechster_lauf)]})]});return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Automatik im Hintergrund`,description:`PBP kann die interne Jobsuche und das Lernen aus deinem Verhalten/Dokumenten selbststaendig nach Zeitplan ausfuehren — solange Claude Desktop laeuft.`}),(0,W.jsxs)(`div`,{className:`space-y-4`,children:[l(`jobsuche`,`Interne Jobsuche`,`Nur die internen Scraper-Quellen. Login-/Browser-Quellen (LinkedIn, StepStone, XING, ...) laufen weiter manuell ueber die Chrome-Extension.`,`Jetzt suchen`),l(`lernen`,`Ollama lernt aus Verhalten + Dokumenten`,`Analysiert regelmaessig deine Aktivitaet und Dokumente, damit Vorschlaege treffsicherer werden. Greift nur, wenn der Lern-Modus (Datenschutz-Tab) an ist.`,`Jetzt lernen`),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:t.hinweis})]})]})}function la({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(null);async function l(){try{n(await V(`/api/auto-actions/status`))}catch(t){e(`Status laden fehlgeschlagen: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{l()},[]);async function u(t,n){i(!0);try{await U(`/api/auto-actions/settings`,{[t]:n}),await l(),e(`Gespeichert`,`success`)}catch(t){e(`Speichern fehlgeschlagen: ${t.message}`,`danger`)}finally{i(!1)}}async function d(){o(!0);try{let t=await H(`/api/auto-actions/run`,{});c(t),await l();let n=t.expire?.expired_count||0,r=t.followup_reconciler?.created_count||0;e(n+r===0?`Auto-Aktionen liefen — nichts zu tun.`:`${n} abgelaufen, ${r} neue Follow-ups`,`success`)}catch(t){e(`Lauf fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}if(!t)return(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade...`})});let f=t.settings;return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Automatik fuer Bewerbungs-Lifecycle`,description:`PBP setzt Bewerbungen ohne Aktivitaet automatisch auf 'abgelaufen' und legt fehlende Nachfass-Erinnerungen an.`}),(0,W.jsxs)(`div`,{className:`space-y-5`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Auto-Ablauf (Status -> abgelaufen)`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Bewerbungen werden auf `,(0,W.jsx)(`strong`,{children:`abgelaufen`}),` gesetzt wenn seit der letzten Aktivitaet die folgende Zahl an Tagen ohne Antwort verstrichen ist. Sie sind dann nicht weg — falls doch noch was kommt, kannst du sie jederzeit zurueckholen.`]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsx)(Y,{label:`Status 'beworben' nach (Tage)`,children:(0,W.jsx)(`input`,{type:`number`,min:7,max:365,defaultValue:f.expire_default_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.expire_default_days&&u(`expire_default_days`,t)},disabled:r,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})}),(0,W.jsx)(Y,{label:`Status 'eingangsbestaetigung' nach (Tage)`,children:(0,W.jsx)(`input`,{type:`number`,min:7,max:180,defaultValue:f.expire_eingangsbestaetigung_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.expire_eingangsbestaetigung_days&&u(`expire_eingangsbestaetigung_days`,t)},disabled:r,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Auto-Followup (Nachfass-Erinnerungen)`}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/60`,children:`Wenn eine aktive Bewerbung keinen offenen Nachfass-Follow-up hat, wird automatisch einer angelegt — N Tage nach der letzten Aktivitaet. Der Faden reisst nicht mehr ab wenn du den ersten Follow-up als erledigt markierst.`}),(0,W.jsx)(Y,{label:`Nachfass-Erinnerung nach (Tage seit letzter Aktivitaet)`,children:(0,W.jsx)(`input`,{type:`number`,min:1,max:60,defaultValue:f.followup_default_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.followup_default_days&&u(`followup_default_days`,t)},disabled:r,className:`w-full max-w-xs rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})})]}),(0,W.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Sofort-Lauf`}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Letzter Lauf: `,(0,W.jsx)(`strong`,{children:t.last_run_at||`noch nie`})]}),(0,W.jsx)(K,{size:`sm`,onClick:d,disabled:a,children:a?`Laeuft...`:`Jetzt durchlaufen`}),s&&(0,W.jsx)(`div`,{className:`text-[12px] text-muted/60 space-y-1`,children:(0,W.jsxs)(`p`,{children:[`Letzter Lauf: `,(0,W.jsx)(`strong`,{className:`text-ink`,children:s.expire?.expired_count||0}),` abgelaufen, `,(0,W.jsx)(`strong`,{className:`text-ink`,children:s.followup_reconciler?.created_count||0}),` Follow-ups neu angelegt.`]})})]})]})]})}var ua=[{id:`jobsuche`,label:`Jobsuche via Claude`,desc:`Erlaubt Claude, jobsuche_starten() aufzurufen. Dashboard-Button bleibt unabhaengig nutzbar.`},{id:`dokumentenanalyse`,label:`Dokumentenanalyse`,desc:`Profil-Daten aus hochgeladenen Lebenslaeufen, Zeugnissen und Anschreiben extrahieren.`},{id:`stellenanalyse`,label:`Stellenanalyse / Fit-Bewertung`,desc:`Fit-Analyse, Skill-Gap-Analyse und Score-Verfeinerung fuer einzelne Stellen.`},{id:`bewerbungserstellung`,label:`Bewerbungs-Erstellung`,desc:`Angepasste Lebenslaeufe, Fachprofile und Anschreiben generieren.`},{id:`coaching`,label:`Interview- und Verhandlungs-Coaching`,desc:`Interview-Vorbereitung, Gehaltsverhandlung, Ablehnungs-Analyse.`},{id:`ersterfassung`,label:`Profil-Ersterfassung via Claude`,desc:`Gefuehrtes Profil-Interview. Profil bleibt manuell pflegbar wenn aus.`},{id:`guidance`,label:`KI-Hinweise im Dashboard`,desc:`Hinweise und Empfehlungen die explizit auf Claude verweisen.`}];function da({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1);async function a(){try{n((await V(`/api/settings/ki-features`))?.features||null)}catch(t){e(`KI-Steuerung laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{a()},[]);async function o(t,r){i(!0);try{let i=await U(`/api/settings/ki-features`,{features:{[t]:r}});i?.features&&n(i.features),e(r?`${t} aktiviert.`:`${t} deaktiviert.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`),await a()}finally{i(!1)}}if(!t)return(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade KI-Steuerung...`})});let s=!t.master;return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`KI-Unterstuetzung (Claude)`,description:`Welche KI-Funktionen Claude in PBP nutzen darf. Default: alles aktiv. Aenderungen wirken sofort.`}),(0,W.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15 mb-4`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!t.master,onChange:e=>o(`master`,e.target.checked),disabled:r,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Master-Schalter`}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:`Wenn aus: Claude blockt ALLE KI-Operationen mit einem Hinweis, wo du das wieder anschaltest. Manuelle Tools (Profil pflegen, Bewerbungen tracken, Standard-CV exportieren) und der Dashboard-Button "Jetzt suchen" bleiben unabhaengig nutzbar.`})]})]}),(0,W.jsx)(`div`,{className:`space-y-2 ${s?`opacity-50`:``}`,children:ua.map(e=>(0,W.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!t[e.id],onChange:t=>o(e.id,t.target.checked),disabled:r||s,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{className:`flex-1`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:e.label}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:e.desc})]})]},e.id))}),s&&(0,W.jsx)(`p`,{className:`mt-3 text-[12px] text-amber/80`,children:`Master-Schalter ist aus — die einzelnen Toggles sind ohne Wirkung, bis der Master wieder aktiv ist.`})]})}function fa(){let[e,t]=(0,w.useState)(null);if((0,w.useEffect)(()=>{V(`/api/llm/accuracy`).then(t).catch(()=>{})},[]),!e||!e.auto_aussortiert_gesamt)return null;let n=e.genauigkeit_prozent,r=n==null?`text-muted/50`:n>=85?`text-teal`:n>=65?`text-amber`:`text-coral`;return(0,W.jsxs)(`div`,{className:`glass-card p-3 mb-4 border-teal/15`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide mb-2`,children:`Ollama-Leistung (Auto-Aussortierung)`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 text-center`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-lg font-bold text-ink`,children:e.auto_aussortiert_gesamt}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`automatisch`,(0,W.jsx)(`br`,{}),`aussortiert`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-lg font-bold text-amber`,children:e.reaktiviert}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`von dir`,(0,W.jsx)(`br`,{}),`zurueckgeholt`]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-lg font-bold ${r}`,children:n==null?`—`:`${n}%`}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`Treffer-`,(0,W.jsx)(`br`,{}),`genauigkeit`]})]})]}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:e.datenbasis_ausreichend?`Genauigkeit = Anteil der Auto-Entscheidungen, die du NICHT korrigiert hast. Je mehr du selbst aussortierst, desto besser lernt Ollama (Few-Shot).`:`Genauigkeit wird ab 5 Auto-Entscheidungen angezeigt — noch zu wenig Datenbasis.`})]})}function pa({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(null),l=(0,w.useEffectEvent)(async(t=!1)=>{try{n(await V(t?`/api/llm/status?refresh=1`:`/api/llm/status`))}catch(t){e(`Lokale-KI-Status: ${t.message}`,`danger`)}});if((0,w.useEffect)(()=>{l(!0),V(`/api/llm/recommended-models`).then(e=>i(e?.models||[])).catch(()=>{})},[]),!t)return(0,W.jsx)(q,{className:`rounded-2xl`,children:(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade Lokale-KI-Status...`})});async function u(t){try{await U(`/api/llm/state`,{state:t}),await l(),e(`Status gesetzt: ${t}`,`success`)}catch(t){e(`Konnte Status nicht setzen: ${t.message}`,`danger`)}}async function d(t){try{await U(`/api/llm/model`,{model:t}),await l(),e(`Modell gesetzt: ${t}`,`success`)}catch(t){e(`Konnte Modell nicht setzen: ${t.message}`,`danger`)}}async function f(t){o(!0),c(t);try{e(`Lade ${t}... das kann einige Minuten dauern.`,`amber`,{duration:1e4});let n=await H(`/api/llm/pull`,{model:t});n?.status===`error`?e(`Download fehlgeschlagen: ${n.error}`,`danger`):(e(`${t} ist installiert.`,`success`),await d(t),await u(`active`))}catch(t){e(`Download fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1),c(null),await l()}}return t.ui_state===`not_installed`?(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI`}),(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Status: Nicht erreichbar`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-4 mb-4 border-sky/20`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Vielleicht nur gestoppt?`}),(0,W.jsx)(`p`,{className:`text-sm text-muted/80 mb-3`,children:`Wenn Ollama vorher schonmal lief (z.B. nach Reboot oder Taskmanager-Stop), kann PBP versuchen es erneut zu starten — kein manueller Start in der Konsole noetig.`}),(0,W.jsx)(K,{type:`button`,size:`sm`,onClick:async()=>{e(`Ollama wird gestartet...`,`neutral`,{duration:2e3});try{let t=await H(`/api/llm/start`,{});if(t.status===`already_running`){e(`Ollama lief bereits — Status wird neu geladen.`,`success`),await l();return}if(t.status===`starting`){e(`Ollama startet — Status wird in 10-30s aktualisiert.`,`success`,{duration:4e3});let t=0,n=setInterval(async()=>{t+=1,await l(),(await V(`/api/llm/status`))?.ollama_available?(clearInterval(n),e(`Ollama ist verbunden.`,`success`)):t>=15&&(clearInterval(n),e(`Status nach 30s noch nicht verbunden — pruefe Logs.`,`amber`))},2e3)}}catch(t){let n=t?.message||String(t);n.includes(`not_installed`)||n.includes(`404`)?e(`Ollama-Binary nicht gefunden — bitte herunterladen.`,`danger`,{duration:5e3}):e(`Start fehlgeschlagen: ${n}`,`danger`)}},children:`Ollama starten`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-4 mb-4 border-coral/15`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Noch nicht installiert?`}),(0,W.jsx)(`p`,{className:`text-sm text-muted/80 mb-3`,children:`Eine lokale KI auf deinem Rechner uebernimmt Routine-Aufgaben fuer PBP — z.B. Dokumente klassifizieren, Skills extrahieren, Stellen vorsortieren.`}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 text-sm`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-medium text-teal mb-1.5`,children:`✅ Vorteile`}),(0,W.jsxs)(`ul`,{className:`space-y-0.5 text-[13px] text-muted/70`,children:[(0,W.jsx)(`li`,{children:`Spart Claude-Tokens UND ist kostenlos`}),(0,W.jsx)(`li`,{children:`Funktioniert auch ohne Internet`}),(0,W.jsx)(`li`,{children:`Daten verlassen das Geraet nie`}),(0,W.jsx)(`li`,{children:`Schneller bei Standard-Aufgaben`})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`font-medium text-amber mb-1.5`,children:`⚠️ Nachteile`}),(0,W.jsxs)(`ul`,{className:`space-y-0.5 text-[13px] text-muted/70`,children:[(0,W.jsx)(`li`,{children:`Einmalig 4–5 GB Modell herunterladen`}),(0,W.jsx)(`li`,{children:`Braucht 8–16 GB freien RAM`}),(0,W.jsx)(`li`,{children:`Kreatives bleibt bei Claude`})]})]})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-4 mb-4`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Voraussetzung: Ollama`}),(0,W.jsx)(`p`,{className:`text-sm text-muted/80 mb-2`,children:`Du brauchst Ollama auf deinem Rechner — der Sidecar, der die lokale KI laeuft.`}),(0,W.jsx)(`a`,{href:`https://ollama.com/download`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 text-sky text-sm hover:underline`,children:`Ollama herunterladen → ollama.com/download`}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/60 mt-2`,children:`Nach der Installation startet Ollama automatisch. PBP erkennt es dann hier und du kannst sie kuenftig auch ueber den "Ollama starten"-Button oben re-starten.`})]}),(0,W.jsx)(`button`,{type:`button`,onClick:l,className:`px-3 py-1.5 rounded-lg bg-white/[0.04] text-sm text-ink hover:bg-white/[0.08]`,children:`Status neu pruefen`}),t.error&&(0,W.jsxs)(`p`,{className:`mt-3 text-[11px] text-coral/70 font-mono`,children:[`Erkennungs-Fehler: `,t.error]})]}):t.ui_state===`no_model`?(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI — Modell auswaehlen`}),(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Ollama erkannt. Jetzt ein Modell laden.`})]}),(0,W.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`p`,{className:`font-medium text-ink`,children:e.name}),e.recommended&&(0,W.jsx)(`span`,{className:`rounded bg-teal/15 px-1.5 py-0.5 text-[10px] font-bold text-teal`,children:`EMPFOHLEN`})]}),(0,W.jsxs)(`p`,{className:`text-[12px] text-muted/70`,children:[e.size_gb,` GB · braucht `,e.ram_gb,` GB RAM · `,e.description]})]}),(0,W.jsx)(`button`,{type:`button`,disabled:a,onClick:()=>f(e.id),className:`shrink-0 px-3 py-1.5 rounded-lg bg-sky/15 text-sky text-sm font-medium hover:bg-sky/25 disabled:opacity-50`,children:a&&s===e.id?`Laedt...`:`${e.size_gb} GB laden`})]},e.id))}),(0,W.jsx)(`p`,{className:`mt-3 text-[11px] text-muted/60`,children:`Empfehlung: Standard (Qwen 2.5 7B) — gutes Deutsch, vernuenftiger Speicher-Bedarf. Du kannst spaeter jederzeit das Modell wechseln.`})]}):(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(`div`,{className:`mb-4 flex items-center justify-between`,children:(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Modell: `,(0,W.jsx)(`span`,{className:`font-mono`,children:t.selected_model||`—`}),` · `,`Status: `,(0,W.jsx)(`span`,{className:t.ui_state===`active`?`text-teal`:t.ui_state===`paused`?`text-amber`:`text-muted/50`,children:t.ui_state})]})]})}),(0,W.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-3 mb-4`,children:[{value:`active`,label:`Aktiv`,desc:`PBP nutzt das lokale Modell wo moeglich`},{value:`paused`,label:`Pausiert`,desc:`Wie 'Aus' — alle Tasks gehen an Claude`},{value:`off`,label:`Aus`,desc:`Wie nicht installiert`}].map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>u(e.value),className:`glass-card p-3 text-left rounded-lg transition ${t.ui_state===e.value?`border-teal/40 bg-teal/[0.06]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:e.label}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60`,children:e.desc})]},e.value))}),(0,W.jsx)(ha,{status:t,recommended:r,onSelect:d,onPull:f,pulling:a,pullModel:s}),(0,W.jsxs)(`div`,{className:`glass-card p-3 mb-4 border-sky/10`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide mb-2`,children:`Was laeuft lokal?`}),(0,W.jsxs)(`ul`,{className:`text-[12px] text-muted/80 space-y-1 list-disc list-inside`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Doku-Klassifikation`}),` — neue Uploads werden eingeordnet (Lebenslauf, Anschreiben, Mail, ...)`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Skill-Extraktion`}),` — Skills aus Lebenslauf-Text ziehen`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Stellen-Profil-Match`})," — `stellen_auto_aussortieren` filtert profilbasiert"]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Mail-Klassifikation`}),` — eingehende Mails werden kategorisiert`]})]}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:`Kreatives (Anschreiben, Coaching) bleibt bei Claude.`})]}),(0,W.jsx)(fa,{}),(0,W.jsx)(ga,{}),(0,W.jsx)(`div`,{className:`border-t border-white/5 pt-3 mt-3`,children:(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/60`,children:[`Endpoint: `,(0,W.jsx)(`span`,{className:`font-mono`,children:t.ollama_endpoint}),` · `,t.available_models?.length||0,` Modell(e) installiert`]})}),(0,W.jsx)(ma,{pushToast:e})]})}function ma({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(!1);async function s(){try{let[e,t]=await Promise.all([V(`/api/elwosa/settings`),V(`/api/elwosa/pending-lines`)]);n(e),i(t?.pending||[])}catch{}}(0,w.useEffect)(()=>{s()},[]);async function c(t){o(!0);try{n(await U(`/api/elwosa/settings`,t));let e=l(t);if(e)try{await H(`/api/elwosa/user-action`,{action:`settings_change`,target:e,payload:u(e,t)})}catch{}}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}function l(e){for(let t of[`tonfall_modus`,`frequency`,`comment_user_actions`,`triggers_disabled`,`cooldown_seconds`,`enabled`,`paused_until`])if(t in e&&e[t]!==void 0)return t;return null}function u(e,n){if(e===`triggers_disabled`){let e=t?.triggers_disabled||[],r=n.triggers_disabled||[];return{value:r,added:r.filter(t=>!e.includes(t)),removed:e.filter(e=>!r.includes(e))}}return{value:n[e]}}async function d(t){try{await H(`/api/elwosa/pending-lines/${t}/approve`,{}),e(`Linie aktiviert`,`success`),s()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function f(t){try{await Dt(`/api/elwosa/pending-lines/${t}`),e(`Linie verworfen`,`success`),s()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}return t?(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-4 mt-4`,children:[(0,W.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,W.jsx)(`span`,{className:`flex h-6 w-6 items-center justify-center rounded-full bg-teal/15 text-[11px] font-semibold text-teal`,children:`E`}),(0,W.jsx)(`h3`,{className:`text-sm font-semibold text-ink`,children:`Elwosa`})]}),(0,W.jsx)(`p`,{className:`mb-3 text-[12px] text-muted/70`,children:`Live-Statusanzeige der lokalen AI in der Sidebar. Kommentiert was im Hintergrund passiert, gibt gelegentlich Tipps zu Claude und PBP.`}),(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3 mb-3`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!t.enabled,onChange:e=>c({enabled:e.target.checked}),disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,W.jsx)(`span`,{className:`text-sm text-ink`,children:`Elwosa aktiv (wenn lokale AI laeuft)`})]}),t.enabled&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Frequenz (fuer Idle/Welt/Tipp — Status-Linien sind unbegrenzt)`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:[{id:`ruhig`,label:`Ruhig (3/Tag)`},{id:`standard`,label:`Standard (8)`},{id:`aktiv`,label:`Aktiv (15)`},{id:`unbegrenzt`,label:`Unbegrenzt`}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>c({frequency:e.id}),disabled:a,className:`px-3 py-1 text-[11px] rounded-md border ${t.frequency===e.id?`border-teal bg-teal/15 text-teal`:`border-white/10 text-muted hover:border-white/30`}`,children:e.label},e.id))})]}),(0,W.jsxs)(`details`,{className:`border-t border-white/5 pt-3`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/50 mb-2`,children:`Power-User-Optionen`}),(0,W.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:[`Cooldown zwischen Nachrichten (`,t.cooldown_seconds||90,`s)`]}),(0,W.jsx)(`input`,{type:`range`,min:10,max:300,step:10,value:t.cooldown_seconds||90,onChange:e=>c({cooldown_seconds:parseInt(e.target.value,10)}),disabled:a,className:`w-full`}),(0,W.jsx)(`p`,{className:`text-[10px] text-muted/50`,children:`Niedriger = schneller (10s minimum). Standard 90s.`})]}),(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!t.comment_user_actions,onChange:e=>c({comment_user_actions:e.target.checked}),disabled:a,className:`mt-0.5 h-3.5 w-3.5`}),(0,W.jsx)(`span`,{className:`text-[11px] text-muted`,children:`Auch manuelle User-Aktionen kommentieren (klicken, sortieren, oeffnen)`})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Trigger-Klassen ausschalten`}),(0,W.jsx)(`div`,{className:`space-y-1`,children:[{id:`idle`,label:`Idle (Stille-Linien)`},{id:`world`,label:`Welt-Bezug (Tageszeit, Feiertage)`},{id:`tip`,label:`Tipps & Tricks`},{id:`easter_egg`,label:`Easter Eggs`}].map(e=>{let n=(t.triggers_disabled||[]).includes(e.id);return(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:n,onChange:n=>{let r=t.triggers_disabled||[];c({triggers_disabled:n.target.checked?[...r,e.id]:r.filter(t=>t!==e.id)})},disabled:a,className:`h-3 w-3`}),(0,W.jsxs)(`span`,{className:`text-[11px] text-muted`,children:[e.label,` `,n&&(0,W.jsx)(`span`,{className:`text-coral/70`,children:`(aus)`})]})]},e.id)})})]})]})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Tonfall`}),(0,W.jsx)(`div`,{className:`flex gap-2 flex-wrap`,children:[{id:`standard`,label:`Standard`},{id:`sachlich`,label:`Sachlicher`},{id:`humorvoll`,label:`Mehr Humor`},{id:`minimal`,label:`Minimal (1/Tag)`}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>c({tonfall_modus:e.id}),disabled:a,className:`px-3 py-1 text-[11px] rounded-md border ${t.tonfall_modus===e.id?`border-teal bg-teal/15 text-teal`:`border-white/10 text-muted hover:border-white/30`}`,children:e.label},e.id))})]}),r.length>0&&(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-3`,children:[(0,W.jsxs)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-2`,children:[`Vorgeschlagene Linien (von Claude) — `,r.length]}),(0,W.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>(0,W.jsxs)(`div`,{className:`rounded-md border border-white/10 bg-white/[0.02] p-2 text-[11px]`,children:[(0,W.jsxs)(`p`,{className:`text-muted/85 italic`,children:[`„`,e.content,`"`]}),(0,W.jsxs)(`p`,{className:`mt-1 text-[9px] text-muted/40`,children:[e.cluster,` · `,e.trigger_kind]}),(0,W.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,W.jsx)(K,{size:`xs`,onClick:()=>d(e.id),children:`Akzeptieren`}),(0,W.jsx)(K,{size:`xs`,variant:`secondary`,onClick:()=>f(e.id),children:`Verwerfen`})]})]},e.id))})]}),t.paused_until&&new Date(t.paused_until)>new Date&&(0,W.jsxs)(`div`,{className:`rounded-md border border-amber/20 bg-amber/[0.04] p-2 text-[11px] text-amber/80`,children:[`Pausiert bis `,new Date(t.paused_until).toLocaleString(`de-DE`),`.`,` `,(0,W.jsx)(`button`,{type:`button`,onClick:()=>c({paused_until:``}),className:`underline hover:text-amber`,children:`Zurueckholen`})]})]})]}):null}function ha({status:e,recommended:t,onSelect:n,onPull:r,pulling:i,pullModel:a}){let o=e.models_detail||[],s=new Set(e.available_models||[]),c=(t||[]).filter(e=>!s.has(e.id));return(0,W.jsxs)(`div`,{className:`mb-4`,children:[(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60 mb-1.5`,children:`Installierte Modelle:`}),(0,W.jsxs)(`div`,{className:`space-y-1.5 mb-3`,children:[o.length===0&&e.available_models?.length>0&&e.available_models.map(t=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(t),className:`w-full glass-card p-2 flex items-center justify-between text-left ${e.selected_model===t?`border-sky/40 bg-sky/[0.05]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,W.jsx)(`span`,{className:`text-[13px] font-mono text-ink`,children:t}),e.selected_model===t&&(0,W.jsx)(`span`,{className:`text-[10px] font-bold text-sky uppercase`,children:`aktiv`})]},t)),o.map(t=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>n(t.name),className:`w-full glass-card p-2 flex items-center justify-between text-left ${e.selected_model===t.name?`border-sky/40 bg-sky/[0.05]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-[13px] font-mono text-ink`,children:t.name}),t.parameter_size&&(0,W.jsx)(`span`,{className:`ml-2 text-[10px] text-muted/50`,children:t.parameter_size})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,W.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:_a(t.size_bytes)}),e.selected_model===t.name&&(0,W.jsx)(`span`,{className:`text-[10px] font-bold text-sky uppercase`,children:`aktiv`})]})]},t.name))]}),c.length>0&&(0,W.jsxs)(`details`,{className:`glass-card p-2`,children:[(0,W.jsxs)(`summary`,{className:`text-[12px] cursor-pointer text-sky`,children:[`+ Weiteres Modell installieren (`,c.length,` Vorschlaege)`]}),(0,W.jsx)(`div`,{className:`space-y-1.5 mt-2`,children:c.map(e=>(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 rounded bg-white/[0.02]`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsxs)(`p`,{className:`text-[12px] font-medium text-ink`,children:[e.name,e.recommended&&(0,W.jsx)(`span`,{className:`ml-2 rounded bg-teal/15 px-1 py-0.5 text-[9px] font-bold text-teal`,children:`EMPFOHLEN`})]}),(0,W.jsxs)(`p`,{className:`text-[10px] text-muted/50`,children:[e.size_gb,` GB · braucht `,e.ram_gb,` GB RAM`]})]}),(0,W.jsx)(`button`,{type:`button`,disabled:i,onClick:()=>r(e.id),className:`shrink-0 px-2 py-1 rounded text-[11px] bg-sky/15 text-sky hover:bg-sky/25 disabled:opacity-50`,children:i&&a===e.id?`Laedt...`:`Laden`})]},e.id))})]})]})}function ga(){let{pushToast:e}=kt(),[t,n]=(0,w.useState)(!1),[r,i]=(0,w.useState)(null);async function a(){n(!0),i(null);try{i(await H(`/api/llm/test-connection`,{}))}catch(t){e(`Test fehlgeschlagen: ${t.message}`,`danger`)}finally{n(!1)}}return(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-3 mt-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,W.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide`,children:`Test-Verbindung`}),(0,W.jsx)(K,{size:`sm`,onClick:a,disabled:t,children:t?`Teste...`:`Jetzt testen`})]}),!r&&!t&&(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Schickt einen Klassifizierungs-Task an Ollama und misst die Antwortzeit.`}),r&&(0,W.jsxs)(`div`,{className:`space-y-2 text-[12px]`,children:[(0,W.jsxs)(`div`,{className:`grid gap-1`,children:[(0,W.jsxs)(`p`,{children:[`Ollama:`,` `,(0,W.jsx)(`span`,{className:r.ollama_available?`text-teal`:`text-coral`,children:r.ollama_available?`erreichbar`:`nicht erreichbar`})]}),(0,W.jsxs)(`p`,{children:[`Endpoint:`,` `,(0,W.jsx)(`span`,{className:`font-mono text-muted/70`,children:r.ollama_endpoint})]}),(0,W.jsxs)(`p`,{children:[`Installierte Modelle:`,` `,(0,W.jsx)(`span`,{className:`text-ink`,children:(r.available_models||[]).join(`, `)||`—`})]}),(0,W.jsxs)(`p`,{children:[`Aktives Modell:`,` `,(0,W.jsx)(`span`,{className:`font-mono text-sky`,children:r.selected_model||`—`})]}),(0,W.jsxs)(`p`,{children:[`State:`,` `,(0,W.jsx)(`span`,{className:r.user_state===`active`?`text-teal`:r.user_state===`paused`?`text-amber`:`text-muted/50`,children:r.user_state})]})]}),r.test_roundtrip?.skipped?(0,W.jsxs)(`div`,{className:`glass-card p-2 text-amber`,children:[`⚠ Test-Roundtrip skipped: `,r.test_roundtrip.reason]}):r.test_roundtrip?.success?(0,W.jsxs)(`div`,{className:`glass-card p-2 text-teal`,children:[`✓ Test-Roundtrip erfolgreich — Backend:`,` `,(0,W.jsx)(`strong`,{children:r.test_roundtrip.backend}),`, Latenz:`,` `,(0,W.jsxs)(`strong`,{children:[r.test_roundtrip.duration_ms,` ms`]}),r.test_roundtrip.result_payload?.category&&(0,W.jsxs)(W.Fragment,{children:[` · `,`Klassifikation:`,` `,(0,W.jsx)(`strong`,{children:r.test_roundtrip.result_payload.category})]})]}):r.test_roundtrip?.error?(0,W.jsxs)(`div`,{className:`glass-card p-2 text-coral`,children:[`✗ Test-Roundtrip fehlgeschlagen: `,r.test_roundtrip.error]}):null]})]})}function _a(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`:`0 B`}function va(){let{chrome:e,reloadKey:t,refreshChrome:n,pushToast:r,intent:i,clearIntent:a}=kt(),[o,s]=(0,w.useState)(!0),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)(``),[m,h]=(0,w.useState)({}),[g,_]=(0,w.useState)(!0),[v,y]=(0,w.useState)(null),[b,x]=(0,w.useState)(null),[S,C]=(0,w.useState)(``),[T,E]=(0,w.useState)(!1),[O,k]=(0,w.useState)(``),[A,j]=(0,w.useState)(`quellen`),[N,P]=(0,w.useState)({followup_default_days:7,followup_interview_delay_days:14}),[ee,F]=(0,w.useState)(!1),[I,te]=(0,w.useState)({arbeitsamt_block_enabled:!1,ba_vermittlungsnummer:``,ba_aktenzeichen:``,ba_berater_name:``,ba_berater_stelle:``,berater_kommentar_block:!1,taetigkeitsbericht_mode:!1}),[ne,re]=(0,w.useState)(!1),[L,ie]=(0,w.useState)([]),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(!1),[se,ce]=(0,w.useState)(null),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)({open:!1,reason:null,reassignTo:``}),pe=(0,w.useRef)(new Map);(0,w.useEffect)(()=>{i?.page===`einstellungen`&&i?.tab&&(j(i.tab),a())},[i]),(0,w.useEffect)(()=>{let e=e=>{let t=e.detail?.tab;t&&j(t)};return document.addEventListener(`settings-nav`,e),()=>document.removeEventListener(`settings-nav`,e)},[]);let me=(0,w.useEffectEvent)(async()=>{try{let[e,t,n,r,i,a,o,c]=await Promise.all([V(`/api/sources`),V(`/api/logs?lines=100`),V(`/api/daily-impulse`).catch(()=>null),V(`/api/health`).catch(()=>null),V(`/api/privacy-info`).catch(()=>null),V(`/api/settings/followup`).catch(()=>null),V(`/api/settings/report`).catch(()=>null),V(`/api/dismiss-reasons`).catch(()=>[])]);(0,w.startTransition)(()=>{l(e||[]),d(t?.lines||[]),n&&_(n.enabled!==!1),y(r),x(i),a&&P(a),o&&te(e=>({...e,...o})),ie(Array.isArray(c)?c:[]),s(!1)})}catch(e){r(`Einstellungen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>s(!1))}});(0,w.useEffect)(()=>{s(!0),me()},[t]),(0,w.useEffect)(()=>()=>{pe.current.forEach(e=>window.clearInterval(e)),pe.current.clear()},[]);function _e(e,t){let n=pe.current.get(e);n&&window.clearInterval(n);let i=window.setInterval(async()=>{try{let n=await V(`/api/background-jobs/${t}`);(0,w.startTransition)(()=>{h(r=>({...r,[e]:{status:n.status,message:n.message||``,jobId:t}}))}),n.status!==`running`&&(window.clearInterval(i),pe.current.delete(e),n.status===`fertig`?r(n.message||`Login abgeschlossen.`,`success`):n.status===`fehler`&&r(n.message||`Login konnte nicht abgeschlossen werden.`,`danger`))}catch(t){window.clearInterval(i),pe.current.delete(e),r(`Login-Status konnte nicht geladen werden: ${t.message}`,`danger`)}},1500);pe.current.set(e,i)}async function ve(e){try{let t=await H(`/api/sources/${e.key}/login`,{});(0,w.startTransition)(()=>{h(n=>({...n,[e.key]:{status:`running`,message:t.nachricht||``,jobId:t.job_id}}))}),r(t.nachricht||`${e.name}: Login wird gestartet.`,`sky`),_e(e.key,t.job_id)}catch(e){r(`Login konnte nicht gestartet werden: ${e.message}`,`danger`)}}async function ye(e,t){let i=c,a=c.map(n=>n.key===e.key?{...n,active:t}:n);(0,w.startTransition)(()=>l(a));try{await H(`/api/sources`,{active_sources:a.filter(e=>e.active).map(e=>e.key)}),await n({quiet:!0}),t&&e.login_erforderlich&&await ve(e)}catch(e){(0,w.startTransition)(()=>l(i)),r(`Quelle konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function xe(e){re(!0);try{let t=await U(`/api/settings/report`,e);t?.gespeichert&&te(e=>({...e,...t.gespeichert})),r(`Bericht-Einstellungen gespeichert`,`success`)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{re(!1)}}async function Se(e){F(!0);try{let t=await U(`/api/settings/followup`,e);t?.gespeichert&&P(e=>({...e,...t.gespeichert})),r(`Follow-up-Einstellungen gespeichert`,`success`)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{F(!1)}}async function Ce(){try{await H(`/api/reset`,{confirm:`RESET`}),r(`Factory Reset ausgeführt. Seite wird neu geladen.`,`success`),window.setTimeout(()=>window.location.reload(),1200)}catch(e){r(`Reset fehlgeschlagen: ${e.message}`,`danger`)}}async function B(){E(!0);try{let e=await fetch(`/api/export-package`);if(!e.ok)throw Error(`Export fehlgeschlagen`);let t=await e.blob(),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`pbp_export_${new Date().toISOString().slice(0,10)}.zip`,i.click(),URL.revokeObjectURL(n),r(`Export heruntergeladen.`,`success`)}catch(e){r(`Export fehlgeschlagen: ${e.message}`,`danger`)}finally{E(!1)}}let Te=(0,w.useRef)(null);async function Ee(){try{let e=await V(`/api/profile/export`),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`profil_export_${new Date().toISOString().slice(0,10)}.json`,i.click(),URL.revokeObjectURL(n),r(`Profil exportiert`,`success`)}catch(e){r(`Export fehlgeschlagen: ${e.message}`,`danger`)}}async function De(){try{let e=await fetch(Tt(`/api/backup`));if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.blob(),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`pbp_backup_${new Date().toISOString().slice(0,10)}.db`,i.click(),URL.revokeObjectURL(n),r(`Datenbank-Backup heruntergeladen`,`success`)}catch(e){r(`Backup fehlgeschlagen: ${e.message}`,`danger`)}}async function Oe(e){let t=e.target.files?.[0];if(t)try{let e=new FormData;e.append(`file`,t),await V(`/api/profile/import`,{method:`POST`,body:e}),await n({quiet:!1}),r(`Profil importiert.`,`success`)}catch(e){r(`Profilimport fehlgeschlagen: ${e.message}`,`danger`)}finally{e.target.value=``}}async function ke(){try{await Dt(`/api/privacy-delete-all`,{confirm:`ALLES_LOESCHEN`}),r(`Alle Daten geloescht. Seite wird neu geladen.`,`success`),window.setTimeout(()=>window.location.reload(),1500)}catch(e){r(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function Ae(){try{let e=await V(`/api/dismiss-reasons`);ie(Array.isArray(e)?e:[])}catch{}}async function je(){let e=(R||``).trim();if(e){z(!0);try{await H(`/api/dismiss-reasons`,{label:e}),ae(``),await Ae(),r(`Ablehnungsgrund "${e}" angelegt.`,`success`)}catch(e){r(e?.message||`Konnte Grund nicht anlegen.`,`danger`)}finally{z(!1)}}}async function Me(e){let t=!!e.is_active;try{await V(`/api/dismiss-reasons/${e.id}`,{method:`PATCH`,body:JSON.stringify({is_active:t?0:1})}),await Ae(),r(`"${e.label}" ${t?`deaktiviert`:`aktiviert`}.`,`success`)}catch(e){r(e?.message||`Konnte Status nicht aendern.`,`danger`)}}function Ne(e){ce(e.id),ue(e.label||``)}function Pe(){ce(null),ue(``)}async function Fe(e){let t=(le||``).trim();if(!t||t===e.label){Pe();return}z(!0);try{let n=await V(`/api/dismiss-reasons/${e.id}`,{method:`PATCH`,body:JSON.stringify({label:t})}),i=n?.rename?.reassigned_jobs||0,a=n?.rename?.status===`zusammengefuehrt`;Pe(),await Ae(),r(a?`Mit "${t}" zusammengefuehrt${i?` (${i} Stellen umgezogen)`:``}.`:`Umbenannt in "${t}"${i?` (${i} Stellen mitgezogen)`:``}.`,`success`)}catch(e){r(e?.message||`Konnte nicht umbenennen.`,`danger`)}finally{z(!1)}}function Ie(e){let t=L.filter(t=>t.id!==e.id&&(t.is_active===void 0||t.is_active));fe({open:!0,reason:e,reassignTo:t.find(e=>e.label===`sonstiges`)?.label||t[0]?.label||`sonstiges`})}async function Le(){let{reason:e,reassignTo:t}=de;if(!e)return;let n=Number(e.usage_count||0)>0;z(!0);try{await Dt(`/api/dismiss-reasons/${e.id}`,{reassign_to:t||``}),fe({open:!1,reason:null,reassignTo:``}),await Ae(),r(n?`"${e.label}" geloescht, Stellen auf "${t}" umgezogen.`:`"${e.label}" geloescht.`,`success`)}catch(e){r(e?.message||`Konnte nicht loeschen.`,`danger`)}finally{z(!1)}}return o?(0,W.jsx)($n,{label:`Einstellungen werden geladen...`}):(0,W.jsxs)(`div`,{id:`page-einstellungen`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Einstellungen`}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-6`,children:[{id:`quellen`,label:`Quellen`},{id:`ai`,label:`Lokale KI`},{id:`automatik`,label:`Automatik`},{id:`bewerten`,label:`Bewertung`},{id:`system`,label:`System`},{id:`erscheinungsbild`,label:`Erscheinungsbild`},{id:`datenschutz`,label:`Datenschutz`},{id:`logs`,label:`Logs`},{id:`gefahrenzone`,label:`Gefahrenzone`}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>j(e.id),className:`px-3 py-1.5 rounded-lg text-sm font-medium transition-colors whitespace-nowrap ${A===e.id?`bg-sky/15 text-sky`:`text-muted/50 hover:text-muted hover:bg-white/5`}`,children:e.label},e.id))}),(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[A===`quellen`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ia,{sources:c,onToggle:ye,pushToast:r}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Quellen`,description:`Welche Jobportale aktiv durchsucht werden.`}),(0,W.jsx)(ar,{sources:c,loginJobs:m,onToggle:ye,onStartLogin:ve})]}),(0,W.jsx)(aa,{pushToast:r}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Dashboard`,description:`Allgemeine Dashboard-Einstellungen.`}),(0,W.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3 text-sm text-muted`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:g,onChange:async()=>{try{_((await H(`/api/daily-impulse/toggle`)).enabled)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},className:`h-4 w-4 accent-sky-500`}),`Tagesimpuls im Dashboard anzeigen`]})]})]}),A===`ai`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(da,{pushToast:r}),(0,W.jsx)(pa,{pushToast:r})]}),A===`automatik`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(ca,{pushToast:r}),(0,W.jsx)(la,{pushToast:r})]}),A===`bewerten`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Ablehnungsgruende`,description:`Eigene Gruende fuer 'passt nicht' anlegen, umbenennen (Tippfehler-Korrektur zieht bestehende Stellen mit), deaktivieren oder loeschen. Aktive Gruende stehen Claude bei stelle_bewerten zur Verfuegung.`}),(0,W.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[L.length===0&&(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Noch keine Ablehnungsgruende vorhanden.`}),L.slice().sort((e,t)=>(t.usage_count||0)-(e.usage_count||0)).map(e=>{let t=e.is_active===void 0?!0:!!e.is_active;return(0,W.jsx)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border border-white/5 px-3 py-2`,children:se===e.id?(0,W.jsxs)(`div`,{className:`flex flex-1 items-center gap-2`,children:[(0,W.jsx)(X,{value:le,onChange:e=>ue(e.target.value),autoFocus:!0,onKeyDown:t=>{t.key===`Enter`?(t.preventDefault(),Fe(e)):t.key===`Escape`&&Pe()}}),(0,W.jsx)(K,{type:`button`,onClick:()=>Fe(e),disabled:oe,children:`Speichern`}),(0,W.jsx)(K,{type:`button`,variant:`ghost`,onClick:Pe,children:`Abbrechen`})]}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,W.jsx)(`span`,{className:`text-sm ${t?`text-ink`:`text-muted/40 line-through`}`,children:e.label}),e.is_custom?(0,W.jsx)(J,{tone:`sky`,children:`eigen`}):null,e.usage_count?(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[e.usage_count,`x`]}):null]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,W.jsx)(K,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>Ne(e),title:`Umbenennen (Tippfehler korrigieren)`,children:(0,W.jsx)(We,{size:15})}),(0,W.jsx)(K,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>Me(e),children:t?`Deaktivieren`:`Aktivieren`}),(0,W.jsx)(K,{type:`button`,variant:`danger`,size:`sm`,onClick:()=>Ie(e),title:`Loeschen`,children:(0,W.jsx)(at,{size:15})})]})]})},e.id??e.label)})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex items-end gap-2`,children:[(0,W.jsx)(Y,{label:`Neuer Grund (z.B. kein_homeoffice)`,className:`flex-1`,children:(0,W.jsx)(X,{value:R,onChange:e=>ae(e.target.value),placeholder:`snake_case empfohlen`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),je())}})}),(0,W.jsx)(K,{type:`button`,onClick:je,disabled:oe||!R.trim(),children:`Hinzufuegen`})]})]}),(0,W.jsx)(er,{open:de.open,onClose:()=>fe({open:!1,reason:null,reassignTo:``}),title:`Ablehnungsgrund loeschen`,size:`sm`,footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(K,{type:`button`,variant:`ghost`,onClick:()=>fe({open:!1,reason:null,reassignTo:``}),children:`Abbrechen`}),(0,W.jsx)(K,{type:`button`,variant:`danger`,onClick:Le,disabled:oe,children:`Endgueltig loeschen`})]}),children:de.reason&&(0,W.jsxs)(`div`,{className:`space-y-3 text-sm text-muted/80`,children:[(0,W.jsxs)(`p`,{children:[`Grund`,` `,(0,W.jsxs)(`span`,{className:`font-semibold text-ink`,children:[`"`,de.reason.label,`"`]}),` `,`wirklich loeschen?`]}),Number(de.reason.usage_count||0)>0?(0,W.jsx)(Y,{label:`Die ${de.reason.usage_count} bisher so aussortierten Stellen neu zuordnen zu:`,children:(0,W.jsx)(Xn,{value:de.reassignTo,onChange:e=>fe(t=>({...t,reassignTo:e.target.value})),children:L.filter(e=>e.id!==de.reason.id).map(e=>(0,W.jsx)(`option`,{value:e.label,children:e.label},e.id))})}):(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Dieser Grund wird von keiner Stelle verwendet und kann gefahrlos geloescht werden.`})]})})]}),A===`system`&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-amber h-10 w-10`,children:(0,W.jsx)(M,{size:18})}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Follow-up-Automation`}),(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Zeitraeume fuer automatisch erzeugte Follow-ups. 0 deaktiviert das jeweilige Auto-Follow-up.`})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(Y,{label:`Nachfrage nach Bewerbung (Tage)`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(X,{type:`number`,min:`0`,max:`365`,value:N.followup_default_days,onChange:e=>P(t=>({...t,followup_default_days:e.target.value})),onBlur:e=>{Se({followup_default_days:Math.max(0,Math.min(365,parseInt(e.target.value,10)||0))})},disabled:ee}),(0,W.jsx)(`span`,{className:`text-sm text-muted`,children:`Tage`})]}),(0,W.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Standard: 7. Wird beim Wechsel auf „beworben" angelegt, sofern keines offen ist.`})]}),(0,W.jsxs)(Y,{label:`Nachfrage nach Interview (Tage)`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(X,{type:`number`,min:`0`,max:`365`,value:N.followup_interview_delay_days,onChange:e=>P(t=>({...t,followup_interview_delay_days:e.target.value})),onBlur:e=>{Se({followup_interview_delay_days:Math.max(0,Math.min(365,parseInt(e.target.value,10)||0))})},disabled:ee}),(0,W.jsx)(`span`,{className:`text-sm text-muted`,children:`Tage`})]}),(0,W.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Standard: 14. Wird nach „interview_abgeschlossen" automatisch erzeugt; alte Follow-ups dieser Bewerbung werden hinfaellig.`})]})]})]}),A===`system`&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-sky h-10 w-10`,children:(0,W.jsx)(D,{size:18})}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Bewerbungsbericht`}),(0,W.jsx)(`p`,{className:`text-xs text-muted`,children:`Optionale Felder fuer den PDF-/Excel-Bericht. Nuetzlich fuer Anwender, die ihren Bericht beim Arbeitsamt vorlegen — sonst einfach den Haken weglassen.`})]})]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-3 cursor-pointer mb-4`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!I.arbeitsamt_block_enabled,onChange:e=>{let t=e.target.checked;te(e=>({...e,arbeitsamt_block_enabled:t})),xe({arbeitsamt_block_enabled:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Arbeitsamt-Vorlagenblock im Bericht anzeigen`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Wenn aktiv, wird auf der Cover-Page ein Block mit Vermittlungsnummer, Aktenzeichen und Berater-Daten gerendert. Ohne Haken werden die Felder ignoriert — du musst sie nicht loeschen.`})]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 ${I.arbeitsamt_block_enabled?``:`opacity-50 pointer-events-none`}`,children:[(0,W.jsx)(Y,{label:`Vermittlungsnummer`,children:(0,W.jsx)(X,{type:`text`,maxLength:200,value:I.ba_vermittlungsnummer,onChange:e=>te(t=>({...t,ba_vermittlungsnummer:e.target.value})),onBlur:e=>xe({ba_vermittlungsnummer:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. 123ABC456`})}),(0,W.jsx)(Y,{label:`Aktenzeichen`,children:(0,W.jsx)(X,{type:`text`,maxLength:200,value:I.ba_aktenzeichen,onChange:e=>te(t=>({...t,ba_aktenzeichen:e.target.value})),onBlur:e=>xe({ba_aktenzeichen:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. 12345/2026`})}),(0,W.jsx)(Y,{label:`Berater(in)`,children:(0,W.jsx)(X,{type:`text`,maxLength:200,value:I.ba_berater_name,onChange:e=>te(t=>({...t,ba_berater_name:e.target.value})),onBlur:e=>xe({ba_berater_name:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`Name der Beratungsperson`})}),(0,W.jsx)(Y,{label:`Beratungsstelle`,children:(0,W.jsx)(X,{type:`text`,maxLength:200,value:I.ba_berater_stelle,onChange:e=>te(t=>({...t,ba_berater_stelle:e.target.value})),onBlur:e=>xe({ba_berater_stelle:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. Agentur fuer Arbeit Bremen`})})]}),(0,W.jsxs)(`label`,{className:`mt-5 flex items-center gap-3 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!I.berater_kommentar_block,onChange:e=>{let t=e.target.checked;te(e=>({...e,berater_kommentar_block:t})),xe({berater_kommentar_block:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Beraterkommentar-Block am Berichtende`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Fuegt am Ende des Berichts leere Linien fuer handschriftliche Anmerkungen ein.`})]})]}),(0,W.jsxs)(`label`,{className:`mt-3 flex items-center gap-3 cursor-pointer`,children:[(0,W.jsx)(`input`,{type:`checkbox`,checked:!!I.taetigkeitsbericht_mode,onChange:e=>{let t=e.target.checked;te(e=>({...e,taetigkeitsbericht_mode:t})),xe({taetigkeitsbericht_mode:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Taetigkeitsbericht-Modus`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Fokus auf taegliche Aktivitaet als Nachweis fuer Vermittler/Berater. Cover-Titel wird zu „Taetigkeitsbericht" und der Bericht enthaelt eine zusaetzliche tagesgruppierte Uebersicht aller Bewerbungs-Ereignisse.`})]})]}),(0,W.jsx)(oa,{pushToast:r})]}),A===`system`&&v&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`System-Info`,description:`Technische Details fuer Fehlerdiagnose.`}),(0,W.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-3 space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[(0,W.jsx)(D,{size:14,className:`text-sky`}),`Versionen`]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`PBP: `,(0,W.jsxs)(`span`,{className:`text-ink`,children:[`v`,v.pbp_version]})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Python: `,(0,W.jsx)(`span`,{className:`text-ink`,children:v.python_version})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Plattform: `,(0,W.jsx)(`span`,{className:`text-ink`,children:v.platform_detail})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 space-y-1.5`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[(0,W.jsx)(we,{size:14,className:`text-teal`}),`Speicher`]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Datenbank: `,(0,W.jsxs)(`span`,{className:`text-ink`,children:[v.db_size_mb,` MB`]})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Dokumente: `,(0,W.jsxs)(`span`,{className:`text-ink`,children:[v.document_count,` Dateien`]})]}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/60 break-all`,children:[`Pfad: `,(0,W.jsx)(`span`,{className:`text-ink`,children:v.data_dir})]})]})]}),(0,W.jsxs)(`div`,{className:`mt-4 glass-card p-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink mb-2`,children:[(0,W.jsx)(Be,{size:14,className:`text-amber`}),`Module`]}),(0,W.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:v.modules&&Object.entries(v.modules).map(([e,t])=>(0,W.jsxs)(J,{tone:t?`success`:`neutral`,children:[e,` `,t||`—`]},e))})]}),v.mcp_connection&&(0,W.jsx)(`div`,{className:`mt-4 glass-card p-3`,children:(0,W.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`MCP-Verbindung: `,(0,W.jsx)(`span`,{className:`font-medium ${v.mcp_connection.status===`connected`?`text-teal`:v.mcp_connection.status===`unknown`?`text-amber`:`text-red-400`}`,children:v.mcp_connection.status}),v.mcp_connection.last_tool&&(0,W.jsxs)(W.Fragment,{children:[` — Letztes Tool: `,(0,W.jsx)(`span`,{className:`text-ink`,children:v.mcp_connection.last_tool})]})]})})]}),A===`erscheinungsbild`&&(0,W.jsx)(ta,{}),A===`datenschutz`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Datenschutz`,description:`Wo liegen deine Daten und was wird wohin gesendet.`}),b&&(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsxs)(`h3`,{className:`text-sm font-medium text-ink mb-2 flex items-center gap-2`,children:[(0,W.jsx)(be,{size:14,className:`text-sky`}),`Datenfluss`]}),(0,W.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-teal font-medium`,children:`Nur lokal gespeichert:`}),(0,W.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.local_only.join(`, `)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-amber font-medium`,children:`An Claude Desktop (du kontrollierst):`}),(0,W.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.sent_to_claude.join(`, `)})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`span`,{className:`text-sky font-medium`,children:`Externe Anfragen:`}),(0,W.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.external_requests.join(`, `)})]})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`text-sm font-medium text-ink mb-2`,children:`Gespeicherte Daten`}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs text-muted/60`,children:[(0,W.jsxs)(`p`,{children:[`Profile: `,(0,W.jsx)(`span`,{className:`text-ink`,children:b.counts.profiles})]}),(0,W.jsxs)(`p`,{children:[`Stellen: `,(0,W.jsx)(`span`,{className:`text-ink`,children:b.counts.jobs})]}),(0,W.jsxs)(`p`,{children:[`Bewerbungen: `,(0,W.jsx)(`span`,{className:`text-ink`,children:b.counts.applications})]}),(0,W.jsxs)(`p`,{children:[`Dokumente: `,(0,W.jsx)(`span`,{className:`text-ink`,children:b.counts.documents})]})]}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/40 mt-2 break-all`,children:[`Speicherort: `,b.storage.data_dir]})]})]})]}),(0,W.jsx)(na,{pushToast:r}),(0,W.jsx)(ra,{pushToast:r}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Datenauskunft (DSGVO Art. 15)`,description:`PDF-Bericht: Welche Daten hat PBP gespeichert, wo liegen sie, seit wann.`}),(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Selbstauskunft als PDF erstellen`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Strukturierter Bericht: Profil, Skills, Berufserfahrung, Dokumenten-/Bewerbungs-/ Stellen-/Termine-Anzahlen, Speicherort. Inhalte deiner Dokumente und E-Mails sind NICHT enthalten — nur die Meta-Information dass sie existieren.`})]}),(0,W.jsxs)(`a`,{href:Tt(`/api/privacy/self-disclosure.pdf`),target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-sm font-medium text-ink hover:bg-white/[0.08]`,children:[(0,W.jsx)(ge,{size:14}),`PDF`]})]})]}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Daten & Backup`,description:`Daten exportieren, sichern oder aus einer Datei importieren.`}),(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Komplett-Export (ZIP)`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Alle Profile, Bewerbungen, Dokumente und Einstellungen als ZIP-Paket.`})]}),(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:B,disabled:T,children:[(0,W.jsx)(Be,{size:14}),T?`Erstelle...`:`Herunterladen`]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Datenbank-Backup (SQLite)`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Rohe Datenbankdatei — fuer technische Wiederherstellung.`})]}),(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:De,children:[(0,W.jsx)(he,{size:14}),` Herunterladen`]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Profil exportieren (JSON)`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Nur das aktive Profil als JSON — fuer Uebertragung zwischen Installationen.`})]}),(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:Ee,children:[(0,W.jsx)(ge,{size:14}),` Exportieren`]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Profil importieren (JSON)`}),(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Ein zuvor exportiertes Profil wiederherstellen.`})]}),(0,W.jsx)(`input`,{ref:Te,type:`file`,accept:`.json`,className:`hidden`,onChange:Oe}),(0,W.jsxs)(K,{variant:`secondary`,size:`sm`,onClick:()=>Te.current?.click(),children:[(0,W.jsx)(ut,{size:14}),` Importieren`]})]})]})]}),(0,W.jsx)(q,{className:`rounded-2xl border border-amber/20 bg-amber/5`,children:(0,W.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Moechtest du Daten loeschen? Alle Optionen findest du im Tab`,` `,(0,W.jsx)(`button`,{type:`button`,className:`text-sky underline`,onClick:()=>j(`gefahrenzone`),children:`Gefahrenzone`}),`.`]})})]}),A===`logs`&&(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsxs)(q,{className:`rounded-2xl border-sky/20 bg-sky/[0.03]`,children:[(0,W.jsx)(Gn,{title:`Bug gefunden? Log mitsenden.`,description:`Der Download enthaelt die letzten Eintraege des Runtime-Logs. Beim Issue auf GitHub bitte als Anhang mitsenden — beschleunigt die Analyse drastisch.`}),(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,W.jsx)(K,{variant:`secondary`,size:`sm`,onClick:async()=>{try{let e=await fetch(Tt(`/api/system/logs/download`));if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.blob(),n=window.URL.createObjectURL(t),i=document.createElement(`a`),a=new Date().toISOString().replace(/[:T]/g,`-`).slice(0,19);i.href=n,i.download=`pbp-log-${a}.log`,document.body.appendChild(i),i.click(),document.body.removeChild(i),window.URL.revokeObjectURL(n),r(`Log heruntergeladen — bei Bug-Report als Anhang mitsenden`,`success`,{duration:4e3})}catch(e){r(`Log-Download fehlgeschlagen: ${e.message}`,`danger`)}},children:`Log-Datei herunterladen`}),(0,W.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new`,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-sky hover:underline`,children:`Issue auf GitHub aufmachen →`})]}),(0,W.jsxs)(`p`,{className:`mt-3 text-[11px] text-muted/60`,children:[(0,W.jsx)(`strong`,{className:`text-amber/80`,children:`Datenschutz-Hinweis:`}),` Das Logfile kann persoenliche Daten enthalten (Firmennamen, Pfade, Job-Hashes). Pruefe es kurz vor dem Hochladen oder schwaerze sensible Stellen.`]})]}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Runtime-Logs (Live-Vorschau)`,description:`Die letzten Zeilen aus dem Dashboard-Log fuer schnelle Diagnose.`}),(0,W.jsx)(`div`,{className:`soft-scrollbar glass-log max-h-[28rem] overflow-y-auto p-4`,children:u.length?u.map((e,t)=>(0,W.jsx)(`p`,{children:e},`${t}-${e.slice(0,20)}`)):(0,W.jsx)(`p`,{children:`Keine Logs gefunden.`})})]})]}),A===`gefahrenzone`&&(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[(0,W.jsxs)(q,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Alle Daten loeschen (DSGVO)`,description:`Loescht Datenbank und Dokumente unwiderruflich. Das wird geloescht: Profil, Bewerbungen, Stellen, Dokumente, Einstellungen.`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,W.jsx)(at,{size:16})}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,W.jsx)(`strong`,{className:`text-ink`,children:`ALLES_LOESCHEN`}),` ein, um alle Daten unwiderruflich zu entfernen.`]})]}),(0,W.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,W.jsx)(Y,{label:`Bestaetigung`,children:(0,W.jsx)(X,{className:`!w-56`,value:S,onChange:e=>C(e.target.value),placeholder:`ALLES_LOESCHEN`})}),(0,W.jsxs)(K,{variant:`danger`,disabled:S!==`ALLES_LOESCHEN`,onClick:ke,children:[(0,W.jsx)(at,{size:15}),`Endgueltig loeschen`]})]})]})]}),e?.profile?.name&&(0,W.jsxs)(q,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Profil loeschen`,description:`Loescht das aktive Profil "${e.profile.name}" inkl. aller Positionen, Skills, Bewerbungen und Dokumente unwiderruflich.`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,W.jsx)(at,{size:16})}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib den Profilnamen `,(0,W.jsx)(`strong`,{className:`text-ink`,children:e.profile.name}),` exakt ein, um das Profil zu loeschen.`]})]}),(0,W.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,W.jsx)(Y,{label:`Profilname bestaetigen`,children:(0,W.jsx)(X,{className:`!w-56`,value:O,onChange:e=>k(e.target.value),placeholder:e.profile.name})}),(0,W.jsxs)(K,{variant:`danger`,disabled:O!==e.profile.name,onClick:async()=>{try{await Dt(`/api/profiles/${e.profile.id}`),k(``),r(`Profil geloescht.`,`success`),n()}catch(e){r(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}},children:[(0,W.jsx)(at,{size:15}),`Profil loeschen`]})]})]})]}),(0,W.jsxs)(q,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`Factory Reset`,description:`Setzt die App in einen sauberen Zustand zurueck. Das wird geloescht: Alle Profile, Stellen, Bewerbungen, Dokumente — die App wird wie neu.`}),(0,W.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,W.jsx)(et,{size:16})}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,W.jsx)(`strong`,{className:`text-ink`,children:`RESET`}),` ein, wenn du wirklich alles zuruecksetzen willst.`]})]}),(0,W.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,W.jsx)(Y,{label:`Bestaetigung`,children:(0,W.jsx)(X,{className:`!w-48`,value:f,onChange:e=>p(e.target.value),placeholder:`RESET`})}),(0,W.jsxs)(K,{variant:`danger`,disabled:f!==`RESET`,onClick:Ce,children:[(0,W.jsx)(nt,{size:15}),`Factory Reset`]})]})]})]}),(0,W.jsx)(ya,{pushToast:r})]})]})]})}function ya({pushToast:e}){let[t,n]=(0,w.useState)(``),[r,i]=(0,w.useState)(!1);async function a(){i(!0);try{e((await H(`/api/danger/launch-uninstaller`,{confirm:`DEINSTALLIEREN`}))?.hint||`Deinstaller gestartet — folge dem neuen Konsolen-Fenster`,`success`),n(``)}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return(0,W.jsxs)(q,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,W.jsx)(Gn,{title:`PBP komplett deinstallieren`,description:`Entfernt PBP von diesem Rechner: Programmdateien, Registry-Eintrag, Desktop-Verknuepfung und MCP-Eintrag in Claude Desktop. Im Deinstaller wirst du gefragt ob du auch deine Bewerbungsdaten loeschen willst.`}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,W.jsxs)(`div`,{className:`rounded-xl border border-amber/30 bg-amber/[0.05] p-3 text-[12px] text-amber/90`,children:[(0,W.jsx)(`strong`,{className:`text-amber`,children:`Wichtig — was NICHT mit deinstalliert wird:`}),(0,W.jsxs)(`ul`,{className:`mt-1.5 ml-4 list-disc space-y-0.5`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Claude Desktop`}),` — Anthropics App. Bleibt installiert. Manuell ueber `,(0,W.jsx)(`em`,{children:`Windows Apps & Features`}),` entfernen wenn gewuenscht.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Ollama`}),` — falls du es fuer die lokale AI installiert hast. Bleibt installiert. Manuell ueber `,(0,W.jsx)(`em`,{children:`Windows Apps & Features`}),` entfernen.`]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{children:`Python`}),` — falls du eine eigene Installation neben PBP nutzt. PBPs eigenes Python (im AppData) wird komplett entfernt.`]})]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,W.jsx)(at,{size:16})}),(0,W.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,W.jsx)(`strong`,{className:`text-ink`,children:`DEINSTALLIEREN`}),` ein, um die Komplett-Deinstallation zu starten. Es oeffnet sich ein neues Konsolen-Fenster mit den Deinstaller-Prompts.`]})]}),(0,W.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,W.jsx)(Y,{label:`Bestaetigung`,children:(0,W.jsx)(X,{className:`!w-56`,value:t,onChange:e=>n(e.target.value),placeholder:`DEINSTALLIEREN`})}),(0,W.jsxs)(K,{variant:`danger`,disabled:t!==`DEINSTALLIEREN`||r,onClick:a,children:[(0,W.jsx)(at,{size:15}),`Deinstaller starten`]})]})]})]})}var ba={interview:`Interview`,zweitgespraech:`2. Gespraech`,telefoninterview:`Telefoninterview`,assessment:`Assessment`,kennenlernen:`Kennenlernen`,followup:`Follow-up`,sonstiges:`Termin`};function xa(e){return ba[e]||e||`Termin`}function Sa(e){if(!e)return!1;let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?!1:te.toLocaleDateString(`de-DE`,n);return e===`woche`?`${r(t.start)} – ${r(t.end)}`:e===`monat`?t.start.toLocaleDateString(`de-DE`,{month:`long`,year:`numeric`}):e===`quartal`?`Q${Math.floor(t.start.getMonth()/3)+1} ${t.start.getFullYear()}`:`H${t.start.getMonth()<6?1:2} ${t.start.getFullYear()}`}function Ma(e,t){if(!e)return!1;let n=new Date(e);return n.setHours(0,0,0,0),n>=t.start&&n<=t.end}function Na(e){return{title:``,meeting_date:e||new Date().toISOString().slice(0,16),meeting_type:`sonstiges`,location:``,notes:``,application_id:``,duration_minutes:60,is_private:!1,category_id:``}}function Pa(e,t){let n=new Date(e,t,1),r=new Date(e,t+1,0),i=n.getDay()===0?6:n.getDay()-1,a=[];for(let n=i-1;n>=0;n--){let r=new Date(e,t,-n);a.push({date:r,isCurrentMonth:!1})}for(let n=1;n<=r.getDate();n++)a.push({date:new Date(e,t,n),isCurrentMonth:!0});for(;a.length%7!=0;){let n=new Date(e,t+1,a.length-i-r.getDate()+1);a.push({date:n,isCurrentMonth:!1})}return a}function Fa(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Ia({year:e,month:t,meetingsByDate:n,onDayClick:r,onMeetingClick:i,compact:a,collisionIds:o}){let s=Pa(e,t),c=Fa(new Date);return(0,W.jsxs)(`div`,{children:[a&&(0,W.jsxs)(`h3`,{className:`mb-2 text-xs font-semibold text-muted/50`,children:[Oa[t],` `,e]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-7 gap-px rounded-xl overflow-hidden border border-white/[0.06]`,children:[Da.map(e=>(0,W.jsx)(`div`,{className:`bg-white/[0.03] px-1 py-1.5 text-center text-[10px] font-semibold text-muted/40 uppercase`,children:e},e)),s.map((e,t)=>{let s=Fa(e.date),l=n[s]||[],u=s===c,d=e.dater(e.date),children:[(0,W.jsx)(`span`,{className:G(`text-[11px] font-medium`,u?`inline-flex h-5 w-5 items-center justify-center rounded-full bg-sky text-shell font-bold`:``,!u&&e.isCurrentMonth?d?`text-muted/30`:`text-ink/70`:``,!u&&!e.isCurrentMonth?`text-muted/15`:``),children:e.date.getDate()}),!a&&l.length>0&&(0,W.jsxs)(`div`,{className:`mt-0.5 space-y-0.5`,children:[l.slice(0,3).map(e=>{let t=o.has(e.id),n=e.category_color||(e.is_private?`#6b7280`:e.is_follow_up?`#f59e0b`:`#0ea5e9`);return(0,W.jsx)(`button`,{type:`button`,className:G(`block w-full truncate rounded px-1 py-px text-left text-[10px] font-medium transition-colors hover:brightness-125`,t&&`ring-1 ring-amber/50`),style:{backgroundColor:`${n}20`,color:n},onClick:t=>{t.stopPropagation(),i(e)},title:`${e.is_private?`Geblockt`:e.title} — ${xn(e.meeting_date)}`,children:e.is_private?`Geblockt`:e.title},e.id)}),l.length>3&&(0,W.jsxs)(`span`,{className:`block text-[9px] text-muted/40 px-1`,children:[`+`,l.length-3]})]}),a&&l.length>0&&(0,W.jsx)(`div`,{className:`absolute bottom-0.5 left-1/2 flex -translate-x-1/2 gap-0.5`,children:l.slice(0,3).map(e=>(0,W.jsx)(`span`,{className:`inline-block h-1 w-1 rounded-full`,style:{backgroundColor:e.category_color||(e.is_private?`#6b7280`:`#0ea5e9`)}},e.id))})]},t)})]})]})}function La(){let{reloadKey:e,pushToast:t,navigateTo:n,copyPrompt:r}=kt(),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)([]),[m,h]=(0,w.useState)(`all`),[g,_]=(0,w.useState)(`kalender`),[v,y]=(0,w.useState)(`monat`),[b,x]=(0,w.useState)(new Date),[S,C]=(0,w.useState)(Ea),[T,E]=(0,w.useState)([]),[D,O]=(0,w.useState)(90),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp-meeting-cat-filter`);if(e)return JSON.parse(e)}catch{}return{}}),[N,P]=(0,w.useState)(null),[F,I]=(0,w.useState)(null),[ne,re]=(0,w.useState)(!1),[L,oe]=(0,w.useState)({name:``,color:`#3b82f6`,show_in_stats:!0});(0,w.useEffect)(()=>{function e(e){let{action:t}=e.detail||{};t===`cal-view-kalender`?_(`kalender`):t===`cal-view-log`?_(`log`):t===`cal-period-woche`?(y(`woche`),x(new Date)):t===`cal-period-monat`?(y(`monat`),x(new Date)):t===`cal-period-quartal`?(y(`quartal`),x(new Date)):t===`cal-period-halbjahr`?(y(`halbjahr`),x(new Date)):t===`cal-filter-all`?h(`all`):t===`cal-filter-upcoming`?h(`upcoming`):t===`cal-filter-past`&&h(`past`)}return document.addEventListener(`cal-nav`,e),()=>document.removeEventListener(`cal-nav`,e)},[]),(0,w.useEffect)(()=>{document.querySelectorAll(`[data-cal-action]`).forEach(e=>{let t=e.dataset.calAction,n=t===`cal-view-${g}`||t===`cal-period-${v}`||t===`cal-filter-${m}`;e.classList.toggle(`bg-white/[0.06]`,n),e.classList.toggle(`text-ink`,n),e.classList.toggle(`text-muted/60`,!n)})},[g,v,m]);let z=(0,w.useEffectEvent)(async()=>{try{let[e,t]=await Promise.all([V(`/api/meetings/calendar?days=365`),V(`/api/applications`)]);s(e?.meetings||[]),l(e?.collisions||[]),d(e?.categories||[]),p(t?.applications||[])}catch(e){t(`Termine konnten nicht geladen werden: ${e.message}`,`danger`)}finally{a(!1)}});(0,w.useEffect)(()=>{z()},[e]);let se=(0,w.useEffectEvent)(async()=>{A(!0);try{E((await V(`/api/activity-log?days=${D}&categories=${Object.entries(S).filter(([,e])=>e).map(([e])=>e).join(`,`)}`))?.entries||[])}catch(e){t(`Aktivitaetslog konnte nicht geladen werden: ${e.message}`,`danger`)}finally{A(!1)}});(0,w.useEffect)(()=>{g===`log`&&se()},[g,D,S,e]);function le(e){C(t=>{let n={...t,[e]:!t[e]};return localStorage.setItem(`pbp-calendar-categories`,JSON.stringify(n)),n})}function ue(e){M(t=>{let n={...t,[e]:t[e]===!1};return localStorage.setItem(`pbp-meeting-cat-filter`,JSON.stringify(n)),n})}async function de(){if(F)try{await Dt(`/api/meetings/${F.id}`),s(e=>e.filter(e=>e.id!==F.id)),t(`Termin geloescht`,`success`),I(null)}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function pe(){if(!N)return;let e=N._isNew,n={title:N.title,meeting_date:N.meeting_date,meeting_type:N.meeting_type,location:N.location||``,notes:N.notes||``,application_id:N.application_id||null,is_private:N.is_private||!1,duration_minutes:N.duration_minutes?Number(N.duration_minutes):null,category_id:N.category_id||null};if(n.duration_minutes&&n.meeting_date){let e=new Date(n.meeting_date);n.meeting_end=new Date(e.getTime()+n.duration_minutes*60*1e3).toISOString().slice(0,16)}try{e?(await H(`/api/meetings`,n),t(`Termin angelegt`,`success`)):(await U(`/api/meetings/${N.id}`,n),t(`Termin aktualisiert`,`success`)),P(null),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function me(){if(L.name.trim())try{await H(`/api/meeting-categories`,L),t(`Kategorie "${L.name}" erstellt`,`success`),oe({name:``,color:`#3b82f6`,show_in_stats:!0}),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function he(e){if(e.is_system){t(`Systemkategorien koennen nicht geloescht werden`,`danger`);return}if(window.confirm(`Kategorie "${e.name}" loeschen? Bestehende Termine werden entkoppelt.`))try{await Dt(`/api/meeting-categories/${e.id}`,{}),t(`Kategorie "${e.name}" geloescht`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function _e(e,n){try{await U(`/api/meeting-categories/${e.id}`,n),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}let ye=new Set(c.flatMap(e=>[e.meeting_1,e.meeting_2])),be=ka(v,b),xe=o.filter(e=>!(e.is_follow_up&&!S.followups||!e.is_follow_up&&!S.termine||e.category_id&&j[e.category_id]===!1||m===`upcoming`&&Sa(e.meeting_date)||m===`past`&&!Sa(e.meeting_date))),Se={};for(let e of xe){let t=(e.meeting_date||``).slice(0,10);Se[t]||(Se[t]=[]),Se[t].push(e)}let Ce=xe.filter(e=>Ma(e.meeting_date,be)),B={};for(let e of Ce){let t=(e.meeting_date||``).slice(0,10);B[t]||(B[t]=[]),B[t].push(e)}let we=Object.keys(B).sort();function Te(e){P({...Na(`${Fa(e)}T09:00`),_isNew:!0})}function Ee(e){e.application_id?n(`bewerbungen`,{highlight:e.application_id}):P({...e,_isNew:!1})}function De(){let e=[],t=new Date(be.start);for(;t<=be.end;)e.push({year:t.getFullYear(),month:t.getMonth()}),t.setMonth(t.getMonth()+1);return e}return i?(0,W.jsx)($n,{}):(0,W.jsxs)(`div`,{id:`page-kalender`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Kalender`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/50 mb-2`,children:[o.length,` Termine`]}),(0,W.jsx)(`div`,{className:`mb-4 flex flex-wrap items-center justify-end gap-3`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>x(e=>Aa(v,e,-1)),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink hover:bg-white/[0.04]`,children:(0,W.jsx)(ie,{size:16})}),(0,W.jsx)(`span`,{className:`text-sm font-medium text-ink min-w-[140px] text-center`,children:g===`kalender`?ja(v,be):`Letzten ${D} Tage`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>x(e=>Aa(v,e,1)),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink hover:bg-white/[0.04]`,children:(0,W.jsx)(R,{size:16})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>x(new Date),className:`rounded-lg px-2 py-1 text-xs text-muted/40 hover:text-sky hover:bg-white/[0.04]`,children:`Heute`}),(0,W.jsx)(`span`,{className:`mx-1 h-4 w-px bg-white/10`}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>re(!0),children:[(0,W.jsx)($e,{size:12}),` Kategorien`]}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>P({...Na(),_isNew:!0}),children:[(0,W.jsx)(qe,{size:12}),` Neuer Termin`]}),(0,W.jsxs)(Un,{size:`sm`,href:Tt(`/api/meetings/export.ics`),target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ge,{size:14}),` ICS`]})]})}),(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[g===`log`&&wa.map(e=>{let t=e.icon,n=S[e.key];return(0,W.jsxs)(`button`,{type:`button`,onClick:()=>le(e.key),className:G(`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors`,n?Ta[e.key]:`text-muted/30 bg-white/[0.02] line-through`),children:[(0,W.jsx)(t,{size:12}),e.label]},e.key)}),g===`kalender`&&u.length>0&&(0,W.jsx)(W.Fragment,{children:u.map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>ue(e.id),className:G(`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors`,j[e.id]===!1?`text-muted/30 bg-white/[0.02] line-through`:`bg-white/[0.05] text-ink`),children:[(0,W.jsx)(`span`,{className:`inline-block w-2.5 h-2.5 rounded-full shrink-0`,style:{backgroundColor:e.color||`#3b82f6`}}),e.name]},e.id))})]}),N&&(0,W.jsx)(er,{open:!0,title:N._isNew?`Neuen Termin anlegen`:`Termin bearbeiten`,onClose:()=>P(null),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(Y,{label:`Titel *`,children:(0,W.jsx)(X,{value:N.title,onChange:e=>P(t=>({...t,title:e.target.value})),placeholder:`z.B. Interview bei Firma XY`})}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{label:`Datum & Uhrzeit *`,children:(0,W.jsx)(X,{type:`datetime-local`,value:N.meeting_date,onChange:e=>P(t=>({...t,meeting_date:e.target.value}))})}),(0,W.jsx)(Y,{label:`Dauer (Minuten)`,children:(0,W.jsx)(X,{type:`number`,min:`5`,step:`5`,value:N.duration_minutes||``,onChange:e=>P(t=>({...t,duration_minutes:e.target.value})),placeholder:`60`})})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,W.jsx)(Y,{label:`Typ`,children:(0,W.jsx)(Xn,{value:N.meeting_type,onChange:e=>P(t=>({...t,meeting_type:e.target.value})),children:Object.entries(ba).map(([e,t])=>(0,W.jsx)(`option`,{value:e,children:t},e))})}),(0,W.jsx)(Y,{label:`Kategorie`,children:(0,W.jsxs)(Xn,{value:N.category_id||``,onChange:e=>P(t=>({...t,category_id:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Keine`}),u.map(e=>(0,W.jsx)(`option`,{value:e.id,children:e.name},e.id))]})})]}),(0,W.jsx)(Y,{label:`Bewerbung verknuepfen (optional)`,children:(0,W.jsxs)(Xn,{value:N.application_id||``,onChange:e=>P(t=>({...t,application_id:e.target.value})),children:[(0,W.jsx)(`option`,{value:``,children:`Keine Verknuepfung`}),f.map(e=>(0,W.jsxs)(`option`,{value:e.id,children:[e.company||`Unbekannt`,` — `,e.title||`Keine Stelle`]},e.id))]})}),(0,W.jsx)(Y,{label:`Ort (optional)`,children:(0,W.jsx)(X,{value:N.location||``,onChange:e=>P(t=>({...t,location:e.target.value})),placeholder:`z.B. Zoom, Buero, ...`})}),(0,W.jsx)(Y,{label:`Notizen (optional)`,children:(0,W.jsx)(Jn,{value:N.notes||``,onChange:e=>P(t=>({...t,notes:e.target.value})),rows:2})}),(0,W.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,W.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-muted cursor-pointer`,children:[(0,W.jsx)(Zn,{checked:N.is_private||!1,onChange:e=>P(t=>({...t,is_private:e.target.checked}))}),`Privater Termin (wird als “Geblockt” angezeigt, nicht in Statistik)`]})}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>P(null),children:`Abbrechen`}),(0,W.jsx)(K,{disabled:!N.title||!N.meeting_date,onClick:pe,children:N._isNew?`Anlegen`:`Speichern`})]})]})}),F&&(0,W.jsxs)(er,{open:!0,title:`Termin loeschen`,onClose:()=>I(null),children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted mb-2`,children:[`Soll der Termin `,(0,W.jsxs)(`strong`,{className:`text-ink`,children:[`“`,F.title,`”`]}),` wirklich geloescht werden?`]}),F.application_id&&(0,W.jsx)(`p`,{className:`text-xs text-amber mb-4`,children:`Dieser Termin ist mit einer Bewerbung verknuepft. Der Timeline-Eintrag wird ebenfalls entfernt.`}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>I(null),children:`Abbrechen`}),(0,W.jsx)(K,{variant:`danger`,onClick:de,children:`Endgueltig loeschen`})]})]}),ne&&(0,W.jsx)(er,{open:!0,title:`Termin-Kategorien verwalten`,onClose:()=>re(!1),children:(0,W.jsxs)(`div`,{className:`grid gap-3`,children:[u.map(e=>(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-white/[0.05] px-4 py-2.5`,children:[(0,W.jsx)(`input`,{type:`color`,value:e.color||`#3b82f6`,onChange:t=>_e(e,{color:t.target.value}),className:`h-6 w-6 rounded cursor-pointer border-0 bg-transparent`,disabled:e.is_system}),(0,W.jsxs)(`span`,{className:`flex-1 text-sm text-ink font-medium`,children:[e.name,e.is_system?(0,W.jsx)(J,{tone:`neutral`,className:`ml-2`,children:`System`}):null]}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted cursor-pointer`,children:[(0,W.jsx)(Zn,{checked:e.show_in_stats!==0,onChange:t=>_e(e,{show_in_stats:t.target.checked?1:0})}),`Statistik`]}),!e.is_system&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>he(e),className:`text-muted/30 hover:text-coral p-1`,children:(0,W.jsx)(at,{size:14})})]},e.id)),(0,W.jsxs)(`div`,{className:`border-t border-white/5 pt-3 mt-1`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted/50 mb-2`,children:`Neue Kategorie`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(`input`,{type:`color`,value:L.color,onChange:e=>oe(t=>({...t,color:e.target.value})),className:`h-8 w-8 rounded cursor-pointer border-0 bg-transparent`}),(0,W.jsx)(X,{value:L.name,onChange:e=>oe(t=>({...t,name:e.target.value})),placeholder:`z.B. Networking`,className:`flex-1`}),(0,W.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted cursor-pointer whitespace-nowrap`,children:[(0,W.jsx)(Zn,{checked:L.show_in_stats,onChange:e=>oe(t=>({...t,show_in_stats:e.target.checked}))}),`Statistik`]}),(0,W.jsx)(K,{size:`sm`,disabled:!L.name.trim(),onClick:me,children:`Erstellen`})]})]})]})}),g===`log`?k?(0,W.jsx)($n,{}):T.length===0?(0,W.jsx)(Qn,{title:`Keine Aktivitaeten`,description:`Keine Eintraege in den letzten ${D} Tagen.`}):(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:T.map(e=>{let t=wa.find(t=>t.key===e.category)?.icon||te;return(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-3 rounded-xl bg-white/[0.02] px-4 py-2.5 text-left transition-colors hover:bg-white/[0.05]`,onClick:()=>{e.link_type===`bewerbung`&&e.link_id?n(`bewerbungen`,{highlight:e.link_id}):e.link_type===`dokument`&&n(`dokumente`)},children:[(0,W.jsx)(`div`,{className:G(`flex h-7 w-7 items-center justify-center rounded-lg shrink-0`,Ta[e.category]||`bg-white/5 text-muted/40`),children:(0,W.jsx)(t,{size:14})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.title}),e.subtitle&&(0,W.jsx)(`p`,{className:`text-xs text-muted/40 truncate`,children:e.subtitle})]}),(0,W.jsx)(`span`,{className:`shrink-0 text-xs text-muted/30`,children:bn(e.event_date)}),e.is_imported&&(0,W.jsx)(J,{tone:`neutral`,className:`shrink-0`,children:`Import`})]},`${e.category}-${e.id}`)})}):(0,W.jsxs)(W.Fragment,{children:[v===`monat`&&(0,W.jsx)(Ia,{year:be.start.getFullYear(),month:be.start.getMonth(),meetingsByDate:Se,onDayClick:Te,onMeetingClick:Ee,compact:!1,collisionIds:ye}),v===`woche`&&(0,W.jsxs)(`div`,{className:`grid grid-cols-7 gap-px rounded-xl overflow-hidden border border-white/[0.06]`,children:[Da.map(e=>(0,W.jsx)(`div`,{className:`bg-white/[0.03] px-1 py-1.5 text-center text-[10px] font-semibold text-muted/40 uppercase`,children:e},e)),(()=>{let e=[],t=new Date(be.start),n=Fa(new Date);for(;t<=be.end;)e.push(new Date(t)),t.setDate(t.getDate()+1);return e.map(e=>{let t=Fa(e),r=Se[t]||[],i=t===n,a=eTe(e),children:[(0,W.jsx)(`span`,{className:G(`text-xs font-medium`,i?`inline-flex h-5 w-5 items-center justify-center rounded-full bg-sky text-shell font-bold`:``,!i&&(a?`text-muted/30`:`text-ink/70`)),children:e.getDate()}),(0,W.jsx)(`p`,{className:`text-[9px] text-muted/30 mt-0.5`,children:e.toLocaleDateString(`de-DE`,{weekday:`short`,day:`numeric`,month:`short`})}),(0,W.jsx)(`div`,{className:`mt-1 space-y-0.5`,children:r.map(e=>{let t=e.category_color||(e.is_private?`#6b7280`:e.is_follow_up?`#f59e0b`:`#0ea5e9`);return(0,W.jsx)(`button`,{type:`button`,className:`block w-full truncate rounded px-1 py-px text-left text-[10px] font-medium transition-colors hover:brightness-125`,style:{backgroundColor:`${t}20`,color:t},onClick:t=>{t.stopPropagation(),Ee(e)},title:`${e.is_private?`Geblockt`:e.title} — ${xn(e.meeting_date)}`,children:e.is_private?`Geblockt`:e.title},e.id)})})]},t)})})()]}),(v===`quartal`||v===`halbjahr`)&&(0,W.jsx)(`div`,{className:G(`grid gap-4`,v===`quartal`?`md:grid-cols-3`:`md:grid-cols-3 lg:grid-cols-3`),children:De().map(({year:e,month:t})=>(0,W.jsx)(Ia,{year:e,month:t,meetingsByDate:Se,onDayClick:Te,onMeetingClick:Ee,compact:!0,collisionIds:ye},`${e}-${t}`))}),we.length>0&&(0,W.jsxs)(`div`,{className:`mt-6 grid gap-4`,children:[(0,W.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-[0.15em] text-muted/40`,children:[`Termine im Zeitraum (`,Ce.length,`)`]}),we.map(e=>(0,W.jsxs)(`div`,{children:[(0,W.jsxs)(`h3`,{className:G(`mb-1.5 text-sm font-semibold`,Ca(e)?`text-sky`:Sa(e)?`text-muted/40`:`text-ink`),children:[Ca(e)?`Heute`:bn(e),Ca(e)&&(0,W.jsxs)(`span`,{className:`ml-2 text-xs font-normal text-muted/50`,children:[`(`,bn(e),`)`]})]}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:B[e].map(e=>{let n=Sa(e.meeting_date),i=ye.has(e.id),a=e.is_follow_up,o=e.is_private,s=e.category_color||null;return(0,W.jsx)(q,{className:G(`rounded-xl cursor-pointer hover:bg-white/[0.03] transition-colors`,n&&`opacity-50`,i&&`border-amber/30 border`,o&&`bg-white/[0.02] border-white/[0.05] border`),onClick:()=>Ee(e),children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`h4`,{className:G(`text-sm font-medium truncate`,o?`text-muted/50`:`text-ink`),children:o?`Geblockt`:e.title}),(0,W.jsx)(J,{tone:n||o?`neutral`:a?`amber`:`sky`,children:o?`Privat`:xa(e.meeting_type)}),e.category_name&&!o&&(0,W.jsx)(`span`,{className:`rounded-lg px-2 py-0.5 text-[10px] font-medium`,style:{backgroundColor:`${s||`#3b82f6`}20`,color:s||`#3b82f6`},children:e.category_name}),i&&(0,W.jsx)(J,{tone:`amber`,children:`Kollision`})]}),!o&&(e.app_company||e.app_title)&&(0,W.jsxs)(`p`,{className:`text-xs text-muted/50 mt-0.5 truncate`,children:[e.app_title,e.app_company?` — ${e.app_company}`:``]}),(0,W.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-3 text-xs text-muted/40`,children:[(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(fe,{size:11}),xn(e.meeting_date),e.meeting_end&&` – ${xn(e.meeting_end).split(`, `).pop()}`,!e.meeting_end&&e.duration_minutes&&` (${e.duration_minutes} Min.)`]}),!o&&e.location&&(0,W.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(Pe,{size:11}),e.location]})]})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),children:[!o&&e.meeting_url&&(0,W.jsx)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noreferrer`,className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Meeting-Link oeffnen`,children:(0,W.jsx)(ve,{size:14})}),a?e.status===`geplant`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`button`,{type:`button`,onClick:async()=>{let n=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${n}/complete`,{}),t(`Nachfass erledigt.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Als erledigt markieren`,children:(0,W.jsx)(ae,{size:14})}),(0,W.jsx)(`button`,{type:`button`,onClick:async()=>{let n=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${n}/dismiss`,{}),t(`Nachfass hinfaellig.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-coral transition-colors`,title:`Als hinfaellig markieren`,children:(0,W.jsx)(ce,{size:14})})]}):(0,W.jsxs)(W.Fragment,{children:[!n&&[`interview`,`telefoninterview`,`video`,`vor_ort`,`kennenlernen`,`zweitgespraech`].includes(e.meeting_type)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{r(`/interview_vorbereitung${e.app_title?` stelle="${e.app_title}"`:``}${e.app_company?` firma="${e.app_company}"`:``}`)},className:`rounded-lg p-1.5 text-muted/30 hover:text-amber transition-colors`,title:`Auf dieses Interview vorbereiten`,children:(0,W.jsx)(ee,{size:14})}),n&&(e.status===`geplant`||e.status===`bestaetigt`)&&(0,W.jsx)(`button`,{type:`button`,onClick:async()=>{try{await U(`/api/meetings/${e.id}`,{status:`durchgefuehrt`}),t(`Termin als durchgeführt markiert.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Termin hat stattgefunden`,children:(0,W.jsx)(ae,{size:14})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>P({...e,_isNew:!1}),className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Termin bearbeiten`,children:(0,W.jsx)(Ue,{size:14})}),(0,W.jsx)(`a`,{href:Tt(`/api/meetings/${e.id}/ics`),className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`ICS herunterladen`,children:(0,W.jsx)(ge,{size:14})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>I(e),className:`rounded-lg p-1.5 text-muted/30 hover:text-coral transition-colors`,title:`Termin loeschen`,children:(0,W.jsx)(at,{size:14})})]})]})]})},e.id)})})]},e))]})]})]})}var Ra={lebenslauf:`Lebenslauf`,anschreiben:`Anschreiben`,zeugnis:`Zeugnis`,zertifikat:`Zertifikat`,bescheinigung:`Bescheinigung`,mail_eingang:`E-Mail (Eingang)`,mail_ausgang:`E-Mail (Ausgang)`,sonstiges:`Sonstiges`};function za(e){return Ra[e]||e||`Sonstiges`}var Ba={nicht_extrahiert:{label:`Nicht analysiert`,tone:`danger`},basis_analysiert:{label:`Basis`,tone:`amber`},analysiert:{label:`Analysiert`,tone:`sky`},analysiert_leer:{label:`Leer`,tone:`neutral`},angewendet:{label:`Angewendet`,tone:`success`},duplikat:{label:`Duplikat`,tone:`neutral`}};function Va(e){return Ba[e]||Ba.nicht_extrahiert}function Ha(){let{reloadKey:e,pushToast:t,navigateTo:n,copyPrompt:r}=kt(),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)({documents:[],total:0,page:1,pages:1,doc_types:[],applications:[],unlinked_count:0,unanalyzed_count:0}),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(``),[f,p]=(0,w.useState)(``),[m,h]=(0,w.useState)(``),[g,_]=(0,w.useState)(!1),[v,y]=(0,w.useState)(``),[b,x]=(0,w.useState)(1),[S,C]=(0,w.useState)(`created_at`),[T,E]=(0,w.useState)(`desc`),[D,O]=(0,w.useState)(null),[k,A]=(0,w.useState)({open:!1,doc:null,value:``,search:``}),[j,M]=(0,w.useState)(null),[N,P]=(0,w.useState)(null),[ee,F]=(0,w.useState)({}),[I,te]=(0,w.useState)([]),[ne,re]=(0,w.useState)(`sonstiges`),[L,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(!1),se=(0,w.useRef)(null),[ce,le]=(0,w.useState)(!1),[ue,de]=(0,w.useState)(!1),fe=(0,w.useRef)(null),pe=(0,w.useRef)(null),he=(0,w.useRef)(new Set),_e=(0,w.useEffectEvent)(async()=>{try{let e=new URLSearchParams({page:String(b),per_page:`25`,sort:S,order:T});u&&e.set(`q`,u),f&&e.set(`doc_type`,f),m&&e.set(`application_id`,m),g&&e.set(`unlinked`,`1`),v&&e.set(`extraction_status`,v),s(await V(`/api/documents?${e}`))}catch(e){t(`Dokumente konnten nicht geladen werden: ${e.message}`,`danger`)}finally{a(!1)}});(0,w.useEffect)(()=>{a(!0),_e()},[e,b,S,T,u,f,m,g,v]),(0,w.useEffect)(()=>{V(`/api/analysis-templates`).then(e=>te(e.templates||[])).catch(()=>{})},[]);function ve(e){e.preventDefault(),x(1),d(c)}function ye(){l(``),d(``),x(1)}function be(e){S===e?E(e=>e===`desc`?`asc`:`desc`):(C(e),E(`desc`)),x(1)}async function Se(){if(k.doc)try{await U(`/api/document/${k.doc.id}/link`,{application_id:k.value||null}),t(`Verknuepfung aktualisiert`,`success`),A({open:!1,doc:null,value:``}),_e()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function Ce(e){try{await Dt(`/api/document/${e}`),t(`Dokument geloescht`,`success`),M(null),_e()}catch(e){t(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function B(e,n=null){let r=n||ee[e]||null;try{await H(`/api/document/${e}/reanalyze`,{});try{let n=await V(`/api/document/${e}/analysis-prompt${r?`?template=${encodeURIComponent(r)}`:``}`);n.available_templates&&!I.length&&te(n.available_templates),await On(n.prompt),t(`Analyse-Prompt (${n.template_label}) kopiert \u2014 in Claude einfuegen`,`success`)}catch{t(`Dokument vorgemerkt (Clipboard/API blockiert)`,`success`)}_e()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function we(e){if(!e?.length)return;de(!0);let n=0;try{for(let t of e){let e=await Xt(t);he.current.has(e)||(he.current.add(e),await $t(t,ne),n++)}n>0&&(t(`${n} Dokument${n>1?`e`:``} hochgeladen`,`success`),_e())}catch(e){t(`Upload-Fehler: ${e.message}`,`danger`)}finally{de(!1)}}return i&&o.documents.length===0?(0,W.jsx)($n,{}):(0,W.jsxs)(`div`,{id:`page-dokumente`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Dokumente`}),(0,W.jsxs)(`p`,{className:`text-xs text-muted/50 mb-2`,children:[o.total,` Dokumente`]}),(0,W.jsx)(`div`,{className:`mb-6 flex flex-wrap items-baseline justify-end gap-4`}),(0,W.jsx)(q,{className:`mb-4 rounded-xl`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,W.jsx)(`div`,{className:G(`flex-1 min-w-[200px] rounded-xl border-2 border-dashed border-white/15 bg-white/[0.02] px-4 py-3 transition`,ce&&`border-sky/60 bg-sky/10 ring-2 ring-sky/35`),onDragOver:e=>{e.preventDefault(),le(!0)},onDragEnter:e=>{e.preventDefault(),le(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&le(!1)},onDrop:async e=>{e.preventDefault(),le(!1),await we(await un(e.dataTransfer))},children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(ut,{size:16,className:`text-muted/40 shrink-0`}),(0,W.jsx)(`span`,{className:`text-sm text-muted/60`,children:`Dateien oder Ordner hier ablegen`}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,W.jsxs)(Xn,{className:`!h-8 !min-h-0 !w-auto !rounded-lg !border-white/5 !bg-white/[0.03] !pl-2 !pr-2 !py-0 !text-[12px] !text-muted/60`,value:ne,onChange:e=>re(e.target.value),children:[(0,W.jsx)(`option`,{value:`sonstiges`,children:`Auto / Sonstiges`}),(0,W.jsx)(`option`,{value:`lebenslauf`,children:`Lebenslauf`}),(0,W.jsx)(`option`,{value:`anschreiben`,children:`Anschreiben`}),(0,W.jsx)(`option`,{value:`zeugnis`,children:`Zeugnis`}),(0,W.jsx)(`option`,{value:`zertifikat`,children:`Zertifikat`})]}),(0,W.jsx)(K,{type:`button`,size:`sm`,variant:`secondary`,disabled:ue,onClick:()=>fe.current?.click(),children:ue?`Lade...`:`Dateien`}),(0,W.jsx)(K,{type:`button`,size:`sm`,variant:`ghost`,disabled:ue,onClick:()=>pe.current?.click(),children:`Ordner`})]})]})}),(0,W.jsx)(`input`,{ref:fe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:async e=>{await we(e.target.files),e.target.value=``}}),(0,W.jsx)(`input`,{ref:pe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:async e=>{await we(e.target.files),e.target.value=``}})]})}),o.unanalyzed_count>0&&(0,W.jsx)(q,{className:`mb-4 rounded-xl border-violet-500/20 bg-violet-500/[0.06]`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-start gap-3 px-4 py-3`,children:[(0,W.jsx)(tt,{size:18,className:`text-violet-400 shrink-0 mt-0.5`}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-[240px]`,children:[(0,W.jsxs)(`div`,{className:`text-sm font-medium text-ink`,children:[o.unanalyzed_count,` Dokument`,o.unanalyzed_count===1?``:`e`,` koennen verarbeitet werden`]}),(0,W.jsxs)(`div`,{className:`text-xs text-muted/70 mt-1 leading-snug`,children:[`Claude klassifiziert jedes hochgeladene Dokument und macht das Passende:`,(0,W.jsx)(`strong`,{className:`text-ink`,children:` Profil-Daten`}),` aus CVs/Zeugnissen,`,(0,W.jsx)(`strong`,{className:`text-ink`,children:` Status-Updates`}),` bei Absagen/Einladungen/Angeboten,`,(0,W.jsx)(`strong`,{className:`text-ink`,children:` Anhang-Verknuepfung`}),` bei firmenspezifischen Anschreiben,`,(0,W.jsx)(`strong`,{className:`text-ink`,children:` Termin-Anlage`}),` bei Interview-Bestaetigungen.`]}),(0,W.jsxs)(`details`,{className:`mt-2 text-[11px] text-muted/70`,children:[(0,W.jsx)(`summary`,{className:`cursor-pointer text-muted hover:text-ink`,children:`So gehts (3 Schritte)`}),(0,W.jsxs)(`ol`,{className:`mt-1.5 ml-4 list-decimal space-y-0.5`,children:[(0,W.jsx)(`li`,{children:`Button rechts klicken — der Verarbeitungs-Prompt landet in der Zwischenablage`}),(0,W.jsxs)(`li`,{children:[`Wechsle zu Claude Desktop und fuege den Prompt mit `,(0,W.jsx)(`kbd`,{className:`px-1 rounded bg-shell/60`,children:`Strg+V`}),` ein`]}),(0,W.jsx)(`li`,{children:`Claude klassifiziert die Dokumente und fragt vor jeder Aktion um Bestaetigung`})]}),(0,W.jsxs)(`p`,{className:`mt-1.5 text-muted/50`,children:[`Nur Profil-Daten? Nutze stattdessen den Befehl`,(0,W.jsx)(`code`,{className:`ml-1 px-1 rounded bg-shell/60`,children:`/profil_erweiterung`})]})]})]}),(0,W.jsxs)(K,{type:`button`,size:`sm`,variant:`secondary`,onClick:async()=>{await r(`/dokumente_verarbeiten`),t(`Verarbeitungs-Prompt kopiert — jetzt in Claude Desktop einfuegen`,`success`,{duration:3500})},children:[(0,W.jsx)(me,{size:14,className:`mr-1`}),`Dokumente verarbeiten`]})]})}),(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-3`,children:[(0,W.jsxs)(`form`,{onSubmit:ve,className:`flex flex-1 items-center gap-2 min-w-[200px] max-w-md`,children:[(0,W.jsxs)(`div`,{className:`relative flex-1`,children:[(0,W.jsx)(Xe,{size:14,className:`absolute left-3 top-1/2 -translate-y-1/2 text-muted/40`}),(0,W.jsx)(`input`,{type:`text`,value:c,onChange:e=>l(e.target.value),placeholder:`Dateiname oder Inhalt suchen...`,className:`w-full rounded-xl border border-white/8 bg-white/[0.03] py-2 pl-9 pr-8 text-sm text-ink placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),u&&(0,W.jsx)(`button`,{type:`button`,onClick:ye,className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-muted/40 hover:text-ink`,children:(0,W.jsx)(vt,{size:14})})]}),(0,W.jsx)(`button`,{type:`submit`,className:`rounded-xl bg-sky/15 px-3 py-2 text-xs font-medium text-sky hover:bg-sky/25 transition-colors`,children:`Suchen`})]}),(0,W.jsxs)(Xn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:f,onChange:e=>{p(e.target.value),x(1)},children:[(0,W.jsx)(`option`,{value:``,children:`Alle Typen`}),o.doc_types.map(e=>(0,W.jsx)(`option`,{value:e,children:za(e)},e))]}),o.applications?.length>0&&(0,W.jsxs)(`div`,{className:`relative`,ref:se,children:[(0,W.jsx)(`input`,{type:`text`,value:L,onChange:e=>{ae(e.target.value),z(!0)},onFocus:()=>z(!0),onBlur:()=>setTimeout(()=>z(!1),200),placeholder:m?o.applications.find(e=>e.id===m)?.company||`Bewerbung`:`Bewerbung filtern...`,className:`h-9 w-[14rem] rounded-xl border border-white/5 bg-white/[0.03] px-3 text-[13px] text-muted/60 placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),m&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{h(``),ae(``),x(1)},className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted/40 hover:text-ink`,children:(0,W.jsx)(vt,{size:12})}),oe&&(()=>{let e=L.toLowerCase(),t=o.applications.filter(t=>!e||(t.company||``).toLowerCase().includes(e)||(t.title||``).toLowerCase().includes(e));return t.length===0?null:(0,W.jsxs)(`div`,{className:`absolute left-0 top-full z-50 mt-1 max-h-48 w-[18rem] overflow-y-auto rounded-xl border border-white/10 bg-[rgba(30,34,52,0.95)] shadow-2xl backdrop-blur-2xl`,children:[(0,W.jsx)(`button`,{type:`button`,className:`flex w-full px-3 py-1.5 text-[12px] text-muted/50 hover:bg-white/[0.06]`,onMouseDown:()=>{h(``),ae(``),x(1),z(!1)},children:`Alle Bewerbungen`}),t.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:G(`flex w-full px-3 py-1.5 text-[12px] text-left transition-colors hover:bg-white/[0.06]`,m===e.id?`text-sky`:`text-muted/60`),onMouseDown:()=>{h(e.id),ae(``),_(!1),x(1),z(!1)},children:[e.company,e.title?` \u2014 ${e.title}`:``]},e.id))]})})()]}),o.unlinked_count>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{_(!g),h(``),x(1)},className:`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors ${g?`bg-amber/15 text-amber`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[(0,W.jsx)(lt,{size:12}),`Nicht verknuepft (`,o.unlinked_count,`)`]}),o.unanalyzed_count>0&&(0,W.jsxs)(`button`,{type:`button`,onClick:()=>{y(v?``:`nicht_extrahiert`),x(1)},className:`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors ${v?`bg-violet-500/15 text-violet-400`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[(0,W.jsx)(tt,{size:12}),`Nicht analysiert (`,o.unanalyzed_count,`)`]}),(0,W.jsx)(`div`,{className:`flex items-center gap-1`,children:[{col:`created_at`,label:`Datum`},{col:`filename`,label:`Name`},{col:`doc_type`,label:`Typ`}].map(e=>(0,W.jsxs)(`button`,{type:`button`,onClick:()=>be(e.col),className:`rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${S===e.col?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[e.label,S===e.col&&(T===`desc`?` ↓`:` ↑`)]},e.col))})]}),o.documents.length===0?(0,W.jsx)(Qn,{title:`Keine Dokumente`,description:u||f||m||g||v?`Keine Dokumente fuer diese Suche/Filter gefunden.`:`Noch keine Dokumente vorhanden. Dokumente werden beim Upload und E-Mail-Import automatisch erfasst.`}):(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(`div`,{className:`grid gap-2`,children:o.documents.map(e=>{let r=D===e.id,i=N===e.id;return(0,W.jsxs)(q,{className:G(`rounded-xl cursor-pointer transition-colors`,i?`ring-1 ring-sky/20`:`hover:bg-white/[0.02]`),onClick:()=>P(i?null:e.id),children:[(0,W.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,W.jsx)(`div`,{className:`mt-0.5 flex h-9 w-9 items-center justify-center rounded-lg bg-sky/10 shrink-0`,children:(0,W.jsx)(xe,{size:18,className:`text-sky`})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink truncate`,children:e.filename}),(0,W.jsx)(J,{tone:`neutral`,children:za(e.doc_type)}),(()=>{let t=Va(e.extraction_status);return(0,W.jsx)(J,{tone:t.tone,children:t.label})})()]}),e.app_company||e.app_title?(0,W.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(`bewerbungen`,{highlight:e.linked_application_id})},className:`mt-0.5 flex items-center gap-1 text-sm text-sky/70 hover:text-sky transition-colors`,children:[(0,W.jsx)(ke,{size:11}),(0,W.jsxs)(`span`,{className:`truncate`,children:[e.app_company,e.app_title?` \u2014 ${e.app_title}`:``]}),e.app_status&&(0,W.jsx)(J,{tone:e.app_status===`abgelehnt`?`danger`:e.app_status===`interview`?`amber`:`neutral`,className:`ml-1`,children:e.app_status})]}):(0,W.jsx)(`p`,{className:`mt-0.5 text-[11px] text-muted/30`,children:`Nicht verknuepft`}),e.extracted_text&&(0,W.jsxs)(`button`,{type:`button`,className:`mt-1 text-left text-xs text-muted/40 hover:text-muted/60 transition-colors w-full`,onClick:()=>O(r?null:e.id),children:[r?e.extracted_text.slice(0,500):e.extracted_text.slice(0,150),e.extracted_text.length>(r?500:150)&&`…`,e.extracted_text.length>150&&(0,W.jsx)(`span`,{className:`ml-1 text-sky/50`,children:r?`weniger`:`mehr`})]}),(0,W.jsx)(`div`,{className:`mt-1 text-[11px] text-muted/30`,children:e.created_at&&bn(e.created_at)})]}),(0,W.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),children:[e.extraction_status===`basis_analysiert`?(0,W.jsx)(`button`,{type:`button`,onClick:()=>B(e.id),className:`rounded-lg p-1.5 text-amber/50 hover:text-amber transition-colors`,title:`Vollanalyse starten (bisher nur Basis)`,children:(0,W.jsx)(tt,{size:14})}):e.extraction_status&&![`nicht_extrahiert`,``].includes(e.extraction_status)?(0,W.jsx)(`button`,{type:`button`,onClick:()=>B(e.id),className:`rounded-lg p-1.5 text-muted/30 hover:text-violet-400 transition-colors`,title:`Erneut analysieren`,children:(0,W.jsx)(Ye,{size:14})}):null,(0,W.jsx)(`button`,{type:`button`,onClick:()=>A({open:!0,doc:e,value:e.linked_application_id||``}),className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Verknuepfung aendern`,children:(0,W.jsx)(Ae,{size:14})}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{let n=e.id.slice(0,8);navigator.clipboard.writeText(n),t(`ID ${n} kopiert`,`success`)},className:`rounded-lg p-1.5 text-muted/30 hover:text-amber transition-colors`,title:`Kommunikations-ID kopieren (${e.id.slice(0,8)})`,children:(0,W.jsx)(me,{size:14})}),(0,W.jsx)(`a`,{href:Tt(`/api/documents/${e.id}/download`),className:`shrink-0 rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Herunterladen`,children:(0,W.jsx)(ge,{size:14})}),j===e.id?(0,W.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>Ce(e.id),className:`rounded-lg px-2 py-1 text-xs font-medium bg-red-500/15 text-red-400 hover:bg-red-500/25 transition-colors`,children:`Ja`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>M(null),className:`rounded-lg px-2 py-1 text-xs text-muted/50 hover:text-ink transition-colors`,children:`Nein`})]}):(0,W.jsx)(`button`,{type:`button`,onClick:()=>M(e.id),className:`shrink-0 rounded-lg p-1.5 text-muted/30 hover:text-red-400 transition-colors`,title:`Loeschen`,children:(0,W.jsx)(at,{size:14})})]})]}),i&&(0,W.jsxs)(`div`,{className:`mt-3 border-t border-white/[0.06] pt-3`,onClick:e=>e.stopPropagation(),children:[(0,W.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,W.jsxs)(`div`,{className:`text-xs text-muted/50 space-y-1`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/30`,children:`ID:`}),` `,e.id.slice(0,8)]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/30`,children:`Typ:`}),` `,za(e.doc_type)]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/30`,children:`Erstellt:`}),` `,e.created_at?xn(e.created_at):`k.A.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/30`,children:`Status:`}),` `,Va(e.extraction_status).label]}),e.app_company&&(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`span`,{className:`text-muted/30`,children:`Bewerbung:`}),` `,e.app_company,e.app_title?` — ${e.app_title}`:``]})]}),(0,W.jsxs)(`div`,{className:`flex flex-col gap-2 items-start sm:items-end`,children:[I.length>0&&(0,W.jsxs)(Xn,{className:`!h-8 !min-h-0 !w-auto !rounded-lg !border-white/10 !bg-white/[0.03] !pl-2 !pr-2 !py-0 !text-[11px] !text-muted/60`,value:ee[e.id]||``,onChange:t=>F(n=>({...n,[e.id]:t.target.value})),title:`Analyse-Template`,children:[(0,W.jsx)(`option`,{value:``,children:`Auto (nach Dokumenttyp)`}),I.map(e=>(0,W.jsx)(`option`,{value:e.key,children:e.label},e.key))]}),(0,W.jsxs)(K,{size:`sm`,onClick:()=>B(e.id),children:[(0,W.jsx)(tt,{size:13}),e.extraction_status===`basis_analysiert`?`Vollanalyse starten`:e.extraction_status&&![`nicht_extrahiert`,``].includes(e.extraction_status)?`Erneut analysieren`:`Analysieren`]}),(0,W.jsxs)(K,{size:`sm`,variant:`ghost`,onClick:()=>window.open(Tt(`/api/documents/${e.id}/download`),`_blank`),children:[(0,W.jsx)(ge,{size:13}),`Herunterladen`]})]})]}),e.extracted_text&&(0,W.jsx)(`div`,{className:`mt-3 rounded-lg bg-white/[0.02] border border-white/[0.04] p-3 max-h-48 overflow-y-auto`,children:(0,W.jsx)(`p`,{className:`text-xs text-muted/40 whitespace-pre-wrap`,children:e.extracted_text.slice(0,2e3)})})]})]},e.id)})}),o.pages>1&&(0,W.jsxs)(`div`,{className:`mt-4 flex items-center justify-center gap-2`,children:[(0,W.jsx)(`button`,{type:`button`,disabled:o.page<=1,onClick:()=>x(e=>e-1),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink disabled:opacity-30 transition-colors`,children:(0,W.jsx)(ie,{size:16})}),(0,W.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Seite `,o.page,` von `,o.pages,` (`,o.total,` Dokumente)`]}),(0,W.jsx)(`button`,{type:`button`,disabled:o.page>=o.pages,onClick:()=>x(e=>e+1),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink disabled:opacity-30 transition-colors`,children:(0,W.jsx)(R,{size:16})})]})]}),(0,W.jsx)(er,{open:k.open,title:`Dokument verknuepfen`,description:k.doc?`${k.doc.filename}`:``,onClose:()=>A({open:!1,doc:null,value:``,search:``}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>A({open:!1,doc:null,value:``,search:``}),children:`Abbrechen`}),(0,W.jsx)(K,{onClick:Se,children:`Speichern`})]}),children:(0,W.jsxs)(`div`,{className:`space-y-2`,children:[(0,W.jsx)(`input`,{type:`text`,value:k.search,onChange:e=>A(t=>({...t,search:e.target.value})),placeholder:`Bewerbung suchen...`,className:`w-full rounded-xl border border-white/8 bg-white/[0.03] py-2 px-3 text-sm text-ink placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),(0,W.jsxs)(`div`,{className:`max-h-48 overflow-y-auto rounded-xl border border-white/[0.05]`,children:[(0,W.jsx)(`button`,{type:`button`,className:G(`flex w-full px-3 py-2 text-sm transition-colors hover:bg-white/[0.06]`,k.value?`text-muted/60`:`text-sky font-medium`),onClick:()=>A(e=>({...e,value:``})),children:`Nicht verknuepft`}),(o.applications||[]).filter(e=>{let t=(k.search||``).toLowerCase();return!t||(e.company||``).toLowerCase().includes(t)||(e.title||``).toLowerCase().includes(t)}).map(e=>(0,W.jsxs)(`button`,{type:`button`,className:G(`flex w-full px-3 py-2 text-sm text-left transition-colors hover:bg-white/[0.06]`,k.value===e.id?`text-sky font-medium`:`text-muted/60`),onClick:()=>A(t=>({...t,value:e.id})),children:[e.company,e.title?` \u2014 ${e.title}`:``]},e.id))]})]})})]})}function Ua(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:r,height:i,viewBox:a,className:o,style:s,title:c,desc:l}=e,u=no(e,eo),d=a||{width:r,height:i,x:0,y:0},f=Wa(`recharts-surface`,o);return w.createElement(`svg`,to({},Qa(u),{className:f,width:r,height:i,style:s,viewBox:`${d.x} ${d.y} ${d.width} ${d.height}`,ref:t}),w.createElement(`title`,null,c),w.createElement(`desc`,null,l),n)}),ao=[`children`,`className`];function oo(){return oo=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:n,className:r}=e,i=so(e,ao),a=Wa(`recharts-layer`,r);return w.createElement(`g`,oo({className:a},Qa(i),{ref:t}),n)}),uo=(0,w.createContext)(null),fo=()=>(0,w.useContext)(uo);function po(e){return function(){return e}}var mo=Math.cos,ho=Math.sin,go=Math.sqrt,_o=Math.PI;_o/2;var vo=2*_o,yo=Math.PI,bo=2*yo,xo=1e-6,So=bo-xo;function Co(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return Co;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;txo)if(!(Math.abs(u*s-c*l)>xo)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((yo-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>xo&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>xo||Math.abs(this._y1-l)>xo)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%bo+bo),d>So?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>xo&&this._append`A${n},${n},0,${+(d>=yo)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function Eo(){return new To}Eo.prototype=To.prototype;function Do(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new To(t)}Array.prototype.slice;function Oo(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function ko(e){this._context=e}ko.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Ao(e){return new ko(e)}function jo(e){return e[0]}function Mo(e){return e[1]}function No(e,t){var n=po(!0),r=null,i=Ao,a=null,o=Do(s);e=typeof e==`function`?e:e===void 0?jo:po(e),t=typeof t==`function`?t:t===void 0?Mo:po(t);function s(s){var c,l=(s=Oo(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return No().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:po(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:po(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:po(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:po(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:po(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:po(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:po(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var Fo=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Io(e){return new Fo(e,!0)}function Lo(e){return new Fo(e,!1)}var Ro={draw(e,t){let n=go(t/_o);e.moveTo(n,0),e.arc(0,0,n,0,vo)}},zo={draw(e,t){let n=go(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},Bo=go(1/3),Vo=Bo*2,Ho={draw(e,t){let n=go(t/Vo),r=n*Bo;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Uo={draw(e,t){let n=go(t),r=-n/2;e.rect(r,r,n,n)}},Wo=.8908130915292852,Go=ho(_o/10)/ho(7*_o/10),Ko=ho(vo/10)*Go,qo=-mo(vo/10)*Go,Jo={draw(e,t){let n=go(t*Wo),r=Ko*n,i=qo*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=vo*t/5,o=mo(a),s=ho(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},Yo=go(3),Xo={draw(e,t){let n=-go(t/(Yo*3));e.moveTo(0,n*2),e.lineTo(-Yo*n,-n),e.lineTo(Yo*n,-n),e.closePath()}},Zo=-.5,Qo=go(3)/2,$o=1/go(12),es=($o/2+1)*3,ts={draw(e,t){let n=go(t/es),r=n/2,i=n*$o,a=r,o=n*$o+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo(Zo*r-Qo*i,Qo*r+Zo*i),e.lineTo(Zo*a-Qo*o,Qo*a+Zo*o),e.lineTo(Zo*s-Qo*c,Qo*s+Zo*c),e.lineTo(Zo*r+Qo*i,Zo*i-Qo*r),e.lineTo(Zo*a+Qo*o,Zo*o-Qo*a),e.lineTo(Zo*s+Qo*c,Zo*c-Qo*s),e.closePath()}};function ns(e,t){let n=null,r=Do(i);e=typeof e==`function`?e:po(e||Ro),t=typeof t==`function`?t:po(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:po(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:po(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function rs(){}function is(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function as(e){this._context=e}as.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:is(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:is(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function os(e){return new as(e)}function ss(e){this._context=e}ss.prototype={areaStart:rs,areaEnd:rs,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:is(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function cs(e){return new ss(e)}function ls(e){this._context=e}ls.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:is(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function us(e){return new ls(e)}function ds(e){this._context=e}ds.prototype={areaStart:rs,areaEnd:rs,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function fs(e){return new ds(e)}function ps(e){return e<0?-1:1}function ms(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(ps(a)+ps(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function hs(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function gs(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function _s(e){this._context=e}_s.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:gs(this,this._t0,hs(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,gs(this,hs(this,n=ms(this,e,t)),n);break;default:gs(this,this._t0,n=ms(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function vs(e){this._context=new ys(e)}(vs.prototype=Object.create(_s.prototype)).point=function(e,t){_s.prototype.point.call(this,t,e)};function ys(e){this._context=e}ys.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function bs(e){return new _s(e)}function xs(e){return new vs(e)}function Ss(e){this._context=e}Ss.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=Cs(e),i=Cs(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function Es(e){return new Ts(e,.5)}function Ds(e){return new Ts(e,0)}function Os(e){return new Ts(e,1)}function ks(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function js(e,t){return e[t]}function Ms(e){let t=[];return t.key=e,t}function Ns(){var e=po([]),t=As,n=ks,r=js;function i(i){var a=Array.from(e.apply(this,arguments),Ms),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e===`__proto__`}e.isUnsafeProperty=t})),Rs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e.includes(`.`)||e.includes(`[`)||e.includes(`]`)}}e.isDeepKey=t})),zs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}e.toKey=t})),Bs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(e==null)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(t).join(`,`);let n=String(e);return n===`0`&&Object.is(Number(e),-0)?`-0`:n}e.toString=t})),Vs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Bs(),n=zs();function r(e){if(Array.isArray(e))return e.map(n.toKey);if(typeof e==`symbol`)return[e];e=t.toString(e);let r=[],i=e.length;if(i===0)return r;let a=0,o=``,s=``,c=!1;for(e.charCodeAt(0)===46&&(r.push(``),a++);a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ls(),n=Rs(),r=zs(),i=Vs();function a(e,s,c){if(e==null)return c;switch(typeof s){case`string`:{if(t.isUnsafeProperty(s))return c;let r=e[s];return r===void 0?n.isDeepKey(s)?a(e,i.toPath(s),c):c:r}case`number`:case`symbol`:{typeof s==`number`&&(s=r.toKey(s));let t=e[s];return t===void 0?c:t}default:{if(Array.isArray(s))return o(e,s,c);if(s=Object.is(s?.valueOf(),-0)?`-0`:String(s),t.isUnsafeProperty(s))return c;let n=e[s];return n===void 0?c:n}}}function o(e,n,r){if(n.length===0)return r;let i=e;for(let e=0;e{t.exports=Hs().get})),Ws=4;function Gs(e){var t=10**(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ws),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function Ks(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+Gs(i)+n},``)}var qs=l(Us()),Js=e=>e===0?0:e>0?1:-1,Ys=e=>typeof e==`number`&&e!=+e,Xs=e=>typeof e==`string`&&e.indexOf(`%`)===e.length-1,Z=e=>(typeof e==`number`||e instanceof Number)&&!Ys(e),Zs=e=>Z(e)||typeof e==`string`,Qs=0,$s=e=>{var t=++Qs;return`${e||``}${t}`},ec=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!Z(e)&&typeof e!=`string`)return n;var i;if(Xs(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return Ys(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},tc=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):(0,qs.default)(e,t))===n)}var ic=e=>e==null,ac=e=>ic(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function oc(e){return e!=null}function sc(){}var cc=[`type`,`size`,`sizeType`];function lc(){return lc=Object.assign?Object.assign.bind():function(e){for(var t=1;t_c[`symbol${ac(e)}`]||Ro,bc=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*vc;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},xc=(e,t)=>{_c[`symbol${ac(e)}`]=t},Sc=e=>{var{type:t=`circle`,size:n=64,sizeType:r=`area`}=e,i=dc(dc({},hc(e,cc)),{},{type:t,size:n,sizeType:r}),a=`circle`;typeof t==`string`&&(a=t);var o=()=>{var e=yc(a),t=ns().type(e).size(bc(n,r,a))();if(t!==null)return t},{className:s,cx:c,cy:l}=i,u=Qa(i);return Z(c)&&Z(l)&&Z(n)?w.createElement(`path`,lc({},u,{className:Wa(`recharts-symbols`,s),transform:`translate(${c}, ${l})`,d:o()})):null};Sc.registerSymbol=xc;var Cc=e=>`radius`in e&&`startAngle`in e&&`endAngle`in e,wc=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,w.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{Ka(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},Tc=(e,t,n)=>r=>(e(t,n,r),null),Ec=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];Ka(i)&&typeof a==`function`&&(r||={},r[i]=Tc(a,t,n))}),r};function Dc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Oc(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}function Nc(){return Nc=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var d=t.formatter||i,f=Wa({"recharts-legend-item":!0,[`legend-item-${r}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var p=typeof s==`object`?Fc({},s):{};p.color=t.inactive?a:p.color||t.color;var m=d?d(t.value,t,r):t.value;return w.createElement(`li`,Nc({className:f,style:l,key:`legend-item-${r}`},Ec(e,t,r)),w.createElement(io,{width:n,height:n,viewBox:c,style:u,"aria-label":`${m} legend icon`},w.createElement(Hc,{data:t,iconType:o,inactiveColor:a})),w.createElement(`span`,{className:`recharts-legend-item-text`,style:p},m))})}var Wc=e=>{var t=Mc(e,Bc),{payload:n,layout:r,align:i}=t;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return w.createElement(`ul`,{className:`recharts-default-legend`,style:a},w.createElement(Uc,Nc({},t,{payload:n})))},Gc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){let n=new Map;for(let r=0;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return function(...n){return e.apply(this,n.slice(0,t))}}e.ary=t})),qc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e}e.identity=t})),Jc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Number.isSafeInteger(e)&&e>=0}e.isLength=t})),Yc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Jc();function n(e){return e!=null&&typeof e!=`function`&&t.isLength(e.length)}e.isArrayLike=n})),Xc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`object`&&!!e}e.isObjectLike=t})),Zc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yc(),n=Xc();function r(e){return n.isObjectLike(e)&&t.isArrayLike(e)}e.isArrayLikeObject=r})),Qc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Hs();function n(e){return function(n){return t.get(n,e)}}e.property=n})),$c=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e!==null&&(typeof e==`object`||typeof e==`function`)}e.isObject=t})),el=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null||typeof e!=`object`&&typeof e!=`function`}e.isPrimitive=t})),tl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}e.isEqualsSameValueZero=t})),nl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=$c(),n=el(),r=tl();function i(e,t,n){return typeof n==`function`?a(e,t,function e(t,r,i,o,s,c){let l=n(t,r,i,o,s,c);return l===void 0?a(t,r,e,c):!!l},new Map):i(e,t,()=>void 0)}function a(e,n,i,s){if(n===e)return!0;switch(typeof n){case`object`:return o(e,n,i,s);case`function`:return Object.keys(n).length>0?a(e,{...n},i,s):r.isEqualsSameValueZero(e,n);default:return t.isObject(e)?typeof n==`string`?n===``:!0:r.isEqualsSameValueZero(e,n)}}function o(e,t,r,i){if(t==null)return!0;if(Array.isArray(t))return c(e,t,r,i);if(t instanceof Map)return s(e,t,r,i);if(t instanceof Set)return l(e,t,r,i);let a=Object.keys(t);if(e==null||n.isPrimitive(e))return a.length===0;if(a.length===0)return!0;if(i?.has(t))return i.get(t)===e;i?.set(t,e);try{for(let o=0;o{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=nl();function n(e,n){return t.isMatchWith(e,n,()=>void 0)}e.isMatch=n})),il=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}e.getSymbols=t})),al=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}e.getTag=t})),ol=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.argumentsTag=`[object Arguments]`,e.arrayBufferTag=`[object ArrayBuffer]`,e.arrayTag=`[object Array]`,e.bigInt64ArrayTag=`[object BigInt64Array]`,e.bigUint64ArrayTag=`[object BigUint64Array]`,e.booleanTag=`[object Boolean]`,e.dataViewTag=`[object DataView]`,e.dateTag=`[object Date]`,e.errorTag=`[object Error]`,e.float32ArrayTag=`[object Float32Array]`,e.float64ArrayTag=`[object Float64Array]`,e.functionTag=`[object Function]`,e.int16ArrayTag=`[object Int16Array]`,e.int32ArrayTag=`[object Int32Array]`,e.int8ArrayTag=`[object Int8Array]`,e.mapTag=`[object Map]`,e.numberTag=`[object Number]`,e.objectTag=`[object Object]`,e.regexpTag=`[object RegExp]`,e.setTag=`[object Set]`,e.stringTag=`[object String]`,e.symbolTag=`[object Symbol]`,e.uint16ArrayTag=`[object Uint16Array]`,e.uint32ArrayTag=`[object Uint32Array]`,e.uint8ArrayTag=`[object Uint8Array]`,e.uint8ClampedArrayTag=`[object Uint8ClampedArray]`})),sl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}e.isTypedArray=t})),cl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=il(),n=al(),r=ol(),i=el(),a=sl();function o(e,t){return s(e,void 0,e,new Map,t)}function s(e,t,n,r=new Map,o=void 0){let u=o?.(e,t,n,r);if(u!==void 0)return u;if(i.isPrimitive(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let i=0;i{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=cl();function n(e){return t.cloneDeepWithImpl(e,void 0,e,new Map,void 0)}e.cloneDeep=n})),ul=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=rl(),n=ll();function r(e){return e=n.cloneDeep(e),n=>t.isMatch(n,e)}e.matches=r})),dl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=cl(),n=al(),r=ol();function i(e,i){return t.cloneDeepWith(e,(a,o,s,c)=>{let l=i?.(a,o,s,c);if(l!==void 0)return l;if(typeof e==`object`){if(n.getTag(e)===r.objectTag&&typeof e.constructor!=`function`){let n={};return c.set(e,n),t.copyProperties(n,e,s,c),n}switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{let n=new e.constructor(e?.valueOf());return t.copyProperties(n,e),n}case r.argumentsTag:{let n={};return t.copyProperties(n,e),n.length=e.length,n[Symbol.iterator]=e[Symbol.iterator],n}default:return}}})}e.cloneDeepWith=i})),fl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=dl();function n(e){return t.cloneDeepWith(e)}e.cloneDeep=n})),pl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=/^(?:0|[1-9]\d*)$/;function n(e,n=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=al();function n(e){return typeof e==`object`&&!!e&&t.getTag(e)===`[object Arguments]`}e.isArguments=n})),hl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Rs(),n=pl(),r=ml(),i=Vs();function a(e,a){let o;if(o=Array.isArray(a)?a:typeof a==`string`&&t.isDeepKey(a)&&e?.[a]==null?i.toPath(a):[a],o.length===0)return!1;let s=e;for(let e=0;e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=rl(),n=zs(),r=fl(),i=Hs(),a=hl();function o(e,o){switch(typeof e){case`object`:Object.is(e?.valueOf(),-0)&&(e=`-0`);break;case`number`:e=n.toKey(e);break}return o=r.cloneDeep(o),function(n){let r=i.get(n,e);return r===void 0?a.has(n,e):o===void 0?r===void 0:t.isMatch(r,o)}}e.matchesProperty=o})),_l=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=qc(),n=Qc(),r=ul(),i=gl();function a(e){if(e==null)return t.identity;switch(typeof e){case`function`:return e;case`object`:return Array.isArray(e)&&e.length===2?i.matchesProperty(e[0],e[1]):r.matches(e);case`string`:case`symbol`:case`number`:return n.property(e)}}e.iteratee=a})),vl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Gc(),n=Kc(),r=qc(),i=Zc(),a=_l();function o(e,o=r.identity){return i.isArrayLikeObject(e)?t.uniqBy(Array.from(e),n.ary(a.iteratee(o),1)):[]}e.uniqBy=o})),yl=l(o(((e,t)=>{t.exports=vl().uniqBy}))());function bl(e,t,n){return t===!0?(0,yl.default)(e,n):typeof t==`function`?(0,yl.default)(e,t):e}var xl=o((e=>{var t=d();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),Sl=o(((e,t)=>{t.exports=xl()})),Cl=o((e=>{var t=d(),n=Sl();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),wl=o(((e,t)=>{t.exports=Cl()})),Tl=(0,w.createContext)(null),El=wl(),Dl=e=>e,Ol=()=>{var e=(0,w.useContext)(Tl);return e?e.store.dispatch:Dl},kl=()=>{},Al=()=>kl,jl=(e,t)=>e===t;function Q(e){var t=(0,w.useContext)(Tl),n=(0,w.useMemo)(()=>t?t=>{if(t!=null)return e(t)}:kl,[t,e]);return(0,El.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Al,t?t.store.getState:kl,t?t.store.getState:kl,n,jl)}function Ml(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function Nl(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function Pl(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var Fl=e=>Array.isArray(e)?e:[e];function Il(e){let t=Array.isArray(e[0])?e[0]:e;return Pl(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function Ll(e,t){let n=[],{length:r}=e;for(let i=0;i{n=Hl(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function Wl(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),Ml(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=Ul,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=Fl(c),p=Fl(u),m=Il(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=Ll(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var $=Wl(Ul),Gl=Object.assign((e,t=$)=>{Nl(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>Gl}),Kl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`?1:e===null?2:e===void 0?3:e===e?0:4}e.compareValues=(e,n,r)=>{if(e!==n){let i=t(e),a=t(n);if(i===a&&i===0){if(en)return r===`desc`?-1:1}return r===`desc`?a-i:i-a}return 0}})),ql=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`||e instanceof Symbol}e.isSymbol=t})),Jl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ql(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;function i(e,i){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||t.isSymbol(e)?!0:typeof e==`string`&&(r.test(e)||!n.test(e))||i!=null&&Object.hasOwn(i,e)}e.isKey=i})),Yl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Kl(),n=Jl(),r=Vs();function i(e,i,a,o){if(e==null)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=i==null?[null]:[i]),i.length===0&&(i=[null]),Array.isArray(a)||(a=a==null?[]:[a]),a=a.map(e=>String(e));let s=(e,t)=>{let n=e;for(let e=0;et==null||e==null?t:typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:s(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?s(t,e):typeof t==`object`?t[e]:t,l=i.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||n.isKey(e)?e:{key:e,path:r.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>c(t,e))})).slice().sort((e,n)=>{for(let r=0;re.original)}e.orderBy=i})),Xl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=pl(),n=Yc(),r=$c(),i=tl();function a(e,a,o){return r.isObject(o)&&(typeof a==`number`&&n.isArrayLike(o)&&t.isIndex(a)&&a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yl(),n=Xl(),r=Zl();function i(e,...i){let a=i.length;return a>1&&r.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&r.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,n.flatten(i),[`asc`])}e.sortBy=i})),$l=l(o(((e,t)=>{t.exports=Ql().sortBy}))()),eu=e=>e.legend.settings,tu=e=>e.legend.size,nu=$([e=>e.legend.payload,eu],(e,t)=>{var{itemSorter:n}=t,r=e.flat(1);return n?(0,$l.default)(r,n):r});function ru(){return Q(nu)}var iu=1;function au(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],[t,n]=(0,w.useState)({height:0,left:0,top:0,width:0});return[t,(0,w.useCallback)(e=>{if(e!=null){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>iu||Math.abs(i.left-t.left)>iu||Math.abs(i.top-t.top)>iu||Math.abs(i.width-t.width)>iu)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e])]}function ou(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var su=typeof Symbol==`function`&&Symbol.observable||`@@observable`,cu=()=>Math.random().toString(36).substring(7).split(``).join(`.`),lu={INIT:`@@redux/INIT${cu()}`,REPLACE:`@@redux/REPLACE${cu()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${cu()}`};function uu(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function du(e,t,n){if(typeof e!=`function`)throw Error(ou(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(ou(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(ou(1));return n(du)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(ou(3));return i}function d(e){if(typeof e!=`function`)throw Error(ou(4));if(c)throw Error(ou(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(ou(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!uu(e))throw Error(ou(7));if(e.type===void 0)throw Error(ou(8));if(typeof e.type!=`string`)throw Error(ou(17));if(c)throw Error(ou(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(ou(10));r=e,f({type:lu.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(ou(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[su](){return this}}}return f({type:lu.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[su]:m}}function fu(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:lu.INIT})===void 0)throw Error(ou(12));if(n(void 0,{type:lu.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(ou(13))})}function pu(e){let t=Object.keys(e),n={};for(let r=0;re:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function hu(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(ou(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=mu(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function gu(e){return uu(e)&&`type`in e&&typeof e.type==`string`}var _u=Symbol.for(`immer-nothing`),vu=Symbol.for(`immer-draftable`),yu=Symbol.for(`immer-state`);function bu(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var xu=Object,Su=xu.getPrototypeOf,Cu=`constructor`,wu=`prototype`,Tu=`configurable`,Eu=`enumerable`,Du=`writable`,Ou=`value`,ku=e=>!!e&&!!e[yu];function Au(e){return e?Nu(e)||Bu(e)||!!e[vu]||!!e[Cu]?.[vu]||Vu(e)||Hu(e):!1}var ju=xu[wu][Cu].toString(),Mu=new WeakMap;function Nu(e){if(!e||!Uu(e))return!1;let t=Su(e);if(t===null||t===xu[wu])return!0;let n=xu.hasOwnProperty.call(t,Cu)&&t[Cu];if(n===Object)return!0;if(!Wu(n))return!1;let r=Mu.get(n);return r===void 0&&(r=Function.toString.call(n),Mu.set(n,r)),r===ju}function Pu(e,t,n=!0){Fu(e)===0?(n?Reflect.ownKeys(e):xu.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Fu(e){let t=e[yu];return t?t.type_:Bu(e)?1:Vu(e)?2:Hu(e)?3:0}var Iu=(e,t,n=Fu(e))=>n===2?e.has(t):xu[wu].hasOwnProperty.call(e,t),Lu=(e,t,n=Fu(e))=>n===2?e.get(t):e[t],Ru=(e,t,n,r=Fu(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function zu(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Bu=Array.isArray,Vu=e=>e instanceof Map,Hu=e=>e instanceof Set,Uu=e=>typeof e==`object`,Wu=e=>typeof e==`function`,Gu=e=>typeof e==`boolean`;function Ku(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var qu=e=>e.copy_||e.base_,Ju=e=>e.modified_?e.copy_:e.base_;function Yu(e,t){if(Vu(e))return new Map(e);if(Hu(e))return new Set(e);if(Bu(e))return Array[wu].slice.call(e);let n=Nu(e);if(t===!0||t===`class_only`&&!n){let t=xu.getOwnPropertyDescriptors(e);delete t[yu];let n=Reflect.ownKeys(t);for(let r=0;r1&&xu.defineProperties(e,{set:Qu,add:Qu,clear:Qu,delete:Qu}),xu.freeze(e),t&&Pu(e,(e,t)=>{Xu(t,!0)},!1),e)}function Zu(){bu(2)}var Qu={[Ou]:Zu};function $u(e){return e===null||!Uu(e)?!0:xu.isFrozen(e)}var ed=`MapSet`,td=`Patches`,nd=`ArrayMethods`,rd={};function id(e){let t=rd[e];return t||bu(0,e),t}var ad=e=>!!rd[e],od,sd=()=>od,cd=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:ad(ed)?id(ed):void 0,arrayMethodsPlugin_:ad(nd)?id(nd):void 0});function ld(e,t){t&&(e.patchPlugin_=id(td),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function ud(e){dd(e),e.drafts_.forEach(pd),e.drafts_=null}function dd(e){e===od&&(od=e.parent_)}var fd=e=>od=cd(od,e);function pd(e){let t=e[yu];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function md(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[yu].modified_&&(ud(t),bu(4)),Au(e)&&(e=hd(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[yu].base_,e,t)}else e=hd(t,n);return gd(t,e,!0),ud(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===_u?void 0:e}function hd(e,t){if($u(t))return t;let n=t[yu];if(!n)return wd(t,e.handledSet_,e);if(!vd(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);Sd(n,e)}return n.copy_}function gd(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Xu(t,n)}function _d(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var vd=(e,t)=>e.scope_===t,yd=[];function bd(e,t,n,r){let i=qu(e),a=e.type_;if(r!==void 0&&Lu(i,r,a)===t){Ru(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Pu(i,(e,n)=>{if(ku(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??yd;for(let e of o)Ru(i,e,n,a)}function xd(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!vd(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Ju(i);bd(e,i.draft_??i,a,n),Sd(i,r)})}function Sd(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}_d(e)}}function Cd(e,t,n){let{scope_:r}=e;if(ku(n)){let i=n[yu];vd(i,r)&&i.callbacks_.push(function(){Md(e),bd(e,n,Ju(i),t)})}else Au(n)&&e.callbacks_.push(function(){let i=qu(e);e.type_===3?i.has(n)&&wd(n,r.handledSet_,r):Lu(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&wd(Lu(e.copy_,t,e.type_),r.handledSet_,r)})}function wd(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||ku(e)||t.has(e)||!Au(e)||$u(e)?e:(t.add(e),Pu(e,(r,i)=>{if(ku(i)){let t=i[yu];vd(t,n)&&(Ru(e,r,Ju(t),e.type_),_d(t))}else Au(i)&&wd(i,t,n)}),e)}function Td(e,t){let n=Bu(e),r={type_:n?1:0,scope_:t?t.scope_:sd(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Ed;n&&(i=[r],a=Dd);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Ed={get(e,t){if(t===yu)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=qu(e);if(!Iu(i,t,e.type_))return kd(e,i,t);let a=i[t];if(e.finalized_||!Au(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ku(t))return a;if(a===Od(e.base_,t)){Md(e);let n=e.type_===1?+t:t,r=Pd(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in qu(e)},ownKeys(e){return Reflect.ownKeys(qu(e))},set(e,t,n){let r=Ad(qu(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Od(qu(e),t),i=r?.[yu];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(zu(n,r)&&(n!==void 0||Iu(e.base_,t,e.type_)))return!0;Md(e),jd(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Cd(e,t,n),!0)},deleteProperty(e,t){return Md(e),Od(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),jd(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=qu(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[Du]:!0,[Tu]:e.type_!==1||t!==`length`,[Eu]:r[Eu],[Ou]:n[t]}},defineProperty(){bu(11)},getPrototypeOf(e){return Su(e.base_)},setPrototypeOf(){bu(12)}},Dd={};for(let e in Ed){let t=Ed[e];Dd[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}Dd.deleteProperty=function(e,t){return Dd.set.call(this,e,t,void 0)},Dd.set=function(e,t,n){return Ed.set.call(this,e[0],t,n,e[0])};function Od(e,t){let n=e[yu];return(n?qu(n):e)[t]}function kd(e,t,n){let r=Ad(t,n);return r?Ou in r?r[Ou]:r.get?.call(e.draft_):void 0}function Ad(e,t){if(!(t in e))return;let n=Su(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=Su(n)}}function jd(e){e.modified_||(e.modified_=!0,e.parent_&&jd(e.parent_))}function Md(e){e.copy_||=(e.assigned_=new Map,Yu(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Nd=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Wu(e)&&!Wu(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Wu(t)||bu(6),n!==void 0&&!Wu(n)&&bu(7);let r;if(Au(e)){let i=fd(this),a=Pd(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?ud(i):dd(i)}return ld(i,n),md(r,i)}else if(!e||!Uu(e)){if(r=t(e),r===void 0&&(r=e),r===_u&&(r=void 0),this.autoFreeze_&&Xu(r,!0),n){let t=[],i=[];id(td).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else bu(1,e)},this.produceWithPatches=(e,t)=>{if(Wu(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},Gu(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),Gu(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),Gu(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Au(e)||bu(8),ku(e)&&(e=Fd(e));let t=fd(this),n=Pd(t,e,void 0);return n[yu].isManual_=!0,dd(t),n}finishDraft(e,t){let n=e&&e[yu];(!n||!n.isManual_)&&bu(9);let{scope_:r}=n;return ld(r,t),md(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=id(td).applyPatches_;return ku(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Pd(e,t,n,r){let[i,a]=Vu(t)?id(ed).proxyMap_(t,n):Hu(t)?id(ed).proxySet_(t,n):Td(t,n);return(n?.scope_??sd()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?xd(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Fd(e){return ku(e)||bu(10,e),Id(e)}function Id(e){if(!Au(e)||$u(e))return e;let t=e[yu],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Yu(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Yu(e,!0);return Pu(n,(e,t)=>{Ru(n,e,Id(t))},r),t&&(t.finalized_=!1),n}var Ld=new Nd().produce;function Rd(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var zd=Rd(),Bd=Rd,Vd=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?mu:mu.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;var Hd=e=>e&&typeof e.match==`function`;function Ud(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(sp(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>gu(t)&&t.type===e,n}var Wd=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function Gd(e){return Au(e)?Ld(e,()=>{}):e}function Kd(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function qd(e){return typeof e==`boolean`}var Jd=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new Wd;return t&&(qd(t)?a.push(zd):a.push(Bd(t.extraArgument))),a},Yd=`RTK_autoBatch`,Xd=()=>e=>({payload:e,meta:{[Yd]:!0}}),Zd=e=>t=>{setTimeout(t,e)},Qd=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?window.requestAnimationFrame:Zd(10):e.type===`callback`?e.queueNotification:Zd(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[Yd],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},$d=e=>function(t){let{autoBatch:n=!0}=t??{},r=new Wd(e);return n&&r.push(Qd(typeof n==`object`?n:void 0)),r};function ef(e){let t=Jd(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(uu(n))c=pu(n);else throw Error(sp(1));let l;l=typeof r==`function`?r(t):t();let u=mu;i&&(u=Vd({trace:!1,...typeof i==`object`&&i}));let d=$d(hu(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return du(c,o,p)}function tf(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(sp(28));if(r in t)throw Error(sp(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function nf(e){return typeof e==`function`}function rf(e,t){let[n,r,i]=tf(t),a;if(nf(e))a=()=>Gd(e());else{let t=Gd(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n)if(ku(e)){let r=n(e,t);return r===void 0?e:r}else if(Au(e))return Ld(e,e=>n(e,t));else{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}return e},e)}return o.getInitialState=a,o}var af=(e,t)=>Hd(e)?e.match(t):e(t);function of(...e){return t=>e.some(e=>af(e,t))}var sf=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,cf=(e=21)=>{let t=``,n=e;for(;n--;)t+=sf[Math.random()*64|0];return t},lf=[`name`,`message`,`stack`,`code`],uf=class{constructor(e,t){this.payload=e,this.meta=t}_type},df=class{constructor(e,t){this.payload=e,this.meta=t}_type},ff=e=>{if(typeof e==`object`&&e){let t={};for(let n of lf)typeof e[n]==`string`&&(t[n]=e[n]);return t}return{message:String(e)}},pf=`External signal was aborted`;(()=>{function e(e,t,n){let r=Ud(e+`/fulfilled`,(e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:`fulfilled`}})),i=Ud(e+`/pending`,(e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:`pending`}})),a=Ud(e+`/rejected`,(e,t,r,i,a)=>({payload:i,error:(n&&n.serializeError||ff)(e||`Rejected`),meta:{...a||{},arg:r,requestId:t,rejectedWithValue:!!i,requestStatus:`rejected`,aborted:e?.name===`AbortError`,condition:e?.name===`ConditionError`}}));function o(e,{signal:o}={}){return(s,c,l)=>{let u=n?.idGenerator?n.idGenerator(e):cf(),d=new AbortController,f,p;function m(e){p=e,d.abort()}o&&(o.aborted?m(pf):o.addEventListener(`abort`,()=>m(pf),{once:!0}));let h=async function(){let o;try{let a=n?.condition?.(e,{getState:c,extra:l});if(hf(a)&&(a=await a),a===!1||d.signal.aborted)throw{name:`ConditionError`,message:`Aborted due to condition callback returning false.`};let h=new Promise((e,t)=>{f=()=>{t({name:`AbortError`,message:p||`Aborted`})},d.signal.addEventListener(`abort`,f,{once:!0})});s(i(u,e,n?.getPendingMeta?.({requestId:u,arg:e},{getState:c,extra:l}))),o=await Promise.race([h,Promise.resolve(t(e,{dispatch:s,getState:c,extra:l,requestId:u,signal:d.signal,abort:m,rejectWithValue:(e,t)=>new uf(e,t),fulfillWithValue:(e,t)=>new df(e,t)})).then(t=>{if(t instanceof uf)throw t;return t instanceof df?r(t.payload,u,e,t.meta):r(t,u,e)})])}catch(t){o=t instanceof uf?a(null,u,e,t.payload,t.meta):a(t,u,e)}finally{f&&d.signal.removeEventListener(`abort`,f)}return n&&!n.dispatchConditionRejection&&a.match(o)&&o.meta.condition||s(o),o}();return Object.assign(h,{abort:m,requestId:u,arg:e,unwrap(){return h.then(mf)}})}}return Object.assign(o,{pending:i,rejected:a,fulfilled:r,settled:of(a,r),typePrefix:e})}return e.withTypes=()=>e,e})();function mf(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function hf(e){return typeof e==`object`&&!!e&&typeof e.then==`function`}var gf=Symbol.for(`rtk-slice-createasyncthunk`);function _f(e,t){return`${e}/${t}`}function vf({creators:e}={}){let t=e?.asyncThunk?.[gf];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(sp(11));let i=(typeof e.reducers==`function`?e.reducers(xf()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(sp(12));if(n in o.sliceCaseReducersByType)throw Error(sp(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:_f(n,r),createNotation:typeof e.reducers==`function`};Cf(a)?Tf(o,a,s,t):Sf(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?tf(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return rf(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||=c(),f(e,t)}function m(){return f||=c(),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=Kd(d,r,m)),i}function i(t=l){return Kd(Kd(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=yf(a,t,()=>Kd(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function yf(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var bf=vf();function xf(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function Sf({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!wf(r))throw Error(sp(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Ud(e,o):Ud(e))}function Cf(e){return e._reducerDefinitionType===`asyncThunk`}function wf(e){return e._reducerDefinitionType===`reducerWithPrepare`}function Tf({type:e,reducerName:t},n,r,i){if(!i)throw Error(sp(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||Ef,pending:s||Ef,rejected:c||Ef,settled:l||Ef})}function Ef(){}var Df=`task`,Of=`listener`,kf=`completed`,Af=`cancelled`,jf=`task-${Af}`,Mf=`task-${kf}`,Nf=`${Of}-${Af}`,Pf=`${Of}-${kf}`,Ff=class{constructor(e){this.code=e,this.message=`${Df} ${Af} (reason: ${e})`}name=`TaskAbortError`;message},If=(e,t)=>{if(typeof e!=`function`)throw TypeError(sp(32))},Lf=()=>{},Rf=(e,t=Lf)=>(e.catch(t),e),zf=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),Bf=e=>{if(e.aborted)throw new Ff(e.reason)};function Vf(e,t){let n=Lf;return new Promise((r,i)=>{let a=()=>i(new Ff(e.reason));if(e.aborted){a();return}n=zf(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=Lf})}var Hf=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof Ff?`cancelled`:`rejected`,error:e}}finally{t?.()}},Uf=e=>t=>Rf(Vf(e,t).then(t=>(Bf(e),t))),Wf=e=>{let t=Uf(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:Gf}=Object,Kf={},qf=`listenerMiddleware`,Jf=(e,t)=>{let n=t=>zf(e,()=>t.abort(e.reason));return(r,i)=>{If(r,`taskExecutor`);let a=new AbortController;n(a);let o=Hf(async()=>{Bf(e),Bf(a.signal);let t=await r({pause:Uf(a.signal),delay:Wf(a.signal),signal:a.signal});return Bf(a.signal),t},()=>a.abort(Mf));return i?.autoJoin&&t.push(o.catch(Lf)),{result:Uf(e)(o),cancel(){a.abort(jf)}}}},Yf=(e,t)=>{let n=async(n,r)=>{Bf(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await Vf(t,Promise.race(a));return Bf(t),e}finally{i()}};return(e,t)=>Rf(n(e,t))},Xf=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=Ud(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(sp(21));return If(a,`options.listener`),{predicate:i,type:t,effect:a}},Zf=Gf(e=>{let{type:t,predicate:n,effect:r}=Xf(e);return{id:cf(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(sp(22))}}},{withTypes:()=>Zf}),Qf=(e,t)=>{let{type:n,effect:r,predicate:i}=Xf(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},$f=e=>{e.pending.forEach(e=>{e.abort(Nf)})},ep=(e,t)=>()=>{for(let e of t.keys())$f(e);e.clear()},tp=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},np=Gf(Ud(`${qf}/add`),{withTypes:()=>np}),rp=Ud(`${qf}/removeAll`),ip=Gf(Ud(`${qf}/remove`),{withTypes:()=>ip}),ap=(...e)=>{console.error(`${qf}/error`,...e)},op=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=ap}=e;If(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&$f(e)}),c=e=>s(Qf(t,e)??Zf(e));Gf(c,{withTypes:()=>c});let l=e=>{let n=Qf(t,e);return n&&(n.unsubscribe(),e.cancelActive&&$f(n)),!!n};Gf(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=Yf(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,Gf({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Wf(u.signal),pause:Uf(u.signal),extra:a,signal:u.signal,fork:Jf(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort(Nf),n.delete(e))})},cancel:()=>{u.abort(Nf),e.pending.delete(u)},throwIfCancelled:()=>{Bf(u.signal)}})))}catch(e){e instanceof Ff||tp(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(Pf),i(e),e.pending.delete(u)}},d=ep(t,n);return{middleware:e=>n=>r=>{if(!gu(r))return n(r);if(np.match(r))return c(r.payload);if(rp.match(r)){d();return}if(ip.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===Kf)throw Error(sp(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,tp(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=Kf}return s},startListening:c,stopListening:l,clearListeners:d}};function sp(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var cp=bf({name:`chartLayout`,initialState:{layoutType:`horizontal`,width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){e.margin.top=t.payload.top??0,e.margin.right=t.payload.right??0,e.margin.bottom=t.payload.bottom??0,e.margin.left=t.payload.left??0},setScale(e,t){e.scale=t.payload}}}),{setMargin:lp,setLayout:up,setChartSize:dp,setScale:fp}=cp.actions,pp=cp.reducer;function mp(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function hp(e){return Number.isFinite(e)}function gp(e){return typeof e==`number`&&e>0&&Number.isFinite(e)}function _p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function vp(e){for(var t=1;t{if(t&&n){var{width:r,height:i}=n,{align:a,verticalAlign:o,layout:s}=t;if((s===`vertical`||s===`horizontal`&&o===`middle`)&&a!==`center`&&Z(e[a]))return vp(vp({},e),{},{[a]:e[a]+(r||0)});if((s===`horizontal`||s===`vertical`&&a===`center`)&&o!==`middle`&&Z(e[o]))return vp(vp({},e),{},{[o]:e[o]+(i||0)})}return e},wp=(e,t)=>e===`horizontal`&&t===`xAxis`||e===`vertical`&&t===`yAxis`||e===`centric`&&t===`angleAxis`||e===`radial`&&t===`radiusAxis`,Tp=(e,t,n,r)=>{if(r)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===n&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(n),o},Ep=(e,t,n)=>{if(!e)return null;var{duplicateDomain:r,type:i,range:a,scale:o,realScaleType:s,isCategorical:c,categoricalDomain:l,tickCount:u,ticks:d,niceTicks:f,axisType:p}=e;if(!o)return null;var m=s===`scaleBand`&&o.bandwidth?o.bandwidth()/2:2,h=(t||n)&&i===`category`&&o.bandwidth?o.bandwidth()/m:0;return h=p===`angleAxis`&&a&&a.length>=2?Js(a[0]-a[1])*2*h:h,t&&(d||f)?(d||f||[]).map((e,t)=>{var n=r?r.indexOf(e):e,i=o.map(n);return hp(i)?{coordinate:i+h,value:e,offset:h,index:t}:null}).filter(oc):c&&l?l.map((e,t)=>{var n=o.map(e);return hp(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(oc):o.ticks&&!n&&u!=null?o.ticks(u).map((e,t)=>{var n=o.map(e);return hp(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(oc):o.domain().map((e,t)=>{var n=o.map(e);return hp(n)?{coordinate:n+h,value:r?r[e]:e,index:t,offset:h}:null}).filter(oc)},Dp=(e,t)=>{if(!t||t.length!==2||!Z(t[0])||!Z(t[1]))return e;var n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]),i=[e[0],e[1]];return(!Z(e[0])||e[0]r)&&(i[1]=r),i[0]>r&&(i[0]=r),i[1]{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(s[0]=i,i+=u,s[1]=i):(s[0]=a,a+=u,s[1]=a)}}}},expand:Ps,none:ks,silhouette:Fs,wiggle:Is,positive:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(o[0]=i,i+=s,o[1]=i):(o[0]=0,o[1]=0)}}}}},kp=(e,t,n)=>{var r=Op[n]??ks,i=Ns().keys(t).value((e,t)=>Number(Sp(e,t,0))).order(As).offset(r)(e);return i.forEach((n,r)=>{n.forEach((n,i)=>{var a=Sp(e[i],t[r],0);Array.isArray(a)&&a.length===2&&Z(a[0])&&Z(a[1])&&(n[0]=a[0],n[1]=a[1])})}),i};function Ap(e){return e==null?void 0:String(e)}function jp(e){var{axis:t,ticks:n,bandSize:r,entry:i,index:a,dataKey:o}=e;if(t.type===`category`){if(!t.allowDuplicatedCategory&&t.dataKey&&!ic(i[t.dataKey])){var s=rc(n,`value`,i[t.dataKey]);if(s)return s.coordinate+r/2}return n!=null&&n[a]?n[a].coordinate+r/2:null}var c=Sp(i,ic(o)?t.dataKey:o),l=t.scale.map(c);return Z(l)?l:null}var Mp=e=>{var{axis:t,ticks:n,offset:r,bandSize:i,entry:a,index:o}=e;if(t.type===`category`)return n[o]?n[o].coordinate+r:null;var s=Sp(a,t.dataKey,t.scale.domain()[o]);if(ic(s))return null;var c=t.scale.map(s);return Z(c)?c-i/2+r:null},Np=e=>{var{numericAxis:t}=e,n=t.scale.domain();if(t.type===`number`){var r=Math.min(n[0],n[1]),i=Math.max(n[0],n[1]);return r<=0&&i>=0?0:i<0?i:r}return n[0]},Pp=e=>{var t=e.flat(2).filter(Z);return[Math.min(...t),Math.max(...t)]},Fp=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],Ip=(e,t,n)=>{if(e!=null)return Fp(Object.keys(e).reduce((r,i)=>{var a=e[i];if(!a)return r;var{stackedData:o}=a,s=o.reduce((e,r)=>{var i=Pp(mp(r,t,n));return!hp(i[0])||!hp(i[1])?e:[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(s[0],r[0]),Math.max(s[1],r[1])]},[1/0,-1/0]))},Lp=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Rp=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,zp=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=(0,$l.default)(t,e=>e.coordinate),a=1/0,o=1,s=i.length;o{if(t===`horizontal`)return e.relativeX;if(t===`vertical`)return e.relativeY},Up=(e,t)=>t===`centric`?e.angle:e.radius,Wp=e=>e.layout.width,Gp=e=>e.layout.height,Kp=e=>e.layout.scale,qp=e=>e.layout.margin,Jp=$(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Yp=$(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),Xp=`data-recharts-item-index`,Zp=`data-recharts-item-id`;function Qp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function $p(e){for(var t=1;te.brush.height;function im(e){return Yp(e).reduce((e,t)=>t.orientation===`left`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function am(e){return Yp(e).reduce((e,t)=>t.orientation===`right`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function om(e){return Jp(e).reduce((e,t)=>t.orientation===`top`&&!t.mirror&&!t.hide?e+t.height:e,0)}function sm(e){return Jp(e).reduce((e,t)=>t.orientation===`bottom`&&!t.mirror&&!t.hide?e+t.height:e,0)}var cm=$([Wp,Gp,qp,rm,im,am,om,sm,eu,tu],(e,t,n,r,i,a,o,s,c,l)=>{var u={left:(n.left||0)+i,right:(n.right||0)+a},d=$p($p({},{top:(n.top||0)+o,bottom:(n.bottom||0)+s}),u),f=d.bottom;d.bottom+=r,d=Cp(d,c,l);var p=e-d.left-d.right,m=t-d.top-d.bottom;return $p($p({brushBottom:f},d),{},{width:Math.max(p,0),height:Math.max(m,0)})}),lm=$(cm,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),um=$(Wp,Gp,(e,t)=>({x:0,y:0,width:e,height:t})),dm=(0,w.createContext)(null),fm=()=>(0,w.useContext)(dm)!=null,pm=e=>e.brush,mm=$([pm,cm,qp],(e,t,n)=>({height:e.height,x:Z(e.x)?e.x:t.left,y:Z(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:Z(e.width)?e.width:t.width})),hm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}e.debounce=t})),gm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=hm();function n(e,n=0,r={}){typeof r!=`object`&&(r={});let{leading:i=!1,trailing:a=!0,maxWait:o}=r,s=[,,];i&&(s[0]=`leading`),a&&(s[1]=`trailing`);let c,l=null,u=t.debounce(function(...t){c=e.apply(this,t),l=null},n,{edges:s}),d=function(...t){return o!=null&&(l===null&&(l=Date.now()),Date.now()-l>=o)?(c=e.apply(this,t),l=Date.now(),u.cancel(),u.schedule(),c):(u.apply(this,t),c)};return d.cancel=u.cancel,d.flush=()=>(u.flush(),c),d}e.debounce=n})),_m=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=gm();function n(e,n=0,r={}){let{leading:i=!0,trailing:a=!0}=r;return t.debounce(e,n,{leading:i,maxWait:n,trailing:a})}e.throttle=n})),vm=o(((e,t)=>{t.exports=_m().throttle})),ym=!0,bm=function(e,t){var n=[...arguments].slice(2);if(ym&&typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e))if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,()=>n[r++]))}},xm={width:`100%`,height:`100%`,debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},Sm=(e,t,n)=>{var{width:r=xm.width,height:i=xm.height,aspect:a,maxHeight:o}=n,s=Xs(r)?e:Number(r),c=Xs(i)?t:Number(i);return a&&a>0&&(s?c=s/a:c&&(s=c*a),o&&c!=null&&c>o&&(c=o)),{calculatedWidth:s,calculatedHeight:c}},Cm={width:0,height:0,overflow:`visible`},wm={width:0,overflowX:`visible`},Tm={height:0,overflowY:`visible`},Em={},Dm=e=>{var{width:t,height:n}=e,r=Xs(t),i=Xs(n);return r&&i?Cm:r?wm:i?Tm:Em};function Om(e){var{width:t,height:n,aspect:r}=e,i=t,a=n;return i===void 0&&a===void 0?(i=xm.width,a=xm.height):i===void 0?i=r&&r>0?void 0:xm.width:a===void 0&&(a=r&&r>0?void 0:xm.height),{width:i,height:a}}var km=l(vm());function Am(){return Am=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:r}),[n,r]);return Lm(i)?w.createElement(Im.Provider,{value:i},t):null}var zm=()=>(0,w.useContext)(Im),Bm=(0,w.forwardRef)((e,t)=>{var{aspect:n,initialDimension:r=xm.initialDimension,width:i,height:a,minWidth:o=xm.minWidth,minHeight:s,maxHeight:c,children:l,debounce:u=xm.debounce,id:d,className:f,onResize:p,style:m={}}=e,h=(0,w.useRef)(null),g=(0,w.useRef)();g.current=p,(0,w.useImperativeHandle)(t,()=>h.current);var[_,v]=(0,w.useState)({containerWidth:r.width,containerHeight:r.height}),y=(0,w.useCallback)((e,t)=>{v(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]);(0,w.useEffect)(()=>{if(h.current==null||typeof ResizeObserver>`u`)return sc;var e=e=>{var t,n=e[0];if(n!=null){var{width:r,height:i}=n.contentRect;y(r,i),(t=g.current)==null||t.call(g,r,i)}};u>0&&(e=(0,km.default)(e,u,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:n,height:r}=h.current.getBoundingClientRect();return y(n,r),t.observe(h.current),()=>{t.disconnect()}},[y,u]);var{containerWidth:b,containerHeight:x}=_;bm(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var{calculatedWidth:S,calculatedHeight:C}=Sm(b,x,{width:i,height:a,aspect:n,maxHeight:c});return bm(S!=null&&S>0||C!=null&&C>0,`The width(%s) and height(%s) of chart should be greater than 0, - please check the style of container, or the props width(%s) and height(%s), - or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the - height and width.`,S,C,i,a,o,s,n),w.createElement(`div`,{id:d?`${d}`:void 0,className:Wa(`recharts-responsive-container`,f),style:Mm(Mm({},m),{},{width:i,height:a,minWidth:o,minHeight:s,maxHeight:c}),ref:h},w.createElement(`div`,{style:Dm({width:i,height:a})},w.createElement(Rm,{width:S,height:C},l)))}),Vm=(0,w.forwardRef)((e,t)=>{var n=zm();if(gp(n.width)&&gp(n.height))return e.children;var{width:r,height:i}=Om({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:a,calculatedHeight:o}=Sm(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return Z(a)&&Z(o)?w.createElement(Rm,{width:a,height:o},e.children):w.createElement(Bm,Am({},e,{width:r,height:i,ref:t}))});function Hm(e){if(e)return{x:e.x,y:e.y,upperWidth:`upperWidth`in e?e.upperWidth:e.width,lowerWidth:`lowerWidth`in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var Um=()=>{var e=fm(),t=Q(lm),n=Q(mm),r=Q(pm)?.padding;return!e||!n||!r?t:{width:n.width-r.left-r.right,height:n.height-r.top-r.bottom,x:r.left,y:r.top}},Wm={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},Gm=()=>Q(cm)??Wm,Km=()=>Q(Wp),qm=()=>Q(Gp),Jm=()=>Q(e=>e.layout.margin),Ym=e=>e.layout.layoutType,Xm=()=>Q(Ym),Zm=()=>{var e=Xm();if(e===`horizontal`||e===`vertical`)return e},Qm=e=>{var t=e.layout.layoutType;if(t===`centric`||t===`radial`)return t},$m=()=>Xm()!==void 0,eh=e=>{var t=Ol(),n=fm(),{width:r,height:i}=e,a=zm(),o=r,s=i;return a&&(o=a.width>0?a.width:r,s=a.height>0?a.height:i),(0,w.useEffect)(()=>{!n&&gp(o)&&gp(s)&&t(dp({width:o,height:s}))},[t,n,o,s]),null},th=Symbol.for(`immer-nothing`),nh=Symbol.for(`immer-draftable`),rh=Symbol.for(`immer-state`);function ih(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var ah=Object.getPrototypeOf;function oh(e){return!!e&&!!e[rh]}function sh(e){return e?uh(e)||Array.isArray(e)||!!e[nh]||!!e.constructor?.[nh]||gh(e)||_h(e):!1}var ch=Object.prototype.constructor.toString(),lh=new WeakMap;function uh(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=lh.get(n);return r===void 0&&(r=Function.toString.call(n),lh.set(n,r)),r===ch}function dh(e,t,n=!0){fh(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function fh(e){let t=e[rh];return t?t.type_:Array.isArray(e)?1:gh(e)?2:_h(e)?3:0}function ph(e,t){return fh(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function mh(e,t,n){let r=fh(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function hh(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function gh(e){return e instanceof Map}function _h(e){return e instanceof Set}function vh(e){return e.copy_||e.base_}function yh(e,t){if(gh(e))return new Map(e);if(_h(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=uh(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[rh];let n=Reflect.ownKeys(t);for(let r=0;r1&&Object.defineProperties(e,{set:Sh,add:Sh,clear:Sh,delete:Sh}),Object.freeze(e),t&&Object.values(e).forEach(e=>bh(e,!0)),e)}function xh(){ih(2)}var Sh={value:xh};function Ch(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var wh={};function Th(e){let t=wh[e];return t||ih(0,e),t}var Eh;function Dh(){return Eh}function Oh(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function kh(e,t){t&&(Th(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function Ah(e){jh(e),e.drafts_.forEach(Nh),e.drafts_=null}function jh(e){e===Eh&&(Eh=e.parent_)}function Mh(e){return Eh=Oh(Eh,e)}function Nh(e){let t=e[rh];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Ph(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[rh].modified_&&(Ah(t),ih(4)),sh(e)&&(e=Fh(t,e),t.parent_||Lh(t,e)),t.patches_&&Th(`Patches`).generateReplacementPatches_(n[rh].base_,e,t.patches_,t.inversePatches_)):e=Fh(t,n,[]),Ah(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===th?void 0:e}function Fh(e,t,n){if(Ch(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[rh];if(!i)return dh(t,(r,a)=>Ih(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return Lh(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),dh(a,(r,a)=>Ih(e,i,t,r,a,n,o),r),Lh(e,t,!1),n&&e.patches_&&Th(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Ih(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=Ch(i);if(!(s&&!o)){if(oh(i)){let o=Fh(e,i,a&&t&&t.type_!==3&&!ph(t.assigned_,r)?a.concat(r):void 0);if(mh(n,r,o),oh(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(sh(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;Fh(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(gh(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&Lh(e,i)}}}function Lh(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&bh(t,n)}function Rh(e,t){let n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:Dh(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=zh;n&&(i=[r],a=Bh);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var zh={get(e,t){if(t===rh)return e;let n=vh(e);if(!ph(n,t))return Hh(e,n,t);let r=n[t];return e.finalized_||!sh(r)?r:r===Vh(e.base_,t)?(Gh(e),e.copy_[t]=qh(r,e)):r},has(e,t){return t in vh(e)},ownKeys(e){return Reflect.ownKeys(vh(e))},set(e,t,n){let r=Uh(vh(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Vh(vh(e),t),i=r?.[rh];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(hh(n,r)&&(n!==void 0||ph(e.base_,t)))return!0;Gh(e),Wh(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return Vh(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Gh(e),Wh(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=vh(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){ih(11)},getPrototypeOf(e){return ah(e.base_)},setPrototypeOf(){ih(12)}},Bh={};dh(zh,(e,t)=>{Bh[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Bh.deleteProperty=function(e,t){return Bh.set.call(this,e,t,void 0)},Bh.set=function(e,t,n){return zh.set.call(this,e[0],t,n,e[0])};function Vh(e,t){let n=e[rh];return(n?vh(n):e)[t]}function Hh(e,t,n){let r=Uh(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Uh(e,t){if(!(t in e))return;let n=ah(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=ah(n)}}function Wh(e){e.modified_||(e.modified_=!0,e.parent_&&Wh(e.parent_))}function Gh(e){e.copy_||=yh(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var Kh=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&ih(6),n!==void 0&&typeof n!=`function`&&ih(7);let r;if(sh(e)){let i=Mh(this),a=qh(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?Ah(i):jh(i)}return kh(i,n),Ph(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===th&&(r=void 0),this.autoFreeze_&&bh(r,!0),n){let t=[],i=[];Th(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else ih(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){sh(e)||ih(8),oh(e)&&(e=Jh(e));let t=Mh(this),n=qh(e,void 0);return n[rh].isManual_=!0,jh(t),n}finishDraft(e,t){let n=e&&e[rh];(!n||!n.isManual_)&&ih(9);let{scope_:r}=n;return kh(r,t),Ph(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Th(`Patches`).applyPatches_;return oh(e)?r(e,t):this.produce(e,e=>r(e,t))}};function qh(e,t){let n=gh(e)?Th(`MapSet`).proxyMap_(e,t):_h(e)?Th(`MapSet`).proxySet_(e,t):Rh(e,t);return(t?t.scope_:Dh()).drafts_.push(n),n}function Jh(e){return oh(e)||ih(10,e),Yh(e)}function Yh(e){if(!sh(e)||Ch(e))return e;let t=e[rh],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=yh(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=yh(e,!0);return dh(n,(e,t)=>{mh(n,e,Yh(t))},r),t&&(t.finalized_=!1),n}new Kh().produce;function Xh(e){return e}var Zh=bf({name:`legend`,initialState:{settings:{layout:`horizontal`,align:`center`,verticalAlign:`middle`,itemSorter:`value`},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(Xh(t.payload))},prepare:Xd()},replaceLegendPayload:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Fd(e).payload.indexOf(Xh(n));i>-1&&(e.payload[i]=Xh(r))},prepare:Xd()},removeLegendPayload:{reducer(e,t){var n=Fd(e).payload.indexOf(Xh(t.payload));n>-1&&e.payload.splice(n,1)},prepare:Xd()}}}),{setLegendSize:Qh,setLegendSettings:$h,addLegendPayload:eg,replaceLegendPayload:tg,removeLegendPayload:ng}=Zh.actions,rg=Zh.reducer,ig=o((e=>{var t=d();typeof Object.is==`function`&&Object.is,t.useSyncExternalStore,t.useRef,t.useEffect,t.useMemo,t.useDebugValue}));o(((e,t)=>{t.exports=ig()}))();function ag(e){e()}function og(){let e=null,t=null;return{clear(){e=null,t=null},notify(){ag(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var sg={notify(){},get:()=>[]};function cg(e,t){let n,r=sg,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=og())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=sg)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var lg=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,ug=typeof navigator<`u`&&navigator.product===`ReactNative`,dg=lg||ug?w.useLayoutEffect:w.useEffect;function fg(e,t){return e===t?e!==0||t!==0||1/e==1/t:e!==e&&t!==t}function pg(e,t){if(fg(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r({store:i,subscription:cg(i),getServerState:r?()=>r:void 0}),[i,r]),o=w.useMemo(()=>i.getState(),[i]);dg(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||_g;return w.createElement(s.Provider,{value:a},t)}var yg=vg,bg=new Set([`axisLine`,`tickLine`,`activeBar`,`activeDot`,`activeLabel`,`activeShape`,`allowEscapeViewBox`,`background`,`cursor`,`dot`,`label`,`line`,`margin`,`padding`,`position`,`shape`,`style`,`tick`,`wrapperStyle`,`radius`,`throttledEvents`]);function xg(e,t){return e==null&&t==null?!0:typeof e==`number`&&typeof t==`number`?e===t||e!==e&&t!==t:e===t}function Sg(e,t){for(var n of new Set([...Object.keys(e),...Object.keys(t)]))if(bg.has(n)){if(e[n]==null&&t[n]==null)continue;if(!pg(e[n],t[n]))return!1}else if(!xg(e[n],t[n]))return!1;return!0}var Cg=[`contextPayload`];function wg(){return wg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t($h(e))},[t,e]),null}function Ig(e){var t=Ol();return(0,w.useEffect)(()=>(t(Qh(e)),()=>{t(Qh({width:0,height:0}))}),[t,e]),null}function Lg(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var Rg={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,layout:`horizontal`,verticalAlign:`bottom`};function zg(e){var t=Mc(e,Rg),n=ru(),r=fo(),i=Jm(),{width:a,height:o,wrapperStyle:s,portal:c}=t,[l,u]=au([n]),d=Km(),f=qm();if(d==null||f==null)return null;var p=d-(i?.left||0)-(i?.right||0),m=Lg(t.layout,o,a,p),h=c?s:Eg(Eg({position:`absolute`,width:m?.width||a||`auto`,height:m?.height||o||`auto`},Pg(s,t,i,d,f,l)),s),g=c??r;return g==null||n==null?null:(0,gn.createPortal)(w.createElement(`div`,{className:`recharts-legend-wrapper`,style:h,ref:u},w.createElement(Fg,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!c&&w.createElement(Ig,{width:l.width,height:l.height}),w.createElement(Ng,wg({},t,m,{margin:i,chartWidth:d,chartHeight:f,contextPayload:n}))),g)}var Bg=w.memo(zg,Sg);Bg.displayName=`Legend`;function Vg(){return Vg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=Jg.separator,contentStyle:n,itemStyle:r,labelStyle:i=Jg.labelStyle,payload:a,formatter:o,itemSorter:s,wrapperClassName:c,labelClassName:l,label:u,labelFormatter:d,accessibilityLayer:f=Jg.accessibilityLayer}=e,p=()=>{if(a&&a.length){var e={padding:0,margin:0},n=Yg(a,s).map((e,n)=>{if(e.type===`none`)return null;var i=e.formatter||o||qg,{value:s,name:c}=e,l=s,u=c;if(i){var d=i(s,c,e,n,a);if(Array.isArray(d))[l,u]=d;else if(d!=null)l=d;else return null}var f=Ug(Ug({},Jg.itemStyle),{},{color:e.color||Jg.itemStyle.color},r);return w.createElement(`li`,{className:`recharts-tooltip-item`,key:`tooltip-item-${n}`,style:f},Zs(u)?w.createElement(`span`,{className:`recharts-tooltip-item-name`},u):null,Zs(u)?w.createElement(`span`,{className:`recharts-tooltip-item-separator`},t):null,w.createElement(`span`,{className:`recharts-tooltip-item-value`},l),w.createElement(`span`,{className:`recharts-tooltip-item-unit`},e.unit||``))});return w.createElement(`ul`,{className:`recharts-tooltip-item-list`,style:e},n)}return null},m=Ug(Ug({},Jg.contentStyle),n),h=Ug({margin:0},i),g=!ic(u),_=g?u:``,v=Wa(`recharts-default-tooltip`,c),y=Wa(`recharts-tooltip-label`,l);g&&d&&a!=null&&(_=d(u,a));var b=f?{role:`status`,"aria-live":`assertive`}:{};return w.createElement(`div`,Vg({className:v,style:m},b),w.createElement(`p`,{className:y,style:h},w.isValidElement(_)?_:`${_}`),p())},Zg=`recharts-tooltip-wrapper`,Qg={visibility:`hidden`};function $g(e){var{coordinate:t,translateX:n,translateY:r}=e;return Wa(Zg,{[`${Zg}-right`]:Z(n)&&t&&Z(t.x)&&n>=t.x,[`${Zg}-left`]:Z(n)&&t&&Z(t.x)&&n=t.y,[`${Zg}-top`]:Z(r)&&t&&Z(t.y)&&r0?i:0),d=n[r]+i;if(t[r])return o[r]?u:d;var f=c[r];return f==null?0:o[r]?uf+l?Math.max(u,f):Math.max(d,f)}function t_(e){var{translateX:t,translateY:n,useTranslate3d:r}=e;return{transform:r?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function n_(e){var{allowEscapeViewBox:t,coordinate:n,offsetTop:r,offsetLeft:i,position:a,reverseDirection:o,tooltipBox:s,useTranslate3d:c,viewBox:l}=e,u,d,f;return s.height>0&&s.width>0&&n?(d=e_({allowEscapeViewBox:t,coordinate:n,key:`x`,offset:i,position:a,reverseDirection:o,tooltipDimension:s.width,viewBox:l,viewBoxDimension:l.width}),f=e_({allowEscapeViewBox:t,coordinate:n,key:`y`,offset:r,position:a,reverseDirection:o,tooltipDimension:s.height,viewBox:l,viewBoxDimension:l.height}),u=t_({translateX:d,translateY:f,useTranslate3d:c})):u=Qg,{cssProperties:u,cssClasses:$g({translateX:d,translateY:f,coordinate:n})}}var r_={devToolsEnabled:!0,isSsr:!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)};function i_(){var[e,t]=(0,w.useState)(()=>r_.isSsr||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,w.useEffect)(()=>{if(window.matchMedia){var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=()=>{t(e.matches)};return e.addEventListener(`change`,n),()=>{e.removeEventListener(`change`,n)}}},[]),e}function a_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function o_(e){for(var t=1;t({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}}));w.useEffect(()=>{var t=t=>{t.key===`Escape`&&r({dismissed:!0,dismissedAtCoordinate:{x:e.coordinate?.x??0,y:e.coordinate?.y??0}})};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e.coordinate?.x,e.coordinate?.y]),n.dismissed&&((e.coordinate?.x??0)!==n.dismissedAtCoordinate.x||(e.coordinate?.y??0)!==n.dismissedAtCoordinate.y)&&r(o_(o_({},n),{},{dismissed:!1}));var{cssClasses:i,cssProperties:a}=n_({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset==`number`?e.offset:e.offset.x,offsetTop:typeof e.offset==`number`?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:{height:e.lastBoundingBox.height,width:e.lastBoundingBox.width},useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),o=o_(o_({},e.hasPortalFromProps?{}:o_(o_({transition:u_({prefersReducedMotion:t,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},a),{},{pointerEvents:`none`,position:`absolute`,top:0,left:0})),{},{visibility:!n.dismissed&&e.active&&e.hasPayload?`visible`:`hidden`},e.wrapperStyle);return w.createElement(`div`,{xmlns:`http://www.w3.org/1999/xhtml`,tabIndex:-1,className:i,style:o,ref:e.innerRef},e.children)}var f_=w.memo(d_),p_=()=>Q(e=>e.rootProps.accessibilityLayer)??!0;function m_(){return m_=Object.assign?Object.assign.bind():function(e){for(var t=1;thp(e.x)&&hp(e.y),S_=e=>e.base!=null&&x_(e.base)&&x_(e),C_=e=>e.x,w_=e=>e.y,T_=(e,t)=>{if(typeof e==`function`)return e;var n=`curve${ac(e)}`;if((n===`curveMonotone`||n===`curveBump`)&&t){var r=b_[`${n}${t===`vertical`?`Y`:`X`}`];if(r)return r}return b_[n]||Ao},E_={connectNulls:!1,type:`linear`},D_=e=>{var{type:t=E_.type,points:n=[],baseLine:r,layout:i,connectNulls:a=E_.connectNulls}=e,o=T_(t,i),s=a?n.filter(x_):n;if(Array.isArray(r)){var c,l=n.map((e,t)=>g_(g_({},e),{},{base:r[t]}));return c=i===`vertical`?Po().y(w_).x1(C_).x0(e=>e.base.x):Po().x(C_).y1(w_).y0(e=>e.base.y),c.defined(S_).curve(o)(a?l.filter(S_):l)}return(i===`vertical`&&Z(r)?Po().y(w_).x1(C_).x0(r):Z(r)?Po().x(C_).y1(w_).y0(r):No().x(C_).y(w_)).defined(x_).curve(o)(s)},O_=e=>{var{className:t,points:n,path:r,pathRef:i}=e,a=Xm();if((!n||!n.length)&&!r)return null;var o={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=n&&n.length?D_(o):r;return w.createElement(`path`,m_({},Xa(e),wc(e),{className:Wa(`recharts-curve`,t),d:s===null?void 0:s,ref:i}))},k_=[`x`,`y`,`top`,`left`,`width`,`height`,`className`];function A_(){return A_=Object.assign?Object.assign.bind():function(e){for(var t=1;t`M${e},${i}v${r}M${a},${t}h${n}`,z_=e=>{var{x:t=0,y:n=0,top:r=0,left:i=0,width:a=0,height:o=0,className:s}=e,c=I_(e,k_),l=M_({x:t,y:n,top:r,left:i,width:a,height:o},c);return!Z(t)||!Z(n)||!Z(a)||!Z(o)||!Z(r)||!Z(i)?null:w.createElement(`path`,A_({},Qa(l),{className:Wa(`recharts-cross`,s),d:R_(t,n,a,o,r,i)}))};function B_(e,t,n,r){var i=r/2;return{stroke:`none`,fill:`#ccc`,x:e===`horizontal`?t.x-i:n.left+.5,y:e===`horizontal`?n.top+.5:t.y-i,width:e===`horizontal`?r:n.width-1,height:e===`horizontal`?n.height-1:r}}function V_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function H_(e){for(var t=1;te.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),q_=(e,t,n)=>e.map(e=>`${K_(e)} ${t}ms ${n}`).join(`,`),J_=(e,t)=>[Object.keys(e),Object.keys(t)].reduce((e,t)=>e.filter(e=>t.includes(e))),Y_=(e,t)=>Object.keys(t).reduce((n,r)=>H_(H_({},n),{},{[r]:e(r,t[r])}),{});function X_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Z_(e){for(var t=1;te+(t-e)*n,nv=e=>{var{from:t,to:n}=e;return t!==n},rv=(e,t,n)=>{var r=Y_((t,n)=>{if(nv(n)){var[r,i]=e(n.from,n.to,n.velocity);return Z_(Z_({},n),{},{from:r,velocity:i})}return n},t);return n<1?Y_((e,t)=>nv(t)&&r[e]!=null?Z_(Z_({},t),{},{velocity:tv(t.velocity,r[e].velocity,n),from:tv(t.from,r[e].from,n)}):t,t):rv(e,r,n-1)};function iv(e,t,n,r,i,a){var o,s=r.reduce((n,r)=>Z_(Z_({},n),{},{[r]:{from:e[r],velocity:0,to:t[r]}}),{}),c=()=>Y_((e,t)=>t.from,s),l=()=>!Object.values(s).filter(nv).length,u=null,d=r=>{o||=r;var f=(r-o)/n.dt;s=rv(n,s,f),i(Z_(Z_(Z_({},e),t),c())),o=r,l()||(u=a.setTimeout(d))};return()=>(u=a.setTimeout(d),()=>{var e;(e=u)==null||e()})}function av(e,t,n,r,i,a,o){var s=null,c=i.reduce((n,r)=>{var i=e[r],a=t[r];return i==null||a==null?n:Z_(Z_({},n),{},{[r]:[i,a]})},{}),l,u=i=>{l||=i;var d=(i-l)/r,f=Y_((e,t)=>tv(...t,n(d)),c);if(a(Z_(Z_(Z_({},e),t),f)),d<1)s=o.setTimeout(u);else{var p=Y_((e,t)=>tv(...t,n(1)),c);a(Z_(Z_(Z_({},e),t),p))}};return()=>(s=o.setTimeout(u),()=>{var e;(e=s)==null||e()})}var ov=(e,t,n,r,i,a)=>{var o=J_(e,t);return n==null?()=>(i(Z_(Z_({},e),t)),()=>{}):n.isStepper===!0?iv(e,t,n,o,i,a):av(e,t,n,r,o,i,a)},sv=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],cv=(e,t)=>e.map((e,n)=>e*t**n).reduce((e,t)=>e+t),lv=(e,t)=>n=>cv(sv(e,t),n),uv=(e,t)=>n=>cv([...sv(e,t).map((e,t)=>e*t).slice(1),0],n),dv=e=>{var t,n=e.split(`(`);if(n.length!==2||n[0]!==`cubic-bezier`)return null;var r=(t=n[1])==null||(t=t.split(`)`)[0])==null?void 0:t.split(`,`);if(r==null||r.length!==4)return null;var i=r.map(e=>parseFloat(e));return[i[0],i[1],i[2],i[3]]},fv=function(){var e=[...arguments];if(e.length===1)switch(e[0]){case`linear`:return[0,0,1,1];case`ease`:return[.25,.1,.25,1];case`ease-in`:return[.42,0,1,1];case`ease-out`:return[.42,0,.58,1];case`ease-in-out`:return[0,0,.58,1];default:var t=dv(e[0]);if(t)return t}return e.length===4?e:[0,0,1,1]},pv=(e,t,n,r)=>{var i=lv(e,n),a=lv(t,r),o=uv(e,n),s=e=>e>1?1:e<0?0:e,c=e=>{for(var t=e>1?1:e,n=t,r=0;r<8;++r){var c=i(n)-t,l=o(n);if(Math.abs(c-t)<1e-4||l<1e-4)return a(n);n=s(n-c/l)}return a(n)};return c.isStepper=!1,c},mv=function(){return pv(...fv(...arguments))},hv=function(){var{stiff:e=100,damping:t=8,dt:n=17}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(r,i,a)=>{var o=a+(-(r-i)*e-a*t)*n/1e3,s=a*n/1e3+r;return Math.abs(s-i)<1e-4&&Math.abs(o)<1e-4?[i,0]:[s,o]};return r.isStepper=!0,r.dt=n,r},gv=e=>{if(typeof e==`string`)switch(e){case`ease`:case`ease-in-out`:case`ease-out`:case`ease-in`:case`linear`:return mv(e);case`spring`:return hv();default:if(e.split(`(`)[0]===`cubic-bezier`)return mv(e)}return typeof e==`function`?e:null};function _v(e){var t,n=()=>null,r=!1,i=null,a=o=>{if(!r){if(Array.isArray(o)){if(!o.length)return;var[s,...c]=o;if(typeof s==`number`){i=e.setTimeout(a.bind(null,c),s);return}a(s),i=e.setTimeout(a.bind(null,c));return}typeof o==`string`&&(t=o,n(t)),typeof o==`object`&&(t=o,n(t)),typeof o==`function`&&o()}};return{stop:()=>{r=!0},start:e=>{r=!1,i&&=(i(),null),a(e)},subscribe:e=>(n=e,()=>{n=()=>null}),getTimeoutController:()=>e}}var vv=class{setTimeout(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),r=null,i=a=>{a-n>=t?e(a):typeof requestAnimationFrame==`function`&&(r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>{r!=null&&cancelAnimationFrame(r)}}};function yv(){return _v(new vv)}var bv=(0,w.createContext)(yv);function xv(e,t){var n=(0,w.useContext)(bv);return(0,w.useMemo)(()=>t??n(e),[e,t,n])}var Sv={begin:0,duration:1e3,easing:`ease`,isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},Cv={t:0},wv={t:1};function Tv(e){var t=Mc(e,Sv),{isActive:n,canBegin:r,duration:i,easing:a,begin:o,onAnimationEnd:s,onAnimationStart:c,children:l}=t,u=i_(),d=n===`auto`?!r_.isSsr&&!u:n,f=xv(t.animationId,t.animationManager),[p,m]=(0,w.useState)(d?Cv:wv),h=(0,w.useRef)(null);return(0,w.useEffect)(()=>{d||m(wv)},[d]),(0,w.useEffect)(()=>{if(!d||!r)return sc;var e=ov(Cv,wv,gv(a),i,m,f.getTimeoutController());return f.start([c,o,()=>{h.current=e()},i,s]),()=>{f.stop(),h.current&&h.current(),s()}},[d,r,i,a,o,c,s,f]),l(p.t)}function Ev(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`animation-`,n=(0,w.useRef)($s(t)),r=(0,w.useRef)(e);return r.current!==e&&(n.current=$s(t),r.current=e),n.current}var Dv=[`radius`],Ov=[`radius`],kv,Av,jv,Mv,Nv,Pv,Fv,Iv,Lv,Rv;function zv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Bv(e){for(var t=1;t{var a=Gs(n),o=Gs(r),s=Math.min(Math.abs(a)/2,Math.abs(o)/2),c=o>=0?1:-1,l=a>=0?1:-1,u=o>=0&&a>=0||o<0&&a<0?1:0,d;if(s>0&&Array.isArray(i)){for(var f=[0,0,0,0],p=0,m=4;ps?s:h}d=Ks(kv||=qv([`M`,`,`,``]),e,t+c*f[0]),f[0]>0&&(d+=Ks(Av||=qv([`A `,`,`,`,0,0,`,`,`,`,`,``]),f[0],f[0],u,e+l*f[0],t)),d+=Ks(jv||=qv([`L `,`,`,``]),e+n-l*f[1],t),f[1]>0&&(d+=Ks(Mv||=qv([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[1],f[1],u,e+n,t+c*f[1])),d+=Ks(Nv||=qv([`L `,`,`,``]),e+n,t+r-c*f[2]),f[2]>0&&(d+=Ks(Pv||=qv([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[2],f[2],u,e+n-l*f[2],t+r)),d+=Ks(Fv||=qv([`L `,`,`,``]),e+l*f[3],t+r),f[3]>0&&(d+=Ks(Iv||=qv([`A `,`,`,`,0,0,`,`, - `,`,`,``]),f[3],f[3],u,e,t+r-c*f[3])),d+=`Z`}else if(s>0&&i===+i&&i>0){var g=Math.min(s,i);d=Ks(Lv||=qv(`M .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. - L .,. - A .,.,0,0,.,.,. Z`.split(`.`)),e,t+c*g,g,g,u,e+l*g,t,e+n-l*g,t,g,g,u,e+n,t+c*g,e+n,t+r-c*g,g,g,u,e+n-l*g,t+r,e+l*g,t+r,g,g,u,e,t+r-c*g)}else d=Ks(Rv||=qv([`M `,`,`,` h `,` v `,` h `,` Z`]),e,t,n,r,-n);return d},Yv={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},Xv=e=>{var t=Mc(e,Yv),n=(0,w.useRef)(null),[r,i]=(0,w.useState)(-1);(0,w.useEffect)(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&i(e)}catch{}},[]);var{x:a,y:o,width:s,height:c,radius:l,className:u}=t,{animationEasing:d,animationDuration:f,animationBegin:p,isAnimationActive:m,isUpdateAnimationActive:h}=t,g=(0,w.useRef)(s),_=(0,w.useRef)(c),v=(0,w.useRef)(a),y=(0,w.useRef)(o),b=Ev((0,w.useMemo)(()=>({x:a,y:o,width:s,height:c,radius:l}),[a,o,s,c,l]),`rectangle-`);if(a!==+a||o!==+o||s!==+s||c!==+c||s===0||c===0)return null;var x=Wa(`recharts-rectangle`,u);if(!h){var S=Qa(t),{radius:C}=S,T=Gv(S,Dv);return w.createElement(`path`,Wv({},T,{x:Gs(a),y:Gs(o),width:Gs(s),height:Gs(c),radius:typeof l==`number`?l:void 0,className:x,d:Jv(a,o,s,c,l)}))}var E=g.current,D=_.current,O=v.current,k=y.current,A=`0px ${r===-1?1:r}px`,j=`${r}px ${r}px`,M=q_([`strokeDasharray`],f,typeof d==`string`?d:Yv.animationEasing);return w.createElement(Tv,{animationId:b,key:b,canBegin:r>0,duration:f,easing:d,isActive:h,begin:p},e=>{var r=nc(E,s,e),i=nc(D,c,e),u=nc(O,a,e),d=nc(k,o,e);n.current&&(g.current=r,_.current=i,v.current=u,y.current=d);var f=m?e>0?{transition:M,strokeDasharray:j}:{strokeDasharray:A}:{strokeDasharray:j},p=Qa(t),{radius:h}=p,b=Gv(p,Ov);return w.createElement(`path`,Wv({},b,{radius:typeof l==`number`?l:void 0,className:x,d:Jv(u,d,r,i,l),ref:n,style:Bv(Bv({},f),t.style)}))})};function Zv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Qv(e){for(var t=1;te*180/Math.PI,iy=(e,t,n,r)=>({x:e+Math.cos(-ny*r)*n,y:t+Math.sin(-ny*r)*n}),ay=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},oy=(e,t)=>{var{x:n,y:r}=e,{x:i,y:a}=t;return Math.sqrt((n-i)**2+(r-a)**2)},sy=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:a}=t,o=oy({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:ry(c),angleInRadian:c}},cy=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},ly=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},uy=(e,t)=>{var{relativeX:n,relativeY:r}=e,{radius:i,angle:a}=sy({x:n,y:r},t),{innerRadius:o,outerRadius:s}=t;if(is||i===0)return null;var{startAngle:c,endAngle:l}=cy(t),u=a,d;if(c<=l){for(;u>l;)u-=360;for(;u=c&&u<=l}else{for(;u>c;)u-=360;for(;u=l&&u<=c}return d?Qv(Qv({},t),{},{radius:i,angle:ly(u,t)}):null};function dy(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:a}=e;return{points:[iy(t,n,r,i),iy(t,n,r,a)],cx:t,cy:n,radius:r,startAngle:i,endAngle:a}}var fy,py,my,hy,gy,_y,vy;function yy(){return yy=Object.assign?Object.assign.bind():function(e){for(var t=1;tJs(t-e)*Math.min(Math.abs(t-e),359.999),Sy=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:a,isExternal:o,cornerRadius:s,cornerIsExternal:c}=e,l=s*(o?1:-1)+r,u=Math.asin(s/l)/ny,d=c?i:i+a*u,f=iy(t,n,l,d),p=iy(t,n,r,d),m=c?i-a*u:i;return{center:f,circleTangency:p,lineTangency:iy(t,n,l*Math.cos(u*ny),m),theta:u}},Cy=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:a,endAngle:o}=e,s=xy(a,o),c=a+s,l=iy(t,n,i,a),u=iy(t,n,i,c),d=Ks(fy||=by([`M `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` - `]),l.x,l.y,i,i,+(Math.abs(s)>180),+(a>c),u.x,u.y);if(r>0){var f=iy(t,n,r,a),p=iy(t,n,r,c);d+=Ks(py||=by([`L `,`,`,` - A `,`,`,`,0, - `,`,`,`, - `,`,`,` Z`]),p.x,p.y,r,r,+(Math.abs(s)>180),+(a<=c),f.x,f.y)}else d+=Ks(my||=by([`L `,`,`,` Z`]),t,n);return d},wy=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:s,startAngle:c,endAngle:l}=e,u=Js(l-c),{circleTangency:d,lineTangency:f,theta:p}=Sy({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),{circleTangency:m,lineTangency:h,theta:g}=Sy({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),_=s?Math.abs(c-l):Math.abs(c-l)-p-g;if(_<0)return o?Ks(hy||=by([`M `,`,`,` - a`,`,`,`,0,0,1,`,`,0 - a`,`,`,`,0,0,1,`,`,0 - `]),f.x,f.y,a,a,a*2,a,a,-a*2):Cy({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var v=Ks(gy||=by([`M `,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - `]),f.x,f.y,a,a,+(u<0),d.x,d.y,i,i,+(_>180),+(u<0),m.x,m.y,a,a,+(u<0),h.x,h.y);if(r>0){var{circleTangency:y,lineTangency:b,theta:x}=Sy({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),{circleTangency:S,lineTangency:C,theta:w}=Sy({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),T=s?Math.abs(c-l):Math.abs(c-l)-x-w;if(T<0&&a===0)return`${v}L${t},${n}Z`;v+=Ks(_y||=by([`L`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,` - A`,`,`,`,0,`,`,`,`,`,`,`,` - A`,`,`,`,0,0,`,`,`,`,`,`Z`]),C.x,C.y,a,a,+(u<0),S.x,S.y,r,r,+(T>180),+(u>0),y.x,y.y,a,a,+(u<0),b.x,b.y)}else v+=Ks(vy||=by([`L`,`,`,`Z`]),t,n);return v},Ty={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Ey=e=>{var t=Mc(e,Ty),{cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:o,forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u,className:d}=t;if(a0&&Math.abs(l-u)<360?wy({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):Cy({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return w.createElement(`path`,yy({},Qa(t),{className:f,d:h}))};function Dy(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(Cc(t)){if(e===`centric`){var{cx:r,cy:i,innerRadius:a,outerRadius:o,angle:s}=t,c=iy(r,i,a,s),l=iy(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return dy(t)}}var Oy=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ql();function n(e){return t.isSymbol(e)?NaN:Number(e)}e.toNumber=n})),ky=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Oy();function n(e){return e?(e=t.toNumber(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}e.toFinite=n})),Ay=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Zl(),n=ky();function r(e,r,i){i&&typeof i!=`number`&&t.isIterateeCall(e,r,i)&&(r=i=void 0),e=n.toFinite(e),r===void 0?(r=e,e=0):r=n.toFinite(r),i=i===void 0?e{t.exports=Ay().range})),My=e=>e.chartData,Ny=$([My],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Py=(e,t,n,r)=>r?Ny(e):My(e),Fy=(e,t,n)=>n?Ny(e):My(e);function Iy(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if(hp(t)&&hp(n))return!0}return!1}function Ly(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function Ry(e,t){if(t&&typeof e!=`function`&&Array.isArray(e)&&e.length===2){var[n,r]=e,i,a;if(hp(n))i=n;else if(typeof n==`function`)return;if(hp(r))a=r;else if(typeof r==`function`)return;var o=[i,a];if(Iy(o))return o}}function zy(e,t,n){if(!(!n&&t==null)){if(typeof e==`function`&&t!=null)try{var r=e(t,n);if(Iy(r))return Ly(r,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[i,a]=e,o,s;if(i===`auto`)t!=null&&(o=Math.min(...t));else if(Z(i))o=i;else if(typeof i==`function`)try{t!=null&&(o=i(t?.[0]))}catch{}else if(typeof i==`string`&&Lp.test(i)){var c=Lp.exec(i);if(c==null||c[1]==null||t==null)o=void 0;else{var l=+c[1];o=t[0]-l}}else o=t?.[0];if(a===`auto`)t!=null&&(s=Math.max(...t));else if(Z(a))s=a;else if(typeof a==`function`)try{t!=null&&(s=a(t?.[1]))}catch{}else if(typeof a==`string`&&Rp.test(a)){var u=Rp.exec(a);if(u==null||u[1]==null||t==null)s=void 0;else{var d=+u[1];s=t[1]+d}}else s=t?.[1];var f=[o,s];if(Iy(f))return t==null?f:Ly(f,t,n)}}}var By=l(o(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,j=r.s==i.s?1:-1,M=r.d,N=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=N.length,T=M.length,g=new A(j),_=g.d=[],u=0;N[u]==(M[u]||0);)++u;if(N[u]>(M[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,N=N[0],x++;(u1&&(N=e(N,d),M=e(M,d),O=N.length,T=M.length),w=O,v=M.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(N,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(N,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function j(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=j,i.config=i.set=M,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=j(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}))());function Vy(e){return e===0?1:Math.floor(new By.default(e).abs().log(10).toNumber())+1}function Hy(e,t,n){for(var r=new By.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}var Uy=e=>{var[t,n]=e,[r,i]=[t,n];return t>n&&([r,i]=[n,t]),[r,i]},Wy=(e,t,n)=>{if(e.lte(0))return new By.default(0);var r=Vy(e.toNumber()),i=new By.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new By.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new By.default(s.toNumber()):new By.default(Math.ceil(s.toNumber()))},Gy=(e,t,n)=>{if(e.lte(0))return new By.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new By.default(i).abs().log(10).toNumber()),o=new By.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new By.default(10).pow(l))}var u=new By.default(r[c]??1).mul(o);return t?u:new By.default(Math.ceil(u.toNumber()))},Ky=(e,t,n)=>{var r=new By.default(1),i=new By.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new By.default(10).pow(Vy(e)-1),i=new By.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new By.default(Math.floor(e)))}else e===0?i=new By.default(Math.floor((t-1)/2)):n||(i=new By.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:Wy;if(!Number.isFinite((t-e)/(n-1)))return{step:new By.default(0),tickMin:new By.default(0),tickMax:new By.default(0)};var o=a(new By.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new By.default(0):(s=new By.default(e).add(t).div(2),s=s.sub(new By.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new By.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?qy(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new By.default(c).mul(o)),tickMax:s.add(new By.default(l).mul(o))})},Jy=function(e){var[t,n]=e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,o=Math.max(r,2),[s,c]=Uy([t,n]);if(s===-1/0||c===1/0){var l=c===1/0?[s,...Array(r-1).fill(1/0)]:[...Array(r-1).fill(-1/0),c];return t>n?l.reverse():l}if(s===c)return Ky(s,r,i);var{step:u,tickMin:d,tickMax:f}=qy(s,c,o,i,0,a===`snap125`?Gy:Wy),p=Hy(d,f.add(new By.default(.1).mul(u)),u);return t>n?p.reverse():p},Yy=function(e,t){var[n,r]=e,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,[o,s]=Uy([n,r]);if(o===-1/0||s===1/0)return[n,r];if(o===s)return[o];var c=a===`snap125`?Gy:Wy,l=Math.max(t,2),u=c(new By.default(s).sub(o).div(l-1),i,0),d=[...Hy(new By.default(o),new By.default(s),u),s];return i===!1&&(d=d.map(e=>Math.round(e))),n>r?d.reverse():d},Xy=e=>e.rootProps.maxBarSize,Zy=e=>e.rootProps.barGap,Qy=e=>e.rootProps.barCategoryGap,$y=e=>e.rootProps.barSize,eb=e=>e.rootProps.stackOffset,tb=e=>e.rootProps.reverseStackOrder,nb=e=>e.options.chartName,rb=e=>e.rootProps.syncId,ib=e=>e.rootProps.syncMethod,ab=e=>e.options.eventEmitter,ob=e=>e.rootProps.baseValue,sb={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},cb={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:sb.axis},lb={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:sb.axis},ub=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function db(e,t,n){if(n!==`auto`)return n;if(e!=null)return wp(e,t)?`category`:`number`}function fb(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function pb(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},Qm],(e,t)=>{if(e!=null)return e;var n=db(t,`angleAxis`,_b.type)??`category`;return pb(pb({},_b),{},{type:n})}),bb=$([(e,t)=>e.polarAxis.radiusAxis[t],Qm],(e,t)=>{if(e!=null)return e;var n=db(t,`radiusAxis`,vb.type)??`category`;return pb(pb({},vb),{},{type:n})}),xb=e=>e.polarOptions,Sb=$([Wp,Gp,cm],ay),Cb=$([xb,Sb],(e,t)=>{if(e!=null)return ec(e.innerRadius,t,0)}),wb=$([xb,Sb],(e,t)=>{if(e!=null)return ec(e.outerRadius,t,t*.8)}),Tb=$([xb],e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]});$([yb,Tb],ub);var Eb=$([Sb,Cb,wb],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});$([bb,Eb],ub);var Db=$([Ym,xb,Cb,wb,Wp,Gp],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var{cx:o,cy:s,startAngle:c,endAngle:l}=t;return{cx:ec(o,i,i/2),cy:ec(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),Ob=(e,t)=>t,kb=(e,t,n)=>n;function Ab(e){return e?.id}function jb(e,t,n){var{chartData:r=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=n,o=new Map;return e.forEach(e=>{var t=e.data??r;if(!(t==null||t.length===0)){var n=Ab(e);t.forEach((t,r)=>{var s=a==null||i?r:String(Sp(t,a,null)),c=Sp(t,e.dataKey,0),l=o.has(s)?o.get(s):{};Object.assign(l,{[n]:c}),o.set(s,l)})}}),Array.from(o.values())}function Mb(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var Nb=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function Pb(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function Fb(e,t){if(e.length===t.length){for(var n=0;n{var t=Ym(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},Lb=e=>e.tooltip.settings.axisId;function Rb(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i;break;default:break}}return r}}}}}var zb=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!Iy(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function Bb(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Vb(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Hb(e){let t,n,r;e.length===2?(t=e===Bb||e===Vb?e:Ub,n=e,r=e):(t=Bb,n=(t,n)=>Bb(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function Ub(){return 0}function Wb(e){return e===null?NaN:+e}function*Gb(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var Kb=Hb(Bb),qb=Kb.right;Kb.left,Hb(Wb).center;var Jb=class extends Map{constructor(e,t=Qb){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(Yb(this,e))}has(e){return super.has(Yb(this,e))}set(e,t){return super.set(Xb(this,e),t)}delete(e){return super.delete(Zb(this,e))}};function Yb({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Xb({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function Zb({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function Qb(e){return typeof e==`object`&&e?e.valueOf():e}function $b(e=Bb){if(e===Bb)return ex;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function ex(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var tx=Math.sqrt(50),nx=Math.sqrt(10),rx=Math.sqrt(2);function ix(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=tx?10:a>=nx?5:a>=rx?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function lx(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function ux(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?ex:$b(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));ux(e,t,u,d,i)}let a=e[t],o=n,s=r;for(dx(e,n,t),i(e[r],a)>0&&dx(e,n,r);o0;)--s}i(e[n],a)===0?dx(e,n,s):(++s,dx(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function dx(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function fx(e,t,n){if(e=Float64Array.from(Gb(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return lx(e);if(t>=1)return cx(e);var r,i=(r-1)*t,a=Math.floor(i),o=cx(ux(e,a).subarray(0,a+1));return o+(lx(e.subarray(a+1))-o)*(i-a)}}function px(e,t,n=Wb){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function mx(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Wx(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Wx(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=jx.exec(e))?new qx(t[1],t[2],t[3],1):(t=Mx.exec(e))?new qx(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Nx.exec(e))?Wx(t[1],t[2],t[3],t[4]):(t=Px.exec(e))?Wx(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Fx.exec(e))?eS(t[1],t[2]/100,t[3]/100,1):(t=Ix.exec(e))?eS(t[1],t[2]/100,t[3]/100,t[4]):Lx.hasOwnProperty(e)?Ux(Lx[e]):e===`transparent`?new qx(NaN,NaN,NaN,0):null}function Ux(e){return new qx(e>>16&255,e>>8&255,e&255,1)}function Wx(e,t,n,r){return r<=0&&(e=t=n=NaN),new qx(e,t,n,r)}function Gx(e){return e instanceof wx||(e=Hx(e)),e?(e=e.rgb(),new qx(e.r,e.g,e.b,e.opacity)):new qx}function Kx(e,t,n,r){return arguments.length===1?Gx(e):new qx(e,t,n,r??1)}function qx(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Sx(qx,Kx,Cx(wx,{brighter(e){return e=e==null?Ex:Ex**+e,new qx(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Tx:Tx**+e,new qx(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new qx(Qx(this.r),Qx(this.g),Qx(this.b),Zx(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Jx,formatHex:Jx,formatHex8:Yx,formatRgb:Xx,toString:Xx}));function Jx(){return`#${$x(this.r)}${$x(this.g)}${$x(this.b)}`}function Yx(){return`#${$x(this.r)}${$x(this.g)}${$x(this.b)}${$x((isNaN(this.opacity)?1:this.opacity)*255)}`}function Xx(){let e=Zx(this.opacity);return`${e===1?`rgb(`:`rgba(`}${Qx(this.r)}, ${Qx(this.g)}, ${Qx(this.b)}${e===1?`)`:`, ${e})`}`}function Zx(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function Qx(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function $x(e){return e=Qx(e),(e<16?`0`:``)+e.toString(16)}function eS(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new rS(e,t,n,r)}function tS(e){if(e instanceof rS)return new rS(e.h,e.s,e.l,e.opacity);if(e instanceof wx||(e=Hx(e)),!e)return new rS;if(e instanceof rS)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new rS(o,s,c,e.opacity)}function nS(e,t,n,r){return arguments.length===1?tS(e):new rS(e,t,n,r??1)}function rS(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Sx(rS,nS,Cx(wx,{brighter(e){return e=e==null?Ex:Ex**+e,new rS(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Tx:Tx**+e,new rS(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new qx(oS(e>=240?e-240:e+120,i,r),oS(e,i,r),oS(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new rS(iS(this.h),aS(this.s),aS(this.l),Zx(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Zx(this.opacity);return`${e===1?`hsl(`:`hsla(`}${iS(this.h)}, ${aS(this.s)*100}%, ${aS(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function iS(e){return e=(e||0)%360,e<0?e+360:e}function aS(e){return Math.max(0,Math.min(1,e||0))}function oS(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var sS=e=>()=>e;function cS(e,t){return function(n){return e+n*t}}function lS(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function uS(e){return(e=+e)==1?dS:function(t,n){return n-t?lS(t,n,e):sS(isNaN(t)?n:t)}}function dS(e,t){var n=t-e;return n?cS(e,n):sS(isNaN(e)?t:e)}var fS=(function e(t){var n=uS(t);function r(e,t){var r=n((e=Kx(e)).r,(t=Kx(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=dS(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function pS(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:_S(r,i)})),n=bS.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function NS(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?PS:NS,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),_S))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,OS),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=TS,u()},d.clamp=function(e){return arguments.length?(o=e?!0:AS,u()):o!==AS},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function LS(){return IS()(AS,AS)}function RS(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function zS(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function BS(e){return e=zS(Math.abs(e)),e?e[1]:NaN}function VS(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function HS(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var US=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function WS(e){if(!(t=US.exec(e)))throw Error(`invalid format: `+e);var t;return new GS({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}WS.prototype=GS.prototype;function GS(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}GS.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function KS(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var qS;function JS(e,t){var n=zS(e,t);if(!n)return qS=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(qS=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+zS(e,Math.max(0,t+a-1))[0]}function YS(e,t){var n=zS(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var XS={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:RS,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>YS(e*100,t),r:YS,s:JS,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function ZS(e){return e}var QS=Array.prototype.map,$S=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function eC(e){var t=e.grouping===void 0||e.thousands===void 0?ZS:VS(QS.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?ZS:HS(QS.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=WS(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):XS[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=XS[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=KS(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&qS!==void 0?$S[8+qS/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(BS(t)/3)))*3,r=10**-n,i=l((e=WS(e),e.type=`f`,e),{suffix:$S[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var tC,nC,rC;iC({thousands:`,`,grouping:[3],currency:[`$`,``]});function iC(e){return tC=eC(e),nC=tC.format,rC=tC.formatPrefix,tC}function aC(e){return Math.max(0,-BS(Math.abs(e)))}function oC(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(BS(t)/3)))*3-BS(Math.abs(e)))}function sC(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,BS(t)-BS(e))+1}function cC(e,t,n,r){var i=sx(e,t,n),a;switch(r=WS(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=oC(i,o))&&(r.precision=a),rC(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=sC(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=aC(i))&&(r.precision=a-(r.type===`%`)*2);break}return nC(r)}function lC(e){var t=e.domain;return e.ticks=function(e){var n=t();return ax(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return cC(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=ox(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function uC(){var e=LS();return e.copy=function(){return FS(e,uC())},hx.apply(e,arguments),lC(e)}function dC(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,OS),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return dC(e).unknown(t)},e=arguments.length?Array.from(e,OS):[0,1],lC(n)}function fC(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function yC(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function bC(e){return(t,n)=>-e(-t,n)}function xC(e){let t=e(pC,mC),n=t.domain,r=10,i,a;function o(){return i=yC(r),a=vC(r),n()[0]<0?(i=bC(i),a=bC(a),e(hC,gC)):e(pC,mC),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=WS(n)).precision==null&&(n.trim=!0),n=nC(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn(fC(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function SC(){let e=xC(IS()).domain([1,10]);return e.copy=()=>FS(e,SC()).base(e.base()),hx.apply(e,arguments),e}function CC(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function wC(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function TC(e){var t=1,n=e(CC(t),wC(t));return n.constant=function(n){return arguments.length?e(CC(t=+n),wC(t)):t},lC(n)}function EC(){var e=TC(IS());return e.copy=function(){return FS(e,EC()).constant(e.constant())},hx.apply(e,arguments)}function DC(e){return function(t){return t<0?-((-t)**+e):t**+e}}function OC(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function kC(e){return e<0?-e*e:e*e}function AC(e){var t=e(AS,AS),n=1;function r(){return n===1?e(AS,AS):n===.5?e(OC,kC):e(DC(n),DC(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},lC(t)}function jC(){var e=AC(IS());return e.copy=function(){return FS(e,jC()).exponent(e.exponent())},hx.apply(e,arguments),e}function MC(){return jC.apply(null,arguments).exponent(.5)}function NC(e){return Math.sign(e)*e*e}function PC(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function FC(){var e=LS(),t=[0,1],n=!1,r;function i(t){var i=PC(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(NC(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,OS)).map(NC)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return FC(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},hx.apply(i,arguments),lC(i)}function IC(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return LC().domain([e,t]).range(i).unknown(a)},hx.apply(lC(o),arguments)}function RC(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[qb(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return RC().domain(e).range(t).unknown(n)},hx.apply(i,arguments)}var zC=new Date,BC=new Date;function VC(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sVC(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(zC.setTime(+t),BC.setTime(+r),e(zC),e(BC),Math.floor(n(zC,BC))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var HC=VC(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);HC.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?VC(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):HC),HC.range;var UC=1e3,WC=UC*60,GC=WC*60,KC=GC*24,qC=KC*7,JC=KC*30,YC=KC*365,XC=VC(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*UC)},(e,t)=>(t-e)/UC,e=>e.getUTCSeconds());XC.range;var ZC=VC(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*UC)},(e,t)=>{e.setTime(+e+t*WC)},(e,t)=>(t-e)/WC,e=>e.getMinutes());ZC.range;var QC=VC(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*WC)},(e,t)=>(t-e)/WC,e=>e.getUTCMinutes());QC.range;var $C=VC(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*UC-e.getMinutes()*WC)},(e,t)=>{e.setTime(+e+t*GC)},(e,t)=>(t-e)/GC,e=>e.getHours());$C.range;var ew=VC(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*GC)},(e,t)=>(t-e)/GC,e=>e.getUTCHours());ew.range;var tw=VC(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*WC)/KC,e=>e.getDate()-1);tw.range;var nw=VC(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/KC,e=>e.getUTCDate()-1);nw.range;var rw=VC(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/KC,e=>Math.floor(e/KC));rw.range;function iw(e){return VC(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*WC)/qC)}var aw=iw(0),ow=iw(1),sw=iw(2),cw=iw(3),lw=iw(4),uw=iw(5),dw=iw(6);aw.range,ow.range,sw.range,cw.range,lw.range,uw.range,dw.range;function fw(e){return VC(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/qC)}var pw=fw(0),mw=fw(1),hw=fw(2),gw=fw(3),_w=fw(4),vw=fw(5),yw=fw(6);pw.range,mw.range,hw.range,gw.range,_w.range,vw.range,yw.range;var bw=VC(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());bw.range;var xw=VC(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());xw.range;var Sw=VC(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Sw.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:VC(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Sw.range;var Cw=VC(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());Cw.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:VC(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),Cw.range;function ww(e,t,n,r,i,a){let o=[[XC,1,UC],[XC,5,5*UC],[XC,15,15*UC],[XC,30,30*UC],[a,1,WC],[a,5,5*WC],[a,15,15*WC],[a,30,30*WC],[i,1,GC],[i,3,3*GC],[i,6,6*GC],[i,12,12*GC],[r,1,KC],[r,2,2*KC],[n,1,qC],[t,1,JC],[t,3,3*JC],[e,1,YC]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(sx(t/YC,n/YC,r));if(a===0)return HC.every(Math.max(sx(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=Aw(jw(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?mw.ceil(a):mw(a),a=nw.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=kw(jw(r.y,0,1)),o=a.getDay(),a=o>4||o===0?ow.ceil(a):ow(a),a=tw.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?Aw(jw(r.y,0,1)).getUTCDay():kw(jw(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,Aw(r)):kw(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Nw?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function j(e,t,r){return w(e,n,t,r)}function M(e,t,n){return w(e,r,t,n)}function N(e){return o[e.getDay()]}function P(e){return a[e.getDay()]}function ee(e){return c[e.getMonth()]}function F(e){return s[e.getMonth()]}function I(e){return i[+(e.getHours()>=12)]}function te(e){return 1+~~(e.getMonth()/3)}function ne(e){return o[e.getUTCDay()]}function re(e){return a[e.getUTCDay()]}function L(e){return c[e.getUTCMonth()]}function ie(e){return s[e.getUTCMonth()]}function R(e){return i[+(e.getUTCHours()>=12)]}function ae(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Nw={"-":``,_:` `,0:`0`},Pw=/^\s*\d+/,Fw=/^%/,Iw=/[\\^$*+?|[\]().{}]/g;function Lw(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Vw(e,t,n){var r=Pw.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Hw(e,t,n){var r=Pw.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Uw(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Ww(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Gw(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function Kw(e,t,n){var r=Pw.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function qw(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Jw(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Yw(e,t,n){var r=Pw.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Xw(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Zw(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function Qw(e,t,n){var r=Pw.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function $w(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function eT(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function tT(e,t,n){var r=Pw.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function nT(e,t,n){var r=Pw.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function rT(e,t,n){var r=Pw.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function iT(e,t,n){var r=Fw.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function aT(e,t,n){var r=Pw.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function oT(e,t,n){var r=Pw.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function sT(e,t){return Lw(e.getDate(),t,2)}function cT(e,t){return Lw(e.getHours(),t,2)}function lT(e,t){return Lw(e.getHours()%12||12,t,2)}function uT(e,t){return Lw(1+tw.count(Sw(e),e),t,3)}function dT(e,t){return Lw(e.getMilliseconds(),t,3)}function fT(e,t){return dT(e,t)+`000`}function pT(e,t){return Lw(e.getMonth()+1,t,2)}function mT(e,t){return Lw(e.getMinutes(),t,2)}function hT(e,t){return Lw(e.getSeconds(),t,2)}function gT(e){var t=e.getDay();return t===0?7:t}function _T(e,t){return Lw(aw.count(Sw(e)-1,e),t,2)}function vT(e){var t=e.getDay();return t>=4||t===0?lw(e):lw.ceil(e)}function yT(e,t){return e=vT(e),Lw(lw.count(Sw(e),e)+(Sw(e).getDay()===4),t,2)}function bT(e){return e.getDay()}function xT(e,t){return Lw(ow.count(Sw(e)-1,e),t,2)}function ST(e,t){return Lw(e.getFullYear()%100,t,2)}function CT(e,t){return e=vT(e),Lw(e.getFullYear()%100,t,2)}function wT(e,t){return Lw(e.getFullYear()%1e4,t,4)}function TT(e,t){var n=e.getDay();return e=n>=4||n===0?lw(e):lw.ceil(e),Lw(e.getFullYear()%1e4,t,4)}function ET(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+Lw(t/60|0,`0`,2)+Lw(t%60,`0`,2)}function DT(e,t){return Lw(e.getUTCDate(),t,2)}function OT(e,t){return Lw(e.getUTCHours(),t,2)}function kT(e,t){return Lw(e.getUTCHours()%12||12,t,2)}function AT(e,t){return Lw(1+nw.count(Cw(e),e),t,3)}function jT(e,t){return Lw(e.getUTCMilliseconds(),t,3)}function MT(e,t){return jT(e,t)+`000`}function NT(e,t){return Lw(e.getUTCMonth()+1,t,2)}function PT(e,t){return Lw(e.getUTCMinutes(),t,2)}function FT(e,t){return Lw(e.getUTCSeconds(),t,2)}function IT(e){var t=e.getUTCDay();return t===0?7:t}function LT(e,t){return Lw(pw.count(Cw(e)-1,e),t,2)}function RT(e){var t=e.getUTCDay();return t>=4||t===0?_w(e):_w.ceil(e)}function zT(e,t){return e=RT(e),Lw(_w.count(Cw(e),e)+(Cw(e).getUTCDay()===4),t,2)}function BT(e){return e.getUTCDay()}function VT(e,t){return Lw(mw.count(Cw(e)-1,e),t,2)}function HT(e,t){return Lw(e.getUTCFullYear()%100,t,2)}function UT(e,t){return e=RT(e),Lw(e.getUTCFullYear()%100,t,2)}function WT(e,t){return Lw(e.getUTCFullYear()%1e4,t,4)}function GT(e,t){var n=e.getUTCDay();return e=n>=4||n===0?_w(e):_w.ceil(e),Lw(e.getUTCFullYear()%1e4,t,4)}function KT(){return`+0000`}function qT(){return`%`}function JT(e){return+e}function YT(e){return Math.floor(e/1e3)}var XT,ZT,QT;$T({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function $T(e){return XT=Mw(e),ZT=XT.format,XT.parse,QT=XT.utcFormat,XT.utcParse,XT}function eE(e){return new Date(e)}function tE(e){return e instanceof Date?+e:+new Date(+e)}function nE(e,t,n,r,i,a,o,s,c,l){var u=LS(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>fx(e,r/t))},n.copy=function(){return fE(t).domain(e)},gx.apply(n,arguments)}function pE(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=AS,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*eyx,scaleDiverging:()=>mE,scaleDivergingLog:()=>hE,scaleDivergingPow:()=>_E,scaleDivergingSqrt:()=>vE,scaleDivergingSymlog:()=>gE,scaleIdentity:()=>dC,scaleImplicit:()=>_x,scaleLinear:()=>uC,scaleLog:()=>SC,scaleOrdinal:()=>vx,scalePoint:()=>xx,scalePow:()=>jC,scaleQuantile:()=>IC,scaleQuantize:()=>LC,scaleRadial:()=>FC,scaleSequential:()=>sE,scaleSequentialLog:()=>cE,scaleSequentialPow:()=>uE,scaleSequentialQuantile:()=>fE,scaleSequentialSqrt:()=>dE,scaleSequentialSymlog:()=>lE,scaleSqrt:()=>MC,scaleSymlog:()=>EC,scaleThreshold:()=>RC,scaleTime:()=>rE,scaleUtc:()=>iE,tickFormat:()=>cC});function bE(e){if(e in yE)return yE[e]();var t=`scale${ac(e)}`;if(t in yE)return yE[t]()}function xE(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=bE(e);if(r!=null)return r.domain(t).range(n),r}}function SE(e,t,n,r){if(!(n==null||r==null))return typeof e.scale==`function`?xE(e.scale,n,r):xE(t,n,r)}function CE(e){return`scale${ac(e)}`}function wE(e){return CE(e)in yE}var TE=(e,t,n)=>{if(e!=null){var{scale:r,type:i}=e;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return wE(r)?r:`point`}};function EE(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function DE(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=EE(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function OE(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):DE(e,void 0)}var kE=l(jy());function AE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function jE(e){for(var t=1;te.cartesianAxis.xAxis[t],RE=(e,t)=>LE(e,t)??IE,zE={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:FE,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},BE=(e,t)=>e.cartesianAxis.yAxis[t],VE=(e,t)=>BE(e,t)??zE,HE={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},UE=(e,t)=>e.cartesianAxis.zAxis[t]??HE,WE=(e,t,n)=>{switch(t){case`xAxis`:return RE(e,n);case`yAxis`:return VE(e,n);case`zAxis`:return UE(e,n);case`angleAxis`:return yb(e,n);case`radiusAxis`:return bb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},GE=(e,t,n)=>{switch(t){case`xAxis`:return RE(e,n);case`yAxis`:return VE(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},KE=(e,t,n)=>{switch(t){case`xAxis`:return RE(e,n);case`yAxis`:return VE(e,n);case`angleAxis`:return yb(e,n);case`radiusAxis`:return bb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},qE=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function JE(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var YE=e=>e.graphicalItems.cartesianItems,XE=$([Ob,kb],JE),ZE=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0?!0:!e.hide),QE=$([YE,WE,XE],ZE,{memoizeOptions:{resultEqualityCheck:Pb}}),$E=$([QE],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(Mb)),eD=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),tD=$([QE],eD),nD=e=>e.map(e=>e.data).filter(Boolean).flat(1),rD=$([QE],nD,{memoizeOptions:{resultEqualityCheck:Pb}}),iD=(e,t)=>{var{chartData:n=[],dataStartIndex:r,dataEndIndex:i}=t;return e.length>0?e:n.slice(r,i+1)},aD=$([rD,Py],iD),oD=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:Sp(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:Sp(e,t.dataKey)})),sD=$([aD,WE,QE],oD);function cD(e){if(Zs(e)||e instanceof Date){var t=Number(e);if(hp(t))return t}}function lD(e){if(Array.isArray(e)){var t=[cD(e[0]),cD(e[1])];return Iy(t)?t:void 0}var n=cD(e);if(n!=null)return[n,n]}function uD(e){return e.map(cD).filter(oc)}function dD(e,t){var n=cD(e),r=cD(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var fD=$([sD],e=>e?.map(e=>e.value).sort(dD));function pD(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function mD(e,t,n){return!n||typeof t!=`number`||Ys(t)||!n.length?[]:uD(n.flatMap(n=>{var r=Sp(e,n.dataKey),i,a;if(Array.isArray(r)?[i,a]=r:i=a=r,!(!hp(i)||!hp(a)))return[t-i,t+a]}))}var hD=e=>KE(e,Ib(e),Lb(e)),gD=$([hD],e=>e?.dataKey),_D=$([$E,Py,hD],jb),vD=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=r?[...a].reverse():a;return[i,{stackedData:kp(e,o.map(Ab),n),graphicalItems:o}]}))},yD=$([_D,$E,eb,tb],vD),bD=(e,t,n,r)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(r==null&&n!==`zAxis`){var o=Ip(e,i,a);if(!(o!=null&&o[0]===0&&o[1]===0))return o}},xD=$([WE],e=>e.allowDataOverflow),SD=e=>{if(e==null||!(`domain`in e))return FE;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=uD(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??FE},CD=$([WE],SD),wD=$([CD,xD],Ry),TD=$([yD,My,Ob,wD],bD,{memoizeOptions:{resultEqualityCheck:Nb}}),ED=e=>e.errorBars,DD=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>pD(n,e)),OD=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},kD=(e,t,n,r,i)=>{var a,o;if(n.length>0&&e.forEach(e=>{n.forEach(n=>{var s=r[n.id]?.filter(e=>pD(i,e)),c=Sp(e,t.dataKey??n.dataKey),l=mD(e,c,s);if(l.length>=2){var u=Math.min(...l),d=Math.max(...l);(a==null||uo)&&(o=d)}var f=lD(c);f!=null&&(a=a==null?f[0]:Math.min(a,f[0]),o=o==null?f[1]:Math.max(o,f[1]))})}),t?.dataKey!=null&&e.forEach(e=>{var n=lD(Sp(e,t.dataKey));n!=null&&(a=a==null?n[0]:Math.min(a,n[0]),o=o==null?n[1]:Math.max(o,n[1]))}),hp(a)&&hp(o))return[a,o]},AD=$([aD,WE,tD,ED,Ob],kD,{memoizeOptions:{resultEqualityCheck:Nb}});function jD(e){var{value:t}=e;if(Zs(t)||t instanceof Date)return t}var MD=(e,t,n)=>{var r=e.map(jD).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&tc(r))?(0,kE.default)(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},ND=e=>e.referenceElements.dots,PD=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),FD=$([ND,Ob,kb],PD),ID=e=>e.referenceElements.areas,LD=$([ID,Ob,kb],PD),RD=e=>e.referenceElements.lines,zD=$([RD,Ob,kb],PD),BD=(e,t)=>{if(e!=null){var n=uD(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},VD=$(FD,Ob,BD),HD=(e,t)=>{if(e!=null){var n=uD(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},UD=$([LD,Ob],HD);function WD(e){if(e.x!=null)return uD([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:uD(t)}function GD(e){if(e.y!=null)return uD([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:uD(t)}var KD=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?WD(e):GD(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},qD=$(VD,$([zD,Ob],KD),UD,(e,t,n)=>OD(e,n,t)),JD=(e,t,n,r,i,a,o,s)=>n??zy(t,o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?OD(r,a,i):OD(a,i),e.allowDataOverflow),YD=$([WE,CD,wD,TD,AD,qD,Ym,Ob],JD,{memoizeOptions:{resultEqualityCheck:Nb}}),XD=[0,1],ZD=(e,t,n,r,i,a,o)=>{if(!((e==null||n==null||n.length===0)&&o===void 0)){var{dataKey:s,type:c}=e,l=wp(t,a);return l&&s==null?(0,kE.default)(0,n?.length??0):c===`category`?MD(r,e,l):i===`expand`?XD:o}},QD=$([WE,Ym,aD,sD,eb,Ob,YD],ZD),$D=$([WE,qE,nb],TE),eO=(e,t,n)=>{var{niceTicks:r}=t;if(r!==`none`){var i=SD(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&Iy(e)){if(a)return Jy(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return Yy(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&Iy(e))return Jy(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&Iy(e))return Yy(e,t.tickCount,t.allowDecimals,`adaptive`)}}},tO=$([QD,KE,$D],eO),nO=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&Iy(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},rO=$([WE,QD,tO,Ob],nO),iO=$($(sD,WE,(e,t)=>{if(!(!t||t.type!==`number`)){var n=1/0,r=Array.from(uD(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!hp(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=ec(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),aO=(e,t,n)=>{var r=RE(e,t);return r==null||typeof r.padding!=`string`?0:iO(e,`xAxis`,t,n,r.padding)},oO=(e,t,n)=>{var r=VE(e,t);return r==null||typeof r.padding!=`string`?0:iO(e,`yAxis`,t,n,r.padding)},sO=$(RE,aO,(e,t)=>{if(e==null)return{left:0,right:0};var{padding:n}=e;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),cO=$(VE,oO,(e,t)=>{if(e==null)return{top:0,bottom:0};var{padding:n}=e;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),lO=$([cm,sO,mm,pm,(e,t,n)=>n],(e,t,n,r,i)=>{var{padding:a}=r;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),uO=$([cm,Ym,cO,mm,pm,(e,t,n)=>n],(e,t,n,r,i,a)=>{var{padding:o}=i;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),dO=(e,t,n,r)=>{switch(t){case`xAxis`:return lO(e,n,r);case`yAxis`:return uO(e,n,r);case`zAxis`:return UE(e,n)?.range;case`angleAxis`:return Tb(e);case`radiusAxis`:return Eb(e,n);default:return}},fO=$([WE,dO],ub),pO=$([WE,$D,$([$D,rO],zb),fO],SE),mO=(e,t,n,r)=>{if(!(n==null||n.dataKey==null)){var{type:i,scale:a}=n;if(wp(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},hO=$([Ym,sD,KE,Ob],mO),gO=$([pO],Rb);$([pO],OE),$([pO,fD],DE),$([QE,ED,Ob],DD);function _O(e,t){return e.idt.id?1:0}var vO=(e,t)=>t,yO=(e,t,n)=>n,bO=$(Jp,vO,yO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(_O)),xO=$(Yp,vO,yO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(_O)),SO=(e,t)=>({width:e.width,height:t.height}),CO=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),wO=$(cm,RE,SO),TO=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},EO=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},DO=$(Gp,cm,bO,vO,yO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=SO(t,n);o??=TO(t,r,e);var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),OO=$(Wp,cm,xO,vO,yO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=CO(t,n);o??=EO(t,r,e);var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),kO=$([cm,RE,(e,t)=>{var n=RE(e,t);if(n!=null)return DO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),AO=$([cm,VE,(e,t)=>{var n=VE(e,t);if(n!=null)return OO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),jO=$(cm,VE,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),MO=(e,t,n)=>{switch(t){case`xAxis`:return wO(e,n).width;case`yAxis`:return jO(e,n).height;default:return}},NO=(e,t,n,r)=>{if(n!=null){var{allowDuplicatedCategory:i,type:a,dataKey:o}=n,s=wp(e,r),c=t.map(e=>e.value);if(o&&s&&a===`category`&&i&&tc(c))return c}},PO=$([Ym,sD,WE,Ob],NO),FO=$([Ym,GE,$D,gO,PO,hO,dO,tO,Ob],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=wp(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),IO=$([Ym,KE,$D,gO,tO,dO,PO,hO,Ob],(e,t,n,r,i,a,o,s,c)=>{if(!(t==null||r==null)){var l=wp(e,c),{type:u,ticks:d,tickCount:f}=t,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?Js(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return hp(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(oc):l&&s?s.map((e,t)=>{var n=r.map(e);return hp(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(oc):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return hp(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(oc):r.domain().map((e,t)=>{var n=r.map(e);return hp(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(oc)}}),LO=$([Ym,KE,gO,dO,PO,hO,Ob],(e,t,n,r,i,a,o)=>{if(!(t==null||n==null||r==null||r[0]===r[1])){var s=wp(e,o),{tickCount:c}=t,l=0;return l=o===`angleAxis`&&r?.length>=2?Js(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return hp(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(oc):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return hp(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(oc):n.domain().map((e,t)=>{var r=n.map(e);return hp(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(oc)}}),RO=$(WE,gO,(e,t)=>{if(!(e==null||t==null))return jE(jE({},e),{},{scale:t})});$((e,t,n)=>UE(e,n),$([$([WE,$D,QD,fO],SE)],Rb),(e,t)=>{if(!(e==null||t==null))return jE(jE({},e),{},{scale:t})});var zO=$([Ym,Jp,Yp],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});$([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(!(!e||e.length===0))return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,VO=e=>e.options.validateTooltipEventTypes;function HO(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function UO(e,t){return HO(t,BO(e),VO(e))}function WO(e){return Q(t=>UO(t,e))}var GO=(e,t)=>{var n,r=Number(t);if(!(Ys(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},KO=e=>e.tooltip.settings,qO={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},JO=bf({name:`tooltip`,initialState:{itemInteraction:{click:qO,hover:qO},axisInteraction:{click:qO,hover:qO},keyboardInteraction:qO,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Xh(t.payload))},prepare:Xd()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Fd(e).tooltipItemPayloads.indexOf(Xh(n));i>-1&&(e.tooltipItemPayloads[i]=Xh(r))},prepare:Xd()},removeTooltipEntrySettings:{reducer(e,t){var n=Fd(e).tooltipItemPayloads.indexOf(Xh(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:Xd()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:YO,replaceTooltipEntrySettings:XO,removeTooltipEntrySettings:ZO,setTooltipSettingsState:QO,setActiveMouseOverItemIndex:$O,mouseLeaveItem:ek,mouseLeaveChart:tk,setActiveClickItemIndex:nk,setMouseOverAxisIndex:rk,setMouseClickAxisIndex:ik,setSyncInteraction:ak,setKeyboardInteraction:ok}=JO.actions,sk=JO.reducer;function ck(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function lk(e){for(var t=1;t{if(t==null)return qO;var i=pk(e,t,n);if(i==null)return qO;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(mk(i)){if(a)return lk(lk({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return lk(lk({},qO),{},{coordinate:i.coordinate})};function gk(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function _k(e,t){var n=gk(e),r=t[0],i=t[1];return n===void 0?!1:n>=Math.min(r,i)&&n<=Math.max(r,i)}function vk(e,t,n){if(n==null||t==null)return!0;var r=Sp(e,t);return r==null||!Iy(n)?!0:_k(r,n)}var yk=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!hp(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||vk(l,n,r)?String(c):null},bk=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},xk=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&r!=null){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},Sk=e=>e.options.tooltipPayloadSearcher,Ck=e=>e.tooltip;function wk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Tk(e){for(var t=1;te(t)}function Mk(e){if(typeof e==`string`)return e}function Nk(e){if(!(typeof e!=`object`||!e))return{name:`name`in e?kk(e.name):void 0,unit:`unit`in e?Ak(e.unit):void 0,dataKey:`dataKey`in e?jk(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?Mk(e.color):void 0,fill:`fill`in e?Mk(e.fill):void 0}}function Pk(e,t){return e??t}var Fk=(e,t,n,r,i,a,o)=>{if(!(t==null||a==null)){var{chartData:s,computedData:c,dataStartIndex:l,dataEndIndex:u}=n;return e.reduce((e,n)=>{var{dataDefinedOnItem:d,settings:f}=n,p=Pk(d,s),m=Array.isArray(p)?mp(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_=r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?rc(m,r,i):a(m,t,c,g);return Array.isArray(_)?_.forEach(t=>{var n=Nk(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=Tk(Tk({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(Bp({tooltipEntrySettings:o,dataKey:i,payload:a,value:Sp(a,i),name:r==null?void 0:String(r)}))}):e.push(Bp({tooltipEntrySettings:f,dataKey:h,payload:_,value:Sp(_,h),name:Sp(_,g)??f?.name})),e},[])}},Ik=$([hD,qE,nb],TE),Lk=$([$([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),hD,$([Ib,Lb],JE)],ZE,{memoizeOptions:{resultEqualityCheck:Pb}}),Rk=$([Lk],e=>e.filter(Mb)),zk=$([$([Lk],nD,{memoizeOptions:{resultEqualityCheck:Pb}}),My],iD),Bk=$([Rk,My,hD],jb),Vk=$([zk,hD,Lk],oD),Hk=$([hD],SD),Uk=$([Hk,$([hD],e=>e.allowDataOverflow)],Ry),Wk=$([$([Bk,$([Lk],e=>e.filter(Mb)),eb,tb],vD),My,Ib,Uk],bD),Gk=$([zk,hD,$([Lk],eD),ED,Ib],kD,{memoizeOptions:{resultEqualityCheck:Nb}}),Kk=$([$([ND,Ib,Lb],PD),Ib],BD),qk=$([$([ID,Ib,Lb],PD),Ib],HD),Jk=$([hD,Ym,zk,Vk,eb,Ib,$([hD,Hk,Uk,Wk,Gk,$([Kk,$([$([RD,Ib,Lb],PD),Ib],KD),qk],OD),Ym,Ib],JD)],ZD),Yk=$([hD,Jk,$([Jk,hD,Ik],eO),Ib],nO),Xk=e=>dO(e,Ib(e),Lb(e),!1),Zk=$([hD,Xk],ub),Qk=$([$([hD,Ik,Yk,Zk],SE)],Rb),$k=$([Ym,hD,Ik,Qk,Xk,$([Ym,Vk,hD,Ib],NO),$([Ym,Vk,hD,Ib],mO),Ib],(e,t,n,r,i,a,o,s)=>{if(t){var{type:c}=t,l=wp(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?Js(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return hp(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(oc):r.domain().map((e,t)=>{var n=r.map(e);return hp(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(oc)}}}),eA=$([BO,VO,KO],(e,t,n)=>HO(n.shared,e,t)),tA=e=>e.tooltip.settings.trigger,nA=e=>e.tooltip.settings.defaultIndex,rA=$([Ck,eA,tA,nA],hk),iA=$([rA,zk,gD,Jk],yk),aA=$([$k,iA],GO),oA=$([rA],e=>{if(e)return e.dataKey}),sA=$([rA],e=>{if(e)return e.graphicalItemId}),cA=$([Ck,eA,tA,nA],xk),lA=$([rA,$([Wp,Gp,Ym,cm,$k,nA,cA],bk)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),uA=$([rA],e=>e?.active??!1),dA=$([$([cA,iA,My,gD,aA,Sk,eA],Fk)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function fA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function pA(e){for(var t=1;tQ(hD),vA=()=>{var e=_A(),t=Q($k),n=Q(Qk);return zp(!e||!n?void 0:pA(pA({},e),{},{scale:n}),t)};function yA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function bA(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},TA=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,{radius:o}=r;return bA(bA(bA({},r),iy(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,{angle:c}=r;return bA(bA(bA({},r),iy(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function EA(e,t){var{relativeX:n,relativeY:r}=e;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var DA=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=0;o0?n[o-1]?.coordinate:n[a-1]?.coordinate,c=n[o]?.coordinate,l=o>=a-1?n[0]?.coordinate:n[o+1]?.coordinate,u=void 0;if(!(s==null||c==null||l==null))if(Js(c-s)!==Js(l-c)){var d=[];if(Js(l-c)===Js(i[1]-i[0])){u=l;var f=c+i[1]-i[0];d[0]=Math.min(f,(f+s)/2),d[1]=Math.max(f,(f+s)/2)}else{u=s;var p=l+i[1]-i[0];d[0]=Math.min(c,(p+c)/2),d[1]=Math.max(c,(p+c)/2)}var m=[Math.min(c,(u+c)/2),Math.max(c,(u+c)/2)];if(e>m[0]&&e<=m[1]||e>=d[0]&&e<=d[1])return n[o]?.index}else{var h=Math.min(s,l),g=Math.max(s,l);if(e>(h+c)/2&&e<=(g+c)/2)return n[o]?.index}}else if(t)for(var _=0;_(v.coordinate+b.coordinate)/2||_>0&&_(v.coordinate+b.coordinate)/2&&e<=(v.coordinate+y.coordinate)/2)return v.index}}return-1},OA=()=>Q(nb),kA=(e,t)=>t,AA=(e,t,n)=>n,jA=(e,t,n,r)=>r,MA=$($k,e=>(0,$l.default)(e,e=>e.coordinate)),NA=$([Ck,kA,AA,jA],hk),PA=$([NA,zk,gD,Jk],yk),FA=(e,t,n)=>{if(t!=null){var r=Ck(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},IA=$([Ck,kA,AA,jA],xk),LA=$([Wp,Gp,Ym,cm,$k,jA,IA],bk),RA=$([NA,LA],(e,t)=>e.coordinate??t),zA=$([$k,PA],GO),BA=$([IA,PA,My,gD,zA,Sk,kA],Fk),VA=$([NA,PA],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),HA=(e,t,n,r,i,a,o)=>{if(!(!e||!n||!r||!i)&&EA(e,o)){var s=DA(Hp(e,t),a,i,n,r),c=wA(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},UA=(e,t,n,r,i,a,o)=>{if(!(!e||!r||!i||!a||!n)){var s=uy(e,n);if(s){var c=DA(Up(s,t),o,a,r,i),l=TA(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},WA=(e,t,n,r,i,a,o,s)=>{if(!(!e||!t||!r||!i||!a))return t===`horizontal`||t===`vertical`?HA(e,t,r,i,a,o,s):UA(e,t,n,r,i,a,o)},GA=$(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),KA=$(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(sb));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:Fb}});function qA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function JA(e){for(var t=1;tJA(JA({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},$A=new Set(Object.values(sb));function ej(e){return $A.has(e)}var tj=bf({name:`zIndex`,initialState:QA,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:Xd()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!ej(n)&&delete e.zIndexMap[n])},prepare:Xd()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:r,isPanorama:i}=t.payload;e.zIndexMap[n]?i?e.zIndexMap[n].panoramaElement=Xh(r):e.zIndexMap[n].element=Xh(r):e.zIndexMap[n]={consumers:0,element:i?void 0:Xh(r),panoramaElement:i?Xh(r):void 0}},prepare:Xd()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:Xd()}}}),{registerZIndexPortal:nj,unregisterZIndexPortal:rj,registerZIndexPortalElement:ij,unregisterZIndexPortalElement:aj}=tj.actions,oj=tj.reducer;function sj(e){var{zIndex:t,children:n}=e,r=$m()&&t!==void 0&&t!==0,i=fm(),a=Ol();(0,w.useLayoutEffect)(()=>r?(a(nj({zIndex:t})),()=>{a(rj({zIndex:t}))}):sc,[a,t,r]);var o=Q(e=>GA(e,t,i));return r?o?(0,gn.createPortal)(n,o):null:n}function cj(){return cj=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,w.useContext)(_j),yj=l(o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!Ys(n))return e[n]}},wj=bf({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??=Symbol(`rechartsEventEmitter`)}}}),Tj=wj.reducer,{createEventEmitter:Ej}=wj.actions;function Dj(e){return e.tooltip.syncInteraction}var Oj=bf({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=Xh(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:r}=t.payload;n!=null&&(e.dataStartIndex=n),r!=null&&(e.dataEndIndex=r)}}}),{setChartData:kj,setDataStartEndIndexes:Aj,setComputedData:jj}=Oj.actions,Mj=Oj.reducer,Nj=[`x`,`y`];function Pj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Fj(e){for(var t=1;t{if(e==null)return sc;var s=(s,c,l)=>{if(t!==l&&e===s){if(r===`index`){var u;if(o&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,{x:f,y:p}=d,m=zj(d,Nj),{x:h,y:g,width:_,height:v}=c.payload.sourceViewBox,y=Fj(Fj({},m),{},{x:o.x+(_?(f-h)/_:0)*o.width,y:o.y+(v?(p-g)/v:0)*o.height});n(Fj(Fj({},c),{},{payload:Fj(Fj({},c.payload),{},{coordinate:y})}))}else n(c);return}if(i!=null){var b;typeof r==`function`?b=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(b=i.find(e=>String(e.value)===c.payload.label));var{coordinate:x}=c.payload;if(b==null||c.payload.active===!1||x==null||o==null){n(ak({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}var{x:S,y:C}=x,w=Math.min(S,o.x+o.width),T=Math.min(C,o.y+o.height),E={x:a===`horizontal`?b.coordinate:w,y:a===`horizontal`?T:b.coordinate};n(ak({active:c.payload.active,coordinate:E,dataKey:c.payload.dataKey,index:String(b.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return bj.on(xj,s),()=>{bj.off(xj,s)}},[Q(e=>e.rootProps.className),n,t,e,r,i,a,o])}function Hj(){var e=Q(rb),t=Q(ab),n=Ol();(0,w.useEffect)(()=>{if(e==null)return sc;var r=(r,i,a)=>{t!==a&&e===r&&n(Aj(i))};return bj.on(Sj,r),()=>{bj.off(Sj,r)}},[n,t,e])}function Uj(){var e=Ol();(0,w.useEffect)(()=>{e(Ej())},[e]),Vj(),Hj()}function Wj(e,t,n,r,i,a){var o=Q(n=>FA(n,e,t)),s=Q(sA),c=Q(ab),l=Q(rb),u=Q(ib),d=Q(Dj)?.active,f=Um();(0,w.useEffect)(()=>{if(!d&&l!=null&&c!=null){var e=ak({active:a,coordinate:n,dataKey:o,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:f,graphicalItemId:s});bj.emit(xj,l,e,c)}},[d,n,o,s,i,r,c,l,u,a,f])}function Gj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Kj(e){for(var t=1;t{x(QO({shared:g,trigger:_,axisId:b,active:n,defaultIndex:S}))},[x,g,_,b,n,S]);var C=Um(),T=p_(),E=WO(g),{activeIndex:D,isActive:O}=Q(e=>VA(e,E,_,S))??{},k=Q(e=>BA(e,E,_,S)),A=Q(e=>zA(e,E,_,S)),j=Q(e=>RA(e,E,_,S)),M=k,N=vj(),P=n??O??!1,[ee,F]=au([M,P]),I=E===`axis`?A:void 0;Wj(E,_,j,I,D,P);var te=y??N;if(te==null||C==null||E==null)return null;var ne=M??Qj;P||(ne=Qj),s&&ne.length&&(ne=bl(ne.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),u,Xj));var re=ne.length>0,L=Kj(Kj({},t),{},{payload:ne,label:I,active:P,activeIndex:D,coordinate:j,accessibilityLayer:T}),ie=w.createElement(f_,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:c,active:P,coordinate:j,hasPayload:re,offset:l,position:d,reverseDirection:f,useTranslate3d:p,viewBox:C,wrapperStyle:m,lastBoundingBox:ee,innerRef:F,hasPortalFromProps:!!y},Zj(o,L));return w.createElement(w.Fragment,null,(0,gn.createPortal)(ie,te),P&&w.createElement(gj,{cursor:h,tooltipEventType:E,coordinate:j,payload:ne,index:D}))}var tM=e=>null;tM.displayName=`Cell`;function nM(e,t,n){return(t=rM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function rM(e){var t=iM(e,`string`);return typeof t==`symbol`?t:t+``}function iM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var aM=class{constructor(e){nM(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function oM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function sM(e){for(var t=1;t{try{var n=document.getElementById(mM);n||(n=document.createElement(`span`),n.setAttribute(`id`,mM),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,pM,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},_M=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||r_.isSsr)return{width:0,height:0};if(!dM.enableCache)return gM(e,t);var n=hM(e,t),r=fM.get(n);if(r)return r;var i=gM(e,t);return fM.set(n,i),i},vM;function yM(e,t,n){return(t=bM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function bM(e){var t=xM(e,`string`);return typeof t==`symbol`?t:t+``}function xM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var SM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,CM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,wM=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,TM=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,EM={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},DM=[`cm`,`mm`,`pt`,`pc`,`in`,`Q`,`px`];function OM(e){return DM.includes(e)}var kM=`NaN`;function AM(e,t){return e*EM[t]}var jM=class e{static parse(t){var[,n,r]=TM.exec(t)??[];return n==null?e.NaN:new e(parseFloat(n),r??``)}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Ys(e)&&(this.unit=``),t!==``&&!wM.test(t)&&(this.num=NaN,this.unit=``),OM(t)&&(this.num=AM(e,t),this.unit=`px`)}add(t){return this.unit===t.unit?new e(this.num+t.num,this.unit):new e(NaN,``)}subtract(t){return this.unit===t.unit?new e(this.num-t.num,this.unit):new e(NaN,``)}multiply(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num/t.num,this.unit||t.unit)}toString(){return`${this.num}${this.unit}`}isNaN(){return Ys(this.num)}};vM=jM,yM(jM,`NaN`,new vM(NaN,``));function MM(e){if(e==null||e.includes(kM))return kM;for(var t=e;t.includes(`*`)||t.includes(`/`);){var[,n,r,i]=SM.exec(t)??[],a=jM.parse(n??``),o=jM.parse(i??``),s=r===`*`?a.multiply(o):a.divide(o);if(s.isNaN())return kM;t=t.replace(SM,s.toString())}for(;t.includes(`+`)||/.-\d+(?:\.\d+)?/.test(t);){var[,c,l,u]=CM.exec(t)??[],d=jM.parse(c??``),f=jM.parse(u??``),p=l===`+`?d.add(f):d.subtract(f);if(p.isNaN())return kM;t=t.replace(CM,p.toString())}return t}var NM=/\(([^()]*)\)/;function PM(e){for(var t=e,n;(n=NM.exec(t))!=null;){var[,r]=n;t=t.replace(NM,MM(r))}return t}function FM(e){var t=e.replace(/\s+/g,``);return t=PM(t),t=MM(t),t}function IM(e){try{return FM(e)}catch{return kM}}function LM(e){var t=IM(e.slice(5,-1));return t===kM?``:t}var RM=[`x`,`y`,`lineHeight`,`capHeight`,`fill`,`scaleToFit`,`textAnchor`,`verticalAnchor`],zM=[`dx`,`dy`,`angle`,`className`,`breakAll`];function BM(){return BM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:n,style:r}=e;try{var i=[];return ic(t)||(i=n?t.toString().split(``):t.toString().split(UM)),{wordsWithComputedWidth:i.map(e=>({word:e,width:_M(e,r).width})),spaceWidth:n?0:_M(`\xA0`,r).width}}catch{return null}};function GM(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function KM(e){return ic(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var qM=(e,t,n,r)=>e.reduce((e,i)=>{var{word:a,width:o}=i,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),YM=`…`,XM=(e,t,n,r,i,a,o,s)=>{var c=WM({breakAll:n,style:r,children:e.slice(0,t)+YM});if(!c)return[!1,[]];var l=qM(c.wordsWithComputedWidth,a,o,s);return[l.length>i||JM(l).width>Number(a),l]},ZM=(e,t,n,r,i)=>{var{maxLines:a,children:o,style:s,breakAll:c}=e,l=Z(a),u=String(o),d=qM(t,r,n,i);if(!l||i||!(d.length>a||JM(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),[_,v]=XM(u,g-1,c,s,a,r,n,i),[y]=XM(u,g,c,s,a,r,n,i);if(!_&&!y&&(f=g+1),_&&y&&(p=g-1),!_&&y){h=v;break}m++}return h||d},QM=e=>[{words:ic(e)?[]:e.toString().split(UM),width:void 0}],$M=e=>{var{width:t,scaleToFit:n,children:r,style:i,breakAll:a,maxLines:o}=e;if((t||n)&&!r_.isSsr){var s,c,l=WM({breakAll:a,children:r,style:i});if(l){var{wordsWithComputedWidth:u,spaceWidth:d}=l;s=u,c=d}else return QM(r);return ZM({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return QM(r)},eN=`#808080`,tN={angle:0,breakAll:!1,capHeight:`0.71em`,fill:eN,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},nN=(0,w.forwardRef)((e,t)=>{var n=Mc(e,tN),{x:r,y:i,lineHeight:a,capHeight:o,fill:s,scaleToFit:c,textAnchor:l,verticalAnchor:u}=n,d=VM(n,RM),f=(0,w.useMemo)(()=>$M({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:c,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,c,d.style,d.width]),{dx:p,dy:m,angle:h,className:g,breakAll:_}=d,v=VM(d,zM);if(!Zs(r)||!Zs(i)||f.length===0)return null;var y=Number(r)+(Z(p)?p:0),b=Number(i)+(Z(m)?m:0);if(!hp(y)||!hp(b))return null;var x;switch(u){case`start`:x=LM(`calc(${o})`);break;case`middle`:x=LM(`calc(${(f.length-1)/2} * -${a} + (${o} / 2))`);break;default:x=LM(`calc(${f.length-1} * -${a})`);break}var S=[],C=f[0];if(c&&C!=null){var T=C.width,{width:E}=d;S.push(`scale(${Z(E)&&Z(T)?E/T:1})`)}return h&&S.push(`rotate(${h}, ${y}, ${b})`),S.length&&(v.transform=S.join(` `)),w.createElement(`text`,BM({},Qa(v),{ref:t,x:y,y:b,className:Wa(`recharts-text`,g),textAnchor:l,fill:s.includes(`url`)?eN:s}),f.map((e,t)=>{var n=e.words.join(_?``:` `);return w.createElement(`tspan`,{x:y,dy:t===0?x:a,key:`${n}-${t}`},n)}))});nN.displayName=`Text`;function rN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function iN(e){for(var t=1;t{var{viewBox:t,position:n,offset:r=0,parentViewBox:i,clamp:a}=e,{x:o,y:s,height:c,upperWidth:l,lowerWidth:u}=Hm(t),d=o,f=o+(l-u)/2,p=(d+f)/2,m=(l+u)/2,h=d+l/2,g=c>=0?1:-1,_=g*r,v=g>0?`end`:`start`,y=g>0?`start`:`end`,b=l>=0?1:-1,x=b*r,S=b>0?`end`:`start`,C=b>0?`start`:`end`,w=i;if(n===`top`){var T={x:d+l/2,y:s-_,horizontalAnchor:`middle`,verticalAnchor:v};return a&&w&&(T.height=Math.max(s-w.y,0),T.width=l),T}if(n===`bottom`){var E={x:f+u/2,y:s+c+_,horizontalAnchor:`middle`,verticalAnchor:y};return a&&w&&(E.height=Math.max(w.y+w.height-(s+c),0),E.width=u),E}if(n===`left`){var D={x:p-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`};return a&&w&&(D.width=Math.max(D.x-w.x,0),D.height=c),D}if(n===`right`){var O={x:p+m+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`};return a&&w&&(O.width=Math.max(w.x+w.width-O.x,0),O.height=c),O}var k=a&&w?{width:m,height:c}:{};return n===`insideLeft`?iN({x:p+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`},k):n===`insideRight`?iN({x:p+m-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`},k):n===`insideTop`?iN({x:d+l/2,y:s+_,horizontalAnchor:`middle`,verticalAnchor:y},k):n===`insideBottom`?iN({x:f+u/2,y:s+c-_,horizontalAnchor:`middle`,verticalAnchor:v},k):n===`insideTopLeft`?iN({x:d+x,y:s+_,horizontalAnchor:C,verticalAnchor:y},k):n===`insideTopRight`?iN({x:d+l-x,y:s+_,horizontalAnchor:S,verticalAnchor:y},k):n===`insideBottomLeft`?iN({x:f+x,y:s+c-_,horizontalAnchor:C,verticalAnchor:v},k):n===`insideBottomRight`?iN({x:f+u-x,y:s+c-_,horizontalAnchor:S,verticalAnchor:v},k):n&&typeof n==`object`&&(Z(n.x)||Xs(n.x))&&(Z(n.y)||Xs(n.y))?iN({x:o+ec(n.x,m),y:s+ec(n.y,c),horizontalAnchor:`end`,verticalAnchor:`end`},k):iN({x:h,y:s+c/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},k)},lN=[`labelRef`],uN=[`content`];function dN(e,t){if(e==null)return{};var n,r,i=fN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o,children:s}=e,c=(0,w.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o}),[t,n,r,i,a,o]);return w.createElement(yN.Provider,{value:c},s)},xN=()=>{var e=(0,w.useContext)(yN),t=Um();return e||(t?Hm(t):void 0)},SN=(0,w.createContext)(null),CN=()=>{var e=(0,w.useContext)(SN),t=Q(Db);return e||t},wN=e=>{var{value:t,formatter:n}=e,r=ic(e.children)?t:e.children;return typeof n==`function`?n(r):r},TN=e=>e!=null&&typeof e==`function`,EN=(e,t)=>Js(t-e)*Math.min(Math.abs(t-e),360),DN=(e,t,n,r,i)=>{var{offset:a,className:o}=e,{cx:s,cy:c,innerRadius:l,outerRadius:u,startAngle:d,endAngle:f,clockWise:p}=i,m=(l+u)/2,h=EN(d,f),g=h>=0?1:-1,_,v;switch(t){case`insideStart`:_=d+g*a,v=p;break;case`insideEnd`:_=f-g*a,v=!p;break;case`end`:_=f+g*a,v=p;break;default:throw Error(`Unsupported position ${t}`)}v=h<=0?v:!v;var y=iy(s,c,m,_),b=iy(s,c,m,_+(v?1:-1)*359),x=`M${y.x},${y.y} - A${m},${m},0,1,${v?0:1}, - ${b.x},${b.y}`,S=ic(e.id)?$s(`recharts-radial-line-`):e.id;return w.createElement(`text`,vN({},r,{dominantBaseline:`central`,className:Wa(`recharts-radial-bar-label`,o)}),w.createElement(`defs`,null,w.createElement(`path`,{id:S,d:x})),w.createElement(`textPath`,{xlinkHref:`#${S}`},n))},ON=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=iy(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=iy(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},kN=e=>e!=null&&`cx`in e&&Z(e.cx),AN={angle:0,offset:5,zIndex:sb.label,position:`middle`,textBreakAll:!1};function jN(e){if(!kN(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function MN(e){var t=Mc(e,AN),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=CN(),f=xN(),p=n==null?i===`center`?f:d??f:kN(n)?n:Hm(n),m,h,g=jN(p);if(!p||ic(a)&&ic(o)&&!(0,w.isValidElement)(s)&&typeof s!=`function`)return null;var _=mN(mN({},t),{},{viewBox:p});if((0,w.isValidElement)(s)){var{labelRef:v}=_;return(0,w.cloneElement)(s,dN(_,lN))}if(typeof s==`function`){var{content:y}=_;if(m=(0,w.createElement)(s,dN(_,uN)),(0,w.isValidElement)(m))return m}else m=wN(t);var b=Qa(t);if(kN(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return DN(t,i,m,b,p);h=ON(p,t.offset,t.position)}else{if(!g)return null;var x=cN({viewBox:g,position:i,offset:t.offset,parentViewBox:kN(r)?void 0:r,clamp:!0});h=mN(mN({x:x.x,y:x.y,textAnchor:x.horizontalAnchor,verticalAnchor:x.verticalAnchor},x.width===void 0?{}:{width:x.width}),x.height===void 0?{}:{height:x.height})}return w.createElement(sj,{zIndex:t.zIndex},w.createElement(nN,vN({ref:u,className:Wa(`recharts-label`,c)},b,h,{textAnchor:GM(b.textAnchor)?b.textAnchor:h.textAnchor,breakAll:l}),m))}MN.displayName=`Label`;var NN=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?w.createElement(MN,vN({key:`label-implicit`},r)):Zs(e)?w.createElement(MN,vN({key:`label-implicit`,value:e},r)):(0,w.isValidElement)(e)?e.type===MN?(0,w.cloneElement)(e,mN({key:`label-implicit`},r)):w.createElement(MN,vN({key:`label-implicit`,content:e},r)):TN(e)?w.createElement(MN,vN({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?w.createElement(MN,vN({},e,{key:`label-implicit`},r)):null};function PN(e){var{label:t,labelRef:n}=e;return NN(t,xN(),n)||null}var FN=[`valueAccessor`],IN=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function LN(){return LN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(KM(t))return t},VN=(0,w.createContext)(void 0),HN=VN.Provider,UN=(0,w.createContext)(void 0),WN=UN.Provider;function GN(){return(0,w.useContext)(VN)}function KN(){return(0,w.useContext)(UN)}function qN(e){var{valueAccessor:t=BN}=e,n=RN(e,FN),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=RN(n,IN),l=GN(),u=KN(),d=l||u;return!d||!d.length?null:w.createElement(sj,{zIndex:s??sb.label},w.createElement(lo,{className:`recharts-label-list`},d.map((e,i)=>{var s=ic(r)?t(e,i):Sp(e.payload,r),l=ic(a)?{}:{id:`${a}-${i}`};return w.createElement(MN,LN({key:`label-${i}`},Qa(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}qN.displayName=`LabelList`;function JN(e){var{label:t}=e;return t?t===!0?w.createElement(qN,{key:`labelList-implicit`}):w.isValidElement(t)||TN(t)?w.createElement(qN,{key:`labelList-implicit`,content:t}):typeof t==`object`?w.createElement(qN,LN({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function YN(){return YN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=Wa(`recharts-dot`,i);return Z(t)&&Z(n)&&Z(r)?w.createElement(`circle`,YN({},Xa(e),wc(e),{className:a,cx:t,cy:n,r})):null},ZN=e=>e.graphicalItems.polarItems,QN=$([ZN,WE,$([Ob,kb],JE)],ZE),$N=$([$([QN],nD),Ny],iD),eP=$([$N,WE,QN],oD);$([$N,WE,QN],(e,t,n)=>n.length>0?e.flatMap(e=>n.flatMap(n=>({value:Sp(e,t.dataKey??n.dataKey),errorDomain:[]}))).filter(Boolean):t?.dataKey==null?e.map(e=>({value:e,errorDomain:[]})):e.map(e=>({value:Sp(e,t.dataKey),errorDomain:[]})));var tP=()=>void 0,nP=$([WE,Ym,$N,eP,eb,Ob,$([WE,CD,wD,tP,$([$N,WE,QN,ED,Ob],kD),tP,Ym,Ob],JD)],ZD);$([$D,$([WE,nP,$([nP,KE,$D],eO),Ob],nO)],zb);var rP=bf({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Xh(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Xh(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:iP,removeRadiusAxis:aP,addAngleAxis:oP,removeAngleAxis:sP}=rP.actions,cP=rP.reducer;function lP(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}function uP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function dP(e){for(var t=1;tt],(e,t)=>e.filter(e=>e.type===`pie`).find(e=>e.id===t)),gP=[],_P=(e,t,n)=>n?.length===0?gP:n,vP=$([Ny,hP,_P],(e,t,n)=>{var{chartData:r}=e;if(t!=null){var i=t?.data!=null&&t.data.length>0?t.data:r;if((!i||!i.length)&&n!=null&&(i=n.map(e=>dP(dP({},t.presentationProps),e.props))),i!=null)return i}}),yP=$([vP,hP,_P],(e,t,n)=>{if(!(e==null||t==null))return e.map((e,r)=>{var i,a=Sp(e,t.nameKey,t.name),o=n!=null&&(i=n[r])!=null&&(i=i.props)!=null&&i.fill?n[r].props.fill:typeof e==`object`&&e&&`fill`in e?e.fill:t.fill;return{value:Vp(a,t.dataKey),color:o,payload:e,type:t.legendType}})}),bP=$([vP,hP,_P,cm],(e,t,n,r)=>{if(!(t==null||e==null))return XF({offset:r,pieSettings:t,displayedData:e,cells:n})}),xP=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.suspense_list`),d=Symbol.for(`react.memo`),f=Symbol.for(`react.lazy`),p=Symbol.for(`react.view_transition`);function m(e){if(typeof e==`object`&&e){var m=e.$$typeof;switch(m){case t:switch(e=e.type,e){case r:case a:case i:case l:case u:case p:return e;default:switch(e&&=e.$$typeof,e){case s:case c:case f:case d:return e;case o:return e;default:return m}}case n:return m}}}e.isFragment=function(e){return m(e)===r}})),SP=o(((e,t)=>{t.exports=xP()}))(),CP=e=>typeof e==`string`?e:e?e.displayName||e.name||`Component`:``,wP=null,TP=null,EP=e=>{if(e===wP&&Array.isArray(TP))return TP;var t=[];return w.Children.forEach(e,e=>{ic(e)||((0,SP.isFragment)(e)?t=t.concat(EP(e.props.children)):t.push(e))}),TP=t,wP=e,t};function DP(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(e=>CP(e)):[CP(t)],EP(e).forEach(e=>{var t=(0,qs.default)(e,`type.displayName`)||(0,qs.default)(e,`type.name`);t&&r.indexOf(t)!==-1&&n.push(e)}),n}var OP=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,kP=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),AP=o(((e,t)=>{t.exports=kP().isPlainObject})),jP,MP,NP,PP,FP;function IP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function LP(e){for(var t=1;t{var a=n-r,o=Ks(jP||=HP([`M `,`,`,``]),e,t);return o+=Ks(MP||=HP([`L `,`,`,``]),e+n,t),o+=Ks(NP||=HP([`L `,`,`,``]),e+n-a/2,t+i),o+=Ks(PP||=HP([`L `,`,`,``]),e+n-a/2-r,t+i),o+=Ks(FP||=HP([`L `,`,`,` Z`]),e,t),o},WP={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},GP=e=>{var t=Mc(e,WP),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,w.useRef)(null),[p,m]=(0,w.useState)(-1),h=(0,w.useRef)(i),g=(0,w.useRef)(a),_=(0,w.useRef)(o),v=(0,w.useRef)(n),y=(0,w.useRef)(r),b=Ev(e,`trapezoid-`);if((0,w.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var x=Wa(`recharts-trapezoid`,s);if(!d)return w.createElement(`g`,null,w.createElement(`path`,VP({},Qa(t),{className:x,d:UP(n,r,i,a,o)})));var S=h.current,C=g.current,T=_.current,E=v.current,D=y.current,O=`0px ${p===-1?1:p}px`,k=`${p}px ${p}px`,A=q_([`strokeDasharray`],l,c);return w.createElement(Tv,{animationId:b,key:b,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=nc(S,i,e),c=nc(C,a,e),l=nc(T,o,e),u=nc(E,n,e),d=nc(D,r,e);f.current&&(h.current=s,g.current=c,_.current=l,v.current=u,y.current=d);var p=e>0?{transition:A,strokeDasharray:k}:{strokeDasharray:O};return w.createElement(`path`,VP({},Qa(t),{className:x,d:UP(u,d,s,c,l),ref:f,style:LP(LP({},p),t.style)}))})},KP=l(AP()),qP=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function JP(e,t){if(e==null)return{};var n,r,i=YP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var r=Ol();return(i,a)=>o=>{e?.(i,a,o),r($O({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},sF=e=>{var t=Ol();return(n,r)=>i=>{e?.(n,r,i),t(ek())}},cF=(e,t,n)=>{var r=Ol();return(i,a)=>o=>{e?.(i,a,o),r(nk({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}};function lF(e){var{tooltipEntrySettings:t}=e,n=Ol(),r=fm(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(YO(t)):i.current!==t&&n(XO({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(ZO(i.current)),null)},[n]),null}function uF(e){var{legendPayload:t}=e,n=Ol(),r=fm(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(eg(t)):i.current!==t&&n(tg({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(ng(i.current)),null)},[n]),null}function dF(e){var{legendPayload:t}=e,n=Ol(),r=Q(Ym),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r!==`centric`&&r!==`radial`||(i.current===null?n(eg(t)):i.current!==t&&n(tg({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(ng(i.current)),null)},[n]),null}var fF=w.useId??(()=>{var[e]=w.useState(()=>$s(`uid-`));return e});function pF(e,t){var n=fF();return t||(e?`${e}-${n}`:n)}var mF=(0,w.createContext)(void 0),hF=e=>{var{id:t,type:n,children:r}=e,i=pF(`recharts-${n}`,t);return w.createElement(mF.Provider,{value:i},r(i))},gF=bf({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Xh(t.payload))},prepare:Xd()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Fd(e).cartesianItems.indexOf(Xh(n));i>-1&&(e.cartesianItems[i]=Xh(r))},prepare:Xd()},removeCartesianGraphicalItem:{reducer(e,t){var n=Fd(e).cartesianItems.indexOf(Xh(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:Xd()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Xh(t.payload))},prepare:Xd()},removePolarGraphicalItem:{reducer(e,t){var n=Fd(e).polarItems.indexOf(Xh(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:Xd()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Fd(e).polarItems.indexOf(Xh(n));i>-1&&(e.polarItems[i]=Xh(r))},prepare:Xd()}}}),{addCartesianGraphicalItem:_F,replaceCartesianGraphicalItem:vF,removeCartesianGraphicalItem:yF,addPolarGraphicalItem:bF,removePolarGraphicalItem:xF,replacePolarGraphicalItem:SF}=gF.actions,CF=gF.reducer,wF=(0,w.memo)(e=>{var t=Ol(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(_F(e)):n.current!==e&&t(vF({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(yF(n.current)),null)},[t]),null}),TF=(0,w.memo)(e=>{var t=Ol(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(bF(e)):n.current!==e&&t(SF({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(xF(n.current)),null)},[t]),null}),EF=[`key`],DF=[`onMouseEnter`,`onClick`,`onMouseLeave`],OF=[`id`],kF=[`id`];function AF(){return AF=Object.assign?Object.assign.bind():function(e){for(var t=1;tDP(e.children,tM),[e.children]),n=Q(n=>yP(n,e.id,t));return n==null?null:w.createElement(dF,{legendPayload:n})}function zF(e){if(!(e==null||typeof e==`boolean`||typeof e==`function`)){if(w.isValidElement(e)){var t=e.props?.fill;return typeof t==`string`?t:void 0}var{fill:n}=e;return typeof n==`string`?n:void 0}}var BF=w.memo(e=>{var{dataKey:t,nameKey:n,sectors:r,stroke:i,strokeWidth:a,fill:o,name:s,hide:c,tooltipType:l,id:u,activeShape:d}=e,f=zF(d),p={dataDefinedOnItem:r.map(e=>{var t=e.tooltipPayload;return f==null||t==null?t:t.map(e=>PF(PF({},e),{},{color:f,fill:f}))}),getPosition:e=>r[Number(e)]?.tooltipPosition,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:n,name:Vp(s,t),hide:c,type:l,color:o,unit:``,graphicalItemId:u}};return w.createElement(lF,{tooltipEntrySettings:p})}),VF=(e,t)=>e>t?`start`:eec(typeof t==`function`?t(e):t,n,n*.8),UF=(e,t,n)=>{var{top:r,left:i,width:a,height:o}=t,s=ay(a,o);return{cx:i+ec(e.cx,a,a/2),cy:r+ec(e.cy,o,o/2),innerRadius:ec(e.innerRadius,s,0),outerRadius:HF(n,e.outerRadius,s),maxRadius:e.maxRadius||Math.sqrt(a*a+o*o)/2}},WF=(e,t)=>Js(t-e)*Math.min(Math.abs(t-e),360),GF=(e,t)=>{if(w.isValidElement(e))return w.cloneElement(e,t);if(typeof e==`function`)return e(t);var n=Wa(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className),{key:r}=t,i=jF(t,EF);return w.createElement(O_,AF({},i,{type:`linear`,className:n}))},KF=(e,t,n)=>{if(w.isValidElement(e))return w.cloneElement(e,t);var r=n;if(typeof e==`function`&&(r=e(t),w.isValidElement(r)))return r;var i=Wa(`recharts-pie-label-text`,lP(e));return w.createElement(nN,AF({},t,{alignmentBaseline:`middle`,className:i}),r)};function qF(e){var{sectors:t,props:n,showLabels:r}=e,{label:i,labelLine:a,dataKey:o}=n;if(!r||!i||!t)return null;var s=Xa(n),c=Za(i),l=Za(a),u=typeof i==`object`&&`offsetRadius`in i&&typeof i.offsetRadius==`number`&&i.offsetRadius||20,d=t.map((e,t)=>{var n=(e.startAngle+e.endAngle)/2,r=iy(e.cx,e.cy,e.outerRadius+u,n),d=PF(PF(PF(PF({},s),e),{},{stroke:`none`},c),{},{index:t,textAnchor:VF(r.x,e.cx)},r),f=PF(PF(PF(PF({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:t,points:[iy(e.cx,e.cy,e.outerRadius,n),r],key:`line`});return w.createElement(sj,{zIndex:sb.label,key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${t}`},w.createElement(lo,null,a&&GF(a,f),KF(i,d,Sp(e,o))))});return w.createElement(lo,{className:`recharts-pie-labels`},d)}function JF(e){var{sectors:t,props:n,showLabels:r}=e,{label:i}=n;return typeof i==`object`&&i&&`position`in i?w.createElement(JN,{label:i}):w.createElement(qF,{sectors:t,props:n,showLabels:r})}function YF(e){var{sectors:t,activeShape:n,inactiveShape:r,allOtherPieProps:i,shape:a,id:o}=e,s=Q(iA),c=Q(oA),l=Q(sA),{onMouseEnter:u,onClick:d,onMouseLeave:f}=i,p=jF(i,DF),m=oF(u,i.dataKey,o),h=sF(f),g=cF(d,i.dataKey,o);return t==null||t.length===0?null:w.createElement(w.Fragment,null,t.map((e,u)=>{if(e?.startAngle===0&&e?.endAngle===0&&t.length!==1)return null;var d=l==null||l===o,f=String(u)===s&&(c==null||i.dataKey===c)&&d,_=n&&f?n:s?r:null,v=PF(PF({},e),{},{stroke:e.stroke,tabIndex:-1,[Xp]:u,[Zp]:o});return w.createElement(lo,AF({key:`sector-${e?.startAngle}-${e?.endAngle}-${e.midAngle}-${u}`,tabIndex:-1,className:`recharts-pie-sector`},Ec(p,e,u),{onMouseEnter:m(e,u),onMouseLeave:h(e,u),onClick:g(e,u)}),w.createElement(aF,AF({option:a??_,index:u,shapeType:`sector`,isActive:f},v)))}))}function XF(e){var{pieSettings:t,displayedData:n,cells:r,offset:i}=e,{cornerRadius:a,startAngle:o,endAngle:s,dataKey:c,nameKey:l,tooltipType:u}=t,d=Math.abs(t.minAngle),f=WF(o,s),p=Math.abs(f),m=n.length<=1?0:t.paddingAngle??0,h=n.filter(e=>Sp(e,c,0)!==0).length,g=(p>=360?h:h-1)*m,_=p-h*d-g,v=n.reduce((e,t)=>{var n=Sp(t,c,0);return e+(Z(n)?n:0)},0),y;if(v>0){var b;y=n.map((e,n)=>{var s=Sp(e,c,0),p=Sp(e,l,n),h=UF(t,i,e),g=(Z(s)?s:0)/v,y,x=PF(PF({},e),r&&r[n]&&r[n].props),S=x!=null&&`fill`in x&&typeof x.fill==`string`?x.fill:t.fill;y=n?b.endAngle+Js(f)*m*(s===0?0:1):o;var C=y+Js(f)*((s===0?0:d)+g*_),w=(y+C)/2,T=(h.innerRadius+h.outerRadius)/2,E=[{name:p,value:s,payload:x,dataKey:c,type:u,color:S,fill:S,graphicalItemId:t.id}],D=iy(h.cx,h.cy,T,w);return b=PF(PF(PF(PF({},t.presentationProps),{},{percent:g,cornerRadius:typeof a==`string`?parseFloat(a):a,name:p,tooltipPayload:E,midAngle:w,middleRadius:T,tooltipPosition:D},x),h),{},{value:s,dataKey:c,startAngle:y,endAngle:C,payload:x,paddingAngle:Js(f)*m}),b})}return y}function ZF(e){var{showLabels:t,sectors:n,children:r}=e,i=(0,w.useMemo)(()=>!t||!n?[]:n.map(e=>({value:e.value,payload:e.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:e.cx,cy:e.cy,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,clockWise:!1},fill:e.fill})),[n,t]);return w.createElement(WN,{value:t?i:void 0},r)}function QF(e){var{props:t,previousSectorsRef:n,id:r}=e,{sectors:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,activeShape:l,inactiveShape:u,onAnimationStart:d,onAnimationEnd:f}=t,p=Ev(t,`recharts-pie-`),m=n.current,[h,g]=(0,w.useState)(!1),_=(0,w.useCallback)(()=>{typeof f==`function`&&f(),g(!1)},[f]),v=(0,w.useCallback)(()=>{typeof d==`function`&&d(),g(!0)},[d]);return w.createElement(ZF,{showLabels:!h,sectors:i},w.createElement(Tv,{animationId:p,begin:o,duration:s,isActive:a,easing:c,onAnimationStart:v,onAnimationEnd:_,key:p},e=>{var a=[],o=(i&&i[0])?.startAngle??0;return i?.forEach((t,n)=>{var r=m&&m[n],i=n>0?(0,qs.default)(t,`paddingAngle`,0):0;if(r){var s=nc(r.endAngle-r.startAngle,t.endAngle-t.startAngle,e),c=PF(PF({},t),{},{startAngle:o+i,endAngle:o+s+i});a.push(c),o=c.endAngle}else{var{endAngle:l,startAngle:u}=t,d=nc(0,l-u,e),f=PF(PF({},t),{},{startAngle:o+i,endAngle:o+d+i});a.push(f),o=f.endAngle}}),n.current=a,w.createElement(lo,null,w.createElement(YF,{sectors:a,activeShape:l,inactiveShape:u,allOtherPieProps:t,shape:t.shape,id:r}))}),w.createElement(JF,{showLabels:!h,sectors:i,props:t}),t.children)}var $F={animationBegin:400,animationDuration:1500,animationEasing:`ease`,cx:`50%`,cy:`50%`,dataKey:`value`,endAngle:360,fill:`#808080`,hide:!1,innerRadius:0,isAnimationActive:`auto`,label:!1,labelLine:!0,legendType:`rect`,minAngle:0,nameKey:`name`,outerRadius:`80%`,paddingAngle:0,rootTabIndex:0,startAngle:0,stroke:`#fff`,zIndex:sb.area};function eI(e){var{id:t}=e,n=jF(e,OF),{hide:r,className:i,rootTabIndex:a}=e,o=(0,w.useMemo)(()=>DP(e.children,tM),[e.children]),s=Q(e=>bP(e,t,o)),c=(0,w.useRef)(null),l=Wa(`recharts-pie`,i);return r||s==null?(c.current=null,w.createElement(lo,{tabIndex:a,className:l})):w.createElement(sj,{zIndex:e.zIndex},w.createElement(BF,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),w.createElement(lo,{tabIndex:a,className:l},w.createElement(QF,{props:PF(PF({},n),{},{sectors:s}),previousSectorsRef:c,id:t})))}function tI(e){var t=Mc(e,$F),{id:n}=t,r=jF(t,kF),i=Xa(r);return w.createElement(hF,{id:n,type:`pie`},e=>w.createElement(w.Fragment,null,w.createElement(TF,{type:`pie`,id:e,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:i,maxRadius:t.maxRadius}),w.createElement(RF,AF({},r,{id:e})),w.createElement(eI,AF({},r,{id:e}))))}var nI=tI;nI.displayName=`Pie`;var rI=[`points`];function iI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function aI(e){for(var t=1;t{var s=aI(aI(aI({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return w.createElement(fI,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),w.createElement(sj,{zIndex:l},w.createElement(lo,lI({className:r},p),f))}function hI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function gI(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),Wp,Gp],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),NI=()=>Q(MI),PI=()=>Q(dA);function FI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function II(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=II(II(II({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),Za(i)),wc(i)),c=(0,w.isValidElement)(i)?(0,w.cloneElement)(i,s):typeof i==`function`?i(s):w.createElement(XN,s);return w.createElement(lo,{className:`recharts-active-dot`,clipPath:o},c)};function VI(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=sb.activeDot}=e,s=Q(iA),c=PI();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return ic(l)?null:w.createElement(sj,{zIndex:o},w.createElement(BI,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var HI=(e,t,n)=>{var r=n??e;if(!ic(r))return ec(r,t,0)},UI=(e,t,n)=>{var r={},i=e.filter(Mb),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:HI(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:HI(t,n,e.barSize)}));return[...s,...c]};function WI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function GI(e){for(var t=1;te+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=ec(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=hp(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var XI=(e,t,n,r,i,a,o)=>{var s=ic(o)?t:o,c=YI(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>GI(GI({},e),{},{position:GI(GI({},e.position),{},{offset:e.position.offset-i/2})}))),c},ZI=(e,t)=>{var n=Ab(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:a}=i;if(a)return a.find(e=>e.key===n)}}}},QI=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function $I(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&hp(e.zIndex)?e.zIndex:t}var eL=e=>{var{chartData:t}=e,n=Ol(),r=fm();return(0,w.useEffect)(()=>r?()=>{}:(n(kj(t)),()=>{n(kj(void 0))}),[t,n,r]),null},tL={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},nL=bf({name:`brush`,initialState:tL,reducers:{setBrushSettings(e,t){return t.payload==null?tL:t.payload}}}),{setBrushSettings:rL}=nL.actions,iL=nL.reducer;function aL(e){return(e%180+180)%180}var oL=function(e){var{width:t,height:n}=e,r=aL(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=Fd(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=Fd(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Xh(t.payload))},removeLine:(e,t)=>{var n=Fd(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:cL,removeDot:lL,addArea:uL,removeArea:dL,addLine:fL,removeLine:pL}=sL.actions,mL=sL.reducer,hL=(0,w.createContext)(void 0),gL=e=>{var{children:t}=e,[n]=(0,w.useState)(`${$s(`recharts`)}-clip`),r=NI();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return w.createElement(hL.Provider,{value:n},w.createElement(`defs`,null,w.createElement(`clipPath`,{id:n},w.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function _L(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function xL(e,t){return _L(e,t+1)}function SL(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:_L(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||bL(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function CL(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||bL(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=TL(TL({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=TL(TL({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&bL(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=TL(TL({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function AL(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=TL(TL({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&bL(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=TL(TL({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=TL(TL({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=TL(TL({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&bL(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=TL(TL({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?vL(_M(i,{fontSize:t,letterSpacing:n}),m,d):_M(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?Js(_.coordinate-g.coordinate):1,y=yL(a,v,p);return c===`equidistantPreserveStart`?SL(v,y,h,i,o):c===`equidistantPreserveEnd`?CL(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?AL(v,y,h,i,o,c===`preserveStartEnd`):kL(v,y,h,i,o),f.filter(e=>e.isShow))}var ML=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},NL=bf({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Xh(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:PL,removeRenderedTicks:FL}=NL.actions,IL=NL.reducer,LL=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function RL(e,t){if(e==null)return{};var n,r,i=zL(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?sc:(i(PL({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(FL({axisId:r,axisType:n}))}),[i,t,r,n]),null}var $L=(0,w.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:_,fontSize:v,letterSpacing:y,getTicksConfig:b,events:x,axisType:S,axisId:C}=e,T=jL(HL(HL({},b),{},{ticks:n}),v,y),E=Xa(b),D=Za(r),O=GM(E.textAnchor)?E.textAnchor:YL(u,d),k=XL(u,d),A={};typeof i==`object`&&(A=i);var j=HL(HL({},E),{},{fill:`none`},A),M=T.map(e=>HL({entry:e},JL(e,f,p,m,h,u,g,d,_))),N=M.map(e=>{var{entry:t,line:n}=e;return w.createElement(lo,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&w.createElement(`line`,BL({},j,n,{className:Wa(`recharts-cartesian-axis-tick-line`,(0,qs.default)(i,`className`))})))}),P=M.map((e,t)=>{var{entry:n,tick:i}=e,u=HL(HL({},HL(HL(HL(HL({verticalAnchor:k},E),{},{textAnchor:O,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:T.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??E.angle??0})),D);return w.createElement(lo,BL({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},Ec(x,n,t)),r&&w.createElement(ZL,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return w.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${S}-ticks`},w.createElement(QL,{ticks:T,axisId:C,axisType:S}),P.length>0&&w.createElement(sj,{zIndex:sb.label},w.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${S}-tick-labels`,ref:t},P)),N.length>0&&w.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${S}-tick-lines`},N))}),eR=(0,w.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=RL(e,LL),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(``),h=(0,w.useRef)(null);(0,w.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>ML({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,w.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:w.createElement(sj,{zIndex:e.zIndex},w.createElement(lo,{className:Wa(`recharts-cartesian-axis`,a)},w.createElement(qL,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:Xa(e)}),w.createElement($L,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),w.createElement(bN,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},w.createElement(PN,{label:e.label,labelRef:e.labelRef}),e.children)))}),tR=w.forwardRef((e,t)=>{var n=Mc(e,KL);return w.createElement(eR,BL({},n,{ref:t}))});tR.displayName=`CartesianAxis`;var nR=[`x1`,`y1`,`x2`,`y2`,`key`],rR=[`offset`],iR=[`xAxisId`,`yAxisId`],aR=[`xAxisId`,`yAxisId`];function oR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function sR(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return w.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function hR(e){var{option:t,lineItemProps:n}=e,r;if(w.isValidElement(t))r=w.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=Xa(fR(n,nR))??{},{offset:u}=l,d=fR(l,rR);r=w.createElement(`line`,dR({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function gR(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=fR(e,iR),c=i.map((e,i)=>{var a=sR(sR({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return w.createElement(hR,{key:`line-${i}`,option:r,lineItemProps:a})});return w.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function _R(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=fR(e,aR),c=i.map((e,i)=>{var a=sR(sR({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return w.createElement(hR,{option:r,lineItemProps:a,key:`line-${i}`})});return w.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function vR(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return w.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function yR(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return w.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var bR=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Tp(jL(sR(sR(sR({},KL),n),{},{ticks:Ep(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},xR=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Tp(jL(sR(sR(sR({},KL),n),{},{ticks:Ep(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},SR={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:sb.grid};function CR(e){var t=Km(),n=qm(),r=Gm(),i=sR(sR({},Mc(e,SR)),{},{x:Z(e.x)?e.x:r.left,y:Z(e.y)?e.y:r.top,width:Z(e.width)?e.width:r.width,height:Z(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=fm(),h=Q(e=>FO(e,`xAxis`,a,m)),g=Q(e=>FO(e,`yAxis`,o,m));if(!gp(l)||!gp(u)||!Z(s)||!Z(c))return null;var _=i.verticalCoordinatesGenerator||bR,v=i.horizontalCoordinatesGenerator||xR,{horizontalPoints:y,verticalPoints:b}=i;if((!y||!y.length)&&typeof v==`function`){var x=f&&f.length,S=v({yAxis:g?sR(sR({},g),{},{ticks:x?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},x?!0:d);bm(Array.isArray(S),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof S}]`),Array.isArray(S)&&(y=S)}if((!b||!b.length)&&typeof _==`function`){var C=p&&p.length,T=_({xAxis:h?sR(sR({},h),{},{ticks:C?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},C?!0:d);bm(Array.isArray(T),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(b=T)}return w.createElement(sj,{zIndex:i.zIndex},w.createElement(`g`,{className:`recharts-cartesian-grid`},w.createElement(mR,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),w.createElement(vR,dR({},i,{horizontalPoints:y})),w.createElement(yR,dR({},i,{verticalPoints:b})),w.createElement(gR,dR({},i,{offset:r,horizontalPoints:y,xAxis:h,yAxis:g})),w.createElement(_R,dR({},i,{offset:r,verticalPoints:b,xAxis:h,yAxis:g}))))}CR.displayName=`CartesianGrid`;var wR=bf({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:TR,replaceErrorBar:ER,removeErrorBar:DR}=wR.actions,OR=wR.reducer,kR=[`children`];function AR(e,t){if(e==null)return{};var n,r,i=jR(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function NR(e){var{children:t}=e,n=AR(e,kR);return w.createElement(MR.Provider,{value:n},t)}function PR(e,t){var n=Q(t=>RE(t,e)),r=Q(e=>VE(e,t)),i=n?.allowDataOverflow??IE.allowDataOverflow,a=r?.allowDataOverflow??zE.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function FR(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=NI(),{needClipX:a,needClipY:o,needClip:s}=PR(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return w.createElement(`clipPath`,{id:`clipPath-${r}`},w.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}function IR(e){var t=Za(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}function LR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function RR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var zR=(e,t,n)=>RO(e,`xAxis`,LR(e,t),n),BR=(e,t,n)=>LO(e,`xAxis`,LR(e,t),n),VR=(e,t,n)=>RO(e,`yAxis`,RR(e,t),n),HR=(e,t,n)=>LO(e,`yAxis`,RR(e,t),n),UR=$([Ym,zR,VR,BR,HR],(e,t,n,r,i)=>wp(e,`xAxis`)?zp(t,r,!1):zp(n,i,!1)),WR=$([YE,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`area`).find(e=>e.id===t)),GR=e=>wp(Ym(e),`xAxis`)?`yAxis`:`xAxis`,KR=(e,t)=>GR(e)===`yAxis`?RR(e,t):LR(e,t),qR=$([Ym,zR,VR,BR,HR,$([WR,(e,t,n)=>yD(e,GR(e),KR(e,t),n)],(e,t)=>{if(!(e==null||t==null)){var{stackId:n}=e,r=Ab(e);if(!(n==null||r==null)){var i=(t[n]?.stackedData)?.find(e=>e.key===r);if(i!=null)return i.map(e=>[e[0],e[1]])}}}),Fy,UR,WR,ob],(e,t,n,r,i,a,o,s,c,l)=>{var{chartData:u,dataStartIndex:d,dataEndIndex:f}=o;if(!(c==null||e!==`horizontal`&&e!==`vertical`||t==null||n==null||r==null||i==null||r.length===0||i.length===0||s==null)){var{data:p}=c,m=p&&p.length>0?p:u?.slice(d,f+1);if(m!=null)return yz({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataStartIndex:d,areaSettings:c,stackedData:a,displayedData:m,chartBaseValue:l,bandSize:s})}}),JR=[`id`],YR=[`activeDot`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`fill`,`fillOpacity`,`hide`,`isAnimationActive`,`legendType`,`stroke`,`xAxisId`,`yAxisId`];function XR(){return XR=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,fill:i,legendType:a,hide:o}=e;return[{inactive:o,dataKey:t,type:a,color:iz(r,i),value:Vp(n,t),payload:e}]},oz=w.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:sc,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Vp(o,t),hide:s,type:l,color:iz(r,a),unit:c,graphicalItemId:u}};return w.createElement(lF,{tooltipEntrySettings:d})});function sz(e){var{clipPathId:t,points:n,props:r}=e,{needClip:i,dot:a,dataKey:o}=r,s=Xa(r);return w.createElement(mI,{points:n,dot:a,className:`recharts-area-dots`,dotClassName:`recharts-area-dot`,dataKey:o,baseProps:s,needClip:i,clipPathId:t})}function cz(e){var{showLabels:t,children:n,points:r}=e,i=r.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return ez(ez({},t),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:t,fill:void 0})});return w.createElement(HN,{value:t?i:void 0},n)}function lz(e){var{points:t,baseLine:n,needClip:r,clipPathId:i,props:a}=e,{layout:o,type:s,stroke:c,connectNulls:l,isRange:u}=a,{id:d}=a,f=ZR(a,JR),p=Xa(f),m=Qa(f);return w.createElement(w.Fragment,null,t?.length>1&&w.createElement(lo,{clipPath:r?`url(#clipPath-${i})`:void 0},w.createElement(O_,XR({},m,{id:d,points:t,connectNulls:l,type:s,baseLine:n,layout:o,stroke:`none`,className:`recharts-area-area`})),c!==`none`&&w.createElement(O_,XR({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:t})),c!==`none`&&u&&Array.isArray(n)&&w.createElement(O_,XR({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:n}))),w.createElement(sz,{points:t,props:f,clipPathId:i}))}function uz(e){var{alpha:t,baseLine:n,points:r,strokeWidth:i}=e,a=r[0]?.y,o=r[r.length-1]?.y;if(!hp(a)||!hp(o))return null;var s=t*Math.abs(a-o),c=Math.max(...r.map(e=>e.x||0));return Z(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.x||0),c)),Z(c)?w.createElement(`rect`,{x:0,y:ae.y||0));return Z(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.y||0),c)),Z(c)?w.createElement(`rect`,{x:a({points:o,baseLine:s}),[o,s]),`recharts-area-`),h=Zm(),[g,_]=(0,w.useState)(!1),v=!g,y=(0,w.useCallback)(()=>{typeof p==`function`&&p(),_(!1)},[p]),b=(0,w.useCallback)(()=>{typeof f==`function`&&f(),_(!0)},[f]);if(h==null)return null;var x=i.current,S=a.current;return w.createElement(cz,{showLabels:v,points:o},r.children,w.createElement(Tv,{animationId:m,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:y,onAnimationStart:b,key:m},e=>{if(x){var l=x.length/o.length,u=e===1?o:o.map((t,n)=>{var r=Math.floor(n*l);if(x[r]){var i=x[r];return ez(ez({},t),{},{x:nc(i.x,t.x,e),y:nc(i.y,t.y,e)})}return t}),d=Z(s)?nc(S,s,e):ic(s)||Ys(s)?nc(S,0,e):s.map((t,n)=>{var r=Math.floor(n*l);if(Array.isArray(S)&&S[r]){var i=S[r];return ez(ez({},t),{},{x:nc(i.x,t.x,e),y:nc(i.y,t.y,e)})}return t});return e>0&&(i.current=u,a.current=d),w.createElement(lz,{points:u,baseLine:d,needClip:t,clipPathId:n,props:r})}return e>0&&(i.current=o,a.current=s),w.createElement(lo,null,c&&w.createElement(`defs`,null,w.createElement(`clipPath`,{id:`animationClipPath-${n}`},w.createElement(fz,{alpha:e,points:o,baseLine:s,layout:h,strokeWidth:r.strokeWidth}))),w.createElement(lo,{clipPath:`url(#animationClipPath-${n})`},w.createElement(lz,{points:o,baseLine:s,needClip:t,clipPathId:n,props:r})))}),w.createElement(JN,{label:r.label}))}function mz(e){var{needClip:t,clipPathId:n,props:r}=e,i=(0,w.useRef)(null),a=(0,w.useRef)();return w.createElement(pz,{needClip:t,clipPathId:n,props:r,previousPointsRef:i,previousBaselineRef:a})}var hz=class extends w.PureComponent{render(){var{hide:e,dot:t,points:n,className:r,top:i,left:a,needClip:o,xAxisId:s,yAxisId:c,width:l,height:u,id:d,baseLine:f,zIndex:p}=this.props;if(e)return null;var m=Wa(`recharts-area`,r),h=d,{r:g,strokeWidth:_}=IR(t),v=OP(t),y=g*2+_,b=o?`url(#clipPath-${v?``:`dots-`}${h})`:void 0;return w.createElement(sj,{zIndex:p},w.createElement(lo,{className:m},o&&w.createElement(`defs`,null,w.createElement(FR,{clipPathId:h,xAxisId:s,yAxisId:c}),!v&&w.createElement(`clipPath`,{id:`clipPath-dots-${h}`},w.createElement(`rect`,{x:a-y/2,y:i-y/2,width:l+y,height:u+y}))),w.createElement(mz,{needClip:o,clipPathId:h,props:this.props})),w.createElement(VI,{points:n,mainColor:iz(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}),this.props.isRange&&Array.isArray(f)&&w.createElement(VI,{points:f,mainColor:iz(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}))}},gz={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!1,fill:`#3182bd`,fillOpacity:.6,hide:!1,isAnimationActive:`auto`,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,type:`linear`,label:!1,xAxisId:0,yAxisId:0,zIndex:sb.area};function _z(e){var{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,connectNulls:a,dot:o,fill:s,fillOpacity:c,hide:l,isAnimationActive:u,legendType:d,stroke:f,xAxisId:p,yAxisId:m}=e,h=ZR(e,YR),g=Xm(),_=OA(),{needClip:v}=PR(p,m),y=fm(),{points:b,isRange:x,baseLine:S}=Q(t=>qR(t,e.id,y))??{},C=NI();if(g!==`horizontal`&&g!==`vertical`||C==null||_!==`AreaChart`&&_!==`ComposedChart`)return null;var{height:T,width:E,x:D,y:O}=C;return!b||!b.length?null:w.createElement(hz,XR({},h,{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,baseLine:S,connectNulls:a,dot:o,fill:s,fillOpacity:c,height:T,hide:l,layout:g,isAnimationActive:u,isRange:x,legendType:d,needClip:v,points:b,stroke:f,width:E,left:D,top:O,xAxisId:p,yAxisId:m}))}var vz=(e,t,n,r,i)=>{var a=n??t;if(Z(a))return a;var o=e===`horizontal`?i:r,s=o.scale.domain();if(o.type===`number`){var c=Math.max(s[0],s[1]),l=Math.min(s[0],s[1]);return a===`dataMin`?l:a===`dataMax`||c<0?c:Math.max(Math.min(s[0],s[1]),0)}return a===`dataMin`?s[0]:a===`dataMax`?s[1]:s[0]};function yz(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:r},stackedData:i,layout:a,chartBaseValue:o,xAxis:s,yAxis:c,displayedData:l,dataStartIndex:u,xAxisTicks:d,yAxisTicks:f,bandSize:p}=e,m=i&&i.length,h=vz(a,o,n,s,c),g=a===`horizontal`,_=!1,v=l.map((e,n)=>{var a;if(m)a=i[u+n];else{var o=Sp(e,r);Array.isArray(o)?(a=o,_=!0):a=[h,o]}var l=a?.[1]??null,v=l==null||m&&!t&&Sp(e,r)==null;return g?{x:jp({axis:s,ticks:d,bandSize:p,entry:e,index:n}),y:v?null:c.scale.map(l)??null,value:a,payload:e}:{x:v?null:s.scale.map(l)??null,y:jp({axis:c,ticks:f,bandSize:p,entry:e,index:n}),value:a,payload:e}});return{points:v,baseLine:(m||_?v.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return g?{x:e.x,y:t!=null&&e.y!=null?c.scale.map(t)??null:null,payload:e.payload}:{x:t==null?null:s.scale.map(t)??null,y:e.y,payload:e.payload}}):g?c.scale.map(h):s.scale.map(h))??0,isRange:_}}function bz(e){var t=Mc(e,gz),n=fm();return w.createElement(hF,{id:t.id,type:`area`},e=>w.createElement(w.Fragment,null,w.createElement(uF,{legendPayload:az(t)}),w.createElement(oz,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(wF,{type:`area`,id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:Ap(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),w.createElement(_z,XR({},t,{id:e}))))}var xz=w.memo(bz,Sg);xz.displayName=`Area`;var Sz=!0,Cz=`Invariant failed`;function wz(e,t){if(!e){if(Sz)throw Error(Cz);var n=typeof t==`function`?t():t,r=n?`${Cz}: ${n}`:Cz;throw Error(r)}}function Tz(){return Tz=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(Z(e))return e;var i=Z(n)||ic(n);return i?e(n,r):(!i&&wz(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},Oz=(e,t,n)=>n,kz=$([YE,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),Az=$([kz],e=>e?.maxBarSize),jz=(e,t,n,r)=>r,Mz=$([Ym,YE,LR,RR,Oz],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),Nz=(e,t,n)=>{var r=Ym(e),i=LR(e,t),a=RR(e,t);if(!(i==null||a==null))return r===`horizontal`?yD(e,`yAxis`,a,n):yD(e,`xAxis`,i,n)},Pz=$([Mz,$y,(e,t)=>{var n=Ym(e),r=LR(e,t),i=RR(e,t);if(!(r==null||i==null))return n===`horizontal`?MO(e,`xAxis`,r):MO(e,`yAxis`,i)}],UI),Fz=(e,t,n)=>{var r=kz(e,t);if(r==null)return 0;var i=LR(e,t),a=RR(e,t);if(i==null||a==null)return 0;var o=Ym(e),s=Xy(e),{maxBarSize:c}=r,l=ic(c)?s:c,u,d;return o===`horizontal`?(u=RO(e,`xAxis`,i,n),d=LO(e,`xAxis`,i,n)):(u=RO(e,`yAxis`,a,n),d=LO(e,`yAxis`,a,n)),zp(u,d,!0)??l??0},Iz=(e,t,n)=>{var r=Ym(e),i=LR(e,t),a=RR(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=RO(e,`xAxis`,i,n),s=LO(e,`xAxis`,i,n)):(o=RO(e,`yAxis`,a,n),s=LO(e,`yAxis`,a,n)),zp(o,s)}},Lz=$([cm,um,(e,t,n)=>{var r=LR(e,t);if(r!=null)return RO(e,`xAxis`,r,n)},(e,t,n)=>{var r=RR(e,t);if(r!=null)return RO(e,`yAxis`,r,n)},(e,t,n)=>{var r=LR(e,t);if(r!=null)return LO(e,`xAxis`,r,n)},(e,t,n)=>{var r=RR(e,t);if(r!=null)return LO(e,`yAxis`,r,n)},$([$([Pz,Xy,Zy,Qy,Fz,Iz,Az],XI),kz],QI),Ym,Fy,Iz,$([Nz,kz],ZI),kz,jz],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return yB({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),Rz=[`index`];function zz(){return zz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,w.useContext)(Hz);if(t!=null)return t.stackId;if(e!=null)return Ap(e)},Wz=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,Gz=e=>{var t=(0,w.useContext)(Hz);if(t!=null){var{stackId:n}=t;return`url(#${Wz(n,e)})`}},Kz=e=>{var{index:t}=e,n=Bz(e,Rz),r=Gz(t);return w.createElement(lo,zz({className:`recharts-bar-stack-layer`,clipPath:r},n))},qz=[`onMouseEnter`,`onMouseLeave`,`onClick`],Jz=[`value`,`background`,`tooltipPosition`],Yz=[`id`],Xz=[`onMouseEnter`,`onClick`,`onMouseLeave`];function Zz(){return Zz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Vp(n,t),payload:e}]},oB=w.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:c,id:l}=e,u={dataDefinedOnItem:void 0,getPosition:sc,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:Vp(a,t),hide:o,type:c,color:i,unit:s,graphicalItemId:l}};return w.createElement(lF,{tooltipEntrySettings:u})});function sB(e){var t=Q(iA),{data:n,dataKey:r,background:i,allOtherBarProps:a}=e,{onMouseEnter:o,onMouseLeave:s,onClick:c}=a,l=rB(a,qz),u=oF(o,r,a.id),d=sF(s),f=cF(c,r,a.id);if(!i||n==null)return null;var p=Za(i);return w.createElement(sj,{zIndex:$I(i,sb.barBackground)},n.map((e,n)=>{var{value:a,background:o,tooltipPosition:s}=e,c=rB(e,Jz);if(!o)return null;var m=u(e,n),h=d(e,n),g=f(e,n),_=$z($z($z($z($z({option:i,isActive:String(n)===t},c),{},{fill:`#eee`},o),p),Ec(l,e,n)),{},{onMouseEnter:m,onMouseLeave:h,onClick:g,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return w.createElement(Ez,Zz({key:`background-bar-${n}`},_))}))}function cB(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return $z($z({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return w.createElement(HN,{value:t?i:void 0},n)}function lB(e){var{shape:t,activeBar:n,baseProps:r,entry:i,index:a,dataKey:o}=e,s=Q(iA),c=Q(oA),l=n&&String(i.originalDataIndex)===s&&(c==null||o===c),[u,d]=(0,w.useState)(!1),[f,p]=(0,w.useState)(!1);(0,w.useEffect)(()=>{var e;return l?(d(!0),e=requestAnimationFrame(()=>{p(!0)})):p(!1),()=>{cancelAnimationFrame(e)}},[l]);var m=(0,w.useCallback)(()=>{l||d(!1)},[l]),h=l&&f,g=l||u,_=l?n===!0?t:n:t,v=w.createElement(Ez,Zz({},r,{name:String(r.name)},i,{isActive:h,option:_,index:a,dataKey:o,onTransitionEnd:m}));return g?w.createElement(sj,{zIndex:sb.activeBar},w.createElement(Kz,{index:i.originalDataIndex},v)):v}function uB(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return w.createElement(Ez,Zz({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function dB(e){var{data:t,props:n}=e,r=Xa(n)??{},{id:i}=r,a=rB(r,Yz),{shape:o,dataKey:s,activeBar:c}=n,{onMouseEnter:l,onClick:u,onMouseLeave:d}=n,f=rB(n,Xz),p=oF(l,s,i),m=sF(d),h=cF(u,s,i);return t?w.createElement(w.Fragment,null,t.map((e,t)=>w.createElement(Kz,Zz({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},Ec(f,e,t),{onMouseEnter:p(e,t),onMouseLeave:m(e,t),onClick:h(e,t)}),c?w.createElement(lB,{shape:o,activeBar:c,baseProps:a,entry:e,index:t,dataKey:s}):w.createElement(uB,{shape:o,baseProps:a,entry:e,index:t,dataKey:s})))):null}function fB(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:l,onAnimationStart:u}=t,d=n.current,f=Ev(t,`recharts-bar-`),[p,m]=(0,w.useState)(!1),h=!p,g=(0,w.useCallback)(()=>{typeof l==`function`&&l(),m(!1)},[l]),_=(0,w.useCallback)(()=>{typeof u==`function`&&u(),m(!0)},[u]);return w.createElement(cB,{showLabels:h,rects:r},w.createElement(Tv,{animationId:f,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:g,onAnimationStart:_,key:f},e=>{var a=e===1?r:r?.map((t,n)=>{var r=d&&d[n];if(r)return $z($z({},t),{},{x:nc(r.x,t.x,e),y:nc(r.y,t.y,e),width:nc(r.width,t.width,e),height:nc(r.height,t.height,e)});if(i===`horizontal`){var a=nc(0,t.height,e),o=nc(t.stackedBarStart,t.y,e);return $z($z({},t),{},{y:o,height:a})}var s=nc(0,t.width,e),c=nc(t.stackedBarStart,t.x,e);return $z($z({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:w.createElement(lo,null,w.createElement(dB,{props:t,data:a}))}),w.createElement(JN,{label:t.label}),t.children)}function pB(e){var t=(0,w.useRef)(null);return w.createElement(fB,{previousRectanglesRef:t,props:e})}var mB=0,hB=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Sp(e,t)}},gB=class extends w.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=Wa(`recharts-bar`,r),u=c;return w.createElement(lo,{className:l,id:c},o&&w.createElement(`defs`,null,w.createElement(FR,{clipPathId:u,xAxisId:i,yAxisId:a})),w.createElement(lo,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},w.createElement(sB,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),w.createElement(pB,this.props)))}},_B={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:mB,xAxisId:0,yAxisId:0,zIndex:sb.bar};function vB(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u}=e,{needClip:d}=PR(t,n),f=Xm(),p=fm(),m=DP(e.children,tM),h=Q(t=>Lz(t,e.id,p,m));if(f!==`vertical`&&f!==`horizontal`)return null;var g,_=h?.[0];return g=_==null||_.height==null||_.width==null?0:f===`vertical`?_.height/2:_.width/2,w.createElement(NR,{xAxisId:t,yAxisId:n,data:h,dataPointFormatter:hB,errorBarOffset:g},w.createElement(gB,Zz({},e,{layout:f,needClip:d,data:h,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u})))}function yB(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:i},pos:a,bandSize:o,xAxis:s,yAxis:c,xAxisTicks:l,yAxisTicks:u,stackedData:d,displayedData:f,offset:p,cells:m,parentViewBox:h,dataStartIndex:g}=e,_=t===`horizontal`?c:s,v=d?_.scale.domain():null,y=Np({numericAxis:_}),b=_.scale.map(y);return f.map((e,f)=>{var _,x,S,C,w,T;if(d){var E=d[f+g];if(E==null)return null;_=Dp(E,v)}else _=Sp(e,n),Array.isArray(_)||(_=[y,_]);var D=Dz(r,mB)(_[1],f);if(t===`horizontal`){var O=c.scale.map(_[0]),k=c.scale.map(_[1]);if(O==null||k==null)return null;x=Mp({axis:s,ticks:l,bandSize:o,offset:a.offset,entry:e,index:f}),S=k??O??void 0,C=a.size;var A=O-k;if(w=Ys(A)?0:A,T={x,y:p.top,width:C,height:p.height},Math.abs(D)>0&&Math.abs(w)0&&Math.abs(C)w.createElement(w.Fragment,null,w.createElement(uF,{legendPayload:aB(t)}),w.createElement(oB,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(wF,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),w.createElement(sj,{zIndex:t.zIndex},w.createElement(vB,Zz({},t,{id:e})))))}var xB=w.memo(bB,Sg);xB.displayName=`Bar`;var SB=[`domain`,`range`],CB=[`domain`,`range`];function wB(e,t){if(e==null)return{};var n,r,i=TB(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return NB(NB({},a),{},{type:o})},[a,o]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(xI(s)):n.current!==s&&t(SI({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(CI(n.current)),null)},[t]),null}var BB=e=>{var{xAxisId:t,className:n}=e,r=Q(um),i=fm(),a=`xAxis`,o=Q(e=>IO(e,a,t,i)),s=Q(e=>wO(e,t)),c=Q(e=>kO(e,t)),l=Q(e=>LE(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=LB(e,kB),{id:m,scale:h}=l,g=LB(l,AB);return w.createElement(tR,jB({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:Wa(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},VB={allowDataOverflow:IE.allowDataOverflow,allowDecimals:IE.allowDecimals,allowDuplicatedCategory:IE.allowDuplicatedCategory,angle:IE.angle,axisLine:KL.axisLine,height:IE.height,hide:!1,includeHidden:IE.includeHidden,interval:IE.interval,label:!1,minTickGap:IE.minTickGap,mirror:IE.mirror,orientation:IE.orientation,padding:IE.padding,reversed:IE.reversed,scale:IE.scale,tick:IE.tick,tickCount:IE.tickCount,tickLine:KL.tickLine,tickSize:KL.tickSize,type:IE.type,niceTicks:IE.niceTicks,xAxisId:0},HB=w.memo(e=>{var t=Mc(e,VB);return w.createElement(w.Fragment,null,w.createElement(zB,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),w.createElement(BB,t))},DB);HB.displayName=`XAxis`;var UB=[`type`],WB=[`dangerouslySetInnerHTML`,`ticks`,`scale`],GB=[`id`,`scale`];function KB(){return KB=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return JB(JB({},a),{},{type:o})},[o,a]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(wI(s)):n.current!==s&&t(TI({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(EI(n.current)),null)},[t]),null}function tV(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,w.useRef)(null),o=(0,w.useRef)(null),s=Q(um),c=fm(),l=Ol(),u=`yAxis`,d=Q(e=>jO(e,t)),f=Q(e=>AO(e,t)),p=Q(e=>IO(e,u,t,c)),m=Q(e=>BE(e,t));if((0,w.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||TN(i)||(0,w.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(AI({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:_}=e,v=QB(e,WB),{id:y,scale:b}=m,x=QB(m,GB);return w.createElement(tR,KB({},v,x,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:Wa(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var nV={allowDataOverflow:zE.allowDataOverflow,allowDecimals:zE.allowDecimals,allowDuplicatedCategory:zE.allowDuplicatedCategory,angle:zE.angle,axisLine:KL.axisLine,hide:!1,includeHidden:zE.includeHidden,interval:zE.interval,label:!1,minTickGap:zE.minTickGap,mirror:zE.mirror,orientation:zE.orientation,padding:zE.padding,reversed:zE.reversed,scale:zE.scale,tick:zE.tick,tickCount:zE.tickCount,tickLine:KL.tickLine,tickSize:KL.tickSize,type:zE.type,niceTicks:zE.niceTicks,width:zE.width,yAxisId:0},rV=w.memo(e=>{var t=Mc(e,nV);return w.createElement(w.Fragment,null,w.createElement(eV,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),w.createElement(tV,t))},DB);rV.displayName=`YAxis`;var iV=$([(e,t)=>t,Ym,Db,Ib,Zk,$k,MA,cm],WA);function aV(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function oV(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(aV(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var sV=Ud(`mouseClick`),cV=op();cV.startListening({actionCreator:sV,effect:(e,t)=>{var n=e.payload,r=iV(t.getState(),oV(n));r?.activeIndex!=null&&t.dispatch(ik({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var lV=Ud(`mouseMove`),uV=op(),dV=null,fV=null,pV=null;uV.startListening({actionCreator:lV,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);dV!==null&&(cancelAnimationFrame(dV),dV=null),fV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(fV),fV=null),pV=oV(n);var o=()=>{var e=t.getState(),n=UO(e,e.tooltip.settings.shared);if(!pV){dV=null,fV=null;return}if(n===`axis`){var r=iV(e,pV);r?.activeIndex==null?t.dispatch(tk()):t.dispatch(rk({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}dV=null,fV=null};if(!a){o();return}r===`raf`?dV=requestAnimationFrame(o):typeof r==`number`&&fV===null&&(fV=setTimeout(o,r))}});function mV(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var hV={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},gV=bf({name:`rootProps`,initialState:hV,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??hV.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),_V=gV.reducer,{updateOptions:vV}=gV.actions,yV=bf({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:bV}=yV.actions,xV=yV.reducer,SV=Ud(`keyDown`),CV=Ud(`focus`),wV=Ud(`blur`),TV=op(),EV=null,DV=null,OV=null;TV.startListening({actionCreator:SV,effect:(e,t)=>{OV=e.payload,EV!==null&&(cancelAnimationFrame(EV),EV=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);DV!==null&&(typeof n!=`number`||!i)&&(clearTimeout(DV),DV=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=OV;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=yk(n,zk(e),gD(e),Jk(e)),a=i==null?-1:Number(i);if(!Number.isFinite(a)||a<0)return;var o=$k(e);if(r===`Enter`){var s=LA(e,`axis`,`hover`,String(n.index));t.dispatch(ok({active:!n.active,activeIndex:n.index,activeCoordinate:s}));return}var c=zO(e)===`left-to-right`?1:-1,l=a+(r===`ArrowRight`?1:-1)*c;if(o==null||l>=o.length||l<0)return;var u=LA(e,`axis`,`hover`,String(l));t.dispatch(ok({active:!0,activeIndex:l.toString(),activeCoordinate:u}))}finally{EV=null,DV=null}};if(!i){a();return}n===`raf`?EV=requestAnimationFrame(a):typeof n==`number`&&DV===null&&(a(),OV=null,DV=setTimeout(()=>{OV?a():(DV=null,EV=null)},n))}}),TV.startListening({actionCreator:CV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=LA(n,`axis`,`hover`,String(i));t.dispatch(ok({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),TV.startListening({actionCreator:wV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(ok({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function kV(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var AV=Ud(`externalEvent`),jV=op(),MV=new Map,NV=new Map,PV=new Map;jV.startListening({actionCreator:AV,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=kV(r);PV.set(i,{handler:n,reactEvent:a});var o=MV.get(i);o!==void 0&&(cancelAnimationFrame(o),MV.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=NV.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),NV.delete(i));var f=()=>{var e=PV.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:lA(a),activeDataKey:oA(a),activeIndex:iA(a),activeLabel:aA(a),activeTooltipIndex:iA(a),isTooltipActive:uA(a)};n&&n(o,r)}finally{MV.delete(i),NV.delete(i),PV.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);MV.set(i,p)}else if(typeof s==`number`){if(!NV.has(i)){f();var m=setTimeout(f,s);NV.set(i,m)}}else f()}}});var FV=$([$([Ck],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),IV=Ud(`touchMove`),LV=op(),RV=null,zV=null,BV=null,VV=null;LV.startListening({actionCreator:IV,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){VV=kV(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);RV!==null&&(cancelAnimationFrame(RV),RV=null),zV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(zV),zV=null),BV=Array.from(n.touches).map(e=>oV({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(VV!=null){var e=t.getState(),n=UO(e,e.tooltip.settings.shared);if(n===`axis`){var r=BV?.[0];if(r==null){RV=null,zV=null;return}var i=iV(e,r);i?.activeIndex!=null&&t.dispatch(rk({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=VV.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(Xp),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=Lk(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=FV(e,s,c);t.dispatch($O({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}RV=null,zV=null}};if(!a){o();return}r===`raf`?RV=requestAnimationFrame(o):typeof r==`number`&&zV===null&&(o(),VV=null,zV=setTimeout(()=>{VV?o():(zV=null,RV=null)},r))}}});var HV={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},UV=bf({name:`eventSettings`,initialState:HV,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Xh(t.payload.throttledEvents))}}}),{setEventSettings:WV}=UV.actions,GV=UV.reducer,KV=pu({brush:iL,cartesianAxis:jI,chartData:Mj,errorBars:OR,eventSettings:GV,graphicalItems:CF,layout:pp,legend:rg,options:Tj,polarAxis:cP,polarOptions:xV,referenceElements:mL,renderedTicks:IL,rootProps:_V,tooltip:sk,zIndex:oj}),qV=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return ef({reducer:KV,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([cV.middleware,uV.middleware,TV.middleware,jV.middleware,LV.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(Qd({type:`raf`}))},devTools:r_.devToolsEnabled&&{serialize:{replacer:mV},name:`recharts-${t}`}})};function JV(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=fm(),a=(0,w.useRef)(null);if(i)return n;a.current??=qV(t,r);var o=Tl;return w.createElement(yg,{context:o,store:a.current},n)}function YV(e){var{layout:t,margin:n}=e,r=Ol(),i=fm();return(0,w.useEffect)(()=>{i||(r(up(t)),r(lp(n)))},[r,i,t,n]),null}var XV=(0,w.memo)(YV,Sg);function ZV(e){var t=Ol();return(0,w.useEffect)(()=>{t(vV(e))},[t,e]),null}var QV=(0,w.memo)(e=>{var t=Ol();return(0,w.useEffect)(()=>{t(WV(e))},[t,e]),null},Sg);function $V(e){var{zIndex:t,isPanorama:n}=e,r=(0,w.useRef)(null),i=Ol();return(0,w.useLayoutEffect)(()=>(r.current&&i(ij({zIndex:t,element:r.current,isPanorama:n})),()=>{i(aj({zIndex:t,isPanorama:n}))}),[i,t,n]),w.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function eH(e){var{children:t,isPanorama:n}=e,r=Q(KA);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return w.createElement(w.Fragment,null,i.map(e=>w.createElement($V,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>w.createElement($V,{key:e,zIndex:e,isPanorama:n})))}var tH=[`children`];function nH(e,t){if(e==null)return{};var n,r,i=rH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=Km(),r=qm(),i=p_();if(!gp(n)||!gp(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),w.createElement(io,iH({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:aH,ref:t}),a)}),sH=e=>{var{children:t}=e,n=Q(mm);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return w.createElement(io,{width:r,height:i,x:o,y:a},t)},cH=(0,w.forwardRef)((e,t)=>{var{children:n}=e,r=nH(e,tH);return fm()?w.createElement(sH,null,w.createElement(eH,{isPanorama:!0},n)):w.createElement(oH,iH({ref:t},r),w.createElement(eH,{isPanorama:!1},n))});function lH(){var e=Ol(),[t,n]=(0,w.useState)(null),r=Q(Kp);return(0,w.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;hp(n)&&n!==r&&e(fp(n))}},[t,e,r]),n}function uH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function dH(e){for(var t=1;t(Uj(),null);function _H(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var vH=(0,w.forwardRef)((e,t)=>{var n=(0,w.useRef)(null),[r,i]=(0,w.useState)({containerWidth:_H(e.style?.width),containerHeight:_H(e.style?.height)}),a=(0,w.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,w.useEffect)(()=>()=>{n.current?.disconnect()},[a]),w.createElement(w.Fragment,null,w.createElement(eh,{width:r.containerWidth,height:r.containerHeight}),w.createElement(`div`,hH({ref:o},e)))}),yH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,w.useState)({containerWidth:_H(n),containerHeight:_H(r)}),o=(0,w.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return w.createElement(w.Fragment,null,w.createElement(eh,{width:i.containerWidth,height:i.containerHeight}),w.createElement(`div`,hH({ref:s},e)))}),bH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return w.createElement(w.Fragment,null,w.createElement(eh,{width:n,height:r}),w.createElement(`div`,hH({ref:t},e)))}),xH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?w.createElement(yH,hH({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?w.createElement(bH,hH({},e,{width:n,height:r,ref:t})):w.createElement(w.Fragment,null,w.createElement(eh,{width:n,height:r}),w.createElement(`div`,hH({ref:t},e)))});function SH(e){return e?vH:xH}var CH=(0,w.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:_,responsive:v,dispatchTouchEvents:y=!0}=e,b=(0,w.useRef)(null),x=Ol(),[S,C]=(0,w.useState)(null),[T,E]=(0,w.useState)(null),D=lH(),O=zm(),k=O?.width>0?O.width:_,A=O?.height>0?O.height:i,j=(0,w.useCallback)(e=>{D(e),typeof t==`function`&&t(e),C(e),E(e),e!=null&&(b.current=e)},[D,t,C,E]),M=(0,w.useCallback)(e=>{x(sV(e)),x(AV({handler:a,reactEvent:e}))},[x,a]),N=(0,w.useCallback)(e=>{x(lV(e)),x(AV({handler:l,reactEvent:e}))},[x,l]),P=(0,w.useCallback)(e=>{x(tk()),x(AV({handler:u,reactEvent:e}))},[x,u]),ee=(0,w.useCallback)(e=>{x(lV(e)),x(AV({handler:d,reactEvent:e}))},[x,d]),F=(0,w.useCallback)(()=>{x(CV())},[x]),I=(0,w.useCallback)(()=>{x(wV())},[x]),te=(0,w.useCallback)(e=>{x(SV(e.key))},[x]),ne=(0,w.useCallback)(e=>{x(AV({handler:o,reactEvent:e}))},[x,o]),re=(0,w.useCallback)(e=>{x(AV({handler:s,reactEvent:e}))},[x,s]),L=(0,w.useCallback)(e=>{x(AV({handler:c,reactEvent:e}))},[x,c]),ie=(0,w.useCallback)(e=>{x(AV({handler:f,reactEvent:e}))},[x,f]),R=(0,w.useCallback)(e=>{x(AV({handler:h,reactEvent:e}))},[x,h]),ae=(0,w.useCallback)(e=>{y&&x(IV(e)),x(AV({handler:m,reactEvent:e}))},[x,y,m]),oe=(0,w.useCallback)(e=>{x(AV({handler:p,reactEvent:e}))},[x,p]),z=SH(v);return w.createElement(_j.Provider,{value:S},w.createElement(uo.Provider,{value:T},w.createElement(z,{width:k??g?.width,height:A??g?.height,className:Wa(`recharts-wrapper`,r),style:dH({position:`relative`,cursor:`default`,width:k,height:A},g),onClick:M,onContextMenu:ne,onDoubleClick:re,onFocus:F,onBlur:I,onKeyDown:te,onMouseDown:L,onMouseEnter:N,onMouseLeave:P,onMouseMove:ee,onMouseUp:ie,onTouchEnd:oe,onTouchMove:ae,onTouchStart:R,ref:j},w.createElement(gH,null),n)))}),wH=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function TH(e,t){if(e==null)return{};var n,r,i=EH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=Xa(TH(e,wH));return c?w.createElement(w.Fragment,null,w.createElement(eh,{width:n,height:r}),w.createElement(cH,{otherAttributes:d,title:l,desc:u},a)):w.createElement(CH,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},w.createElement(cH,{otherAttributes:d,title:l,desc:u,ref:t},w.createElement(gL,null,a)))});function OH(){return OH=Object.assign?Object.assign.bind():function(e){for(var t=1;tw.createElement(FH,{chartName:`BarChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:IH,tooltipPayloadSearcher:Cj,categoricalChartProps:e,ref:t}));function RH(e){var t=Ol();return(0,w.useEffect)(()=>{t(bV(e))},[t,e]),null}var zH=[`layout`];function BH(){return BH=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=Mc(e,nU);return w.createElement(YH,{chartName:`PieChart`,defaultTooltipEventType:`item`,validateTooltipEventTypes:tU,tooltipPayloadSearcher:Cj,categoricalChartProps:n,ref:t})}),iU=[`axis`],aU=(0,w.forwardRef)((e,t)=>w.createElement(FH,{chartName:`AreaChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:iU,tooltipPayloadSearcher:Cj,categoricalChartProps:e,ref:t})),oU={beworben:`#38bdf8`,eingangsbestaetigung:`#38bdf8`,interview:`#fbbf24`,zweitgespraech:`#fbbf24`,interview_abgeschlossen:`#14b8a6`,angebot:`#34d399`,abgelehnt:`#f87171`,entwurf:`#94a3b8`,zurueckgezogen:`#a78bfa`,abgelaufen:`#94a3b8`},sU=[`#38bdf8`,`#34d399`,`#fbbf24`,`#f87171`,`#a78bfa`,`#fb923c`,`#2dd4bf`,`#e879f9`,`#60a5fa`,`#facc15`],cU=[`#f87171`,`#fb923c`,`#fbbf24`,`#a78bfa`,`#38bdf8`,`#34d399`,`#e879f9`,`#94a3b8`,`#2dd4bf`,`#60a5fa`],lU={fontSize:11,fill:`rgba(255,255,255,0.45)`},uU={background:`rgba(30,34,52,0.95)`,border:`1px solid rgba(255,255,255,0.1)`,borderRadius:12,fontSize:12};function dU(e){if(!e)return{from:``,to:``};let t=new Date,n=t.toISOString().slice(0,10),r=new Date(t);if(e===`30d`)r.setDate(r.getDate()-30);else if(e===`90d`)r.setDate(r.getDate()-90);else if(e===`6m`)r.setMonth(r.getMonth()-6);else if(e===`12m`)r.setMonth(r.getMonth()-12);else return{from:``,to:``};return{from:r.toISOString().slice(0,10),to:n}}function fU(e,t,n,r){let i=new URLSearchParams({format:e});if(n||r)n&&i.set(`from`,n),r&&i.set(`to`,r);else{let{from:e,to:n}=dU(t);e&&i.set(`from`,e),n&&i.set(`to`,n)}return`/api/applications/export?${i.toString()}`}function pU({title:e,children:t}){return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsx)(`p`,{className:`mb-4 text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:e}),t]})}function mU({data:e,days:t}){let n=new Map((e||[]).map(e=>[e.date,e])),r=new Date,i=[],a=new Date(r);a.setDate(a.getDate()-(t-1));let o=(a.getDay()+6)%7;a.setDate(a.getDate()-o);let s=new Date(a);for(;s<=r;){let e=s.toISOString().slice(0,10),a=(r-s)/864e5<=t;i.push({date:e,entry:a?n.get(e):null,inRange:a}),s.setDate(s.getDate()+1)}let c=[];for(let e=0;ee.count||0));function u(e){if(!e)return 0;let t=e/l;return t<.25?1:t<.5?2:t<.75?3:4}let d=[`rgba(255,255,255,0.04)`,`rgba(56,189,248,0.25)`,`rgba(56,189,248,0.5)`,`rgba(56,189,248,0.75)`,`rgba(56,189,248,1)`],f=[],p=-1;return c.forEach((e,t)=>{let n=e.find(e=>e.inRange);if(!n)return;let r=new Date(n.date).getMonth();r!==p&&(f.push({index:t,label:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`][r]}),p=r)}),(0,W.jsx)(`div`,{className:`overflow-x-auto`,children:(0,W.jsxs)(`div`,{className:`inline-flex flex-col gap-1`,children:[(0,W.jsx)(`div`,{className:`ml-7 flex gap-[3px] text-[9px] text-muted/40`,children:c.map((e,t)=>{let n=f.find(e=>e.index===t);return(0,W.jsx)(`div`,{className:`w-[11px] text-left`,children:n?n.label:``},t)})}),(0,W.jsxs)(`div`,{className:`flex gap-[3px]`,children:[(0,W.jsxs)(`div`,{className:`flex flex-col justify-between pr-1 text-[9px] text-muted/40`,children:[(0,W.jsx)(`span`,{children:`Mo`}),(0,W.jsx)(`span`,{children:`Mi`}),(0,W.jsx)(`span`,{children:`Fr`}),(0,W.jsx)(`span`,{children:`So`})]}),c.map((e,t)=>(0,W.jsx)(`div`,{className:`flex flex-col gap-[3px]`,children:e.map((e,t)=>{let n=e.entry?.count||0,r=e.inRange?u(n):0;return(0,W.jsx)(`div`,{title:e.inRange?`${e.date}: ${n} Aktion${n===1?``:`en`}`:``,className:`h-[11px] w-[11px] rounded-[2px]`,style:{background:d[r],opacity:e.inRange?1:.3}},t)})},t))]}),(0,W.jsxs)(`div`,{className:`ml-7 mt-1 flex items-center gap-2 text-[10px] text-muted/40`,children:[(0,W.jsx)(`span`,{children:`weniger`}),d.map((e,t)=>(0,W.jsx)(`div`,{className:`h-[10px] w-[10px] rounded-[2px]`,style:{background:e}},t)),(0,W.jsx)(`span`,{children:`mehr`})]})]})})}function hU({label:e,value:t,sub:n,tone:r=`neutral`}){let i={sky:`border-sky/15 bg-sky/[0.06]`,success:`border-teal/15 bg-teal/[0.06]`,amber:`border-amber/15 bg-amber/[0.06]`,danger:`border-coral/15 bg-coral/[0.06]`,neutral:`border-white/[0.05] bg-white/[0.02]`};return(0,W.jsxs)(`div`,{className:`rounded-lg border px-3 py-2.5 ${i[r]||i.neutral}`,children:[(0,W.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:e}),(0,W.jsx)(`p`,{className:`mt-1 text-lg font-semibold ${{sky:`text-sky`,success:`text-teal`,amber:`text-amber`,danger:`text-coral`,neutral:`text-ink`}[r]||`text-ink`}`,children:t}),n&&(0,W.jsx)(`p`,{className:`text-[10px] text-muted/40`,children:n})]})}function gU(){let{reloadKey:e,pushToast:t,navigateTo:n}=kt(),[r,i]=(0,w.useState)(!0),[a,o]=(0,w.useState)(`month`),[s,c]=(0,w.useState)(``),[l,u]=(0,w.useState)(``),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(null),[h,g]=(0,w.useState)(null),[_,v]=(0,w.useState)(null),[y,b]=(0,w.useState)(null),[x,S]=(0,w.useState)(`seit_pbp`),[C,T]=(0,w.useState)(null),[E,O]=(0,w.useState)(null),[k,A]=(0,w.useState)(null),[j,M]=(0,w.useState)(365),N=(0,w.useEffectEvent)(async(e,n)=>{try{let r=new URLSearchParams({interval:e});n&&r.set(`range`,n);let[a,o,s,c,l,u,d]=await Promise.all([Et(`/api/stats/timeline?${r}`),Et(`/api/stats/scores`),Et(`/api/stats/extended`),Et(`/api/rejection-patterns`),Et(`/api/stats/style`),Et(`/api/stats/heatmap?days=${j}`),Et(`/api/statistics`)]);if(!a&&!o&&!s){t(`Server nicht erreichbar.`,`danger`),i(!1);return}m(a),g(o),v(s),b(d),T(c),O(l),A(u),i(!1)}catch(e){t(`Statistiken konnten nicht geladen werden: ${e.message}`,`danger`),i(!1)}});if((0,w.useEffect)(()=>{i(!0),N(a,s)},[e,a,s,j]),r)return(0,W.jsx)($n,{label:`Statistiken werden geladen...`});p?.current_period;let P=p?.periods||[];function ee(e){let t=e.match(/^\d{4}-W(\d+)$/);if(t)return`KW ${parseInt(t[1],10)}`;let n=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n)return`${n[3]}.${n[2]}.`;let r=e.match(/^(\d{4})-(\d{2})$/);return r?[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`][parseInt(r[2],10)-1]+` `+r[1].slice(2):e}let F=P.map(e=>({name:ee(e),Bewerbungen:p?.applications?.[e]||0,"Neue Stellen":p?.jobs_found?.[e]||0})),I=new Set;for(let e of P)for(let t of Object.keys(p?.by_status?.[e]||{}))I.add(t);let re=[...I],L=re.map(e=>En(e)),ie=P.map(e=>{let t={name:ee(e)};for(let n=0;n({name:e.name,value:e.count})),oe=h?.score_distribution||{},z=[`0`,`1-3`,`4-6`,`7-9`,`10+`].filter(e=>oe[e]!=null).map(e=>({bucket:e,count:oe[e]||0})),se=R.filter(e=>e.avg_score>0).map(e=>({name:e.name,"Ø Score":Math.round(e.avg_score*10)/10,"Max Score":e.max_score||0})),ce=(_?.dismiss_reasons||[]).slice(0,10).map(([e,t])=>({name:e,count:t})),le=F.length>0||ae.length>0||z.length>0,ue=_?.today||{},de=_?.this_week||{},fe=_?.totals||{},pe=_?.applications||{},me=_?.response_times||{};return(0,W.jsxs)(`div`,{id:`page-statistiken`,className:`page active`,children:[(0,W.jsx)(`h1`,{className:`sr-only`,children:`Statistiken`}),(0,W.jsx)(`div`,{className:`mb-6 flex flex-wrap items-baseline justify-end gap-4`,children:(0,W.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[[{label:`30 Tage`,value:`30d`},{label:`90 Tage`,value:`90d`},{label:`6 Monate`,value:`6m`},{label:`12 Monate`,value:`12m`},{label:`Alles`,value:``}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>{c(e.value),e.value===``&&a!==`all`&&o(`all`),e.value!==``&&a===`all`&&o(`month`)},className:`rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${s===e.value?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.value)),(0,W.jsx)(`span`,{className:`mx-0.5 h-4 w-px bg-white/10`}),(0,W.jsxs)(Xn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:a,onChange:e=>o(e.target.value),children:[(0,W.jsx)(`option`,{value:`day`,children:`Taeglich`}),(0,W.jsx)(`option`,{value:`week`,children:`Woechentlich`}),(0,W.jsx)(`option`,{value:`month`,children:`Monatlich`}),(0,W.jsx)(`option`,{value:`quarter`,children:`Quartalsweise`}),(0,W.jsx)(`option`,{value:`year`,children:`Jaehrlich`}),(0,W.jsx)(`option`,{value:`all`,children:`Komplett`})]}),(0,W.jsxs)(Un,{size:`sm`,href:Tt(fU(`pdf`,s,l,d)),target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ge,{size:14}),`PDF`]}),(0,W.jsxs)(Un,{size:`sm`,href:Tt(fU(`xlsx`,s,l,d)),target:`_blank`,rel:`noreferrer`,children:[(0,W.jsx)(ge,{size:14}),`Excel`]})]})}),(0,W.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-center gap-3 text-xs text-muted/70`,children:[(0,W.jsx)(`span`,{children:`Bericht-Zeitraum manuell:`}),(0,W.jsx)(`input`,{type:`date`,value:l,onChange:e=>u(e.target.value),className:`rounded-lg border border-white/5 bg-white/[0.03] px-2 py-1 text-ink`,"aria-label":`Zeitraum von`}),(0,W.jsx)(`span`,{children:`bis`}),(0,W.jsx)(`input`,{type:`date`,value:d,onChange:e=>f(e.target.value),className:`rounded-lg border border-white/5 bg-white/[0.03] px-2 py-1 text-ink`,"aria-label":`Zeitraum bis`}),(l||d)&&(0,W.jsx)(`button`,{type:`button`,onClick:()=>{u(``),f(``)},className:`text-[11px] text-muted/60 hover:text-ink underline`,children:`zuruecksetzen`}),(0,W.jsx)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:`(ueberschreibt die Preset-Auswahl oben — leer = Preset gilt)`})]}),!le&&!_?(0,W.jsx)(Qn,{title:`Noch keine Daten`,description:`Sobald Bewerbungen und Stellen vorhanden sind, erscheinen hier Auswertungen.`}):(0,W.jsxs)(`div`,{className:`grid gap-6`,children:[_&&(0,W.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-3`,children:[(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,W.jsx)(te,{size:14,className:`text-sky`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Heute`})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,W.jsx)(hU,{label:`Gefunden`,value:ue.jobs_found||0,tone:`success`}),(0,W.jsx)(hU,{label:`Aussortiert`,value:ue.dismissed||0,tone:`danger`}),(0,W.jsx)(hU,{label:`Beworben`,value:ue.applied||0,tone:`sky`})]})]}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,W.jsx)(st,{size:14,className:`text-teal`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Diese Woche`})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,W.jsx)(hU,{label:`Gefunden`,value:de.jobs_found||0,tone:`success`}),(0,W.jsx)(hU,{label:`Aussortiert`,value:de.dismissed||0,tone:`danger`}),(0,W.jsx)(hU,{label:`Beworben`,value:de.applied||0,tone:`sky`})]})]}),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,W.jsx)(ne,{size:14,className:`text-amber`}),(0,W.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[`Gesamt`,_.start_date?` (seit ${bn(_.start_date)})`:``]})]}),(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,W.jsx)(hU,{label:`Stellen gesamt`,value:fe.jobs_ever||0,tone:`neutral`}),(0,W.jsx)(hU,{label:`Aktiv`,value:fe.jobs_active||0,tone:`success`}),(0,W.jsx)(hU,{label:`Beworben`,value:fe.jobs_applied||0,sub:fe.hit_rate?`${fe.hit_rate}% Trefferquote`:``,tone:`sky`}),(0,W.jsx)(hU,{label:`Aussortiert`,value:fe.jobs_dismissed||0,sub:fe.dismiss_rate?`${fe.dismiss_rate}%`:``,tone:`danger`}),(0,W.jsx)(hU,{label:`Gepinnt`,value:fe.jobs_pinned||0,tone:`amber`})]})]})]}),_&&(0,W.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-5`,children:[(0,W.jsx)(Kn,{label:`Bewerbungen gesamt`,value:pe.total||0,note:pe.imported?`${pe.imported} importiert, ${pe.new||0} neu`:`Alle im Tool erstellt`,tone:`sky`}),(0,W.jsx)(Kn,{label:`Importiert`,value:pe.imported||0,note:`Vor Tool-Nutzung`,tone:`neutral`}),(0,W.jsx)(Kn,{label:`Neu erstellt`,value:pe.new||0,note:`Seit Tool-Nutzung`,tone:`success`}),(0,W.jsx)(Kn,{label:`Ø Antwortzeit`,value:me.average_days==null?`k.A.`:`${me.average_days} Tage`,note:me.sample_size?`Basierend auf ${me.sample_size} Rueckmeldungen`:`Noch keine Daten`,tone:`amber`}),(0,W.jsx)(Kn,{label:`Schnellste Antwort`,value:me.fastest_days==null?`k.A.`:`${me.fastest_days} Tage`,note:me.slowest_days==null?``:`Langsamste: ${me.slowest_days} Tage`,tone:`success`})]}),y?.quoten&&(()=>{let e=y.quoten,t=e[x]||{basis:0},n=[{key:`seit_pbp`,label:`Seit PBP`},{key:`vor_pbp`,label:`Vor PBP`},{key:`gesamt`,label:`Gesamt`}],r=n.find(e=>e.key===x)?.label;return(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(ne,{size:14,className:`text-amber`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Outcome-Quoten`}),e.pbp_start_datum&&(0,W.jsxs)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:[`PBP-Start: `,bn(e.pbp_start_datum)]})]}),(0,W.jsx)(`div`,{className:`flex gap-1`,children:n.map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>S(e.key),className:`rounded-md px-2.5 py-1 text-[11px] transition ${x===e.key?`bg-sky/15 text-sky`:`text-muted/60 hover:text-ink`}`,children:e.label},e.key))})]}),t.basis>0?(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 md:grid-cols-5`,children:[(0,W.jsx)(hU,{label:`Abgelaufen`,value:`${t.expired_rate}%`,sub:`${t.abgelaufen} Bew.`,tone:`danger`}),(0,W.jsx)(hU,{label:`Abgelehnt`,value:`${t.rejection_rate}%`,sub:`${t.abgelehnt} Bew.`,tone:`amber`}),(0,W.jsx)(hU,{label:`Zurueckgezogen`,value:`${t.withdrawal_rate}%`,sub:`${t.zurueckgezogen} Bew.`,tone:`neutral`}),(0,W.jsx)(hU,{label:`Interview erreicht`,value:`${t.interview_rate}%`,sub:`${t.interview} Bew.`,tone:`sky`}),(0,W.jsx)(hU,{label:`Angebot`,value:`${t.offer_rate}%`,sub:`${t.angebot} Bew.`,tone:`success`})]}),(0,W.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/50`,children:[`Basis: `,t.basis,` abgeschickte Bewerbungen (`,r,`, nach Bewerbungsdatum). Der Vergleich „Seit PBP" vs. „Vor PBP" zeigt, ob seit der systematischen Nutzung anteilig weniger Bewerbungen versanden.`]})]}):(0,W.jsx)(`p`,{className:`text-xs text-muted/60`,children:`Noch keine abgeschickten Bewerbungen in diesem Zeitraum.`})]})})(),(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(D,{size:14,className:`text-sky`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Aktivitaets-Heatmap`}),k?.total_active_days!=null&&(0,W.jsxs)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:[k.total_active_days,` aktive Tage`,k.max_per_day?` · max. ${k.max_per_day}/Tag`:``]})]}),(0,W.jsx)(`div`,{className:`flex items-center gap-1`,children:[{label:`90 T`,value:90},{label:`180 T`,value:180},{label:`365 T`,value:365},{label:`730 T`,value:730}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>M(e.value),className:`rounded-lg px-2 py-0.5 text-[11px] font-medium transition-colors ${j===e.value?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.value))})]}),k&&k.data&&k.data.length>0?(0,W.jsx)(mU,{data:k.data,days:j}):(0,W.jsx)(`p`,{className:`py-6 text-center text-sm text-muted/40`,children:`Noch keine Aktivitaeten erfasst. Sobald du Bewerbungen, Termine oder Follow-ups anlegst, erscheint hier ein Aktivitaetsmuster.`})]}),(0,W.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,W.jsx)(pU,{title:`Bewerbungen & Stellen im Zeitverlauf`,children:F.length>0?(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(aU,{data:F,children:[(0,W.jsx)(CR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,W.jsx)(HB,{dataKey:`name`,tick:lU}),(0,W.jsx)(rV,{tick:lU,allowDecimals:!1}),(0,W.jsx)(eM,{contentStyle:uU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,W.jsx)(Bg,{wrapperStyle:{fontSize:12}}),(0,W.jsx)(xz,{type:`monotone`,dataKey:`Bewerbungen`,stroke:`#38bdf8`,fill:`#38bdf8`,fillOpacity:.15,strokeWidth:2}),(0,W.jsx)(xz,{type:`monotone`,dataKey:`Neue Stellen`,stroke:`#34d399`,fill:`#34d399`,fillOpacity:.1,strokeWidth:2})]})}):(0,W.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Zeitraumdaten vorhanden.`})}),(0,W.jsx)(pU,{title:`Status-Verteilung im Zeitverlauf`,children:ie.length>0&&re.length>0?(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(LH,{data:ie,children:[(0,W.jsx)(CR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,W.jsx)(HB,{dataKey:`name`,tick:lU}),(0,W.jsx)(rV,{tick:lU,allowDecimals:!1}),(0,W.jsx)(eM,{contentStyle:uU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,W.jsx)(Bg,{wrapperStyle:{fontSize:12}}),re.map((e,t)=>(0,W.jsx)(xB,{dataKey:L[t],stackId:`status`,fill:oU[e]||`#94a3b8`,radius:[2,2,0,0]},e))]})}):(0,W.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Statusdaten vorhanden.`})})]}),(0,W.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,W.jsx)(pU,{title:`Quellen-Verteilung`,children:ae.length>0?(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(rU,{children:[(0,W.jsx)(nI,{data:ae,dataKey:`value`,nameKey:`name`,cx:`50%`,cy:`50%`,outerRadius:100,innerRadius:50,paddingAngle:2,label:({name:e,percent:t})=>`${e} (${(t*100).toFixed(0)}%)`,labelLine:{stroke:`rgba(255,255,255,0.2)`},children:ae.map((e,t)=>(0,W.jsx)(tM,{fill:sU[t%sU.length],cursor:`pointer`,onClick:()=>n(`stellen`)},t))}),(0,W.jsx)(eM,{contentStyle:uU})]})}):(0,W.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Quellendaten vorhanden.`})}),(0,W.jsx)(pU,{title:`Score-Verteilung`,children:z.length>0?(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(LH,{data:z,children:[(0,W.jsx)(CR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,W.jsx)(HB,{dataKey:`bucket`,tick:lU,label:{value:`Score`,position:`insideBottom`,offset:-2,style:lU}}),(0,W.jsx)(rV,{tick:lU,allowDecimals:!1}),(0,W.jsx)(eM,{contentStyle:uU,labelStyle:{color:`rgba(255,255,255,0.7)`},formatter:e=>[e,`Stellen`],labelFormatter:e=>`Score-Bereich ${e}`}),(0,W.jsx)(xB,{dataKey:`count`,fill:`#fbbf24`,radius:[4,4,0,0],children:z.map((e,t)=>(0,W.jsx)(tM,{fill:`hsl(${40+t*8}, 90%, 60%)`},t))})]})}):(0,W.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Score-Daten vorhanden.`})})]}),(0,W.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(h?.application_sources||[]).length>0&&(0,W.jsx)(pU,{title:`Bewerbungs-Quellen`,children:(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(rU,{children:[(0,W.jsx)(nI,{data:h.application_sources.map(e=>({name:e.name,value:e.count})),dataKey:`value`,nameKey:`name`,cx:`50%`,cy:`50%`,outerRadius:100,innerRadius:50,paddingAngle:2,label:({name:e,percent:t})=>`${e} (${(t*100).toFixed(0)}%)`,labelLine:{stroke:`rgba(255,255,255,0.2)`},children:h.application_sources.map((e,t)=>(0,W.jsx)(tM,{fill:sU[t%sU.length]},t))}),(0,W.jsx)(eM,{contentStyle:uU})]})})}),ce.length>0&&(0,W.jsx)(pU,{title:`Ablehnungsgruende (Top 10)`,children:(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(LH,{data:ce,layout:`vertical`,children:[(0,W.jsx)(CR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,W.jsx)(HB,{type:`number`,tick:lU,allowDecimals:!1}),(0,W.jsx)(rV,{type:`category`,dataKey:`name`,tick:lU,width:140}),(0,W.jsx)(eM,{contentStyle:uU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,W.jsx)(xB,{dataKey:`count`,radius:[0,4,4,0],children:ce.map((e,t)=>(0,W.jsx)(tM,{fill:cU[t%cU.length]},t))})]})})})]}),se.length>0?(0,W.jsx)(pU,{title:`Durchschnittsscore nach Quelle`,children:(0,W.jsx)(Vm,{width:`100%`,height:280,children:(0,W.jsxs)(LH,{data:se,layout:`vertical`,children:[(0,W.jsx)(CR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,W.jsx)(HB,{type:`number`,tick:lU}),(0,W.jsx)(rV,{type:`category`,dataKey:`name`,tick:lU,width:100}),(0,W.jsx)(eM,{contentStyle:uU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,W.jsx)(Bg,{wrapperStyle:{fontSize:12}}),(0,W.jsx)(xB,{dataKey:`Ø Score`,fill:`#38bdf8`,radius:[0,4,4,0]}),(0,W.jsx)(xB,{dataKey:`Max Score`,fill:`#34d399`,radius:[0,4,4,0]})]})})}):null,C&&C.anzahl>=3&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(st,{size:14,className:`text-coral`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Was Absagen dir sagen`})]}),(0,W.jsxs)(J,{tone:`danger`,children:[C.anzahl,` Absagen`]})]}),(0,W.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/50 mb-2`,children:`Haeufigste Gruende`}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(C.nach_grund||{}).slice(0,6).map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border border-white/[0.04] px-3 py-1.5 text-sm`,children:[(0,W.jsx)(`span`,{className:`flex-1 min-w-0 break-words text-ink leading-snug`,children:e}),(0,W.jsx)(J,{tone:`neutral`,className:`shrink-0 mt-0.5`,children:t})]},e))})]}),(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/50 mb-2`,children:`Betroffene Firmen`}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(C.nach_firma||{}).slice(0,6).map(([e,t])=>(0,W.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border border-white/[0.04] px-3 py-1.5 text-sm`,children:[(0,W.jsx)(`span`,{className:`flex-1 min-w-0 break-words text-ink leading-snug`,children:e}),(0,W.jsx)(J,{tone:`neutral`,className:`shrink-0 mt-0.5`,children:t===1?`1 Absage`:`${t} Absagen`})]},e))})]})]}),(0,W.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3`,children:[(0,W.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Eine systematische Haeufung weist oft auf ein konkretes Profil- oder Kommunikations-Thema hin.`}),(0,W.jsx)(K,{size:`sm`,variant:`secondary`,onClick:()=>{navigator.clipboard?.writeText(`/ablehnungs_coaching`).catch(()=>{}),t(`Prompt /ablehnungs_coaching kopiert — in Claude Desktop einfuegen.`,`success`)},children:`Vertieft mit Claude besprechen`})]})]}),E?.status===`ok`&&Object.keys(E.stile||{}).length>0&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,W.jsx)(Ue,{size:14,className:`text-sky`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Anschreiben-Stile im Vergleich`})]}),(0,W.jsxs)(J,{tone:`neutral`,children:[E.gesamt_getrackt,` getrackt`]})]}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(E.stile).map(([e,t])=>{let n=typeof t.interview_quote==`number`;return(0,W.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] px-3 py-2`,children:[(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,W.jsx)(`span`,{className:`font-medium text-ink capitalize`,children:e}),(0,W.jsxs)(J,{tone:`neutral`,children:[t.anzahl,` `,t.anzahl===1?`Bewerbung`:`Bewerbungen`]})]}),n?(0,W.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-3 text-xs text-muted/70`,children:[(0,W.jsxs)(`span`,{children:[`Interview-Quote: `,(0,W.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.interview_quote,`%`]})]}),(0,W.jsxs)(`span`,{children:[`Angebote: `,(0,W.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.angebots_quote,`%`]})]}),(0,W.jsxs)(`span`,{children:[`Absagen: `,(0,W.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.absage_quote,`%`]})]})]}):(0,W.jsx)(`p`,{className:`mt-1 text-xs text-muted/50`,children:t.hinweis||`Mindestens ${E.min_samples_fuer_quoten} Bewerbungen pro Stil noetig.`})]},e)})}),(0,W.jsxs)(`p`,{className:`mt-3 text-xs text-muted/50`,children:[`Stil per `,(0,W.jsx)(`code`,{className:`text-ink/70`,children:`bewerbung_stil_tracken()`}),` nach jedem Anschreiben festhalten — Claude macht das nach dem Standard-Workflow automatisch.`]})]}),(_?.recent_activity||[]).length>0&&(0,W.jsxs)(q,{className:`rounded-2xl`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,W.jsx)(D,{size:14,className:`text-sky`}),(0,W.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Letzte Aktivitaet`})]}),(0,W.jsx)(`div`,{className:`grid gap-1.5`,children:_.recent_activity.map((e,t)=>(0,W.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-white/[0.04] px-3 py-2 text-sm`,children:[(0,W.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted/40 tabular-nums w-28`,children:xn(e.event_date)}),(0,W.jsx)(J,{tone:e.status===`notiz`?`neutral`:e.status===`abgelehnt`?`danger`:e.status===`interview`?`amber`:`sky`,children:e.status||`Event`}),(0,W.jsxs)(`span`,{className:`flex-1 truncate text-ink font-medium`,children:[e.title,` — `,e.company]}),e.notes&&(0,W.jsx)(`span`,{className:`shrink-0 max-w-48 truncate text-xs text-muted/50`,children:e.notes})]},t))})]})]})]})}var _U=s({flushNow:()=>IU,getEnabledStatus:()=>FU,initActivityTracking:()=>jU,setLearningEnabled:()=>MU,track:()=>PU,trackEvent:()=>NU}),vU=1e4,yU=200,bU=[],xU=null,SU=`unknown`,CU=null,wU=null,TU=!1;function EU(){return new Date().toISOString()}function DU(){if(xU)return xU;try{let e=sessionStorage.getItem(`pbp_activity_session`);if(e)return xU=e,xU}catch{}xU=`s-`+Math.random().toString(36).slice(2,14)+`-`+Date.now();try{sessionStorage.setItem(`pbp_activity_session`,xU)}catch{}return xU}async function OU(){if(!bU.length)return;let e=bU.splice(0,bU.length);try{let t=await fetch(`/api/activity/track`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({events:e})});if(!t.ok)return;(await t.json())?.status===`disabled`&&(CU=!1,AU())}catch{}}function kU(){wU||=window.setInterval(OU,vU)}function AU(){wU&&=(window.clearInterval(wU),null)}function jU(e){TU||(TU=!0,SU=e||`unknown`,fetch(`/api/settings/learning`).then(e=>e.ok?e.json():null).then(e=>{CU=e?.learning_enabled!==!1,CU&&kU()}).catch(()=>{CU=!1}),window.addEventListener(`beforeunload`,()=>{if(!(!CU||!bU.length))try{let e=bU.splice(0,bU.length),t=new Blob([JSON.stringify({events:e})],{type:`application/json`});navigator.sendBeacon(`/api/activity/track`,t)}catch{}}))}function MU(e){CU=!!e,CU?kU():(AU(),bU=[])}function NU(e,t={}){CU!==!1&&(bU.length>=yU&&bU.splice(0,50),bU.push({event_type:e,entity_type:t.entityType||null,entity_id:t.entityId||null,page:t.page||null,action:t.action||null,metadata:t.metadata||null,session_id:DU(),app_version:SU,timestamp:EU()}))}var PU={pageView:e=>NU(`page_view`,{page:e}),click:(e,t,n)=>NU(`click`,{page:e,action:t,metadata:n}),filterApply:(e,t,n)=>NU(`filter_apply`,{page:e,action:`filter_apply`,metadata:{filter:t,value:String(n).slice(0,100)}}),workflowStart:e=>NU(`workflow_start`,{action:e}),workflowAbort:(e,t)=>NU(`workflow_abort`,{action:e,metadata:{reason:t||``}}),workflowComplete:e=>NU(`workflow_complete`,{action:e}),scroll:(()=>{let e=0;return(t,n,r)=>{let i=Date.now();i-e<1e3||(e=i,NU(`scroll`,{page:t,metadata:{y:n,y_pct:r>0?Math.round(n/r*100):0}}))}})(),dwell:(e,t)=>NU(`dwell`,{page:e,metadata:{duration_ms:Math.round(t)}}),llmCorrection:(e,t,n,r)=>NU(`llm_correction`,{entity_type:`job`,entity_id:r,action:`llm_correction`,metadata:{task:e,original:t,corrected_to:n}})};function FU(){return CU}async function IU(){await OU()}var LU={has_profile:!1,profile_name:null,profile:{completeness:0,complete:0,total:9,missing_areas:[],positionen:0,skills:0,dokumente:0},sources:{active:0,total:0},search:{status:`nie`},jobs:{active:0},applications:{total:0,follow_ups_total:0,follow_ups_due:0},readiness:{label:`Startklar machen`,tone:`blue`,headline:`Lege dein Profil an oder importiere vorhandene Unterlagen.`,description:`Ohne Profil kann PBP noch nicht für Jobsuche, Export oder Bewerbungen arbeiten.`,action_type:`prompt`,action_target:`/ersterfassung`,action_label:`Profil starten`},navigation:{}},RU=[{id:`dashboard`,title:`Dashboard`,icon:O,defaultMeta:`Status und Übersicht`},{id:`profil`,title:`Profil`,icon:ft,defaultMeta:`Lebenslauf-Basis und Vollständigkeit`},{id:`stellen`,title:`Stellen`,icon:P,defaultMeta:`Treffer, Filter und Fit`},{id:`bewerbungen`,title:`Bewerbungen`,icon:Ze,defaultMeta:`TODOs, Follow-ups und Status`},{id:`kontakte`,title:`Kontakte`,icon:pt,defaultMeta:`Personen mit Rollen und Historie`},{id:`dokumente`,title:`Docs`,icon:Se,defaultMeta:`Suche, Filter und Querverweis`},{id:`kalender`,title:`Kalender`,icon:I,defaultMeta:`Termine und ICS-Export`},{id:`statistiken`,title:`Statistiken`,icon:ne,defaultMeta:`Charts, Trends und Export`},{id:`einstellungen`,title:`Einstellungen`,icon:Qe,defaultMeta:`Quellen, Suche und Verhalten`}];function zU(e){return e===!0||e===`true`||e===1||e===`1`}function BU(){if(typeof document>`u`)return!1;let e=document.activeElement;if(!e)return!1;let t=(e.tagName||``).toUpperCase();return t===`INPUT`||t===`TEXTAREA`||t===`SELECT`?!0:!!e.isContentEditable}function VU(e,t){let n=(e?.name||``).trim()||`Unbenanntes Profil`,r=n.toLocaleLowerCase(`de-DE`);return(t.get(r)||0)<2?n:`${n} (ID ${e.id})`}function HU(e){let t=new Map;for(let n of e||[])!n?.id||t.has(n.id)||t.set(n.id,n);let n=[...t.values()],r=new Map;for(let e of n){let t=((e?.name||``).trim()||`Unbenanntes Profil`).toLocaleLowerCase(`de-DE`);r.set(t,(r.get(t)||0)+1)}return n.map(e=>({...e,display_name:VU(e,r)}))}function UU({navigateTo:e}){let[t,n]=(0,w.useState)(``),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1),l=(0,w.useRef)(null),u=(0,w.useRef)(null);(0,w.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&o(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,w.useEffect)(()=>{if(l.current&&clearTimeout(l.current),!t||t.length<2){i(null);return}return l.current=setTimeout(async()=>{c(!0);try{i(await fetch(`/api/search?q=${encodeURIComponent(t)}&limit=6`).then(e=>e.ok?e.json():null)),o(!0)}catch{i(null)}finally{c(!1)}},280),()=>l.current&&clearTimeout(l.current)},[t]);function d(e){o(!1),n(``),i(null),e.url&&(window.location.hash=e.url.replace(/^#/,``))}return(0,W.jsxs)(`div`,{ref:u,className:`relative shrink-0 hidden md:block`,children:[(0,W.jsx)(`input`,{type:`search`,value:t,onChange:e=>n(e.target.value),onFocus:()=>r&&o(!0),placeholder:`Suchen...`,className:`w-48 lg:w-64 rounded-lg border border-white/8 bg-white/[0.03] px-3 py-1.5 text-[13px] text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`}),a&&r&&r.total>0&&(0,W.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 w-[420px] max-h-[60vh] overflow-y-auto rounded-xl border border-white/10 bg-[var(--surface-1,_#1a1d23)] shadow-2xl shadow-black/40 z-[60]`,children:[r.groups.map(e=>(0,W.jsxs)(`div`,{className:`border-b border-white/5 last:border-b-0`,children:[(0,W.jsx)(`p`,{className:`px-3 pt-2 pb-1 text-[10px] uppercase tracking-[0.15em] text-teal/70`,children:e.label}),(0,W.jsx)(`ul`,{children:e.items.map(e=>(0,W.jsx)(`li`,{children:(0,W.jsxs)(`button`,{type:`button`,onClick:()=>d(e),className:`w-full text-left px-3 py-2 hover:bg-white/[0.04] transition-colors`,children:[(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink truncate`,children:e.title}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:e.subtitle})]})},`${e.kind}-${e.id}`))})]},e.kind)),(0,W.jsxs)(`p`,{className:`px-3 py-1.5 text-[10px] text-muted/40 border-t border-white/5`,children:[r.total,` Treffer`]})]}),a&&r&&r.total===0&&t.length>=2&&(0,W.jsx)(`div`,{className:`absolute right-0 top-full mt-1 w-[420px] rounded-xl border border-white/10 bg-[var(--surface-1,_#1a1d23)] p-4 shadow-2xl shadow-black/40 z-[60]`,children:(0,W.jsxs)(`p`,{className:`text-sm text-muted/60`,children:[`Keine Treffer fuer „`,t,`"`]})}),s&&(0,W.jsx)(`div`,{className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted/40 text-[10px]`,children:`...`})]})}function WU({pushToast:e,copyPrompt:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(``),[o,s]=(0,w.useState)(null);if((0,w.useEffect)(()=>{let e=!0;return fetch(`/api/prompts`).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e&&r(t?.prompts||[])}).catch(t=>{e&&s(t.message)}),()=>{e=!1}},[]),o)return(0,W.jsxs)(`p`,{className:`text-sm text-coral`,children:[`Prompts konnten nicht geladen werden: `,o]});if(n===null)return(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade...`});let c=i?n.filter(e=>(e.titel+` `+e.name+` `+e.beschreibung).toLowerCase().includes(i.toLowerCase())):n,l={};for(let e of c)l[e.kategorie]||(l[e.kategorie]=[]),l[e.kategorie].push(e);return(0,W.jsxs)(`div`,{className:`space-y-4`,children:[(0,W.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[`Vollstaendige Liste aller `,n.length,` verfuegbaren MCP-Prompts. Klick auf „Kopieren" kopiert den Prompt in die Zwischenablage — dann in Claude Desktop einfuegen und absenden.`]}),(0,W.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`Filter nach Titel oder Beschreibung...`,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-sm text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`}),c.length===0?(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Keine Prompts gefunden.`}):Object.entries(l).map(([e,n])=>(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h3`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-teal/70 mb-2`,children:e}),(0,W.jsx)(`div`,{className:`space-y-1.5`,children:n.map(e=>(0,W.jsxs)(`div`,{className:`glass-card flex items-start justify-between gap-3 px-3 py-2.5 rounded-lg`,children:[(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:e.titel}),(0,W.jsxs)(`p`,{className:`text-[11px] text-muted/50 font-mono`,children:[`/`,e.name]}),e.beschreibung&&(0,W.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-0.5`,children:e.beschreibung})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>t(`/${e.name}`),className:`shrink-0 rounded-md bg-sky/15 hover:bg-sky/25 text-sky text-[11px] font-medium px-2.5 py-1.5 transition-colors`,children:`Kopieren`})]},e.name))})]},e))]})}function GU(){let[e,t]=(0,w.useState)(yn()),[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(0),[o,s]=(0,w.useState)(()=>Vt()),[c,l]=(0,w.useState)(()=>Ut()),[u,d]=(0,w.useState)(()=>It());(0,w.useEffect)(()=>{Kt(o,c,u)},[o,c,u]),(0,w.useEffect)(()=>{if(!e)return;let t=setTimeout(()=>{H(`/api/wiki/request-hint`,{page:e}).catch(()=>{})},800);return()=>clearTimeout(t)},[e]),(0,w.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-color-scheme: light)`),t=()=>{o===`system`&&Kt(`system`,c,u)};return e.addEventListener?e.addEventListener(`change`,t):e.addListener(t),()=>{e.removeEventListener?e.removeEventListener(`change`,t):e.removeListener(t)}},[o,c]);function f(e){s(e),Ht(e)}function p(e,t,n){l(r=>{let i={light:{...r.light||{}},dark:{...r.dark||{}}};return n?i[e][t]=n:delete i[e][t],Wt(i),i})}function m(e){l(t=>{let n={light:e===`light`?{}:{...t.light||{}},dark:e===`dark`?{}:{...t.dark||{}}};return Wt(n),n})}function h(){s(`system`),Ht(`system`),l({light:{},dark:{}}),Wt({light:{},dark:{}}),d(`default`),Lt(`default`)}function g(e){let t=Mt.some(t=>t.id===e)?e:`default`;d(t),Lt(t)}let[_,v]=(0,w.useState)({loading:!0,status:{has_profile:!1},workspace:LU,profiles:[],profile:null,wizardCompleted:!1,searchStatus:{status:`nie`},profileOnboarding:{profileId:``,started:!1,completed:!1,dismissed:!1}}),[y,b]=(0,w.useState)([]),[x,S]=(0,w.useState)(!1),[C,T]=(0,w.useState)({name:``,email:``}),[E,D]=(0,w.useState)({open:!1,profile:null,confirm:``}),[O,k]=(0,w.useState)(!1),A=(0,w.useRef)(null),[j,M]=(0,w.useState)(!0),[N,P]=(0,w.useState)(!1),[ee,F]=(0,w.useState)(!1),[I,te]=(0,w.useState)(`hilfe`),[ne,re]=(0,w.useState)(!1),[ie,R]=(0,w.useState)({ui_state:`not_installed`}),[ae,oe]=(0,w.useState)(!1),[z,ce]=(0,w.useState)(null),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)(()=>{try{return localStorage.getItem(`pbp-sidebar-collapsed`)===`1`}catch{return!1}}),he=(0,w.useRef)(new Map),ge=(0,w.useRef)(``),_e=(0,w.useRef)(!1),ye=(0,w.useRef)(!1),be=(0,w.useRef)(!1),xe=(0,w.useRef)(!1);(0,w.useEffect)(()=>{if(!O)return;function e(e){A.current&&!A.current.contains(e.target)&&k(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[O]);function Ce(e){b(t=>t.filter(t=>t.id!==e))}function B(e,t=`sky`,n={}){let r=String(e||``).trim(),i=n?.dedupe!==!1,a=Number(n?.dedupeWindowMs||5e3);if(i&&r){let e=`${t}:${r}`,n=Date.now();if(n-(he.current.get(e)||0)200)for(let[e,t]of he.current.entries())n-t>a*2&&he.current.delete(e)}let o=typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`;b(i=>[...i,{id:o,message:r||e,tone:t,action:n?.action}]),window.setTimeout(()=>Ce(o),Number(n?.duration)||4200)}async function we(e){try{let t=String(e||``).trim(),n=t.toLocaleLowerCase(`de-DE`),r=t;if(n.startsWith(`/`)){let e=t.slice(1).split(/\s+/)[0];if(e)try{let t=await V(`/api/workflow-prompt/${encodeURIComponent(e)}`);t?.prompt&&(r=t.prompt)}catch{B(`Anleitung konnte nicht geladen werden — der Originaltext wurde kopiert.`,`amber`)}}await On(r);let i=_.status?.mcp_connection?.status;if(i&&i!==`connected`&&B(`Claude Desktop scheint nicht verbunden zu sein. Bitte pruefen: 1) Laeuft das PBP-Fenster noch? 2) Claude Desktop komplett beenden und neu starten 3) Unter Einstellungen > Entwickler den MCP-Status pruefen.`,`amber`,{duration:12e3,dedupe:!0}),n===`/ersterfassung`||n.startsWith(`/ersterfassung `)){let e=_.profile?.id||_.profiles?.find(e=>e.is_active)?.id||``;e&&(await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${e}`,{value:`active`})]),(0,w.startTransition)(()=>{v(t=>({...t,profileOnboarding:{...t.profileOnboarding,profileId:e,started:!0,completed:!1,dismissed:!1}}))}))}B(`Anleitung kopiert! Wechsle jetzt zu Claude Desktop — Einfuegen mit Strg+V (Cmd+V auf Mac).`,`success`,{duration:1e4,action:{label:`Zu Claude wechseln`,onClick:()=>{window.open(`claude://`,`_self`)}}})}catch(e){B(`Kopieren fehlgeschlagen: ${e.message}`,`danger`)}}async function Ee(e={}){let t=!!e?.quiet;t&&!e?.forceReload&&(xe.current=!0);try{let[n,r,i,o,s,c]=await Promise.all([V(`/api/status`),V(`/api/workspace-summary`),V(`/api/profiles`),Et(`/api/profile`),V(`/api/user-preferences/wizard_completed`),V(`/api/search-status`)]),l=o?.id||i?.profiles?.find(e=>e.is_active)?.id||``,[u,d,f]=l?await Promise.all([V(`/api/user-preferences/profile_onboarding_started_${l}`),V(`/api/user-preferences/profile_onboarding_completed_${l}`),V(`/api/user-preferences/profile_onboarding_dismissed_${l}`)]):[{value:!1},{value:!1},{value:!1}],p={profileId:l,started:zU(u?.value),completed:zU(d?.value),dismissed:zU(f?.value)};if(t&&!e?.forceReload)try{let e=await Et(`/api/live-update-token`);e?.token&&(ge.current=String(e.token),_e.current=!0,ye.current=!1)}catch{}finally{xe.current=!1}(0,w.startTransition)(()=>{v({loading:!1,status:n,workspace:r||LU,profiles:i?.profiles||[],profile:o,wizardCompleted:!!s?.value,searchStatus:c||{status:`nie`},profileOnboarding:p}),P(p.started&&!p.completed&&!p.dismissed),(!t||e?.forceReload)&&a(e=>e+1)})}catch(e){t||B(`Dashboard konnte nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>{v(e=>({...e,loading:!1}))})}}let De=(0,w.useEffectEvent)(()=>{t(yn())}),Oe=(0,w.useEffectEvent)(async()=>{if(!be.current){be.current=!0;try{let e=await Et(`/api/live-update-token`);if(!e?.token)return;let t=String(e.token);if(!_e.current){ge.current=t,_e.current=!0,ye.current=!1;return}let n=t!==ge.current;if(n&&(ge.current=t),xe.current){ye.current=!1;return}if(!n&&!ye.current)return;if(BU()){ye.current=!0;return}ye.current=!1,await Ee({quiet:!0,forceReload:!0})}catch{}finally{be.current=!1}}});(0,w.useEffect)(()=>{Ee(),Et(`/api/update-check`).then(e=>{e?.update_available&&ce(e)}),Et(`/api/status`).then(e=>{jU(e?.pbp_version||`unknown`);try{PU.pageView(yn())}catch{}})},[]);let ke=(0,w.useRef)({page:null,ts:Date.now()});(0,w.useEffect)(()=>{let t=ke.current;if(t.page&&t.page!==e)try{PU.dwell(t.page,Date.now()-t.ts)}catch{}ke.current={page:e,ts:Date.now()}},[e]),(0,w.useEffect)(()=>(window.addEventListener(`hashchange`,De),()=>window.removeEventListener(`hashchange`,De)),[De]),(0,w.useEffect)(()=>{let e=!1,t=null,n=async()=>{e||(await Oe(),!e&&(t=window.setTimeout(n,2e3)))};return n(),()=>{e=!0,ye.current=!1,be.current=!1,t&&window.clearTimeout(t)}},[Oe]),(0,w.useEffect)(()=>{let e=!1,t=window.setInterval(async()=>{if(!e)try{let t=await Et(`/api/status`);t?.mcp_connection&&!e&&(0,w.startTransition)(()=>{v(e=>e.status?.mcp_connection?.status===t.mcp_connection.status?e:{...e,status:{...e.status,mcp_connection:t.mcp_connection}})})}catch{}},3e4);return()=>{e=!0,window.clearInterval(t)}},[]),(0,w.useEffect)(()=>{let e=!1,t=async()=>{if(!e)try{let t=await Et(`/api/llm/status`);t?.ui_state&&!e&&(0,w.startTransition)(()=>R(t))}catch{}};t();let n=window.setInterval(t,6e4);return()=>{e=!0,window.clearInterval(n)}},[]);function Ae(e,n=null){r(n?{page:e,...n,nonce:Date.now()}:null),t(e),ue(``),window.location.hash!==`#${e}`&&(window.location.hash=e);try{PU.pageView(e)}catch{}}function je(){fe(e=>{let t=!e;try{localStorage.setItem(`pbp-sidebar-collapsed`,t?`1`:`0`)}catch{}return t})}let Me=RU.find(t=>t.id===e)?.title||``;async function Ne(e){if(!e)return;if(e.prompt){await we(e.prompt);return}let t=Nn(e.action_target||e.actionTarget);if(t){Ae(t.page,t);return}if(e.action_type===`page`&&e.action_target){Ae(e.action_target);return}e.action_type===`prompt`&&e.action_target&&await we(e.action_target)}async function Pe(){let e=_.workspace?.readiness;if(e){if(e.action_type===`prompt`){await we(e.action_target);return}e.action_target&&Ae(e.action_target)}}async function Ie(e){try{await H(`/api/profiles/switch`,{profile_id:e}),await Ee(),B(`Aktives Profil gewechselt.`,`success`)}catch(e){B(`Profilwechsel fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){e.preventDefault();try{let e=await H(`/api/profiles/new`,C);if(e?.id)try{await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e.id}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${e.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${e.id}`,{value:`idle`})]),P(!0)}catch(e){B(`Profil wurde erstellt, aber das Setup konnte nicht vorbereitet werden: ${e.message}`,`danger`)}S(!1),T({name:``,email:``}),await Ee(),Ae(`dashboard`),B(`Neues Profil erstellt.`,`success`)}catch(e){B(`Profil konnte nicht erstellt werden: ${e.message}`,`danger`)}}async function Be(){try{await Dt(`/api/profiles/${E.profile.id}`),D({open:!1,profile:null,confirm:``}),await Ee(),B(`Profil gelöscht.`,`success`)}catch(e){B(`Löschen fehlgeschlagen: ${e.message}`,`danger`)}}async function Ve(e=!1){if(M(!1),e)try{await H(`/api/user-preferences/wizard_completed`,{value:!0})}catch(e){B(`Wizard-Status konnte nicht gespeichert werden: ${e.message}`,`danger`)}}async function He(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!1),e)try{await H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!0}),(0,w.startTransition)(()=>{v(e=>({...e,profileOnboarding:{...e.profileOnboarding,dismissed:!0}}))})}catch(e){B(`Onboarding konnte nicht geschlossen werden: ${e.message}`,`danger`)}}async function Ue(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!0),e)try{await H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1}),(0,w.startTransition)(()=>{v(e=>({...e,profileOnboarding:{...e.profileOnboarding,dismissed:!1}}))})}catch(e){B(`Onboarding konnte nicht erneut geöffnet werden: ${e.message}`,`danger`)}}async function We(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!1),e)try{await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1})]),await Ee(),B(`Profil-Setup abgeschlossen.`,`success`)}catch(e){B(`Onboarding konnte nicht abgeschlossen werden: ${e.message}`,`danger`)}}let Ge=_.workspace?.readiness||LU.readiness,Ke=HU(_.profiles),Je=_.profile?.id||Ke.find(e=>e.is_active)?.id||``,Ye=new Set(Ke.map(e=>e.id)).has(Je)?Je:Ke.find(e=>e.is_active)?.id||Ke[0]?.id||``,Xe=Ke.find(e=>e.id===Ye)?.display_name||`Kein Profil`,$e=!_.loading&&!_.status?.has_profile&&!_.wizardCompleted&&j,et=!_.loading&&_.status?.has_profile&&_.profileOnboarding?.started&&!_.profileOnboarding?.completed&&N,tt=!_.loading&&_.status?.has_profile&&_.profileOnboarding?.started&&!_.profileOnboarding?.completed&&!et,nt=(_.workspace?.profile?.completeness||0)>=100,it=!_.loading&&!nt&&(_.workspace?.readiness?.stage||Ge.stage)!==`im_fluss`,ot=(Ge.action_target||``).toString().toLowerCase()!==`dashboard`&&(Ge.action_label||``).toString().toLowerCase()!==`dashboard ansehen`;async function st(e={}){try{let t=await H(`/api/jobsuche/start`,e);return t?.status===`gestartet`?(B(`Jobsuche laeuft auf ${t.quellen?.length||0} Portalen. Fortschritt siehst du in der Sidebar.`,`teal`),Ee(),t):t?.status===`laeuft_bereits`?(B(`Eine Jobsuche laeuft bereits.`,`amber`),t):t?.status===`keine_quellen`?(B(`Keine Job-Quellen aktiviert — bitte unter Einstellungen → Job-Quellen auswaehlen.`,`amber`,{duration:6e3}),t):(t?.status===`nur_manuelle_quellen`&&B(`Alle gewaehlten Quellen laufen nur via Claude-in-Chrome.`,`amber`,{duration:6e3}),t)}catch(e){throw B(e?.message||`Jobsuche konnte nicht gestartet werden.`,`rose`),e}}let ct={page:e,intent:n,clearIntent:()=>r(null),chrome:_,reloadKey:i,refreshChrome:Ee,navigateTo:Ae,pushToast:B,copyPrompt:we,startJobsuche:st,executeAction:Ne,openCreateProfileModal:()=>S(!0),openProfileOnboarding:Ue,themeMode:o,themeCustom:c,setThemeMode:f,setThemeColor:p,resetThemeMode:m,resetAllTheme:h,defaultPalette:jt,themePreset:u,setThemePreset:g,themePresets:Mt},lt={profil:_.workspace?.navigation?.profile_badge,stellen:_.workspace?.navigation?.jobs_badge,bewerbungen:_.workspace?.navigation?.applications_badge,einstellungen:_.workspace?.navigation?.settings_badge},ut={dashboard:Ge.label||RU[0].defaultMeta},dt=null;return e===`profil`?dt={items:[{id:`profil-uebersicht`,label:`Uebersicht`},{id:`profil-persoenlich`,label:`Persoenliche Daten`},{id:`profil-suchkriterien`,label:`Suchkriterien`},{id:`profil-blacklist`,label:`Blacklist`},{id:`profil-erfahrung`,label:`Berufserfahrung`},{id:`profil-ausbildung`,label:`Ausbildung`},{id:`profil-skills`,label:`Skills`},{id:`profil-dokumente`,label:`Dokumente`}],onSelect:e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`}),ue({"profil-uebersicht":`Uebersicht`,"profil-persoenlich":`Persoenliche Daten`,"profil-suchkriterien":`Suchkriterien`,"profil-blacklist":`Blacklist`,"profil-erfahrung":`Berufserfahrung`,"profil-ausbildung":`Ausbildung`,"profil-skills":`Skills`,"profil-dokumente":`Dokumente`}[e]||``)}}:e===`einstellungen`?dt={items:[{id:`settings-quellen`,label:`Quellen`},{id:`settings-ai`,label:`Lokale KI`},{id:`settings-automatik`,label:`Automatik`},{id:`settings-system`,label:`System`},{id:`settings-erscheinungsbild`,label:`Erscheinungsbild`},{id:`settings-datenschutz`,label:`Datenschutz`},{id:`settings-logs`,label:`Logs`},{id:`settings-gefahrenzone`,label:`Gefahrenzone`}],onSelect:e=>{let t=e.replace(`settings-`,``);document.dispatchEvent(new CustomEvent(`settings-nav`,{detail:{tab:t}})),ue({quellen:`Quellen`,ai:`Lokale KI`,automatik:`Automatik`,system:`System`,erscheinungsbild:`Erscheinungsbild`,datenschutz:`Datenschutz`,logs:`Logs`,gefahrenzone:`Gefahrenzone`}[t]||``)}}:e===`kalender`&&(dt={items:[{id:`cal-view-kalender`,label:`Kalender`},{id:`cal-view-log`,label:`Aktivitaetslog`},{id:`cal-period-woche`,label:` Woche`},{id:`cal-period-monat`,label:` Monat`},{id:`cal-period-quartal`,label:` Quartal`},{id:`cal-period-halbjahr`,label:` Halbjahr`},{id:`cal-filter-all`,label:`Alle Termine`},{id:`cal-filter-upcoming`,label:`Kommende`},{id:`cal-filter-past`,label:`Vergangene`}],onSelect:e=>document.dispatchEvent(new CustomEvent(`cal-nav`,{detail:{action:e}}))}),(0,W.jsx)(Ot.Provider,{value:ct,children:(0,W.jsxs)(`div`,{className:`app-shell flex min-h-screen`,children:[(0,W.jsx)(tr,{toasts:y,onDismiss:Ce}),(0,W.jsx)(yr,{tabs:RU,activePage:e,onSelectPage:Ae,subNavigation:dt,badges:lt,meta:ut,brand:{version:_.status?.version||null,connectionStatus:_.status?.mcp_connection?.status||`unknown`,onConnectionClick:()=>{_.status?.mcp_connection?.status===`connected`?window.open(`claude://`,`_self`):re(!0)},llmState:ie?.ui_state||`not_installed`,onLlmClick:()=>oe(!0)},collapsed:de,onToggle:je,footerSlot:(0,W.jsxs)(W.Fragment,{children:[(0,W.jsx)(hn,{onNavigateToJobs:()=>Ae(`stellen`)}),(0,W.jsx)(Nr,{collapsed:de,onToast:B,onNavigateToSettings:e=>{Ae(`einstellungen`),setTimeout(()=>{document.dispatchEvent(new CustomEvent(`settings-nav`,{detail:{tab:e||`ai`}}))},50)},onNavigate:(e,t)=>{e===`application`?Ae(`bewerbungen`,{applicationId:t}):e===`job`?Ae(`stellen`,{jobHash:t}):e===`job_filter`?t===`missing_desc`?Ae(`stellen`,{missingDescriptionOnly:!0}):Ae(`stellen`):e===`page`&&Ae(t)}})]})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0 flex flex-col`,children:[(0,W.jsx)(`header`,{className:`app-topbar glass-topbar sticky top-0 z-50`,children:(0,W.jsxs)(`div`,{className:`flex w-full items-center gap-x-3 gap-y-2 px-5 py-2.5 sm:px-8`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:je,className:`shrink-0 rounded-lg p-2 text-muted/60 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:de?`Sidebar ausklappen`:`Sidebar einklappen`,children:(0,W.jsx)(Fe,{size:20})}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0 flex-1`,children:[(0,W.jsx)(`img`,{src:`/static/dashboard/pbp.png`,alt:`PBP`,className:`h-7 w-7 shrink-0 rounded-md`,onError:e=>{e.currentTarget.style.display=`none`}}),(0,W.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0 truncate`,children:[(0,W.jsx)(`span`,{className:`font-display text-[15px] font-semibold text-ink whitespace-nowrap`,children:`PBP`}),(0,W.jsx)(`span`,{className:`text-[12px] text-muted/50 whitespace-nowrap hidden md:inline`,children:`Persönliches Bewerbungs-Portal`}),(0,W.jsx)(`span`,{className:`text-muted/30 select-none`,children:`·`}),(0,W.jsxs)(`span`,{className:`text-[14px] font-medium text-ink/80 whitespace-nowrap truncate`,children:[`/`,Me,le?`/${le}`:``]})]})]}),(0,W.jsx)(UU,{navigateTo:Ae}),(()=>{let e=o===`system`?`light`:o===`light`?`dark`:`system`;return(0,W.jsx)(`button`,{type:`button`,onClick:()=>f(e),className:`shrink-0 rounded-lg p-1.5 text-muted/60 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:`Theme: ${o===`system`?`System`:o===`light`?`Hell`:`Dunkel`} — klicken fuer ${e===`system`?`System`:e===`light`?`Hell`:`Dunkel`}`,children:(0,W.jsx)(o===`system`?Re:o===`light`?rt:ze,{size:18})})})(),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{M(!1),F(!0)},className:`shrink-0 rounded-lg p-1.5 text-muted/50 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:`Hilfe & Support`,children:(0,W.jsx)(se,{size:18})}),(0,W.jsxs)(`div`,{id:`profile-switcher`,ref:A,className:`relative flex shrink-0 items-center`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2.5 rounded-xl border border-white/8 bg-white/[0.04] px-3 py-1.5 text-[13px] font-medium text-ink transition-all duration-200 hover:border-white/12 hover:bg-white/[0.07]`,onClick:()=>k(e=>!e),children:[(0,W.jsx)(`span`,{className:`flex h-6 w-6 items-center justify-center rounded-full bg-teal/15 text-[10px] font-bold uppercase text-teal`,children:Xe[0]||`?`}),(0,W.jsx)(`span`,{className:`max-w-[10rem] truncate`,children:Xe}),(0,W.jsx)(L,{size:14,className:G(`text-muted/50 transition-transform duration-200`,O&&`rotate-180`)})]}),O&&(0,W.jsxs)(`div`,{className:`absolute right-0 top-full z-50 mt-2 min-w-[13rem] overflow-hidden rounded-xl border border-white/10 shadow-2xl backdrop-blur-2xl animate-rise`,style:{background:`rgba(30, 34, 52, 0.95)`},children:[(0,W.jsxs)(`div`,{className:`p-1`,children:[Ke.length===0&&(0,W.jsx)(`p`,{className:`px-3 py-2 text-[12px] text-muted/50`,children:`Kein Profil vorhanden`}),Ke.map(e=>(0,W.jsxs)(`button`,{type:`button`,className:G(`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] transition-colors duration-150`,e.id===Ye?`bg-teal/10 font-medium text-teal`:`text-muted hover:bg-white/[0.06] hover:text-ink`),onClick:()=>{Ie(e.id),k(!1)},children:[(0,W.jsx)(`span`,{className:G(`flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-[10px] font-bold uppercase`,e.id===Ye?`bg-teal/20 text-teal`:`bg-white/[0.06] text-muted/60`),children:e.display_name?.[0]||`?`}),(0,W.jsx)(`span`,{className:`truncate`,children:e.display_name})]},e.id))]}),(0,W.jsxs)(`div`,{className:`border-t border-white/6 p-1`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] text-muted transition-colors duration-150 hover:bg-white/[0.06] hover:text-ink`,onClick:()=>{S(!0),k(!1)},children:[(0,W.jsx)(qe,{size:14}),(0,W.jsx)(`span`,{children:`Neues Profil`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] text-coral/60 transition-colors duration-150 hover:bg-coral/5 hover:text-coral disabled:cursor-not-allowed disabled:opacity-40`,disabled:!_.profile,onClick:()=>{D({open:!0,profile:_.profile,confirm:``}),k(!1)},children:[(0,W.jsx)(at,{size:14}),(0,W.jsx)(`span`,{children:`Profil löschen`})]})]})]})]})]})}),z?.update_available&&(0,W.jsx)(`div`,{className:`mx-auto w-full max-w-[92rem] px-5 sm:px-8 pt-2`,children:(0,W.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border border-amber/20 bg-amber/8 px-4 py-2.5 text-sm text-amber`,children:[(0,W.jsxs)(`span`,{children:[`Neue Version verfuegbar: `,(0,W.jsxs)(`strong`,{children:[`v`,z.latest_version]}),z.release_name?` — ${z.release_name}`:``]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-2`,children:[z.release_url&&(0,W.jsx)(`a`,{href:z.release_url,target:`_blank`,rel:`noopener noreferrer`,className:`rounded-lg bg-amber/15 px-3 py-1 text-xs font-medium hover:bg-amber/25 transition-colors`,children:`Update-Anleitung`}),(0,W.jsx)(`button`,{type:`button`,className:`rounded-lg p-1 hover:bg-amber/15 transition-colors`,onClick:()=>ce(null),children:(0,W.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,children:(0,W.jsx)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`})})})]})]})}),it?(0,W.jsx)(`div`,{id:`workspace-strip`,className:G(`workspace-strip mx-auto w-full max-w-[92rem] px-5 pb-2 pt-4 sm:px-8`,!_.loading&&`active`),children:(0,W.jsxs)(q,{className:`workspace-grid flex flex-wrap items-center gap-x-6 gap-y-3 rounded-xl px-5 py-3`,children:[(0,W.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,W.jsx)(`h2`,{className:`workspace-headline truncate text-[13px] font-semibold text-ink`,children:Ge.headline}),(0,W.jsxs)(`p`,{className:`mt-0.5 truncate text-[12px] text-muted/50`,children:[_.workspace?.profile_name||`Kein Profil`,` — `,Ge.description]})]}),(0,W.jsxs)(`div`,{className:`flex items-center gap-5 text-center`,children:[(0,W.jsxs)(`div`,{className:`workspace-card`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Profil`}),(0,W.jsxs)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:[_.workspace?.profile?.completeness||0,`%`]})]}),(0,W.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,W.jsxs)(`div`,{className:`workspace-card`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Quellen`}),(0,W.jsxs)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:[_.workspace?.sources?.active||0,`/`,_.workspace?.sources?.total||0]})]}),(0,W.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,W.jsxs)(`div`,{className:`workspace-card`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Stellen`}),(0,W.jsx)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:_.workspace?.jobs?.active||0})]}),(0,W.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,W.jsxs)(`div`,{className:`workspace-card`,children:[(0,W.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Bewerbungen aktiv`}),(0,W.jsx)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:_.workspace?.applications?.active??_.workspace?.applications?.total??0})]})]}),ot||tt?(0,W.jsxs)(`div`,{className:`workspace-actions flex shrink-0 gap-2`,children:[ot?(0,W.jsx)(K,{size:`sm`,onClick:Pe,children:Ge.action_label||`Öffnen`}):null,tt?(0,W.jsx)(K,{size:`sm`,variant:`ghost`,onClick:Ue,children:`Setup fortsetzen`}):null]}):null]})}):null,!_.loading&&_.status?.has_profile&&_.workspace?.sources?.active===0?(0,W.jsx)(`div`,{id:`source-banner`,className:`mx-auto flex w-full max-w-[92rem] flex-wrap items-center gap-3 px-5 pb-2 sm:px-8`,children:(0,W.jsxs)(q,{className:`glass-banner glass-banner-amber flex w-full flex-wrap items-center justify-between gap-3 rounded-xl`,children:[(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-amber`,children:`Keine Jobquellen aktiviert. Ohne Quellen kann keine Suche starten.`}),(0,W.jsxs)(K,{size:`sm`,onClick:()=>Ae(`einstellungen`),children:[(0,W.jsx)(Qe,{size:14}),`Quellen aktivieren`]})]})}):null,(0,W.jsx)(`div`,{className:`flex w-full px-5 pt-4 sm:px-8 overflow-x-auto`,children:(0,W.jsx)(`main`,{className:`min-w-0 flex-1 pb-12`,children:(0,W.jsxs)(Jt,{children:[e===`dashboard`?(0,W.jsx)(gi,{}):null,e===`profil`?(0,W.jsx)(ea,{}):null,e===`stellen`?(0,W.jsx)(Mi,{}):null,e===`bewerbungen`?(0,W.jsx)(Jr,{}):null,e===`kontakte`?(0,W.jsx)(fi,{}):null,e===`dokumente`?(0,W.jsx)(Ha,{}):null,e===`kalender`?(0,W.jsx)(La,{}):null,e===`statistiken`?(0,W.jsx)(gU,{}):null,e===`einstellungen`?(0,W.jsx)(va,{}):null]},e)})}),(0,W.jsx)(`footer`,{className:`mt-auto border-t border-white/5 px-6 py-3 text-xs text-muted/50`,children:(0,W.jsxs)(`div`,{className:`mx-auto flex max-w-6xl flex-wrap items-center justify-center gap-x-4 gap-y-1 text-center`,children:[(0,W.jsxs)(`span`,{children:[`PBP v`,_.status?.version||`?`]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted/30`,children:`·`}),(0,W.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 hover:text-ink`,children:[`Open Source auf GitHub`,(0,W.jsx)(ve,{size:10,"aria-hidden":`true`})]}),(0,W.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted/30`,children:`·`}),(0,W.jsxs)(`a`,{href:`https://paypal.me/birzite`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 hover:text-ink`,"aria-label":`Kaffee spendieren via PayPal`,children:[(0,W.jsx)(pe,{size:12,"aria-hidden":`true`}),`Gefaellt dir PBP? Spendier mir einen Kaffee`]})]})}),(0,W.jsx)(er,{open:x,title:`Neues Profil anlegen`,description:`Lege ein weiteres Profil für einen anderen Karrierepfad oder Zielmarkt an.`,onClose:()=>S(!1),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>S(!1),children:`Abbrechen`}),(0,W.jsx)(K,{type:`submit`,form:`create-profile-form`,children:`Profil anlegen`})]}),children:(0,W.jsxs)(`form`,{id:`create-profile-form`,className:`grid gap-4`,onSubmit:Le,children:[(0,W.jsx)(Y,{label:`Profilname`,children:(0,W.jsx)(X,{autoFocus:!0,value:C.name,onChange:e=>T(t=>({...t,name:e.target.value})),placeholder:`z. B. IT Consulting`,required:!0})}),(0,W.jsx)(Y,{label:`E-Mail`,children:(0,W.jsx)(X,{type:`email`,value:C.email,onChange:e=>T(t=>({...t,email:e.target.value})),placeholder:`optional`})})]})}),(0,W.jsx)(er,{open:E.open,title:`Profil unwiderruflich löschen`,description:`Tippe den Profilnamen exakt ein, damit das Profil inklusive Daten gelöscht werden kann.`,onClose:()=>D({open:!1,profile:null,confirm:``}),footer:(0,W.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,W.jsx)(K,{variant:`ghost`,onClick:()=>D({open:!1,profile:null,confirm:``}),children:`Abbrechen`}),(0,W.jsx)(K,{variant:`danger`,disabled:E.confirm!==E.profile?.name,onClick:Be,children:`Endgültig löschen`})]}),children:(0,W.jsxs)(`div`,{className:`grid gap-4`,children:[(0,W.jsx)(q,{className:`glass-banner glass-banner-danger rounded-[24px] shadow-none`,children:(0,W.jsxs)(`p`,{className:`text-sm text-ink`,children:[`Betroffen sind alle Positionen, Skills, Ausbildungsdaten, Dokumente, Jobs und Bewerbungen des Profils `,(0,W.jsx)(`strong`,{children:E.profile?.name}),` (ID`,` `,E.profile?.id,`).`]})}),(0,W.jsx)(Y,{label:`Profilname bestätigen`,children:(0,W.jsx)(X,{value:E.confirm,onChange:e=>D(t=>({...t,confirm:e.target.value})),placeholder:E.profile?.name||``})})]})}),(0,W.jsx)(`div`,{id:`wizard-overlay`,className:G(`glass-overlay fixed inset-x-0 bottom-0 top-[52px] z-[45] items-center justify-center px-4 py-6`,$e?`show flex`:`hidden`),children:(0,W.jsxs)(`div`,{className:`glass-card-strong w-full max-w-2xl rounded-2xl p-6 animate-rise`,children:[(0,W.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-start justify-between gap-3`,children:[(0,W.jsxs)(`div`,{children:[(0,W.jsx)(`h2`,{className:`font-display text-xl font-semibold text-ink`,children:`Willkommen beim Bewerbungs-Assistenten`}),(0,W.jsx)(`p`,{className:`mt-1 max-w-lg text-[13px] text-muted/60`,children:`Am schnellsten startest du mit dem Kennlerngespräch — Claude fuehrt dich durch alles.`})]}),(0,W.jsx)(K,{variant:`ghost`,size:`sm`,onClick:()=>Ve(!1),children:`Später`})]}),(0,W.jsx)(q,{className:`glass-card-soft rounded-xl border border-sky/20 mb-3`,children:(0,W.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,W.jsx)(`div`,{className:`glass-icon h-10 w-10 shrink-0 bg-sky/15 text-sky rounded-xl flex items-center justify-center`,children:(0,W.jsx)(Ze,{size:18})}),(0,W.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,W.jsx)(`h3`,{className:`text-base font-semibold text-ink`,children:`Kennlerngespräch starten`}),(0,W.jsx)(`p`,{className:`text-[12px] text-muted/50`,children:`Claude fragt dich alles Wichtige und baut dein Profil automatisch auf.`})]}),(0,W.jsxs)(K,{size:`sm`,onClick:()=>{Ve(!0),we(`/ersterfassung`)},children:[(0,W.jsx)(me,{size:14}),`Starten`]})]})}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40 mb-2 uppercase tracking-widest`,children:`Oder manuell:`}),(0,W.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:[(0,W.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`profil`)},children:[(0,W.jsx)(ft,{size:14,className:`text-muted/40 mb-1`}),(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Profil anlegen`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Manuell ausfuellen`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`profil`,{composer:`document`})},children:[(0,W.jsx)(Se,{size:14,className:`text-muted/40 mb-1`}),(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Unterlagen importieren`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`PDF, DOCX hochladen`})]}),(0,W.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`einstellungen`)},children:[(0,W.jsx)(Qe,{size:14,className:`text-muted/40 mb-1`}),(0,W.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Quellen aktivieren`}),(0,W.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Jobportale einrichten`})]})]})]})}),(0,W.jsx)(gr,{open:et,profile:_.profile,workspace:_.workspace,onDismiss:He,onComplete:We}),ee&&(0,W.jsxs)(er,{open:ee,title:`Hilfe & Support`,onClose:()=>F(!1),children:[(0,W.jsx)(`div`,{className:`flex gap-1 mb-4 border-b border-white/8 pb-2 overflow-x-auto`,children:[{id:`hilfe`,label:`Hilfe`},{id:`prompts`,label:`Prompts`},{id:`faq`,label:`FAQ`},{id:`troubleshooting`,label:`Probleme`},{id:`bug`,label:`Bug melden`},{id:`feature`,label:`Feature`},{id:`credits`,label:`Credits`}].map(e=>(0,W.jsx)(`button`,{type:`button`,onClick:()=>te(e.id),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I===e.id?`bg-sky/15 text-sky font-medium`:`text-muted/50 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.id))}),I===`hilfe`&&(0,W.jsxs)(`div`,{className:`space-y-3 text-sm text-muted/60`,children:[e===`dashboard`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Dashboard`}),(0,W.jsx)(`p`,{children:`Das Dashboard zeigt dir eine Übersicht über dein Profil, aktuelle Stellen und Bewerbungen. Die Metriken aktualisieren sich automatisch.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Top-Stellen`}),(0,W.jsx)(`p`,{children:`Zeigt die 3 besten Stellen nach Score, bei denen du dich noch nicht beworben hast. Klicke darauf, um zur Stellenansicht zu springen.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Follow-Ups`}),(0,W.jsx)(`p`,{children:`Fällige Nachfass-Aktionen werden hier hervorgehoben. Klicke auf "Erledigt", um sie abzuhaken.`})]})]}),e===`profil`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Profil aufbauen`}),(0,W.jsx)(`p`,{children:`Dein Profil ist die Basis für alles: Lebenslauf-Export, Fit-Analysen und personalisierte Anschreiben. Je vollständiger, desto besser.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Positionen & Projekte`}),(0,W.jsx)(`p`,{children:`Fülle Positionen mit dem STAR-Format aus (Situation, Task, Action, Result). Das ergibt starke Projektbeschreibungen für den Lebenslauf.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Dokumente`}),(0,W.jsx)(`p`,{children:`Ziehe PDF- oder DOCX-Dateien per Drag & Drop ins Fenster. Der Dokumenttyp wird automatisch erkannt.`})]})]}),e===`stellen`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Stellensuche`}),(0,W.jsx)(`p`,{children:`Aktiviere Jobquellen unter "Einstellungen" und starte eine Suche über Claude mit "/jobsuche_workflow". Die Stellen werden automatisch bewertet.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Score`}),(0,W.jsx)(`p`,{children:`Der Score (0–100) zeigt die Passgenauigkeit: Entfernung, Skills, Gehalt und Keywords fliessen ein. Klicke auf den Score um ihn manuell anzupassen.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Fit-Analyse`}),(0,W.jsx)(`p`,{children:`Klicke auf "Fit-Analyse" für eine detaillierte Auswertung der MUSS-/PLUS-Treffer und Risiken.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Anpinnen & Blacklist`}),(0,W.jsx)(`p`,{children:`Pinne interessante Stellen an, damit sie oben bleiben. Unpassende Firmen oder Keywords kannst du auf die Blacklist setzen.`})]})]}),e===`bewerbungen`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Bewerbungen verwalten`}),(0,W.jsx)(`p`,{children:`Hier trackst du alle laufenden Bewerbungen mit Status, Timeline und Notizen. Ändere den Status per Dropdown.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Timeline & Notizen`}),(0,W.jsx)(`p`,{children:`Klicke auf eine Bewerbung für die vollständige Timeline. Dort kannst du Notizen hinzufügen und Follow-ups planen.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Follow-Ups`}),(0,W.jsx)(`p`,{children:`Plane automatische Erinnerungen (z.B. "In 2 Wochen nachfragen"). Die werden auf dem Dashboard als TODO angezeigt.`})]})]}),e===`statistiken`&&(0,W.jsx)(W.Fragment,{children:(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Statistiken`}),(0,W.jsx)(`p`,{children:`Visualisiert Bewerbungsverlauf, Erfolgsquoten, Antwortzeiten und Gehaltsverteilung. Exportiere Berichte als PDF.`})]})}),e===`einstellungen`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Jobquellen`}),(0,W.jsx)(`p`,{children:`Aktiviere und deaktiviere einzelne Quellen (StepStone, Indeed, LinkedIn, etc.). LinkedIn und XING benötigen Login-Daten.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Suchkriterien`}),(0,W.jsx)(`p`,{children:`Definiere MUSS-Keywords (Pflicht), PLUS-Keywords (Bonus) und AUSSCHLUSS-Keywords. Diese steuern den Score der gefundenen Stellen.`})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Wie starte ich?`}),(0,W.jsx)(`p`,{children:`Öffne Claude Desktop und tippe "Ersterfassung starten". Claude führt dich durch den Aufbau deines Bewerbungsprofils.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Support & Dokumentation`}),(0,W.jsx)(`p`,{children:`Für Fragen und Probleme erstelle ein Issue auf GitHub. Du brauchst dafür einen kostenlosen GitHub-Account.`}),(0,W.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP#readme`,target:`_blank`,rel:`noopener noreferrer`,className:`mt-2 inline-flex items-center gap-1.5 text-sky hover:underline text-[13px]`,children:[(0,W.jsx)(ve,{size:12}),`Vollständige Anleitung auf GitHub`]})]})]}),I===`prompts`&&(0,W.jsx)(WU,{pushToast:B,copyPrompt:we}),I===`faq`&&(0,W.jsxs)(`div`,{className:`space-y-2 text-sm text-muted/60`,children:[[{q:`Was ist MCP?`,a:`MCP (Model Context Protocol) ist die Schnittstelle, ueber die PBP mit Claude Desktop kommuniziert. PBP stellt Tools bereit, die Claude nutzen kann.`},{q:`Wo werden meine Daten gespeichert?`,a:`Alle Daten liegen lokal auf deinem Geraet. Unter Windows in %LOCALAPPDATA%/bewerbungs-assistent, auf macOS in ~/.bewerbungs-assistent. Es werden keine Daten an Server gesendet.`},{q:`Muss Claude Desktop laufen?`,a:`Fuer die KI-Funktionen ja. Das Dashboard funktioniert aber auch ohne Claude Desktop — du kannst Profil, Stellen und Bewerbungen jederzeit verwalten.`},{q:`Wie starte ich das Kennlerngespräch?`,a:`Oeffne Claude Desktop und tippe /ersterfassung ein. Claude fuehrt dich dann Schritt fuer Schritt durch den Aufbau deines Profils.`},{q:`Kann ich mehrere Profile haben?`,a:`Ja. Klicke oben auf deinen Profilnamen und waehle 'Neues Profil'. Du kannst zwischen Profilen wechseln.`},{q:`Wie funktioniert die Jobsuche?`,a:`Aktiviere Quellen unter Einstellungen, dann kopiere /jobsuche_workflow in Claude Desktop. Claude durchsucht die aktivierten Portale und bewertet die Treffer.`},{q:`Welche Dokumentformate werden unterstuetzt?`,a:`PDF, DOCX, DOC und TXT. Ziehe Dateien per Drag & Drop ins Dashboard-Fenster oder nutze den Upload-Button.`},{q:`Wie exportiere ich meinen Lebenslauf?`,a:`Gehe zu Profil > Lebenslauf-Export. Es stehen verschiedene Formate zur Verfuegung (PDF, DOCX, TXT).`},{q:`Kostet PBP etwas?`,a:`Nein. PBP ist kostenlos und Open Source (MIT-Lizenz). Du brauchst aber einen Claude Desktop Account (kostenloser Tier reicht).`},{q:`Wie aktualisiere ich PBP?`,a:`Lade die neue Version von GitHub herunter und fuehre den Installer erneut aus. Deine Daten bleiben erhalten.`}].map(({q:e,a:t})=>(0,W.jsxs)(`details`,{className:`glass-card rounded-lg group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer px-3 py-2.5 font-medium text-ink text-[13px] hover:bg-white/[0.03] rounded-lg list-none flex items-center justify-between`,children:[e,(0,W.jsx)(L,{size:14,className:`text-muted/30 transition-transform group-open:rotate-180`})]}),(0,W.jsx)(`p`,{className:`px-3 pb-2.5 text-[12.5px]`,children:t})]},e)),(0,W.jsx)(`div`,{className:`glass-card p-3 mt-2`,children:(0,W.jsxs)(`p`,{className:`text-[12px]`,children:[`Ausfuehrliche FAQ, Anleitungen und Troubleshooting findest du im `,(0,W.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/wiki/FAQ`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`PBP Wiki`}),`.`]})})]}),I===`troubleshooting`&&(0,W.jsxs)(`div`,{className:`space-y-2 text-sm text-muted/60`,children:[[{q:`Claude antwortet nicht auf PBP-Befehle`,a:`1. Pruefe ob das PBP-Terminal/Fenster noch laeuft -2. Oeffne Claude Desktop Einstellungen > Entwickler — PBP muss dort als MCP-Server sichtbar sein -3. Starte Claude Desktop neu (komplett beenden und neu oeffnen) -4. Pruefe den MCP-Status im Dashboard-Header`},{q:`Dashboard startet nicht`,a:`1. Pruefe ob Port 8200 bereits belegt ist (anderes PBP-Fenster?) -2. Starte das Dashboard ueber das Terminal: python start_dashboard.py -3. Pruefe die Logs unter Einstellungen > Logs`},{q:`Jobsuche findet keine Stellen`,a:`1. Pruefe ob Quellen unter Einstellungen aktiviert sind -2. Pruefe ob Suchkriterien (Keywords, Ort, Umkreis) gesetzt sind -3. Manche Quellen brauchen einen Login (LinkedIn, XING) -4. StepStone blockiert automatische Suche — nutze Claude-in-Chrome (siehe unten)`},{q:`StepStone blockiert / Timeout bei Jobsuche`,a:`StepStone erkennt automatische Browser und zeigt CAPTCHAs. Workaround: - -1. Deaktiviere StepStone als automatische Quelle -2. Oeffne StepStone manuell im Chrome-Browser mit Claude-in-Chrome: - https://www.stepstone.de/jobs/plm?radius=100&location=Hamburg -3. Bitte Claude die Stellen via stelle_manuell_anlegen zu uebernehmen -4. Oder nutze den Prompt: 'Suche StepStone via Chrome nach PLM-Stellen' - -Das funktioniert zuverlaessig, weil der echte Browser nicht geblockt wird.`},{q:`Dokumente werden nicht erkannt`,a:`1. Nur PDF, DOCX, DOC und TXT werden unterstuetzt -2. Gescannte PDFs ohne Text-Layer koennen nicht analysiert werden -3. Versuche 'Erneut analysieren' auf dem Dokument`},{q:`MCP-Verbindung zeigt 'Nicht verbunden'`,a:`Die Verbindung wird ueber einen Heartbeat geprueft. Claude Desktop muss PBP mindestens einmal aufgerufen haben. Tippe einen beliebigen PBP-Befehl in Claude Desktop ein.`}].map(({q:e,a:t})=>(0,W.jsxs)(`details`,{className:`glass-card rounded-lg group`,children:[(0,W.jsxs)(`summary`,{className:`cursor-pointer px-3 py-2.5 font-medium text-ink text-[13px] hover:bg-white/[0.03] rounded-lg list-none flex items-center justify-between`,children:[e,(0,W.jsx)(L,{size:14,className:`text-muted/30 transition-transform group-open:rotate-180`})]}),(0,W.jsx)(`pre`,{className:`px-3 pb-2.5 text-[12px] whitespace-pre-wrap font-sans`,children:t})]},e)),(0,W.jsx)(`div`,{className:`glass-card p-3 mt-2`,children:(0,W.jsxs)(`p`,{className:`text-[12px]`,children:[`Mehr Loesungen im `,(0,W.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/wiki/FAQ`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`Wiki`}),`. Problem nicht geloest? Erstelle ein `,(0,W.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=bug`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`GitHub Issue`}),` mit Logs aus Einstellungen.`]})})]}),I===`bug`&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Beschreibe den Fehler moeglichst genau. Ein GitHub-Account wird benoetigt.`}),(0,W.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=bug&title=%5BBug%5D+`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 rounded-lg bg-coral/15 px-4 py-2.5 text-sm font-medium text-coral hover:bg-coral/25 transition-colors`,children:[(0,W.jsx)(ve,{size:16}),`Bug auf GitHub melden`]})]}),I===`feature`&&(0,W.jsxs)(`div`,{className:`space-y-3`,children:[(0,W.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Hast du eine Idee für eine Verbesserung? Erstelle einen Feature-Vorschlag auf GitHub.`}),(0,W.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=enhancement&title=%5BFeature%5D+`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 rounded-lg bg-sky/15 px-4 py-2.5 text-sm font-medium text-sky hover:bg-sky/25 transition-colors`,children:[(0,W.jsx)(ve,{size:16}),`Feature vorschlagen`]})]}),I===`credits`&&(0,W.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`PBP — Persönliches Bewerbungs-Portal`}),(0,W.jsxs)(`p`,{className:`text-muted/60`,children:[`Version: v`,_.status?.version||`0.32.5`]}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Lizenz: MIT`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Team`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Markus (MadGapun) — Konzept, Backend, Projektleitung`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Toms (Koala280) — React-Frontend`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Claude — KI-Assistent & Co-Developer`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Codex (TANTE) — Frontend-Recovery & Co-Developer`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 border border-sky/15`,children:[(0,W.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,W.jsx)(pe,{size:16,className:`text-amber`}),(0,W.jsx)(`h3`,{className:`font-medium text-ink`,children:`Kaffee spendieren`})]}),(0,W.jsx)(`p`,{className:`text-muted/60 mb-3`,children:`PBP ist kostenlos und bleibt es. Wenn dir das Tool bei deiner Jobsuche hilft, kannst du mir einen Kaffee spendieren.`}),(0,W.jsxs)(`a`,{href:`https://paypal.me/birzite`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-lg bg-sky/10 text-sky hover:bg-sky/20 transition-colors text-sm`,children:[(0,W.jsx)(Te,{size:14}),`Unterstützen via PayPal`]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3 border border-amber/15`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Rechtliche Hinweise`}),(0,W.jsxs)(`div`,{className:`space-y-1.5 text-muted/60 text-[12px]`,children:[(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Jobsuche / Scraping:`}),` Die Stellensuche greift auf öffentlich zugängliche Daten von Jobportalen zu (z.B. Bundesagentur für Arbeit, LinkedIn, XING, StepStone). Die Nutzung erfolgt auf eigene Verantwortung. Bitte beachte die jeweiligen Nutzungsbedingungen der Plattformen.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Datenspeicherung:`}),` Alle Daten werden ausschließlich lokal auf deinem Gerät gespeichert. Es findet keine Übertragung an Dritte statt.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Keine Gewähr:`}),` PBP übernimmt keine Gewähr für die Vollständigkeit, Richtigkeit oder Aktualität der gesammelten Stellenangebote.`]}),(0,W.jsxs)(`p`,{children:[(0,W.jsx)(`strong`,{children:`Verantwortung:`}),` Du bist selbst dafür verantwortlich, dass deine Nutzung der Jobsuche-Funktion im Einklang mit den Nutzungsbedingungen der jeweiligen Plattformen steht.`]})]})]}),(0,W.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 text-sky hover:underline`,children:[(0,W.jsx)(ve,{size:14}),`github.com/MadGapun/PBP`]})]})]}),ae&&(0,W.jsx)(er,{open:ae,title:`Lokale KI`,onClose:()=>oe(!1),children:(0,W.jsxs)(`div`,{className:`space-y-4 text-sm text-muted/70`,children:[(0,W.jsxs)(`div`,{className:`glass-card p-3 border-coral/20 border`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:ie.ui_state===`active`?`Lokale KI ist aktiv`:ie.ui_state===`paused`?`Lokale KI ist pausiert`:ie.ui_state===`no_model`?`Ollama erkannt — kein Modell`:ie.ui_state===`off`?`Lokale KI ist deaktiviert`:`Lokale KI ist nicht installiert`}),(0,W.jsx)(`p`,{children:ie.ui_state===`not_installed`?`Eine lokale KI auf deinem Rechner uebernimmt Routine-Aufgaben fuer PBP — z.B. Dokumente klassifizieren, Skills extrahieren, Stellen vorsortieren.`:`Modell: ${ie.selected_model||`noch nicht gewaehlt`}`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Vorteile`}),(0,W.jsxs)(`ul`,{className:`space-y-1 text-[13px]`,children:[(0,W.jsxs)(`li`,{children:[`✅ Spart Claude-Tokens `,(0,W.jsx)(`strong`,{children:`UND`}),` ist kostenlos`]}),(0,W.jsx)(`li`,{children:`✅ Funktioniert auch ohne Internet`}),(0,W.jsx)(`li`,{children:`✅ Daten verlassen das Geraet nie (Datenschutz)`}),(0,W.jsx)(`li`,{children:`✅ Schneller bei Standard-Aufgaben`})]})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Was du wissen solltest`}),(0,W.jsxs)(`ul`,{className:`space-y-1 text-[13px]`,children:[(0,W.jsx)(`li`,{children:`⚠️ Einmalig 4–5 GB Modell herunterladen`}),(0,W.jsx)(`li`,{children:`⚠️ Braucht 8–16 GB freien RAM beim Arbeiten`}),(0,W.jsx)(`li`,{children:`⚠️ Kreatives (Anschreiben) bleibt bei Claude`})]})]}),(0,W.jsx)(`div`,{className:`glass-card p-3 border-sky/20 border`,children:(0,W.jsxs)(`p`,{className:`text-[12px]`,children:[(0,W.jsx)(`strong`,{className:`text-sky`,children:`Einrichten:`}),` In `,(0,W.jsx)(`em`,{children:`Einstellungen → Lokale KI`}),`findest du den Setup-Wizard mit empfohlenen Modellen (Klein/Mittel/Gross). Modell-Download laeuft synchron — kann je nach Groesse 1–10 Minuten dauern.`]})}),(0,W.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,W.jsx)(`button`,{type:`button`,onClick:()=>oe(!1),className:`px-3 py-1.5 rounded-lg text-sm text-muted/60 hover:text-ink hover:bg-white/[0.04]`,children:`Spaeter`}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{oe(!1),Ae(`einstellungen`,{tab:`ai`})},className:`px-3 py-1.5 rounded-lg text-sm bg-sky/15 text-sky hover:bg-sky/25 inline-flex items-center gap-1.5 cursor-pointer`,children:`Mehr erfahren`})]})]})}),ne&&(0,W.jsx)(er,{open:ne,title:`MCP-Verbindung`,onClose:()=>re(!1),children:(()=>{let e=_.status?.mcp_connection?.status||`disconnected`;return(0,W.jsxs)(`div`,{className:`space-y-4 text-sm`,children:[e===`unknown`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3 border-amber/20 border`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-amber mb-1`,children:`Verbindung wird geprüft`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Der MCP-Server hat sich kürzlich gemeldet, aber die Verbindung ist nicht bestätigt. Das kann passieren wenn Claude Desktop gerade neu gestartet wurde.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Verbindung testen`}),(0,W.jsxs)(`p`,{className:`text-muted/60 mb-3`,children:[`Öffne Claude Desktop und sende eine kurze Nachricht wie`,(0,W.jsx)(`span`,{className:`mx-1 px-1.5 py-0.5 bg-white/[0.06] rounded text-ink font-mono text-xs`,children:`Zeige meinen Profil-Status`}),`um die Verbindung zu prüfen.`]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{window.open(`claude://`,`_self`),re(!1)},className:`w-full py-2 px-4 rounded-lg bg-amber/15 text-amber font-medium hover:bg-amber/25 transition-colors`,children:`Claude Desktop öffnen & testen`})]})]}),e===`disconnected`&&(0,W.jsxs)(W.Fragment,{children:[(0,W.jsxs)(`div`,{className:`glass-card p-3 border-coral/20 border`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-coral mb-1`,children:`Nicht verbunden`}),(0,W.jsx)(`p`,{className:`text-muted/60`,children:`Der MCP-Server antwortet nicht. Das bedeutet, dass Claude Desktop nicht läuft oder der Bewerbungs-Assistent nicht konfiguriert ist.`})]}),(0,W.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,W.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Fehlerbehebung`}),(0,W.jsxs)(`ol`,{className:`space-y-2 text-muted/60 list-decimal list-inside`,children:[(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Claude Desktop öffnen`}),(0,W.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`Stelle sicher, dass Claude Desktop läuft (nicht nur der Browser).`})]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`MCP-Server prüfen`}),(0,W.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`In Claude Desktop: Einstellungen → Developer → „bewerbungs-assistent“ sollte als MCP-Server gelistet sein.`})]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Server-Status testen`}),(0,W.jsxs)(`span`,{className:`block ml-5 mt-0.5`,children:[`Prüfe ob `,(0,W.jsx)(`a`,{href:`http://localhost:8200`,target:`_blank`,rel:`noreferrer`,className:`text-sky underline`,children:`localhost:8200`}),` erreichbar ist.`]})]}),(0,W.jsxs)(`li`,{children:[(0,W.jsx)(`strong`,{className:`text-ink`,children:`Claude Desktop neu starten`}),(0,W.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`Beende Claude Desktop vollständig und starte es neu.`})]})]})]}),(0,W.jsx)(`button`,{type:`button`,onClick:()=>{window.open(`claude://`,`_self`),re(!1)},className:`w-full py-2 px-4 rounded-lg bg-coral/15 text-coral font-medium hover:bg-coral/25 transition-colors`,children:`Claude Desktop öffnen`})]})]})})()}),(0,W.jsx)(dn,{hasActiveProfile:!!Je,profileName:_.profile?.name,refreshChrome:Ee,pushToast:B})]})]})})}(0,bt.createRoot)(document.getElementById(`root`)).render((0,W.jsx)(w.StrictMode,{children:(0,W.jsx)(GU,{})})); \ No newline at end of file diff --git a/src/bewerbungs_assistent/static/dashboard/assets/index-Cj-fxB15.js b/src/bewerbungs_assistent/static/dashboard/assets/index-Cj-fxB15.js new file mode 100644 index 0000000..4de79d5 --- /dev/null +++ b/src/bewerbungs_assistent/static/dashboard/assets/index-Cj-fxB15.js @@ -0,0 +1,63 @@ +var e=Object.create,t=Object.defineProperty,n=Object.getOwnPropertyDescriptor,r=Object.getOwnPropertyNames,i=Object.getPrototypeOf,a=Object.prototype.hasOwnProperty,o=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports),s=(e,n)=>{let r={};for(var i in e)t(r,i,{get:e[i],enumerable:!0});return n||t(r,Symbol.toStringTag,{value:`Module`}),r},c=(e,i,o,s)=>{if(i&&typeof i==`object`||typeof i==`function`)for(var c=r(i),l=0,u=c.length,d;li[e]).bind(null,d),enumerable:!(s=n(i,d))||s.enumerable});return e},l=(n,r,a)=>(a=n==null?{}:e(i(n)),c(r||!n||!n.__esModule?t(a,`default`,{value:n,enumerable:!0}):a,n));(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),e.crossOrigin===`use-credentials`?t.credentials=`include`:e.crossOrigin===`anonymous`?t.credentials=`omit`:t.credentials=`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var u=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.memo`),d=Symbol.for(`react.lazy`),f=Symbol.for(`react.activity`),p=Symbol.iterator;function m(e){return typeof e!=`object`||!e?null:(e=p&&e[p]||e[`@@iterator`],typeof e==`function`?e:null)}var h={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},g=Object.assign,_={};function v(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if(typeof e!=`object`&&typeof e!=`function`&&e!=null)throw Error(`takes an object of state variables to update or a function which returns an object of state variables.`);this.updater.enqueueSetState(this,e,t,`setState`)},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,`forceUpdate`)};function y(){}y.prototype=v.prototype;function b(e,t,n){this.props=e,this.context=t,this.refs=_,this.updater=n||h}var x=b.prototype=new y;x.constructor=b,g(x,v.prototype),x.isPureReactComponent=!0;var S=Array.isArray;function C(){}var w={H:null,A:null,T:null,S:null},T=Object.prototype.hasOwnProperty;function E(e,n,r){var i=r.ref;return{$$typeof:t,type:e,key:n,ref:i===void 0?null:i,props:r}}function D(e,t){return E(e.type,t,e.props)}function O(e){return typeof e==`object`&&!!e&&e.$$typeof===t}function k(e){var t={"=":`=0`,":":`=2`};return`$`+e.replace(/[=:]/g,function(e){return t[e]})}var A=/\/+/g;function j(e,t){return typeof e==`object`&&e&&e.key!=null?k(``+e.key):t.toString(36)}function M(e){switch(e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason;default:switch(typeof e.status==`string`?e.then(C,C):(e.status=`pending`,e.then(function(t){e.status===`pending`&&(e.status=`fulfilled`,e.value=t)},function(t){e.status===`pending`&&(e.status=`rejected`,e.reason=t)})),e.status){case`fulfilled`:return e.value;case`rejected`:throw e.reason}}throw e}function N(e,r,i,a,o){var s=typeof e;(s===`undefined`||s===`boolean`)&&(e=null);var c=!1;if(e===null)c=!0;else switch(s){case`bigint`:case`string`:case`number`:c=!0;break;case`object`:switch(e.$$typeof){case t:case n:c=!0;break;case d:return c=e._init,N(c(e._payload),r,i,a,o)}}if(c)return o=o(e),c=a===``?`.`+j(e,0):a,S(o)?(i=``,c!=null&&(i=c.replace(A,`$&/`)+`/`),N(o,r,i,``,function(e){return e})):o!=null&&(O(o)&&(o=D(o,i+(o.key==null||e&&e.key===o.key?``:(``+o.key).replace(A,`$&/`)+`/`)+c)),r.push(o)),1;c=0;var l=a===``?`.`:a+`:`;if(S(e))for(var u=0;u{t.exports=u()})),f=o((e=>{function t(e,t){var n=e.length;e.push(t);a:for(;0>>1,a=e[r];if(0>>1;ri(c,n))li(u,c)?(e[r]=u,e[l]=n,r=l):(e[r]=c,e[s]=n,r=s);else if(li(u,n))e[r]=u,e[l]=n,r=l;else break a}}return t}function i(e,t){var n=e.sortIndex-t.sortIndex;return n===0?e.id-t.id:n}if(e.unstable_now=void 0,typeof performance==`object`&&typeof performance.now==`function`){var a=performance;e.unstable_now=function(){return a.now()}}else{var o=Date,s=o.now();e.unstable_now=function(){return o.now()-s}}var c=[],l=[],u=1,d=null,f=3,p=!1,m=!1,h=!1,g=!1,_=typeof setTimeout==`function`?setTimeout:null,v=typeof clearTimeout==`function`?clearTimeout:null,y=typeof setImmediate<`u`?setImmediate:null;function b(e){for(var i=n(l);i!==null;){if(i.callback===null)r(l);else if(i.startTime<=e)r(l),i.sortIndex=i.expirationTime,t(c,i);else break;i=n(l)}}function x(e){if(h=!1,b(e),!m)if(n(c)!==null)m=!0,S||(S=!0,O());else{var t=n(l);t!==null&&j(x,t.startTime-e)}}var S=!1,C=-1,w=5,T=-1;function E(){return g?!0:!(e.unstable_now()-Tt&&E());){var o=d.callback;if(typeof o==`function`){d.callback=null,f=d.priorityLevel;var s=o(d.expirationTime<=t);if(t=e.unstable_now(),typeof s==`function`){d.callback=s,b(t),i=!0;break b}d===n(c)&&r(c),b(t)}else r(c);d=n(c)}if(d!==null)i=!0;else{var u=n(l);u!==null&&j(x,u.startTime-t),i=!1}}break a}finally{d=null,f=a,p=!1}i=void 0}}finally{i?O():S=!1}}}var O;if(typeof y==`function`)O=function(){y(D)};else if(typeof MessageChannel<`u`){var k=new MessageChannel,A=k.port2;k.port1.onmessage=D,O=function(){A.postMessage(null)}}else O=function(){_(D,0)};function j(t,n){C=_(function(){t(e.unstable_now())},n)}e.unstable_IdlePriority=5,e.unstable_ImmediatePriority=1,e.unstable_LowPriority=4,e.unstable_NormalPriority=3,e.unstable_Profiling=null,e.unstable_UserBlockingPriority=2,e.unstable_cancelCallback=function(e){e.callback=null},e.unstable_forceFrameRate=function(e){0>e||125o?(r.sortIndex=a,t(l,r),n(c)===null&&r===n(l)&&(h?(v(C),C=-1):h=!0,j(x,a-o))):(r.sortIndex=s,t(c,r),m||p||(m=!0,S||(S=!0,O()))),r},e.unstable_shouldYield=E,e.unstable_wrapCallback=function(e){var t=f;return function(){var n=f;f=t;try{return e.apply(this,arguments)}finally{f=n}}}})),p=o(((e,t)=>{t.exports=f()})),m=o((e=>{var t=d();function n(e){var t=`https://react.dev/errors/`+e;if(1{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=m()})),g=o((e=>{var t=p(),n=d(),r=h();function i(e){var t=`https://react.dev/errors/`+e;if(1re||(e.current=ne[re],ne[re]=null,re--)}function R(e,t){re++,ne[re]=e.current,e.current=t}var ae=ie(null),oe=ie(null),z=ie(null),se=ie(null);function ce(e,t){switch(R(z,t),R(oe,e),R(ae,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?Hd(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)t=Hd(t),e=Ud(t,e);else switch(e){case`svg`:e=1;break;case`math`:e=2;break;default:e=0}}L(ae),R(ae,e)}function le(){L(ae),L(oe),L(z)}function ue(e){e.memoizedState!==null&&R(se,e);var t=ae.current,n=Ud(t,e.type);t!==n&&(R(oe,e),R(ae,n))}function de(e){oe.current===e&&(L(ae),L(oe)),se.current===e&&(L(se),$f._currentValue=te)}var fe,pe;function me(e){if(fe===void 0)try{throw Error()}catch(e){var t=e.stack.trim().match(/\n( *(at )?)/);fe=t&&t[1]||``,pe=-1)`:-1i||c[r]!==l[i]){var u=` +`+c[r].replace(` at new `,` at `);return e.displayName&&u.includes(``)&&(u=u.replace(``,e.displayName)),u}while(1<=r&&0<=i);break}}}finally{he=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:``)?me(n):``}function _e(e,t){switch(e.tag){case 26:case 27:case 5:return me(e.type);case 16:return me(`Lazy`);case 13:return e.child!==t&&t!==null?me(`Suspense Fallback`):me(`Suspense`);case 19:return me(`SuspenseList`);case 0:case 15:return ge(e.type,!1);case 11:return ge(e.type.render,!1);case 1:return ge(e.type,!0);case 31:return me(`Activity`);default:return``}}function ve(e){try{var t=``,n=null;do t+=_e(e,n),n=e,e=e.return;while(e);return t}catch(e){return` +Error generating stack: `+e.message+` +`+e.stack}}var ye=Object.prototype.hasOwnProperty,be=t.unstable_scheduleCallback,xe=t.unstable_cancelCallback,Se=t.unstable_shouldYield,Ce=t.unstable_requestPaint,B=t.unstable_now,we=t.unstable_getCurrentPriorityLevel,Te=t.unstable_ImmediatePriority,Ee=t.unstable_UserBlockingPriority,De=t.unstable_NormalPriority,Oe=t.unstable_LowPriority,ke=t.unstable_IdlePriority,Ae=t.log,je=t.unstable_setDisableYieldValue,Me=null,Ne=null;function Pe(e){if(typeof Ae==`function`&&je(e),Ne&&typeof Ne.setStrictMode==`function`)try{Ne.setStrictMode(Me,e)}catch{}}var Fe=Math.clz32?Math.clz32:Re,Ie=Math.log,Le=Math.LN2;function Re(e){return e>>>=0,e===0?32:31-(Ie(e)/Le|0)|0}var ze=256,Be=262144,Ve=4194304;function He(e){var t=e&42;if(t!==0)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:return e&261888;case 262144:case 524288:case 1048576:case 2097152:return e&3932160;case 4194304:case 8388608:case 16777216:case 33554432:return e&62914560;case 67108864:return 67108864;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 0;default:return e}}function Ue(e,t,n){var r=e.pendingLanes;if(r===0)return 0;var i=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var s=r&134217727;return s===0?(s=r&~a,s===0?o===0?n||(n=r&~e,n!==0&&(i=He(n))):i=He(o):i=He(s)):(r=s&~a,r===0?(o&=s,o===0?n||(n=s&~e,n!==0&&(i=He(n))):i=He(o)):i=He(r)),i===0?0:t!==0&&t!==i&&(t&a)===0&&(a=i&-i,n=t&-t,a>=n||a===32&&n&4194048)?t:i}function We(e,t){return(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)===0}function Ge(e,t){switch(e){case 1:case 2:case 4:case 8:case 64:return t+250;case 16:case 32:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return t+5e3;case 4194304:case 8388608:case 16777216:case 33554432:return-1;case 67108864:case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}function Ke(){var e=Ve;return Ve<<=1,!(Ve&62914560)&&(Ve=4194304),e}function qe(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function Je(e,t){e.pendingLanes|=t,t!==268435456&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function Ye(e,t,n,r,i,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var s=e.entanglements,c=e.expirationTimes,l=e.hiddenUpdates;for(n=o&~n;0`u`||window.document===void 0||window.document.createElement===void 0),an=!1;if(rn)try{var on={};Object.defineProperty(on,`passive`,{get:function(){an=!0}}),window.addEventListener(`test`,on,on),window.removeEventListener(`test`,on,on)}catch{an=!1}var sn=null,cn=null,ln=null;function un(){if(ln)return ln;var e,t=cn,n=t.length,r,i=`value`in sn?sn.value:sn.textContent,a=i.length;for(e=0;e=Vn),Wn=` `,G=!1;function Gn(e,t){switch(e){case`keyup`:return zn.indexOf(t.keyCode)!==-1;case`keydown`:return t.keyCode!==229;case`keypress`:case`mousedown`:case`focusout`:return!0;default:return!1}}function K(e){return e=e.detail,typeof e==`object`&&`data`in e?e.data:null}var Kn=!1;function qn(e,t){switch(e){case`compositionend`:return K(t);case`keypress`:return t.which===32?(G=!0,Wn):null;case`textInput`:return e=t.data,e===Wn&&G?null:e;default:return null}}function Jn(e,t){if(Kn)return e===`compositionend`||!Bn&&Gn(e,t)?(e=un(),ln=cn=sn=null,Kn=!1,e):null;switch(e){case`paste`:return null;case`keypress`:if(!(t.ctrlKey||t.altKey||t.metaKey)||t.ctrlKey&&t.altKey){if(t.char&&1=t)return{node:n,offset:t-e};e=r}a:{for(;n;){if(n.nextSibling){n=n.nextSibling;break a}n=n.parentNode}n=void 0}n=pr(n)}}function hr(e,t){return e&&t?e===t?!0:e&&e.nodeType===3?!1:t&&t.nodeType===3?hr(e,t.parentNode):`contains`in e?e.contains(t):e.compareDocumentPosition?!!(e.compareDocumentPosition(t)&16):!1:!1}function gr(e){e=e!=null&&e.ownerDocument!=null&&e.ownerDocument.defaultView!=null?e.ownerDocument.defaultView:window;for(var t=Mt(e.document);t instanceof e.HTMLIFrameElement;){try{var n=typeof t.contentWindow.location.href==`string`}catch{n=!1}if(n)e=t.contentWindow;else break;t=Mt(e.document)}return t}function _r(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&(t===`input`&&(e.type===`text`||e.type===`search`||e.type===`tel`||e.type===`url`||e.type===`password`)||t===`textarea`||e.contentEditable===`true`)}var vr=rn&&`documentMode`in document&&11>=document.documentMode,yr=null,br=null,xr=null,Sr=!1;function Cr(e,t,n){var r=n.window===n?n.document:n.nodeType===9?n:n.ownerDocument;Sr||yr==null||yr!==Mt(r)||(r=yr,`selectionStart`in r&&_r(r)?r={start:r.selectionStart,end:r.selectionEnd}:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection(),r={anchorNode:r.anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset}),xr&&fr(xr,r)||(xr=r,r=Ed(br,`onSelect`),0>=o,i-=o,hi=1<<32-Fe(t)+i|n<h?(g=d,d=null):g=d.sibling;var _=p(i,d,s[h],c);if(_===null){d===null&&(d=g);break}e&&d&&_.alternate===null&&t(i,d),a=o(_,a,h),u===null?l=_:u.sibling=_,u=_,d=g}if(h===s.length)return n(i,d),wi&&_i(i,h),l;if(d===null){for(;hg?(_=h,h=null):_=h.sibling;var y=p(a,h,v.value,l);if(y===null){h===null&&(h=_);break}e&&h&&y.alternate===null&&t(a,h),s=o(y,s,g),d===null?u=y:d.sibling=y,d=y,h=_}if(v.done)return n(a,h),wi&&_i(a,g),u;if(h===null){for(;!v.done;g++,v=c.next())v=f(a,v.value,l),v!==null&&(s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return wi&&_i(a,g),u}for(h=r(h);!v.done;g++,v=c.next())v=m(h,a,g,v.value,l),v!==null&&(e&&v.alternate!==null&&h.delete(v.key===null?g:v.key),s=o(v,s,g),d===null?u=v:d.sibling=v,d=v);return e&&h.forEach(function(e){return t(a,e)}),wi&&_i(a,g),u}function b(e,r,o,c){if(typeof o==`object`&&o&&o.type===y&&o.key===null&&(o=o.props.children),typeof o==`object`&&o){switch(o.$$typeof){case _:a:{for(var l=o.key;r!==null;){if(r.key===l){if(l=o.type,l===y){if(r.tag===7){n(e,r.sibling),c=a(r,o.props.children),c.return=e,e=c;break a}}else if(r.elementType===l||typeof l==`object`&&l&&l.$$typeof===O&&va(l)===r.type){n(e,r.sibling),c=a(r,o.props),Ta(c,o),c.return=e,e=c;break a}n(e,r);break}else t(e,r);r=r.sibling}o.type===y?(c=ni(o.props.children,e.mode,c,o.key),c.return=e,e=c):(c=ti(o.type,o.key,o.props,null,e.mode,c),Ta(c,o),c.return=e,e=c)}return s(e);case v:a:{for(l=o.key;r!==null;){if(r.key===l)if(r.tag===4&&r.stateNode.containerInfo===o.containerInfo&&r.stateNode.implementation===o.implementation){n(e,r.sibling),c=a(r,o.children||[]),c.return=e,e=c;break a}else{n(e,r);break}else t(e,r);r=r.sibling}c=ai(o,e.mode,c),c.return=e,e=c}return s(e);case O:return o=va(o),b(e,r,o,c)}if(ee(o))return h(e,r,o,c);if(M(o)){if(l=M(o),typeof l!=`function`)throw Error(i(150));return o=l.call(o),g(e,r,o,c)}if(typeof o.then==`function`)return b(e,r,wa(o),c);if(o.$$typeof===C)return b(e,r,Ki(e,o),c);Ea(e,o)}return typeof o==`string`&&o!==``||typeof o==`number`||typeof o==`bigint`?(o=``+o,r!==null&&r.tag===6?(n(e,r.sibling),c=a(r,o),c.return=e,e=c):(n(e,r),c=ri(o,e.mode,c),c.return=e,e=c),s(e)):n(e,r)}return function(e,t,n,r){try{Ca=0;var i=b(e,t,n,r);return Sa=null,i}catch(t){if(t===fa||t===ma)throw t;var a=Zr(29,t,null,e.mode);return a.lanes=r,a.return=e,a}}}var Oa=Da(!0),ka=Da(!1),Aa=!1;function ja(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function Ma(e,t){e=e.updateQueue,t.updateQueue===e&&(t.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function Na(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function Pa(e,t,n){var r=e.updateQueue;if(r===null)return null;if(r=r.shared,Z&2){var i=r.pending;return i===null?t.next=t:(t.next=i.next,i.next=t),r.pending=t,t=Jr(e),qr(e,null,n),t}return Wr(e,r,t,n),Jr(e)}function Fa(e,t,n){if(t=t.updateQueue,t!==null&&(t=t.shared,n&4194048)){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ze(e,n)}}function Ia(e,t){var n=e.updateQueue,r=e.alternate;if(r!==null&&(r=r.updateQueue,n===r)){var i=null,a=null;if(n=n.firstBaseUpdate,n!==null){do{var o={lane:n.lane,tag:n.tag,payload:n.payload,callback:null,next:null};a===null?i=a=o:a=a.next=o,n=n.next}while(n!==null);a===null?i=a=t:a=a.next=t}else i=a=t;n={baseState:r.baseState,firstBaseUpdate:i,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=n;return}e=n.lastBaseUpdate,e===null?n.firstBaseUpdate=t:e.next=t,n.lastBaseUpdate=t}var La=!1;function Ra(){if(La){var e=ra;if(e!==null)throw e}}function za(e,t,n,r){La=!1;var i=e.updateQueue;Aa=!1;var a=i.firstBaseUpdate,o=i.lastBaseUpdate,s=i.shared.pending;if(s!==null){i.shared.pending=null;var c=s,l=c.next;c.next=null,o===null?a=l:o.next=l,o=c;var u=e.alternate;u!==null&&(u=u.updateQueue,s=u.lastBaseUpdate,s!==o&&(s===null?u.firstBaseUpdate=l:s.next=l,u.lastBaseUpdate=c))}if(a!==null){var d=i.baseState;o=0,u=l=c=null,s=a;do{var f=s.lane&-536870913,p=f!==s.lane;if(p?(Il&f)===f:(r&f)===f){f!==0&&f===na&&(La=!0),u!==null&&(u=u.next={lane:0,tag:s.tag,payload:s.payload,callback:null,next:null});a:{var h=e,g=s;f=t;var _=n;switch(g.tag){case 1:if(h=g.payload,typeof h==`function`){d=h.call(_,d,f);break a}d=h;break a;case 3:h.flags=h.flags&-65537|128;case 0:if(h=g.payload,f=typeof h==`function`?h.call(_,d,f):h,f==null)break a;d=m({},d,f);break a;case 2:Aa=!0}}f=s.callback,f!==null&&(e.flags|=64,p&&(e.flags|=8192),p=i.callbacks,p===null?i.callbacks=[f]:p.push(f))}else p={lane:f,tag:s.tag,payload:s.payload,callback:s.callback,next:null},u===null?(l=u=p,c=d):u=u.next=p,o|=f;if(s=s.next,s===null){if(s=i.shared.pending,s===null)break;p=s,s=p.next,p.next=null,i.lastBaseUpdate=p,i.shared.pending=null}}while(1);u===null&&(c=d),i.baseState=c,i.firstBaseUpdate=l,i.lastBaseUpdate=u,a===null&&(i.shared.lanes=0),Wl|=o,e.lanes=o,e.memoizedState=d}}function Ba(e,t){if(typeof e!=`function`)throw Error(i(191,e));e.call(t)}function Va(e,t){var n=e.callbacks;if(n!==null)for(e.callbacks=null,e=0;ea?a:8;var o=F.T,s={};F.T=s,Os(e,!1,t,n);try{var c=i(),l=F.S;l!==null&&l(s,c),typeof c==`object`&&c&&typeof c.then==`function`?Ds(e,t,oa(c,r),du(e)):Ds(e,t,r,du(e))}catch(n){Ds(e,t,{then:function(){},status:`rejected`,reason:n},du())}finally{I.p=a,o!==null&&s.types!==null&&(o.types=s.types),F.T=o}}function _s(){}function vs(e,t,n,r){if(e.tag!==5)throw Error(i(476));var a=ys(e).queue;gs(e,a,t,te,n===null?_s:function(){return bs(e),n(r)})}function ys(e){var t=e.memoizedState;if(t!==null)return t;t={memoizedState:te,baseState:te,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ko,lastRenderedState:te},next:null};var n={};return t.next={memoizedState:n,baseState:n,baseQueue:null,queue:{pending:null,lanes:0,dispatch:null,lastRenderedReducer:ko,lastRenderedState:n},next:null},e.memoizedState=t,e=e.alternate,e!==null&&(e.memoizedState=t),t}function bs(e){var t=ys(e);t.next===null&&(t=e.alternate.memoizedState),Ds(e,t.next.queue,{},du())}function xs(){return Gi($f)}function Ss(){return wo().memoizedState}function Cs(){return wo().memoizedState}function ws(e){for(var t=e.return;t!==null;){switch(t.tag){case 24:case 3:var n=du();e=Na(n);var r=Pa(t,e,n);r!==null&&(pu(r,t,n),Fa(r,t,n)),t={cache:Qi()},e.payload=t;return}t=t.return}}function Ts(e,t,n){var r=du();n={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null},ks(e)?As(t,n):(n=Gr(e,t,n,r),n!==null&&(pu(n,e,r),js(n,t,r)))}function Es(e,t,n){Ds(e,t,n,du())}function Ds(e,t,n,r){var i={lane:r,revertLane:0,gesture:null,action:n,hasEagerState:!1,eagerState:null,next:null};if(ks(e))As(t,i);else{var a=e.alternate;if(e.lanes===0&&(a===null||a.lanes===0)&&(a=t.lastRenderedReducer,a!==null))try{var o=t.lastRenderedState,s=a(o,n);if(i.hasEagerState=!0,i.eagerState=s,dr(s,o))return Wr(e,t,i,0),Pl===null&&Ur(),!1}catch{}if(n=Gr(e,t,i,r),n!==null)return pu(n,e,r),js(n,t,r),!0}return!1}function Os(e,t,n,r){if(r={lane:2,revertLane:ud(),gesture:null,action:r,hasEagerState:!1,eagerState:null,next:null},ks(e)){if(t)throw Error(i(479))}else t=Gr(e,n,r,2),t!==null&&pu(t,e,2)}function ks(e){var t=e.alternate;return e===ro||t!==null&&t===ro}function As(e,t){so=oo=!0;var n=e.pending;n===null?t.next=t:(t.next=n.next,n.next=t),e.pending=t}function js(e,t,n){if(n&4194048){var r=t.lanes;r&=e.pendingLanes,n|=r,t.lanes=n,Ze(e,n)}}var Ms={readContext:Gi,use:Do,useCallback:mo,useContext:mo,useEffect:mo,useImperativeHandle:mo,useLayoutEffect:mo,useInsertionEffect:mo,useMemo:mo,useReducer:mo,useRef:mo,useState:mo,useDebugValue:mo,useDeferredValue:mo,useTransition:mo,useSyncExternalStore:mo,useId:mo,useHostTransitionStatus:mo,useFormState:mo,useActionState:mo,useOptimistic:mo,useMemoCache:mo,useCacheRefresh:mo};Ms.useEffectEvent=mo;var Ns={readContext:Gi,use:Do,useCallback:function(e,t){return Co().memoizedState=[e,t===void 0?null:t],e},useContext:Gi,useEffect:rs,useImperativeHandle:function(e,t,n){n=n==null?null:n.concat([e]),ts(4194308,4,ls.bind(null,t,e),n)},useLayoutEffect:function(e,t){return ts(4194308,4,e,t)},useInsertionEffect:function(e,t){ts(4,2,e,t)},useMemo:function(e,t){var n=Co();t=t===void 0?null:t;var r=e();if(co){Pe(!0);try{e()}finally{Pe(!1)}}return n.memoizedState=[r,t],r},useReducer:function(e,t,n){var r=Co();if(n!==void 0){var i=n(t);if(co){Pe(!0);try{n(t)}finally{Pe(!1)}}}else i=t;return r.memoizedState=r.baseState=i,e={pending:null,lanes:0,dispatch:null,lastRenderedReducer:e,lastRenderedState:i},r.queue=e,e=e.dispatch=Ts.bind(null,ro,e),[r.memoizedState,e]},useRef:function(e){var t=Co();return e={current:e},t.memoizedState=e},useState:function(e){e=zo(e);var t=e.queue,n=Es.bind(null,ro,t);return t.dispatch=n,[e.memoizedState,n]},useDebugValue:ds,useDeferredValue:function(e,t){return ms(Co(),e,t)},useTransition:function(){var e=zo(!1);return e=gs.bind(null,ro,e.queue,!0,!1),Co().memoizedState=e,[!1,e]},useSyncExternalStore:function(e,t,n){var r=ro,a=Co();if(wi){if(n===void 0)throw Error(i(407));n=n()}else{if(n=t(),Pl===null)throw Error(i(349));Il&127||Po(r,t,n)}a.memoizedState=n;var o={value:n,getSnapshot:t};return a.queue=o,rs(Io.bind(null,r,o,e),[e]),r.flags|=2048,$o(9,{destroy:void 0},Fo.bind(null,r,o,n,t),null),n},useId:function(){var e=Co(),t=Pl.identifierPrefix;if(wi){var n=gi,r=hi;n=(r&~(1<<32-Fe(r)-1)).toString(32)+n,t=`_`+t+`R_`+n,n=lo++,0<\/script>`,o=o.removeChild(o.firstChild);break;case`select`:o=typeof r.is==`string`?s.createElement(`select`,{is:r.is}):s.createElement(`select`),r.multiple?o.multiple=!0:r.size&&(o.size=r.size);break;default:o=typeof r.is==`string`?s.createElement(a,{is:r.is}):s.createElement(a)}}o[it]=t,o[at]=r;a:for(s=t.child;s!==null;){if(s.tag===5||s.tag===6)o.appendChild(s.stateNode);else if(s.tag!==4&&s.tag!==27&&s.child!==null){s.child.return=s,s=s.child;continue}if(s===t)break a;for(;s.sibling===null;){if(s.return===null||s.return===t)break a;s=s.return}s.sibling.return=s.return,s=s.sibling}t.stateNode=o;a:switch(Fd(o,a,r),a){case`button`:case`input`:case`select`:case`textarea`:r=!!r.autoFocus;break a;case`img`:r=!0;break a;default:r=!1}r&&Ec(t)}}return jc(t),Dc(t,t.type,e===null?null:e.memoizedProps,t.pendingProps,n),null;case 6:if(e&&t.stateNode!=null)e.memoizedProps!==r&&Ec(t);else{if(typeof r!=`string`&&t.stateNode===null)throw Error(i(166));if(e=z.current,ji(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,a=Si,a!==null)switch(a.tag){case 27:case 5:r=a.memoizedProps}e[it]=t,e=!!(e.nodeValue===n||r!==null&&!0===r.suppressHydrationWarning||Md(e.nodeValue,n)),e||Oi(t,!0)}else e=Vd(e).createTextNode(r),e[it]=t,t.stateNode=e}return jc(t),null;case 31:if(n=t.memoizedState,e===null||e.memoizedState!==null){if(r=ji(t),n!==null){if(e===null){if(!r)throw Error(i(318));if(e=t.memoizedState,e=e===null?null:e.dehydrated,!e)throw Error(i(557));e[it]=t}else Mi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;jc(t),e=!1}else n=Ni(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=n),e=!0;if(!e)return t.flags&256?($a(t),t):($a(t),null);if(t.flags&128)throw Error(i(558))}return jc(t),null;case 13:if(r=t.memoizedState,e===null||e.memoizedState!==null&&e.memoizedState.dehydrated!==null){if(a=ji(t),r!==null&&r.dehydrated!==null){if(e===null){if(!a)throw Error(i(318));if(a=t.memoizedState,a=a===null?null:a.dehydrated,!a)throw Error(i(317));a[it]=t}else Mi(),!(t.flags&128)&&(t.memoizedState=null),t.flags|=4;jc(t),a=!1}else a=Ni(),e!==null&&e.memoizedState!==null&&(e.memoizedState.hydrationErrors=a),a=!0;if(!a)return t.flags&256?($a(t),t):($a(t),null)}return $a(t),t.flags&128?(t.lanes=n,t):(n=r!==null,e=e!==null&&e.memoizedState!==null,n&&(r=t.child,a=null,r.alternate!==null&&r.alternate.memoizedState!==null&&r.alternate.memoizedState.cachePool!==null&&(a=r.alternate.memoizedState.cachePool.pool),o=null,r.memoizedState!==null&&r.memoizedState.cachePool!==null&&(o=r.memoizedState.cachePool.pool),o!==a&&(r.flags|=2048)),n!==e&&n&&(t.child.flags|=8192),kc(t,t.updateQueue),jc(t),null);case 4:return le(),e===null&&Sd(t.stateNode.containerInfo),jc(t),null;case 10:return zi(t.type),jc(t),null;case 19:if(L(eo),r=t.memoizedState,r===null)return jc(t),null;if(a=(t.flags&128)!=0,o=r.rendering,o===null)if(a)Ac(r,!1);else{if(Ul!==0||e!==null&&e.flags&128)for(e=t.child;e!==null;){if(o=to(e),o!==null){for(t.flags|=128,Ac(r,!1),e=o.updateQueue,t.updateQueue=e,kc(t,e),t.subtreeFlags=0,e=n,n=t.child;n!==null;)ei(n,e),n=n.sibling;return R(eo,eo.current&1|2),wi&&_i(t,r.treeForkCount),t.child}e=e.sibling}r.tail!==null&&B()>$l&&(t.flags|=128,a=!0,Ac(r,!1),t.lanes=4194304)}else{if(!a)if(e=to(o),e!==null){if(t.flags|=128,a=!0,e=e.updateQueue,t.updateQueue=e,kc(t,e),Ac(r,!0),r.tail===null&&r.tailMode===`hidden`&&!o.alternate&&!wi)return jc(t),null}else 2*B()-r.renderingStartTime>$l&&n!==536870912&&(t.flags|=128,a=!0,Ac(r,!1),t.lanes=4194304);r.isBackwards?(o.sibling=t.child,t.child=o):(e=r.last,e===null?t.child=o:e.sibling=o,r.last=o)}return r.tail===null?(jc(t),null):(e=r.tail,r.rendering=e,r.tail=e.sibling,r.renderingStartTime=B(),e.sibling=null,n=eo.current,R(eo,a?n&1|2:n&1),wi&&_i(t,r.treeForkCount),e);case 22:case 23:return $a(t),Ka(),r=t.memoizedState!==null,e===null?r&&(t.flags|=8192):e.memoizedState!==null!==r&&(t.flags|=8192),r?n&536870912&&!(t.flags&128)&&(jc(t),t.subtreeFlags&6&&(t.flags|=8192)):jc(t),n=t.updateQueue,n!==null&&kc(t,n.retryQueue),n=null,e!==null&&e.memoizedState!==null&&e.memoizedState.cachePool!==null&&(n=e.memoizedState.cachePool.pool),r=null,t.memoizedState!==null&&t.memoizedState.cachePool!==null&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),e!==null&&L(ca),null;case 24:return n=null,e!==null&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),zi(Zi),jc(t),null;case 25:return null;case 30:return null}throw Error(i(156,t.tag))}function Nc(e,t){switch(bi(t),t.tag){case 1:return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 3:return zi(Zi),le(),e=t.flags,e&65536&&!(e&128)?(t.flags=e&-65537|128,t):null;case 26:case 27:case 5:return de(t),null;case 31:if(t.memoizedState!==null){if($a(t),t.alternate===null)throw Error(i(340));Mi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 13:if($a(t),e=t.memoizedState,e!==null&&e.dehydrated!==null){if(t.alternate===null)throw Error(i(340));Mi()}return e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 19:return L(eo),null;case 4:return le(),null;case 10:return zi(t.type),null;case 22:case 23:return $a(t),Ka(),e!==null&&L(ca),e=t.flags,e&65536?(t.flags=e&-65537|128,t):null;case 24:return zi(Zi),null;case 25:return null;default:return null}}function Pc(e,t){switch(bi(t),t.tag){case 3:zi(Zi),le();break;case 26:case 27:case 5:de(t);break;case 4:le();break;case 31:t.memoizedState!==null&&$a(t);break;case 13:$a(t);break;case 19:L(eo);break;case 10:zi(t.type);break;case 22:case 23:$a(t),Ka(),e!==null&&L(ca);break;case 24:zi(Zi)}}function Fc(e,t){try{var n=t.updateQueue,r=n===null?null:n.lastEffect;if(r!==null){var i=r.next;n=i;do{if((n.tag&e)===e){r=void 0;var a=n.create,o=n.inst;r=a(),o.destroy=r}n=n.next}while(n!==i)}}catch(e){Uu(t,t.return,e)}}function Ic(e,t,n){try{var r=t.updateQueue,i=r===null?null:r.lastEffect;if(i!==null){var a=i.next;r=a;do{if((r.tag&e)===e){var o=r.inst,s=o.destroy;if(s!==void 0){o.destroy=void 0,i=t;var c=n,l=s;try{l()}catch(e){Uu(i,c,e)}}}r=r.next}while(r!==a)}}catch(e){Uu(t,t.return,e)}}function Lc(e){var t=e.updateQueue;if(t!==null){var n=e.stateNode;try{Va(t,n)}catch(t){Uu(e,e.return,t)}}}function Rc(e,t,n){n.props=Bs(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){Uu(e,t,n)}}function zc(e,t){try{var n=e.ref;if(n!==null){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;case 30:r=e.stateNode;break;default:r=e.stateNode}typeof n==`function`?e.refCleanup=n(r):n.current=r}}catch(n){Uu(e,t,n)}}function Bc(e,t){var n=e.ref,r=e.refCleanup;if(n!==null)if(typeof r==`function`)try{r()}catch(n){Uu(e,t,n)}finally{e.refCleanup=null,e=e.alternate,e!=null&&(e.refCleanup=null)}else if(typeof n==`function`)try{n(null)}catch(n){Uu(e,t,n)}else n.current=null}function Vc(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{a:switch(t){case`button`:case`input`:case`select`:case`textarea`:n.autoFocus&&r.focus();break a;case`img`:n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){Uu(e,e.return,t)}}function Hc(e,t,n){try{var r=e.stateNode;Id(r,e.type,n,t),r[at]=t}catch(t){Uu(e,e.return,t)}}function Uc(e){return e.tag===5||e.tag===3||e.tag===26||e.tag===27&&Qd(e.type)||e.tag===4}function Wc(e){a:for(;;){for(;e.sibling===null;){if(e.return===null||Uc(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;e.tag!==5&&e.tag!==6&&e.tag!==18;){if(e.tag===27&&Qd(e.type)||e.flags&2||e.child===null||e.tag===4)continue a;e.child.return=e,e=e.child}if(!(e.flags&2))return e.stateNode}}function Gc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?(n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n).insertBefore(e,t):(t=n.nodeType===9?n.body:n.nodeName===`HTML`?n.ownerDocument.body:n,t.appendChild(e),n=n._reactRootContainer,n!=null||t.onclick!==null||(t.onclick=Yt));else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode,t=null),e=e.child,e!==null))for(Gc(e,t,n),e=e.sibling;e!==null;)Gc(e,t,n),e=e.sibling}function Kc(e,t,n){var r=e.tag;if(r===5||r===6)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(r!==4&&(r===27&&Qd(e.type)&&(n=e.stateNode),e=e.child,e!==null))for(Kc(e,t,n),e=e.sibling;e!==null;)Kc(e,t,n),e=e.sibling}function qc(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,i=t.attributes;i.length;)t.removeAttributeNode(i[0]);Fd(t,r,n),t[it]=e,t[at]=n}catch(t){Uu(e,e.return,t)}}var Jc=!1,Yc=!1,Xc=!1,Zc=typeof WeakSet==`function`?WeakSet:Set,Qc=null;function $c(e,t){if(e=e.containerInfo,zd=cp,e=gr(e),_r(e)){if(`selectionStart`in e)var n={start:e.selectionStart,end:e.selectionEnd};else a:{n=(n=e.ownerDocument)&&n.defaultView||window;var r=n.getSelection&&n.getSelection();if(r&&r.rangeCount!==0){n=r.anchorNode;var a=r.anchorOffset,o=r.focusNode;r=r.focusOffset;try{n.nodeType,o.nodeType}catch{n=null;break a}var s=0,c=-1,l=-1,u=0,d=0,f=e,p=null;b:for(;;){for(var m;f!==n||a!==0&&f.nodeType!==3||(c=s+a),f!==o||r!==0&&f.nodeType!==3||(l=s+r),f.nodeType===3&&(s+=f.nodeValue.length),(m=f.firstChild)!==null;)p=f,f=m;for(;;){if(f===e)break b;if(p===n&&++u===a&&(c=s),p===o&&++d===r&&(l=s),(m=f.nextSibling)!==null)break;f=p,p=f.parentNode}f=m}n=c===-1||l===-1?null:{start:c,end:l}}else n=null}n||={start:0,end:0}}else n=null;for(Bd={focusedElem:e,selectionRange:n},cp=!1,Qc=t;Qc!==null;)if(t=Qc,e=t.child,t.subtreeFlags&1028&&e!==null)e.return=t,Qc=e;else for(;Qc!==null;){switch(t=Qc,o=t.alternate,e=t.flags,t.tag){case 0:if(e&4&&(e=t.updateQueue,e=e===null?null:e.events,e!==null))for(n=0;n title`))),Fd(o,r,n),o[it]=e,_t(o),r=o;break a;case`link`:var s=Hf(`link`,`href`,a).get(r+(n.href||``));if(s){for(var c=0;cg&&(o=g,g=h,h=o);var _=mr(s,h),v=mr(s,g);if(_&&v&&(p.rangeCount!==1||p.anchorNode!==_.node||p.anchorOffset!==_.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var y=d.createRange();y.setStart(_.node,_.offset),p.removeAllRanges(),h>g?(p.addRange(y),p.extend(v.node,v.offset)):(y.setEnd(v.node,v.offset),p.addRange(y))}}}}for(d=[],p=s;p=p.parentNode;)p.nodeType===1&&d.push({element:p,left:p.scrollLeft,top:p.scrollTop});for(typeof s.focus==`function`&&s.focus(),s=0;sn?32:n,F.T=null,n=su,su=null;var o=ru,s=au;if(nu=0,iu=ru=null,au=0,Z&6)throw Error(i(331));var c=Z;if(Z|=4,kl(o.current),xl(o,o.current,s,n),Z=c,rd(0,!1),Ne&&typeof Ne.onPostCommitFiberRoot==`function`)try{Ne.onPostCommitFiberRoot(Me,o)}catch{}return!0}finally{I.p=a,F.T=r,zu(e,t)}}function Hu(e,t,n){t=si(n,t),t=Ks(e.stateNode,t,2),e=Pa(e,t,2),e!==null&&(Je(e,2),nd(e))}function Uu(e,t,n){if(e.tag===3)Hu(e,e,n);else for(;t!==null;){if(t.tag===3){Hu(t,e,n);break}else if(t.tag===1){var r=t.stateNode;if(typeof t.type.getDerivedStateFromError==`function`||typeof r.componentDidCatch==`function`&&(tu===null||!tu.has(r))){e=si(n,e),n=qs(2),r=Pa(t,n,2),r!==null&&(Js(n,r,t,e),Je(r,2),nd(r));break}}t=t.return}}function Wu(e,t,n){var r=e.pingCache;if(r===null){r=e.pingCache=new Nl;var i=new Set;r.set(t,i)}else i=r.get(t),i===void 0&&(i=new Set,r.set(t,i));i.has(n)||(Vl=!0,i.add(n),e=Gu.bind(null,e,t,n),t.then(e,e))}function Gu(e,t,n){var r=e.pingCache;r!==null&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,Pl===e&&(Il&n)===n&&(Ul===4||Ul===3&&(Il&62914560)===Il&&300>B()-Zl?!(Z&2)&&bu(e,0):Kl|=n,ql===Il&&(ql=0)),nd(e)}function Ku(e,t){t===0&&(t=Ke()),e=Kr(e,t),e!==null&&(Je(e,t),nd(e))}function qu(e){var t=e.memoizedState,n=0;t!==null&&(n=t.retryLane),Ku(e,n)}function Ju(e,t){var n=0;switch(e.tag){case 31:case 13:var r=e.stateNode,a=e.memoizedState;a!==null&&(n=a.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}r!==null&&r.delete(t),Ku(e,n)}function Yu(e,t){return be(e,t)}var Xu=null,Zu=null,Qu=!1,$u=!1,ed=!1,td=0;function nd(e){e!==Zu&&e.next===null&&(Zu===null?Xu=Zu=e:Zu=Zu.next=e),$u=!0,Qu||(Qu=!0,ld())}function rd(e,t){if(!ed&&$u){ed=!0;do for(var n=!1,r=Xu;r!==null;){if(!t)if(e!==0){var i=r.pendingLanes;if(i===0)var a=0;else{var o=r.suspendedLanes,s=r.pingedLanes;a=(1<<31-Fe(42|e)+1)-1,a&=i&~(o&~s),a=a&201326741?a&201326741|1:a?a|2:0}a!==0&&(n=!0,cd(r,a))}else a=Il,a=Ue(r,r===Pl?a:0,r.cancelPendingCommit!==null||r.timeoutHandle!==-1),!(a&3)||We(r,a)||(n=!0,cd(r,a));r=r.next}while(n);ed=!1}}function id(){ad()}function ad(){$u=Qu=!1;var e=0;td!==0&&Kd()&&(e=td);for(var t=B(),n=null,r=Xu;r!==null;){var i=r.next,a=od(r,t);a===0?(r.next=null,n===null?Xu=i:n.next=i,i===null&&(Zu=n)):(n=r,(e!==0||a&3)&&($u=!0)),r=i}nu!==0&&nu!==5||rd(e,!1),td!==0&&(td=0)}function od(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,i=e.expirationTimes,a=e.pendingLanes&-62914561;0s)break;var u=c.transferSize,d=c.initiatorType;u&&Ld(d)&&(c=c.responseEnd,o+=u*(c`u`?null:document;function Sf(e,t,n){var r=xf;if(r&&typeof t==`string`&&t){var i=Pt(t);i=`link[rel="`+e+`"][href="`+i+`"]`,typeof n==`string`&&(i+=`[crossorigin="`+n+`"]`),gf.has(i)||(gf.add(i),e={rel:e,crossOrigin:n,href:t},r.querySelector(i)===null&&(t=r.createElement(`link`),Fd(t,`link`,e),_t(t),r.head.appendChild(t)))}}function Cf(e){vf.D(e),Sf(`dns-prefetch`,e,null)}function wf(e,t){vf.C(e,t),Sf(`preconnect`,e,t)}function Tf(e,t,n){vf.L(e,t,n);var r=xf;if(r&&e&&t){var i=`link[rel="preload"][as="`+Pt(t)+`"]`;t===`image`&&n&&n.imageSrcSet?(i+=`[imagesrcset="`+Pt(n.imageSrcSet)+`"]`,typeof n.imageSizes==`string`&&(i+=`[imagesizes="`+Pt(n.imageSizes)+`"]`)):i+=`[href="`+Pt(e)+`"]`;var a=i;switch(t){case`style`:a=jf(e);break;case`script`:a=Ff(e)}hf.has(a)||(e=m({rel:`preload`,href:t===`image`&&n&&n.imageSrcSet?void 0:e,as:t},n),hf.set(a,e),r.querySelector(i)!==null||t===`style`&&r.querySelector(Mf(a))||t===`script`&&r.querySelector(If(a))||(t=r.createElement(`link`),Fd(t,`link`,e),_t(t),r.head.appendChild(t)))}}function Ef(e,t){vf.m(e,t);var n=xf;if(n&&e){var r=t&&typeof t.as==`string`?t.as:`script`,i=`link[rel="modulepreload"][as="`+Pt(r)+`"][href="`+Pt(e)+`"]`,a=i;switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:a=Ff(e)}if(!hf.has(a)&&(e=m({rel:`modulepreload`,href:e},t),hf.set(a,e),n.querySelector(i)===null)){switch(r){case`audioworklet`:case`paintworklet`:case`serviceworker`:case`sharedworker`:case`worker`:case`script`:if(n.querySelector(If(a)))return}r=n.createElement(`link`),Fd(r,`link`,e),_t(r),n.head.appendChild(r)}}}function Df(e,t,n){vf.S(e,t,n);var r=xf;if(r&&e){var i=gt(r).hoistableStyles,a=jf(e);t||=`default`;var o=i.get(a);if(!o){var s={loading:0,preload:null};if(o=r.querySelector(Mf(a)))s.loading=5;else{e=m({rel:`stylesheet`,href:e,"data-precedence":t},n),(n=hf.get(a))&&zf(e,n);var c=o=r.createElement(`link`);_t(c),Fd(c,`link`,e),c._p=new Promise(function(e,t){c.onload=e,c.onerror=t}),c.addEventListener(`load`,function(){s.loading|=1}),c.addEventListener(`error`,function(){s.loading|=2}),s.loading|=4,Rf(o,t,r)}o={type:`stylesheet`,instance:o,count:1,state:s},i.set(a,o)}}}function Of(e,t){vf.X(e,t);var n=xf;if(n&&e){var r=gt(n).hoistableScripts,i=Ff(e),a=r.get(i);a||(a=n.querySelector(If(i)),a||(e=m({src:e,async:!0},t),(t=hf.get(i))&&Bf(e,t),a=n.createElement(`script`),_t(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function kf(e,t){vf.M(e,t);var n=xf;if(n&&e){var r=gt(n).hoistableScripts,i=Ff(e),a=r.get(i);a||(a=n.querySelector(If(i)),a||(e=m({src:e,async:!0,type:`module`},t),(t=hf.get(i))&&Bf(e,t),a=n.createElement(`script`),_t(a),Fd(a,`link`,e),n.head.appendChild(a)),a={type:`script`,instance:a,count:1,state:null},r.set(i,a))}}function Af(e,t,n,r){var a=(a=z.current)?_f(a):null;if(!a)throw Error(i(446));switch(e){case`meta`:case`title`:return null;case`style`:return typeof n.precedence==`string`&&typeof n.href==`string`?(t=jf(n.href),n=gt(a).hoistableStyles,r=n.get(t),r||(r={type:`style`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};case`link`:if(n.rel===`stylesheet`&&typeof n.href==`string`&&typeof n.precedence==`string`){e=jf(n.href);var o=gt(a).hoistableStyles,s=o.get(e);if(s||(a=a.ownerDocument||a,s={type:`stylesheet`,instance:null,count:0,state:{loading:0,preload:null}},o.set(e,s),(o=a.querySelector(Mf(e)))&&!o._p&&(s.instance=o,s.state.loading=5),hf.has(e)||(n={rel:`preload`,as:`style`,href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},hf.set(e,n),o||Pf(a,e,n,s.state))),t&&r===null)throw Error(i(528,``));return s}if(t&&r!==null)throw Error(i(529,``));return null;case`script`:return t=n.async,n=n.src,typeof n==`string`&&t&&typeof t!=`function`&&typeof t!=`symbol`?(t=Ff(n),n=gt(a).hoistableScripts,r=n.get(t),r||(r={type:`script`,instance:null,count:0,state:null},n.set(t,r)),r):{type:`void`,instance:null,count:0,state:null};default:throw Error(i(444,e))}}function jf(e){return`href="`+Pt(e)+`"`}function Mf(e){return`link[rel="stylesheet"][`+e+`]`}function Nf(e){return m({},e,{"data-precedence":e.precedence,precedence:null})}function Pf(e,t,n,r){e.querySelector(`link[rel="preload"][as="style"][`+t+`]`)?r.loading=1:(t=e.createElement(`link`),r.preload=t,t.addEventListener(`load`,function(){return r.loading|=1}),t.addEventListener(`error`,function(){return r.loading|=2}),Fd(t,`link`,n),_t(t),e.head.appendChild(t))}function Ff(e){return`[src="`+Pt(e)+`"]`}function If(e){return`script[async]`+e}function Lf(e,t,n){if(t.count++,t.instance===null)switch(t.type){case`style`:var r=e.querySelector(`style[data-href~="`+Pt(n.href)+`"]`);if(r)return t.instance=r,_t(r),r;var a=m({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return r=(e.ownerDocument||e).createElement(`style`),_t(r),Fd(r,`style`,a),Rf(r,n.precedence,e),t.instance=r;case`stylesheet`:a=jf(n.href);var o=e.querySelector(Mf(a));if(o)return t.state.loading|=4,t.instance=o,_t(o),o;r=Nf(n),(a=hf.get(a))&&zf(r,a),o=(e.ownerDocument||e).createElement(`link`),_t(o);var s=o;return s._p=new Promise(function(e,t){s.onload=e,s.onerror=t}),Fd(o,`link`,r),t.state.loading|=4,Rf(o,n.precedence,e),t.instance=o;case`script`:return o=Ff(n.src),(a=e.querySelector(If(o)))?(t.instance=a,_t(a),a):(r=n,(a=hf.get(o))&&(r=m({},n),Bf(r,a)),e=e.ownerDocument||e,a=e.createElement(`script`),_t(a),Fd(a,`link`,r),e.head.appendChild(a),t.instance=a);case`void`:return null;default:throw Error(i(443,t.type))}else t.type===`stylesheet`&&!(t.state.loading&4)&&(r=t.instance,t.state.loading|=4,Rf(r,n.precedence,e));return t.instance}function Rf(e,t,n){for(var r=n.querySelectorAll(`link[rel="stylesheet"][data-precedence],style[data-precedence]`),i=r.length?r[r.length-1]:null,a=i,o=0;o title`):null)}function Wf(e,t,n){if(n===1||t.itemProp!=null)return!1;switch(e){case`meta`:case`title`:return!0;case`style`:if(typeof t.precedence!=`string`||typeof t.href!=`string`||t.href===``)break;return!0;case`link`:if(typeof t.rel!=`string`||typeof t.href!=`string`||t.href===``||t.onLoad||t.onError)break;switch(t.rel){case`stylesheet`:return e=t.disabled,typeof t.precedence==`string`&&e==null;default:return!0}case`script`:if(t.async&&typeof t.async!=`function`&&typeof t.async!=`symbol`&&!t.onLoad&&!t.onError&&t.src&&typeof t.src==`string`)return!0}return!1}function Gf(e){return!(e.type===`stylesheet`&&!(e.state.loading&3))}function Kf(e,t,n,r){if(n.type===`stylesheet`&&(typeof r.media!=`string`||!1!==matchMedia(r.media).matches)&&!(n.state.loading&4)){if(n.instance===null){var i=jf(r.href),a=t.querySelector(Mf(i));if(a){t=a._p,typeof t==`object`&&t&&typeof t.then==`function`&&(e.count++,e=Yf.bind(e),t.then(e,e)),n.state.loading|=4,n.instance=a,_t(a);return}a=t.ownerDocument||t,r=Nf(r),(i=hf.get(i))&&zf(r,i),a=a.createElement(`link`),_t(a);var o=a;o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),Fd(a,`link`,r),n.instance=a}e.stylesheets===null&&(e.stylesheets=new Map),e.stylesheets.set(n,t),(t=n.state.preload)&&!(n.state.loading&3)&&(e.count++,n=Yf.bind(e),t.addEventListener(`load`,n),t.addEventListener(`error`,n))}}var qf=0;function Jf(e,t){return e.stylesheets&&e.count===0&&Zf(e,e.stylesheets),0qf?50:800)+t);return e.unsuspend=n,function(){e.unsuspend=null,clearTimeout(r),clearTimeout(i)}}:null}function Yf(){if(this.count--,this.count===0&&(this.imgCount===0||!this.waitingForImages)){if(this.stylesheets)Zf(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var Xf=null;function Zf(e,t){e.stylesheets=null,e.unsuspend!==null&&(e.count++,Xf=new Map,t.forEach(Qf,e),Xf=null,Yf.call(e))}function Qf(e,t){if(!(t.state.loading&4)){var n=Xf.get(e);if(n)var r=n.get(null);else{n=new Map,Xf.set(e,n);for(var i=e.querySelectorAll(`link[data-precedence],style[data-precedence]`),a=0;a{function n(){if(!(typeof __REACT_DEVTOOLS_GLOBAL_HOOK__>`u`||typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE!=`function`))try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(n)}catch(e){console.error(e)}}n(),t.exports=g()})),v=(...e)=>e.filter((e,t,n)=>!!e&&e.trim()!==``&&n.indexOf(e)===t).join(` `).trim(),y=e=>e.replace(/([a-z0-9])([A-Z])/g,`$1-$2`).toLowerCase(),b=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,n)=>n?n.toUpperCase():t.toLowerCase()),x=e=>{let t=b(e);return t.charAt(0).toUpperCase()+t.slice(1)},S={xmlns:`http://www.w3.org/2000/svg`,width:24,height:24,viewBox:`0 0 24 24`,fill:`none`,stroke:`currentColor`,strokeWidth:2,strokeLinecap:`round`,strokeLinejoin:`round`},C=e=>{for(let t in e)if(t.startsWith(`aria-`)||t===`role`||t===`title`)return!0;return!1},w=l(d()),T=(0,w.forwardRef)(({color:e=`currentColor`,size:t=24,strokeWidth:n=2,absoluteStrokeWidth:r,className:i=``,children:a,iconNode:o,...s},c)=>(0,w.createElement)(`svg`,{ref:c,...S,width:t,height:t,stroke:e,strokeWidth:r?Number(n)*24/Number(t):n,className:v(`lucide`,i),...!a&&!C(s)&&{"aria-hidden":`true`},...s},[...o.map(([e,t])=>(0,w.createElement)(e,t)),...Array.isArray(a)?a:[a]])),E=(e,t)=>{let n=(0,w.forwardRef)(({className:n,...r},i)=>(0,w.createElement)(T,{ref:i,iconNode:t,className:v(`lucide-${y(x(e))}`,`lucide-${e}`,n),...r}));return n.displayName=x(e),n},D=E(`activity`,[[`path`,{d:`M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2`,key:`169zse`}]]),O=E(`app-window`,[[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}],[`path`,{d:`M10 4v4`,key:`pp8u80`}],[`path`,{d:`M2 8h20`,key:`d11cs7`}],[`path`,{d:`M6 4v4`,key:`1svtjw`}]]),k=E(`archive`,[[`rect`,{width:`20`,height:`5`,x:`2`,y:`3`,rx:`1`,key:`1wp1u1`}],[`path`,{d:`M4 8v11a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V8`,key:`1s80jp`}],[`path`,{d:`M10 12h4`,key:`a56b0p`}]]),A=E(`arrow-right`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`m12 5 7 7-7 7`,key:`xquz4c`}]]),j=E(`ban`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M4.929 4.929 19.07 19.071`,key:`196cmz`}]]),M=E(`bell-ring`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M22 8c0-2.3-.8-4.3-2-6`,key:`5bb3ad`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}],[`path`,{d:`M4 2C2.8 3.7 2 5.7 2 8`,key:`tap9e0`}]]),N=E(`bell`,[[`path`,{d:`M10.268 21a2 2 0 0 0 3.464 0`,key:`vwvbt9`}],[`path`,{d:`M3.262 15.326A1 1 0 0 0 4 17h16a1 1 0 0 0 .74-1.673C19.41 13.956 18 12.499 18 8A6 6 0 0 0 6 8c0 4.499-1.411 5.956-2.738 7.326`,key:`11g9vi`}]]),P=E(`book-open`,[[`path`,{d:`M12 7v14`,key:`1akyts`}],[`path`,{d:`M3 18a1 1 0 0 1-1-1V4a1 1 0 0 1 1-1h5a4 4 0 0 1 4 4 4 4 0 0 1 4-4h5a1 1 0 0 1 1 1v13a1 1 0 0 1-1 1h-6a3 3 0 0 0-3 3 3 3 0 0 0-3-3z`,key:`ruj8y`}]]),ee=E(`briefcase-business`,[[`path`,{d:`M12 12h.01`,key:`1mp3jc`}],[`path`,{d:`M16 6V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v2`,key:`1ksdt3`}],[`path`,{d:`M22 13a18.15 18.15 0 0 1-20 0`,key:`12hx5q`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]),F=E(`briefcase`,[[`path`,{d:`M16 20V4a2 2 0 0 0-2-2h-4a2 2 0 0 0-2 2v16`,key:`jecpp`}],[`rect`,{width:`20`,height:`14`,x:`2`,y:`6`,rx:`2`,key:`i6l2r4`}]]),I=E(`calendar-clock`,[[`path`,{d:`M16 14v2.2l1.6 1`,key:`fo4ql5`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`path`,{d:`M21 7.5V6a2 2 0 0 0-2-2H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h3.5`,key:`1osxxc`}],[`path`,{d:`M3 10h5`,key:`r794hk`}],[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`circle`,{cx:`16`,cy:`16`,r:`6`,key:`qoo3c4`}]]),te=E(`calendar-days`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}],[`path`,{d:`M8 14h.01`,key:`6423bh`}],[`path`,{d:`M12 14h.01`,key:`1etili`}],[`path`,{d:`M16 14h.01`,key:`1gbofw`}],[`path`,{d:`M8 18h.01`,key:`lrp35t`}],[`path`,{d:`M12 18h.01`,key:`mhygvu`}],[`path`,{d:`M16 18h.01`,key:`kzsmim`}]]),ne=E(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),re=E(`chart-column`,[[`path`,{d:`M3 3v16a2 2 0 0 0 2 2h16`,key:`c24i48`}],[`path`,{d:`M18 17V9`,key:`2bz60n`}],[`path`,{d:`M13 17V5`,key:`1frdt8`}],[`path`,{d:`M8 17v-3`,key:`17ska0`}]]),ie=E(`check`,[[`path`,{d:`M20 6 9 17l-5-5`,key:`1gmf2c`}]]),L=E(`chevron-down`,[[`path`,{d:`m6 9 6 6 6-6`,key:`qrunsl`}]]),R=E(`chevron-left`,[[`path`,{d:`m15 18-6-6 6-6`,key:`1wnfg3`}]]),ae=E(`chevron-right`,[[`path`,{d:`m9 18 6-6-6-6`,key:`mthhwq`}]]),oe=E(`circle-check`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m9 12 2 2 4-4`,key:`dzmm74`}]]),z=E(`circle-play`,[[`path`,{d:`M9 9.003a1 1 0 0 1 1.517-.859l4.997 2.997a1 1 0 0 1 0 1.718l-4.997 2.997A1 1 0 0 1 9 14.996z`,key:`kmsa83`}],[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}]]),se=E(`circle-plus`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M8 12h8`,key:`1wcyev`}],[`path`,{d:`M12 8v8`,key:`napkw2`}]]),ce=E(`circle-question-mark`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3`,key:`1u773s`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),le=E(`circle-x`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`m15 9-6 6`,key:`1uzhvr`}],[`path`,{d:`m9 9 6 6`,key:`z0biqf`}]]),ue=E(`clipboard-check`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`m9 14 2 2 4-4`,key:`df797q`}]]),de=E(`clipboard-list`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2`,key:`116196`}],[`path`,{d:`M12 11h4`,key:`1jrz19`}],[`path`,{d:`M12 16h4`,key:`n85exb`}],[`path`,{d:`M8 11h.01`,key:`1dfujw`}],[`path`,{d:`M8 16h.01`,key:`18s6g9`}]]),fe=E(`clipboard-copy`,[[`rect`,{width:`8`,height:`4`,x:`8`,y:`2`,rx:`1`,ry:`1`,key:`tgr4d6`}],[`path`,{d:`M8 4H6a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-2`,key:`4jdomd`}],[`path`,{d:`M16 4h2a2 2 0 0 1 2 2v4`,key:`3hqy98`}],[`path`,{d:`M21 14H11`,key:`1bme5i`}],[`path`,{d:`m15 10-4 4 4 4`,key:`5dvupr`}]]),pe=E(`clock`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 6v6l4 2`,key:`mmk7yg`}]]),me=E(`coffee`,[[`path`,{d:`M10 2v2`,key:`7u0qdc`}],[`path`,{d:`M14 2v2`,key:`6buw04`}],[`path`,{d:`M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1`,key:`pwadti`}],[`path`,{d:`M6 2v2`,key:`colzsn`}]]),he=E(`copy`,[[`rect`,{width:`14`,height:`14`,x:`8`,y:`8`,rx:`2`,ry:`2`,key:`17jyea`}],[`path`,{d:`M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2`,key:`zix9uf`}]]),ge=E(`database`,[[`ellipse`,{cx:`12`,cy:`5`,rx:`9`,ry:`3`,key:`msslwz`}],[`path`,{d:`M3 5V19A9 3 0 0 0 21 19V5`,key:`1wlel7`}],[`path`,{d:`M3 12A9 3 0 0 0 21 12`,key:`mv7ke4`}]]),_e=E(`download`,[[`path`,{d:`M12 15V3`,key:`m9g1x1`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}],[`path`,{d:`m7 10 5 5 5-5`,key:`brsn70`}]]),ve=E(`ellipsis`,[[`circle`,{cx:`12`,cy:`12`,r:`1`,key:`41hilf`}],[`circle`,{cx:`19`,cy:`12`,r:`1`,key:`1wjl8i`}],[`circle`,{cx:`5`,cy:`12`,r:`1`,key:`1pcz8c`}]]),ye=E(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),be=E(`eye-off`,[[`path`,{d:`M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49`,key:`ct8e1f`}],[`path`,{d:`M14.084 14.158a3 3 0 0 1-4.242-4.242`,key:`151rxh`}],[`path`,{d:`M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143`,key:`13bj9a`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}]]),xe=E(`eye`,[[`path`,{d:`M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0`,key:`1nclc0`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),Se=E(`file-text`,[[`path`,{d:`M6 22a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h8a2.4 2.4 0 0 1 1.704.706l3.588 3.588A2.4 2.4 0 0 1 20 8v12a2 2 0 0 1-2 2z`,key:`1oefj6`}],[`path`,{d:`M14 2v5a1 1 0 0 0 1 1h5`,key:`wfsgrz`}],[`path`,{d:`M10 9H8`,key:`b1mrlr`}],[`path`,{d:`M16 13H8`,key:`t4e002`}],[`path`,{d:`M16 17H8`,key:`z1uh3a`}]]),Ce=E(`folder-open`,[[`path`,{d:`m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2`,key:`usdka0`}]]),B=E(`graduation-cap`,[[`path`,{d:`M21.42 10.922a1 1 0 0 0-.019-1.838L12.83 5.18a2 2 0 0 0-1.66 0L2.6 9.08a1 1 0 0 0 0 1.832l8.57 3.908a2 2 0 0 0 1.66 0z`,key:`j76jl0`}],[`path`,{d:`M22 10v6`,key:`1lu8f3`}],[`path`,{d:`M6 12.5V16a6 3 0 0 0 12 0v-3.5`,key:`1r8lef`}]]),we=E(`hand-coins`,[[`path`,{d:`M11 15h2a2 2 0 1 0 0-4h-3c-.6 0-1.1.2-1.4.6L3 17`,key:`geh8rc`}],[`path`,{d:`m7 21 1.6-1.4c.3-.4.8-.6 1.4-.6h4c1.1 0 2.1-.4 2.8-1.2l4.6-4.4a2 2 0 0 0-2.75-2.91l-4.2 3.9`,key:`1fto5m`}],[`path`,{d:`m2 16 6 6`,key:`1pfhp9`}],[`circle`,{cx:`16`,cy:`9`,r:`2.9`,key:`1n0dlu`}],[`circle`,{cx:`6`,cy:`5`,r:`3`,key:`151irh`}]]),Te=E(`hard-drive`,[[`path`,{d:`M10 16h.01`,key:`1bzywj`}],[`path`,{d:`M2.212 11.577a2 2 0 0 0-.212.896V18a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-5.527a2 2 0 0 0-.212-.896L18.55 5.11A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z`,key:`18tbho`}],[`path`,{d:`M21.946 12.013H2.054`,key:`zqlbp7`}],[`path`,{d:`M6 16h.01`,key:`1pmjb7`}]]),Ee=E(`heart`,[[`path`,{d:`M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5`,key:`mvr1a0`}]]),De=E(`info`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`path`,{d:`M12 16v-4`,key:`1dtifu`}],[`path`,{d:`M12 8h.01`,key:`e9boi3`}]]),Oe=E(`lightbulb`,[[`path`,{d:`M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5`,key:`1gvzjb`}],[`path`,{d:`M9 18h6`,key:`x1upvd`}],[`path`,{d:`M10 22h4`,key:`ceow96`}]]),ke=E(`link-2-off`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7`,key:`10o201`}],[`path`,{d:`M15 7h2a5 5 0 0 1 4 8`,key:`1d3206`}],[`line`,{x1:`8`,x2:`12`,y1:`12`,y2:`12`,key:`rvw6j4`}],[`line`,{x1:`2`,x2:`22`,y1:`2`,y2:`22`,key:`a6p6uj`}]]),Ae=E(`link-2`,[[`path`,{d:`M9 17H7A5 5 0 0 1 7 7h2`,key:`8i5ue5`}],[`path`,{d:`M15 7h2a5 5 0 1 1 0 10h-2`,key:`1b9ql8`}],[`line`,{x1:`8`,x2:`16`,y1:`12`,y2:`12`,key:`1jonct`}]]),je=E(`link`,[[`path`,{d:`M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71`,key:`1cjeqo`}],[`path`,{d:`M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71`,key:`19qd67`}]]),Me=E(`loader-circle`,[[`path`,{d:`M21 12a9 9 0 1 1-6.219-8.56`,key:`13zald`}]]),Ne=E(`mail-plus`,[[`path`,{d:`M22 13V6a2 2 0 0 0-2-2H4a2 2 0 0 0-2 2v12c0 1.1.9 2 2 2h8`,key:`12jkf8`}],[`path`,{d:`m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7`,key:`1ocrg3`}],[`path`,{d:`M19 16v6`,key:`tddt3s`}],[`path`,{d:`M16 19h6`,key:`xwg31i`}]]),Pe=E(`mail`,[[`path`,{d:`m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7`,key:`132q7q`}],[`rect`,{x:`2`,y:`4`,width:`20`,height:`16`,rx:`2`,key:`izxlao`}]]),Fe=E(`map-pin`,[[`path`,{d:`M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0`,key:`1r0f0z`}],[`circle`,{cx:`12`,cy:`10`,r:`3`,key:`ilqhr7`}]]),Ie=E(`menu`,[[`path`,{d:`M4 5h16`,key:`1tepv9`}],[`path`,{d:`M4 12h16`,key:`1lakjw`}],[`path`,{d:`M4 19h16`,key:`1djgab`}]]),Le=E(`message-square-reply`,[[`path`,{d:`M22 17a2 2 0 0 1-2 2H6.828a2 2 0 0 0-1.414.586l-2.202 2.202A.71.71 0 0 1 2 21.286V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2z`,key:`18887p`}],[`path`,{d:`m10 8-3 3 3 3`,key:`fp6dz7`}],[`path`,{d:`M17 14v-1a2 2 0 0 0-2-2H7`,key:`1tkjnz`}]]),Re=E(`mic`,[[`path`,{d:`M12 19v3`,key:`npa21l`}],[`path`,{d:`M19 10v2a7 7 0 0 1-14 0v-2`,key:`1vc78b`}],[`rect`,{x:`9`,y:`2`,width:`6`,height:`13`,rx:`3`,key:`s6n7sd`}]]),ze=E(`monitor`,[[`rect`,{width:`20`,height:`14`,x:`2`,y:`3`,rx:`2`,key:`48i651`}],[`line`,{x1:`8`,x2:`16`,y1:`21`,y2:`21`,key:`1svkeh`}],[`line`,{x1:`12`,x2:`12`,y1:`17`,y2:`21`,key:`vw1qmm`}]]),Be=E(`moon`,[[`path`,{d:`M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401`,key:`kfwtm`}]]),Ve=E(`package`,[[`path`,{d:`M11 21.73a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16V8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73z`,key:`1a0edw`}],[`path`,{d:`M12 22V12`,key:`d0xqtd`}],[`polyline`,{points:`3.29 7 12 12 20.71 7`,key:`ousv84`}],[`path`,{d:`m7.5 4.27 9 5.15`,key:`1c824w`}]]),He=E(`palette`,[[`path`,{d:`M12 22a1 1 0 0 1 0-20 10 9 0 0 1 10 9 5 5 0 0 1-5 5h-2.25a1.75 1.75 0 0 0-1.4 2.8l.3.4a1.75 1.75 0 0 1-1.4 2.8z`,key:`e79jfc`}],[`circle`,{cx:`13.5`,cy:`6.5`,r:`.5`,fill:`currentColor`,key:`1okk4w`}],[`circle`,{cx:`17.5`,cy:`10.5`,r:`.5`,fill:`currentColor`,key:`f64h9f`}],[`circle`,{cx:`6.5`,cy:`12.5`,r:`.5`,fill:`currentColor`,key:`qy21gx`}],[`circle`,{cx:`8.5`,cy:`7.5`,r:`.5`,fill:`currentColor`,key:`fotxhn`}]]),Ue=E(`pause`,[[`rect`,{x:`14`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`kaeet6`}],[`rect`,{x:`5`,y:`3`,width:`5`,height:`18`,rx:`1`,key:`1wsw3u`}]]),We=E(`pen-line`,[[`path`,{d:`M13 21h8`,key:`1jsn5i`}],[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}]]),Ge=E(`pencil`,[[`path`,{d:`M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z`,key:`1a8usu`}],[`path`,{d:`m15 5 4 4`,key:`1mk7zo`}]]),Ke=E(`pin-off`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M15 9.34V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H7.89`,key:`znwnzq`}],[`path`,{d:`m2 2 20 20`,key:`1ooewy`}],[`path`,{d:`M9 9v1.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h11`,key:`c9qhm2`}]]),qe=E(`pin`,[[`path`,{d:`M12 17v5`,key:`bb1du9`}],[`path`,{d:`M9 10.76a2 2 0 0 1-1.11 1.79l-1.78.9A2 2 0 0 0 5 15.24V16a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-.76a2 2 0 0 0-1.11-1.79l-1.78-.9A2 2 0 0 1 15 10.76V7a1 1 0 0 1 1-1 2 2 0 0 0 0-4H8a2 2 0 0 0 0 4 1 1 0 0 1 1 1z`,key:`1nkz8b`}]]),Je=E(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]),Ye=E(`refresh-cw`,[[`path`,{d:`M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8`,key:`v9h5vc`}],[`path`,{d:`M21 3v5h-5`,key:`1q7to0`}],[`path`,{d:`M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16`,key:`3uifl3`}],[`path`,{d:`M8 16H3v5`,key:`1cv678`}]]),Xe=E(`rotate-ccw`,[[`path`,{d:`M3 12a9 9 0 1 0 9-9 9.75 9.75 0 0 0-6.74 2.74L3 8`,key:`1357e3`}],[`path`,{d:`M3 3v5h5`,key:`1xhq8a`}]]),Ze=E(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]),Qe=E(`send`,[[`path`,{d:`M14.536 21.686a.5.5 0 0 0 .937-.024l6.5-19a.496.496 0 0 0-.635-.635l-19 6.5a.5.5 0 0 0-.024.937l7.93 3.18a2 2 0 0 1 1.112 1.11z`,key:`1ffxy3`}],[`path`,{d:`m21.854 2.147-10.94 10.939`,key:`12cjpa`}]]),$e=E(`settings-2`,[[`path`,{d:`M14 17H5`,key:`gfn3mx`}],[`path`,{d:`M19 7h-9`,key:`6i9tg`}],[`circle`,{cx:`17`,cy:`17`,r:`3`,key:`18b49y`}],[`circle`,{cx:`7`,cy:`7`,r:`3`,key:`dfmy0x`}]]),et=E(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),tt=E(`shield-alert`,[[`path`,{d:`M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z`,key:`oel41y`}],[`path`,{d:`M12 8v4`,key:`1got3b`}],[`path`,{d:`M12 16h.01`,key:`1drbdi`}]]),nt=E(`sparkles`,[[`path`,{d:`M11.017 2.814a1 1 0 0 1 1.966 0l1.051 5.558a2 2 0 0 0 1.594 1.594l5.558 1.051a1 1 0 0 1 0 1.966l-5.558 1.051a2 2 0 0 0-1.594 1.594l-1.051 5.558a1 1 0 0 1-1.966 0l-1.051-5.558a2 2 0 0 0-1.594-1.594l-5.558-1.051a1 1 0 0 1 0-1.966l5.558-1.051a2 2 0 0 0 1.594-1.594z`,key:`1s2grr`}],[`path`,{d:`M20 2v4`,key:`1rf3ol`}],[`path`,{d:`M22 4h-4`,key:`gwowj6`}],[`circle`,{cx:`4`,cy:`20`,r:`2`,key:`6kqj1y`}]]),rt=E(`square-terminal`,[[`path`,{d:`m7 11 2-2-2-2`,key:`1lz0vl`}],[`path`,{d:`M11 13h4`,key:`1p7l4v`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`3`,rx:`2`,ry:`2`,key:`1m3agn`}]]),it=E(`sun`,[[`circle`,{cx:`12`,cy:`12`,r:`4`,key:`4exip2`}],[`path`,{d:`M12 2v2`,key:`tus03m`}],[`path`,{d:`M12 20v2`,key:`1lh1kg`}],[`path`,{d:`m4.93 4.93 1.41 1.41`,key:`149t6j`}],[`path`,{d:`m17.66 17.66 1.41 1.41`,key:`ptbguv`}],[`path`,{d:`M2 12h2`,key:`1t8f8n`}],[`path`,{d:`M20 12h2`,key:`1q8mjw`}],[`path`,{d:`m6.34 17.66-1.41 1.41`,key:`1m8zz5`}],[`path`,{d:`m19.07 4.93-1.41 1.41`,key:`1shlcs`}]]),at=E(`target`,[[`circle`,{cx:`12`,cy:`12`,r:`10`,key:`1mglay`}],[`circle`,{cx:`12`,cy:`12`,r:`6`,key:`1vlfrh`}],[`circle`,{cx:`12`,cy:`12`,r:`2`,key:`1c9p78`}]]),ot=E(`trash-2`,[[`path`,{d:`M10 11v6`,key:`nco0om`}],[`path`,{d:`M14 11v6`,key:`outv1u`}],[`path`,{d:`M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6`,key:`miytrc`}],[`path`,{d:`M3 6h18`,key:`d0wm0j`}],[`path`,{d:`M8 6V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2`,key:`e791ji`}]]),st=E(`trending-down`,[[`path`,{d:`M16 17h6v-6`,key:`t6n2it`}],[`path`,{d:`m22 17-8.5-8.5-5 5L2 7`,key:`x473p`}]]),ct=E(`trending-up`,[[`path`,{d:`M16 7h6v6`,key:`box55l`}],[`path`,{d:`m22 7-8.5 8.5-5-5L2 17`,key:`1t1m79`}]]),lt=E(`triangle-alert`,[[`path`,{d:`m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3`,key:`wmoenq`}],[`path`,{d:`M12 9v4`,key:`juzpu7`}],[`path`,{d:`M12 17h.01`,key:`p32p05`}]]),ut=E(`unlink`,[[`path`,{d:`m18.84 12.25 1.72-1.71h-.02a5.004 5.004 0 0 0-.12-7.07 5.006 5.006 0 0 0-6.95 0l-1.72 1.71`,key:`yqzxt4`}],[`path`,{d:`m5.17 11.75-1.71 1.71a5.004 5.004 0 0 0 .12 7.07 5.006 5.006 0 0 0 6.95 0l1.71-1.71`,key:`4qinb0`}],[`line`,{x1:`8`,x2:`8`,y1:`2`,y2:`5`,key:`1041cp`}],[`line`,{x1:`2`,x2:`5`,y1:`8`,y2:`8`,key:`14m1p5`}],[`line`,{x1:`16`,x2:`16`,y1:`19`,y2:`22`,key:`rzdirn`}],[`line`,{x1:`19`,x2:`22`,y1:`16`,y2:`16`,key:`ox905f`}]]),dt=E(`upload`,[[`path`,{d:`M12 3v12`,key:`1x0j5s`}],[`path`,{d:`m17 8-5-5-5 5`,key:`7q97r8`}],[`path`,{d:`M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4`,key:`ih7n3h`}]]),ft=E(`user-check`,[[`path`,{d:`m16 11 2 2 4-4`,key:`9rsbq5`}],[`path`,{d:`M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2`,key:`1yyitq`}],[`circle`,{cx:`9`,cy:`7`,r:`4`,key:`nufk8`}]]),pt=E(`user-round`,[[`circle`,{cx:`12`,cy:`8`,r:`5`,key:`1hypcn`}],[`path`,{d:`M20 21a8 8 0 0 0-16 0`,key:`rfgkzh`}]]),mt=E(`users-round`,[[`path`,{d:`M18 21a8 8 0 0 0-16 0`,key:`3ypg7q`}],[`circle`,{cx:`10`,cy:`8`,r:`5`,key:`o932ke`}],[`path`,{d:`M22 20c0-3.37-2-6.5-4-8a5 5 0 0 0-.45-8.3`,key:`10s06x`}]]),ht=E(`video`,[[`path`,{d:`m16 13 5.223 3.482a.5.5 0 0 0 .777-.416V7.87a.5.5 0 0 0-.752-.432L16 10.5`,key:`ftymec`}],[`rect`,{x:`2`,y:`6`,width:`14`,height:`12`,rx:`2`,key:`158x01`}]]),gt=E(`volume-x`,[[`path`,{d:`M11 4.702a.705.705 0 0 0-1.203-.498L6.413 7.587A1.4 1.4 0 0 1 5.416 8H3a1 1 0 0 0-1 1v6a1 1 0 0 0 1 1h2.416a1.4 1.4 0 0 1 .997.413l3.383 3.384A.705.705 0 0 0 11 19.298z`,key:`uqj9uw`}],[`line`,{x1:`22`,x2:`16`,y1:`9`,y2:`15`,key:`1ewh16`}],[`line`,{x1:`16`,x2:`22`,y1:`9`,y2:`15`,key:`5ykzw1`}]]),_t=E(`workflow`,[[`rect`,{width:`8`,height:`8`,x:`3`,y:`3`,rx:`2`,key:`by2w9f`}],[`path`,{d:`M7 11v4a2 2 0 0 0 2 2h4`,key:`xkn7yn`}],[`rect`,{width:`8`,height:`8`,x:`13`,y:`13`,rx:`2`,key:`1cgmvn`}]]),vt=E(`wrench`,[[`path`,{d:`M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z`,key:`1ngwbx`}]]),yt=E(`x`,[[`path`,{d:`M18 6 6 18`,key:`1bl5f8`}],[`path`,{d:`m6 6 12 12`,key:`d8bk6v`}]]),bt=E(`zap`,[[`path`,{d:`M4 14a1 1 0 0 1-.78-1.63l9.9-10.2a.5.5 0 0 1 .86.46l-1.92 6.02A1 1 0 0 0 13 10h7a1 1 0 0 1 .78 1.63l-9.9 10.2a.5.5 0 0 1-.86-.46l1.92-6.02A1 1 0 0 0 11 14z`,key:`1xq2db`}]]),xt=_();function St(e={}){let t=new Headers(e.headers||{});return!(e.body instanceof FormData)&&!t.has(`Content-Type`)&&t.set(`Content-Type`,`application/json`),t.has(`Accept`)||t.set(`Accept`,`application/json`),{...e,headers:t}}function Ct(e,t){return e?typeof e==`string`?e:e.error||e.fehler||e.message||t:t}function wt(e=``){return String(e).trim().replace(/\/+$/,``)}var Tt=wt(void 0);function Et(e){return e?/^https?:\/\//i.test(e)||!Tt?e:e.startsWith(`/`)?`${Tt}${e}`:`${Tt}/${e}`:Tt||`/`}async function V(e,t={}){let n=await fetch(Et(e),St(t)),r=n.headers.get(`content-type`)||``;if(!n.ok){let e=null;try{e=r.includes(`application/json`)?await n.json():await n.text()}catch{e=null}throw Error(Ct(e,`HTTP ${n.status}`))}return r.includes(`application/json`)?n.json():n}async function Dt(e,t={}){let n;try{n=await fetch(Et(e),St(t))}catch{return null}if(n.status===404)return null;let r=n.headers.get(`content-type`)||``;if(!n.ok){let e=null;try{e=r.includes(`application/json`)?await n.json():await n.text()}catch{e=null}throw Error(Ct(e,`HTTP ${n.status}`))}return r.includes(`application/json`)?n.json():n}async function H(e,t){return V(e,{method:`POST`,body:JSON.stringify(t)})}async function Ot(e,t){return V(e,{method:`PUT`,body:JSON.stringify(t)})}async function kt(e,t){let n={method:`DELETE`};return t!==void 0&&(n.body=JSON.stringify(t)),V(e,n)}var At=(0,w.createContext)(null);function jt(){let e=(0,w.useContext)(At);if(!e)throw Error(`useApp muss innerhalb des AppContext verwendet werden.`);return e}var Mt=[{key:`shell`,label:`App-Hintergrund`,hint:`Grundflaeche hinter allen Cards`},{key:`panel`,label:`Card-Flaeche`,hint:`Haupt-Cards (Bewerbungen, Jobs, Profil)`},{key:`panel-strong`,label:`Hover/Toolbar`,hint:`Aktive Tabs, Hover-Panels`},{key:`ink`,label:`Haupttext`,hint:`Ueberschriften, Werte`},{key:`muted`,label:`Sekundaertext`,hint:`Labels, Meta-Infos`},{key:`line`,label:`Borders/Linien`,hint:`Trennlinien, Card-Rahmen`},{key:`teal`,label:`Akzent Teal`,hint:`Primaere Aktionen, Highlights`},{key:`amber`,label:`Akzent Amber`,hint:`Warnungen, Badges`},{key:`coral`,label:`Akzent Coral`,hint:`Fehler, Zombie-Status`},{key:`sky`,label:`Akzent Sky`,hint:`Info, Links, Interviews`}],Nt={dark:{shell:`18 20 30`,panel:`28 32 46`,"panel-strong":`36 40 56`,ink:`230 236 250`,muted:`140 152 178`,line:`68 76 100`,teal:`94 234 212`,amber:`251 191 36`,coral:`251 113 133`,sky:`129 161 255`},light:{shell:`248 249 252`,panel:`255 255 255`,"panel-strong":`242 244 248`,ink:`24 28 42`,muted:`100 112 136`,line:`220 225 235`,teal:`13 148 136`,amber:`217 119 6`,coral:`225 29 72`,sky:`37 99 235`}},Pt=[{id:`default`,label:`PBP Standard`,description:`Original-Schema mit teal/amber/coral/sky-Akzenten.`,palette:Nt},{id:`modern_blue`,label:`Modern Blau`,description:`Kuehler Blauton dominant, ruhiger fuer lange Sessions.`,palette:{dark:{shell:`14 18 32`,panel:`22 30 50`,"panel-strong":`32 42 66`,ink:`228 236 252`,muted:`150 168 200`,line:`60 78 116`,teal:`94 220 230`,amber:`245 196 90`,coral:`246 130 155`,sky:`108 152 255`},light:{shell:`240 245 252`,panel:`255 255 255`,"panel-strong":`228 236 248`,ink:`20 32 56`,muted:`92 110 142`,line:`200 216 236`,teal:`20 130 154`,amber:`200 124 26`,coral:`210 50 100`,sky:`30 96 220`}}},{id:`warm_sand`,label:`Warm Sand`,description:`Warme Erdtoene, weicher als der Standard.`,palette:{dark:{shell:`30 25 22`,panel:`44 36 32`,"panel-strong":`56 46 40`,ink:`246 236 222`,muted:`176 158 138`,line:`94 76 60`,teal:`120 200 168`,amber:`248 188 92`,coral:`246 138 110`,sky:`186 168 218`},light:{shell:`250 244 234`,panel:`255 250 242`,"panel-strong":`242 232 218`,ink:`52 38 28`,muted:`128 102 78`,line:`224 208 184`,teal:`32 136 110`,amber:`200 118 28`,coral:`200 76 60`,sky:`120 96 168`}}},{id:`high_contrast`,label:`High Contrast`,description:`Maximaler Kontrast — Barrierefreiheit, Sehschwache.`,palette:{dark:{shell:`0 0 0`,panel:`16 16 20`,"panel-strong":`30 30 38`,ink:`255 255 255`,muted:`200 204 214`,line:`120 124 140`,teal:`0 255 200`,amber:`255 220 60`,coral:`255 100 110`,sky:`120 180 255`},light:{shell:`255 255 255`,panel:`255 255 255`,"panel-strong":`240 240 244`,ink:`0 0 0`,muted:`60 64 76`,line:`120 124 140`,teal:`0 110 96`,amber:`168 96 0`,coral:`190 16 56`,sky:`20 64 200`}}}],Ft=`pbp-theme-mode`,It=`pbp-theme-custom`,Lt=`pbp-theme-preset`;function Rt(){try{let e=localStorage.getItem(Lt);return e&&Pt.some(t=>t.id===e)?e:`default`}catch{return`default`}}function zt(e){try{localStorage.setItem(Lt,e)}catch{}}function Bt(e){let t=Pt.find(t=>t.id===e);return t?t.palette:Nt}function Vt(e){if(!e)return`#000000`;let t=e.trim().split(/\s+/).map(e=>Math.max(0,Math.min(255,parseInt(e,10)||0)));return t.length===3?`#`+t.map(e=>e.toString(16).padStart(2,`0`)).join(``):`#000000`}function Ht(e){let t=/^#?([0-9a-f]{6})$/i.exec(e||``);if(!t)return null;let n=parseInt(t[1],16);return`${n>>16&255} ${n>>8&255} ${n&255}`}function Ut(){try{let e=localStorage.getItem(Ft);return e===`light`||e===`dark`||e===`system`?e:`system`}catch{return`system`}}function Wt(e){try{localStorage.setItem(Ft,e)}catch{}}function Gt(){try{let e=localStorage.getItem(It);if(!e)return{light:{},dark:{}};let t=JSON.parse(e);return{light:t?.light&&typeof t.light==`object`?t.light:{},dark:t?.dark&&typeof t.dark==`object`?t.dark:{}}}catch{return{light:{},dark:{}}}}function Kt(e){try{localStorage.setItem(It,JSON.stringify(e))}catch{}}function qt(e){return e===`light`||e===`dark`?e:typeof window<`u`&&window.matchMedia&&window.matchMedia(`(prefers-color-scheme: light)`).matches?`light`:`dark`}function Jt(e,t,n){if(typeof document>`u`)return;let r=qt(e),i=document.documentElement;i.setAttribute(`data-theme`,r);let a=n&&n!==`default`?Bt(n)[r]||{}:null,o=t&&t[r]||{};Mt.forEach(({key:e})=>{let t=`--color-${e}`;o[e]?i.style.setProperty(t,o[e]):a&&a[e]?i.style.setProperty(t,a[e]):i.style.removeProperty(t)})}var Yt=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.fragment`);function r(e,n,r){var i=null;if(r!==void 0&&(i=``+r),n.key!==void 0&&(i=``+n.key),`key`in n)for(var a in r={},n)a!==`key`&&(r[a]=n[a]);else r=n;return n=r.ref,{$$typeof:t,type:e,key:i,ref:n===void 0?null:n,props:r}}e.Fragment=n,e.jsx=r,e.jsxs=r})),U=o(((e,t)=>{t.exports=Yt()}))(),Xt=class extends w.Component{constructor(e){super(e),this.state={error:null}}static getDerivedStateFromError(e){return{error:e}}componentDidCatch(e,t){typeof console<`u`&&console.error&&console.error(`PBP-Render-Fehler abgefangen:`,e,t)}handleRetry=()=>this.setState({error:null});handleReload=()=>{typeof window<`u`&&window.location.reload()};render(){let{error:e}=this.state;return e?(0,U.jsx)(`div`,{className:`p-6`,children:(0,U.jsxs)(`div`,{className:`glass-card-strong max-w-2xl rounded-2xl border border-coral/25 p-6`,children:[(0,U.jsx)(`h2`,{className:`text-lg font-semibold text-ink`,children:`Dieser Bereich ist abgestuerzt`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm leading-snug text-muted/70`,children:`In diesem Tab ist ein Anzeigefehler aufgetreten. Der Rest von PBP laeuft weiter — du kannst links einen anderen Bereich waehlen oder es hier nochmal versuchen. Deine Daten sind davon nicht betroffen.`}),(0,U.jsx)(`pre`,{className:`mt-3 max-h-40 overflow-auto whitespace-pre-wrap rounded bg-black/20 p-2 font-mono text-[11px] text-coral/80`,children:String(e?.message||e)}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:this.handleRetry,className:`rounded-lg border border-white/10 px-3 py-1.5 text-sm text-ink transition hover:bg-white/5`,children:`Nochmal versuchen`}),(0,U.jsx)(`button`,{type:`button`,onClick:this.handleReload,className:`rounded-lg border border-white/10 px-3 py-1.5 text-sm text-ink transition hover:bg-white/5`,children:`Seite neu laden`})]})]})}):this.props.children}},Zt=s({analyzeUploadedDocuments:()=>rn,createFileSignature:()=>Qt,isEmailFile:()=>en,uploadDocumentFile:()=>tn,uploadEmailFile:()=>nn});function Qt(e){return`${e.name}::${e.size}::${e.lastModified}::${e.webkitRelativePath||``}`}var $t=new Set([`.msg`,`.eml`]);function en(e){let t=(e?.name||``).toLowerCase();return $t.has(t.slice(t.lastIndexOf(`.`)))}async function tn(e,t=`sonstiges`,n={}){let r=new FormData;return r.append(`file`,e),r.append(`doc_type`,t),n.applicationId&&r.append(`link_application_id`,String(n.applicationId)),n.positionId&&r.append(`position_id`,String(n.positionId)),V(`/api/documents/upload`,{method:`POST`,body:r})}async function nn(e){let t=new FormData;return t.append(`file`,e),V(`/api/emails/upload`,{method:`POST`,body:t})}async function rn(){return H(`/api/dokumente-analysieren`,{})}var an=s({GLOBAL_FILE_DRAG_STATE_EVENT:()=>sn,GLOBAL_FILE_DROP_EVENT:()=>on,extractDroppedFiles:()=>fn,isFileDragEvent:()=>dn}),on=`pbp:global-file-drop`,sn=`pbp:global-file-drag-state`;function cn(e){return new Promise(t=>{e.file(e=>t(e||null),()=>t(null))})}function ln(e){return new Promise(t=>{e.readEntries(e=>t(e||[]),()=>t([]))})}async function un(e){if(!e)return[];if(e.isFile){let t=await cn(e);return t?[t]:[]}if(!e.isDirectory)return[];let t=e.createReader(),n=[];for(;;){let e=await ln(t);if(!e.length)break;for(let t of e){let e=await un(t);n.push(...e)}}return n}function dn(e){let t=e?.dataTransfer;return t?Array.from(t.items||[]).some(e=>e.kind===`file`)?!0:Array.from(t.types||[]).includes(`Files`):!1}async function fn(e){try{let t=Array.from(e?.items||[]).map(e=>e.webkitGetAsEntry?.()).filter(Boolean);if(!t.length)return Array.from(e?.files||[]).filter(e=>e&&e.name);let n=[];for(let e of t){let t=await un(e);n.push(...t)}return(n.length?n:Array.from(e?.files||[])).filter(e=>e&&e.name)}catch{return Array.from(e?.files||[]).filter(e=>e&&e.name)}}function pn({hasActiveProfile:e,profileName:t,refreshChrome:n,pushToast:r}){let i=(0,w.useRef)(0),a=(0,w.useRef)(!1),o=(0,w.useRef)(!1),s=(0,w.useEffectEvent)(e=>{let t=!!e;o.current!==t&&(o.current=t,window.dispatchEvent(new CustomEvent(sn,{detail:{active:t}})))}),c=(0,w.useEffectEvent)(()=>{i.current=0,s(!1)}),l=(0,w.useEffectEvent)(async i=>{if(a.current){r(`Es wird bereits ein Upload verarbeitet. Bitte kurz warten.`,`neutral`);return}let o=[],s=new Set;for(let e of i||[]){if(!e||!e.name)continue;let t=Qt(e);s.has(t)||(s.add(t),o.push(e))}if(!o.length)return;let c=new CustomEvent(on,{cancelable:!0,detail:{files:o}});if(window.dispatchEvent(c),c.defaultPrevented)return;if(!e){r(`Bitte zuerst ein Profil aktivieren, bevor Dokumente hochgeladen werden.`,`danger`);return}a.current=!0;let l=o.filter(e=>en(e)),u=o.filter(e=>!en(e)),d=0,f=0,p=0;for(let e of l)try{let t=await nn(e);p+=1;let n=t.match?.application?` → ${t.match.application.company}`:``,i=t.meetings?.length?` | ${t.meetings.length} Termin(e)`:``;r(`E-Mail importiert: ${t.parsed?.subject||e.name}${n}${i}`,`success`)}catch(t){f+=1,r(`E-Mail-Import fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}for(let e of u)try{await tn(e),d+=1}catch(t){f+=1,r(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}a.current=!1,await n({forceReload:!0});let m=d+p;if(m>0&&f===0){u.length>0&&r(`${d} Datei(en) für ${t||`das aktive Profil`} hochgeladen.`,`success`);return}if(m>0&&f>0){r(`${m} Datei(en) erfolgreich, ${f} fehlgeschlagen.`,`amber`);return}m===0&&f>0&&r(`Keine Datei konnte verarbeitet werden.`,`danger`)});return(0,w.useEffect)(()=>{function e(e){dn(e)&&(e.preventDefault(),i.current+=1,s(!0))}function t(e){dn(e)&&(e.preventDefault(),e.dataTransfer.dropEffect=`copy`,s(!0))}function n(e){dn(e)&&(e.preventDefault(),i.current=Math.max(0,i.current-1),i.current===0&&s(!1))}async function r(e){if(dn(e)){if(e.defaultPrevented){c();return}e.preventDefault(),c(),await l(await fn(e.dataTransfer))}}return window.addEventListener(`dragenter`,e),window.addEventListener(`dragover`,t),window.addEventListener(`dragleave`,n),window.addEventListener(`drop`,r),()=>{window.removeEventListener(`dragenter`,e),window.removeEventListener(`dragover`,t),window.removeEventListener(`dragleave`,n),window.removeEventListener(`drop`,r),s(!1)}},[c,l,s]),null}var mn=3e3,hn=3e4;async function gn(){try{let e=await fetch(`/api/jobsuche/running`);return e.ok?await e.json():null}catch{return null}}function _n({onNavigateToJobs:e}){let[t,n]=(0,w.useState)({running:!1,progress:0,message:``}),[r,i]=(0,w.useState)(null),a=(0,w.useRef)(!1);if((0,w.useEffect)(()=>{let e=!1,t=null,r=async()=>{if(e)return;let o=await gn();if(e)return;if(o?.running)n({running:!0,progress:o.progress||0,message:o.message||``,jobId:o.job_id}),a.current=!0;else{if(a.current){a.current=!1;try{let e=await fetch(`/api/jobsuche/last`);if(e.ok){let t=await e.json();t?.neue_stellen!==void 0&&i({count:t.neue_stellen,timeoutQuellen:t.timeout_quellen||0,at:Date.now()})}}catch{}}n({running:!1,progress:0,message:``})}let s=o?.running?mn:hn;t=window.setTimeout(r,s)};return r(),()=>{e=!0,t&&window.clearTimeout(t)}},[]),t.running)return(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5 rounded-lg bg-iris/15 px-2 py-1.5 text-[11px] font-medium text-iris`,title:t.message||`Jobsuche laeuft im Hintergrund`,children:[(0,U.jsx)(Me,{className:`h-3 w-3 animate-spin`}),(0,U.jsxs)(`span`,{children:[`Jobsuche `,t.progress>0?`${t.progress}%`:`laeuft…`]})]});if(r){let t=r.timeoutQuellen>0,n=t?lt:oe,a=t?`bg-amber/15 text-amber hover:bg-amber/25`:`bg-teal/15 text-teal hover:bg-teal/25`,o=t?`Fertig — ${r.count} neu, ${r.timeoutQuellen} Timeout`:`Fertig — ${r.count} neue Stellen`;return(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{i(null),e?.()},className:`flex items-center gap-1.5 rounded-lg px-2 py-1.5 text-[11px] font-medium cursor-pointer transition-colors ${a}`,title:`Klicken: zu Stellen wechseln (Badge zuruecksetzen)`,children:[(0,U.jsx)(n,{className:`h-3 w-3`}),(0,U.jsx)(`span`,{children:o})]})}return null}var vn=h(),yn=[`dashboard`,`profil`,`dokumente`,`stellen`,`bewerbungen`,`kontakte`,`kalender`,`statistiken`,`einstellungen`],bn=[{value:`in_vorbereitung`,label:`In Vorbereitung`},{value:`entwurf`,label:`Entwurf`},{value:`beworben`,label:`Beworben`},{value:`eingangsbestaetigung`,label:`Eingangsbestätigung`},{value:`interview`,label:`Interview`},{value:`zweitgespraech`,label:`Zweitgespräch`},{value:`interview_abgeschlossen`,label:`Interview abgeschlossen`},{value:`warte_auf_rueckmeldung`,label:`Warte auf Rückmeldung`},{value:`angebot`,label:`Angebot`},{value:`angenommen`,label:`Angenommen`},{value:`abgelehnt`,label:`Abgelehnt`},{value:`zurueckgezogen`,label:`Zurückgezogen`},{value:`abgelaufen`,label:`Abgelaufen`}];function W(...e){return e.filter(Boolean).join(` `)}function xn(){let e=window.location.hash.replace(/^#/,``).trim()||`dashboard`;return yn.includes(e)?e:`dashboard`}function Sn(e){if(!e)return`Keine Angabe`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`}).format(t)}function Cn(e){if(!e)return`Keine Angabe`;let t=new Date(e);return Number.isNaN(t.getTime())?e:new Intl.DateTimeFormat(`de-DE`,{day:`2-digit`,month:`2-digit`,year:`numeric`,hour:`2-digit`,minute:`2-digit`}).format(t)}function wn(e,t=`EUR`){if(e==null||e===``)return`Keine Angabe`;let n=Number(e);return Number.isNaN(n)?String(e):new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(n)+` ${t}`}function Tn(e){switch(e){case`in_vorbereitung`:return`violet`;case`angebot`:case`angenommen`:return`success`;case`zweitgespraech`:return`success`;case`interview_abgeschlossen`:return`teal`;case`interview`:case`eingangsbestaetigung`:return`sky`;case`warte_auf_rueckmeldung`:return`amber`;case`abgelehnt`:case`zurueckgezogen`:return`danger`;case`abgelaufen`:return`neutral`;case`beworben`:return`amber`;case`bearbeitet`:return`neutral`;default:return`neutral`}}function En(e){switch(e){case`green`:return`success`;case`yellow`:return`amber`;case`red`:return`danger`;default:return`sky`}}function Dn(e){return{lebenslauf:`Lebenslauf`,lebenslauf_vorlage:`Lebenslauf (Vorlage)`,anschreiben:`Anschreiben`,anschreiben_vorlage:`Anschreiben (Vorlage)`,zeugnis:`Zeugnis`,zertifikat:`Zertifikat`,sonstiges:`Sonstiges`}[e]||e||`Unbekannt`}function On(e){let t=bn.find(t=>t.value===e);return t?t.label:{eingangsbestaetigung:`Eingangsbestätigung`,notiz:`Notiz`,bearbeitet:`Bearbeitet`}[e]||e||`Unbekannt`}function kn(e){if(!e)return``;let t=String(e).trim();if(/^\d{4}-\d{2}$/.test(t))return t;if(/^\d{4}-\d{2}-\d{2}/.test(t))return t.slice(0,7);let n=t.match(/^(\d{1,2})\/(\d{4})$/);if(n)return`${n[2]}-${n[1].padStart(2,`0`)}`;let r=t.match(/^(\d{1,2})\.(\d{1,2})\.(\d{4})$/);return r?`${r[3]}-${r[2].padStart(2,`0`)}`:/^\d{4}$/.test(t)?`${t}-01`:t}async function An(e){await navigator.clipboard.writeText(e)}var jn=/[\w.+-]+@[\w-]+(?:\.[\w-]+)+/;function Mn(e){if(!e)return``;let t=String(e).match(jn);return t?t[0]:``}function Nn({to:e=``,subject:t=``,body:n=``,cc:r=``,bcc:i=``}={}){let a=Mn(e);if(!a)return``;let o=[];return t&&o.push(`subject=${encodeURIComponent(t)}`),n&&o.push(`body=${encodeURIComponent(n)}`),r&&o.push(`cc=${encodeURIComponent(Mn(r)||r)}`),i&&o.push(`bcc=${encodeURIComponent(Mn(i)||i)}`),`mailto:${a}${o.length?`?${o.join(`&`)}`:``}`}function Pn(e,t){let n=Mn(e);if(!n)return``;let r=(t||``).trim();return Nn({to:n,subject:r&&!/^(AW|RE):/i.test(r)?`AW: ${r}`:r||`AW:`})}function Fn(e=``){return e?e.includes(`showPage('profil')`)?e.includes(`showPositionForm`)?{page:`profil`,composer:`position`}:e.includes(`showSkillForm`)?{page:`profil`,composer:`skill`}:e.includes(`showEducationForm`)?{page:`profil`,composer:`education`}:{page:`profil`}:e.includes(`showPage('bewerbungen')`)?{page:`bewerbungen`}:e.includes(`showPage('stellen')`)?{page:`stellen`}:e.includes(`showPage('einstellungen')`)?{page:`einstellungen`}:e.includes(`wizardDocUpload`)?{page:`profil`,composer:`document`}:null:null}function In(e,t=180){let n=(e||``).replace(/\s+/g,` `).trim();return n.length<=t?n:`${n.slice(0,t).trim()}...`}function Ln(e){return String(e||``).normalize(`NFD`).replace(/[\u0300-\u036f]/g,``).toLowerCase().replace(/[.,;:!?]+/g,``).replace(/\s+/g,` `).trim()}var Rn=new Set([`kompetenzen`,`und kompetenzen`,`kenntnisse und kompetenzen`,`fahigkeiten und kompetenzen`,`personliche fahigkeiten und kompetenzen`,`skills`]);function zn(e){let t=String(e||``).replace(/\s+/g,` `).trim();return!t||Rn.has(Ln(t))?``:t}function Bn(e){if(!e)return[];let t=[],n=e.positions||[],r=e.education||[],i=e.documents||[],a=n.find(e=>e.is_current)||n[0],o=[e.city,e.country].filter(Boolean).join(`, `),s=i.filter(e=>e.extraction_status&&e.extraction_status!==`nicht_extrahiert`).length;return e.name&&t.push(`Name: ${e.name}`),e.email&&t.push(`E-Mail: ${e.email}`),e.phone&&t.push(`Telefon: ${e.phone}`),o&&t.push(`Standort: ${o}`),e.summary&&t.push(`Ein Kurzprofil ist bereits vorhanden.`),(a?.title||a?.company)&&t.push(`Beruflicher Fokus: ${a.title||`Rolle`}${a.company?` bei ${a.company}`:``}.`),n.length&&t.push(`${n.length} berufliche Station(en) sind bereits hinterlegt.`),r.length&&t.push(`${r.length} Ausbildungsstation(en) sind vorhanden.`),i.length&&t.push(`${i.length} Dokument(e) liegen bereits im Profil.`),s>0&&t.push(s===1?`1 Dokument wurde bereits automatisiert ausgewertet.`:`${s} Dokument(e) wurden bereits automatisiert ausgewertet.`),e.suggested_job_titles?.length&&t.push(`Vorgeschlagene Jobtitel: ${e.suggested_job_titles.slice(0,3).map(e=>e.title).join(`, `)}.`),t}function Vn(e){let t=(e||[]).findIndex(e=>!e.done);return t===-1?Math.max((e||[]).length-1,0):t}var Hn={primary:`bg-teal/85 text-shell font-semibold hover:bg-teal/95`,secondary:`border border-white/7 bg-white/[0.04] text-ink hover:bg-white/[0.07] hover:border-white/10`,ghost:`bg-transparent text-muted hover:text-ink hover:bg-white/[0.04]`,danger:`bg-coral/80 text-shell font-semibold hover:bg-coral/90`,subtle:`border border-white/5 bg-white/[0.03] text-muted hover:bg-white/[0.06] hover:text-ink`},Un={sm:`h-9 px-3.5 text-[13px]`,md:`h-10 px-4 text-sm`,lg:`h-11 px-5 text-sm`},Wn=`inline-flex items-center justify-center gap-2 rounded-xl font-medium focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-teal/15 focus-visible:ring-offset-1 focus-visible:ring-offset-shell disabled:cursor-not-allowed disabled:opacity-50 transition-colors duration-150 ease-out`;function G({className:e,variant:t=`primary`,size:n=`md`,type:r=`button`,...i}){return(0,U.jsx)(`button`,{type:r,className:W(Wn,Hn[t],Un[n],e),...i})}function Gn({className:e,variant:t=`secondary`,size:n=`md`,children:r,...i}){return(0,U.jsx)(`a`,{className:W(Wn,Hn[t],Un[n],e),...i,children:r})}function K({className:e,children:t,...n}){return(0,U.jsx)(`section`,{className:W(`glass-card rounded-2xl p-5`,e),...n,children:t})}function Kn({title:e,description:t,actions:n,eyebrow:r}){return(0,U.jsxs)(`div`,{className:`mb-8 flex flex-wrap items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`max-w-3xl space-y-1.5`,children:[r?(0,U.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-[0.2em] text-teal/80`,children:r}):null,(0,U.jsx)(`h1`,{className:`font-display text-2xl font-semibold tracking-tight text-ink sm:text-3xl`,children:e}),t?(0,U.jsx)(`p`,{className:`max-w-2xl text-sm text-muted/80`,children:t}):null]}),n?(0,U.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:n}):null]})}function qn({title:e,description:t,action:n}){return(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`space-y-0.5`,children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:e}),t?(0,U.jsx)(`p`,{className:`text-[13px] text-muted/70`,children:t}):null]}),n]})}function Jn({label:e,value:t,note:n,tone:r=`neutral`}){return(0,U.jsxs)(`div`,{className:W(`glass-card-soft rounded-2xl p-4`,{neutral:`border-white/5`,sky:`border-sky/12`,success:`border-teal/12`,amber:`border-amber/12`,danger:`border-coral/12`}[r],{neutral:``,sky:``,success:``,amber:``,danger:``}[r]),children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold uppercase tracking-[0.18em] text-muted/70`,children:e}),(0,U.jsx)(`p`,{className:`mt-2 text-2xl font-semibold tracking-tight text-ink`,children:t}),n?(0,U.jsx)(`p`,{className:`mt-1.5 text-[13px] text-muted/60`,children:n}):null]})}function q({children:e,tone:t=`neutral`,className:n}){return(0,U.jsx)(`span`,{className:W(`inline-flex items-center rounded-lg border px-2.5 py-0.5 text-[11px] font-semibold tracking-wide`,{neutral:`border-white/8 bg-white/5 text-muted`,sky:`border-sky/15 bg-sky/8 text-sky`,success:`border-teal/15 bg-teal/8 text-teal`,amber:`border-amber/15 bg-amber/8 text-amber`,danger:`border-coral/15 bg-coral/8 text-coral`}[t],n),children:e})}function J({label:e,hint:t,htmlFor:n,children:r,className:i}){return(0,U.jsxs)(`label`,{className:W(`grid gap-1.5 text-sm`,i),htmlFor:n,children:[(0,U.jsx)(`span`,{className:`text-[13px] font-medium text-ink/80`,children:e}),r,t?(0,U.jsx)(`span`,{className:`text-[12px] text-muted/60`,children:t}):null]})}var Yn=`glass-input disabled:cursor-not-allowed disabled:opacity-50`;function Y({className:e,...t}){return(0,U.jsx)(`input`,{className:W(Yn,e),...t})}function Xn({className:e,rows:t=4,...n}){return(0,U.jsx)(`textarea`,{className:W(Yn,`min-h-28 resize-y`,e),rows:t,...n})}function Zn({tags:e=[],onChange:t,placeholder:n=`Eingabe + Enter`,tone:r=`neutral`}){let[i,a]=(0,w.useState)(``),o=(0,w.useRef)(null),s={neutral:`border-white/8 bg-white/5 text-muted`,sky:`border-sky/15 bg-sky/8 text-sky`,success:`border-teal/15 bg-teal/8 text-teal`,amber:`border-amber/15 bg-amber/8 text-amber`,danger:`border-coral/15 bg-coral/8 text-coral`};function c(n){let r=n.trim();r&&!e.includes(r)&&t([...e,r]),a(``)}function l(n){t(e.filter((e,t)=>t!==n))}function u(e){(e.key===`Enter`||e.key===`,`)&&(e.preventDefault(),c(i))}function d(n){n.preventDefault();let r=n.clipboardData.getData(`text`).split(/[\n,;]+/).map(e=>e.trim()).filter(t=>t&&!e.includes(t));r.length>0&&t([...e,...r])}return(0,U.jsxs)(`div`,{className:`glass-input flex min-h-11 cursor-text flex-wrap items-center gap-1.5 !py-2`,onClick:()=>o.current?.focus(),children:[e.map((e,t)=>(0,U.jsxs)(`span`,{className:W(`inline-flex items-center gap-1 rounded-md border px-2 py-0.5 text-[12px] font-medium leading-tight select-none`,s[r]),onClick:e=>e.stopPropagation(),onMouseDown:e=>e.stopPropagation(),children:[e,(0,U.jsx)(`span`,{role:`button`,tabIndex:0,className:`ml-0.5 cursor-pointer rounded-sm p-0.5 opacity-60 transition-opacity hover:opacity-100`,onClick:e=>{e.stopPropagation(),l(t)},onKeyDown:e=>{(e.key===`Enter`||e.key===` `)&&(e.preventDefault(),l(t))},children:(0,U.jsx)(yt,{size:10})})]},`${e}-${t}`)),(0,U.jsx)(`input`,{ref:o,type:`text`,className:`min-w-[8rem] flex-1 border-none bg-transparent text-[13px] text-ink outline-none placeholder:text-muted/40`,value:i,onChange:e=>a(e.target.value),onKeyDown:u,onPaste:d,onBlur:()=>{i.trim()&&c(i)},placeholder:e.length===0?n:``})]})}function Qn({className:e,children:t,value:n,onChange:r,disabled:i,...a}){let[o,s]=(0,w.useState)(!1),c=(0,w.useRef)(null),l=(0,w.useRef)(null),[u,d]=(0,w.useState)(null),f=[];w.Children.forEach(t,e=>{e?.type===`option`&&f.push({value:e.props.value??``,label:e.props.children??``,disabled:e.props.disabled})});let p=f.find(e=>String(e.value)===String(n))?.label??f[0]?.label??``;(0,w.useEffect)(()=>{if(!o||!c.current)return;function e(){let e=c.current.getBoundingClientRect(),t=window.innerHeight-e.bottom<200&&e.top>200;d({position:`fixed`,left:e.left,minWidth:e.width,zIndex:9999,...t?{bottom:window.innerHeight-e.top+6}:{top:e.bottom+6}})}return e(),window.addEventListener(`scroll`,e,!0),window.addEventListener(`resize`,e),()=>{window.removeEventListener(`scroll`,e,!0),window.removeEventListener(`resize`,e)}},[o]),(0,w.useEffect)(()=>{if(!o)return;function e(e){c.current?.contains(e.target)||l.current?.contains(e.target)||s(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[o]),(0,w.useEffect)(()=>{if(!o)return;function e(e){e.key===`Escape`&&s(!1)}return window.addEventListener(`keydown`,e),()=>window.removeEventListener(`keydown`,e)},[o]);function m(e){r?.({target:{value:e}}),s(!1)}return(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsxs)(`button`,{ref:c,type:`button`,disabled:i,className:W(Yn,`flex cursor-pointer items-center gap-2 text-left`,e),onClick:()=>s(e=>!e),...a,children:[(0,U.jsx)(`span`,{className:`flex-1 truncate`,children:p}),(0,U.jsx)(L,{size:14,className:W(`shrink-0 text-muted/50 transition-transform duration-200`,o&&`rotate-180`)})]}),o&&u&&(0,vn.createPortal)((0,U.jsx)(`div`,{ref:l,className:`soft-scrollbar overflow-y-auto rounded-xl border border-white/10 shadow-2xl backdrop-blur-2xl animate-rise`,style:{...u,background:`rgba(30, 34, 52, 0.95)`,maxHeight:`14rem`,overscrollBehavior:`contain`},onWheel:e=>{e.stopPropagation()},children:(0,U.jsx)(`div`,{className:`p-1`,children:f.map(e=>(0,U.jsx)(`button`,{type:`button`,disabled:e.disabled,className:W(`flex w-full items-center rounded-lg px-3 py-2 text-[13px] text-left transition-colors duration-150`,String(e.value)===String(n)?`bg-teal/10 font-medium text-teal`:`text-muted hover:bg-white/[0.06] hover:text-ink`),onClick:()=>m(e.value),children:e.label},e.value))})}),document.body)]})}function $n({className:e,type:t=`checkbox`,...n}){return(0,U.jsxs)(`label`,{className:W(`inline-flex h-5 w-5 shrink-0 cursor-pointer select-none items-center justify-center align-middle`,e),children:[(0,U.jsx)(`input`,{type:t,className:`peer sr-only`,...n}),(0,U.jsx)(`span`,{"aria-hidden":`true`,className:W(`pointer-events-none inline-flex h-5 w-5 items-center justify-center rounded-md border-2 border-white/45 bg-panelstrong/80 text-transparent transition-colors`,`peer-checked:border-teal peer-checked:bg-teal peer-checked:text-shell peer-focus-visible:ring-2 peer-focus-visible:ring-teal/35`,`peer-disabled:cursor-not-allowed peer-disabled:opacity-60`),children:(0,U.jsx)(`svg`,{viewBox:`0 0 14 14`,className:`h-3 w-3`,fill:`none`,stroke:`currentColor`,strokeWidth:`2.2`,strokeLinecap:`round`,strokeLinejoin:`round`,children:(0,U.jsx)(`path`,{d:`M3 7.5 5.8 10.2 11 4.8`})})})]})}function er({title:e,description:t,action:n,className:r}){return(0,U.jsx)(K,{className:W(`glass-card-muted border-dashed text-center`,r),children:(0,U.jsxs)(`div`,{className:`mx-auto max-w-md space-y-2 py-8`,children:[(0,U.jsx)(`h3`,{className:`text-base font-semibold text-ink/80`,children:e}),(0,U.jsx)(`p`,{className:`text-[13px] text-muted/60`,children:t}),n?(0,U.jsx)(`div`,{className:`flex justify-center pt-2`,children:n}):null]})})}function tr({label:e=`Lade Daten...`}){return(0,U.jsx)(K,{className:`flex min-h-48 items-center justify-center`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3 text-sm text-muted/70`,children:[(0,U.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-white/8 border-t-teal/70`}),e]})})}function nr({open:e,title:t,description:n,onClose:r,children:i,footer:a,size:o=`lg`}){return(0,w.useEffect)(()=>{if(!e)return;function t(e){e.key===`Escape`&&r()}return document.body.classList.add(`overflow-hidden`),window.addEventListener(`keydown`,t),()=>{document.body.classList.remove(`overflow-hidden`),window.removeEventListener(`keydown`,t)}},[e,r]),e?(0,vn.createPortal)((0,U.jsx)(`div`,{className:`glass-overlay fixed inset-0 z-[1000] flex items-center justify-center px-4 py-6`,onMouseDown:e=>{e.target===e.currentTarget&&r()},children:(0,U.jsxs)(`div`,{className:W(`glass-card-strong max-h-[90vh] w-full overflow-hidden rounded-3xl animate-rise`,o===`xl`?`max-w-5xl`:o===`lg`?`max-w-4xl`:`max-w-2xl`),children:[(0,U.jsxs)(`div`,{className:`border-b border-white/6 px-6 py-5`,children:[(0,U.jsx)(`h2`,{className:`text-xl font-semibold text-ink`,children:t}),n?(0,U.jsx)(`p`,{className:`mt-1.5 text-[13px] text-muted/70`,children:n}):null]}),(0,U.jsx)(`div`,{className:`soft-scrollbar max-h-[calc(90vh-10rem)] overflow-y-auto px-6 py-5`,children:i}),a?(0,U.jsx)(`div`,{className:`border-t border-white/6 px-6 py-4`,children:a}):null]})}),document.body):null}function rr({toasts:e,onDismiss:t}){return(0,U.jsx)(`div`,{className:`pointer-events-none fixed right-4 top-4 z-[1200] flex w-full max-w-sm flex-col gap-2`,children:e.map(e=>(0,U.jsx)(`div`,{className:W(`pointer-events-auto rounded-xl border px-4 py-3 backdrop-blur-xl animate-rise`,e.tone===`danger`?`border-coral/12 bg-coral/8 text-coral`:e.tone===`success`?`border-teal/12 bg-teal/8 text-teal`:`border-sky/12 bg-sky/8 text-sky`),children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[13px] font-medium`,children:e.message}),e.action&&(0,U.jsx)(`button`,{type:`button`,className:`mt-1.5 rounded-lg bg-white/10 px-3 py-1 text-xs font-medium hover:bg-white/20 transition-colors`,onClick:()=>{e.action.onClick?.(),t(e.id)},children:e.action.label})]}),(0,U.jsx)(`button`,{type:`button`,className:`shrink-0 rounded-lg p-1 text-current/50 transition hover:bg-white/6 hover:text-current`,onClick:()=>t(e.id),children:(0,U.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,children:(0,U.jsx)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`})})})]})},e.id))})}function ir(e){return e===`fehler`?`danger`:e===`fertig`?`success`:`sky`}function ar(e){if(!e||!e.last_run)return null;let t=e.last_count??0,n=e.avg_time_s?` / ${e.avg_time_s.toFixed(1)}s`:``;switch(e.badge){case`ok`:return(0,U.jsxs)(q,{tone:`success`,className:`gap-1`,title:`Letzter Lauf: ${t} Treffer${n}`,children:[(0,U.jsx)(oe,{size:10}),t,` Treffer`,n]});case`stumm`:return(0,U.jsxs)(q,{tone:`amber`,className:`gap-1`,title:`Stumm seit ${e.consecutive_silent} Lauf(en)${e.last_status_detail?` — ${e.last_status_detail}`:``}`,children:[(0,U.jsx)(gt,{size:10}),`0 Treffer`,n]});case`leer`:return(0,U.jsxs)(q,{tone:`neutral`,className:`gap-1`,title:`Letzter Lauf brachte keine Treffer`,children:[`0 Treffer`,n]});case`fehler`:return(0,U.jsxs)(q,{tone:`danger`,className:`gap-1`,title:`${e.consecutive_failures} Fehler in Folge`,children:[(0,U.jsx)(le,{size:10}),`Fehler`]});case`deaktiviert`:return(0,U.jsx)(q,{tone:`neutral`,className:`gap-1`,title:`Automatisch deaktiviert nach mehreren stillen Laeufen`,children:`Auto-Aus`});default:return null}}function or(e){return e===`schnell`?(0,U.jsxs)(q,{tone:`success`,className:`gap-1`,children:[(0,U.jsx)(bt,{size:10}),`Schnell`]}):e===`langsam`?(0,U.jsxs)(q,{tone:`amber`,className:`gap-1`,children:[(0,U.jsx)(pe,{size:10}),`Browser`]}):e===`manuell`?(0,U.jsx)(q,{tone:`neutral`,className:`gap-1`,children:`Manuell`}):null}function sr({sources:e,loginJobs:t={},onToggle:n,onStartLogin:r}){return(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsxs)(`details`,{className:`rounded-xl border border-sky/20 bg-sky/5 px-4 py-3 mb-1 group`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer text-xs text-muted list-none flex items-center justify-between`,children:[(0,U.jsxs)(`span`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Tipp:`}),` Vier Wege, eine Stelle ins PBP zu bekommen — auf Pfeil klicken zum Ausklappen.`]}),(0,U.jsx)(`span`,{className:`text-muted/60 group-open:rotate-90 transition-transform`,children:`▶`})]}),(0,U.jsxs)(`div`,{className:`mt-3 space-y-2 text-xs text-muted`,children:[(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`1. Eingebauter Scraper`}),` — Default-Weg.`,` `,(0,U.jsxs)(q,{tone:`success`,className:`gap-1 inline-flex`,children:[(0,U.jsx)(bt,{size:9}),`Schnell`]}),` `,`Quellen laufen parallel und liefern in Sekunden.`,` `,(0,U.jsxs)(q,{tone:`amber`,className:`gap-1 inline-flex`,children:[(0,U.jsx)(pe,{size:9}),`Browser`]}),` `,`Quellen brauchen Google Chrome und 1-3 Minuten.`,` `,(0,U.jsx)(`a`,{href:`https://www.google.com/chrome/`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky underline`,children:`Chrome herunterladen`})]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`2. Claude in Chrome (Browser-Extension)`}),` — wenn der eingebaute Scraper streikt (Login, dynamische Seiten, Captcha), kann Claude in Chrome die Seite direkt im Browser durchgehen und Stellen ins PBP uebernehmen. Funktioniert besonders gut bei XING und LinkedIn.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`3. URL kopieren und in den Claude-Chat einfuegen`}),` — schnellster Weg fuer Einzel-Stellen. Anzeige im Browser oeffnen, URL kopieren, Claude im Chat schicken: `,(0,U.jsx)(`em`,{children:`„Leg diese Stelle bitte an: "`}),`. Claude liest die Anzeige selbst aus und legt sie inklusive Beschreibung, Firma und Anforderungen an.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsxs)(`strong`,{className:`text-ink`,children:[`4. Manuell ueber `,(0,U.jsx)(`code`,{children:`stelle_manuell_anlegen`})]}),` — wenn keiner der oberen Wege funktioniert (Stelle nur als PDF/Mail/Screenshot vorhanden). Claude bittest du dann, eine Stelle aus den Eckdaten anzulegen.`]}),(0,U.jsx)(`p`,{className:`pt-2 text-muted/70 border-t border-sky/10`,children:`Claude kann uebrigens auch dein Profil auf Jobportalen wie XING oder StepStone aktualisieren — frag einfach danach!`})]})]}),e.map(e=>{let i=t[e.key],a=i?.status===`running`,o=i?.status===`fertig`,s=!!e.defekt;return(0,U.jsx)(K,{"data-source-key":e.key,className:`glass-card-soft rounded-xl shadow-none ${s?`opacity-60`:``}`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-sm font-semibold ${s?`text-muted line-through decoration-muted/40`:`text-ink`}`,children:e.name}),s?(0,U.jsxs)(q,{tone:`danger`,className:`gap-1`,children:[(0,U.jsx)(j,{size:10}),`Defekt`]}):(0,U.jsx)(q,{tone:e.active?`success`:`neutral`,children:e.veraltet?`Manuell`:e.active?`Aktiv`:`Inaktiv`}),or(e.geschwindigkeit),ar(e.health),e.beta?(0,U.jsx)(q,{tone:`amber`,children:`Beta`}):null,e.login_erforderlich?(0,U.jsx)(q,{tone:`amber`,children:`Login noetig`}):null,i?.status?(0,U.jsx)(q,{tone:ir(i.status),children:i.status===`running`?`Login laeuft`:i.status===`fertig`?`Session bereit`:`Login offen`}):null]}),(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:e.beschreibung}),s?(0,U.jsxs)(`div`,{className:`mt-1 rounded-lg border border-danger/30 bg-danger/5 px-3 py-2 space-y-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-1.5`,children:[(0,U.jsx)(j,{size:13,className:`shrink-0 text-danger`}),(0,U.jsx)(`span`,{className:`text-xs font-semibold text-danger`,children:`Automatische Suche aktuell nicht moeglich`})]}),e.defekt_grund?(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:e.defekt_grund}):null,e.manueller_fallback?(0,U.jsxs)(`p`,{className:`text-xs text-muted`,children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Workaround:`}),` Per Chrome-Extension`,(0,U.jsxs)(`a`,{href:String(e.manueller_fallback).split(` `)[0],target:`_blank`,rel:`noopener noreferrer`,className:`ml-1 inline-flex items-center gap-1 text-sky underline`,children:[(String(e.manueller_fallback).split(` `)[0]||``).replace(/^https?:\/\//,``).slice(0,50),(0,U.jsx)(ye,{size:10})]}),` `,`oeffnen und passende Stellen via `,(0,U.jsx)(`code`,{className:`text-ink`,children:`stelle_manuell_anlegen`}),` nach PBP uebernehmen.`]}):null]}):null,!s&&e.login_erforderlich&&!e.beta?(0,U.jsx)(`p`,{className:`text-xs text-amber`,children:`Beim ersten Start oeffnet sich ein Browser-Fenster zur Anmeldung. Danach laeuft die Suche mit gespeicherter Session weiter.`}):null,!s&&e.warnung?(0,U.jsxs)(`div`,{className:`mt-1 rounded-lg border border-amber/30 bg-amber/10 px-3 py-2`,children:[(0,U.jsxs)(`div`,{className:`mb-1 flex items-center gap-1.5`,children:[(0,U.jsx)(lt,{size:13,className:`shrink-0 text-amber`}),(0,U.jsx)(`span`,{className:`text-xs font-semibold text-amber`,children:e.beta?`Beta-Feature`:`Hinweis`})]}),e.warnung.split(` +`).filter(Boolean).map((e,t)=>(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:e},t))]}):null,i?.message?(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:i.message}):null,!s&&e.active&&e.profil_optimierung?(0,U.jsx)(`div`,{className:`mt-1 rounded-lg border border-amber/15 bg-amber/5 px-3 py-2`,children:(0,U.jsx)(`p`,{className:`text-xs text-amber`,children:e.profil_optimierung})}):null]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 self-center items-center gap-3`,children:[!s&&e.login_erforderlich&&!o?(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,disabled:a,onClick:()=>r?.(e),children:[a?(0,U.jsx)(Me,{className:`animate-spin`,size:14}):null,a?`Login laeuft`:`Login starten`]}):null,(0,U.jsx)($n,{className:`shrink-0 flex-none self-center`,checked:!!e.active&&!s,disabled:s,title:s?`Quelle ist als defekt markiert. Bis zur Reparatur nur per Chrome-Extension nutzbar.`:void 0,onChange:t=>{if(s)return;let r=t.target.checked;n?.(e,r,{trigger:`checkbox`,autoStartLogin:r&&!!e.login_erforderlich&&!o})}})]})]})},e.key)})]})}var cr=[`documents`,`conversation`,`sources`,`jobs`],lr=`/ersterfassung`,ur=`/jobsuche_workflow`,dr={IDLE:`idle`,ACTIVE:`active`,COMPLETE:`complete`};function fr(e){return Object.values(dr).includes(e)?e:dr.IDLE}function pr(e){return!Array.isArray(e)||!e.length?``:e.map((e,t)=>{let n=[e?.title||``,e?.company||``,e?.url||``,t].join(`::`);return[e?.hash||e?.id||e?.url||n,e?.is_active?`1`:`0`,e?.score??``,e?.updated_at||``,e?.found_at||``].join(`|`)}).sort().join(`||`)}function mr(e){return String(e||``).replace(/\s+/g,` `).trim()}function hr(e){return e===`uploading`?{tone:`sky`,label:`Upload läuft`}:e===`analyzing`?{tone:`sky`,label:`Analyse läuft`}:e===`done`?{tone:`success`,label:`Analysiert`}:e===`error`?{tone:`danger`,label:`Fehler`}:{tone:`neutral`,label:`Wartet`}}function gr(e){return!e||e===`nicht_extrahiert`?{tone:`neutral`,label:`Offen`}:e===`analysiert_leer`?{tone:`neutral`,label:`Analysiert (leer)`}:{tone:`success`,label:`Analysiert`}}function _r(e){let t=e.webkitRelativePath||e.name,n=t.split(`/`).pop()||t;return{id:`upload_${Math.random().toString(36).slice(2,10)}_${Date.now()}`,signature:Qt(e),name:t,basename:n,file:e,documentId:null,storedFilename:``,status:`queued`,message:`Wartet auf Upload...`}}function vr({open:e,profile:t,workspace:n,onDismiss:r,onComplete:i}){let{chrome:a,refreshChrome:o,pushToast:s}=jt(),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(`documents`),[g,_]=(0,w.useState)(dr.IDLE),[v,y]=(0,w.useState)(!1),[b,x]=(0,w.useState)(!1),[S,C]=(0,w.useState)({}),[T,E]=(0,w.useState)([]),[D,O]=(0,w.useState)(!1),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)([]),[N,P]=(0,w.useState)(!1),[ee,F]=(0,w.useState)({}),[I,te]=(0,w.useState)({}),[ne,re]=(0,w.useState)(``),[L,R]=(0,w.useState)(``),[ae,oe]=(0,w.useState)(``),[z,se]=(0,w.useState)(!1),ce=(0,w.useRef)(new Map),le=(0,w.useRef)(Promise.resolve()),ue=(0,w.useRef)([]),de=(0,w.useRef)(null),fe=(0,w.useRef)(null),pe=(0,w.useRef)(!1),me=(0,w.useRef)(!1),ge=(0,w.useRef)(``),_e=(0,w.useRef)(0),ve=(0,w.useRef)(!1),ye=(0,w.useRef)(null),be=(0,w.useMemo)(()=>Bn(t),[t]),xe=t?.id?`profile_onboarding_conversation_${t.id}`:``,Se=t?.documents?.length||0,Ce=n?.applications?.total||0,B=c.filter(e=>e.active).length||n?.sources?.active||0,we=u.length||n?.jobs?.active||0,Te=n?.profile?.missing_areas||[],Ee=(t?.skills||[]).map(e=>{let t=zn(e?.name);return t?{id:e?.id,name:t,category:e?.category||`fachlich`,level:e?.level??3,years_experience:e?.years_experience,last_used_year:e?.last_used_year}:null}).filter(Boolean),De={documentsDone:Se>0||Ce>0||T.length>0,conversationDone:g===dr.COMPLETE,sourcesDone:v&&B>0,jobsDone:we>0||b},Oe=(0,w.useMemo)(()=>cr.map((e,t)=>({id:e,number:t+1,title:e===`documents`?`Unterlagen`:e===`conversation`?`Kennlerngespräch`:e===`sources`?`Quellen`:`Jobsuche`,done:e===`documents`?De.documentsDone:e===`conversation`?De.conversationDone:e===`sources`?De.sourcesDone:De.jobsDone})),[De.documentsDone,De.conversationDone,De.sourcesDone,De.jobsDone]),ke=Vn(Oe),Ae=Oe.findIndex(e=>e.id===m),je=Oe.filter(e=>e.done).length,Me=Oe.every(e=>e.done),Ne=(0,w.useEffectEvent)(async()=>{if(!t?.id){ge.current=``,(0,w.startTransition)(()=>{l([]),d([]),p(!1)});return}try{let[e,t,n]=await Promise.all([V(`/api/sources`),V(`/api/jobs?active=true`),V(`/api/user-preferences/${xe}`)]),r=Array.isArray(t)?t:[],i=fr(n?.value);ve.current=i===dr.ACTIVE||i===dr.COMPLETE,ge.current=pr(r),(0,w.startTransition)(()=>{l(e||[]),d(r),_(i),p(!1)})}catch(e){s(`Onboarding-Daten konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>p(!1))}});(0,w.useEffect)(()=>{e&&(p(!0),Ne())},[e,t?.id]),(0,w.useEffect)(()=>{e&&h(e=>!e||!Oe.some(t=>t.id===e)?Oe[ke]?.id||`documents`:e)},[e,ke,Oe]),(0,w.useEffect)(()=>{e&&(ve.current=!1,ge.current=``,ye.current&&=(window.clearTimeout(ye.current),null),(0,w.startTransition)(()=>{y(!1),x(!1),E([]),O(!1),A(!1),M([]),P(!1)}),ue.current=[],re(``),R(``),oe(``),se(!1),te({}),F({}))},[e,t?.id]),(0,w.useEffect)(()=>{ue.current=T},[T]),(0,w.useEffect)(()=>{if(!e)return;function t(e){A(!!e?.detail?.active)}function n(e){let t=e?.detail?.files;t?.length&&(e.preventDefault(),h(`documents`),Ye(t))}return window.addEventListener(sn,t),window.addEventListener(on,n),()=>{window.removeEventListener(sn,t),window.removeEventListener(on,n)}},[e]),(0,w.useEffect)(()=>{e&&m===`sources`&&y(!0)},[e,m]),(0,w.useEffect)(()=>{if(e)return document.body.classList.add(`overflow-hidden`),()=>document.body.classList.remove(`overflow-hidden`)},[e]),(0,w.useEffect)(()=>()=>{ce.current.forEach(e=>window.clearInterval(e)),ce.current.clear(),ye.current&&window.clearTimeout(ye.current)},[]);let Pe=(0,w.useEffectEvent)(async()=>{if(xe)try{let e=fr((await V(`/api/user-preferences/${xe}`))?.value);if(e===g)return;(0,w.startTransition)(()=>_(e)),e===dr.ACTIVE&&!ve.current&&(ve.current=!0,s(`Kennlerngespräch gestartet.`,`sky`)),e===dr.COMPLETE&&(ve.current=!0,m===`conversation`&&h(`sources`),await o(),s(`Kennlerngespräch abgeschlossen. Weiter zu Quellen.`,`success`))}catch{}}),Fe=(0,w.useEffectEvent)(async()=>{if(!pe.current){pe.current=!0;try{await o({quiet:!0})}catch{}finally{pe.current=!1}}}),Ie=(0,w.useEffectEvent)(async()=>{if(!me.current){me.current=!0;try{let e=await V(`/api/jobs?active=true`),t=Array.isArray(e)?e:[],n=pr(t);n!==ge.current&&(ge.current=n,(0,w.startTransition)(()=>d(t))),t.length>0&&!b&&(0,w.startTransition)(()=>x(!0))}catch{}finally{me.current=!1}}});(0,w.useEffect)(()=>{if(!e||!xe||g===dr.COMPLETE)return;Pe();let t=window.setInterval(()=>{Pe()},2e3);return()=>window.clearInterval(t)},[e,g,xe,Pe]),(0,w.useEffect)(()=>{if(!e||g!==dr.ACTIVE||!xe)return;Fe();let t=window.setInterval(()=>{Fe()},2e3);return()=>{window.clearInterval(t),pe.current=!1}},[e,g,xe,Fe]),(0,w.useEffect)(()=>{if(!e||!t?.id)return;Ie();let n=window.setInterval(()=>{Ie()},2e3);return()=>{window.clearInterval(n),me.current=!1}},[e,t?.id,Ie]);let Le=(0,w.useMemo)(()=>new Set((t?.documents||[]).map(e=>e.id).filter(Boolean)),[t?.documents]),Re=(0,w.useMemo)(()=>new Set((t?.documents||[]).map(e=>e.filename).filter(Boolean)),[t?.documents]),ze=(0,w.useMemo)(()=>T.filter(e=>{if(e.status!==`done`)return!0;let t=e.documentId&&Le.has(e.documentId),n=e.storedFilename&&Re.has(e.storedFilename);return!(t||n)}),[T,Le,Re]),Be=(0,w.useMemo)(()=>t?.documents||[],[t?.documents]),Ve=(0,w.useMemo)(()=>Be,[Be]),He=Be.filter(e=>j.includes(e.id)).length,Ue=Be.length>0&&Be.every(e=>j.includes(e.id)),We=ze.length>0||Be.length>0;if((0,w.useEffect)(()=>{let e=new Set(Be.map(e=>e.id));M(t=>{let n=t.filter(t=>e.has(t));return n.length===t.length&&n.every((e,n)=>e===t[n])?t:n})},[Be]),!e||!t)return null;function Ge(e,t){(0,w.startTransition)(()=>{E(n=>{let r=n.map(n=>n.id===e?{...n,...t}:n);return ue.current=r,r})})}async function Ke(e={}){let t=!!e?.force,n=Date.now();if(!(!t&&n-_e.current<1800)){_e.current=n;try{await o({quiet:!0})}catch{}}}function qe(e){le.current=le.current.then(async()=>{Ge(e,{status:`analyzing`,message:`Analyse läuft...`});let t=await rn();t?.status===`keine_daten`?Ge(e,{status:`done`,message:t?.nachricht||`Analyse abgeschlossen (keine neuen Profildaten erkannt).`}):Ge(e,{status:`done`,message:t?.nachricht||`Analyse abgeschlossen.`}),await Ke({force:!ue.current.some(e=>e.status===`queued`||e.status===`uploading`||e.status===`analyzing`)})}).catch(t=>{Ge(e,{status:`error`,message:`Analyse fehlgeschlagen: ${t.message}`})})}async function Je(e){try{Ge(e.id,{status:`uploading`,message:`Upload läuft...`});let t=await tn(e.file);Ge(e.id,{status:`queued`,message:`Hochgeladen. Warte auf Analyse...`,documentId:t?.id||null,storedFilename:t?.filename||e.basename||e.name}),qe(e.id)}catch(t){Ge(e.id,{status:`error`,message:`Upload fehlgeschlagen: ${t.message}`}),s(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}}function Ye(e){let t=Array.from(e||[]).filter(e=>e&&e.name);if(!t.length)return;let n=new Set(ue.current.map(e=>e.signature)),r=[];for(let e of t){let t=_r(e);n.has(t.signature)||(n.add(t.signature),r.push(t))}if(!r.length){s(`Diese Dateien sind bereits enthalten.`,`neutral`);return}ue.current=[...ue.current,...r],E(e=>[...e,...r]),r.forEach(e=>{Je(e)})}function Xe(e,t){e&&M(n=>{let r=n.includes(e);return t&&!r?[...n,e]:!t&&r?n.filter(t=>t!==e):n})}function Ze(){let e=Be.map(e=>e.id);M(t=>{if(Ue)return t.filter(t=>!e.includes(t));let n=new Set(t);return e.forEach(e=>n.add(e)),[...n]})}async function Qe(){let e=Be.filter(e=>j.includes(e.id));if(!e.length)return;let t=e.length;if(window.confirm(`${t} Datei(en) wirklich entfernen?\n\nDie zugehörigen Extraktions-/Analyse-Einträge dieser Datei(en) werden ebenfalls gelöscht.`)){P(!0);try{let n=(await Promise.allSettled(e.map(e=>kt(`/api/document/${e.id}`)))).filter(e=>e.status===`rejected`),r=new Set(e.map(e=>e.id)),i=new Set(e.map(e=>e.filename));if(E(e=>e.filter(e=>{if(e.documentId&&r.has(e.documentId))return!1;let t=e.storedFilename||e.basename||e.name.split(`/`).pop()||e.name;return!i.has(t)})),M([]),await o(),n.length){s(`${t-n.length} Datei(en) entfernt, ${n.length} Datei(en) konnten nicht gelöscht werden.`,`danger`);return}s(`${t} Datei(en) inklusive Analyse-Einträgen entfernt.`,`success`)}catch(e){s(`Dateien konnten nicht entfernt werden: ${e.message}`,`danger`)}finally{P(!1)}}}async function $e(){try{await An(lr),t?.id&&((0,w.startTransition)(()=>_(dr.ACTIVE)),await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${t.id}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${t.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${t.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${t.id}`,{value:dr.ACTIVE})])),s(`Befehl kopiert — füge ihn mit Strg+V in Claude ein.`,`success`,{duration:7200})}catch(e){s(`Befehl konnte nicht kopiert werden: ${e.message}`,`danger`)}}function et(e,t){let n=ce.current.get(e);n&&window.clearInterval(n);let r=window.setInterval(async()=>{try{let n=await V(`/api/background-jobs/${t}`);(0,w.startTransition)(()=>{C(r=>({...r,[e]:{status:n.status,message:n.message||``,jobId:t}}))}),n.status!==`running`&&(window.clearInterval(r),ce.current.delete(e),s(n.message||`Login abgeschlossen.`,n.status===`fehler`?`danger`:`success`))}catch(t){window.clearInterval(r),ce.current.delete(e),s(`Login-Status konnte nicht geladen werden: ${t.message}`,`danger`)}},1500);ce.current.set(e,r)}async function tt(e,t={}){if(!(!t.force&&S[e.key]?.status===`running`))try{let t=await H(`/api/sources/${e.key}/login`,{});(0,w.startTransition)(()=>{C(n=>({...n,[e.key]:{status:`running`,message:t.nachricht||``,jobId:t.job_id}}))}),et(e.key,t.job_id),s(t.nachricht||`${e.name}: Login gestartet.`,`sky`)}catch(e){s(`Login konnte nicht gestartet werden: ${e.message}`,`danger`)}}async function nt(e,t,n={}){let r=c,i=c.map(n=>n.key===e.key?{...n,active:t}:n);(0,w.startTransition)(()=>l(i));try{await H(`/api/sources`,{active_sources:i.filter(e=>e.active).map(e=>e.key)}),(n.autoStartLogin??(t&&e.login_erforderlich))&&await tt(e)}catch(e){(0,w.startTransition)(()=>l(r)),s(`Quelle konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function rt(){try{await An(ur),x(!0),Ie(),s(`Befehl kopiert — füge ihn mit Strg+V in Claude ein.`,`success`,{duration:7200})}catch(e){s(`Befehl konnte nicht kopiert werden: ${e.message}`,`danger`)}}async function it(e){if(e?.id){(0,w.startTransition)(()=>{F(t=>({...t,[e.id]:!0}))});try{await kt(`/api/skill/${e.id}`),await o(),ne===e.id&&(re(``),R(``)),s(`Skill entfernt: ${e.name}`,`success`)}catch(e){s(`Skill konnte nicht entfernt werden: ${e.message}`,`danger`)}finally{(0,w.startTransition)(()=>{F(t=>({...t,[e.id]:!1}))})}}}function at(e){e?.id&&(re(e.id),R(e.name||``))}function ot(){ye.current&&=(window.clearTimeout(ye.current),null),re(``),R(``)}async function st(e,t={}){if(!e?.id)return;let n=t.closeEditor!==!1,r=!!t.silent,i=t.notifySuccess??!r,a=mr(zn(t.value??L));if(!a){r||s(`Skill-Name darf nicht leer sein.`,`danger`);return}if(Ee.some(t=>t.id!==e.id&&t.name.toLocaleLowerCase(`de-DE`)===a.toLocaleLowerCase(`de-DE`))){r||s(`Skill ist bereits vorhanden.`,`neutral`);return}if(mr(zn(e.name)).toLocaleLowerCase(`de-DE`)===a.toLocaleLowerCase(`de-DE`)){n&&(re(``),R(``));return}(0,w.startTransition)(()=>{te(t=>({...t,[e.id]:!0}))});try{await Ot(`/api/skill/${e.id}`,{name:a,category:e.category||`fachlich`,level:e.level??3,years_experience:e.years_experience,last_used_year:e.last_used_year}),await o({quiet:!0}),n&&(re(``),R(``)),i&&s(`Skill aktualisiert: ${a}`,`success`)}catch(e){r||s(`Skill konnte nicht aktualisiert werden: ${e.message}`,`danger`)}finally{(0,w.startTransition)(()=>{te(t=>({...t,[e.id]:!1}))})}}function ct(e,t){e?.id&&(ye.current&&window.clearTimeout(ye.current),ye.current=window.setTimeout(()=>{st(e,{value:t,closeEditor:!1,silent:!0,notifySuccess:!1})},550))}async function lt(e){ye.current&&=(window.clearTimeout(ye.current),null),await st(e,{closeEditor:!0,notifySuccess:!1})}async function ut(){let e=mr(zn(ae));if(!e){s(`Bitte einen gültigen Skill-Namen eingeben.`,`danger`);return}if(Ee.some(t=>t.name.toLocaleLowerCase(`de-DE`)===e.toLocaleLowerCase(`de-DE`))){s(`Skill ist bereits vorhanden.`,`neutral`),oe(``);return}se(!0);try{await H(`/api/skill`,{name:e,category:`fachlich`,level:3}),await o({quiet:!0}),oe(``),s(`Skill hinzugefügt: ${e}`,`success`)}catch(e){s(`Skill konnte nicht hinzugefügt werden: ${e.message}`,`danger`)}finally{se(!1)}}function ft(){window.confirm(`Das komplette Setup wirklich überspringen?`)&&r()}function pt(){let e=Oe[Ae+1];e&&h(e.id)}let mt=(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Lade Lebensläufe, Anschreiben, Zeugnisse oder bestehende Unterlagen hoch, damit direkt eine erste Analyse startet.`}),(0,U.jsxs)(`div`,{className:`mt-5 rounded-xl border-2 border-dashed border-white/12 bg-white/[0.04] p-4 sm:p-6`,children:[(0,U.jsxs)(`div`,{className:W(`rounded-xl border border-white/10 bg-sky/10 px-4 py-8 text-center transition`,(D||k)&&`border-sky/60 bg-sky/12 ring-2 ring-sky/35`),"data-global-drop-target":`profile-documents`,onDragOver:e=>{e.preventDefault(),O(!0)},onDragEnter:e=>{e.preventDefault(),O(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&O(!1)},onDrop:async e=>{e.preventDefault(),e.stopPropagation(),O(!1),Ye(await fn(e.dataTransfer))},children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Dateien oder Ordner hier hineinziehen`}),(0,U.jsx)(`p`,{className:`mt-2 text-xs text-muted`,children:`Mehrfach-Upload und späteres Nachladen bleibt aktiv.`}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center justify-center gap-2`,children:[(0,U.jsxs)(G,{type:`button`,variant:`secondary`,onClick:()=>de.current?.click(),children:[(0,U.jsx)(dt,{size:15}),`Dateien auswählen`]}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,type:`button`,onClick:()=>fe.current?.click(),children:`Ordner auswählen`})]}),(0,U.jsx)(`input`,{ref:de,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:e=>{Ye(e.target.files),e.target.value=``}}),(0,U.jsx)(`input`,{ref:fe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:e=>{Ye(e.target.files),e.target.value=``}})]}),We?(0,U.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[Ve.length?(0,U.jsxs)(`div`,{className:`mb-2 flex flex-wrap items-center justify-between gap-2 rounded-lg border border-white/10 bg-white/[0.02] px-3 py-2`,children:[(0,U.jsxs)(`p`,{className:`text-xs text-muted`,children:[He,`/`,Ve.length,` markiert`]}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:Ze,children:Ue?`Auswahl aufheben`:`Alle markieren`}),(0,U.jsx)(G,{size:`sm`,variant:`danger`,disabled:!He||N,onClick:Qe,children:N?`Lösche...`:`Ausgewählte entfernen`})]})]}):null,ze.map(e=>{let t=hr(e.status);return(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg border border-white/10 bg-white/[0.03] px-4 py-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`p`,{className:`truncate text-sm font-semibold text-ink`,children:e.name}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:e.message})]}),(0,U.jsx)(q,{tone:t.tone,children:t.label})]},e.id)}),Ve.map(e=>{let t=gr(e.extraction_status);return(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-lg border border-white/10 bg-white/4 px-4 py-3`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 items-center gap-3`,children:[(0,U.jsx)($n,{checked:j.includes(e.id),onChange:t=>Xe(e.id,t.target.checked),disabled:N,"aria-label":`${e.filename} markieren`,className:`shrink-0 self-center`}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`p`,{className:`truncate text-sm font-semibold text-ink`,children:e.filename}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:Dn(e.doc_type)})]})]}),(0,U.jsx)(q,{tone:t.tone,children:t.label})]},e.id)})]}):null]})]}),ht=a?.status?.mcp_connection,gt=ht?.status===`connected`,_t=(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Um offene Punkte zu klären, führst du jetzt in Claude ein kurzes Kennlerngespräch.`}),ht&&!gt&&(0,U.jsxs)(`div`,{className:`mt-4 rounded-xl border border-amber/30 bg-amber/5 p-4`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-amber`,children:`Claude Verbindung prüfen`}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:`Öffne Claude Desktop und prüfe unter Einstellungen > Entwickler ob PBP als MCP-Server angezeigt wird.`}),(0,U.jsxs)(`div`,{className:`mt-2 space-y-1 text-xs text-muted`,children:[(0,U.jsx)(`p`,{children:`Falls nicht:`}),(0,U.jsx)(`p`,{children:`1. Ist das PBP-Konsolenfenster noch offen? (Nicht schließen!)`}),(0,U.jsx)(`p`,{children:`2. Claude Desktop beenden: Rechtsklick auf Symbol in Taskleiste → Beenden`}),(0,U.jsx)(`p`,{children:`3. Claude Desktop neu starten`}),(0,U.jsx)(`p`,{children:`4. Unter Einstellungen > Entwickler den MCP-Status prüfen`})]})]}),(0,U.jsxs)(`div`,{className:`mt-5 flex flex-wrap items-center gap-3`,children:[(0,U.jsxs)(G,{variant:`secondary`,onClick:$e,children:[(0,U.jsx)(he,{size:15}),`/ersterfassung kopieren`]}),(0,U.jsx)(q,{tone:g===dr.COMPLETE?`success`:g===dr.ACTIVE?`sky`:`neutral`,children:g===dr.COMPLETE?`Abgeschlossen`:g===dr.ACTIVE?`Läuft`:`Noch offen`})]}),(0,U.jsxs)(`div`,{className:`mt-5 grid gap-3 md:grid-cols-2`,children:[(0,U.jsxs)(`div`,{className:`rounded-xl border border-white/10 bg-white/4 p-4`,children:[(0,U.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Bekannt`}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-2`,children:be.length?be.map(e=>(0,U.jsx)(`p`,{className:`text-sm text-ink`,children:e},e)):(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Noch keine belastbaren Angaben vorhanden.`})})]}),(0,U.jsxs)(`div`,{className:`rounded-xl border border-white/10 bg-white/[0.03] p-4`,children:[(0,U.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Offen`}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-2`,children:Te.length?Te.map(e=>(0,U.jsx)(`p`,{className:`text-sm text-ink`,children:e},e)):(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Aktuell sind keine großen Lücken offen.`})})]})]}),(0,U.jsxs)(`div`,{className:`mt-3 rounded-xl border border-white/10 bg-white/4 p-4`,children:[(0,U.jsx)(`p`,{className:`text-xs font-semibold uppercase tracking-[0.2em] text-muted`,children:`Skills`}),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(`input`,{type:`text`,value:ae,onChange:e=>oe(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),z||ut())},placeholder:`Neuen Skill hinzufügen`,className:`h-8 min-w-[15rem] rounded-lg border border-white/15 bg-white/[0.04] px-3 text-xs text-ink placeholder:text-muted focus:border-sky/45 focus:outline-none`}),(0,U.jsx)(G,{size:`sm`,type:`button`,variant:`secondary`,onClick:ut,disabled:z,children:z?`Füge hinzu...`:`Skill hinzufügen`})]}),(0,U.jsx)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:Ee.length?Ee.map(e=>(0,U.jsx)(`span`,{className:`inline-flex items-center gap-2 rounded-full border border-sky/20 bg-sky/10 px-2 py-1 text-xs font-semibold text-sky`,children:ne===e.id?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`input`,{type:`text`,value:L,onChange:t=>{let n=t.target.value;R(n),ct(e,n)},onKeyDown:t=>{t.key===`Enter`&&(t.preventDefault(),lt(e)),t.key===`Escape`&&(t.preventDefault(),ot())},className:`h-7 w-44 rounded-md border border-white/20 bg-white/[0.08] px-2 text-xs text-ink focus:border-sky/45 focus:outline-none`,"aria-label":`Skill bearbeiten: ${e.name}`}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,type:`button`,onClick:()=>lt(e),disabled:!!I[e.id],children:I[e.id]?`...`:`Fertig`})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`button`,{type:`button`,className:`rounded px-1 text-left text-xs font-semibold text-sky transition hover:bg-white/10`,onClick:()=>at(e),title:`Skill bearbeiten: ${e.name}`,"aria-label":`Skill bearbeiten: ${e.name}`,children:e.name}),(0,U.jsx)(`button`,{type:`button`,className:`inline-flex h-4 w-4 items-center justify-center rounded-full text-sky/85 transition hover:bg-white/10 hover:text-sky`,onClick:t=>{t.stopPropagation(),it(e)},disabled:!e.id||!!ee[e.id],title:e.id?`Skill entfernen: ${e.name}`:`Skill kann nicht entfernt werden`,"aria-label":`Skill entfernen: ${e.name}`,children:(0,U.jsx)(yt,{size:10})})]})},e.id||e.name)):(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Noch keine Skills im Profil vorhanden.`})})]})]}),vt=(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[c.some(e=>e.active)?null:(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Wähle mindestens eine Quelle aus, die durchsucht werden soll.`}),(0,U.jsx)(`div`,{className:`mt-5`,children:(0,U.jsx)(sr,{sources:c,loginJobs:S,onToggle:nt,onStartLogin:tt})})]}),bt=m===`documents`?mt:m===`conversation`?_t:m===`sources`?vt:(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl p-6 shadow-none sm:p-8`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Starte jetzt den Jobsuche-Workflow in Claude.`}),(0,U.jsx)(`div`,{className:`mt-5 grid gap-3 sm:max-w-lg`,children:(0,U.jsxs)(G,{variant:`secondary`,onClick:rt,children:[(0,U.jsx)(he,{size:15}),`/jobsuche_workflow kopieren`]})}),(0,U.jsxs)(`p`,{className:`mt-4 text-xs text-muted`,children:[`Aktuell erkannte Jobs: `,we]})]}),xt=m===`conversation`&&g===dr.ACTIVE?`Kennlerngespräch läuft gerade. Weiter nur, wenn du bewusst unterbrechen willst.`:null;return(0,vn.createPortal)((0,U.jsx)(`div`,{id:`profile-onboarding-overlay`,className:`glass-overlay fixed inset-0 z-[980] flex items-start justify-center overflow-y-auto px-4 py-6 sm:px-6`,children:(0,U.jsxs)(`div`,{className:`glass-card-strong w-full max-w-6xl rounded-2xl p-6 sm:p-8`,children:[(0,U.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`h2`,{className:`font-display text-3xl font-semibold text-ink sm:text-4xl`,children:[`Willkommen `,t.name||`ohne Namen`]}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:`Richte dein Profil in vier kurzen Schritten ein.`})]}),(0,U.jsxs)(q,{tone:Me?`success`:`sky`,children:[je,`/`,Oe.length,` Schritte`]})]}),(0,U.jsx)(`div`,{className:`grid gap-3 md:grid-cols-4`,children:Oe.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:W(`glass-tab flex min-h-[4.25rem] items-center justify-between rounded-xl px-4 py-3 text-left transition`,m===e.id&&`glass-tab-active`),onClick:()=>h(e.id),children:[(0,U.jsxs)(`span`,{className:`text-sm font-semibold text-ink/90`,children:[e.number,`. `,e.title]}),e.done?(0,U.jsx)(`span`,{className:`inline-flex h-6 w-6 items-center justify-center rounded-full bg-teal/20 text-teal`,children:(0,U.jsx)(ie,{size:13})}):null]},e.id))}),(0,U.jsx)(`div`,{className:`mt-6`,children:f?(0,U.jsx)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,U.jsxs)(`div`,{className:`flex min-h-40 items-center justify-center gap-3 text-sm text-muted`,children:[(0,U.jsx)(`span`,{className:`h-4 w-4 animate-spin rounded-full border-2 border-white/12 border-t-teal`}),`Onboarding wird vorbereitet...`]})}):bt}),(0,U.jsxs)(`div`,{className:W(`mt-6 flex flex-wrap items-center gap-3 border-t border-white/10 pt-5`,xt?`justify-between`:`justify-end`),children:[xt?(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:xt}):null,(0,U.jsx)(`div`,{className:`flex flex-wrap gap-3`,children:Aes&&d(!0),onMouseLeave:()=>d(!1),children:(0,U.jsxs)(`div`,{className:W(`sticky top-0 h-screen flex flex-col bg-shell/80 backdrop-blur-md border-r border-white/8`,`transition-[width,box-shadow] duration-200`,f?`w-[60px]`:`w-[240px]`,p&&`absolute top-0 left-0 z-50 shadow-2xl shadow-black/40`,!p&&`z-40`),children:[(0,U.jsx)(`div`,{className:`px-4 py-3 border-b border-white/8`,children:f?(0,U.jsx)(`span`,{className:`text-[13px] font-semibold text-ink block text-center`,title:`Persönliches Bewerbungs-Portal`,children:`PBP`}):(0,U.jsxs)(`div`,{className:`flex flex-col gap-1.5`,children:[(0,U.jsx)(`span`,{className:`brand-title sr-only`,children:`Persönliches Bewerbungs-Portal`}),o.version?(0,U.jsxs)(`span`,{className:`font-mono text-[10px] text-muted/40 select-none whitespace-nowrap`,children:[`v`,o.version]}):null,o.connectionStatus?(()=>{let e=yr[o.connectionStatus]||yr.disconnected;return(0,U.jsxs)(`button`,{type:`button`,onClick:o.onConnectionClick,className:W(`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors w-fit`,`hover:bg-white/[0.06]`,e.color),title:o.connectionStatus===`connected`?`Claude Desktop oeffnen`:`MCP: ${e.label} — Klicke fuer Hilfe`,children:[(0,U.jsx)(`span`,{className:W(`h-1.5 w-1.5 rounded-full`,e.dot)}),(0,U.jsx)(`span`,{children:e.label})]})})():null,o.llmState?(()=>{let e=br[o.llmState]||br.not_installed;return(0,U.jsxs)(`button`,{type:`button`,onClick:o.onLlmClick,className:W(`inline-flex items-center gap-1 rounded-md px-1.5 py-0.5 text-[10px] font-medium transition-colors w-fit`,`hover:bg-white/[0.06]`,e.color),title:`${e.label} — Klicke fuer Details`,children:[(0,U.jsx)(`span`,{className:W(`h-1.5 w-1.5 rounded-full`,e.dot)}),(0,U.jsx)(`span`,{children:e.label})]})})():null]})}),(0,U.jsx)(`nav`,{className:`flex-shrink-0 overflow-y-auto px-2 py-3`,style:{maxHeight:`calc(100vh - 180px)`},children:(0,U.jsx)(`ul`,{className:`space-y-0.5`,children:e.map(e=>{let o=e.icon,s=t===e.id,c=i[e.id],l=s&&r?r:null;return(0,U.jsxs)(`li`,{children:[(0,U.jsxs)(`button`,{type:`button`,className:W(`tab w-full flex items-center gap-2.5 rounded-lg px-2.5 py-2 text-[13px] font-medium transition-colors`,s?`bg-white/[0.08] text-ink`:`text-muted hover:text-ink hover:bg-white/[0.04]`,f&&`justify-center`),"data-page":e.id,onClick:()=>n?.(e.id),title:f?e.title:void 0,children:[(0,U.jsx)(o,{size:16,className:s?`text-sky shrink-0`:`shrink-0`}),!f&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`span`,{className:`flex-1 text-left`,children:e.title}),c?(0,U.jsx)(`span`,{id:`tab-badge-${e.id}`,className:`tab-badge inline-flex h-[18px] min-w-[18px] items-center justify-center rounded-full bg-amber/80 px-1 text-[10px] font-bold leading-none text-shell`,children:c}):(0,U.jsx)(`span`,{id:`tab-badge-${e.id}`,className:`hidden`,children:c})]})]}),!f&&l?(0,U.jsx)(`ul`,{className:`ml-6 mt-0.5 mb-1 space-y-0.5 border-l border-white/8 pl-2`,children:l.items.map(e=>(0,U.jsx)(`li`,{children:(0,U.jsx)(`button`,{type:`button`,className:W(`w-full text-left rounded-md px-2 py-1.5 text-[12px] transition-colors`,e.active?`bg-sky/10 text-sky`:`text-muted/80 hover:text-ink hover:bg-white/[0.03]`),onClick:()=>l.onSelect?.(e.id),children:e.label})},e.id))}):null,(0,U.jsx)(`span`,{id:`tab-meta-${e.id}`,className:`sr-only`,children:a[e.id]||e.defaultMeta})]},e.id)})})}),!f&&l?(0,U.jsx)(`div`,{className:`border-t border-white/8 px-3 py-2 overflow-y-auto`,style:{flex:`1 1 0`,minHeight:0},children:l}):null,c?(0,U.jsxs)(`button`,{type:`button`,onClick:c,className:`border-t border-white/8 px-4 py-2.5 text-[11px] text-muted/60 hover:text-ink hover:bg-white/[0.03] transition-colors flex items-center justify-center gap-1.5`,title:f?`Sidebar ausklappen`:`Sidebar einklappen`,children:[f?(0,U.jsx)(ae,{size:14}):(0,U.jsx)(L,{size:14,className:`rotate-90`}),!f&&(0,U.jsx)(`span`,{children:`Einklappen`})]}):null]})})}var Sr=`pbp_elwosa_hidden_until`,Cr=30*1e3,wr=3600*1e3,Tr=1800*1e3;function Er(){try{let e=localStorage.getItem(Sr);return e&&Number(e)||0}catch{return 0}}function Dr(e){try{localStorage.setItem(Sr,String(e))}catch{}}var Or=/\[link:([a-z_]+):([^|\]]+)\|([^\]]+)\]/g,kr=/\*\*([^*]+)\*\*/g,Ar=/`[^`]+`/g;function jr(e,{onCopy:t,onPause:n,onNavigate:r}){if(!e)return null;let i=[],a=0,o;for(Or.lastIndex=0;(o=Or.exec(e))!==null;)o.index>a&&i.push({type:`plain`,text:e.slice(a,o.index)}),i.push({type:`link`,linkType:o[1],linkId:o[2],label:o[3]}),a=o.index+o[0].length;return ae.type===`link`?[(0,U.jsx)(`button`,{type:`button`,onClick:t=>{if(t.stopPropagation(),e.linkType===`pause`)n?.(parseInt(e.linkId,10)||60);else if(e.linkType===`wiki`){let t=`https://github.com/MadGapun/PBP/wiki/${encodeURIComponent(e.linkId)}`;window.open(t,`_blank`,`noopener,noreferrer`)}else r?.(e.linkType,e.linkId)},className:`text-teal hover:text-teal/80 underline decoration-dotted decoration-teal/40 underline-offset-2 cursor-pointer`,title:e.linkType===`pause`?`Elwosa fuer ${e.linkId} Minuten pausieren`:`${e.linkType}: ${e.linkId}`,children:e.label},`l-${i}`)]:Mr(e.text,i,t))}function Mr(e,t,n){let r=[],i=0,a;for(kr.lastIndex=0;(a=kr.exec(e))!==null;)a.index>i&&r.push({type:`code-or-text`,text:e.slice(i,a.index)}),r.push({type:`bold`,text:a[1]}),i=a.index+a[0].length;return i{let i=`${t}-${r}`;if(e.type===`bold`)return[(0,U.jsx)(`strong`,{className:`font-semibold text-ink`,children:e.text},i)];let a=e.text.split(Ar),o=e.text.match(Ar)||[],s=[];return a.forEach((e,t)=>{if(e&&s.push((0,U.jsx)(`span`,{children:e},`${i}-s${t}`)),t{t.stopPropagation(),n?.(e)},className:`font-mono text-[11px] underline-offset-2 underline decoration-dotted decoration-teal/50 hover:text-teal cursor-pointer`,title:`Klicken um zu kopieren`,children:e},`${i}-c${t}`))}}),s})}function Nr(e){if(!e)return``;try{let t=new Date(e),n=Date.now()-t.getTime(),r=Math.floor(n/6e4);if(r<1)return`gerade eben`;if(r<60)return`vor ${r} min`;let i=Math.floor(r/60);return i<24?`vor ${i}h`:t.toLocaleDateString(`de-DE`,{day:`2-digit`,month:`2-digit`})}catch{return e.slice(11,16)}}function Pr(e){try{let t=new Date(e),n=new Date;if(t.toDateString()===n.toDateString())return`Heute`;let r=new Date;return r.setDate(n.getDate()-1),t.toDateString()===r.toDateString()?`Gestern`:t.toLocaleDateString(`de-DE`,{weekday:`long`,day:`2-digit`,month:`2-digit`})}catch{return``}}function Fr({collapsed:e=!1,onToast:t,onNavigateToSettings:n,onNavigate:r}){let[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(null),[c,l]=(0,w.useState)(()=>Er()>Date.now()),[u,d]=(0,w.useState)(!1),[f,p]=(0,w.useState)(!1),m=(0,w.useRef)(null),h=(0,w.useRef)(null),g=(0,w.useRef)(!0),[_,v]=(0,w.useState)(!1),[y,b]=(0,w.useState)(0),x=(0,w.useRef)(0);(0,w.useEffect)(()=>{let e=!1;async function t(){try{let[t,n]=await Promise.all([V(`/api/elwosa/messages?limit=10`),V(`/api/elwosa/status`)]);if(e)return;a((t?.messages||[]).slice().reverse()),s(n)}catch{}}async function n(){try{await H(`/api/elwosa/heartbeat`,{}),e||await t()}catch{}}t(),n(),m.current=setInterval(t,Cr);let r=setInterval(n,wr),i=()=>{document.visibilityState===`visible`&&n()};return document.addEventListener(`visibilitychange`,i),()=>{e=!0,m.current&&clearInterval(m.current),clearInterval(r),document.removeEventListener(`visibilitychange`,i)}},[]),(0,w.useEffect)(()=>{if(!c)return;let e=Er()-Date.now();if(e<=0){l(!1);return}let t=setTimeout(()=>l(!1),e);return()=>clearTimeout(t)},[c]);function S(){let e=h.current;if(!e)return;let t=e.scrollHeight-e.scrollTop-e.clientHeight<30;g.current=t,t&&(v(!1),b(0))}function C(){let e=h.current;e&&(e.scrollTop=e.scrollHeight,g.current=!0,v(!1),b(0))}if((0,w.useLayoutEffect)(()=>{let e=h.current;if(!e)return;let t=i.length,n=t>x.current;if(g.current)e.scrollTop=e.scrollHeight;else if(n){let e=t-x.current;b(t=>t+e),v(!0)}x.current=t},[i]),!o||!o.is_active&&o.ai_state===`off`)return null;if(c&&!e)return(0,U.jsx)(`div`,{className:`px-3 py-2 text-[10px] text-muted/40`,children:(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{Dr(0),l(!1)},className:`flex items-center gap-1 hover:text-ink`,children:[(0,U.jsx)(xe,{size:12}),` Elwosa wieder einblenden`]})});if(c&&e)return null;async function T(e){try{await navigator.clipboard.writeText(e),t?.(`„${e}" kopiert — paste in deinen Claude-Chat`,`success`)}catch{t?.(`Kopieren fehlgeschlagen`,`danger`)}}async function E(e){try{await kt(`/api/elwosa/messages/${e}`),a(t=>t.filter(t=>t.id!==e))}catch{}}async function D(e){try{await H(`/api/elwosa/pause`,{minuten:e}),t?.(`Elwosa pausiert fuer ${e} Minuten`,`success`),d(!1)}catch{}}async function O(){if(confirm(`Elwosa-Verlauf wirklich loeschen?`))try{await Promise.all(i.map(e=>kt(`/api/elwosa/messages/${e.id}`))),a([]),t?.(`Verlauf geloescht`,`success`),d(!1)}catch{}}function k(){Dr(Date.now()+Tr),l(!0)}let A=(0,U.jsx)(`div`,{className:`flex h-6 w-6 shrink-0 items-center justify-center rounded-full bg-teal/15 text-[11px] font-semibold text-teal`,children:`E`});if(e){let e=i.some(e=>!e.read_at);return(0,U.jsxs)(`div`,{className:`relative flex justify-center py-2`,onMouseEnter:()=>p(!0),onMouseLeave:()=>p(!1),title:i[i.length-1]?.content||`Elwosa`,children:[(0,U.jsxs)(`div`,{className:`relative`,children:[A,e&&(0,U.jsx)(`span`,{className:`absolute -right-0.5 -top-0.5 h-2 w-2 rounded-full bg-teal animate-pulse`})]}),f&&i.length>0&&(0,U.jsxs)(`div`,{className:`absolute left-12 bottom-0 z-50 w-72 rounded-lg border border-white/10 bg-bg/95 p-3 shadow-xl backdrop-blur-md`,children:[(0,U.jsxs)(`div`,{className:`mb-2 flex items-center gap-2`,children:[A,(0,U.jsx)(`span`,{className:`text-[11px] font-medium text-ink`,children:`Elwosa`})]}),(0,U.jsx)(`div`,{className:`space-y-2`,children:i.slice(-3).map(e=>(0,U.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted/80`,children:jr(e.content,{onCopy:T,onPause:D,onNavigate:r})},e.id))})]})]})}let j=[],M=null;return i.forEach(e=>{let t=Pr(e.created_at);t!==M&&(j.push({type:`day`,label:t}),M=t),j.push({type:`msg`,msg:e})}),(0,U.jsxs)(`div`,{className:`border-t border-white/5 px-3 py-2`,children:[(0,U.jsxs)(`div`,{className:`mb-2 flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[A,(0,U.jsx)(`span`,{className:`text-[11px] font-semibold uppercase tracking-wider text-muted/70`,children:`Elwosa`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>n?.(`ai`),className:`text-muted/40 hover:text-ink`,title:`Elwosa-Einstellungen oeffnen`,children:(0,U.jsx)(et,{size:12})}),(0,U.jsx)(`button`,{type:`button`,onClick:k,className:`text-muted/40 hover:text-ink`,title:`Fuer 30 Minuten ausblenden`,children:(0,U.jsx)(be,{size:12})}),(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>d(!u),className:`text-muted/40 hover:text-ink`,title:`Menue`,children:(0,U.jsx)(ve,{size:12})}),u&&(0,U.jsxs)(`div`,{className:`absolute right-0 top-5 z-50 w-44 rounded-lg border border-white/10 bg-bg/95 py-1 shadow-xl backdrop-blur-md`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>D(60),className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,U.jsx)(Ue,{size:11}),` 1 Stunde pausieren`]}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>D(240),className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,U.jsx)(Ue,{size:11}),` 4 Stunden pausieren`]}),(0,U.jsxs)(`button`,{type:`button`,onClick:O,className:`flex w-full items-center gap-2 px-3 py-1.5 text-[11px] text-muted hover:bg-white/5`,children:[(0,U.jsx)(ot,{size:11}),` Verlauf loeschen`]})]})]})]})]}),(0,U.jsxs)(`div`,{className:`relative`,children:[(0,U.jsxs)(`div`,{ref:h,onScroll:S,className:`space-y-2 min-h-[80px] overflow-y-auto pr-1`,style:{maxHeight:`100%`},children:[i.length===0&&(0,U.jsx)(`p`,{className:`text-[10px] text-muted/40 italic`,children:o.ai_state===`active`?`Elwosa ist still. Wenn die AI arbeitet, redet sie.`:`Elwosa: ${o.ai_state}`}),j.map((e,t)=>{if(e.type===`day`)return(0,U.jsxs)(`div`,{className:`text-[9px] uppercase tracking-wider text-muted/30 pt-1`,children:[`── `,e.label,` ──`]},`day-${t}`);let n=e.msg;return(0,U.jsxs)(`div`,{className:`group rounded-md bg-white/[0.02] p-2 hover:bg-white/[0.04] transition-colors`,children:[(0,U.jsx)(`p`,{className:`text-[11px] leading-relaxed text-muted/85`,children:jr(n.content,{onCopy:T,onPause:D,onNavigate:r})}),(0,U.jsxs)(`div`,{className:`mt-1 flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`text-[9px] text-muted/30`,children:Nr(n.created_at)}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>E(n.id),className:`text-muted/20 opacity-0 group-hover:opacity-100 hover:text-coral transition-opacity`,title:`Diese Nachricht ausblenden`,children:(0,U.jsx)(yt,{size:11})})]})]},n.id)})]}),_&&(0,U.jsxs)(`button`,{type:`button`,onClick:C,className:`absolute bottom-1 left-1/2 -translate-x-1/2 flex items-center gap-1 rounded-full bg-teal/90 px-2.5 py-1 text-[10px] font-medium text-white shadow-lg hover:bg-teal transition-all`,title:`Zu den neuesten Nachrichten springen`,children:[(0,U.jsx)(L,{size:11}),y>0?`${y} neu`:`neueste`]})]})]})}var Ir=`pbp_dismissed_hints_v1`;function Lr(){try{let e=localStorage.getItem(Ir);if(!e)return new Set;let t=JSON.parse(e);return new Set(Array.isArray(t)?t:[])}catch{return new Set}}function Rr(e){try{localStorage.setItem(Ir,JSON.stringify(Array.from(e)))}catch{}}function zr({page:e,limit:t=2,onApply:n}){let[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(()=>Lr());(0,w.useEffect)(()=>{let n=!1;if(e)return fetch(`/api/learning/hints?page=${encodeURIComponent(e)}&limit=${t}`).then(e=>e.ok?e.json():null).then(e=>{n||!e||i(e.hints||[])}).catch(()=>{}),()=>{n=!0}},[e,t]);function s(e){o(t=>{let n=new Set(t);return n.add(e),Rr(n),n})}async function c(e){try{await fetch(`/api/learning/insights/${e}`,{method:`DELETE`})}catch{}s(e)}let l=r.filter(e=>!a.has(e.id));return l.length===0?null:(0,U.jsx)(`div`,{className:`space-y-1.5 mb-3`,children:l.map(e=>(0,U.jsxs)(`div`,{className:`flex items-start gap-2 p-2.5 rounded-lg border border-teal/20 bg-teal/[0.04] text-[12px]`,children:[(0,U.jsx)(Oe,{className:`h-4 w-4 text-teal mt-0.5 shrink-0`}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider text-teal/80`,children:(e.kind||``).replace(/_/g,` `)}),(0,U.jsx)(`span`,{className:`font-medium text-ink truncate`,children:e.title})]}),e.recommendation&&(0,U.jsx)(`p`,{className:`text-[11px] text-muted/70 mt-0.5`,children:e.recommendation}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 mt-1.5`,children:[n&&e.kind===`filter_recommendation`&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>n(e),className:`text-[11px] text-teal hover:underline`,children:`Vorschlag anwenden`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),className:`text-[11px] text-muted/40 hover:text-coral`,children:`Nicht mehr anzeigen`})]})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>s(e.id),className:`text-muted/40 hover:text-ink shrink-0`,title:`Fuer diese Sitzung ausblenden`,children:(0,U.jsx)(yt,{className:`h-4 w-4`})})]},e.id))})}function Br({jobHash:e,onClose:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(null),[o,s]=(0,w.useState)(!0);return(0,w.useEffect)(()=>{if(!e)return;let t=!1;return s(!0),V(`/api/jobs/${e}`).then(e=>{t||(r(e),s(!1))}).catch(e=>{t||(a(e.message||`Konnte Stelle nicht laden`),s(!1))}),()=>{t=!0}},[e]),e?(0,U.jsxs)(nr,{open:!0,title:`Stellendetails`,onClose:t,children:[o&&(0,U.jsx)(`p`,{className:`text-sm text-muted/70`,children:`Lade...`}),i&&(0,U.jsx)(`div`,{className:`rounded-lg border border-coral/20 bg-coral/[0.05] p-3 text-sm text-coral`,children:i}),n&&(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h3`,{className:`text-xl font-semibold text-ink`,children:n.title}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[n.company||`Unbekannt`,n.location?` — ${n.location}`:``]})]}),!n.is_active&&n.dismiss_reason&&(0,U.jsxs)(`div`,{className:`rounded-lg border border-amber/20 bg-amber/[0.04] p-2 text-[11px] text-amber/80`,children:[`Diese Stelle ist aussortiert`,` (${n.dismiss_reason})`,` — Read-Only-Ansicht.`]}),(n.salary_min||n.salary_max)&&(0,U.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Gehalt:`}),` `,n.salary_min?wn(n.salary_min):`?`,n.salary_max?` — ${wn(n.salary_max)}`:``,n.salary_period?` / ${n.salary_period}`:``]}),n.score!==null&&n.score!==void 0&&(0,U.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Score:`}),` `,n.score]}),n.source&&(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Quelle: `,(0,U.jsx)(`span`,{className:`font-mono`,children:n.source}),n.found_at&&` · gefunden ${Cn(n.found_at)}`]}),n.description&&(0,U.jsxs)(`details`,{open:!0,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/60`,children:`Beschreibung`}),(0,U.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-muted/80`,children:In(n.description,2e3)})]}),n.research_notes&&(0,U.jsxs)(`details`,{children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/60`,children:`Notizen`}),(0,U.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-muted/80`,children:n.research_notes})]}),(0,U.jsxs)(`div`,{className:`flex gap-2 pt-2`,children:[n.url&&(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:()=>window.open(n.url,`_blank`,`noopener`),children:[(0,U.jsx)(ye,{size:14}),`Original-URL`]}),(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:t,children:[(0,U.jsx)(yt,{size:14}),`Schliessen`]})]})]})]}):null}var Vr=`modulepreload`,Hr=function(e){return`/static/dashboard/`+e},Ur={},Wr=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}r=o(t.map(t=>{if(t=Hr(t,n),t in Ur)return;Ur[t]=!0;let r=t.endsWith(`.css`),i=r?`[rel="stylesheet"]`:``;if(n)for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}else if(document.querySelector(`link[href="${t}"]${i}`))return;let o=document.createElement(`link`);if(o.rel=r?`stylesheet`:Vr,r||(o.as=`script`),o.crossOrigin=``,o.href=t,a&&o.setAttribute(`nonce`,a),document.head.appendChild(o),r)return new Promise((e,n)=>{o.addEventListener(`load`,e),o.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},Gr={title:``,company:``,url:``,status:`beworben`,applied_at:new Date().toISOString().slice(0,10),notes:``},Kr=[`abgelehnt`,`zurueckgezogen`,`abgelaufen`],qr=[`interview`,`zweitgespraech`,`interview_abgeschlossen`],Jr={firmenrecherche:`Firmenrecherche`,skillgap:`Skill-Gap`,gehalt:`Gehalt`,markt:`Markt-Trends`,fit:`Fit-Analyse`,allgemein:`Allgemein`};function Yr({pushToast:e,onImported:t}){let n=(0,w.useRef)(null),[r,i]=(0,w.useState)(!1);return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`input`,{ref:n,type:`file`,accept:`.msg,.eml`,className:`hidden`,onChange:async r=>{let a=r.target.files?.[0];if(a){i(!0);try{let n=new FormData;n.append(`file`,a);let r=await fetch(`/api/emails/upload`,{method:`POST`,body:n}),i=await r.json();if(!r.ok){e(i.error||`E-Mail-Upload fehlgeschlagen`,`danger`);return}e(`E-Mail importiert${i.match?.application?` → ${i.match.application.company} (${Math.round(i.match.confidence*100)}%)`:` (nicht zugeordnet)`}${i.detected_status?.status?` | Status: ${i.detected_status.status}`:``}${i.meetings?.length?` | ${i.meetings.length} Termin(e)`:``}${i.imported_documents?` | ${i.imported_documents} Dokument(e)`:``}`,`success`),t?.()}catch(t){e(`Upload fehlgeschlagen: ${t.message}`,`danger`)}finally{i(!1),n.current&&(n.current.value=``)}}}}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>n.current?.click(),disabled:r,children:[(0,U.jsx)(Pe,{size:14,className:`mr-1`}),r?`Importiere...`:`E-Mail importieren`]})]})}function Xr(){let{chrome:e,reloadKey:t,refreshChrome:n,pushToast:r,navigateTo:i,intent:a,clearIntent:o,copyPrompt:s}=jt(),[c,l]=(0,w.useState)(!0),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)([]),[m,h]=(0,w.useState)([]),[g,_]=(0,w.useState)([]),[v,y]=(0,w.useState)(null),[b,x]=(0,w.useState)({total:0,filteredTotal:0,archivedCount:0}),[S,C]=(0,w.useState)({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),[T,E]=(0,w.useState)(`neueste`),[D,O]=(0,w.useState)({open:!1,draft:Gr}),[A,j]=(0,w.useState)({open:!1,entry:null}),[M,N]=(0,w.useState)(null),[P,ee]=(0,w.useState)({open:!1,application:null,final_salary:``,description:``,start_date:``}),[F,te]=(0,w.useState)(``),[re,L]=(0,w.useState)(null),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(null),[se,ce]=(0,w.useState)(``),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)(null),[pe,me]=(0,w.useState)(``),[he,ge]=(0,w.useState)([]),[ve,be]=(0,w.useState)(Gr.status),[xe,Ce]=(0,w.useState)([]),[B,we]=(0,w.useState)([]),[Te,Ee]=(0,w.useState)([]),[De,Oe]=(0,w.useState)(``),[ke,je]=(0,w.useState)(``),[Me,Ne]=(0,w.useState)(``),[Fe,Ie]=(0,w.useState)(!1),Re=(0,w.useDeferredValue)(S.query),ze=S.showArchived||Kr.includes(S.status),Be=(0,w.useEffectEvent)(async()=>{try{let[e,t,n,r]=await Promise.all([V(`/api/applications?limit=500&include_archived=${ze?`true`:`false`}`),V(`/api/follow-ups`),V(`/api/meetings`).catch(()=>({meetings:[]})),V(`/api/applications/zombies`).catch(()=>({zombies:[]}))]);(0,w.startTransition)(()=>{d(e?.applications||[]),x({total:Number(e?.total||0),filteredTotal:Number(e?.filtered_total||0),archivedCount:Number(e?.archived_count||0)}),p(t?.follow_ups||[]),h(n?.meetings||[]),_(r?.zombies||[]),l(!1)})}catch(e){r(`Bewerbungen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>l(!1))}});(0,w.useEffect)(()=>{l(!0),Be()},[t,ze]);async function Ve(e,t){t&&t.stopPropagation();try{await H(`/api/follow-ups/${e}/complete`,{}),r(`Nachfass als erledigt markiert.`,`success`),Be()}catch(e){r(`Konnte nicht abhaken: ${e.message}`,`danger`)}}(0,w.useEffect)(()=>{!a||a.page!==`bewerbungen`||(a.filter===`interview`?(C({query:``,status:`interview`,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(null),o()):a.filter===`followups_due`?(C({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(`followups_due`),o()):a.filter===`zombies`&&(C({query:``,status:``,fromDate:``,toDate:``,stellenart:``,showArchived:!1}),y(`zombies`),o()))},[a,o]);async function He(e,t,i={}){try{if(await Ot(`/api/applications/${e}/status`,{status:t}),d(n=>n.map(n=>n.id===e?{...n,status:t}:n)),i.reloadTimeline&&await qe(e),await n({quiet:!0,forceReload:!0}),r(`Status aktualisiert.`,`success`),t===`angenommen`){let t=u.find(t=>t.id===e)||A.entry?.application||{id:e};ee({open:!0,application:t,final_salary:t.final_salary||``,description:``,start_date:new Date().toISOString().slice(0,10)})}}catch(e){i.rollbackStatus&&be(i.rollbackStatus),r(`Status konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function Ue(){let e=P.application;if(!e?.id){ee({open:!1,application:null,final_salary:``,description:``,start_date:``});return}try{P.final_salary&&P.final_salary!==(e.final_salary||``)&&await Ot(`/api/applications/${e.id}`,{final_salary:P.final_salary}),await H(`/api/applications/${e.id}/adopt-position`,{start_date:P.start_date||void 0,description:P.description||void 0}),r(`Position ins Profil uebernommen und Gehalt gespeichert.`,`success`),await n({quiet:!0,forceReload:!0})}catch(e){r(`Konnte Abschluss nicht speichern: ${e.message}`,`danger`)}finally{ee({open:!1,application:null,final_salary:``,description:``,start_date:``})}}async function We(){try{await H(`/api/applications`,D.draft),O({open:!1,draft:Gr}),await n(),r(`Bewerbung angelegt.`,`success`)}catch(e){r(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function Ke(e){try{let[t,n,r,i,a]=await Promise.all([V(`/api/application/${e.id}/timeline`),V(`/api/documents`),V(`/api/applications/${e.id}/meetings`).catch(()=>({meetings:[]})),V(`/api/applications/${e.id}/emails`).catch(()=>({emails:[]})),V(`/api/applications/${e.id}/tasks`).catch(()=>[])]);j({open:!0,entry:t}),be(t?.application?.status||Gr.status),ge(n?.documents||[]),Ce(r?.meetings||[]),we(i?.emails||[]),Ee(Array.isArray(a)?a:[]),Oe(``),Ne(t?.job?.research_notes||``),te(``),L(null),ue(``)}catch(e){r(`Timeline konnte nicht geladen werden: ${e.message}`,`danger`)}}async function qe(e){try{let t=await V(`/api/application/${e}/timeline`);j(e=>({...e,entry:t})),be(t?.application?.status||Gr.status)}catch{}}async function Ye(e){try{let t=await V(`/api/applications/${e}/tasks`);Ee(Array.isArray(t)?t:[])}catch{}}async function Xe(){let e=A.entry?.application?.id,t=(De||``).trim();if(!(!e||!t))try{await H(`/api/applications/${e}/tasks`,{titel:t,faellig_am:ke||void 0}),Oe(``),je(``),await Ye(e)}catch(e){r(`Todo konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function Qe(e){let t=A.entry?.application?.id;if(!t)return;let n=e.status===`erledigt`;try{await H(`/api/tasks/${e.id}/${n?`reopen`:`complete`}`,{}),await Ye(t)}catch(e){r(`Todo-Status fehlgeschlagen: ${e.message}`,`danger`)}}async function $e(e){let t=A.entry?.application?.id;if(t)try{await kt(`/api/tasks/${e.id}`),await Ye(t)}catch(e){r(`Todo loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function et(e){let t=A.entry?.application?.id,n=A.entry?.application?.status||Gr.status;!t||!e||e===n||(be(e),await He(t,e,{reloadTimeline:!0,rollbackStatus:n}))}async function tt(e=null){let t=e?pe.trim():F.trim();if(!t)return;let n=A.entry?.application?.id;if(n)try{await H(`/api/applications/${n}/notes`,{text:t,parent_event_id:e}),e?(me(``),fe(null)):te(``),await qe(n),r(`Notiz hinzugefügt.`,`success`)}catch(e){r(`Notiz konnte nicht gespeichert werden: ${e.message}`,`danger`)}}async function nt(e){let t=R.trim();if(!t)return;let n=A.entry?.application?.id;if(n)try{await Ot(`/api/applications/${n}/notes/${e}`,{text:t}),L(null),ae(``),await qe(n),r(`Notiz aktualisiert.`,`success`)}catch(e){r(`Notiz konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function rt(e){let t=A.entry?.application?.id;if(t)try{await kt(`/api/applications/${t}/notes/${e}`),await qe(t),r(`Notiz gelöscht.`,`success`)}catch(e){r(`Notiz konnte nicht gelöscht werden: ${e.message}`,`danger`)}}async function it(e){let t=A.entry?.application?.id;if(!t)return;let n=(se||``).trim();if(!n){r(`Bitte ein Datum eingeben.`,`danger`);return}try{await Ot(`/api/applications/${t}/events/${e}/date`,{event_date:n}),z(null),ce(``),await qe(t),r(`Event-Datum korrigiert.`,`success`)}catch(e){r(`Datum konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function at(e){let t=A.entry?.application?.id;if(t)try{await H(`/api/applications/${t}/link-document`,{document_id:e}),await qe(t),r(`Dokument verknüpft.`,`success`)}catch(e){r(`Verknüpfung fehlgeschlagen: ${e.message}`,`danger`)}}if(c)return(0,U.jsx)(tr,{label:`Bewerbungen werden geladen...`});let st=new Set(f.filter(e=>e.faellig).map(e=>e.application_id).filter(Boolean)),ct=new Set(g.map(e=>e.id).filter(Boolean)),lt=u.filter(e=>{let t=`${e.title||``} ${e.company||``} ${e.notes||``}`.toLowerCase(),n=!Re||t.includes(Re.toLowerCase()),r=!S.status||(S.status===`interview`?qr.includes(e.status):e.status===S.status),i=(!S.fromDate||(e.applied_at||``)>=S.fromDate)&&(!S.toDate||(e.applied_at||``)<=S.toDate+`T23:59:59`),a=!S.stellenart||(S.stellenart===`freelance`?e.job_employment_type&&e.job_employment_type!==`festanstellung`:e.job_employment_type===`festanstellung`||!e.job_employment_type),o=!v||v===`followups_due`&&st.has(e.id)||v===`zombies`&&ct.has(e.id);return n&&r&&i&&a&&o}),ut={angebot:0,interview_abgeschlossen:1,zweitgespraech:2,interview:3,warte_auf_rueckmeldung:4,eingangsbestaetigung:5,beworben:6,in_vorbereitung:7,entwurf:8,angenommen:9,abgelehnt:10,zurueckgezogen:11,abgelaufen:12},ft=[...lt].sort((e,t)=>{if(T===`firma`)return(e.company||``).localeCompare(t.company||``,`de`);if(T===`status`){let n=ut[e.status]??99,r=ut[t.status]??99;return n===r?(t.applied_at||``).localeCompare(e.applied_at||``):n-r}return(t.applied_at||t.created_at||``).localeCompare(e.applied_at||e.created_at||``)}),pt=f.filter(e=>e.faellig),mt=Number(b.archivedCount||0),gt=u.filter(e=>!Kr.includes(e.status)).length,vt=u.filter(e=>Kr.includes(e.status)).length,bt=u.filter(e=>qr.includes(e.status)).length,xt=u.filter(e=>[`in_vorbereitung`,`entwurf`].includes(e.status)).length,St=Number(e.workspace?.jobs?.active||0),Ct=u.map(e=>Date.parse(e?.applied_at||e?.created_at||e?.updated_at||``)).filter(e=>Number.isFinite(e)),wt=(()=>{if(!u.length)return 0;if(!Ct.length)return u.length;let e=Math.min(...Ct),t=Math.max(1,Math.ceil((Date.now()-e)/(1e3*60*60*24))+1);return u.length/(t/7)})(),Tt=new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:wt>0&&wt<10?1:0,maximumFractionDigits:wt>0&&wt<10?1:0}).format(wt),Dt=(()=>{if(pt.length>0)return{badge:`Priorität 1`,tone:`danger`,title:`Fällige Nachfassaktionen zuerst schließen`,description:`${pt.length} Follow-up(s) sind fällig oder überfällig. Aktualisiere Status und Notizen, bevor neue Fälle liegen bleiben.`,actionLabel:`Fällige anzeigen`,action:()=>{y(`followups_due`),setTimeout(()=>{let e=document.getElementById(`offene-aktionen`);e?.scrollIntoView&&e.scrollIntoView({behavior:`smooth`,block:`start`})},50)}};if(xt>0){let e=u.some(e=>e.status===`in_vorbereitung`)?`in_vorbereitung`:`entwurf`;return{badge:`Entwürfe`,tone:`amber`,title:`Fast fertige Bewerbungen abschließen`,description:`${xt} Bewerbung(en) stehen noch auf Entwurf oder Vorbereitung. Zieh zuerst die halbfertigen Fälle über die Ziellinie.`,actionLabel:`Entwürfe filtern`,action:()=>C(t=>({...t,status:e,showArchived:!1}))}}return!gt&&St>0?{badge:`Start`,tone:`sky`,title:`Aus vorhandenen Stellen die erste Bewerbung machen`,description:`${St} aktive Stellen sind da, aber noch keine aktive Bewerbung. Nutze eine Stelle als Startpunkt oder lege manuell eine Bewerbung an.`,actionLabel:`Bewerbung anlegen`,action:()=>O({open:!0,draft:Gr})}:bt>0?{badge:`Interview`,tone:`amber`,title:`Interview-Phase eng begleiten`,description:`${bt} Bewerbung(en) stehen im Interview oder Zweitgespräch. Halte Status, Termine und Notizen bewusst zusammen.`,actionLabel:`Interview filtern`,action:()=>C(e=>({...e,status:`interview`,showArchived:!1}))}:mt>0&&!S.showArchived&&!Kr.includes(S.status)?{badge:`Archiv`,tone:`neutral`,title:`Archivierte Bewerbungen bleiben bewusst aus dem Weg`,description:`${mt} ältere Fälle liegen im Archiv. Blende sie nur ein, wenn du Gründe, Quellen oder alte Kontakte prüfen willst.`,actionLabel:`Archiv einblenden`,action:()=>C(e=>({...e,showArchived:!0}))}:{badge:`Auf Kurs`,tone:`success`,title:`Bewerbungsboard ist gerade sauber`,description:`Im Moment ist nichts akut liegen geblieben. Nutze die Liste für klare Statuspflege statt nur zum Sammeln.`}})();return(0,U.jsxs)(`div`,{id:`page-bewerbungen`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Bewerbungen`}),(0,U.jsx)(zr,{page:`bewerbungen`}),M&&(0,U.jsx)(Br,{jobHash:M,onClose:()=>N(null)}),(0,U.jsx)(`div`,{className:`mb-6 flex items-baseline justify-end gap-4`,children:(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(Gn,{size:`sm`,href:Et(`/api/cv/export/docx`),target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(_e,{size:14}),`CV als DOCX`]}),(0,U.jsxs)(G,{size:`sm`,onClick:()=>O({open:!0,draft:Gr}),children:[(0,U.jsx)(Je,{size:14}),`Bewerbung`]})]})}),(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,U.jsx)(Jn,{label:S.showArchived||Kr.includes(S.status)?`Sichtbare Bewerbungen`:`Aktive Bewerbungen`,value:S.showArchived||Kr.includes(S.status)?u.length:gt,note:mt>0?`${gt} aktiv · ${mt} archiviert`:`${St} aktive Stellen im Board`,tone:`sky`}),(0,U.jsx)(Jn,{label:`Bewerbungen pro Woche`,value:Tt,note:`Ø seit erster Bewerbung`,tone:`sky`}),(0,U.jsx)(Jn,{label:`Follow-ups`,value:pt.length,note:`Offene Nachfassaktionen`,tone:pt.length?`danger`:`neutral`}),(0,U.jsx)(Jn,{label:`Interviews`,value:bt,note:`Aktive Interview-Phase`,tone:`amber`})]}),(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(q,{tone:Dt.tone,children:Dt.badge}),mt>0&&!S.showArchived&&!Kr.includes(S.status)?(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[mt,` archivierte Fälle sind aktuell ausgeblendet.`]}):null]}),(0,U.jsx)(`h2`,{className:`mt-3 text-base font-semibold text-ink`,children:Dt.title}),(0,U.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:Dt.description})]}),Dt.actionLabel?(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:Dt.action,children:Dt.actionLabel}):null]})}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Filter`,description:`Schneller Blick auf einzelne Status-Cluster.`}),v&&(0,U.jsxs)(`div`,{className:`mb-3 flex items-center gap-2 rounded-xl border border-sky/25 bg-sky/10 px-3 py-2 text-xs text-sky`,children:[(0,U.jsx)(`span`,{className:`font-semibold`,children:v===`followups_due`?`Filter: Nachfrage faellig`:`Filter: Seit > 60 Tagen ohne Antwort`}),(0,U.jsxs)(`span`,{className:`text-muted/60`,children:[`(`,lt.length,v===`followups_due`?` von ${st.size}`:` von ${ct.size}`,`)`]}),(0,U.jsx)(`button`,{type:`button`,className:`ml-auto rounded-md px-2 py-0.5 hover:bg-sky/20`,onClick:()=>y(null),children:`Filter zuruecksetzen`})]}),(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[(0,U.jsxs)(G,{size:`sm`,variant:S.showArchived?`secondary`:`ghost`,onClick:()=>C(e=>({...e,showArchived:!e.showArchived})),children:[(0,U.jsx)(k,{size:14}),S.showArchived?`Archiv eingeblendet`:`Archivierte anzeigen`]}),mt>0?(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[mt,` archivierte Bewerbung(en)`,vt>0?`, davon ${vt} sichtbar`:``,`.`]}):(0,U.jsx)(`span`,{className:`text-xs text-muted/50`,children:`Zurzeit keine archivierten Bewerbungen.`})]}),(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-[minmax(0,1fr)_14rem_10rem_10rem_10rem]`,children:[(0,U.jsx)(J,{label:`Suche`,children:(0,U.jsx)(Y,{value:S.query,onChange:e=>C(t=>({...t,query:e.target.value})),placeholder:`Titel, Firma oder Notizen`})}),(0,U.jsx)(J,{label:`Status`,children:(0,U.jsxs)(Qn,{value:S.status,onChange:e=>C(t=>({...t,status:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Alle`}),(0,U.jsx)(`option`,{value:`in_vorbereitung`,children:`In Vorbereitung`}),(0,U.jsx)(`option`,{value:`entwurf`,children:`Entwurf`}),(0,U.jsx)(`option`,{value:`beworben`,children:`Beworben`}),(0,U.jsx)(`option`,{value:`interview`,children:`Interview`}),(0,U.jsx)(`option`,{value:`zweitgespraech`,children:`Zweitgespräch`}),(0,U.jsx)(`option`,{value:`interview_abgeschlossen`,children:`Interview abgeschlossen`}),(0,U.jsx)(`option`,{value:`angebot`,children:`Angebot`}),(0,U.jsx)(`option`,{value:`abgelehnt`,children:`Abgelehnt`}),(0,U.jsx)(`option`,{value:`zurueckgezogen`,children:`Zurückgezogen`}),(0,U.jsx)(`option`,{value:`abgelaufen`,children:`Abgelaufen`})]})}),(0,U.jsx)(J,{label:`Stellenart`,children:(0,U.jsxs)(Qn,{value:S.stellenart,onChange:e=>C(t=>({...t,stellenart:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Alle`}),(0,U.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,U.jsx)(`option`,{value:`freelance`,children:`Freelance`})]})}),(0,U.jsx)(J,{label:`Von`,children:(0,U.jsx)(Y,{type:`date`,value:S.fromDate,onChange:e=>C(t=>({...t,fromDate:e.target.value}))})}),(0,U.jsx)(J,{label:`Bis`,children:(0,U.jsx)(Y,{type:`date`,value:S.toDate,onChange:e=>C(t=>({...t,toDate:e.target.value}))})})]})]}),(f.length>0||m.length>0)&&(0,U.jsxs)(`div`,{id:`offene-aktionen`,className:`mb-6 grid gap-4 xl:grid-cols-[2fr_1fr]`,children:[(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(qn,{title:`Offene Aktionen (${m.length+f.length})`}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>i(`kalender`,{filter:`followups`}),children:`Alle im Kalender`})]}),(0,U.jsxs)(`div`,{className:`grid gap-1.5`,children:[m.slice(0,5).map(e=>(0,U.jsxs)(`div`,{title:`${e.title||`Termin`} — ${e.app_company||``}`,onClick:()=>e.application_id?Ke({id:e.application_id}):i(`kalender`),className:`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm cursor-pointer transition-colors min-w-0 bg-teal/8 border border-teal/15 hover:bg-teal/15`,children:[(0,U.jsx)(ne,{size:14,className:`shrink-0 text-teal`}),(0,U.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-ink font-medium`,children:[e.title||`Termin`,e.app_company?` \u2014 ${e.app_company}`:``]}),(0,U.jsx)(`span`,{className:`shrink-0 text-xs text-muted/50`,children:Sn(e.meeting_date)}),(0,U.jsx)(q,{tone:`success`,children:`Termin`})]},`m-${e.id}`)),m.length>5&&(0,U.jsxs)(`p`,{className:`text-xs text-muted/40 px-3 pt-1`,children:[`+`,m.length-5,` weitere Termine im Kalender`]}),f.slice(0,5).map(e=>(0,U.jsxs)(`div`,{title:`${e.title} — ${e.company}`,onClick:()=>Ke({id:e.application_id}),className:W(`flex items-center gap-2.5 rounded-lg px-3 py-2 text-sm cursor-pointer transition-colors min-w-0`,e.faellig?`bg-coral/8 border border-coral/15 hover:bg-coral/15`:`bg-white/[0.03] border border-white/5 hover:bg-white/[0.07]`),children:[(0,U.jsx)(I,{size:14,className:W(`shrink-0`,e.faellig?`text-coral`:`text-muted/40`)}),(0,U.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-ink font-medium`,children:[e.title,` — `,e.company]}),(0,U.jsx)(`span`,{className:`shrink-0 text-xs text-muted/50`,children:Sn(e.scheduled_date)}),(0,U.jsx)(q,{tone:e.faellig?`danger`:`sky`,children:e.faellig?`Fällig`:`Geplant`}),(0,U.jsx)(`button`,{type:`button`,title:`Als erledigt markieren`,onClick:t=>Ve(e.id,t),className:`shrink-0 rounded-md p-1 text-teal/70 hover:bg-teal/10 hover:text-teal transition-colors`,children:(0,U.jsx)(ie,{size:15})})]},e.id)),f.length>5&&(0,U.jsxs)(`p`,{className:`text-xs text-muted/40 px-3 pt-1`,children:[`+`,f.length-5,` weitere Nachfragen im Kalender`]})]})]}),(0,U.jsxs)(K,{className:`rounded-2xl xl:self-start`,children:[(0,U.jsxs)(`h2`,{className:`text-sm font-semibold text-ink`,children:[(0,U.jsx)(dt,{size:14,className:`mr-1.5 inline-block text-teal/60`}),`Schnell-Import`]}),(0,U.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/50`,children:`Dokumente oder E-Mails hier ablegen.`}),(0,U.jsx)(`div`,{className:`mt-3 grid gap-2`,children:(0,U.jsx)(Yr,{pushToast:r,onImported:()=>loadData()})}),(0,U.jsx)(`div`,{className:`mt-3 rounded-lg border border-dashed border-white/10 p-4 text-center text-xs text-muted/40`,children:`Dateien per Drag & Drop auf die Seite ziehen`})]})]}),(0,U.jsx)(`div`,{children:(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 mb-4`,children:[(0,U.jsx)(qn,{title:`Bewerbungen`,description:`Statuswechsel werden direkt in der Historie vermerkt.`}),(0,U.jsx)(`div`,{className:`flex gap-1.5`,children:[[`neueste`,`Neueste`],[`status`,`Status`],[`firma`,`Firma A-Z`]].map(([e,t])=>(0,U.jsx)(`button`,{type:`button`,className:W(`rounded-lg px-3 py-1.5 text-xs font-medium transition`,T===e?`bg-sky/20 text-sky`:`text-muted hover:text-ink hover:bg-white/5`),onClick:()=>E(e),children:t},e))})]}),(0,U.jsx)(`div`,{className:`grid gap-4`,children:ft.length?ft.map(e=>(0,U.jsxs)(K,{className:W(`flex flex-col rounded-xl shadow-none`,e.job_employment_type&&e.job_employment_type!==`festanstellung`?`border border-emerald-600/40 bg-emerald-950/20`:`glass-card-soft`),children:[(0,U.jsxs)(`div`,{className:`flex-1 space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(q,{tone:Tn(e.status),children:e.status||`offen`}),(0,U.jsx)(`button`,{className:`font-mono text-[10px] text-muted/40 hover:text-sky cursor-pointer transition-colors`,title:`ID: ${e.id} — Klicken zum Kopieren`,onClick:t=>{t.stopPropagation(),navigator.clipboard.writeText(e.id),r(`ID ${e.id.slice(0,8)} kopiert`,`success`)},children:e.id?.slice(0,8)}),(0,U.jsx)(`span`,{className:`text-xs font-medium text-muted`,children:Sn(e.applied_at)}),e.applied_at&&(()=>{let t=Math.floor((Date.now()-Date.parse(e.applied_at))/864e5);return t>0?(0,U.jsxs)(`span`,{className:`text-xs text-muted/40`,children:[`vor `,t,`d`]}):null})(),e.document_count>0&&(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1 text-xs text-muted/50`,children:[(0,U.jsx)(Se,{size:12}),` `,e.document_count]}),e.is_imported?(0,U.jsx)(q,{tone:`neutral`,children:`Import`}):null,e.bewerbungsart&&e.bewerbungsart!==`mit_dokumenten`&&(0,U.jsx)(q,{tone:`neutral`,children:e.bewerbungsart===`ueber_portal`?`Portal`:e.bewerbungsart===`elektronisch`?`E-Mail`:e.bewerbungsart}),e.job_employment_type&&e.job_employment_type!==`festanstellung`&&(0,U.jsx)(q,{tone:`success`,children:`Freelance`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`h3`,{className:`text-xl font-semibold text-ink cursor-pointer hover:text-sky transition-colors`,onClick:()=>Ke(e),children:e.title}),e.url?(0,U.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noreferrer`,className:`text-muted/40 hover:text-sky transition-colors`,title:`Stellenanzeige öffnen`,children:(0,U.jsx)(ye,{size:14})}):null]}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[e.company,e.ansprechpartner?` — ${e.ansprechpartner}`:``]}),e.notes?(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:In(e.notes,150)}):null,e.last_note?(0,U.jsxs)(`p`,{className:`text-xs text-muted/40 truncate`,children:[`Letzte Notiz: `,In(e.last_note,100)]}):null]}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-3 border-t border-white/[0.06] pt-4`,children:[(0,U.jsx)(Qn,{value:e.status||`beworben`,onChange:t=>He(e.id,t.target.value),children:bn.map(e=>(0,U.jsx)(`option`,{value:e.value,children:e.label},e.value))}),(0,U.jsxs)(G,{variant:`secondary`,onClick:()=>Ke(e),children:[(0,U.jsx)(_t,{size:15}),`Timeline`]}),e.url&&(0,U.jsx)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,children:(0,U.jsxs)(G,{variant:`secondary`,type:`button`,onClick:e=>e.stopPropagation(),children:[(0,U.jsx)(ye,{size:15}),`Stellenanzeige`]})})]})]},e.id)):(0,U.jsx)(er,{title:mt>0&&!S.showArchived?`Keine aktiven Bewerbungen im Filter`:`Noch keine Bewerbungen`,description:mt>0&&!S.showArchived?`Aktive Bewerbungen passen gerade nicht zum Filter. Archivierte Fälle kannst du oben gezielt einblenden.`:`Lege eine neue Bewerbung an oder übernimm sie direkt aus einer Stelle.`,action:(0,U.jsx)(G,{onClick:()=>O({open:!0,draft:Gr}),children:`Bewerbung anlegen`})})})]})})]}),(0,U.jsx)(nr,{open:D.open,title:`Neue Bewerbung`,onClose:()=>O({open:!1,draft:Gr}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>O({open:!1,draft:Gr}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:We,children:`Bewerbung speichern`})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[[`title`,`company`,`url`,`applied_at`].map(e=>(0,U.jsx)(J,{label:e,children:(0,U.jsx)(Y,{value:D.draft[e]||``,onChange:t=>O(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e)),(0,U.jsx)(J,{label:`Status`,children:(0,U.jsx)(Qn,{value:D.draft.status,onChange:e=>O(t=>({...t,draft:{...t.draft,status:e.target.value}})),children:bn.filter(e=>![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.value)).map(e=>(0,U.jsx)(`option`,{value:e.value,children:e.label},e.value))})}),(0,U.jsx)(J,{label:`Notizen`,children:(0,U.jsx)(Xn,{rows:4,value:D.draft.notes,onChange:e=>O(t=>({...t,draft:{...t.draft,notes:e.target.value}}))})})]})}),(0,U.jsx)(nr,{open:A.open,title:`Timeline - ${A.entry?.application?.title||``}`,onClose:()=>j({open:!1,entry:null}),size:`xl`,footer:(()=>{let e=A.entry?.application?.id,t=t=>{let n=new URLSearchParams;return t.dokumente?n.set(`dokumente`,`1`):n.set(`dokumente`,`0`),t.mails?n.set(`mails`,`1`):n.set(`mails`,`0`),t.pdf&&n.set(`pdf`,`1`),`/api/application/${e}/export.zip?${n}`};return(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(Gn,{size:`sm`,href:`/api/application/${e}/timeline/print`,target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(_e,{size:14}),` Protokoll drucken`]}),(0,U.jsxs)(Gn,{size:`sm`,variant:`ghost`,href:t({dokumente:!0,mails:!0,pdf:!1}),title:`Komplettes Dossier als ZIP herunterladen (Bericht, Stelle, Notizen, Termine.ics, Mails, Dokumente)`,children:[(0,U.jsx)(_e,{size:14}),` Als ZIP exportieren`]}),(0,U.jsxs)(Gn,{size:`sm`,variant:`ghost`,href:t({dokumente:!0,mails:!0,pdf:!0}),title:`ZIP mit zusaetzlichem PDF-Bericht (etwas langsamer, da Browser im Hintergrund rendert)`,children:[(0,U.jsx)(_e,{size:14}),` ZIP + PDF`]})]}),(0,U.jsx)(G,{onClick:()=>j({open:!1,entry:null}),children:`Schließen`})]})})(),children:(0,U.jsxs)(`div`,{className:`grid gap-5`,children:[A.entry?.application&&(()=>{let e=A.entry.application;return(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Bewerbung`}),(0,U.jsx)(`button`,{className:`font-mono text-[10px] text-muted/30 hover:text-sky cursor-pointer`,title:`Bewerbung-ID: ${e.id}`,onClick:()=>{navigator.clipboard.writeText(e.id),r(`ID ${e.id?.slice(0,8)} kopiert`,`success`)},children:e.id?.slice(0,8)}),e.job_hash&&(0,U.jsxs)(`button`,{className:`font-mono text-[10px] text-muted/30 hover:text-sky cursor-pointer`,title:`Stelle anzeigen`,onClick:()=>N(e.job_hash),children:[(0,U.jsx)(ye,{size:8,className:`mr-0.5 inline`}),`Stelle: `,e.job_hash?.slice(0,8)]})]}),(0,U.jsx)(`h3`,{className:`mt-1 text-base font-semibold text-ink`,children:e.title}),(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:e.company}),(e.vermittler||e.endkunde)&&(0,U.jsxs)(`div`,{className:`mt-1 flex flex-wrap gap-2 text-xs text-muted/60`,children:[e.vermittler&&(0,U.jsxs)(`span`,{children:[`Vermittler: `,e.vermittler]}),e.endkunde&&(0,U.jsxs)(`span`,{children:[`Endkunde: `,e.endkunde]})]})]}),(0,U.jsx)(q,{tone:Tn(e.status),children:e.status})]}),(e.ansprechpartner||e.kontakt_email)&&(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-3 text-sm text-muted/70`,children:[e.ansprechpartner&&(0,U.jsxs)(`span`,{children:[`Kontakt: `,e.ansprechpartner]}),e.kontakt_email&&(()=>{let t=Nn({to:e.kontakt_email});return t?(0,U.jsx)(`a`,{href:t,className:`text-sky hover:underline`,children:e.kontakt_email}):(0,U.jsx)(`span`,{children:e.kontakt_email})})()]}),(0,U.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-3`,children:[e.portal_name&&(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Portal: `,e.portal_name]}),(e.url||A.entry.job?.url)&&(0,U.jsxs)(`a`,{href:e.url||A.entry.job?.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 text-xs text-sky hover:underline`,children:[(0,U.jsx)(ye,{size:12}),`Stellenanzeige öffnen`]})]}),(0,U.jsxs)(`div`,{className:`mt-1 flex items-center gap-2`,children:[e.applied_at&&(0,U.jsxs)(`span`,{className:`text-xs text-muted/40`,children:[`Beworben am: `,Sn(e.applied_at)]}),e.is_imported?(0,U.jsx)(q,{tone:`neutral`,children:`Importiert`}):null]}),(0,U.jsxs)(`details`,{className:`mt-3 border-t border-white/[0.06] pt-3`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer text-sm font-medium text-muted/60 hover:text-ink flex items-center gap-1.5`,children:[(0,U.jsx)(Ge,{size:13}),`Bewerbung bearbeiten`]}),(0,U.jsxs)(`div`,{className:`mt-3 grid gap-3 sm:grid-cols-2`,children:[[{key:`title`,label:`Stellentitel`},{key:`company`,label:`Firma (Endkunde)`},{key:`vermittler`,label:`Vermittler`},{key:`endkunde`,label:`Endkunde`},{key:`ansprechpartner`,label:`Ansprechpartner`},{key:`kontakt_email`,label:`Kontakt-E-Mail`},{key:`gehaltsvorstellung`,label:`Gehaltsvorstellung`,placeholder:`z.B. 65.000€/Jahr, 850€/Tag`},{key:`final_salary`,label:`Tatsächliches Gehalt (nach Zusage)`,placeholder:`z.B. 72.000€/Jahr`},{key:`portal_name`,label:`Portal`},{key:`url`,label:`URL`}].map(({key:t,label:n,placeholder:i})=>(0,U.jsx)(J,{label:n,children:(0,U.jsx)(Y,{defaultValue:e[t]||``,placeholder:i||``,onBlur:async i=>{let a=i.target.value;if(a!==(e[t]||``))try{await Ot(`/api/applications/${e.id}`,{[t]:a}),await qe(e.id),r(`${n} aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}}})},t)),(0,U.jsx)(J,{label:`Stellenart`,children:(0,U.jsxs)(Qn,{value:e.job_employment_type||`festanstellung`,onChange:async t=>{let n=t.target.value;try{await Ot(`/api/applications/${e.id}`,{employment_type:n}),await qe(e.id),r(`Stellenart aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},children:[(0,U.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,U.jsx)(`option`,{value:`freelance`,children:`Freelance`}),(0,U.jsx)(`option`,{value:`praktikum`,children:`Praktikum`}),(0,U.jsx)(`option`,{value:`werkstudent`,children:`Werkstudent`})]})}),(0,U.jsx)(J,{label:`Bewerbungsdatum`,children:(0,U.jsx)(Y,{type:`date`,defaultValue:(e.applied_at||``).slice(0,10),onBlur:async t=>{let n=t.target.value;if(n!==(e.applied_at||``).slice(0,10))try{await Ot(`/api/applications/${e.id}`,{applied_at:n}),await qe(e.id),r(`Bewerbungsdatum aktualisiert.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}}})}),(0,U.jsx)(J,{label:`Importiert`,children:(0,U.jsxs)(`label`,{className:`flex items-center gap-2 cursor-pointer mt-2`,children:[(0,U.jsx)(`input`,{type:`checkbox`,defaultChecked:!!e.is_imported,onChange:async t=>{try{await Ot(`/api/applications/${e.id}`,{is_imported:t.target.checked?1:0}),await qe(e.id),r(t.target.checked?`Als importiert markiert.`:`Import-Markierung entfernt.`,`success`)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},className:`rounded border-white/20 bg-white/5 text-sky focus:ring-sky/30`}),(0,U.jsx)(`span`,{className:`text-sm text-muted/60`,children:`Bewerbung existierte vor PBP`})]})})]})]}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-end gap-3 border-t border-white/[0.06] pt-4`,children:[(0,U.jsx)(J,{className:`min-w-[14rem] flex-1`,label:`Status direkt ändern`,children:(0,U.jsx)(Qn,{value:ve,onChange:e=>et(e.target.value),children:bn.map(e=>(0,U.jsx)(`option`,{value:e.value,children:e.label},e.value))})}),(0,U.jsx)(`p`,{className:`pb-2 text-xs text-muted/50`,children:`Der Status wird sofort gespeichert und als Timeline-Eintrag protokolliert.`})]})]})})(),A.entry?.job?(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Stellendetails`}),(0,U.jsx)(`h3`,{className:`mt-2 text-base font-semibold text-ink`,children:A.entry.job.title}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[A.entry.job.company,A.entry.job.location?` — ${A.entry.job.location}`:``]}),(0,U.jsxs)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:[(0,U.jsx)(q,{tone:`sky`,children:A.entry.job.source||`Quelle`}),(0,U.jsxs)(q,{tone:`amber`,children:[`Score `,A.entry.job.score||0]}),A.entry.job.remote_level&&A.entry.job.remote_level!==`unbekannt`?(0,U.jsx)(q,{tone:`success`,children:A.entry.job.remote_level}):null]}),A.entry.job.salary_min?(0,U.jsxs)(`p`,{className:`mt-2 text-sm text-ink`,children:[`Gehalt: `,wn(A.entry.job.salary_min),A.entry.job.salary_max?` bis ${wn(A.entry.job.salary_max)}`:``,A.entry.job.salary_estimated?` (geschätzt)`:``]}):null,A.entry.job.url&&(0,U.jsx)(`a`,{href:A.entry.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`mt-2 inline-flex items-center gap-1 text-sm text-sky hover:underline`,children:`Stellenanzeige öffnen`}),A.entry.job.description&&(0,U.jsxs)(`details`,{className:`mt-3`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-sm font-medium text-muted/60 hover:text-ink`,children:`Stellenbeschreibung anzeigen`}),(0,U.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto rounded-lg bg-white/[0.02] p-3 text-sm text-muted/70 whitespace-pre-wrap`,children:A.entry.job.description})]})]}):null,A.entry?.job?(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Firmen-Recherche`}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>{let e=A.entry.application||{};s(`/firmen_recherche firma="${e.endkunde&&e.endkunde.trim()||e.company&&e.company.trim()||A.entry.job?.company||``}"`)},children:`Mit Claude aktualisieren`})]}),(0,U.jsx)(Xn,{rows:6,value:Me,onChange:e=>Ne(e.target.value),placeholder:`Notizen zur Firma — Kennzahlen, Kultur, News, Ansprechpartner. Claude kann das per Button oben generieren.`,className:`mt-2`}),(0,U.jsx)(`div`,{className:`mt-2 flex justify-end`,children:(0,U.jsx)(G,{size:`sm`,disabled:Fe||Me===(A.entry?.job?.research_notes||``),onClick:async()=>{Ie(!0);try{await Ot(`/api/applications/${A.entry.application.id}/research-notes`,{research_notes:Me}),r(`Firmen-Recherche gespeichert.`,`success`),await qe(A.entry.application.id)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{Ie(!1)}},children:`Speichern`})})]}):null,A.entry?.application?(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Recherchen`}),Array.isArray(A.entry.recherchen)&&A.entry.recherchen.length>0?(0,U.jsx)(`div`,{className:`mt-2 space-y-2`,children:A.entry.recherchen.map(e=>(0,U.jsxs)(`details`,{className:`rounded-lg border border-white/5 bg-white/[0.02] px-3 py-2`,children:[(0,U.jsxs)(`summary`,{className:`flex cursor-pointer items-center justify-between gap-2 text-xs`,children:[(0,U.jsx)(`span`,{className:`font-semibold text-foreground/90`,children:Jr[e.kategorie]||e.kategorie}),(0,U.jsx)(`span`,{className:`text-[10px] text-muted/60`,children:e.datum})]}),(0,U.jsx)(`p`,{className:`mt-2 whitespace-pre-wrap text-sm text-foreground/80`,children:e.text})]},e.id))}):(0,U.jsxs)(`p`,{className:`mt-2 text-xs text-muted/60`,children:[`Noch keine Recherchen gespeichert. Claude legt sie via`,` `,`firmen_recherche, skill_gap_analyse oder recherche_speichern an.`]})]}):null,A.entry?.application?.fit_analyse?(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Fit-Analyse`}),(0,U.jsxs)(`div`,{className:`mt-2 space-y-1 text-sm`,children:[A.entry.application.fit_analyse.total_score!=null&&(0,U.jsxs)(`p`,{className:`text-ink font-medium`,children:[`Fit-Score: `,A.entry.application.fit_analyse.total_score,`/10`]}),A.entry.application.fit_analyse.summary&&(0,U.jsx)(`p`,{className:`text-muted/70`,children:A.entry.application.fit_analyse.summary}),(A.entry.application.fit_analyse.muss_hits||[]).length>0&&(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:A.entry.application.fit_analyse.muss_hits.map((e,t)=>(0,U.jsx)(q,{tone:`success`,children:e},t))}),(A.entry.application.fit_analyse.risks||[]).length>0&&(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1 mt-1`,children:A.entry.application.fit_analyse.risks.map((e,t)=>(0,U.jsx)(q,{tone:`danger`,children:e},t))})]})]}):null,(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Dokumente`}),(A.entry?.documents||[]).length>0&&(0,U.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:A.entry.documents.map(e=>(0,U.jsxs)(`a`,{href:`/api/documents/${e.id}/download`,target:`_blank`,rel:`noopener noreferrer`,className:`flex items-center gap-2 text-sm text-ink hover:text-sky transition-colors cursor-pointer rounded-lg px-2 py-1.5 -mx-2 hover:bg-white/[0.04]`,children:[(0,U.jsx)(Se,{size:14,className:`shrink-0 text-muted/50`}),(0,U.jsx)(`span`,{className:`truncate`,children:e.filename}),e.doc_type?(0,U.jsx)(q,{tone:`sky`,children:e.doc_type}):null,(0,U.jsx)(ye,{size:12,className:`shrink-0 ml-auto text-muted/30`})]},e.id))}),(0,U.jsxs)(`div`,{className:`mt-3 border-2 border-dashed border-white/10 rounded-lg p-4 text-center hover:border-sky/30 hover:bg-sky/[0.02] transition-all cursor-pointer`,onDragOver:e=>{e.preventDefault(),e.currentTarget.classList.add(`border-sky/40`,`bg-sky/[0.05]`)},onDragLeave:e=>{e.currentTarget.classList.remove(`border-sky/40`,`bg-sky/[0.05]`)},onDrop:async e=>{e.preventDefault(),e.currentTarget.classList.remove(`border-sky/40`,`bg-sky/[0.05]`);let{extractDroppedFiles:t}=await Wr(async()=>{let{extractDroppedFiles:e}=await Promise.resolve().then(()=>an);return{extractDroppedFiles:e}},void 0),{uploadDocumentFile:n}=await Wr(async()=>{let{uploadDocumentFile:e}=await Promise.resolve().then(()=>Zt);return{uploadDocumentFile:e}},void 0),i=await t(e.dataTransfer),a=A.entry?.application?.id;for(let e of i)try{let t=(await n(e,`sonstiges`,{applicationId:a}))?.duplicate_of?`verknuepft (war schon vorhanden)`:`hochgeladen und verknuepft`;r(`'${e.name}' ${t}.`,`success`)}catch(e){r(`Upload fehlgeschlagen: ${e.message}`,`danger`)}a&&await qe(a)},onClick:()=>{let e=document.createElement(`input`);e.type=`file`,e.multiple=!0,e.accept=`.pdf,.docx,.doc,.txt,.msg,.eml`,e.onchange=async e=>{let{uploadDocumentFile:t}=await Wr(async()=>{let{uploadDocumentFile:e}=await Promise.resolve().then(()=>Zt);return{uploadDocumentFile:e}},void 0),n=A.entry?.application?.id;for(let i of e.target.files)try{let e=(await t(i,`sonstiges`,{applicationId:n}))?.duplicate_of?`verknuepft (war schon vorhanden)`:`hochgeladen und verknuepft`;r(`'${i.name}' ${e}.`,`success`)}catch(e){r(`Upload fehlgeschlagen: ${e.message}`,`danger`)}n&&await qe(n)},e.click()},children:[(0,U.jsx)(dt,{size:20,className:`mx-auto text-muted/30`}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted/50`,children:`Datei hierher ziehen oder klicken zum Upload`})]}),he.length>0&&(0,U.jsxs)(`details`,{className:`mt-2`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer text-xs text-muted/50 hover:text-sky flex items-center gap-1`,children:[(0,U.jsx)(Ae,{size:12}),` Vorhandenes Dokument verknüpfen`]}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-1 max-h-40 overflow-y-auto`,children:he.filter(e=>!e.linked_application_id).slice(0,20).map(e=>(0,U.jsxs)(`button`,{className:`flex items-center gap-2 text-xs text-ink hover:text-sky rounded px-2 py-1 hover:bg-white/[0.04] text-left w-full`,onClick:()=>at(e.id),children:[(0,U.jsx)(Se,{size:12,className:`shrink-0 text-muted/40`}),(0,U.jsx)(`span`,{className:`truncate`,children:e.filename})]},e.id))})]})]}),(0,U.jsx)(ei,{applicationId:A.entry?.application?.id,pushToast:r}),(0,U.jsx)(Zr,{applicationId:A.entry?.application?.id,pushToast:r}),(0,U.jsx)($r,{applicationId:A.entry?.application?.id,pushToast:r}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,U.jsx)(ie,{size:12,className:`mr-1 inline`}),`Aufgaben (`,Te.filter(e=>e.status===`offen`).length,` offen)`]}),(0,U.jsxs)(`div`,{className:`mt-2 grid gap-1.5`,children:[Te.length===0&&(0,U.jsx)(`p`,{className:`text-xs text-muted/50 px-1`,children:`Noch keine Aufgaben. Lege unten eine an.`}),Te.map(e=>{let t=e.status===`erledigt`,n=!t&&e.faellig_am&&e.faellig_amQe(e),className:`shrink-0 rounded-md p-1 transition-colors ${t?`text-teal`:`text-muted/40 hover:text-teal hover:bg-teal/10`}`,children:(0,U.jsx)(ie,{size:14})}),(0,U.jsxs)(`span`,{className:`flex-1 min-w-0 truncate text-sm ${t?`text-muted/40 line-through`:`text-ink`}`,children:[e.titel,e.faellig_am?(0,U.jsxs)(`span`,{className:`ml-2 text-xs ${n?`font-semibold text-coral`:`text-muted/50`}`,children:[n?`überfällig: `:`bis `,Sn(e.faellig_am)]}):null]}),(0,U.jsx)(`button`,{type:`button`,title:`Loeschen`,onClick:()=>$e(e),className:`shrink-0 rounded-md p-1 text-muted/30 hover:text-coral hover:bg-coral/10 transition-colors`,children:(0,U.jsx)(ot,{size:13})})]},e.id)})]}),(0,U.jsxs)(`div`,{className:`mt-2 flex items-center gap-2`,children:[(0,U.jsx)(Y,{className:`flex-1`,value:De,onChange:e=>Oe(e.target.value),placeholder:`Neue Aufgabe (z.B. Gehalt recherchieren)`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),Xe())}}),(0,U.jsx)(`input`,{type:`date`,value:ke,onChange:e=>je(e.target.value),title:`Erledigt bis (optional)`,className:`shrink-0 rounded-lg border border-white/10 bg-white/[0.03] px-2 py-1.5 text-sm text-ink [color-scheme:dark]`}),(0,U.jsx)(G,{type:`button`,variant:`secondary`,onClick:Xe,disabled:!De.trim(),children:(0,U.jsx)(Je,{size:14})})]})]}),xe.length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,U.jsx)(ne,{size:12,className:`mr-1 inline`}),`Termine (`,xe.length,`)`]}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:xe.map(e=>{let t=new Date(e.meeting_date),n=t{confirm(`Termin wirklich löschen?`)&&(await kt(`/api/meetings/${e.id}`),r(`Termin gelöscht.`,`success`),loadTimeline())},className:`inline-flex items-center rounded bg-white/5 px-1.5 py-1 text-[10px] text-muted/40 hover:bg-danger/15 hover:text-danger`,title:`Termin löschen`,children:(0,U.jsx)(ot,{size:10})}),e.meeting_url&&!n&&(0,U.jsxs)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 rounded bg-teal/15 px-2 py-1 text-[11px] font-semibold text-teal hover:bg-teal/25`,children:[(0,U.jsx)(ht,{size:12}),` Beitreten`]})]})]},e.id)})})]}),B.length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,U.jsx)(Pe,{size:12,className:`mr-1 inline`}),`E-Mails (`,B.length,`)`]}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-1.5`,children:B.map(e=>{let t=e.direction===`ausgang`?e.recipients:e.sender,n=Pn(t,e.subject),r=Nn({to:t});return(0,U.jsxs)(`div`,{className:`flex items-center gap-2 rounded-lg px-3 py-2 border border-white/[0.04] hover:bg-white/[0.06] transition-colors`,children:[(0,U.jsx)(`span`,{className:`shrink-0 text-xs ${e.direction===`ausgang`?`text-sky`:`text-amber`}`,children:e.direction===`ausgang`?`↗`:`↙`}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-sm text-ink`,children:e.subject||`Ohne Betreff`}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/50`,children:[e.direction===`ausgang`?`An`:`Von`,`:`,` `,r?(0,U.jsx)(`a`,{href:r,className:`text-sky hover:underline`,children:t}):(0,U.jsx)(`span`,{children:t}),e.sent_date&&(0,U.jsx)(`span`,{className:`ml-2`,children:Sn(e.sent_date)})]})]}),e.detected_status&&(0,U.jsx)(q,{tone:Tn(e.detected_status),children:e.detected_status}),n&&(0,U.jsx)(`a`,{href:n,className:`shrink-0 text-muted/30 hover:text-sky transition-colors`,title:`Im Mail-Client antworten`,"aria-label":`Im Mail-Client antworten`,children:(0,U.jsx)(Le,{size:14})}),(0,U.jsx)(`a`,{href:`/api/emails/${e.id}/download`,download:e.filename||!0,className:`shrink-0 text-muted/30 hover:text-sky transition-colors`,title:`E-Mail herunterladen`,"aria-label":`E-Mail herunterladen`,children:(0,U.jsx)(_e,{size:14})})]},e.id)})})]}),A.entry?.application&&(0,U.jsx)(ti,{applicationId:A.entry.application.id,pushToast:r,onCreated:async()=>{let e=A.entry.application.id;await qe(e),Ce((await V(`/api/applications/${e}/meetings`).catch(()=>({meetings:[]})))?.meetings||[])}}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Dokument verknüpfen`}),(0,U.jsxs)(`div`,{className:`mt-2 relative`,children:[(0,U.jsx)(Ze,{size:14,className:`pointer-events-none absolute left-3 top-1/2 -translate-y-1/2 text-muted/50`}),(0,U.jsx)(Y,{className:`!pl-9`,placeholder:`Dokument suchen...`,value:le,onChange:e=>ue(e.target.value)})]}),le.trim()&&(0,U.jsxs)(`div`,{className:`mt-2 max-h-40 overflow-y-auto rounded-lg border border-white/5 bg-white/[0.02]`,children:[he.filter(e=>{let t=le.toLowerCase();return(e.filename||``).toLowerCase().includes(t)||(e.doc_type||``).toLowerCase().includes(t)}).slice(0,8).map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2 px-3 py-2 text-left text-sm text-ink transition-colors hover:bg-white/[0.06]`,onClick:()=>{at(e.id),ue(``)},children:[(0,U.jsx)(Ae,{size:14,className:`shrink-0 text-teal/60`}),(0,U.jsx)(`span`,{className:`truncate`,children:e.filename}),e.doc_type?(0,U.jsx)(`span`,{className:`ml-auto shrink-0 text-[11px] text-muted/50`,children:e.doc_type}):null]},e.id)),he.filter(e=>{let t=le.toLowerCase();return(e.filename||``).toLowerCase().includes(t)||(e.doc_type||``).toLowerCase().includes(t)}).length===0?(0,U.jsx)(`p`,{className:`px-3 py-2 text-sm text-muted/50`,children:`Kein Dokument gefunden.`}):null]})]}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Neue Notiz`}),(0,U.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,U.jsx)(Xn,{rows:2,className:`flex-1`,placeholder:`Notiz hinzufügen...`,value:F,onChange:e=>te(e.target.value),onKeyDown:e=>{e.key===`Enter`&&(e.ctrlKey||e.metaKey)&&tt()}}),(0,U.jsxs)(G,{className:`shrink-0 self-end`,onClick:()=>tt(),disabled:!F.trim(),children:[(0,U.jsx)(Je,{size:14}),`Hinzufügen`]})]})]}),(A.entry?.unified_timeline||[]).filter(e=>e._source===`email`||e._source===`meeting`).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Automatische Einträge`}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:(A.entry?.unified_timeline||[]).filter(e=>e._source===`email`||e._source===`meeting`).map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm`,children:[(0,U.jsx)(q,{tone:e._source===`email`?`sky`:`success`,children:e._source===`email`?`E-Mail`:`Termin`}),(0,U.jsx)(`span`,{className:`text-xs text-muted/40 shrink-0`,children:Sn(e.event_date)}),(0,U.jsx)(`span`,{className:`text-ink truncate`,children:e.description})]},e.id))})]}),(A.entry?.events||[]).length?A.entry.events.filter(e=>!e.parent_event_id).map(e=>(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`space-y-1`,children:[(0,U.jsx)(q,{tone:Tn(e.status||e.event_type),children:e.status||e.event_type||`notiz`}),oe===e.id?(0,U.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(`input`,{type:`date`,value:se,onChange:e=>ce(e.target.value),onKeyDown:t=>{t.key===`Enter`&&it(e.id),t.key===`Escape`&&z(null)},className:`text-[12px] px-1 py-0.5 rounded bg-shell/60 border border-line/40 text-ink`,autoFocus:!0}),(0,U.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>it(e.id),title:`Datum speichern`,children:(0,U.jsx)(ie,{size:14})}),(0,U.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>z(null),title:`Abbrechen`,children:(0,U.jsx)(yt,{size:14})})]}):(0,U.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-ink hover:underline cursor-pointer`,onClick:()=>{z(e.id),ce((e.event_date||``).slice(0,10))},title:`Datum aendern`,children:Cn(e.event_date)})]}),(0,U.jsx)(`div`,{className:`flex-1 min-w-0`,children:re===e.id?(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(Xn,{rows:2,className:`flex-1`,value:R,onChange:e=>ae(e.target.value),onKeyDown:t=>{t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&nt(e.id)},autoFocus:!0}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-1 shrink-0`,children:[(0,U.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>nt(e.id),children:(0,U.jsx)(ie,{size:16})}),(0,U.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>L(null),children:(0,U.jsx)(yt,{size:16})})]})]}):(0,U.jsx)(`p`,{className:`text-sm text-ink`,children:e.notes||e.text||`Keine Notiz`})}),(e.event_type===`notiz`||e.status===`notiz`)&&re!==e.id?(0,U.jsxs)(`div`,{className:`flex gap-1.5 shrink-0`,children:[(0,U.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-sky transition-colors`,onClick:()=>{fe(e.id),me(``)},title:`Antworten`,children:(0,U.jsx)(Le,{size:14})}),(0,U.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-ink transition-colors`,onClick:()=>{L(e.id),ae(e.notes||e.text||``)},title:`Bearbeiten`,children:(0,U.jsx)(Ge,{size:14})}),(0,U.jsx)(`button`,{type:`button`,className:`text-muted/40 hover:text-coral transition-colors`,onClick:()=>rt(e.id),title:`Löschen`,children:(0,U.jsx)(ot,{size:14})})]}):null]}),de===e.id&&(0,U.jsxs)(`div`,{className:`ml-8 mt-2 flex gap-2`,children:[(0,U.jsx)(Y,{className:`flex-1`,placeholder:`Antwort schreiben...`,value:pe,onChange:e=>me(e.target.value),onKeyDown:t=>{t.key===`Enter`&&(t.ctrlKey||t.metaKey)&&tt(e.id)}}),(0,U.jsx)(G,{size:`sm`,onClick:()=>tt(e.id),disabled:!pe.trim(),children:`Antworten`}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>fe(null),children:(0,U.jsx)(yt,{size:14})})]}),(A.entry?.events||[]).filter(t=>t.parent_event_id===e.id).map(e=>(0,U.jsxs)(K,{className:`ml-8 mt-2 glass-card-soft rounded-lg shadow-none border-l-2 border-sky/20`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-xs text-muted/40`,children:Cn(e.event_date)}),(0,U.jsx)(q,{tone:`sky`,children:`Antwort`})]}),(0,U.jsx)(`p`,{className:`text-sm text-ink mt-1`,children:e.notes||e.text})]},e.id))]},`${e.id}-${e.event_date}`)):(0,U.jsx)(er,{title:`Keine Timeline-Einträge`,description:`Für diese Bewerbung liegt noch keine Historie vor.`})]})}),(0,U.jsx)(nr,{open:P.open,title:`Gl\u00fcckwunsch \u2014 Abschluss bei ${P.application?.company||``}`,onClose:()=>ee({open:!1,application:null,final_salary:``,description:``,start_date:``}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ee({open:!1,application:null,final_salary:``,description:``,start_date:``}),children:`Sp\\u00e4ter`}),(0,U.jsx)(G,{onClick:Ue,children:`\\u00dcbernehmen und speichern`})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted/70`,children:`Du hast die Zusage erhalten. Hier ein kleiner Abschluss-Flow: Position ins Profil \\u00fcbernehmen, Gehalt festhalten, optional eine Beschreibung erg\\u00e4nzen.`}),(0,U.jsx)(J,{label:`Position (wird als aktuelle Stelle angelegt)`,children:(0,U.jsx)(Y,{value:P.application?.title||``,disabled:!0})}),(0,U.jsx)(J,{label:`Start-Datum`,children:(0,U.jsx)(Y,{type:`date`,value:P.start_date||``,onChange:e=>ee(t=>({...t,start_date:e.target.value}))})}),(0,U.jsx)(J,{label:`Tats\\u00e4chliches Gehalt (optional)`,children:(0,U.jsx)(Y,{placeholder:`z.B. 72.000\\u20ac/Jahr`,value:P.final_salary,onChange:e=>ee(t=>({...t,final_salary:e.target.value}))})}),(0,U.jsx)(J,{label:`Beschreibung der Rolle (optional)`,children:(0,U.jsx)(Y,{placeholder:`Kurzbeschreibung, z.B. Verantwortung, Team, Technologie`,value:P.description,onChange:e=>ee(t=>({...t,description:e.target.value}))})}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Offene Follow-ups wurden bereits automatisch als hinf\\u00e4llig markiert.`})]})})]})}function Zr({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)(!1),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(``),[f,p]=(0,w.useState)(null);async function m(){if(e)try{r((await fetch(`/api/applications/${e}/jobs`).then(e=>e.ok?e.json():null))?.jobs||[])}catch{}}(0,w.useEffect)(()=>{m()},[e]);async function h(){try{s((await fetch(`/api/jobs?filter=alle&limit=100`).then(e=>e.ok?e.json():null))?.jobs||[])}catch{}}async function g(n){try{await fetch(`/api/applications/${e}/jobs`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({job_hash:n,version_label:u||void 0})}),t(`Stelle verknuepft`,`success`),await m(),a(!1),l(``),d(``)}catch(e){t(`Verknuepfen fehlgeschlagen: ${e.message}`,`danger`)}}async function _(n){try{await fetch(`/api/applications/${e}/jobs/${encodeURIComponent(n)}`,{method:`DELETE`}),t(`Verknuepfung entfernt`,`success`),await m()}catch(e){t(`Entfernen fehlgeschlagen: ${e.message}`,`danger`)}}if(n.length<=1&&!i)return(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-1`,children:`Verknuepfte Stellen`}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/50 mb-2`,children:`Falls sich diese Bewerbung auf mehrere Stellen-Varianten bezieht (z.B. Repost, Vermittler+Endkunde-Sicht).`}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{a(!0),h()},className:`text-[11px] text-sky hover:underline inline-flex items-center gap-1`,children:[(0,U.jsx)(Je,{size:11}),` Weitere Stelle verknuepfen`]})]});let v=c?o.filter(e=>((e.title||``)+` `+(e.company||``)).toLowerCase().includes(c.toLowerCase())):o;return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:[`Verknuepfte Stellen (`,n.length,`)`]}),(0,U.jsx)(`ul`,{className:`space-y-1.5 mb-2`,children:n.map(e=>(0,U.jsxs)(`li`,{className:`flex items-start justify-between gap-2 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-ink font-medium`,children:e.title}),e.link_primary&&(0,U.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-teal/15 text-teal px-1.5 py-0.5 text-[9px]`,children:`primaer`}),e.link_version&&(0,U.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-sky/15 text-sky px-1.5 py-0.5 text-[9px]`,children:e.link_version}),(0,U.jsxs)(`p`,{className:`text-muted/50 text-[11px]`,children:[e.company,` · `,e.source,` · Score `,e.score||0]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[n.length>=2&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>p(e.hash),className:`text-muted/40 hover:text-sky text-[11px]`,title:`Mit anderer Stelle vergleichen`,children:`🆚`}),!e.link_primary&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>_(e.hash),className:`text-muted/40 hover:text-coral text-[11px]`,title:`Verknuepfung entfernen`,children:(0,U.jsx)(yt,{size:12})})]})]},e.hash))}),!i&&(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{a(!0),h()},className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,U.jsx)(Je,{size:11}),` Weitere Stelle`]}),i&&(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-2 mt-2`,children:[(0,U.jsx)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:(0,U.jsx)(`input`,{type:`text`,value:u,onChange:e=>d(e.target.value),placeholder:`Version-Bezeichnung (z.B. Repost, Vermittler-Sicht)`,className:`flex-1 min-w-[200px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`})}),(0,U.jsx)(`input`,{type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:`Stelle suchen...`,className:`w-full rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink mb-2`,autoFocus:!0}),(0,U.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-0.5`,children:v.slice(0,15).map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>g(e.hash),className:`w-full text-left px-2 py-1 rounded text-[12px] text-ink hover:bg-white/[0.04]`,children:[e.title,(0,U.jsxs)(`span`,{className:`text-muted/50 ml-1.5`,children:[`· `,e.company]})]},e.hash))}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{a(!1),l(``),d(``)},className:`mt-2 text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]})]}),f&&(0,U.jsx)(Qr,{hashA:n.find(e=>e.link_primary)?.hash||n[0]?.hash,hashB:f,onClose:()=>p(null),pushToast:t})]})}function Qr({hashA:e,hashB:t,onClose:n,pushToast:r}){let[i,a]=(0,w.useState)(null);if((0,w.useEffect)(()=>{fetch(`/api/jobs/compare?a=${encodeURIComponent(e)}&b=${encodeURIComponent(t)}`).then(e=>e.ok?e.json():null).then(a).catch(e=>r?.(`Vergleich fehlgeschlagen: ${e.message}`,`danger`))},[e,t]),!i)return(0,U.jsx)(nr,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade Vergleich...`})});if(i.fehler)return(0,U.jsx)(nr,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,U.jsx)(`p`,{className:`text-sm text-coral`,children:i.fehler})});let o=i.stelle_a,s=i.stelle_b,c=i.vergleich;return(0,U.jsx)(nr,{open:!0,title:`Stellen-Vergleich`,onClose:n,children:(0,U.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,U.jsx)(`div`,{className:`grid grid-cols-2 gap-3`,children:[o,s].map((e,t)=>(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase text-muted/50 mb-1`,children:t===0?`Stelle A`:`Stelle B`}),(0,U.jsx)(`p`,{className:`font-semibold text-ink`,children:e.title}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/70`,children:e.company}),(0,U.jsxs)(`div`,{className:`mt-2 space-y-0.5 text-[11px] text-muted/60`,children:[(0,U.jsxs)(`p`,{children:[`Score: `,(0,U.jsx)(`span`,{className:`text-ink`,children:e.score||0})]}),(0,U.jsxs)(`p`,{children:[`Quelle: `,(0,U.jsx)(`span`,{className:`text-ink`,children:e.source})]}),(0,U.jsxs)(`p`,{children:[`Standort: `,(0,U.jsx)(`span`,{className:`text-ink`,children:e.location||`—`})]}),(0,U.jsxs)(`p`,{children:[`Gehalt: `,e.salary_min?`${e.salary_min}–${e.salary_max||`?`} €`:`—`]}),(0,U.jsxs)(`p`,{children:[`Status: `,e.is_active?`aktiv`:`aussortiert`]}),(0,U.jsxs)(`p`,{children:[`Beschreibung: `,e.description_length,` Zeichen`]})]})]},t))}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase text-muted/50 mb-2`,children:`Vergleich`}),(0,U.jsxs)(`div`,{className:`space-y-1.5 text-[12px]`,children:[(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Score-Diff:`}),` `,(0,U.jsxs)(`span`,{className:`font-mono`,children:[c.score_diff>0?`+`:``,c.score_diff]}),` `,(0,U.jsx)(`span`,{className:`text-muted/40`,children:`(A − B)`})]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Beschreibung-Overlap:`}),` `,(0,U.jsxs)(`span`,{className:`font-mono`,children:[c.beschreibung_overlap_pct,`%`]})]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Gleiche Firma:`}),` `,c.gleiche_firma?`✓ Ja`:`✗ Nein`]}),c.titel_gemeinsam.length>0&&(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Titel — gemeinsam:`}),` `,(0,U.jsx)(`span`,{className:`text-teal`,children:c.titel_gemeinsam.slice(0,8).join(`, `)})]}),c.titel_nur_a.length>0&&(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Titel — nur A:`}),` `,(0,U.jsx)(`span`,{className:`text-amber`,children:c.titel_nur_a.slice(0,6).join(`, `)})]}),c.titel_nur_b.length>0&&(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/60`,children:`Titel — nur B:`}),` `,(0,U.jsx)(`span`,{className:`text-amber`,children:c.titel_nur_b.slice(0,6).join(`, `)})]})]})]}),(0,U.jsx)(`div`,{className:`flex justify-end pt-2 border-t border-white/5`,children:(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:n,children:`Schliessen`})})]})})}function $r({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)({kategorie:`tool`,betrag_eur:``,beschreibung:``}),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)(!1);async function u(){if(e)try{r(await fetch(`/api/applications/${e}/aufwand`).then(e=>e.ok?e.json():null)),s((await fetch(`/api/applications/${e}/costs`).then(e=>e.ok?e.json():null))?.costs||[])}catch{}}(0,w.useEffect)(()=>{u()},[e]);async function d(){let n=parseFloat(i.betrag_eur);if(!n||n<=0){t(`Betrag muss > 0 sein`,`danger`);return}try{await fetch(`/api/applications/${e}/costs`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({kind:i.kategorie,amount:n,description:i.beschreibung})}),t(`${n.toFixed(2)} € erfasst`,`success`),a({kategorie:`tool`,betrag_eur:``,beschreibung:``}),l(!1),await u()}catch(e){t(`Erfassen fehlgeschlagen: ${e.message}`,`danger`)}}async function f(e){try{await fetch(`/api/costs/${e}`,{method:`DELETE`}),await u()}catch{}}if(!n)return null;let p=n.kosten_summe_eur>0||n.reisekosten_brutto_eur>0||n.termine_anzahl>0;return(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Aufwand fuer diese Bewerbung`}),!p&&!c&&(0,U.jsx)(`p`,{className:`text-[12px] text-muted/50 mb-2`,children:`Trage Reisekosten, Tool-Abos oder Pruefungs-Gebuehren ein — fuer einen ehrlichen Blick auf den realen Aufwand pro Bewerbung.`}),p&&(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 mb-2 text-[11px]`,children:[n.termine_anzahl>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-muted/50`,children:`Termine`}),(0,U.jsx)(`p`,{className:`text-ink font-medium`,children:n.termine_anzahl})]}),n.termine_dauer_min_summe>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-muted/50`,children:`Dauer (gesamt)`}),(0,U.jsxs)(`p`,{className:`text-ink font-medium`,children:[Math.round(n.termine_dauer_min_summe/60),` h`]})]}),n.vorbereitungszeit_min_summe>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-muted/50`,children:`Vorbereitung`}),(0,U.jsxs)(`p`,{className:`text-ink font-medium`,children:[Math.round(n.vorbereitungszeit_min_summe/60),` h`]})]}),n.reisekosten_brutto_eur>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-muted/50`,children:`Reisekosten netto`}),(0,U.jsxs)(`p`,{className:`text-ink font-medium`,children:[n.reisekosten_netto_eur.toFixed(2),` €`]})]}),n.kosten_summe_eur>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-muted/50`,children:`Sonstige Kosten`}),(0,U.jsxs)(`p`,{className:`text-ink font-medium`,children:[n.kosten_summe_eur.toFixed(2),` €`]})]})]}),o.length>0&&(0,U.jsx)(`ul`,{className:`space-y-1 mb-2 border-t border-white/5 pt-2`,children:o.map(e=>(0,U.jsxs)(`li`,{className:`flex items-center justify-between text-[11px]`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`span`,{className:`text-ink font-mono`,children:[(e.amount||0).toFixed(2),` €`]}),(0,U.jsx)(`span`,{className:`ml-1.5 text-muted/50`,children:e.kind}),e.description&&(0,U.jsxs)(`span`,{className:`ml-1.5 text-muted/40 truncate`,children:[`— `,e.description]})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>f(e.id),className:`text-muted/40 hover:text-coral text-[11px] shrink-0`,children:(0,U.jsx)(yt,{size:11})})]},e.id))}),c?(0,U.jsx)(`div`,{className:`border-t border-white/5 pt-2 space-y-1.5`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(`select`,{value:i.kategorie,onChange:e=>a({...i,kategorie:e.target.value}),className:`rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,children:[(0,U.jsx)(`option`,{value:`tool`,children:`Tool/Abo`}),(0,U.jsx)(`option`,{value:`pruefung`,children:`Pruefung`}),(0,U.jsx)(`option`,{value:`reise`,children:`Reise`}),(0,U.jsx)(`option`,{value:`fortbildung`,children:`Fortbildung`}),(0,U.jsx)(`option`,{value:`sonstiges`,children:`Sonstiges`})]}),(0,U.jsx)(`input`,{type:`number`,step:`0.01`,value:i.betrag_eur,onChange:e=>a({...i,betrag_eur:e.target.value}),placeholder:`EUR`,className:`w-20 rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,U.jsx)(`input`,{type:`text`,value:i.beschreibung,onChange:e=>a({...i,beschreibung:e.target.value}),placeholder:`z.B. LinkedIn Premium 1 Monat`,className:`flex-1 min-w-[150px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,U.jsx)(`button`,{type:`button`,onClick:d,className:`rounded bg-sky/15 text-sky px-2 py-1 text-[11px] hover:bg-sky/25`,children:`Speichern`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>l(!1),className:`text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]})}):(0,U.jsxs)(`button`,{type:`button`,onClick:()=>l(!0),className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,U.jsx)(Je,{size:11}),` Kosten erfassen`]})]})}function ei({applicationId:e,pushToast:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(!1),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(`recruiter`),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(``),g=[{v:`recruiter`,l:`Recruiter`},{v:`hiring_manager`,l:`Hiring Manager`},{v:`interviewer`,l:`Interviewer`},{v:`hr`,l:`HR`},{v:`kollege`,l:`Kollege`},{v:`mentor`,l:`Mentor`}];async function _(){if(e)try{r((await fetch(`/api/applications/${e}/contacts`).then(e=>e.ok?e.json():null))?.contacts||[])}catch{}}async function v(){try{a((await fetch(`/api/contacts`).then(e=>e.ok?e.json():null))?.contacts||[])}catch{}}(0,w.useEffect)(()=>{_()},[e]);async function y(n){try{await fetch(`/api/contacts/${n}/links`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_kind:`application`,target_id:e,role:u})}),t(`Verknuepft`,`success`),await _(),s(!1),l(``)}catch(e){t(`Verknuepfen fehlgeschlagen: ${e.message}`,`danger`)}}async function b(){if(m.trim()){p(!0);try{let n=await fetch(`/api/contacts`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({full_name:m.trim(),tags:[u]})}).then(e=>e.json());n?.id&&(await fetch(`/api/contacts/${n.id}/links`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({target_kind:`application`,target_id:e,role:u})}),t(`„${m}" angelegt und verknuepft`,`success`),h(``),s(!1),await _())}catch(e){t(`Anlegen fehlgeschlagen: ${e.message}`,`danger`)}finally{p(!1)}}}async function x(e){try{await fetch(`/api/contacts/links/${e}`,{method:`DELETE`}),t(`Entfernt`,`success`),await _()}catch(e){t(`Entfernen fehlgeschlagen: ${e.message}`,`danger`)}}let S=c?i.filter(e=>(e.full_name+` `+(e.email||``)+` `+(e.company||``)).toLowerCase().includes(c.toLowerCase())):i;return(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60 mb-2`,children:`Beteiligte Personen`}),n.length===0&&!o&&(0,U.jsxs)(`div`,{className:`text-center py-4 text-muted/50`,children:[(0,U.jsx)(`p`,{className:`text-[12px] mb-2`,children:`Noch niemand verknuepft. Wer war beim Interview dabei? Wer hat angeschrieben?`}),(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{s(!0),v()},className:`text-[12px] text-sky hover:underline inline-flex items-center gap-1`,children:[(0,U.jsx)(Je,{size:12}),` Person hinzufuegen`]})]}),n.length>0&&(0,U.jsx)(`ul`,{className:`space-y-1.5 mb-2`,children:n.map(e=>(0,U.jsxs)(`li`,{className:`flex items-center justify-between gap-2 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-ink font-medium`,children:e.full_name}),e.link_role&&(0,U.jsx)(`span`,{className:`ml-1.5 inline-flex items-center rounded-full bg-sky/15 text-sky px-1.5 py-0.5 text-[9px]`,children:g.find(t=>t.v===e.link_role)?.l||e.link_role}),e.company&&(0,U.jsx)(`span`,{className:`ml-1.5 text-muted/50 text-[11px]`,children:e.company})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>x(e.link_id),className:`text-muted/40 hover:text-coral text-[11px]`,title:`Verknuepfung entfernen`,children:(0,U.jsx)(yt,{size:12})})]},e.link_id))}),!o&&n.length>0&&(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{s(!0),v()},className:`text-[11px] text-muted/50 hover:text-sky inline-flex items-center gap-1`,children:[(0,U.jsx)(Je,{size:11}),` Weitere Person`]}),o&&(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-2 mt-2`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2 mb-2`,children:[(0,U.jsx)(`select`,{value:u,onChange:e=>d(e.target.value),className:`rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,children:g.map(e=>(0,U.jsx)(`option`,{value:e.v,children:e.l},e.v))}),(0,U.jsx)(`input`,{type:`search`,value:c,onChange:e=>l(e.target.value),placeholder:`Vorhandenen Kontakt suchen...`,className:`flex-1 min-w-[150px] rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`,autoFocus:!0}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{s(!1),l(``),h(``)},className:`text-[11px] text-muted/50 hover:text-ink`,children:`Abbrechen`})]}),S.length>0&&(0,U.jsx)(`div`,{className:`max-h-32 overflow-y-auto space-y-0.5 mb-2`,children:S.slice(0,10).map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>y(e.id),className:`w-full text-left px-2 py-1 rounded text-[12px] text-ink hover:bg-white/[0.04]`,children:[e.full_name,e.company&&(0,U.jsxs)(`span`,{className:`text-muted/50 ml-1.5`,children:[`· `,e.company]})]},e.id))}),(0,U.jsx)(`div`,{className:`text-[11px] text-muted/50 mb-1`,children:`Oder neue Person anlegen:`}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(`input`,{type:`text`,value:m,onChange:e=>h(e.target.value),placeholder:`Vor- und Nachname`,className:`flex-1 rounded border border-white/8 bg-white/[0.03] px-2 py-1 text-[12px] text-ink`}),(0,U.jsx)(`button`,{type:`button`,disabled:!m.trim()||f,onClick:b,className:`rounded bg-sky/15 text-sky px-2 py-1 text-[12px] hover:bg-sky/25 disabled:opacity-50`,children:f?`...`:`Anlegen`})]})]})]})}function ti({applicationId:e,pushToast:t,onCreated:n}){let[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(`Vorstellungsgespräch`),[s,c]=(0,w.useState)(``),[l,u]=(0,w.useState)(`10:00`),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(!1);async function h(){if(!s){t(`Bitte ein Datum angeben.`,`danger`);return}m(!0);try{await H(`/api/meetings`,{application_id:e,title:a,meeting_date:`${s}T${l||`10:00`}:00`,meeting_url:d||void 0,platform:d.includes(`teams`)?`teams`:d.includes(`zoom`)?`zoom`:d.includes(`meet.google`)?`google_meet`:void 0}),t(`Termin erstellt.`,`success`),i(!1),o(`Vorstellungsgespräch`),c(``),u(`10:00`),f(``),n()}catch(e){t(`Termin konnte nicht erstellt werden: ${e.message}`,`danger`)}finally{m(!1)}}return r?(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[(0,U.jsx)(ne,{size:12,className:`mr-1 inline`}),`Neuer Termin`]}),(0,U.jsxs)(`div`,{className:`mt-2 grid gap-2 sm:grid-cols-2`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Titel`}),(0,U.jsx)(`input`,{type:`text`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:a,onChange:e=>o(e.target.value)})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Datum`}),(0,U.jsx)(`input`,{type:`date`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:s,onChange:e=>c(e.target.value)})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Uhrzeit`}),(0,U.jsx)(`input`,{type:`time`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,value:l,onChange:e=>u(e.target.value)})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`label`,{className:`text-xs text-muted/60`,children:`Meeting-Link (optional)`}),(0,U.jsx)(`input`,{type:`url`,className:`mt-0.5 w-full rounded-lg border border-white/10 bg-white/[0.04] px-3 py-1.5 text-sm text-ink`,placeholder:`https://teams...`,value:d,onChange:e=>f(e.target.value)})]})]}),(0,U.jsxs)(`div`,{className:`mt-3 flex gap-2`,children:[(0,U.jsxs)(G,{size:`sm`,onClick:h,disabled:p||!s,children:[(0,U.jsx)(Je,{size:14}),`Erstellen`]}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>i(!1),children:`Abbrechen`})]})]}):(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center justify-center gap-1.5 rounded-xl border border-dashed border-white/10 px-3 py-2.5 text-[13px] text-muted/50 transition hover:border-teal/30 hover:text-teal/70`,onClick:()=>i(!0),children:[(0,U.jsx)(ne,{size:14}),`Termin hinzufügen`]})}var ni=[{value:`recruiter`,label:`Recruiter`},{value:`headhunter`,label:`Headhunter`},{value:`hiring_manager`,label:`Hiring Manager`},{value:`interviewer`,label:`Interviewer`},{value:`hr`,label:`HR`},{value:`kollege`,label:`Kollege`},{value:`mentor`,label:`Mentor`},{value:`sonstiges`,label:`Sonstiges`}],ri=Object.fromEntries(ni.map(e=>[e.value,e.label])),ii=null,ai=`pbp-contact-categories-changed`;async function oi(){if(ii!==null)return ii;try{ii=(await V(`/api/contacts/categories`))?.categories||[]}catch{ii=[]}return ii}function si(){ii=null,window.dispatchEvent(new CustomEvent(ai))}function ci(){let[e,t]=(0,w.useState)(ii||[]);return(0,w.useEffect)(()=>{let e=!1;ii===null&&oi().then(n=>{e||t(n)});let n=()=>{oi().then(n=>{e||t(n)})};return window.addEventListener(ai,n),()=>{e=!0,window.removeEventListener(ai,n)}},[]),e}function li({role:e}){let t=ci().find(t=>t.slug===e),n=t?.name||ri[e]||e,r=t?.color;return r?(0,U.jsx)(`span`,{className:`inline-flex items-center rounded-full px-2 py-0.5 text-[10px] font-medium`,style:{backgroundColor:r+`26`,color:r},children:n}):(0,U.jsx)(`span`,{className:`inline-flex items-center rounded-full bg-sky/15 text-sky px-2 py-0.5 text-[10px] font-medium`,children:n})}function ui({contact:e,onClick:t}){return(0,U.jsx)(`button`,{type:`button`,onClick:t,className:`glass-card text-left rounded-xl px-4 py-3 hover:bg-white/[0.04] transition-colors w-full`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-[15px] font-semibold text-ink truncate`,children:e.full_name}),e.position&&e.company&&(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60 truncate`,children:[e.position,` · `,e.company]}),!e.position&&e.company&&(0,U.jsx)(`p`,{className:`text-[12px] text-muted/60 truncate`,children:e.company}),(0,U.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap gap-1`,children:[(e.tags||[]).slice(0,3).map(e=>(0,U.jsx)(li,{role:e},e)),(e.tags||[]).length>3&&(0,U.jsxs)(`span`,{className:`text-[10px] text-muted/40`,children:[`+`,e.tags.length-3]})]})]}),(0,U.jsx)(ae,{size:16,className:`text-muted/30 shrink-0 mt-0.5`})]})})}function di({contact:e,onClose:t,onSaved:n,onDeleted:r,pushToast:i}){let a=!!e?.id,[o,s]=(0,w.useState)(()=>({full_name:e?.full_name||``,email:e?.email||``,phone:e?.phone||``,company:e?.company||``,position:e?.position||``,linkedin_url:e?.linkedin_url||``,tags:e?.tags||[],notes:e?.notes||``})),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)(!1);(0,w.useEffect)(()=>{a&&V(`/api/contacts/${e.id}/links`).catch(()=>null).then(e=>{e?.links&&l(e.links)})},[e?.id]);function f(e){s(t=>({...t,tags:t.tags.includes(e)?t.tags.filter(t=>t!==e):[...t.tags,e]}))}async function p(){if(!o.full_name.trim()){i(`Name ist Pflicht.`,`danger`);return}d(!0);try{a?await Ot(`/api/contacts/${e.id}`,o):await H(`/api/contacts`,o),i(a?`Kontakt aktualisiert`:`Kontakt angelegt`,`success`),n?.(),t()}catch(e){i(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{d(!1)}}async function m(){if(confirm(`Kontakt „${e.full_name}" wirklich loeschen?`))try{await kt(`/api/contacts/${e.id}`),i(`Kontakt geloescht`,`success`),r?.(),t()}catch(e){i(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}return(0,U.jsx)(nr,{open:!0,title:a?`Kontakt bearbeiten`:`Neuer Kontakt`,onClose:t,children:(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(J,{label:`Name`,required:!0,children:(0,U.jsx)(Y,{value:o.full_name,onChange:e=>s({...o,full_name:e.target.value}),placeholder:`z.B. Maria Mustermann`})}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,U.jsx)(J,{label:`E-Mail`,children:(0,U.jsx)(Y,{type:`email`,value:o.email,onChange:e=>s({...o,email:e.target.value}),placeholder:`maria@firma.de`})}),(0,U.jsx)(J,{label:`Telefon`,children:(0,U.jsx)(Y,{value:o.phone,onChange:e=>s({...o,phone:e.target.value}),placeholder:`+49 ...`})})]}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,U.jsx)(J,{label:`Firma`,children:(0,U.jsx)(Y,{value:o.company,onChange:e=>s({...o,company:e.target.value}),placeholder:`z.B. TestCorp GmbH`})}),(0,U.jsx)(J,{label:`Position`,children:(0,U.jsx)(Y,{value:o.position,onChange:e=>s({...o,position:e.target.value}),placeholder:`z.B. Talent Acquisition Lead`})})]}),(0,U.jsxs)(J,{label:`LinkedIn`,children:[(0,U.jsxs)(`div`,{className:`flex items-stretch gap-2`,children:[(0,U.jsx)(Y,{className:`flex-1`,value:o.linkedin_url,onChange:e=>s({...o,linkedin_url:e.target.value}),placeholder:`https://linkedin.com/in/...`}),o.linkedin_url&&o.linkedin_url.includes(`linkedin.com/in/`)&&(0,U.jsx)(`button`,{type:`button`,onClick:async()=>{try{let t=await H(`/api/contacts/enrich-from-linkedin`,{contact_id:e?.id||``,linkedin_url:o.linkedin_url});if(t?.prompt)try{await navigator.clipboard.writeText(t.prompt),i(`Prompt in Zwischenablage. In Claude einfuegen — der eingeloggte Chrome-Tab holt die LinkedIn-Daten.`,`success`,{duration:8e3})}catch{i(`Prompt erzeugt. Bitte aus dem Backend-Response kopieren.`,`info`)}}catch(e){i(`Anreichern fehlgeschlagen: ${e.message}`,`danger`)}},className:`rounded-lg border border-sky/20 bg-sky/[0.08] px-3 text-[12px] text-sky hover:bg-sky/[0.15] whitespace-nowrap`,title:`LinkedIn-Daten via Claude-in-Chrome holen`,children:`Daten holen`})]}),o.linkedin_url&&o.linkedin_url.includes(`linkedin.com/in/`)&&(0,U.jsxs)(`p`,{className:`mt-1 text-[11px] text-muted/50`,children:[(0,U.jsx)(`span`,{className:`text-sky`,children:`„Daten holen"`}),` erzeugt einen Claude-Prompt. Claude oeffnet das Profil im eingeloggten Chrome-Tab und liest Name/Position/Firma.`]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/60 mb-1.5 uppercase tracking-[0.1em]`,children:`Rollen / Tags`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/50 mb-2`,children:`Was diese Person fuer dich ist. Mehrere moeglich — z.B. „Recruiter" + „HR".`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:ni.map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>f(e.value),className:`rounded-full px-2.5 py-1 text-[11px] font-medium transition-colors ${o.tags.includes(e.value)?`bg-sky/20 text-sky`:`bg-white/[0.03] text-muted/60 hover:bg-white/[0.07]`}`,children:e.label},e.value))})]}),(0,U.jsx)(J,{label:`Notizen`,children:(0,U.jsx)(`textarea`,{value:o.notes,onChange:e=>s({...o,notes:e.target.value}),rows:3,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-sm text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`,placeholder:`Wie habt ihr euch kennengelernt, was ist wichtig zu wissen...`})}),a&&c.length>0&&(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-3`,children:[(0,U.jsxs)(`p`,{className:`text-[11px] font-semibold text-muted/60 mb-2 uppercase tracking-[0.1em]`,children:[`Verknuepfungen (`,c.length,`)`]}),(0,U.jsx)(`ul`,{className:`space-y-1 text-[12px] text-muted/70`,children:c.slice(0,8).map(e=>(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`span`,{className:`text-muted/40`,children:e.target_kind}),` · `,e.role&&(0,U.jsx)(li,{role:e.role})]},e.id))})]}),(0,U.jsxs)(`div`,{className:`flex justify-between pt-3 border-t border-white/5`,children:[a?(0,U.jsxs)(`button`,{type:`button`,onClick:m,className:`text-[12px] text-coral/70 hover:text-coral inline-flex items-center gap-1`,children:[(0,U.jsx)(ot,{size:12}),` Loeschen`]}):(0,U.jsx)(`span`,{}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(G,{variant:`ghost`,size:`sm`,onClick:t,children:`Abbrechen`}),(0,U.jsx)(G,{size:`sm`,onClick:p,disabled:u,children:u?`Speichere...`:a?`Speichern`:`Anlegen`})]})]})]})})}function fi({pushToast:e,onChange:t}){let[n,r]=(0,w.useState)([]),[i,a]=(0,w.useState)(!1);async function o(){try{r((await V(`/api/contacts/pending`))?.pending||[])}catch{}}(0,w.useEffect)(()=>{o()},[]);async function s(n){a(!0);try{await H(`/api/contacts/pending/${n}/approve`,{}),e(`Kontakt genehmigt`,`success`),await o(),t?.()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{a(!1)}}async function c(t){a(!0);try{await kt(`/api/contacts/pending/${t}`),e(`Kontakt verworfen`,`success`),await o()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{a(!1)}}return n.length===0?null:(0,U.jsxs)(K,{className:`rounded-2xl mb-4 border-amber/30 bg-amber/[0.04]`,children:[(0,U.jsx)(`div`,{className:`mb-2 flex items-center justify-between`,children:(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-amber/80`,children:`Vorschlaege von der lokalen AI`}),(0,U.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[n.length,` Kontakt`,n.length===1?``:`e`,` aus Bewerbungen/Mails extrahiert — warten auf deine Genehmigung`]})]})}),(0,U.jsx)(`div`,{className:`space-y-2 mt-3`,children:n.slice(0,10).map(e=>(0,U.jsxs)(`div`,{className:`glass-card p-2 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:e.full_name}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60`,children:[e.position&&(0,U.jsx)(U.Fragment,{children:e.position}),e.position&&e.company&&` · `,e.company,e.email&&(0,U.jsx)(`span`,{className:`ml-2 text-muted/40`,children:e.email})]}),(0,U.jsx)(`div`,{className:`mt-1 flex flex-wrap gap-1`,children:(e.tags||[]).map(e=>(0,U.jsx)(li,{role:e},e))})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-1 shrink-0`,children:[(0,U.jsx)(G,{size:`xs`,onClick:()=>s(e.id),disabled:i,children:`Akzeptieren`}),(0,U.jsx)(G,{size:`xs`,variant:`secondary`,onClick:()=>c(e.id),disabled:i,children:`Verwerfen`})]})]},e.id))}),n.length>10&&(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[`+`,n.length-10,` weitere — genehmige diese erst, dann kommen die naechsten.`]})]})}function pi({pushToast:e}){let[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(``);async function l(){try{n((await V(`/api/contacts/categories`))?.categories||[]),si()}catch{}}(0,w.useEffect)(()=>{l()},[]);async function u(){if(s.trim()){o(!0);try{await H(`/api/contacts/categories`,{name:s.trim()}),e(`Kategorie "${s.trim()}" angelegt`,`success`),c(``),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}}async function d(t,n){try{await Ot(`/api/contacts/categories/${t}`,{color:n}),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function f(t,n){if(n.trim())try{await Ot(`/api/contacts/categories/${t}`,{name:n.trim()}),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function p(t,n){if(confirm(`Kategorie "${n}" wirklich loeschen?`)){o(!0);try{let r=await fetch(`/api/contacts/categories/${t}`,{method:`DELETE`}),i=await r.json();if(!r.ok||i.fehler){e(i.fehler||`Loeschen fehlgeschlagen`,`danger`);return}e(`"${n}" geloescht`,`success`),await l()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}}return(0,U.jsxs)(K,{className:`rounded-2xl mb-4`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>i(!r),className:`w-full flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`text-left`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Kategorien verwalten`}),(0,U.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[t.length,` Kategorie`,t.length===1?``:`n`,` mit Farben`]})]}),(0,U.jsx)(`span`,{className:`text-muted/40 text-xs`,children:r?`▲`:`▼`})]}),r&&(0,U.jsxs)(`div`,{className:`mt-4 space-y-2`,children:[t.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 p-2 rounded-md hover:bg-white/[0.03]`,children:[(0,U.jsx)(`input`,{type:`color`,value:e.color,onChange:t=>d(e.id,t.target.value),className:`h-7 w-10 rounded cursor-pointer border border-white/10`,title:`Farbe aendern`}),(0,U.jsx)(`input`,{type:`text`,defaultValue:e.name,onBlur:t=>{t.target.value!==e.name&&f(e.id,t.target.value)},className:`flex-1 bg-transparent text-[13px] text-ink focus:outline-none focus:bg-white/[0.04] px-2 py-1 rounded`}),(0,U.jsxs)(`span`,{className:`text-[10px] text-muted/40 font-mono shrink-0`,children:[e.contact_count,` Kontakt`,e.contact_count===1?``:`e`]}),e.is_system?(0,U.jsx)(`span`,{className:`text-[10px] text-muted/40 italic shrink-0`,children:`System`}):(0,U.jsx)(`button`,{type:`button`,onClick:()=>p(e.id,e.name),disabled:a,className:`text-muted/40 hover:text-coral shrink-0`,title:`Kategorie loeschen`,children:(0,U.jsx)(ot,{size:12})})]},e.id)),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 pt-3 border-t border-white/5`,children:[(0,U.jsx)(`input`,{type:`text`,value:s,onChange:e=>c(e.target.value),onKeyDown:e=>e.key===`Enter`&&u(),placeholder:`Neue Kategorie (z.B. Headhunter)`,className:`flex-1 bg-white/[0.03] border border-white/10 rounded-md px-2 py-1.5 text-[12px] text-ink placeholder-muted/40 focus:border-teal/40 focus:outline-none`}),(0,U.jsxs)(G,{size:`xs`,onClick:u,disabled:a||!s.trim(),children:[(0,U.jsx)(Je,{size:12}),` Anlegen`]})]})]})]})}function mi(){let{reloadKey:e,pushToast:t}=jt(),[n,r]=(0,w.useState)(!0),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(``),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(null),[f,p]=(0,w.useState)(!1),[m,h]=(0,w.useState)(!1);async function g(){r(!0);try{let e=new URLSearchParams;o&&e.set(`search`,o),c&&e.set(`role`,c);let t=await V(`/api/contacts?${e}`);(0,w.startTransition)(()=>a(t?.contacts||[]))}catch(e){t(`Laden fehlgeschlagen: ${e.message}`,`danger`)}finally{r(!1)}}(0,w.useEffect)(()=>{g()},[e,o,c]);function _(){d(null),p(!0)}function v(e){d(e),p(!0)}if(n&&i.length===0)return(0,U.jsx)(tr,{label:`Kontakte werden geladen...`});let y=i.length===0&&!o&&!c;return(0,U.jsxs)(`div`,{id:`page-kontakte`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Kontakte`}),(0,U.jsxs)(`div`,{className:`mb-6 flex items-center justify-between gap-4 flex-wrap`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Kontakte`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/60 mt-0.5`,children:`Personen mit Rollen und Historie ueber Bewerbungen, Stellen und Termine`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(G,{size:`sm`,variant:`secondary`,onClick:()=>h(!0),children:[(0,U.jsx)(_e,{size:14,className:`mr-1`}),` Importieren`]}),(0,U.jsxs)(G,{size:`sm`,onClick:_,children:[(0,U.jsx)(Je,{size:14,className:`mr-1`}),` Neuer Kontakt`]})]})]}),(0,U.jsx)(fi,{pushToast:t,onChange:g}),(0,U.jsx)(pi,{pushToast:t}),!y&&(0,U.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-center gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-[200px] relative`,children:[(0,U.jsx)(Ze,{size:14,className:`absolute left-3 top-1/2 -translate-y-1/2 text-muted/40`}),(0,U.jsx)(`input`,{type:`search`,value:o,onChange:e=>s(e.target.value),placeholder:`Name, E-Mail, Firma...`,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] pl-9 pr-3 py-2 text-[13px] text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`})]}),(0,U.jsxs)(`select`,{value:c,onChange:e=>l(e.target.value),className:`rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`,children:[(0,U.jsx)(`option`,{value:``,children:`Alle Rollen`}),ni.map(e=>(0,U.jsx)(`option`,{value:e.value,children:e.label},e.value))]}),(o||c)&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>{s(``),l(``)},className:`text-[11px] text-muted/50 hover:text-ink underline`,children:`zuruecksetzen`})]}),y?(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsxs)(`div`,{className:`text-center py-12`,children:[(0,U.jsx)(mt,{size:48,className:`mx-auto text-muted/20 mb-4`}),(0,U.jsx)(`h3`,{className:`text-lg font-semibold text-ink mb-2`,children:`Noch keine Kontakte`}),(0,U.jsxs)(`p`,{className:`text-sm text-muted/70 max-w-md mx-auto mb-1.5`,children:[`Kontakte sind `,(0,U.jsx)(`strong`,{className:`text-ink/90`,children:`Personen, die mit deiner Jobsuche zu tun haben`}),` — Recruiter, Hiring Manager, Interviewer, Mentoren, Kollegen.`]}),(0,U.jsx)(`p`,{className:`text-sm text-muted/70 max-w-md mx-auto mb-6`,children:`Du kannst sie spaeter mit Bewerbungen oder Terminen verknuepfen, um die Historie pro Person zu sehen.`}),(0,U.jsxs)(G,{onClick:_,children:[(0,U.jsx)(Je,{size:14,className:`mr-1.5`}),`Ersten Kontakt anlegen`]})]})}):i.length===0?(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsxs)(`div`,{className:`py-8 text-center text-muted/60`,children:[(0,U.jsx)(`p`,{className:`text-sm`,children:`Keine Kontakte mit diesen Filtern.`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{s(``),l(``)},className:`text-[12px] text-sky hover:underline mt-2`,children:`Filter zuruecksetzen`})]})}):(0,U.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2 lg:grid-cols-3`,children:i.map(e=>(0,U.jsx)(ui,{contact:e,onClick:()=>v(e)},e.id))}),f&&(0,U.jsx)(di,{contact:u,onClose:()=>p(!1),onSaved:g,onDeleted:g,pushToast:t}),m&&(0,U.jsx)(hi,{onClose:()=>h(!1),onImported:e=>{t(`${e} Kontakte importiert.`,`success`),g(),h(!1)},pushToast:t})]})}function hi({onClose:e,onImported:t,pushToast:n}){let[r,i]=(0,w.useState)(!0),[a,o]=(0,w.useState)(null),[s,c]=(0,w.useState)(new Set),[l,u]=(0,w.useState)(!1);(0,w.useEffect)(()=>{let e=!1;return V(`/api/contacts/discover`).then(t=>{if(e)return;o(t);let n=new Set;(t?.from_applications||[]).forEach((e,t)=>n.add(`app-${t}`)),c(n)}).catch(e=>n(`Laden fehlgeschlagen: ${e.message}`,`danger`)).finally(()=>!e&&i(!1)),()=>{e=!0}},[]);function d(e){c(t=>{let n=new Set(t);return n.has(e)?n.delete(e):n.add(e),n})}function f(e,t){c(n=>{let r=new Set(n),i=t.every((t,n)=>r.has(`${e}-${n}`));return t.forEach((t,n)=>{i?r.delete(`${e}-${n}`):r.add(`${e}-${n}`)}),r})}async function p(){if(!a)return;let e=[];if((a.from_applications||[]).forEach((t,n)=>{s.has(`app-${n}`)&&e.push(t)}),(a.from_emails||[]).forEach((t,n)=>{s.has(`mail-${n}`)&&e.push(t)}),e.length===0){n(`Keine Kontakte ausgewaehlt.`,`warning`);return}u(!0);try{t((await H(`/api/contacts/import-discovered`,{candidates:e}))?.created||0)}catch(e){n(`Import fehlgeschlagen: ${e.message}`,`danger`)}finally{u(!1)}}if(r)return(0,U.jsx)(nr,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Suche Kandidaten in Bewerbungen und Mails...`})});let m=a?.from_applications||[],h=a?.from_emails||[],g=s.size;return m.length===0&&h.length===0?(0,U.jsx)(nr,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,U.jsxs)(`div`,{className:`text-sm text-muted/70 space-y-3`,children:[(0,U.jsx)(`p`,{children:`Keine neuen Kontakt-Kandidaten gefunden. Entweder hast du noch keine Bewerbungen mit Ansprechpartner erfasst, oder alle gefundenen Personen sind bereits als Kontakt angelegt.`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/50`,children:[`Tipp: Bewerbungen mit gefuelltem Feld `,(0,U.jsx)(`em`,{children:`Ansprechpartner`}),` oder`,(0,U.jsx)(`em`,{children:` Kontakt-E-Mail`}),` sind die beste Quelle.`]}),(0,U.jsx)(`div`,{className:`flex justify-end pt-2`,children:(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:e,children:`Schliessen`})})]})}):(0,U.jsx)(nr,{open:!0,onClose:e,title:`Kontakte importieren`,children:(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Aus deinen Bewerbungen und E-Mail-Dokumenten konnten `,m.length+h.length,` potenzielle Kontakte gefunden werden. Waehle aus, welche du als Kontakt anlegen moechtest. Bestehende Kontakte sind ausgefiltert.`]}),m.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-medium text-ink`,children:[`Aus Bewerbungen (`,m.length,`)`]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>f(`app`,m),className:`text-[11px] text-sky hover:underline`,children:`Alle umschalten`})]}),(0,U.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-1.5`,children:m.map((e,t)=>(0,U.jsxs)(`label`,{className:`flex items-start gap-2 p-2 rounded-md hover:bg-white/[0.03] cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:s.has(`app-${t}`),onChange:()=>d(`app-${t}`),className:`mt-1`}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.full_name}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:[e.email&&(0,U.jsx)(`span`,{children:e.email}),e.email&&e.company&&` · `,e.company&&(0,U.jsx)(`span`,{children:e.company})]})]})]},`app-${t}`))})]}),h.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-medium text-ink`,children:[`Aus Mail-Dokumenten (`,h.length,`)`,(0,U.jsx)(`span`,{className:`ml-2 text-[10px] uppercase tracking-wide text-amber/80`,children:`Heuristik — pruefe sorgfaeltig`})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>f(`mail`,h),className:`text-[11px] text-sky hover:underline`,children:`Alle umschalten`})]}),(0,U.jsx)(`div`,{className:`max-h-48 overflow-y-auto space-y-1.5`,children:h.map((e,t)=>(0,U.jsxs)(`label`,{className:`flex items-start gap-2 p-2 rounded-md hover:bg-white/[0.03] cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:s.has(`mail-${t}`),onChange:()=>d(`mail-${t}`),className:`mt-1`}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.full_name}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:[e.email,e.found_in?.length>0&&(0,U.jsxs)(`span`,{className:`ml-2 text-muted/40`,children:[`aus `,e.found_in.length,` `,e.found_in.length===1?`Mail`:`Mails`]})]})]})]},`mail-${t}`))})]}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between pt-3 border-t border-white/5`,children:[(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[g,` ausgewaehlt`]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:e,disabled:l,children:`Abbrechen`}),(0,U.jsx)(G,{size:`sm`,onClick:p,disabled:l||g===0,children:l?`Importiere...`:`${g} importieren`})]})]})]})})}function gi(e){if(e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function _i(e=[]){let t=[],n=[];for(let r of e){let e=gi(r?.salary_min),i=gi(r?.salary_max);if(e===null&&i===null)continue;e===null&&(e=i),i===null&&(i=e);let a={min:e,max:i,salaryType:String(r?.salary_type||``).toLowerCase()};r?.salary_estimated?n.push(a):t.push(a)}let r=[...t,...n],i=t.length===0&&n.length>0,a=r.filter(e=>e.salaryType===`jaehrlich`&&e.min>=2e4);if(!a.length)return{jobsWithSalary:r.length,annualBasisCount:0,averageMin:null,averageMax:null,bandMin:null,bandMax:null,allEstimated:i};let o=a.map(e=>e.min),s=a.map(e=>e.max);return{jobsWithSalary:r.length,annualBasisCount:a.length,averageMin:Math.round(o.reduce((e,t)=>e+t,0)/o.length),averageMax:Math.round(s.reduce((e,t)=>e+t,0)/s.length),bandMin:Math.min(...o),bandMax:Math.max(...s),allEstimated:i}}function vi(){let{chrome:e,reloadKey:t,refreshChrome:n,navigateTo:r,copyPrompt:i,pushToast:a,startJobsuche:o}=jt(),s=(0,w.useRef)({message:``,at:0}),[c,l]=(0,w.useState)(!0),[u,d]=(0,w.useState)(null),[f,p]=(0,w.useState)({jobs:[],applications:[],followUps:[],statistics:{},zombies:[],meetings:[],emails:[]}),[m,h]=(0,w.useState)(null),[g,_]=(0,w.useState)([]),[v,y]=(0,w.useState)([]),[b,x]=(0,w.useState)(()=>Math.floor(Math.random()*5)),[S,C]=(0,w.useState)(()=>{try{return JSON.parse(localStorage.getItem(`pbp_dismissed_hints`)||`[]`)}catch{return[]}}),[T,E]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp_dashboard_quickhelp_open`);return e===null?!0:e===`1`}catch{return!0}}),D=(0,w.useEffectEvent)(async()=>{if(!e.status?.has_profile){(0,w.startTransition)(()=>{p({jobs:[],applications:[],followUps:[],statistics:{},zombies:[],meetings:[],emails:[]}),l(!1)});return}try{let[e,t,n,r,i,o,c,u]=await Promise.all([Dt(`/api/jobs?active=true`),Dt(`/api/applications`),Dt(`/api/follow-ups`),Dt(`/api/statistics`),Dt(`/api/applications/zombies`),Dt(`/api/meetings`),Dt(`/api/emails`),Dt(`/api/daily-impulse`)]);if(!e&&!t&&!n&&!r){let e=`Server nicht erreichbar — LiveUpdate pausiert.`,t=Date.now();(e!==s.current.message||t-s.current.at>3e4)&&(s.current={message:e,at:t},a(e,`danger`)),(0,w.startTransition)(()=>l(!1));return}(0,w.startTransition)(()=>{p({jobs:e||[],applications:t?.applications||[],followUps:n?.follow_ups||[],statistics:r||{},zombies:i?.zombies||[],meetings:o?.meetings||[],emails:c?.emails||[]}),u&&d(u),l(!1)}),Dt(`/api/scraper-health`).then(e=>{e?.scrapers?.length&&_(e.scrapers)}).catch(()=>{}),Dt(`/api/public/hints`).then(e=>{e?.hints?.length&&y(e.hints)}).catch(()=>{})}catch(e){let t=`Dashboard-Daten konnten nicht geladen werden: ${e.message}`,n=Date.now();(t!==s.current.message||n-s.current.at>1e4)&&(s.current={message:t,at:n},a(t,`danger`)),(0,w.startTransition)(()=>l(!1))}});if((0,w.useEffect)(()=>{l(!0),D()},[t,e.status?.has_profile]),c&&e.status?.has_profile)return(0,U.jsx)(tr,{label:`Dashboard wird vorbereitet...`});let O=f.followUps.filter(e=>e.faellig),k=f.statistics?.applications_by_status?.interview||0,j=Number(f.statistics?.total_applications||f.applications?.length||0),N=(f.applications||[]).map(e=>Date.parse(e?.applied_at||e?.created_at||e?.updated_at||``)).filter(e=>Number.isFinite(e)),ee=(()=>{let e=e=>new Intl.NumberFormat(`de-DE`,{minimumFractionDigits:e>0&&e<10?1:0,maximumFractionDigits:e>0&&e<10?1:0}).format(e),t=Date.now(),n=1e3*60*60*24,r=[],i=N.filter(e=>t-e<=30*n).length;r.push({value:e(j?i/(30/7):0),note:`Ø seit 1 Monat`});let a=N.filter(e=>t-e<=365*n).length;if(r.push({value:e(j?a/(365/7):0),note:`Ø seit 1 Jahr`}),N.length){let i=Math.min(...N),a=Math.max(1,Math.ceil((t-i)/n)+1);r.push({value:e(j/(a/7)),note:`Ø gesamt`})}else r.push({value:e(j),note:`Ø gesamt`});let o=Date.parse(f.statistics?.profile_created_at||``);if(Number.isFinite(o)){let i=Math.max(1,Math.ceil((t-o)/n)+1);r.push({value:e(j/(i/7)),note:`Ø seit PBP-Start`})}else r.push(r[2]);let s=(f.statistics?.active_jobs||0)+(f.statistics?.dismissed_jobs||0);return s>0?r.push({value:e(j/s*100),note:`pro 100 Stellen (${s} analysiert)`}):r.push({value:`—`,note:`Noch keine Stellen analysiert`}),r})(),I=ee[b%ee.length],te=I.value,ie=new Set((f.applications||[]).filter(e=>e.job_hash&&![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.status)).map(e=>e.job_hash)),L=f.jobs.filter(e=>!ie.has(e.hash)).length,R=f.jobs.length,ae=_i(f.jobs),oe=!!ae.allEstimated,ce=Number(ae.annualBasisCount||0),le=Number(ae.averageMin),ue=Number(ae.averageMax),fe=Number.isFinite(le),pe=Number.isFinite(ue),me=fe&&pe?Math.round((le+ue)/2):fe?Math.round(le):pe?Math.round(ue):null,he=Number(ae.bandMin),ge=Number(ae.bandMax),ve=Number.isFinite(he),ye=Number.isFinite(ge),be=e=>new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(Math.round(e)),xe=ve&&ye?`${be(he)} – ${be(ge)} EUR`:ve?wn(he):ye?wn(ge):`Keine Angabe`,Se=e.searchStatus?.last_search||``,Ce=Number(e.searchStatus?.days_ago),B=Number.isFinite(Ce),Te=k+Number(f.statistics?.applications_by_status?.zweitgespraech||0),Ee=new Date;Ee.setHours(0,0,0,0);let Oe=new Date(Ee);Oe.setDate(Oe.getDate()+7);let ke=f.followUps.filter(e=>{let t=String(e?.app_status||``).toLowerCase();if(t!==`interview`&&t!==`zweitgespraech`)return!1;let n=Date.parse(e?.scheduled_date||``);if(Number.isNaN(n))return!1;let r=new Date(n);return r>=Ee&&r<=Oe}).sort((e,t)=>String(e.scheduled_date||``).localeCompare(String(t.scheduled_date||``))),Ae=!Se||!B||Ce>0,je=R>0?j/R:0,Me=Number(e.workspace?.sources?.active||0),Fe=R>=3&&je>=.6&&Me<2,Ie=[];Ae&&Ie.push({id:`jobsuche`,title:`Neue Jobsuche starten`,description:Se&&B?`Die letzte Jobsuche war vor ${Ce} ${Ce===1?`Tag`:`Tagen`}.`:`Heute wurde noch keine Jobsuche durchgeführt.`,tone:`danger`,actionLabel:`Jetzt starten`,action:()=>o()}),Te>0&&ke.length===0&&Ie.push({id:`interviews`,title:`Interview vorbereiten`,description:`${Te} Bewerbung(en) sind im Interview-Status.`,tone:`amber`,actionLabel:`Vorbereiten`,action:()=>r(`bewerbungen`,{filter:`interview`})}),O.length>0&&Ie.push({id:`followups`,title:`Nachfragen nicht vergessen`,description:`Bei ${O.length} Bewerbung(en) solltest du nachhaken.`,tone:`sky`,actionLabel:`Öffnen`,action:()=>r(`bewerbungen`,{filter:`followups_due`})}),f.zombies.length>0&&Ie.push({id:`zombies`,title:`Lange keine Antwort bekommen`,description:`${f.zombies.length} Bewerbung(en) warten seit ueber 60 Tagen auf Rueckmeldung.`,tone:`amber`,actionLabel:`Bewerbungen`,action:()=>r(`bewerbungen`,{filter:`zombies`})}),Fe&&Ie.push({id:`quellen`,title:`Neue Quellen hinzufügen`,description:`${j} von ${R} aktiven Stellen sind bereits in Bewerbungen.`,tone:`success`,actionLabel:`Quellen`,action:()=>r(`einstellungen`)});let Le=e.workspace?.readiness||{},ze=Array.isArray(e.workspace?.ueberfaellige_aufgaben)?e.workspace.ueberfaellige_aufgaben:[],Be=Array.isArray(e.workspace?.todos)?e.workspace.todos:[],Ve=Number(e.workspace?.profile?.completeness||0),He=Number(e.workspace?.jobs?.ohne_beschreibung||0);async function Ue(e){if(e){if(String(e.typ||``)===`beschreibung_nachladen`||String(e.aktion||``).includes(`beschreibung_fehlt`)){r(`stellen`,{missingDescriptionOnly:!0});return}if(e.action_type===`prompt`&&e.action_target){await i(e.action_target);return}e.action_type===`page`&&e.action_target&&r(e.action_target)}}return e.status?.has_profile?(0,U.jsxs)(`div`,{id:`page-dashboard`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Dashboard`}),(0,U.jsx)(zr,{page:`dashboard`}),v.filter(e=>!S.includes(e.id)).length>0&&(0,U.jsx)(`div`,{className:`mb-4 space-y-2`,children:v.filter(e=>!S.includes(e.id)).map(e=>(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border px-4 py-3 text-sm ${e.type===`warning`?`border-amber-500/20 bg-amber-500/5 text-amber-200`:`border-sky-500/20 bg-sky-500/5 text-sky-200`}`,children:[(0,U.jsxs)(`div`,{children:[e.title&&(0,U.jsxs)(`span`,{className:`font-medium`,children:[e.title,` `]}),e.text,e.url?(0,U.jsxs)(U.Fragment,{children:[` `,(0,U.jsxs)(`a`,{href:e.url,target:`_blank`,rel:`noopener noreferrer`,className:`font-medium underline underline-offset-2 hover:opacity-80`,children:[e.url_label||`Mehr erfahren`,` →`]})]}):null]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{let t=[...S,e.id];C(t);try{localStorage.setItem(`pbp_dismissed_hints`,JSON.stringify(t))}catch{}},className:`shrink-0 rounded p-0.5 opacity-50 hover:opacity-100 transition-opacity`,title:`Schliessen`,children:(0,U.jsx)(yt,{size:14})})]},e.id))}),(0,U.jsxs)(`div`,{className:`mb-5 grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,U.jsx)(Jn,{label:`Bewerbungen`,value:j,note:`${j} geschrieben${L>0?` / ${L} unbearbeitete Stellen`:``}`,tone:`sky`}),(0,U.jsx)(Jn,{label:(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5`,children:[`Bew. / Woche`,(0,U.jsx)(`button`,{type:`button`,onClick:()=>x(e=>(e+1)%ee.length),className:`rounded p-0.5 text-muted/30 hover:text-sky transition-colors`,title:`Andere Perspektive`,children:(0,U.jsx)(Ye,{size:11})})]}),value:te,note:I.note,tone:`sky`}),(0,U.jsx)(Jn,{label:`Gehaltsdurchschnitt${oe?` (geschätzt)`:``}`,value:me===null?`Keine Angabe`:wn(me),note:ce>0?`Auf Basis von ${ce} Stellen mit Jahresgehalt`:`Noch keine Gehaltsdaten`,tone:`success`}),(0,U.jsx)(Jn,{label:`Gehaltsbandbreite${oe?` (geschätzt)`:``}`,value:xe,note:ce>0?`Niedrigster bis höchster Wert über ${ce} Stellen`:`Echte Min/Max-Spanne über alle Stellen`,tone:`success`})]}),(0,U.jsxs)(`div`,{className:`mb-5 grid gap-4`,children:[ze.length>0&&(0,U.jsx)(K,{className:`rounded-2xl border border-coral/40 bg-coral/[0.08]`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(de,{size:16,className:`text-coral`}),(0,U.jsxs)(`p`,{className:`text-sm font-bold uppercase tracking-[0.12em] text-coral`,children:[ze.length,` `,ze.length===1?`Aufgabe überfällig`:`Aufgaben überfällig`]})]}),(0,U.jsxs)(`ul`,{className:`mt-2 space-y-1`,children:[ze.slice(0,5).map(e=>(0,U.jsxs)(`li`,{className:`text-sm text-ink`,children:[(0,U.jsx)(`span`,{className:`font-medium`,children:e.titel}),e.bewerbung_titel?(0,U.jsxs)(`span`,{className:`text-muted/60`,children:[` — `,e.bewerbung_titel,e.firma?` (${e.firma})`:``]}):null,(0,U.jsxs)(`span`,{className:`ml-2 text-xs font-semibold text-coral`,children:[`fällig `,Sn(e.faellig_am)]})]},e.id)),ze.length>5&&(0,U.jsxs)(`li`,{className:`text-xs text-muted/60`,children:[`und `,ze.length-5,` weitere …`]})]})]}),(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:()=>r(`bewerbungen`),children:`Zu den Bewerbungen`})]})}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(q,{tone:En(Le.tone),children:Le.label||`Nächster Schritt`}),(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[Ve,`% Profil vollständig`]}),He>0?(0,U.jsxs)(`span`,{className:`text-xs text-amber`,children:[He,` Treffer mit unsicherem Score`]}):null]}),(0,U.jsx)(`p`,{className:`mt-3 text-[11px] font-semibold uppercase tracking-[0.15em] text-muted/55`,children:`Nächster sinnvoller Schritt`}),(0,U.jsx)(`h2`,{className:`mt-1 text-base font-semibold text-ink`,children:Le.headline||`Weiter im Prozess`}),(0,U.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:Le.description||`PBP zeigt dir hier immer, was als Nächstes sinnvoll ist.`})]}),(0,U.jsx)(`div`,{className:`flex shrink-0 gap-2`,children:Le.action_label&&Le.action_target!==`dashboard`?(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:()=>Ue(Le),children:Le.action_label}):null})]}),(Ie.length>0||Be.length>0)&&(0,U.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[Ie.map(e=>(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl border border-white/[0.05] px-4 py-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex items-center gap-2.5`,children:[(0,U.jsx)(q,{tone:e.tone,children:e.id===`jobsuche`?`Priorität 1`:e.id===`interviews`?`Priorität 2`:e.id===`followups`?`Priorität 3`:`Empfehlung`}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:e.title}),(0,U.jsx)(`p`,{className:`mt-0.5 text-[12px] text-muted/60`,children:e.description})]})]}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:e.action,children:e.actionLabel})]},e.id)),Be.slice(0,2).map(e=>(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3 rounded-xl border border-white/[0.05] px-4 py-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex items-center gap-2.5`,children:[(0,U.jsx)(q,{tone:e.prioritaet===`hoch`?`amber`:`blue`,children:`Hinweis`}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:e.text}),(0,U.jsx)(`p`,{className:`mt-0.5 text-[12px] text-muted/60`,children:e.prioritaet===`hoch`?`Bitte zuerst prüfen.`:`Optional, aber sinnvoll für sauberere Ergebnisse.`})]})]}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>Ue(e),children:`Öffnen`})]},`ws-${e.typ}-${e.text}`))]})]}),u?.enabled&&u?.impulse?.text&&(0,U.jsx)(K,{className:`rounded-2xl border-amber-600/30 bg-amber-950/10`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsx)(`p`,{className:`mb-1 text-[11px] font-semibold uppercase tracking-[0.15em] text-amber-400/60`,children:u.impulse.title||`Heute für dich`}),(0,U.jsx)(`p`,{className:`text-sm italic text-muted`,children:u.impulse.text})]}),(0,U.jsx)(`button`,{className:`shrink-0 text-xs text-muted/40 hover:text-muted`,title:`Tagesimpuls ausblenden`,onClick:async()=>{try{await H(`/api/daily-impulse/toggle`),d(e=>({...e,enabled:!1}))}catch{}},children:`ausblenden`})]})})]}),(()=>{let e=ke.filter(e=>!f.meetings.some(t=>!t.is_follow_up&&t.application_id===e.application_id&&t.meeting_date?.startsWith(e.scheduled_date))).map(e=>({id:`interview-${e.id}`,title:`Interview vorbereiten`,meeting_date:e.scheduled_date+`T09:00:00`,app_company:e.company||e.title||``,app_title:e.title||``,platform:null,meeting_url:null,application_id:e.application_id,_isInterview:!0})),t=(e,t)=>String(e.meeting_date||``).localeCompare(String(t.meeting_date||``)),o=f.meetings.filter(e=>!e.is_follow_up).sort(t),s=[...f.meetings.filter(e=>e.is_follow_up),...e].sort(t);if(o.length===0&&s.length===0)return null;let c=e=>{let t=new Date(e.meeting_date),o=new Date,s=t-o,c=e=>new Date(e.getFullYear(),e.getMonth(),e.getDate()),l=Math.round((c(t)-c(o))/864e5),u=Math.floor(s/(1e3*60*60)),d=l>1?`in ${l} Tagen`:l===1?`morgen`:s>0?u>0?`heute, in ${u} Std.`:`jetzt gleich`:`vergangen`,f=l===0&&s>0,p=e.is_private,m=e.platform===`teams`?`Teams`:e.platform===`zoom`?`Zoom`:e.platform===`google_meet`?`Meet`:``;return(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border px-4 py-3 cursor-pointer transition-colors hover:bg-white/[0.03] ${f?`border-teal/30 bg-teal/5`:`border-white/[0.04]`}`,onClick:()=>{p?r(`kalender`):e.application_id?r(`bewerbungen`,{highlight:e.application_id}):r(`kalender`)},children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-[13px] font-semibold text-ink`,children:p?`Geblockt`:e.title||e.app_title||`Termin`}),!p&&(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[e.app_company&&(0,U.jsxs)(`span`,{className:`font-medium text-muted/80`,children:[e.app_company,` — `]}),Sn(e.meeting_date),` `,t.toLocaleTimeString(`de-DE`,{hour:`2-digit`,minute:`2-digit`}),` Uhr`,m&&(0,U.jsx)(`span`,{className:`ml-1.5 rounded bg-sky/15 px-1.5 py-px text-[10px] font-bold text-sky`,children:m})]}),p&&(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/40`,children:[Sn(e.meeting_date),` `,t.toLocaleTimeString(`de-DE`,{hour:`2-digit`,minute:`2-digit`}),` Uhr`]}),(0,U.jsx)(`p`,{className:`mt-0.5 text-[11px] font-medium ${f?`text-teal`:l<=3?`text-amber`:`text-muted/50`}`,children:d})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1.5`,children:[!e._isInterview&&!e.is_follow_up&&!p&&(0,U.jsxs)(`a`,{href:`/api/meetings/${e.id}/ics`,download:!0,onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1 rounded-lg bg-white/5 px-2 py-1.5 text-[11px] font-semibold text-muted/50 transition hover:bg-white/10 hover:text-ink`,title:`Als .ics exportieren`,children:[(0,U.jsx)(_e,{size:12}),` .ics`]}),e._isInterview?(0,U.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),i(`/interview_vorbereitung${e.app_title?` stelle="${e.app_title}"`:``}${e.app_company?` firma="${e.app_company}"`:``}`)},className:`inline-flex items-center gap-1.5 rounded-lg bg-amber/15 px-3 py-1.5 text-[12px] font-semibold text-amber transition hover:bg-amber/25`,children:[(0,U.jsx)(ne,{size:14}),`Vorbereiten`]}):e.is_follow_up?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();let r=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${r}/complete`,{}),a(`Nachfass als erledigt markiert.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,title:`Nachfass erledigt`,children:`Erledigt`}),(0,U.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();let r=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${r}/dismiss`,{}),a(`Nachfass als hinfaellig geschlossen.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-white/5 px-3 py-1.5 text-[12px] font-semibold text-muted/70 transition hover:bg-white/10 hover:text-ink`,title:`Nicht mehr noetig`,children:`Hinfällig`})]}):!p&&e.meeting_url?(0,U.jsxs)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noopener noreferrer`,onClick:e=>e.stopPropagation(),className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,children:[(0,U.jsx)(ht,{size:14}),`Beitreten`]}):null,!e._isInterview&&!e.is_follow_up&&!p&&s<0&&(e.status===`geplant`||e.status===`bestaetigt`)&&(0,U.jsx)(`button`,{type:`button`,onClick:async t=>{t.stopPropagation();try{await Ot(`/api/meetings/${e.id}`,{status:`durchgefuehrt`}),a(`Termin als durchgeführt markiert.`,`success`),D(),n({quiet:!0})}catch(e){a(`Fehler: ${e.message}`,`danger`)}},className:`inline-flex items-center gap-1.5 rounded-lg bg-teal/15 px-3 py-1.5 text-[12px] font-semibold text-teal transition hover:bg-teal/25`,title:`Termin hat stattgefunden`,children:`Durchgeführt`})]})]},e.id)};return(0,U.jsxs)(U.Fragment,{children:[o.length>0&&(0,U.jsxs)(K,{className:`mb-5 rounded-2xl`,children:[(0,U.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,U.jsxs)(`button`,{type:`button`,className:`text-sm font-semibold text-ink hover:text-sky transition-colors flex items-center gap-1.5`,onClick:()=>r(`kalender`),children:[(0,U.jsx)(ne,{size:14,className:`text-teal/60`}),`Anstehende Termine`]})}),(0,U.jsx)(`div`,{className:`mt-3 grid gap-2`,children:o.slice(0,5).map(c)})]}),s.length>0&&(0,U.jsxs)(K,{className:`mb-5 rounded-2xl`,children:[(0,U.jsx)(`div`,{className:`flex items-center justify-between`,children:(0,U.jsxs)(`button`,{type:`button`,className:`text-sm font-semibold text-ink hover:text-sky transition-colors flex items-center gap-1.5`,onClick:()=>r(`kalender`),title:`Nachfass- und Vorbereitungs-Erinnerungen — keine festen Termine`,children:[(0,U.jsx)(M,{size:14,className:`text-amber/60`}),`Offene Erinnerungen`]})}),(0,U.jsx)(`div`,{className:`mt-3 grid gap-2`,children:s.slice(0,5).map(c)})]})]})})(),(0,U.jsx)(Ci,{pushToast:a,refreshChrome:n}),(0,U.jsx)(xi,{pushToast:a,navigateTo:r}),(0,U.jsx)(yi,{pushToast:a,navigateTo:r}),(0,U.jsx)(bi,{pushToast:a,navigateTo:r}),(0,U.jsxs)(`div`,{id:`dashboard-content`,className:`grid gap-5`,children:[(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(`div`,{className:`flex items-start justify-between gap-3 flex-wrap`,children:(0,U.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Schnellzugriff`})}),(0,U.jsxs)(`details`,{className:`mt-1.5 rounded-lg border border-sky/15 bg-sky/[0.05] px-3 py-2 group`,open:T,onToggle:e=>{let t=e.currentTarget.open;E(t);try{localStorage.setItem(`pbp_dashboard_quickhelp_open`,t?`1`:`0`)}catch{}},children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer list-none flex items-center gap-2 text-[12px] text-muted/80`,children:[(0,U.jsx)(De,{size:13,className:`shrink-0 text-sky/70`}),(0,U.jsx)(`span`,{className:`flex-1`,children:(0,U.jsx)(`strong`,{className:`text-ink/90`,children:`Was ist der Schnellzugriff?`})}),(0,U.jsx)(`span`,{className:`text-muted/50 text-[10px] group-open:rotate-90 transition-transform shrink-0`,children:`▶`})]}),(0,U.jsxs)(`p`,{className:`mt-2 pl-[21px] text-[12px] text-muted/80 leading-relaxed`,children:[`Beispiel-Prompts fuer Claude Desktop. `,(0,U.jsx)(`strong`,{className:`text-ink/90`,children:`Klick auf eine Karte kopiert den Prompt in die Zwischenablage`}),` — danach in Claude einfuegen und absenden. Du kannst auch frei mit Claude reden; das hier sind nur Vorschlaege fuer haeufige Workflows. Die `,(0,U.jsx)(`strong`,{className:`text-ink/90`,children:`vollstaendige Liste aller Prompts`}),` findest du unter „Hilfe & Support" → Reiter „Prompts".`]})]}),[{title:`Profil`,items:[{prompt:`/ersterfassung`,label:`Kennenlernen`,desc:`Profil im Gespraech erstellen`,icon:z},{prompt:`/willkommen`,label:`Wo stehe ich?`,desc:`Dein aktueller Stand`,icon:P},{prompt:`/profil_erweiterung`,label:`Dokumente analysieren`,desc:`Profil ergaenzen, Skills extrahieren, CV bewerten`,icon:se}]},{title:`Jobsuche & Bewerbung`,items:[{prompt:`/jobsuche_workflow`,label:`Jobsuche starten`,desc:`Jobboersen durchsuchen lassen`,icon:Ze},{prompt:`/bewerbung_schreiben`,label:`Bewerbung schreiben`,desc:`Anschreiben erstellen lassen`,icon:Qe},{prompt:`/auto_bewerbung`,label:`Inbound erfassen`,desc:`Recruiter hat sich gemeldet`,icon:Ne}]},{title:`Interview & Verhandlung`,items:[{prompt:`/interview_vorbereitung`,label:`Interview vorbereiten`,desc:`Typische Fragen ueben`,icon:F},{prompt:`/interview_simulation`,label:`Uebungsgespraech`,desc:`Probelauf mit Claude`,icon:Re},{prompt:`/gehaltsverhandlung`,label:`Gehalt verhandeln`,desc:`Strategie besprechen`,icon:we}]},{title:`Analyse & Strategie`,items:[{prompt:`/profil_analyse`,label:`Staerken erkennen`,desc:`Was kann ich besonders gut?`,icon:re},{prompt:`/profil_ueberpruefen`,label:`Profil-Check`,desc:`Fehler finden und korrigieren`,icon:ft},{prompt:`/ablehnungs_coaching`,label:`Aus Absagen lernen`,desc:`Muster erkennen, Strategie anpassen`,icon:st}]}].map(e=>(0,U.jsxs)(`div`,{className:`mt-3`,children:[(0,U.jsx)(`p`,{className:`mb-1.5 text-[11px] font-semibold uppercase tracking-[0.15em] text-teal/60`,children:e.title}),(0,U.jsx)(`div`,{className:`grid grid-cols-1 gap-1.5 sm:grid-cols-3`,children:e.items.map(({prompt:e,label:t,desc:n,icon:r,isNew:a})=>(0,U.jsxs)(`button`,{type:`button`,className:`glass-tab flex items-center gap-3 rounded-xl px-3.5 py-2.5 text-left transition`,onClick:()=>i(e),children:[(0,U.jsx)(r,{size:16,className:`shrink-0 text-teal/50`}),(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1.5 text-[13px] font-semibold text-ink/90`,children:[t,a?(0,U.jsx)(`span`,{className:`rounded bg-teal/15 px-1.5 py-px text-[10px] font-bold text-teal`,children:`NEU`}):null]}),(0,U.jsx)(`span`,{className:`block truncate text-[11px] text-muted/60`,children:n})]})]},e))})]},e.title))]}),(0,U.jsxs)(`div`,{className:`grid gap-3 xl:grid-cols-2`,children:[(0,U.jsxs)(K,{className:`overflow-hidden rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`flex items-baseline gap-2`,children:[(0,U.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Top-Stellen`}),(0,U.jsx)(`span`,{className:`text-[11px] text-muted/40`,children:e.searchStatus?.last_search?`Aktualisiert ${e.searchStatus.days_ago===0?`heute`:e.searchStatus.days_ago===1?`gestern`:`vor ${e.searchStatus.days_ago} Tagen`}`:`Noch nie gesucht`})]}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>r(`stellen`),children:`Alle`})]}),g.length>0&&(0,U.jsxs)(`div`,{className:`mt-1.5 flex flex-wrap items-center gap-2 text-[10px] text-muted/50`,children:[(0,U.jsx)(`span`,{children:`Scraper:`}),g.map(e=>{let t=e.is_active&&e.consecutive_failures<3,n=e.is_active&&e.consecutive_failures>=3&&e.consecutive_failures<10,r=!e.is_active,i=r?`bg-red-500/60`:n?`bg-amber-400/80`:t?`bg-emerald-400/80`:`bg-zinc-500/40`;return(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,title:`${e.scraper_name}: ${r?`deaktiviert`:e.consecutive_failures>0?`${e.consecutive_failures} Fehler`:`OK`} (${e.total_successes}/${e.total_runs} erfolgreich)`,children:[(0,U.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full ${i}`}),e.scraper_name]},e.scraper_name)})]}),(0,U.jsx)(`div`,{className:`mt-3 grid gap-2`,children:(()=>{let e=new Set((f.applications||[]).map(e=>e.job_hash).filter(Boolean)),t=f.jobs.filter(t=>!e.has(t.hash)).sort((e,t)=>(t.score||0)-(e.score||0)).slice(0,3);return t.length?t.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`group flex min-w-0 w-full cursor-pointer items-center justify-between gap-3 rounded-xl border border-white/[0.04] px-4 py-3 text-left transition-all duration-150 hover:-translate-y-[1px] hover:border-sky/35 hover:bg-white/[0.06] hover:shadow-[0_8px_20px_rgba(14,165,233,0.12)] hover:text-ink`,onClick:()=>r(`stellen`,{focus:`job`,jobHash:e.hash}),children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-[13px] font-medium text-ink`,children:e.title}),(0,U.jsxs)(`p`,{className:`truncate text-[12px] text-muted/50`,children:[e.company||`Unbekannt`,e.location?` - ${e.location}`:``]})]}),(0,U.jsx)(`span`,{className:`shrink-0`,children:(0,U.jsxs)(q,{tone:`amber`,children:[`Score `,e.score||0]})})]},e.hash)):(0,U.jsxs)(`p`,{className:`py-4 text-center text-[13px] text-muted/50`,children:[`Noch keine Stellen.`,` `,(0,U.jsx)(`button`,{type:`button`,className:`text-teal/70 hover:text-teal`,onClick:()=>o(),children:`Suche starten`})]})})()})]}),(0,U.jsxs)(K,{className:`overflow-hidden rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsxs)(`h2`,{className:`text-sm font-semibold text-ink`,children:[(0,U.jsx)(Pe,{size:14,className:`mr-1.5 inline-block text-teal/60`}),`E-Mails`,f.emails.filter(e=>!e.application_id).length>0&&(0,U.jsxs)(`span`,{className:`ml-1.5 rounded-full bg-amber/20 px-1.5 py-px text-[10px] font-bold text-amber`,children:[f.emails.filter(e=>!e.application_id).length,` offen`]})]}),(0,U.jsx)(wi,{pushToast:a})]}),(0,U.jsx)(`div`,{className:`mt-3 grid gap-1.5`,children:f.emails.length>0?f.emails.slice(0,6).map(e=>(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full min-w-0 items-center gap-2 rounded-lg border border-white/[0.04] px-3 py-2 text-left transition hover:bg-white/[0.04]`,onClick:async()=>{try{h(await V(`/api/emails/${e.id}`))}catch{h(e)}},children:[(0,U.jsx)(`span`,{className:`shrink-0 text-sm ${e.direction===`ausgang`?`text-sky`:`text-amber`}`,children:e.direction===`ausgang`?`↗`:`↙`}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`truncate text-[13px] text-ink`,children:e.subject||`Ohne Betreff`}),(0,U.jsxs)(`p`,{className:`truncate text-[11px] text-muted/50`,children:[e.sender||e.recipients,e.sent_date&&(0,U.jsx)(`span`,{className:`ml-1.5`,children:Sn(e.sent_date)})]})]}),!e.application_id&&(0,U.jsx)(q,{tone:`amber`,children:`Offen`}),e.detected_status&&(0,U.jsx)(q,{tone:`sky`,children:e.detected_status})]},e.id)):(0,U.jsx)(`p`,{className:`py-4 text-center text-[13px] text-muted/50`,children:`Keine E-Mails importiert. Drag & Drop oder Button nutzen.`})})]})]})]}),m&&(0,U.jsx)(Si,{email:m,applications:f.applications,onClose:()=>h(null),pushToast:a,onUpdate:()=>{h(null),D()}})]}):(0,U.jsxs)(`div`,{id:`page-dashboard`,className:`page active`,children:[(0,U.jsx)(Kn,{title:`Dashboard`,description:`Hier siehst du auf einen Blick, was als Nächstes zu tun ist.`,eyebrow:`Uebersicht`}),(0,U.jsx)(`div`,{id:`welcome-screen`,className:`grid gap-6`,children:(0,U.jsx)(K,{className:`glass-hero rounded-2xl p-8`,children:(0,U.jsxs)(`div`,{className:`grid gap-8 lg:grid-cols-[minmax(0,1.3fr)_minmax(18rem,0.9fr)]`,children:[(0,U.jsxs)(`div`,{className:`space-y-5`,children:[(0,U.jsx)(q,{tone:`sky`,children:`Dein Bewerbungs-Begleiter`}),(0,U.jsx)(`h2`,{className:`font-display text-4xl font-semibold tracking-tight text-ink`,children:`Willkommen bei PBP`}),(0,U.jsx)(`p`,{className:`max-w-2xl text-base text-muted`,children:`PBP hilft dir Schritt für Schritt durch den Bewerbungsprozess — vom Lebenslauf bis zum Vorstellungsgespräch. Alles bleibt auf deinem Rechner.`}),(0,U.jsx)(`p`,{className:`max-w-2xl text-sm text-muted/70`,children:`Du musst nicht wissen, was du tun sollst — PBP zeigt dir bei jedem Schritt, was als Nächstes sinnvoll ist.`}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-3`,children:[(0,U.jsxs)(G,{onClick:()=>r(`profil`),children:[`Starte dein Profil (ca. 10 Minuten)`,(0,U.jsx)(A,{size:15})]}),(0,U.jsxs)(G,{variant:`ghost`,onClick:()=>r(`profil`,{composer:`document`}),children:[(0,U.jsx)(dt,{size:15}),`Ich habe schon Unterlagen (optional)`]})]})]}),(0,U.jsx)(`div`,{className:`grid gap-4`,children:[{title:`Schritt 1 — Profil`,text:`Erzähl Claude von dir. Deine Erfahrung, deine Stärken, deine Wünsche.`},{title:`Schritt 2 — Stellen finden`,text:`PBP durchsucht Jobbörsen und zeigt dir passende Stellen mit Bewertung.`},{title:`Schritt 3 — Bewerben`,text:`Anschreiben erstellen, Bewerbungen verfolgen, Termine im Blick behalten.`}].map(e=>(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:e.title}),(0,U.jsx)(`p`,{className:`mt-3 text-sm leading-6 text-ink`,children:e.text})]},e.title))})]})})})]})}function yi({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(!1);if((0,w.useEffect)(()=>{try{let e=localStorage.getItem(`pbp_local_ai_banner_dismissed_until`);if(e&&new Date(e)>new Date){a(!0);return}}catch{}fetch(`/api/llm/status`).then(e=>e.ok?e.json():null).then(e=>r(e)).catch(()=>{})},[]),i||!n||!(n.ollama_available&&(n.available_models?.length||0)>0&&n.user_state===`off`))return null;function o(){try{let e=new Date;e.setDate(e.getDate()+7),localStorage.setItem(`pbp_local_ai_banner_dismissed_until`,e.toISOString())}catch{}a(!0)}async function s(){try{await H(`/api/llm/state`,{state:`active`}),e(`Lokale KI aktiviert.`,`success`),a(!0)}catch(t){e(`Aktivieren fehlgeschlagen: ${t.message}`,`danger`)}}return(0,U.jsx)(K,{className:`rounded-2xl border-sky/30 bg-sky/[0.06]`,children:(0,U.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,U.jsx)(`div`,{className:`text-2xl`,children:`🟡`}),(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink mb-1`,children:`Ollama erkannt — willst du PBP-Lokale-KI aktivieren?`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/70 mb-3`,children:[`Spart Claude-Tokens fuer Standard-Aufgaben (Doku-Klassifikation, Skill-Extraktion, Stellen-Vorfilterung). Daten bleiben lokal. Aktuell installiert: `,(0,U.jsx)(`strong`,{className:`text-ink`,children:(n.available_models||[]).join(`, `)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(G,{size:`sm`,onClick:s,children:`Aktivieren`}),(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:()=>t(`einstellungen`,{tab:`ai`}),children:`In Einstellungen ansehen`}),(0,U.jsx)(`button`,{type:`button`,onClick:o,className:`text-[11px] text-muted/60 hover:text-ink underline ml-2`,children:`Spaeter (7 Tage)`})]})]})]})})}function bi({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)([]),[o,s]=(0,w.useState)(!0);(0,w.useEffect)(()=>{let e=!1;return fetch(`/api/activity/aggregate?days=30`).then(e=>e.ok?e.json():null).then(t=>{e||r(t)}).catch(()=>{}),fetch(`/api/learning/insights?only_active=1&limit=10`).then(e=>e.ok?e.json():null).then(t=>{!e&&t?.insights&&a(t.insights)}).catch(()=>{}),()=>{e=!0}},[]);let c=async e=>{try{(await fetch(`/api/learning/insights/${e}`,{method:`DELETE`})).ok&&a(t=>t.filter(t=>t.id!==e))}catch{}};return!n||n.total_events<50&&(n.anti_patterns||[]).length===0&&i.length===0?null:(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>s(!o),className:`w-full flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`text-left`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Was PBP gelernt hat`}),(0,U.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[n.total_events,` Events in `,n.window_days,` Tagen`,n.anti_patterns?.length>0&&(0,U.jsxs)(`span`,{className:`ml-2 text-amber`,children:[`· `,n.anti_patterns.length,` Hinweis`,n.anti_patterns.length===1?``:`e`]}),i.length>0&&(0,U.jsxs)(`span`,{className:`ml-2 text-teal`,children:[`· `,i.length,` KI-Insight`,i.length===1?``:`s`]})]})]}),(0,U.jsx)(`span`,{className:`text-muted/40 text-xs`,children:o?`▼`:`▲`})]}),!o&&(0,U.jsxs)(`div`,{className:`mt-4 grid gap-4 lg:grid-cols-2`,children:[n.top_pages?.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Top-Seiten`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:n.top_pages.map(e=>(0,U.jsxs)(`div`,{className:`glass-card p-2 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`font-medium text-ink`,children:e.page}),(0,U.jsxs)(`span`,{className:`text-muted/50`,children:[e.views,`× besucht`]})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60 mt-0.5`,children:[e.dwell_minutes,` min Verweildauer · `,e.clicks_per_view,` Klicks/Besuch`]})]},e.page))})]}),n.dismiss_reasons_top?.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Top-Aussortier-Gruende`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:n.dismiss_reasons_top.map(e=>(0,U.jsxs)(`div`,{className:`glass-card p-2 text-[12px] flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`font-medium text-ink`,children:e.reason}),(0,U.jsxs)(`span`,{className:`text-muted/50`,children:[e.count,`×`]})]},e.reason))})]}),n.top_filters?.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Haeufige Filter`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:n.top_filters.map(e=>(0,U.jsxs)(`div`,{className:`glass-card p-2 text-[12px] flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`font-mono text-ink`,children:e.filter}),(0,U.jsxs)(`span`,{className:`text-muted/50`,children:[e.count,`×`]})]},e.filter))})]}),Object.keys(n.workflow_stats||{}).length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:`Workflows`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:Object.entries(n.workflow_stats).map(([e,t])=>{let n=t.start||0,r=t.complete||0,i=t.abort||0,a=n>0?Math.round(r/n*100):0;return(0,U.jsxs)(`div`,{className:`glass-card p-2 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`span`,{className:`font-medium text-ink`,children:e}),(0,U.jsxs)(`span`,{className:a>=70?`text-teal`:a>=40?`text-amber`:`text-coral`,children:[a,`%`]})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-0.5`,children:[n,` gestartet · `,r,` abgeschlossen · `,i,` abgebrochen`]})]},e)})})]}),i.length>0&&(0,U.jsxs)(`div`,{className:`lg:col-span-2`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-teal/80 uppercase mb-2`,children:`KI-Erkenntnisse aus deinem Verhalten`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:i.map(e=>(0,U.jsx)(`div`,{className:`glass-card p-3 text-[12px] border-teal/20 bg-teal/[0.03]`,children:(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-2`,children:[(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`text-[10px] uppercase tracking-wider px-1.5 py-0.5 rounded bg-teal/10 text-teal`,children:e.kind?.replace(/_/g,` `)}),(0,U.jsx)(`span`,{className:`font-medium text-ink`,children:e.title})]}),e.recommendation&&(0,U.jsx)(`p`,{className:`text-[11px] text-muted/70 mt-1.5`,children:e.recommendation}),(0,U.jsxs)(`p`,{className:`text-[10px] text-muted/40 mt-1`,children:[e.observed_count,`× beobachtet`,e.app_version_at_creation&&` · seit v${e.app_version_at_creation}`]})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(e.id),className:`text-[10px] text-muted/40 hover:text-coral`,title:`Nicht mehr anzeigen`,children:`×`})]})},e.id))})]}),n.anti_patterns?.length>0&&(0,U.jsxs)(`div`,{className:`lg:col-span-2`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-amber/80 uppercase mb-2`,children:`Beobachtungen`}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:n.anti_patterns.map((e,t)=>(0,U.jsx)(`div`,{className:`glass-card p-3 text-[12px] border-amber/20 bg-amber/[0.03]`,children:(0,U.jsx)(`p`,{className:`text-muted/80`,children:e.message})},t))})]})]})]})}function xi({pushToast:e,navigateTo:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp_recap_dismissed_until`);if(e&&Number(e)>Date.now())return!0}catch{}return!1});if((0,w.useEffect)(()=>{let e=!1;return fetch(`/api/recap`).then(e=>e.ok?e.json():null).then(t=>{t&&!e&&r(t)}).catch(()=>{}),()=>{e=!0}},[]),i||!n||!n.has_anything)return null;let o=[];return n.new_jobs>0&&o.push({icon:Ze,color:`text-sky`,label:`Neue Stellen`,value:n.new_jobs,onClick:()=>t?.(`stellen`)}),n.new_applications>0&&o.push({icon:Qe,color:`text-teal`,label:`Neue Bewerbungen`,value:n.new_applications,onClick:()=>t?.(`bewerbungen`)}),n.new_emails>0&&o.push({icon:Pe,color:`text-amber`,label:`Neue E-Mails`,value:n.new_emails,onClick:()=>t?.(`bewerbungen`)}),n.status_changes>0&&o.push({icon:Le,color:`text-teal/80`,label:`Statuswechsel`,value:n.status_changes,onClick:()=>t?.(`bewerbungen`)}),n.overdue_followups>0&&o.push({icon:de,color:`text-coral`,label:`Faellige Follow-ups`,value:n.overdue_followups,onClick:()=>t?.(`bewerbungen`)}),n.upcoming_meetings>0&&o.push({icon:ne,color:`text-sky`,label:`Anstehende Termine`,value:n.upcoming_meetings,onClick:()=>t?.(`kalender`)}),(0,U.jsxs)(K,{className:`rounded-2xl border-sky/15 bg-sky/[0.04]`,children:[(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 mb-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Was hat sich getan?`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60 mt-0.5`,children:`Aktivitaet seit deinem letzten Besuch`})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{try{localStorage.setItem(`pbp_recap_dismissed_until`,String(Date.now()+1440*60*1e3))}catch{}a(!0)},className:`text-muted/40 hover:text-ink text-xs`,title:`Bis morgen ausblenden`,children:`✕`})]}),(0,U.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:o.map((e,t)=>(0,U.jsxs)(`button`,{type:`button`,onClick:e.onClick,className:`glass-card flex items-center gap-3 px-3 py-2.5 rounded-lg text-left hover:bg-white/[0.04] transition`,children:[(0,U.jsx)(e.icon,{size:16,className:e.color}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60`,children:e.label}),(0,U.jsx)(`p`,{className:`text-lg font-semibold text-ink`,children:e.value})]})]},t))}),n.top_jobs?.length>0&&(0,U.jsxs)(`div`,{className:`mt-3 pt-3 border-t border-white/5`,children:[(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60 mb-1.5`,children:`Top neue Stellen:`}),(0,U.jsx)(`ul`,{className:`space-y-1`,children:n.top_jobs.slice(0,3).map(e=>(0,U.jsxs)(`li`,{className:`text-[12px] text-muted/80`,children:[(0,U.jsxs)(`span`,{className:`text-teal/70 font-mono mr-1.5`,children:[`[`,e.score,`]`]}),(0,U.jsx)(`span`,{className:`text-ink/90`,children:e.title}),(0,U.jsxs)(`span`,{className:`text-muted/50`,children:[` bei `,e.company]})]},e.hash))})]})]})}function Si({email:e,applications:t,onClose:n,pushToast:r,onUpdate:i}){let[a,o]=(0,w.useState)(e.application_id||``),[s,c]=(0,w.useState)(!1);async function l(){if(a)try{await H(`/api/emails/${e.id}/confirm-match`,{application_id:a}),r(`E-Mail zugeordnet.`,`success`),i()}catch(e){r(`Zuordnung fehlgeschlagen: ${e.message}`,`danger`)}}async function u(){try{let t=await H(`/api/emails/${e.id}/create-application`,{});r(`Bewerbung "${t.title}" @ ${t.company} angelegt.`,`success`),i()}catch(e){r(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}async function d(t){c(!0);try{await H(`/api/emails/${e.id}/apply-status`,{status:t}),r(`Status '${t}' angewendet.`,`success`),i()}catch(e){r(`Status konnte nicht angewendet werden: ${e.message}`,`danger`)}finally{c(!1)}}async function f(){try{await V(`/api/emails/${e.id}`,{method:`DELETE`}),r(`E-Mail gelöscht.`,`success`),i()}catch(e){r(`Löschen fehlgeschlagen: ${e.message}`,`danger`)}}let p=e.direction===`ausgang`?e.recipients:e.sender,m=Pn(p,e.subject),h=Nn({to:e.sender}),g=Nn({to:e.recipients});return(0,U.jsx)(nr,{open:!0,title:e.subject||`E-Mail`,onClose:n,footer:(0,U.jsxs)(`div`,{className:`flex justify-between`,children:[(0,U.jsx)(G,{variant:`ghost`,className:`text-coral`,onClick:f,children:`Löschen`}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[m&&(0,U.jsxs)(`a`,{href:m,className:`inline-flex items-center gap-1 rounded-lg bg-sky/15 px-3 py-1.5 text-sm font-semibold text-sky hover:bg-sky/25 transition-colors`,title:`Im Mail-Client antworten an ${Mn(p)}`,children:[(0,U.jsx)(Le,{size:14}),` Antworten`]}),(0,U.jsx)(G,{onClick:n,children:`Schließen`})]})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,U.jsxs)(`div`,{className:`grid gap-1.5 text-sm`,children:[(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Von:`}),h?(0,U.jsx)(`a`,{href:h,className:`text-sky hover:underline`,children:e.sender}):(0,U.jsx)(`span`,{className:`text-ink`,children:e.sender})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`An:`}),g?(0,U.jsx)(`a`,{href:g,className:`text-sky hover:underline`,children:e.recipients}):(0,U.jsx)(`span`,{className:`text-ink`,children:e.recipients})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Datum:`}),(0,U.jsx)(`span`,{className:`text-ink`,children:Sn(e.sent_date)})]}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(`span`,{className:`w-16 shrink-0 text-muted/50`,children:`Richtung:`}),(0,U.jsx)(q,{tone:e.direction===`ausgang`?`sky`:`amber`,children:e.direction===`ausgang`?`Ausgehend`:`Eingehend`})]})]})}),e.body_text&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Inhalt`}),(0,U.jsx)(`div`,{className:`mt-2 max-h-60 overflow-y-auto rounded-lg bg-white/[0.02] p-3 text-sm text-muted/70 whitespace-pre-wrap`,children:e.body_text})]}),e.detected_status&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Erkannter Status`}),(0,U.jsxs)(`div`,{className:`mt-2 flex items-center gap-3`,children:[(0,U.jsx)(q,{tone:`sky`,children:e.detected_status}),(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Konfidenz: `,Math.round((e.detected_status_confidence||0)*100),`%`]}),e.application_id&&(0,U.jsx)(G,{size:`sm`,onClick:()=>d(e.detected_status),disabled:s,children:`Status übernehmen`})]})]}),(e.attachments_meta||[]).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[`Anhänge (`,e.attachments_meta.length,`)`]}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-1`,children:e.attachments_meta.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm text-ink`,children:[(0,U.jsx)(`span`,{className:`text-muted/50`,children:`📎`}),(0,U.jsx)(`span`,{children:e.filename}),e.imported&&(0,U.jsx)(q,{tone:`success`,children:`Importiert`}),e.duplicate_of&&(0,U.jsx)(q,{tone:`neutral`,children:`Duplikat`})]},t))})]}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Bewerbung zuordnen`}),(0,U.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,U.jsxs)(Qn,{className:`flex-1`,value:a,onChange:e=>o(e.target.value),children:[(0,U.jsx)(`option`,{value:``,children:`— Nicht zugeordnet —`}),(t||[]).map(e=>(0,U.jsxs)(`option`,{value:e.id,children:[e.title,` @ `,e.company]},e.id))]}),(0,U.jsx)(G,{size:`sm`,onClick:l,disabled:!a,children:`Zuordnen`})]}),e.match_confidence>0&&e.match_confidence<1&&(0,U.jsxs)(`p`,{className:`mt-1 text-xs text-muted/50`,children:[`Auto-Match Konfidenz: `,Math.round(e.match_confidence*100),`%`]}),!e.application_id&&(0,U.jsxs)(`div`,{className:`mt-3 border-t border-white/[0.04] pt-3`,children:[(0,U.jsx)(`p`,{className:`text-xs text-muted/50 mb-2`,children:`Keine passende Bewerbung? Lege eine neue aus dieser E-Mail an — Subject als Titel, Absender-Domain als Firma.`}),(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:u,children:`Neue Bewerbung daraus erstellen`})]})]})]})})}function Ci({pushToast:e,refreshChrome:t}){let n=(0,w.useRef)(null),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1);async function s(n){if(!n?.length)return;i(!0);let r=0;try{let i=new Set;for(let e of n){let t=Qt(e);i.has(t)||(i.add(t),await tn(e),r++)}r>0&&(e(`${r} Dokument${r>1?`e`:``} hochgeladen`,`success`),await t({forceReload:!0}))}catch(t){e(`Upload-Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return(0,U.jsxs)(K,{className:`mb-5 rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(dt,{size:14,className:`text-teal/60`}),(0,U.jsx)(`h2`,{className:`text-sm font-semibold text-ink`,children:`Dokumente importieren`})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(wi,{pushToast:e}),(0,U.jsx)(`input`,{ref:n,type:`file`,multiple:!0,accept:`.pdf,.docx,.doc,.txt,.csv,.json,.xml,.rtf`,className:`hidden`,onChange:async e=>{await s(Array.from(e.target.files||[])),n.current&&(n.current.value=``)}}),(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>n.current?.click(),disabled:r,children:r?`Importiere...`:`Dateien auswaehlen`})]})]}),(0,U.jsx)(`div`,{className:`mt-3 rounded-xl border-2 border-dashed px-4 py-4 text-center text-xs transition ${a?`border-sky/60 bg-sky/10 text-sky`:`border-white/10 text-muted/40`}`,onDragOver:e=>{e.preventDefault(),o(!0)},onDragEnter:e=>{e.preventDefault(),o(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&o(!1)},onDrop:async e=>{e.preventDefault(),o(!1),await s(await fn(e.dataTransfer))},children:a?`Loslassen zum Hochladen`:`Dokumente oder E-Mails per Drag & Drop hier ablegen`})]})}function wi({pushToast:e}){let t=(0,w.useRef)(null),[n,r]=(0,w.useState)(!1);return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`input`,{ref:t,type:`file`,accept:`.msg,.eml`,className:`hidden`,onChange:async n=>{let i=n.target.files?.[0];if(i){r(!0);try{let t=new FormData;t.append(`file`,i);let n=await fetch(`/api/emails/upload`,{method:`POST`,body:t}),r=await n.json();if(!n.ok){e(r.error||`E-Mail-Upload fehlgeschlagen`,`danger`);return}e(`E-Mail importiert${r.match?.application?` → ${r.match.application.company} (${Math.round(r.match.confidence*100)}%)`:` (nicht zugeordnet)`}${r.detected_status?.status?` | Status: ${r.detected_status.status}`:``}${r.meetings?.length?` | ${r.meetings.length} Termin(e)`:``}${r.imported_documents?` | ${r.imported_documents} Dokument(e)`:``}`,`success`)}catch(t){e(`Upload fehlgeschlagen: ${t.message}`,`danger`)}finally{r(!1),t.current&&(t.current.value=``)}}}}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>t.current?.click(),disabled:n,children:[(0,U.jsx)(Pe,{size:14,className:`mr-1`}),n?`Importiere...`:`E-Mail importieren`]})]})}var Ti={job_hash:``,title:``,company:``,url:``,status:`beworben`,notes:``},Ei={open:!1,job:null,type:`firma`,value:``},Di={open:!1,job:null,selectedReasons:[],customReason:``},Oi=1800;function ki(e,t){return e?t===`firma`?String(e.company||``).trim():t===`ort`?String(e.location||``).trim():String(e.title||``).trim():``}function Ai(e){return`job-card-${encodeURIComponent(String(e||``))}`}function ji(e){if(e==null)return null;let t=Number(e);return!Number.isFinite(t)||t<=0?null:t}function Mi(e=[]){let t=[],n=[];for(let r of e){let e=ji(r?.salary_min),i=ji(r?.salary_max);if(e===null&&i===null)continue;e===null&&(e=i),i===null&&(i=e);let a={min:e,max:i,salaryType:String(r?.salary_type||``).toLowerCase()};r?.salary_estimated?n.push(a):t.push(a)}let r=[...t,...n],i=t.length===0&&n.length>0,a=r.filter(e=>e.salaryType===`jaehrlich`&&e.min>=2e4);if(!a.length)return{jobsWithSalary:r.length,annualBasisCount:0,averageMin:null,averageMax:null,bandMin:null,bandMax:null,allEstimated:i};let o=a.map(e=>e.min),s=a.map(e=>e.max);return{jobsWithSalary:r.length,annualBasisCount:a.length,averageMin:Math.round(o.reduce((e,t)=>e+t,0)/o.length),averageMax:Math.round(s.reduce((e,t)=>e+t,0)/s.length),bandMin:Math.min(...o),bandMax:Math.max(...s),allEstimated:i}}function Ni(e){return Number(e?.score||0)>0&&String(e?.description||``).trim().length<50}function Pi(){let{chrome:e,intent:t,clearIntent:n,reloadKey:r,refreshChrome:i,pushToast:a,copyPrompt:o,navigateTo:s,startJobsuche:c}=jt(),[l,u]=(0,w.useState)(!0),[d,f]=(0,w.useState)([]),[p,m]=(0,w.useState)([]),[h,g]=(0,w.useState)([]),_=Number(e?.search_criteria?.min_score_schwelle??0),[v,y]=(0,w.useState)({query:``,source:``,minScore:String(Math.max(0,_)),remote:``,salaryOnly:!1,sort:`score_desc`,view:`active`,employmentType:``,hideApplied:!0,missingDescriptionOnly:!1}),[b,x]=(0,w.useState)(new Set),[S,C]=(0,w.useState)({open:!1,title:``,analysis:null}),[T,E]=(0,w.useState)({open:!1,job:null,editing:!1}),[D,O]=(0,w.useState)(!1),[k,A]=(0,w.useState)({}),[M,N]=(0,w.useState)({open:!1,draft:Ti}),[P,ee]=(0,w.useState)(Ei),[F,I]=(0,w.useState)({running:!1,progress:0,message:``}),[te,ne]=(0,w.useState)(``),[re,L]=(0,w.useState)(``),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(``),[se,ce]=(0,w.useState)(Di),[le,ue]=(0,w.useState)([]),[de,pe]=(0,w.useState)(0),[me,he]=(0,w.useState)(!1),[ge,ve]=(0,w.useState)(()=>{let e=localStorage.getItem(`pbp_jobs_page_size`);return e?Number(e):20}),[xe,Se]=(0,w.useState)(!1),Ce=(0,w.useRef)(!1),B=(0,w.useRef)(!1),we=(0,w.useDeferredValue)(v.query),Te=(0,w.useCallback)(e=>{E({open:!0,job:e,editing:!1})},[]),Ee=(0,w.useEffectEvent)(async(e={})=>{let t=!!e?.silent,n=!!e?.append,r=e?.pageSize||ge,i=n?d.length:0;try{let e=r>0?`/api/jobs?active=true&exclude_blacklisted=true&limit=${r}&offset=${i}`:`/api/jobs?active=true&exclude_blacklisted=true`,[t,a,o,s,c]=await Promise.all([V(e),n?Promise.resolve(null):V(`/api/jobs?active=false`),n?Promise.resolve(null):V(`/api/follow-ups`),n?Promise.resolve(null):V(`/api/applications`),n?Promise.resolve(null):Dt(`/api/dismiss-reasons`)]);(0,w.startTransition)(()=>{let e=t&&!Array.isArray(t)&&t.jobs,r=e?t.jobs:t||[];f(n?e=>[...e,...r]:r),e?(pe(t.total||0),he(!!t.has_more)):(pe(r.length),he(!1)),n||(a&&m(a||[]),o&&g(o?.follow_ups||[]),s&&x(new Set((s?.applications||[]).filter(e=>e.job_hash&&![`abgelehnt`,`zurueckgezogen`,`abgelaufen`].includes(e.status)).map(e=>e.job_hash))),c&&ue(c)),u(!1),Se(!1)})}catch(e){t||a(`Stellen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>{u(!1),Se(!1)})}}),De=(0,w.useEffectEvent)(async()=>{try{let e=await Dt(`/api/jobsuche/running`);if(!e){B.current=!1,Ce.current&&(Ce.current=!1,await Ee({silent:!0}),await i({quiet:!0})),(0,w.startTransition)(()=>I({running:!1,progress:0,message:``}));return}let t=!!e?.running,n=Math.max(0,Math.min(100,Number(e?.progress||0))),r=String(e?.message||``);if(B.current=!1,(0,w.startTransition)(()=>I({running:t,progress:n,message:r})),t){Ce.current=!0;return}Ce.current&&(Ce.current=!1,await Ee({silent:!0}),await i({quiet:!0}))}catch(e){B.current||(B.current=!0,a(`Live-Aktualisierung fehlgeschlagen: ${e.message}`,`danger`))}});(0,w.useEffect)(()=>{u(!0),Ee()},[r]),(0,w.useEffect)(()=>{let e=!1,t=null,n=async()=>{if(e||(await De(),e))return;let r=Ce.current?5e3:3e4;t=window.setTimeout(n,r)};return n(),()=>{e=!0,Ce.current=!1,t&&window.clearTimeout(t)}},[r,De]),(0,w.useEffect)(()=>{t?.page===`stellen`&&(t.focus===`job`&&t.jobHash&&(y(e=>({...e,view:`active`,query:``,source:``,minScore:`0`,remote:``,salaryOnly:!1,missingDescriptionOnly:!1})),ne(String(t.jobHash))),t.missingDescriptionOnly&&y(e=>({...e,view:`active`,missingDescriptionOnly:!0})),n())},[t]),(0,w.useEffect)(()=>{if(l||!te)return;let e=document.getElementById(Ai(te));if(!e)return;e.scrollIntoView({behavior:`smooth`,block:`center`}),L(te),ne(``);let t=window.setTimeout(()=>{L(e=>e===te?``:e)},Oi);return()=>window.clearTimeout(t)},[l,te,d,p,v.view,v.query,v.source,v.minScore,v.remote,v.salaryOnly,v.missingDescriptionOnly,v.sort]);async function Oe(e){try{let t=await V(`/api/jobs/${e.hash}/fit-analyse`);C({open:!0,title:e.title,hash:e.hash,analysis:t})}catch(e){a(`Fit-Analyse fehlgeschlagen: ${e.message}`,`danger`)}}async function ke(e,t,n){try{await H(e,t);let r=t.hash;e.includes(`/dismiss`)?(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(r)));let e=d.find(e=>String(e.hash)===String(r));e&&m(t=>[{...e,status:`aussortiert`},...t])}):e.includes(`/restore`)&&(0,w.startTransition)(()=>{m(e=>e.filter(e=>String(e.hash)!==String(r)));let e=p.find(e=>String(e.hash)===String(r));e&&f(t=>[{...e,status:`aktiv`},...t])}),i({quiet:!0}),a(n,`success`)}catch(e){a(`${n} fehlgeschlagen: ${e.message}`,`danger`)}}async function Ae(){try{await H(`/api/applications`,M.draft),N({open:!1,draft:Ti}),await i(),a(`Bewerbung angelegt.`,`success`),s(`bewerbungen`)}catch(e){a(`Bewerbung konnte nicht angelegt werden: ${e.message}`,`danger`)}}function je(e){ce({open:!0,job:e,selectedReasons:[],customReason:``})}async function Me(){let e=[...se.selectedReasons];if(se.customReason.trim()&&e.push(se.customReason.trim()),!e.length){a(`Bitte mindestens einen Ablehnungsgrund auswählen.`,`danger`);return}let t=se.job?.hash;if(t)try{await H(`/api/jobs/dismiss`,{hash:t,reasons:e}),(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(t)));let e=d.find(e=>String(e.hash)===String(t));e&&m(t=>[{...e,status:`aussortiert`},...t])}),i({quiet:!0});try{let e=await Dt(`/api/dismiss-reasons`);e&&ue(e)}catch{}a(`Stelle aussortiert.`,`success`),ce(Di)}catch(e){a(`Stelle konnte nicht aussortiert werden: ${e.message}`,`danger`)}}function Ne(e){ce(t=>{let n=t.selectedReasons.includes(e)?t.selectedReasons.filter(t=>t!==e):[...t.selectedReasons,e];return{...t,selectedReasons:n}})}function Pe(e){let t=e?.company?`firma`:e?.location?`ort`:`keyword`;ee({open:!0,job:e,type:t,value:ki(e,t)})}async function Fe(){let e=(P.value||``).trim();if(!e){a(`Bitte einen Wert für die Blacklist eingeben.`,`danger`);return}try{await H(`/api/blacklist`,{type:P.type,value:e});let t=P.job?.hash;t&&(0,w.startTransition)(()=>{f(e=>e.filter(e=>String(e.hash)!==String(t)))}),i({quiet:!0}),a(`Blacklist-Eintrag gespeichert: ${e}`,`success`),ee(Ei)}catch(e){a(`Blacklist-Eintrag fehlgeschlagen: ${e.message}`,`danger`)}}async function Ie(e){try{let t=(await Ot(`/api/jobs/${e.hash}/pin`,{})).is_pinned;(0,w.startTransition)(()=>{f(n=>n.map(n=>String(n.hash)===String(e.hash)?{...n,is_pinned:t?1:0}:n))}),i({quiet:!0}),a(t?`Stelle angepinnt.`:`Pin entfernt.`,`success`)}catch(e){a(`Pin-Aktion fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){let t=Math.max(0,Math.min(100,Math.round(Number(oe)||0)));try{await Ot(`/api/jobs/${e.hash}/score`,{score:t}),ae(``),z(``),(0,w.startTransition)(()=>{f(n=>n.map(n=>String(n.hash)===String(e.hash)?{...n,score:t}:n))}),i({quiet:!0}),a(`Score auf ${t} gesetzt.`,`success`)}catch(e){a(`Score konnte nicht gespeichert werden: ${e.message}`,`danger`)}}if(l)return(0,U.jsx)(tr,{label:`Stellen werden geladen...`});let Re=[...d,...p],ze=[...new Set(Re.map(e=>e.source).filter(Boolean))],Be=[...new Set(Re.map(e=>e.remote_level).filter(e=>e&&e!==`unbekannt`))],Ve=[...new Set(Re.map(e=>e.employment_type).filter(Boolean))],He=v.view===`active`?d:p,Ue=d.filter(e=>Number(e?.score||0)>0),We=d.filter(Ni).length,Ye=He.filter(e=>b.has(e.hash)).length,Qe=Mi(d),$e=Number(Qe.jobsWithSalary||0),et=!!Qe.allEstimated,tt=Number(Qe.annualBasisCount||0),nt=Number(Qe.averageMin),rt=Number(Qe.averageMax),it=Number.isFinite(nt),ot=Number.isFinite(rt),st=it&&ot?Math.round((nt+rt)/2):it?Math.round(nt):ot?Math.round(rt):null,ct=e=>new Intl.NumberFormat(`de-DE`,{maximumFractionDigits:0}).format(Math.round(e)),lt=Number(Qe.bandMin),ut=Number(Qe.bandMax),dt=Number.isFinite(lt),ft=Number.isFinite(ut),pt=dt&&ft?`${ct(lt)} – ${ct(ut)} EUR`:dt?wn(lt):ft?wn(ut):`Keine Angabe`,mt=(He.length?He:Re).reduce((e,t)=>{let n=t.updated_at||t.found_at||``,r=Date.parse(n);return Number.isNaN(r)?e:r>e.timestamp?{raw:n,timestamp:r}:e},{raw:``,timestamp:-1/0}).raw,ht=Ue.length?Math.round(Ue.reduce((e,t)=>e+Number(t.score||0),0)/Ue.length):0,gt=He.filter(e=>{let t=`${e.title||``} ${e.company||``} ${e.description||``}`.toLowerCase(),n=!we||t.includes(we.toLowerCase()),r=!v.source||e.source===v.source,i=Number(e.score||0)>=Number(v.minScore||0),a=!v.remote||e.remote_level===v.remote,o=!v.salaryOnly||e.salary_min&&e.salary_min>0,s=!v.employmentType||e.employment_type===v.employmentType,c=!v.hideApplied||!b.has(e.hash),l=!v.missingDescriptionOnly||Ni(e);return n&&r&&i&&a&&o&&s&&c&&l}).sort((e,t)=>{let n=e.is_pinned?1:0,r=t.is_pinned?1:0;if(n!==r)return r-n;switch(v.sort){case`score_desc`:return(t.score||0)-(e.score||0);case`score_asc`:return(e.score||0)-(t.score||0);case`salary_desc`:return(t.salary_max||t.salary_min||0)-(e.salary_max||e.salary_min||0);case`company`:return(e.company||``).localeCompare(t.company||``);case`title`:return(e.title||``).localeCompare(t.title||``);default:return 0}}),_t=gt.filter(Ni).length,vt=!e.searchStatus?.last_search||Number(e.searchStatus?.days_ago||0)>0,bt=F.running?{badge:`Läuft`,tone:`sky`,title:`Jobsuche wird gerade aktualisiert`,description:F.message||`Neue Treffer kommen laufend rein. Prüfe die Liste erst, wenn die Suche durch ist.`}:v.view===`active`&&We>0?{badge:`Score prüfen`,tone:`amber`,title:`Ein Teil der Scores ist noch nicht belastbar`,description:`${We} aktive Stelle(n) haben keine oder nur eine sehr kurze Beschreibung. Prüfe diese Treffer vor einer Entscheidung direkt gegen die Originalanzeige.`,actionLabel:v.missingDescriptionOnly?`Alle Stellen zeigen`:`Nur diese Stellen zeigen`,action:()=>y(e=>({...e,view:`active`,missingDescriptionOnly:!e.missingDescriptionOnly}))}:v.view===`active`&>.length===0&&He.length>0&&v.hideApplied&&Ye===He.length?{badge:`Filter`,tone:`sky`,title:`Alle sichtbaren Treffer sind nur wegen "Beworbene ausblenden" weg`,description:`Für einen Vollcheck lohnt sich ein kurzer Blick auf bereits bearbeitete Stellen, bevor du unnötig neu suchst.`,actionLabel:`Beworbene einblenden`,action:()=>y(e=>({...e,hideApplied:!1}))}:v.view===`active`&>.length===0&&He.length>0?{badge:`Filter`,tone:`neutral`,title:`Die aktuelle Filterkombination ist strenger als nötig`,description:`Gerade passt kein Treffer mehr durch die Filter. Lockere zuerst die Auswahl, bevor du annimmst, dass nichts Passendes da ist.`,actionLabel:`Filter zurücksetzen`,action:()=>y(e=>({...e,query:``,source:``,minScore:`0`,remote:``,salaryOnly:!1,employmentType:``,hideApplied:!0,missingDescriptionOnly:!1}))}:v.view===`active`&>.length===0&&vt?{badge:`Suche`,tone:`danger`,title:`Erst die Jobsuche erneuern, dann wieder aussortieren`,description:`Die Suche ist veraltet oder noch nie gelaufen. Neue Treffer bringen jetzt mehr als noch feinere Filter.`,actionLabel:`Jobsuche starten`,action:()=>c()}:v.view===`dismissed`&&p.length>0?{badge:`Review`,tone:`neutral`,title:`Ausgeblendete Stellen sind dein späteres Prüfregal`,description:`Hier solltest du nur bewusst wiederherstellen, nicht wahllos zurückholen. Nutze die Gründe als Lernsignal für bessere Filter.`}:{badge:`Auf Kurs`,tone:`success`,title:`Die Stellenliste ist arbeitsfähig`,description:`Prüfe jetzt die besten Treffer, bevor du neue Suchrunden startest. Erst sichten, dann bewerben, dann nachschärfen.`};return(0,U.jsxs)(`div`,{id:`page-stellen`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Stellen`}),(0,U.jsx)(zr,{page:`stellen`}),(0,U.jsx)(`div`,{className:`mb-6 flex items-baseline gap-2`,children:(0,U.jsx)(`span`,{className:`text-[11px] text-muted/40`,children:F.running?`Jobsuche läuft${F.progress>0?` (${Math.round(F.progress)}%)`:``}`:e.searchStatus?.last_search?`Aktualisiert ${e.searchStatus.days_ago===0?`heute`:e.searchStatus.days_ago===1?`gestern`:`vor ${e.searchStatus.days_ago} Tagen`}`:`Noch nie gesucht`})}),F.running&&(0,U.jsxs)(`div`,{className:`mb-4 rounded-lg border border-sky-500/20 bg-sky-500/5 p-4`,children:[(0,U.jsxs)(`div`,{className:`mb-2 flex items-center justify-between text-sm`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-2 font-medium text-sky-300`,children:[(0,U.jsx)(`span`,{className:`h-3 w-3 animate-spin rounded-full border-2 border-sky-500/30 border-t-sky-400`}),(F.message||`Jobsuche läuft...`).split(` | `)[0]]}),(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[Math.round(F.progress),`%`]})]}),(0,U.jsx)(`div`,{className:`h-2 overflow-hidden rounded-full bg-white/5`,children:(0,U.jsx)(`div`,{className:`h-full rounded-full bg-sky-500 transition-all duration-500 ease-out`,style:{width:`${Math.max(2,F.progress)}%`}})}),F.message?.includes(` | `)&&(0,U.jsx)(`p`,{className:`mt-2 text-xs text-muted/40`,children:F.message.split(` | `).slice(1).join(` — `)})]}),(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:[(0,U.jsx)(Jn,{label:`Aktive Stellen`,value:gt.length,note:(()=>{let e=b.size,t=p.length,n=Math.max(0,de-gt.length-e-t);if(de>gt.length){let r=[];return e>0&&r.push(`${e} mit Bewerbung`),t>0&&r.push(`${t} aussortiert`),n>0&&r.push(`${n} ausgefiltert`),r.length>0?`${de} gesamt (${r.join(`, `)})`:`${de} gesamt`}return $e>0?`${$e} mit Gehalt${et?` (geschätzt)`:``}`:`Keine Gehaltsdaten`})(),tone:`success`}),(0,U.jsx)(Jn,{label:`Gehaltsdurchschnitt${et?` (geschätzt)`:``}`,value:st===null?`Keine Angabe`:wn(st),note:tt>0?`Auf Basis von ${tt} Stellen mit Jahresgehalt`:`Noch keine Gehaltsdaten`,tone:`success`}),(0,U.jsx)(Jn,{label:`Gehaltsbandbreite${et?` (geschätzt)`:``}`,value:pt,note:tt>0?`Niedrigster bis höchster Wert über ${tt} Stellen`:`Echte Min/Max-Spanne ueber alle Stellen`,tone:`success`}),(0,U.jsx)(Jn,{label:`Durchschnittsscore`,value:ht,note:Ue.length>0?`${Ue.length} bewertete Treffer`:`Noch keine bewerteten Treffer`,tone:`sky`})]}),(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start justify-between gap-4`,children:[(0,U.jsxs)(`div`,{className:`min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(q,{tone:bt.tone,children:bt.badge}),_t>0?(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[_t,` Treffer im aktuellen Blick brauchen erst mehr Beschreibung.`]}):null]}),(0,U.jsx)(`h2`,{className:`mt-3 text-base font-semibold text-ink`,children:bt.title}),(0,U.jsx)(`p`,{className:`mt-1 max-w-3xl text-sm text-muted`,children:bt.description})]}),bt.actionLabel?(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:bt.action,children:bt.actionLabel}):null]})}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsxs)(`div`,{className:`relative min-w-0 flex-1`,children:[(0,U.jsx)(Ze,{className:`pointer-events-none absolute left-4 top-1/2 -translate-y-1/2 text-muted/50`,size:16}),(0,U.jsx)(Y,{className:`w-full !rounded-xl !pl-11 !pr-10`,value:v.query,onChange:e=>y(t=>({...t,query:e.target.value})),placeholder:`Titel, Firma oder Schlagwort suchen...`}),v.query&&(0,U.jsx)(`button`,{type:`button`,className:`absolute right-3 top-1/2 -translate-y-1/2 text-muted/50 hover:text-ink`,onClick:()=>y(e=>({...e,query:``})),children:(0,U.jsx)(yt,{size:16})})]}),(0,U.jsxs)(`span`,{className:`shrink-0 text-[12px] tabular-nums text-muted/50`,children:[gt.length,de>d.length?` / ${de}`:` / ${He.length}`]}),(0,U.jsxs)(Qn,{className:`!min-h-0 !w-auto !rounded-lg !px-2 !py-1 text-[11px] !border-white/5 !bg-white/[0.03]`,value:ge,onChange:async e=>{let t=Number(e.target.value);ve(t),localStorage.setItem(`pbp_jobs_page_size`,String(t)),u(!0),await Ee({pageSize:t})},children:[(0,U.jsx)(`option`,{value:`20`,children:`20 pro Seite`}),(0,U.jsx)(`option`,{value:`50`,children:`50 pro Seite`}),(0,U.jsx)(`option`,{value:`100`,children:`100 pro Seite`}),(0,U.jsx)(`option`,{value:`0`,children:`Alle`})]})]}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap items-center gap-2.5`,children:[(0,U.jsx)(`div`,{className:`grid grid-cols-2 overflow-hidden rounded-xl border border-white/5 bg-white/[0.03]`,children:[[`active`,`Aktive`],[`dismissed`,`Ausgeblendet`]].map(([e,t])=>(0,U.jsx)(`button`,{type:`button`,className:W(`px-4 py-2 text-center text-[13px] font-medium outline-none transition-colors`,v.view===e?`bg-white/[0.08] text-ink`:`text-muted/40 hover:bg-white/[0.03] hover:text-muted/60`),onClick:()=>y(t=>({...t,view:e})),children:t},e))}),(0,U.jsx)(`span`,{className:`mx-0.5 h-5 w-px bg-white/5`}),(0,U.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,U.jsxs)(Qn,{className:W(`!h-9 !min-h-0 !w-auto !rounded-xl !pl-3 !pr-3 !py-0 !text-[13px]`,v.source?`!border-teal/20 !bg-teal/8 !text-teal/80`:`!border-white/5 !bg-white/[0.03] !text-muted/60`),value:v.source,onChange:e=>y(t=>({...t,source:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Alle Quellen`}),ze.map(e=>(0,U.jsx)(`option`,{value:e,children:e},e))]}),v.source&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,source:``})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,U.jsx)(yt,{size:14})})]}),(0,U.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,U.jsxs)(Qn,{className:W(`!h-9 !min-h-0 !w-auto !rounded-xl !pl-3 !pr-3 !py-0 !text-[13px]`,v.remote?`!border-teal/20 !bg-teal/8 !text-teal/80`:`!border-white/5 !bg-white/[0.03] !text-muted/60`),value:v.remote,onChange:e=>y(t=>({...t,remote:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Remote: Alle`}),Be.map(e=>(0,U.jsx)(`option`,{value:e,children:e},e))]}),v.remote&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,remote:``})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,U.jsx)(yt,{size:14})})]}),(0,U.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,U.jsxs)(`div`,{className:W(`flex items-center gap-1.5 rounded-xl border px-3 py-1.5 transition-colors`,Number(v.minScore||0)>0?`border-teal/20 bg-teal/8`:`border-white/5 bg-white/[0.03]`),children:[(0,U.jsx)(`span`,{className:W(`text-[13px]`,Number(v.minScore||0)>0?`text-teal/80`:`text-muted/40`),children:`Score ≥`}),(0,U.jsx)(`input`,{type:`number`,className:W(`w-10 rounded-md border bg-white/[0.04] text-center text-[13px] font-medium outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,Number(v.minScore||0)>0?`border-teal/30 text-teal/80 focus:border-teal/50`:`border-white/10 text-muted/70 focus:border-teal/40`),value:v.minScore,onChange:e=>y(t=>({...t,minScore:e.target.value}))})]}),Number(v.minScore||0)>0&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,minScore:`0`})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,U.jsx)(yt,{size:14})})]}),(0,U.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,U.jsx)(`button`,{type:`button`,className:W(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.salaryOnly?`border-teal/20 bg-teal/8 text-teal/80`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,salaryOnly:!e.salaryOnly})),children:`Nur mit Gehalt`}),v.salaryOnly&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,salaryOnly:!1})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,U.jsx)(yt,{size:14})})]}),Ve.length>1&&(0,U.jsxs)(Qn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:v.employmentType,onChange:e=>y(t=>({...t,employmentType:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Alle Stellenarten`}),Ve.map(e=>(0,U.jsx)(`option`,{value:e,children:e===`festanstellung`?`Festanstellung`:e===`freelance`?`Freelance`:e===`praktikum`?`Praktikum`:e===`werkstudent`?`Werkstudent`:e},e))]}),(0,U.jsxs)(`button`,{type:`button`,className:W(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.hideApplied?`border-sky/20 bg-sky/8 text-sky/80`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,hideApplied:!e.hideApplied})),children:[(0,U.jsx)(be,{size:14}),`Beworbene ausblenden`]}),(0,U.jsxs)(`div`,{className:`group inline-flex items-center gap-1.5`,children:[(0,U.jsx)(`button`,{type:`button`,className:W(`flex items-center gap-1.5 rounded-xl border px-3 py-2 text-[13px] font-medium transition-colors`,v.missingDescriptionOnly?`border-amber/20 bg-amber/8 text-amber`:`border-white/5 bg-white/[0.03] text-muted/40 hover:bg-white/[0.05] hover:text-muted/60`),onClick:()=>y(e=>({...e,missingDescriptionOnly:!e.missingDescriptionOnly})),children:`Nur ohne Beschreibung`}),v.missingDescriptionOnly&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>y(e=>({...e,missingDescriptionOnly:!1})),className:`text-muted/40 hover:text-ink transition-colors`,children:(0,U.jsx)(yt,{size:14})})]}),(0,U.jsx)(`div`,{className:`flex-1`}),(0,U.jsxs)(Qn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:v.sort,onChange:e=>y(t=>({...t,sort:e.target.value})),children:[(0,U.jsx)(`option`,{value:`score_desc`,children:`Score abst.`}),(0,U.jsx)(`option`,{value:`score_asc`,children:`Score aufst.`}),(0,U.jsx)(`option`,{value:`salary_desc`,children:`Gehalt abst.`}),(0,U.jsx)(`option`,{value:`company`,children:`Firma A–Z`}),(0,U.jsx)(`option`,{value:`title`,children:`Titel A–Z`})]})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(`div`,{className:`flex justify-end`,children:(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/45`,children:[`Zuletzt aktualisiert: `,mt?Cn(mt):`Keine Angabe`]})}),gt.length?gt.map(e=>(0,U.jsxs)(K,{id:Ai(e.hash),className:W(`flex flex-col rounded-xl transition-[border-color,box-shadow,background-color] duration-300`,re===String(e.hash)&&`job-card-highlight`,e.is_pinned&&`border-amber/20 bg-amber/[0.02]`,!e.is_pinned&&e.employment_type===`freelance`&&`border-violet-400/25 bg-violet-400/[0.02]`),children:[(0,U.jsxs)(`div`,{className:`flex-1 space-y-3`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`font-mono text-[10px] text-muted/30 hover:text-sky transition-colors`,title:`ID kopieren`,onClick:async()=>{try{await navigator.clipboard.writeText(e.hash),a(`ID kopiert.`,`success`,{duration:2e3})}catch{}},children:[`#`,String(e.hash).slice(0,12)]}),e.is_pinned?(0,U.jsxs)(q,{tone:`amber`,children:[(0,U.jsx)(qe,{size:12,className:`inline -mt-0.5`}),` Angepinnt`]}):null,(0,U.jsx)(q,{tone:`sky`,children:e.source||`Quelle`}),R===String(e.hash)?(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border border-amber/30 bg-amber/10 px-2.5 py-0.5`,children:[(0,U.jsx)(`input`,{type:`number`,min:0,max:100,className:`w-12 rounded border border-white/10 bg-white/[0.06] px-1.5 py-0.5 text-center text-[12px] font-medium text-ink outline-none [appearance:textfield] [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none`,value:oe,onChange:e=>z(e.target.value),onKeyDown:t=>{t.key===`Enter`&&Le(e),t.key===`Escape`&&ae(``)},autoFocus:!0}),(0,U.jsx)(`button`,{type:`button`,className:`text-teal hover:text-teal/80`,onClick:()=>Le(e),children:(0,U.jsx)(ie,{size:14})}),(0,U.jsx)(`button`,{type:`button`,className:`text-muted hover:text-ink`,onClick:()=>ae(``),children:(0,U.jsx)(yt,{size:14})})]}):(0,U.jsxs)(`button`,{type:`button`,className:`inline-flex items-center gap-1 rounded-full border border-transparent bg-amber/10 px-2.5 py-0.5 text-[12px] font-semibold text-amber transition-colors hover:border-amber/30 hover:bg-amber/20`,onClick:()=>{ae(String(e.hash)),z(String(e.score||0))},title:`Score bearbeiten`,children:[`Score `,e.score||0,(0,U.jsx)(Ge,{size:11})]}),e.remote_level&&e.remote_level!==`unbekannt`?(0,U.jsx)(q,{tone:`success`,children:e.remote_level}):null,e.employment_type?(0,U.jsx)(q,{tone:e.employment_type===`freelance`?`success`:e.employment_type===`festanstellung`?`sky`:e.employment_type===`praktikum`?`amber`:`neutral`,children:e.employment_type===`freelance`?`Freelance`:e.employment_type===`festanstellung`?`Festanstellung`:e.employment_type===`praktikum`?`Praktikum`:e.employment_type===`werkstudent`?`Werkstudent`:e.employment_type}):null,b.has(e.hash)?(0,U.jsx)(`button`,{className:`cursor-pointer`,onClick:e=>{e.stopPropagation(),window.location.hash=`bewerbungen`},title:`Zur Bewerbung wechseln`,children:(0,U.jsx)(q,{tone:`success`,children:`Bereits beworben`})}):null,Ni(e)?(0,U.jsx)(q,{tone:`amber`,children:`Score unsicher`}):null]}),(0,U.jsxs)(`div`,{role:`button`,tabIndex:0,className:`cursor-pointer group rounded-lg outline-none focus-visible:ring-2 focus-visible:ring-sky/50 focus-visible:ring-offset-2 focus-visible:ring-offset-night`,onClick:()=>Te(e),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),Te(e))},title:`Details anzeigen`,children:[(0,U.jsx)(`h2`,{className:`text-2xl font-semibold text-ink group-hover:text-sky transition-colors`,children:e.title}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[e.company||`Unbekannte Firma`,e.location?` - ${e.location}`:``]}),(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:In(e.description,220)}),Ni(e)?(0,U.jsx)(`p`,{className:`text-xs text-amber`,children:`Beschreibung fehlt oder ist sehr kurz. Prüfe die Originalanzeige, bevor du den Score zu ernst nimmst.`}):null,e.salary_min?(0,U.jsxs)(`p`,{className:`text-sm text-ink`,children:[`Gehalt: `,wn(e.salary_min),e.salary_max?` bis ${wn(e.salary_max)}`:``,e.salary_estimated?` (geschätzt)`:``]}):null]})]}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-3 border-t border-white/[0.06] pt-4`,children:[(0,U.jsxs)(G,{variant:e.is_pinned?`subtle`:`secondary`,onClick:()=>Ie(e),children:[e.is_pinned?(0,U.jsx)(Ke,{size:15}):(0,U.jsx)(qe,{size:15}),e.is_pinned?`Entpinnen`:`Anpinnen`]}),(0,U.jsxs)(G,{variant:`secondary`,onClick:()=>Oe(e),children:[(0,U.jsx)(at,{size:15}),`Fit-Analyse`]}),(0,U.jsxs)(G,{onClick:()=>N({open:!0,draft:{job_hash:e.hash,title:e.title||``,company:e.company||``,url:e.url||``,status:`beworben`,notes:``}}),children:[(0,U.jsx)(Je,{size:15}),`Bewerbung erfassen`]}),(0,U.jsxs)(G,{variant:`ghost`,onClick:()=>Pe(e),children:[(0,U.jsx)(j,{size:15}),`Zur Blacklist`]}),v.view===`active`?(0,U.jsxs)(G,{variant:`danger`,onClick:()=>je(e),children:[(0,U.jsx)(be,{size:15}),`Passt nicht`]}):(0,U.jsxs)(G,{variant:`ghost`,onClick:()=>ke(`/api/jobs/restore`,{hash:e.hash},`Stelle wiederhergestellt`),children:[(0,U.jsx)(Xe,{size:15}),`Wiederherstellen`]}),e.url?(0,U.jsxs)(Gn,{href:e.url,target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(ye,{size:15}),`Anzeige`]}):null]})]},e.hash)):null,gt.length>0&&me&&v.view===`active`&&(0,U.jsxs)(`div`,{className:`flex items-center justify-center gap-4 py-4`,children:[(0,U.jsx)(G,{variant:`secondary`,disabled:xe,onClick:async()=>{Se(!0),await Ee({append:!0,silent:!0})},children:xe?`Laden...`:`Mehr laden (${d.length} von ${de})`}),(0,U.jsx)(G,{variant:`ghost`,onClick:async()=>{ve(0),localStorage.setItem(`pbp_jobs_page_size`,`0`),u(!0),await Ee({pageSize:0})},children:`Alle laden`})]}),gt.length===0&&(0,U.jsx)(er,{title:v.view===`active`?`Keine aktiven Stellen`:`Keine ausgeblendeten Stellen`,description:v.view===`active`?`Starte eine Jobsuche oder öffne das Suchprofil, um neue Stellen zu finden.`:`Ausgeblendete Jobs können hier später wieder aktiviert werden.`,action:v.view===`active`?(0,U.jsxs)(`div`,{className:`flex gap-3`,children:[(0,U.jsx)(G,{onClick:()=>s(`einstellungen`),children:`Suchprofil öffnen`}),(0,U.jsxs)(G,{variant:`secondary`,onClick:()=>c(),children:[(0,U.jsx)(Ze,{size:15}),`Jobsuche starten`]})]}):null})]})]}),(0,U.jsx)(nr,{open:S.open,title:`Fit-Analyse \u2014 ${S.title}`,onClose:()=>C({open:!1,title:``,hash:``,analysis:null}),footer:(0,U.jsx)(`div`,{className:`flex justify-end`,children:(0,U.jsx)(G,{onClick:()=>C({open:!1,title:``,hash:``,analysis:null}),children:`Schliessen`})}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:`Gesamtscore`}),(0,U.jsx)(`p`,{className:`mt-3 text-4xl font-semibold text-ink`,children:S.analysis?.total_score??0}),S.analysis?.hochschulabschluss_gefordert&&(0,U.jsx)(`p`,{className:`mt-1 text-xs text-coral font-medium`,children:`Hochschulabschluss gefordert`})]}),S.analysis?.factors&&Object.keys(S.analysis.factors).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink mb-2`,children:`Score-Faktoren`}),(0,U.jsx)(`div`,{className:`grid gap-1`,children:Object.entries(S.analysis.factors).map(([e,t])=>(0,U.jsxs)(`div`,{className:`flex justify-between text-sm`,children:[(0,U.jsx)(`span`,{className:`text-muted/70`,children:e}),(0,U.jsxs)(`span`,{className:`font-medium ${t>=0?`text-teal`:`text-coral`}`,children:[t>=0?`+`:``,t]})]},e))})]}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`MUSS-Treffer`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:(S.analysis?.muss_hits||[]).join(`, `)||`Keine`})]}),(S.analysis?.missing_muss||[]).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Fehlende MUSS-Kriterien`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-coral/80`,children:S.analysis.missing_muss.join(`, `)})]}),(S.analysis?.plus_hits||[]).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`PLUS-Treffer`}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-teal/80`,children:S.analysis.plus_hits.join(`, `)})]}),(S.analysis?.risks||[]).length>0&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Risiken`}),(0,U.jsx)(`div`,{className:`mt-2 grid gap-2 text-sm text-coral/70`,children:S.analysis.risks.map(e=>(0,U.jsx)(`p`,{children:e},e))})]}),S.analysis?.research_notes&&(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none border border-sky/15`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-sky`,children:`Claude-Analyse`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{navigator.clipboard.writeText(S.analysis.research_notes).then(()=>a(`Analyse in Zwischenablage kopiert`,`success`),()=>a(`Kopieren fehlgeschlagen`,`danger`))},className:`text-muted/40 hover:text-sky transition-colors`,title:`In Zwischenablage kopieren`,children:(0,U.jsx)(fe,{size:14})})]}),(0,U.jsx)(`p`,{className:`text-sm text-muted/70 whitespace-pre-line`,children:S.analysis.research_notes})]}),(0,U.jsxs)(G,{variant:`secondary`,className:`w-full`,onClick:()=>{let e=S.hash||``;o(`Bewerte die Stelle "${S.title}" (Hash: ${e}) detailliert fuer mich. Rufe die Stellenbeschreibung ab, vergleiche sie mit meinem Profil und gib mir eine ehrliche Einschaetzung: Staerken, Schwaechen, Risiken, und ob sich eine Bewerbung lohnt.`)},children:[(0,U.jsx)(Ze,{size:15}),`Detailbewertung durch Claude anfordern`]})]})}),(0,U.jsx)(nr,{open:M.open,title:`Bewerbung aus Stelle anlegen`,onClose:()=>N({open:!1,draft:Ti}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>N({open:!1,draft:Ti}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:Ae,children:`Bewerbung speichern`})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[[`title`,`company`,`url`].map(e=>(0,U.jsx)(J,{label:e,children:(0,U.jsx)(Y,{value:M.draft[e]||``,onChange:t=>N(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e)),(0,U.jsx)(J,{label:`Status`,children:(0,U.jsxs)(Qn,{value:M.draft.status,onChange:e=>N(t=>({...t,draft:{...t.draft,status:e.target.value}})),children:[(0,U.jsx)(`option`,{value:`beworben`,children:`Beworben`}),(0,U.jsx)(`option`,{value:`entwurf`,children:`Entwurf`})]})}),(0,U.jsx)(J,{label:`Notizen`,children:(0,U.jsx)(Xn,{rows:4,value:M.draft.notes,onChange:e=>N(t=>({...t,draft:{...t.draft,notes:e.target.value}}))})})]})}),(0,U.jsx)(nr,{open:P.open,title:`Zur Blacklist hinzufügen`,onClose:()=>ee(Ei),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ee(Ei),children:`Abbrechen`}),(0,U.jsxs)(G,{onClick:Fe,children:[(0,U.jsx)(j,{size:15}),`Blockieren`]})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(J,{label:`Typ`,children:(0,U.jsxs)(Qn,{value:P.type,onChange:e=>ee(t=>({...t,type:e.target.value,value:ki(t.job,e.target.value)})),children:[(0,U.jsx)(`option`,{value:`keyword`,children:`Keyword`}),(0,U.jsx)(`option`,{value:`firma`,children:`Firma`}),(0,U.jsx)(`option`,{value:`ort`,children:`Ort`})]})}),(0,U.jsx)(J,{label:`Wert, der blockiert wird`,children:(0,U.jsx)(Y,{value:P.value,onChange:e=>ee(t=>({...t,value:e.target.value}))})}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted`,children:`Vorschau`}),(0,U.jsxs)(`p`,{className:`mt-2 text-sm text-ink`,children:[`Blockiert wird:`,` `,(0,U.jsx)(`span`,{className:`font-semibold`,children:P.value?.trim()||`(kein Wert)`})]})]})]})}),(0,U.jsx)(nr,{open:se.open,title:`Stelle aussortieren — ${se.job?.title||``}`,onClose:()=>ce(Di),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ce(Di),children:`Abbrechen`}),(0,U.jsxs)(G,{variant:`danger`,onClick:Me,children:[(0,U.jsx)(be,{size:15}),`Aussortieren`]})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Warum passt diese Stelle nicht? (Mehrfachauswahl möglich)`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:(le.length?le:[{label:`zu_weit_entfernt`},{label:`gehalt_zu_niedrig`},{label:`falsches_fachgebiet`},{label:`zu_junior`},{label:`zu_senior`},{label:`unpassendes_arbeitsmodell`},{label:`firma_uninteressant`},{label:`zeitarbeit`},{label:`befristet`},{label:`sonstiges`}]).map(e=>{let t=se.selectedReasons.includes(e.label),n=e.label.replace(/_/g,` `).replace(/^\w/,e=>e.toUpperCase());return(0,U.jsxs)(`button`,{type:`button`,className:W(`rounded-lg border px-3 py-1.5 text-[13px] font-medium transition-colors`,t?`border-coral/30 bg-coral/15 text-coral`:`border-white/10 bg-white/[0.04] text-muted/60 hover:bg-white/[0.08] hover:text-muted/80`),onClick:()=>Ne(e.label),children:[t?(0,U.jsx)(ie,{size:12,className:`mr-1 inline -mt-0.5`}):null,n,e.usage_count>0?(0,U.jsxs)(`span`,{className:`ml-1 text-[11px] opacity-50`,children:[`(`,e.usage_count,`)`]}):null]},e.label)})}),(0,U.jsx)(J,{label:`Eigener Grund (optional)`,children:(0,U.jsx)(Y,{placeholder:`z.B. kein Home-Office möglich`,value:se.customReason,onChange:e=>ce(t=>({...t,customReason:e.target.value}))})})]})}),T.open&&T.job&&(0,U.jsx)(nr,{open:T.open,title:T.editing?`Stelle bearbeiten`:`Stellendetails`,onClose:()=>E({open:!1,job:null,editing:!1}),size:`xl`,children:T.editing?(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsx)(J,{label:`Titel`,children:(0,U.jsx)(Y,{value:k.title||``,onChange:e=>A(t=>({...t,title:e.target.value}))})}),(0,U.jsx)(J,{label:`Firma`,children:(0,U.jsx)(Y,{value:k.company||``,onChange:e=>A(t=>({...t,company:e.target.value}))})}),(0,U.jsx)(J,{label:`Standort`,children:(0,U.jsx)(Y,{value:k.location||``,onChange:e=>A(t=>({...t,location:e.target.value}))})}),(0,U.jsx)(J,{label:`Beschreibung`,children:(0,U.jsx)(Xn,{value:k.description||``,onChange:e=>A(t=>({...t,description:e.target.value})),className:`!min-h-40`})}),(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsx)(G,{variant:`primary`,onClick:async()=>{await Ot(`/api/jobs/${T.job.hash}`,k),a(`Stelle aktualisiert`,`success`),E({open:!1,job:null,editing:!1}),Ee({silent:!0})},children:`Speichern`}),(0,U.jsx)(G,{variant:`ghost`,onClick:()=>E(e=>({...e,editing:!1})),children:`Abbrechen`})]})]}):(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-start justify-between`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h3`,{className:`text-xl font-semibold text-ink`,children:T.job.title}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[T.job.company||`Unbekannt`,T.job.location?` — ${T.job.location}`:``]})]}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>{A({title:T.job.title||``,company:T.job.company||``,location:T.job.location||``,description:T.job.description||``}),E(e=>({...e,editing:!0}))},children:[(0,U.jsx)(Ge,{size:14}),` Bearbeiten`]})]}),(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`font-mono text-[10px] text-muted/40 hover:text-sky transition-colors`,title:`ID kopieren`,onClick:async()=>{try{await navigator.clipboard.writeText(T.job.hash),a(`ID kopiert.`,`success`,{duration:2e3})}catch{}},children:[`#`,String(T.job.hash).slice(0,12)]}),(0,U.jsx)(q,{tone:`sky`,children:T.job.source||`Quelle`}),T.job.employment_type?(0,U.jsx)(q,{tone:T.job.employment_type===`freelance`?`success`:`neutral`,children:T.job.employment_type}):null,T.job.remote_level&&T.job.remote_level!==`unbekannt`?(0,U.jsx)(q,{tone:`success`,children:T.job.remote_level}):null,(0,U.jsxs)(q,{tone:`amber`,children:[`Score `,T.job.score||0]}),Ni(T.job)?(0,U.jsx)(q,{tone:`amber`,children:`Score unsicher`}):null,T.job.is_pinned?(0,U.jsxs)(q,{tone:`amber`,children:[(0,U.jsx)(qe,{size:12,className:`inline`}),` Angepinnt`]}):null]}),T.job.salary_min?(0,U.jsxs)(`p`,{className:`text-sm text-teal font-medium`,children:[`Gehalt: `,wn(T.job.salary_min),` - `,wn(T.job.salary_max),T.job.salary_type?` (${T.job.salary_type})`:``,T.job.salary_estimated?` (geschaetzt)`:``]}):null,T.job.url?(0,U.jsxs)(`a`,{href:T.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 text-sm text-sky hover:underline`,children:[(0,U.jsx)(ye,{size:14}),` Stellenanzeige oeffnen`]}):null,Ni(T.job)?(0,U.jsxs)(K,{className:`rounded-xl border-amber/20 bg-amber/10 shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Beschreibung zuerst nachziehen`}),(0,U.jsx)(`p`,{className:`mt-1 text-sm text-muted`,children:`Für diese Stelle fehlt eine belastbare Beschreibung. Der Score ist deshalb nur eine Vororientierung und kein sauberes Urteil.`}),(0,U.jsxs)(`div`,{className:`mt-3 flex flex-wrap gap-2`,children:[(0,U.jsxs)(G,{size:`sm`,disabled:D,onClick:async()=>{if(T.job?.hash){O(!0);try{a(`Beschreibung nachgeladen (${(await H(`/api/jobs/${T.job.hash}/refetch-description`,{})).chars} Zeichen)`,`success`);let e=await V(`/api/jobs/${T.job.hash}`);e&&E(t=>({...t,job:e})),await Ee({silent:!0})}catch(e){a(`Nachladen fehlgeschlagen: ${e.message}`,`danger`)}finally{O(!1)}}},children:[(0,U.jsx)(_e,{size:14}),D?`Lade...`:`Beschreibung jetzt nachladen`]}),T.job.url?(0,U.jsxs)(`a`,{href:T.job.url,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 rounded-lg border border-amber/30 px-3 py-1.5 text-xs text-amber hover:bg-amber/10`,children:[(0,U.jsx)(ye,{size:12}),` Im Browser oeffnen + manuell kopieren`]}):null]}),(0,U.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/60`,children:[`Tipp: Du kannst auch Claude bitten — `,(0,U.jsx)(`code`,{className:`text-amber`,children:`stellenbeschreibung_nachladen`}),` als Tool. Massen-Nachzug laeuft sowieso im Hintergrund (max 8 pro Auto-Run, mit Backoff).`]})]}):null,T.job.description?(0,U.jsxs)(`div`,{className:`glass-card p-4 rounded-xl`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-semibold text-ink mb-2`,children:`Stellenbeschreibung`}),(0,U.jsx)(`p`,{className:`text-sm text-muted/70 whitespace-pre-wrap`,children:T.job.description})]}):null,T.job.found_at?(0,U.jsxs)(`p`,{className:`text-xs text-muted/40`,children:[`Gefunden: `,Cn(T.job.found_at)]}):null,(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2 border-t border-white/[0.06] pt-4 mt-4`,children:[(0,U.jsxs)(G,{onClick:()=>{E({open:!1,job:null,editing:!1}),N({open:!0,draft:{job_hash:T.job.hash,title:T.job.title||``,company:T.job.company||``,url:T.job.url||``,status:`beworben`,notes:``}})},children:[(0,U.jsx)(Je,{size:15}),` Bewerbung erfassen`]}),(0,U.jsxs)(G,{variant:`secondary`,onClick:()=>{E({open:!1,job:null,editing:!1}),Oe(T.job)},children:[(0,U.jsx)(at,{size:15}),` Fit-Analyse`]}),(0,U.jsxs)(G,{variant:T.job.is_pinned?`subtle`:`secondary`,onClick:async()=>{await Ie(T.job),E(e=>({...e,job:{...e.job,is_pinned:e.job.is_pinned?0:1}}))},children:[T.job.is_pinned?(0,U.jsx)(Ke,{size:15}):(0,U.jsx)(qe,{size:15}),T.job.is_pinned?`Entpinnen`:`Anpinnen`]}),(0,U.jsxs)(G,{variant:`ghost`,onClick:()=>{E({open:!1,job:null,editing:!1}),Pe(T.job)},children:[(0,U.jsx)(j,{size:15}),` Blacklist`]})]})]})})]})}var Fi={name:``,email:``,phone:``,address:``,city:``,plz:``,country:`Deutschland`,birthday:``,nationality:``,summary:``,informal_notes:``,preferences:{stellentyp:``,min_gehalt:``,ziel_gehalt:``,min_tagessatz:``,min_stundensatz:``,max_entfernung_km:``}},Ii={id:``,company:``,title:``,location:``,start_date:``,end_date:``,is_current:!1,employment_type:`festanstellung`,industry:``,description:``,tasks:``,achievements:``,technologies:``},Li={name:``,role:``,duration:``,start_date:``,end_date:``,technologies:``,description:``,situation:``,task:``,action:``,result:``},Ri={id:``,institution:``,degree:``,field_of_study:``,start_date:``,end_date:``},zi={id:``,name:``,category:`fachlich`,level:3,years_experience:``,since_year:``,end_year:``,level_current:``},Bi={fachlich:`Fachlich`,tool:`Tools`,methodisch:`Methodisch`,soft_skill:`Soft Skills`,sprache:`Sprachen`},Vi={fachlich:`fachlich`,fachkenntnisse:`fachlich`,technisch:`fachlich`,"ki/ml":`fachlich`,tool:`tool`,tools:`tool`,methodisch:`methodisch`,soft_skill:`soft_skill`,"soft skills":`soft_skill`,"soft skill":`soft_skill`,sprache:`sprache`,sprachen:`sprache`};function Hi(e){return e&&Vi[String(e).trim().toLowerCase()]||`fachlich`}var Ui={festanstellung:`Festanstellung`,freelance:`Freelance`,teilzeit:`Teilzeit`,praktikum:`Praktikum`};function Wi(e){let t=e?.start_date||``,n=e?.is_current?`heute`:e?.end_date||``;return[e?.location,t,n].filter(Boolean).join(` - `)}function Gi(e){return e?{...Fi,...e,preferences:{...Fi.preferences,...e.preferences||{}}}:Fi}function Ki(e){let t={...e.preferences||{}};return[`min_gehalt`,`ziel_gehalt`,`min_tagessatz`,`min_stundensatz`,`max_entfernung_km`].forEach(e=>{if(t[e]===``||t[e]===null||t[e]===void 0){t[e]=null;return}let n=Number(t[e]);t[e]=Number.isFinite(n)?n:null}),{...e,preferences:t}}var qi=[{value:`festanstellung`,label:`Festanstellung`},{value:`freelance`,label:`Freelance`},{value:`teilzeit`,label:`Teilzeit`},{value:`praktikum`,label:`Praktikum`},{value:`werkstudent`,label:`Werkstudent`}],Ji={festanstellung:50,freelance:200,teilzeit:30,praktikum:50,werkstudent:50};function Yi(e){let t=e?.stellentypen||[];!t.length&&e?.stellentyp&&(t=[e.stellentyp]),t.length||(t=[`festanstellung`]);let n=e?.max_entfernung||{};return{keywords_muss:[...e?.keywords_muss||[]],keywords_plus:[...e?.keywords_plus||[]],keywords_minus:[...e?.keywords_minus||[]],keywords_ausschluss:[...e?.keywords_ausschluss||[]],regionen:[...e?.regionen||[]],min_gehalt:e?.min_gehalt??``,min_tagessatz:e?.min_tagessatz??``,min_stundensatz:e?.min_stundensatz??``,max_entfernung_km:e?.max_entfernung_km??``,stellentypen:t,max_entfernung_festanstellung:n.festanstellung??Ji.festanstellung,max_entfernung_freelance:n.freelance??Ji.freelance,max_entfernung_teilzeit:n.teilzeit??Ji.teilzeit,max_entfernung_praktikum:n.praktikum??Ji.praktikum,max_entfernung_werkstudent:n.werkstudent??Ji.werkstudent,gewichtung_muss:e?.gewichtung?.muss??2,gewichtung_plus:e?.gewichtung?.plus??1,gewichtung_minus:e?.gewichtung?.minus??1,gewichtung_remote:e?.gewichtung?.remote??2,gewichtung_naehe:e?.gewichtung?.naehe??2,gewichtung_fern_malus:e?.gewichtung?.fern_malus??3,gewichtung_gehalt:e?.gewichtung?.gehalt??1,min_score_schwelle:e?.min_score_schwelle??1}}function Xi(e){return{keywords_muss:e.keywords_muss,keywords_plus:e.keywords_plus,keywords_minus:e.keywords_minus,keywords_ausschluss:e.keywords_ausschluss,regionen:e.regionen,min_gehalt:e.min_gehalt===``?null:Number(e.min_gehalt),min_tagessatz:e.min_tagessatz===``?null:Number(e.min_tagessatz),min_stundensatz:e.min_stundensatz===``?null:Number(e.min_stundensatz),max_entfernung_km:e.max_entfernung_km===``?null:Number(e.max_entfernung_km),stellentypen:e.stellentypen,max_entfernung:{festanstellung:Number(e.max_entfernung_festanstellung)||50,freelance:Number(e.max_entfernung_freelance)||200,teilzeit:Number(e.max_entfernung_teilzeit)||30,praktikum:Number(e.max_entfernung_praktikum)||50,werkstudent:Number(e.max_entfernung_werkstudent)||50},gewichtung:{muss:Number(e.gewichtung_muss),plus:Number(e.gewichtung_plus),minus:Number(e.gewichtung_minus),remote:Number(e.gewichtung_remote),naehe:Number(e.gewichtung_naehe),fern_malus:Number(e.gewichtung_fern_malus),gehalt:Number(e.gewichtung_gehalt)},min_score_schwelle:Number(e.min_score_schwelle)||1}}function Zi(e){if(e===``||e==null)return null;let t=Number(e);return Number.isFinite(t)?Math.trunc(t):null}function Qi(e){let t=new Date().getFullYear(),n={...zi,...e||{}},r=Zi(n.years_experience),i=Zi(n.start_year??n.since_year),a=r===null?``:Math.min(t,Math.max(1900,t-Math.max(0,r))),o=i===null?a:i,s=Zi(n.end_year),c=Zi(n.level_current);return{...n,category:Hi(n.category),years_experience:r===null?``:r,since_year:o,end_year:s===null?``:s,level_current:c===null?``:c}}function $i(e){let t=new Date().getFullYear(),n=Zi(e.level),r=Zi(e.years_experience),i=Zi(e.since_year),a=i===null?null:Math.min(t,Math.max(1900,i)),o=Zi(e.end_year),s=o===null?null:Math.min(t,Math.max(1900,o)),c=Zi(e.level_current),l=s??t,u=a===null?r:Math.max(0,l-a);return{name:(e.name||``).trim(),category:e.category||`fachlich`,level:Math.min(5,Math.max(1,n??3)),years_experience:u,start_year:a,end_year:s,level_current:c===null?null:Math.min(5,Math.max(1,c))}}var ea={ausstehend:{label:`Ausstehend`,tone:`amber`},angewendet:{label:`Angewendet`,tone:`success`},teilweise:{label:`Teilweise`,tone:`sky`},verworfen:{label:`Verworfen`,tone:`danger`},manuell_korrigiert:{label:`Manuell korrigiert`,tone:`sky`}};function ta(e){return!e||typeof e!=`object`?0:Object.values(e).filter(e=>e==null?!1:Array.isArray(e)?e.length>0:typeof e==`object`?Object.keys(e).length>0:typeof e==`string`?e.trim().length>0:!0).length}function na(){let{chrome:e,intent:t,clearIntent:n,reloadKey:r,refreshChrome:i,navigateTo:a,pushToast:o,copyPrompt:s,openCreateProfileModal:c}=jt(),[l,u]=(0,w.useState)(!0),[d,f]=(0,w.useState)(null),[p,m]=(0,w.useState)(Fi),[h,g]=(0,w.useState)(Yi({})),[_,v]=(0,w.useState)([]),[y,b]=(0,w.useState)({type:`firma`,value:``}),[x,S]=(0,w.useState)({completeness:0}),[C,T]=(0,w.useState)([]),[E,D]=(0,w.useState)(null),[O,k]=(0,w.useState)({open:!1,draft:Ii}),[A,M]=(0,w.useState)({open:!1,positionId:``,draft:Li}),[N,P]=(0,w.useState)({open:!1,draft:Ri}),[F,I]=(0,w.useState)({open:!1,draft:zi}),[te,ne]=(0,w.useState)(``),[re,ie]=(0,w.useState)({}),[oe,z]=(0,w.useState)(``),[se,ce]=(0,w.useState)(!1),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)({doc_type:`sonstiges`}),[pe,me]=(0,w.useState)(!1),[ge,ve]=(0,w.useState)({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),ye=(0,w.useRef)(null),be=(0,w.useRef)(!0),xe=(0,w.useRef)(``),Se=(0,w.useRef)(!0),we=(0,w.useRef)(``),Te=new Date().getFullYear(),Ee=(0,w.useRef)(null),De=[{key:`experience`,label:`Berufserfahrung`,value:d?.positions?.length||0,note:`Positionen`},{key:`education`,label:`Ausbildungen`,value:d?.education?.length||0,note:`Ausbildungen erfasst`},{key:`skills`,label:`Skills`,value:d?.skills?.length||0,note:`Kompetenzen erfasst`},{key:`completeness`,label:`Vollständigkeit des Profils`,value:`${Math.round(Number(x?.completeness||0))}%`,note:`Fortschritt`}],Oe=(0,w.useEffectEvent)(async()=>{try{let e=await Promise.allSettled([Dt(`/api/profile`),V(`/api/profile/completeness`),V(`/api/extractions`),V(`/api/search-criteria`),V(`/api/blacklist`),Dt(`/api/keyword-suggestions`)]),t=e[0].status===`fulfilled`?e[0].value:null,n=e[1].status===`fulfilled`?e[1].value:null,r=e[2].status===`fulfilled`?e[2].value:null,i=e[3].status===`fulfilled`?e[3].value:{},a=e[4].status===`fulfilled`?e[4].value:[],o=e[5].status===`fulfilled`?e[5].value:null,s=Gi(t),c=Yi(i||{});be.current=!0,xe.current=t?JSON.stringify(Ki(s)):``,Se.current=!0,we.current=JSON.stringify(Xi(c)),(0,w.startTransition)(()=>{f(t),m(s),g(c),v(a||[]),S(n||{completeness:0}),T(r?.extractions||[]),D(o),u(!1)})}catch(e){o(`Profilseite konnte nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>u(!1))}});(0,w.useEffect)(()=>{u(!0),Oe()},[r]),(0,w.useEffect)(()=>{if(l||!d)return;if(be.current){be.current=!1;return}let e=Ki(p),t=JSON.stringify(e);if(t===xe.current)return;let n=window.setTimeout(async()=>{try{await H(`/api/profile`,e),xe.current=t,(0,w.startTransition)(()=>{f(t=>t&&{...t,...e,preferences:{...t.preferences,...e.preferences}})}),await i({quiet:!0})}catch(e){o(`Profil konnte nicht gespeichert werden: ${e.message}`,`danger`)}},700);return()=>window.clearTimeout(n)},[p,l,d,o,i]),(0,w.useEffect)(()=>{if(l)return;if(Se.current){Se.current=!1;return}let e=Xi(h),t=JSON.stringify(e);if(t===we.current)return;let n=window.setTimeout(async()=>{try{await H(`/api/search-criteria`,e),we.current=t,await i({quiet:!0})}catch(e){o(`Suchkriterien konnten nicht gespeichert werden: ${e.message}`,`danger`)}},600);return()=>window.clearTimeout(n)},[h,l,o,i]),(0,w.useEffect)(()=>{t?.page===`profil`&&(t.composer===`position`&&k({open:!0,draft:Ii}),t.composer===`education`&&P({open:!0,draft:Ri}),t.composer===`skill`&&I({open:!0,draft:Qi(zi)}),t.composer===`document`&&document.getElementById(`section-documents`)?.scrollIntoView({behavior:`smooth`,block:`start`}),n())},[t]);async function ke(e,t,{keepOpen:n=!1}={}){let r=t.draft;try{if(e===`position`){let{id:e,...t}=r,n=e;e?await Ot(`/api/position/${e}`,t):n=(await H(`/api/position`,t))?.id||e;let i={...t,id:n,projects:Array.isArray(r.projects)?r.projects:[]};(0,w.startTransition)(()=>{f(t=>{if(!t)return t;let n=Array.isArray(t.positions)?t.positions:[],r=e?n.map(t=>t.id===e?{...t,...i}:t):[i,...n];return{...t,positions:r}})}),k({open:!1,draft:Ii})}if(e===`education`){let{id:e,...t}=r,n=e;e?await Ot(`/api/education/${e}`,t):n=(await H(`/api/education`,t))?.id||e;let i={...t,id:n};(0,w.startTransition)(()=>{f(t=>{if(!t)return t;let n=Array.isArray(t.education)?t.education:[],r=e?n.map(t=>t.id===e?{...t,...i}:t):[i,...n];return{...t,education:r}})}),P({open:!1,draft:Ri})}if(e===`skill`){let e=$i(r),t=r.id,i=!!r.id,a=Array.isArray(d?.skills)?d.skills:[],o=i?a.findIndex(e=>e.id===r.id):-1,s=n&&i&&o>=0&&o{f(e=>{if(!e)return e;let t=Array.isArray(e.skills)?e.skills:[],n=r.id?t.map(e=>e.id===r.id?{...e,...c}:e):[c,...t];return{...e,skills:n}})}),I(n?{open:!0,draft:Qi(s||zi)}:{open:!1,draft:zi})}await i({quiet:!0}),o(`Eintrag gespeichert.`,`success`)}catch(e){o(`Eintrag konnte nicht gespeichert werden: ${e.message}`,`danger`)}}function Ae(e){ie(t=>({...t,[e]:!t[e]}))}async function je(){if(A.positionId){if(!A.draft.name?.trim()){o(`Projektname ist ein Pflichtfeld.`,`danger`);return}try{let e=!!A.draft.id;if(e){let{id:e,...t}=A.draft;await Ot(`/api/project/${e}`,t),(0,w.startTransition)(()=>{f(n=>n&&{...n,positions:(n.positions||[]).map(n=>n.id===A.positionId?{...n,projects:(n.projects||[]).map(n=>n.id===e?{...n,...t}:n)}:n)})})}else{let e=await H(`/api/project`,{...A.draft,position_id:A.positionId}),t={...A.draft,id:e?.id||``};(0,w.startTransition)(()=>{f(e=>e&&{...e,positions:(e.positions||[]).map(e=>{if(e.id!==A.positionId)return e;let n=Array.isArray(e.projects)?e.projects:[];return{...e,projects:[...n,t]}})})})}M({open:!1,positionId:``,draft:Li}),await i({quiet:!0}),o(e?`Projekt aktualisiert.`:`Projekt gespeichert.`,`success`)}catch(e){o(`Projekt konnte nicht gespeichert werden: ${e.message}`,`danger`)}}}async function Me(e,t){if(window.confirm(`Projekt wirklich löschen?`))try{await kt(`/api/project/${t}`),(0,w.startTransition)(()=>{f(n=>n&&{...n,positions:(n.positions||[]).map(n=>n.id===e?{...n,projects:(n.projects||[]).filter(e=>e.id!==t)}:n)})}),await i({quiet:!0}),o(`Projekt gelöscht.`,`success`)}catch(e){o(`Projekt konnte nicht gelöscht werden: ${e.message}`,`danger`)}}async function Ne(e={}){if(e?.syncChrome){await Promise.all([Oe(),i({quiet:!0})]);return}await Oe()}async function Pe(e){let t=Array.from(e||[]).filter(e=>e&&e.name);if(!t.length)return;let n=new Set,r=[];for(let e of t){let t=Qt(e);n.has(t)||(n.add(t),r.push(e))}if(!r.length){o(`Diese Dateien sind bereits enthalten.`,`neutral`);return}let i=0,a=0;for(let e of r)try{await tn(e,de.doc_type||`sonstiges`),i+=1}catch(t){a+=1,o(`Upload fehlgeschlagen (${e.name}): ${t.message}`,`danger`)}if(i>0)try{await rn()}catch(e){o(`Analyse nach Upload fehlgeschlagen: ${e.message}`,`danger`)}if(await Ne({syncChrome:!0}),i>0&&a===0){o(`${i} Dokument(e) hochgeladen und analysiert.`,`success`);return}if(i>0&&a>0){o(`${i} Dokument(e) hochgeladen, ${a} fehlgeschlagen.`,`amber`);return}o(`Keine Datei konnte verarbeitet werden.`,`danger`)}async function Fe(){if(!le){o(`Bitte einen Ordnerpfad eingeben.`,`danger`);return}try{let e=await H(`/api/documents/import-folder`,{folder_path:le,import_documents:!0,import_applications:!0});if(ce(!1),ue(``),await Ne({syncChrome:!0}),e?.warning_count){let t=Array.isArray(e.warnings)&&e.warnings.length?` ${e.warnings[0]}`:``;o(`Ordnerimport abgeschlossen mit ${e.warning_count} Hinweis(en).${t}`,`amber`);return}o(`Ordnerimport abgeschlossen.`,`success`)}catch(e){o(`Ordnerimport fehlgeschlagen: ${e.message}`,`danger`)}}async function Ie(e,t,n={}){try{await e(),typeof n.onSuccess==`function`&&await n.onSuccess(),n.localRefresh?await Ne({syncChrome:!!n.syncChrome}):await i({quiet:!0}),o(t,`success`)}catch(e){o(`${t} fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){try{await s((await V(`/api/document/${e.id}/analysis-prompt`)).prompt)}catch(e){o(`Analyse-Prompt konnte nicht kopiert werden: ${e.message}`,`danger`)}}async function Re(){let e=String(y.value||``).trim();if(!e){o(`Bitte einen Wert für die Blacklist eingeben.`,`danger`);return}try{await H(`/api/blacklist`,{...y,value:e}),b({type:`firma`,value:``});let t=await V(`/api/blacklist`);(0,w.startTransition)(()=>v(t||[])),await i({quiet:!0}),o(`Blacklist-Eintrag angelegt.`,`success`)}catch(e){o(`Blacklist-Eintrag fehlgeschlagen: ${e.message}`,`danger`)}}async function ze(e){try{await kt(`/api/blacklist/${e}`),(0,w.startTransition)(()=>v(t=>t.filter(t=>t.id!==e))),await i({quiet:!0}),o(`Blacklist-Eintrag entfernt.`,`success`)}catch(t){let n=String(t?.message||``);if(n.includes(`Blacklist-Eintrag nicht gefunden`)){(0,w.startTransition)(()=>v(t=>t.filter(t=>t.id!==e))),o(`Blacklist-Eintrag war bereits entfernt.`,`sky`);return}if(n.includes(`HTTP 404`)){o(`Löschen-Endpunkt nicht gefunden. Bitte Dashboard-Server neu starten.`,`danger`);return}o(`Blacklist-Eintrag konnte nicht gelöscht werden: ${n}`,`danger`)}}async function Be(){if(!ge.document?.id)return;let e={};try{e=JSON.parse(ge.draftText||`{}`)}catch{o(`JSON ist ungültig. Bitte Syntax prüfen.`,`danger`);return}ve(e=>({...e,saving:!0}));try{let t=await Ot(`/api/document/${ge.document.id}/extraction`,{corrected_fields:e});await Ne({syncChrome:!0});let n=Object.keys(t?.angewendet||{});o(n.length?`Korrekturen übernommen: ${n.join(`, `)}`:`Korrekturen gespeichert.`,`success`),ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`})}catch(e){o(`Korrekturen konnten nicht gespeichert werden: ${e.message}`,`danger`),ve(e=>({...e,saving:!1}))}}if(l)return(0,U.jsx)(tr,{label:`Profil wird geladen...`});if(!e.status?.has_profile||!d)return(0,U.jsxs)(`div`,{id:`page-profil`,className:`page active`,children:[(0,U.jsx)(Kn,{title:`Profil`,description:`Lege dein erstes Profil an oder importiere vorhandene Daten.`,eyebrow:`Profil`}),(0,U.jsx)(er,{title:`Noch kein aktives Profil`,description:`Ohne Profil bleiben Matching, Exporte und automatische Auswertungen leer.`,action:(0,U.jsx)(G,{onClick:c,children:`Profil anlegen`})})]});let Ve=d.documents||[],He=Ve.reduce((e,t)=>{let n=Date.parse(t?.created_at||``);return Number.isNaN(n)?e:n>e.timestamp?{item:t,timestamp:n}:e},{item:null,timestamp:-1/0}).item,Ue=He?.created_at?Cn(He.created_at):`Noch keine Uploads`,We=Ve.filter(e=>[`angewendet`,`teilweise`,`manuell_korrigiert`,`verworfen`].includes(String(e?.extraction_status||``))).length,Ge=Math.max(0,Ve.length-We),Ke=Ve.reduce((e,t)=>{let n=Dn(t?.doc_type||`sonstiges`);return e[n]=(e[n]||0)+1,e},{}),qe=Object.entries(Ke).sort(([,e],[,t])=>Number(t)-Number(e)).slice(0,4),Ye=[{label:`MUSS-Kriterium`,key:`gewichtung_muss`,chip:`Pflicht`,desc:`Harte Anforderungen aus deinem Profil. MUSS=5: Stelle ohne dieses Skill bekommt einen deutlichen Score-Abzug. MUSS=0: das Kriterium ist für das Ranking irrelevant.`,color:`teal`},{label:`PLUS-Punkte`,key:`gewichtung_plus`,chip:`Bonus`,desc:`Nice-to-have-Skills. Höherer Wert = mehr Score-Bonus pro Match. Wirkt nur additiv, blockt nichts.`,color:`sky`},{label:`MINUS-Abzug`,key:`gewichtung_minus`,chip:`Malus`,desc:`Score-Abzug pro Minus-Keyword-Treffer (#667). Weiche Abwertung — die Stelle bleibt sichtbar, rutscht aber nach unten. 0 = Minus-Keywords ohne Wirkung.`,color:`coral`},{label:`Remote`,key:`gewichtung_remote`,chip:`Modus`,desc:`Wie stark Remote-/Hybrid-Stellen aufgewertet werden. Hoch = Remote-Stellen rutschen nach oben, auch wenn andere Kriterien schwächer matchen.`,color:`sky`},{label:`Nähe`,key:`gewichtung_naehe`,chip:`Standort`,desc:`Wie stark Stellen in Pendel-Nähe (< 50 km) aufgewertet werden. Bei Vor-Ort-Präferenz hoch setzen.`,color:`teal`},{label:`Fern-Malus`,key:`gewichtung_fern_malus`,chip:`Abzug`,desc:`Score-Abzug bei Distanz > 200 km (ohne Remote-Option). Hoch = ferne Stellen sind quasi unsichtbar. 0 = Distanz egal.`,color:`coral`},{label:`Gehalt`,key:`gewichtung_gehalt`,chip:`Vergütung`,desc:`Wie stark Gehaltsangaben in der Ausschreibung ins Ranking einfliessen. Stellen ohne Gehaltsangabe werden dadurch nicht bestraft.`,color:`amber`}],Xe=e=>{let t=Number(e);return Number.isFinite(t)?Math.max(0,Math.min(10,t)):0},Ze=e=>Number.isInteger(e)?String(e):e.toFixed(1),Qe={teal:{track:`bg-teal/20`,fill:`bg-teal`,thumb:`accent-teal`,value:`text-teal`,label:`text-ink/70`},sky:{track:`bg-sky/20`,fill:`bg-sky`,thumb:`accent-sky`,value:`text-sky`,label:`text-ink/70`},coral:{track:`bg-coral/20`,fill:`bg-coral`,thumb:`accent-coral`,value:`text-coral`,label:`text-ink/70`},amber:{track:`bg-amber/20`,fill:`bg-amber`,thumb:`accent-amber`,value:`text-amber`,label:`text-ink/70`}},$e=e=>{let t=Xe(h[e.key]),n=Qe[e.color];return(0,U.jsxs)(`div`,{className:`group flex items-center gap-4 py-2`,children:[(0,U.jsxs)(`div`,{className:`w-28 shrink-0`,children:[(0,U.jsx)(`p`,{className:W(`text-[12px] font-semibold`,n.label),title:e.desc,children:e.label}),(0,U.jsx)(`p`,{className:`text-[10px] text-muted/50`,children:e.chip})]}),(0,U.jsxs)(`div`,{className:`flex flex-1 flex-col gap-0.5`,children:[(0,U.jsx)(`div`,{className:`relative flex items-center`,children:(0,U.jsx)(`input`,{type:`range`,min:0,max:10,step:.5,value:t,onChange:t=>g(n=>({...n,[e.key]:t.target.value})),className:W(`weight-slider h-1.5 w-full cursor-pointer appearance-none rounded-full`,n.track,n.thumb),style:{background:`linear-gradient(to right, var(--slider-fill) ${t*10}%, transparent ${t*10}%)`,"--slider-fill":`var(--color-${e.color})`}})}),(0,U.jsxs)(`div`,{className:`flex justify-between text-[9px] text-muted/40`,children:[(0,U.jsx)(`span`,{children:`unwichtig`}),(0,U.jsx)(`span`,{children:`sehr wichtig`})]})]}),(0,U.jsx)(`span`,{className:W(`w-8 text-right text-sm font-bold tabular-nums`,n.value),children:Ze(t)})]},e.key)};return(0,U.jsxs)(`div`,{id:`page-profil`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Profil`}),(0,U.jsxs)(`div`,{className:`mb-6 flex items-center justify-end gap-2`,children:[(0,U.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>a(`einstellungen`,{tab:`datenschutz`}),children:[(0,U.jsx)(_e,{size:15}),` Export & Backup`]}),(0,U.jsx)(`button`,{type:`button`,className:`text-xs text-muted/40 hover:text-coral transition-colors`,onClick:()=>a(`einstellungen`,{tab:`gefahrenzone`}),children:`Profil loeschen? → Gefahrenzone`})]}),(0,U.jsx)(`div`,{className:`grid gap-6`,children:(0,U.jsxs)(`div`,{id:`profil-uebersicht-wrapper`,className:`grid gap-6`,children:[(0,U.jsx)(`div`,{id:`profil-uebersicht`,className:`grid gap-4 md:grid-cols-2 xl:grid-cols-4`,children:De.map(e=>(0,U.jsx)(Jn,{label:e.label,value:e.value,note:e.note,tone:`neutral`},e.key))}),(0,U.jsxs)(K,{id:`profil-persoenlich`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Persönliche Daten`,description:`Diese Daten fließen in CV, Anschreiben und Matching ein.`}),(0,U.jsxs)(`div`,{className:`grid gap-5`,children:[(0,U.jsxs)(`div`,{className:`grid gap-5 md:grid-cols-2`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Kontakt`}),(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsx)(J,{label:`Name`,children:(0,U.jsx)(Y,{value:p.name||``,onChange:e=>m(t=>({...t,name:e.target.value}))})}),(0,U.jsx)(J,{label:`E-Mail`,children:(0,U.jsx)(Y,{value:p.email||``,onChange:e=>m(t=>({...t,email:e.target.value}))})}),(0,U.jsx)(J,{label:`Telefon`,children:(0,U.jsx)(Y,{value:p.phone||``,onChange:e=>m(t=>({...t,phone:e.target.value}))})})]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`mb-2 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Adresse`}),(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsx)(J,{label:`Strasse`,children:(0,U.jsx)(Y,{value:p.address||``,onChange:e=>m(t=>({...t,address:e.target.value}))})}),(0,U.jsxs)(`div`,{className:`grid grid-cols-[6rem_minmax(0,8rem)_minmax(0,1fr)] gap-3`,children:[(0,U.jsx)(J,{label:`PLZ`,children:(0,U.jsx)(Y,{value:p.plz||``,onChange:e=>m(t=>({...t,plz:e.target.value}))})}),(0,U.jsx)(J,{label:`Ort`,children:(0,U.jsx)(Y,{value:p.city||``,onChange:e=>m(t=>({...t,city:e.target.value}))})}),(0,U.jsx)(J,{label:`Land`,children:(0,U.jsx)(Y,{value:p.country||``,onChange:e=>m(t=>({...t,country:e.target.value}))})})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-3`,children:[(0,U.jsx)(J,{label:`Geburtsdatum`,children:(0,U.jsx)(Y,{value:p.birthday||``,onChange:e=>m(t=>({...t,birthday:e.target.value}))})}),(0,U.jsx)(J,{label:`Nationalität`,children:(0,U.jsx)(Y,{value:p.nationality||``,onChange:e=>m(t=>({...t,nationality:e.target.value}))})})]})]})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsx)(J,{label:`Kurzprofil / Summary`,children:(0,U.jsx)(Xn,{rows:4,value:p.summary||``,onChange:e=>m(t=>({...t,summary:e.target.value}))})}),(0,U.jsx)(J,{label:`Informelle Notizen`,children:(0,U.jsx)(Xn,{rows:3,value:p.informal_notes||``,onChange:e=>m(t=>({...t,informal_notes:e.target.value}))})})]})]})]}),(0,U.jsxs)(K,{id:`profil-suchkriterien`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Suchkriterien`,description:`Keywords und Gewichtungen für Matching und Scoring.`}),E?.status===`ok`&&(E.vorschlaege_plus?.length>0||E.vorschlaege_ausschluss?.length>0)&&(0,U.jsxs)(`div`,{className:`mb-4 rounded-xl border border-sky/20 bg-sky/[0.04] p-3`,children:[(0,U.jsxs)(`p`,{className:`text-xs font-semibold text-sky/80 mb-1`,children:[`Vorschlaege aus deinen `,E.aktive_stellen,` aktiven Stellen`]}),E.datenquelle?(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60 mb-2 italic`,children:[`Basis: `,E.datenquelle]}):null,E.vorschlaege_plus?.length>0&&(0,U.jsxs)(`div`,{className:`mb-2`,children:[(0,U.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/60 mb-1.5`,children:`Haeufig in deinen Bewerbungen, fehlen in deinen PLUS-Keywords`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:E.vorschlaege_plus.map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>g(t=>{let n=t.keywords_plus||[];return n.includes(e.keyword)?t:{...t,keywords_plus:[...n,e.keyword]}}),className:`rounded-lg bg-success/15 px-2.5 py-1 text-xs text-success transition hover:bg-success/25`,title:`In ${e.in_guten_stellen} guten / ${e.in_schlechten_stellen} schlechten Stellen — klicken zum Hinzufuegen`,children:[`+ `,e.keyword]},e.keyword))})]}),E.vorschlaege_ausschluss?.length>0&&(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/60 mb-1.5`,children:`Haeufig in von dir aussortierten Stellen — als Ausschluss empfohlen`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:E.vorschlaege_ausschluss.map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>g(t=>{let n=t.keywords_ausschluss||[];return n.includes(e.keyword)?t:{...t,keywords_ausschluss:[...n,e.keyword]}}),className:`rounded-lg bg-danger/15 px-2.5 py-1 text-xs text-danger transition hover:bg-danger/25`,title:`In ${e.in_schlechten_stellen} schlechten / ${e.in_guten_stellen} guten Stellen — klicken zum Ausschliessen`,children:[`− `,e.keyword]},e.keyword))})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[[[`MUSS-Keywords`,`keywords_muss`,`sky`,`z.B. Data Scientist`],[`PLUS-Keywords`,`keywords_plus`,`success`,`z.B. Python, Machine Learning`],[`MINUS-Keywords (weiche Abwertung)`,`keywords_minus`,`amber`,`z.B. Automotive, SAP-only`],[`Ausschluss-Keywords (harter Filter)`,`keywords_ausschluss`,`danger`,`z.B. Praktikum, Junior`],[`Regionen`,`regionen`,`amber`,`z.B. Hamburg, Berlin`]].map(([e,t,n,r])=>(0,U.jsx)(J,{label:e,children:(0,U.jsx)(Zn,{tags:h[t]||[],onChange:e=>g(n=>({...n,[t]:e})),tone:n,placeholder:r})},t)),(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-3`,children:[(0,U.jsx)(J,{label:`Min. Gehalt`,children:(0,U.jsx)(Y,{type:`number`,value:h.min_gehalt,onChange:e=>g(t=>({...t,min_gehalt:e.target.value}))})}),(0,U.jsx)(J,{label:`Min. Tagessatz`,children:(0,U.jsx)(Y,{type:`number`,value:h.min_tagessatz,onChange:e=>g(t=>({...t,min_tagessatz:e.target.value}))})}),(0,U.jsx)(J,{label:`Min. Stundensatz`,children:(0,U.jsx)(Y,{type:`number`,value:h.min_stundensatz,onChange:e=>g(t=>({...t,min_stundensatz:e.target.value}))})})]}),(0,U.jsx)(J,{label:`Stellentypen (Multi-Select)`,children:(0,U.jsx)(`div`,{className:`flex flex-wrap gap-4`,children:qi.map(({value:e,label:t})=>(0,U.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2 text-sm text-muted`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:h.stellentypen?.includes(e),onChange:()=>g(t=>{let n=t.stellentypen?.includes(e)?t.stellentypen.filter(t=>t!==e):[...t.stellentypen||[],e];return{...t,stellentypen:n.length?n:[`festanstellung`]}}),className:`h-4 w-4 accent-sky-500`}),t]},e))})}),(0,U.jsxs)(J,{label:`Max. Entfernung pro Stellentyp (km)`,children:[(0,U.jsx)(`div`,{className:`grid gap-3 sm:grid-cols-2 md:grid-cols-3`,children:qi.filter(({value:e})=>h.stellentypen?.includes(e)).map(({value:e,label:t})=>(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(`span`,{className:`min-w-[7rem] text-xs text-muted/60`,children:[t,`:`]}),(0,U.jsx)(Y,{type:`number`,className:`!w-20`,value:h[`max_entfernung_${e}`],onChange:t=>g(n=>({...n,[`max_entfernung_${e}`]:t.target.value}))}),(0,U.jsx)(`span`,{className:`text-xs text-muted/40`,children:`km`})]},e))}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted/40`,children:`Entfernung beeinflusst den Fit-Score als Malus. Freelance hat standardmaessig eine hoehere Toleranz.`})]}),(0,U.jsx)(`div`,{className:`mt-2 rounded-xl border border-sky/20 bg-sky/[0.05] p-3 text-[12px] text-muted/80`,children:(0,U.jsxs)(`p`,{className:`leading-snug`,children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Wie das Scoring funktioniert:`}),` `,`Jede gefundene Stelle bekommt einen Score von 0-100. Diese Regler bestimmen, wie stark einzelne Faktoren ins Ranking einfliessen. Hoeher = wichtiger. Wert auf 0 = Faktor wird ignoriert. Mouse-over auf den Label-Text fuer Details.`]})}),(0,U.jsx)(`div`,{className:`mt-2 divide-y divide-white/[0.06] rounded-xl border border-white/10 bg-white/[0.02] px-4`,children:Ye.map(e=>$e(e))}),(0,U.jsxs)(J,{label:`Mindest-Score (Stellen unter dieser Schwelle werden ausgefiltert)`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`input`,{type:`range`,min:0,max:20,step:1,value:Number(h.min_score_schwelle)||1,onChange:e=>g(t=>({...t,min_score_schwelle:Number(e.target.value)})),className:`flex-1 h-1.5 cursor-pointer appearance-none rounded-full bg-sky/20 accent-sky`}),(0,U.jsx)(`span`,{className:`w-12 text-right text-sm font-bold tabular-nums text-sky`,children:Number(h.min_score_schwelle)||1})]}),(0,U.jsxs)(`p`,{className:`mt-1 text-xs text-muted/50`,children:[(0,U.jsx)(`strong`,{children:`0–1:`}),` sehr offen — Stellen mit minimalem Keyword-Treffer kommen rein.`,` `,(0,U.jsx)(`strong`,{children:`3–5:`}),` mittel — empfohlen.`,` `,(0,U.jsx)(`strong`,{children:`10+:`}),` nur klar passende Stellen. Greift beim naechsten Such-Lauf; bestehende Stellen bleiben sichtbar.`]})]}),(0,U.jsxs)(`div`,{id:`profil-blacklist`,className:`mt-2 border-t border-white/8 pt-5`,children:[(0,U.jsx)(qn,{title:`Blacklist`,description:`Ausschlüsse für Firmen oder Keywords.`}),(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-[12rem_minmax(0,1fr)_auto]`,children:[(0,U.jsx)(J,{label:`Typ`,children:(0,U.jsxs)(Qn,{value:y.type,onChange:e=>b(t=>({...t,type:e.target.value})),children:[(0,U.jsx)(`option`,{value:`firma`,children:`Firma`}),(0,U.jsx)(`option`,{value:`keyword`,children:`Keyword`}),(0,U.jsx)(`option`,{value:`ort`,children:`Ort`})]})}),(0,U.jsx)(J,{label:`Wert`,children:(0,U.jsx)(Y,{value:y.value,onChange:e=>b(t=>({...t,value:e.target.value}))})}),(0,U.jsx)(`div`,{className:`flex items-end`,children:(0,U.jsxs)(G,{onClick:Re,children:[(0,U.jsx)(j,{size:15}),`Hinzufügen`]})})]}),(0,U.jsx)(`div`,{className:`mt-6 grid gap-3`,children:_.length?_.map(e=>(0,U.jsx)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex min-w-0 flex-wrap items-center gap-3`,children:[(0,U.jsx)(q,{tone:`danger`,children:e.type}),(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:e.value})]}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>ze(e.id),disabled:!e.id,title:`Eintrag löschen`,"aria-label":`Blacklist-Eintrag ${e.value} löschen`,children:[(0,U.jsx)(ot,{size:14}),`Entfernen`]})]})},e.id??`${e.type}-${e.value}`)):(0,U.jsx)(er,{title:`Keine Blacklist-Einträge`,description:`Ausschlüsse erscheinen hier nach dem Speichern.`})})]})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[(0,U.jsxs)(K,{id:`profil-erfahrung`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Berufserfahrung`,description:`Positionen für CV und Matching.`,action:(0,U.jsxs)(G,{onClick:()=>k({open:!0,draft:Ii}),children:[(0,U.jsx)(Je,{size:15}),`Position`]})}),(0,U.jsx)(`div`,{className:`grid gap-4`,children:d.positions?.length?d.positions.map(e=>{let t=!!re[e.id],n=e.projects||[],r=n.length,i=`${r} ${r===1?`Projekt`:`Projekte`}`;return(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsxs)(`div`,{className:`flex w-full items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1 cursor-pointer space-y-2`,role:`button`,tabIndex:0,onClick:()=>Ae(e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&Ae(e.id)},children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(q,{tone:`sky`,children:e.company||`Unbekannt`}),(0,U.jsx)(q,{tone:r?`success`:`neutral`,children:i})]}),(0,U.jsx)(`h3`,{className:`text-lg font-semibold text-ink`,children:e.title||`Ohne Titel`}),(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:Wi(e)})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-2`,children:[(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:()=>k({open:!0,draft:{...e,start_date:kn(e.start_date),end_date:kn(e.end_date)}}),children:`Bearbeiten`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>Ae(e.id),className:`p-1`,children:(0,U.jsx)(L,{size:18,className:W(`text-muted transition-transform duration-200`,t&&`rotate-180`)})})]})]}),t?(0,U.jsxs)(`div`,{className:`mt-4 grid gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-2`,children:[e.employment_type?(0,U.jsx)(q,{tone:`neutral`,children:Ui[e.employment_type]||e.employment_type}):null,e.industry?(0,U.jsx)(q,{tone:`neutral`,children:e.industry}):null]}),e.description?(0,U.jsx)(`p`,{className:`text-sm text-muted/80`,children:e.description}):null,e.tasks?(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Aufgaben`}),(0,U.jsx)(`p`,{className:`mt-1 text-sm text-muted/80`,children:e.tasks})]}):null,e.achievements?(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Erfolge`}),(0,U.jsx)(`p`,{className:`mt-1 text-sm text-teal/80`,children:e.achievements})]}):null,e.technologies?(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Technologien`}),(0,U.jsx)(`p`,{className:`mt-1 text-sm text-muted/80`,children:e.technologies})]}):null,(0,U.jsxs)(`div`,{className:`rounded-xl border border-white/[0.04] bg-white/[0.01] p-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:[`Projekte (`,n.length,`)`]}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>M({open:!0,positionId:e.id,draft:Li}),children:[(0,U.jsx)(Je,{size:13}),`Projekt`]})]}),n.length?(0,U.jsx)(`div`,{className:`mt-3 grid gap-2`,children:n.map((t,n)=>(0,U.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] bg-white/[0.015] p-3`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:t.name||`Projekt`}),t.role?(0,U.jsx)(q,{tone:`sky`,children:t.role}):null]}),t.start_date||t.end_date||t.duration?(0,U.jsxs)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:[t.start_date||t.end_date?`${t.start_date||`?`} – ${t.end_date||`heute`}`:``,t.duration&&(t.start_date||t.end_date)?` (${t.duration})`:t.duration||``]}):null,t.description?(0,U.jsx)(`p`,{className:`mt-2 text-[12px] text-muted/70`,children:t.description}):null,(0,U.jsxs)(`div`,{className:`mt-2 grid gap-1 text-[12px]`,children:[t.situation?(0,U.jsxs)(`p`,{className:`text-muted/70`,children:[(0,U.jsx)(`strong`,{children:`S:`}),` `,t.situation]}):null,t.task?(0,U.jsxs)(`p`,{className:`text-muted/70`,children:[(0,U.jsx)(`strong`,{children:`T:`}),` `,t.task]}):null,t.action?(0,U.jsxs)(`p`,{className:`text-muted/70`,children:[(0,U.jsx)(`strong`,{children:`A:`}),` `,t.action]}):null,t.result?(0,U.jsxs)(`p`,{className:`text-teal/80`,children:[(0,U.jsx)(`strong`,{children:`R:`}),` `,t.result]}):null]}),t.technologies?(0,U.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/50`,children:[`Tech: `,t.technologies]}):null,(0,U.jsxs)(`div`,{className:`mt-2 flex gap-3 border-t border-white/[0.04] pt-2`,children:[(0,U.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-ink transition-colors`,onClick:()=>M({open:!0,positionId:e.id,draft:{...t}}),children:`Bearbeiten`}),(0,U.jsx)(`button`,{type:`button`,className:`text-[12px] text-muted/50 hover:text-coral transition-colors`,onClick:()=>Me(e.id,t.id),children:(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1`,children:[(0,U.jsx)(ot,{size:11}),` Löschen`]})})]})]},t.id||`${e.id}-${n}`))}):(0,U.jsx)(`p`,{className:`mt-2 text-[12px] text-muted/50`,children:`Noch keine Projekte erfasst.`})]})]}):null]},e.id)}):(0,U.jsx)(er,{title:`Noch keine Positionen`,description:`Berufserfahrung ist ein Kernbaustein des Profils.`,action:(0,U.jsxs)(G,{onClick:()=>k({open:!0,draft:Ii}),children:[(0,U.jsx)(ee,{size:15}),`Position erfassen`]})})})]}),(0,U.jsxs)(K,{id:`profil-ausbildung`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Ausbildung`,description:`Studium und Ausbildung.`,action:(0,U.jsxs)(G,{onClick:()=>P({open:!0,draft:Ri}),children:[(0,U.jsx)(Je,{size:15}),`Ausbildung`]})}),(0,U.jsx)(`div`,{className:`grid gap-4`,children:d.education?.length?d.education.map(e=>(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`h3`,{className:`text-lg font-semibold text-ink`,children:e.institution}),(0,U.jsx)(`p`,{className:`mt-2 text-sm text-muted`,children:[e.degree,e.field_of_study].filter(Boolean).join(` - `)}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>P({open:!0,draft:{...e,start_date:kn(e.start_date),end_date:kn(e.end_date)}}),children:`Bearbeiten`}),(0,U.jsxs)(G,{variant:`ghost`,onClick:()=>{window.confirm(`Ausbildung "${e.institution}" wirklich loeschen?`)&&Ie(()=>kt(`/api/education/${e.id}`),`Ausbildung gelöscht`,{onSuccess:()=>(0,w.startTransition)(()=>{f(t=>t&&{...t,education:(t.education||[]).filter(t=>t.id!==e.id)})})})},children:[(0,U.jsx)(ot,{size:15}),`Löschen`]})]})]},e.id)):(0,U.jsx)(er,{title:`Noch keine Ausbildung`,description:`Füge Ausbildung oder Studium hinzu.`,action:(0,U.jsxs)(G,{onClick:()=>P({open:!0,draft:Ri}),children:[(0,U.jsx)(B,{size:15}),`Ausbildung erfassen`]})})})]}),(0,U.jsxs)(K,{id:`profil-skills`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Skills`,description:`Kompetenzen für Matching und Fit-Analyse.`,action:(0,U.jsxs)(G,{onClick:()=>I({open:!0,draft:Qi(zi)}),children:[(0,U.jsx)(Je,{size:15}),`Skill`]})}),(d.skills?.length||0)>6&&(0,U.jsxs)(`div`,{className:`mb-4 flex items-center gap-2`,children:[(0,U.jsx)(`input`,{type:`text`,value:te,onChange:e=>ne(e.target.value),placeholder:`Skill suchen (Name oder Kategorie)...`,className:`w-full max-w-sm rounded-lg border border-white/5 bg-white/[0.03] px-3 py-1.5 text-sm text-ink placeholder:text-muted/40 focus:border-sky/40 focus:outline-none`,"aria-label":`Skill-Filter`}),te&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>ne(``),className:`text-[11px] text-muted/60 hover:text-ink underline`,children:`zuruecksetzen`})]}),d.skills?.length?(()=>{let e=te.trim().toLowerCase(),t=e?d.skills.filter(t=>(t.name||``).toLowerCase().includes(e)||(t.category||``).toLowerCase().includes(e)||(Bi[Hi(t.category)]||``).toLowerCase().includes(e)):d.skills;if(t.length===0)return(0,U.jsxs)(`p`,{className:`py-6 text-center text-sm text-muted/40`,children:[`Kein Skill matcht „`,te,`". `,(0,U.jsx)(`button`,{onClick:()=>ne(``),className:`text-sky underline`,children:`Filter zuruecksetzen`})]});let n={};for(let e of t){let t=Hi(e.category);n[t]||(n[t]=[]),n[t].push(e)}return(0,U.jsx)(`div`,{className:`grid gap-5`,children:Object.entries(n).map(([e,t])=>(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`mb-2.5 text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:Bi[e]||e}),(0,U.jsx)(`div`,{className:`grid gap-2 md:grid-cols-2 xl:grid-cols-3`,children:t.map(e=>{let t=Zi(e.start_year),n=Zi(e.end_year),r=t?Math.max(0,(n??Te)-t):Zi(e.years_experience)??null,a=Zi(e.level)??0,s=Zi(e.level_current),c=s===null?a:s,l=n!==null,u;return u=t&&n?`${t}–${n}`:t?`seit ${t}`:r===null?null:`seit ${Math.max(1900,Te-r)}`,(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none ${l?`opacity-80`:``}`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(q,{tone:`sky`,children:Bi[Hi(e.category)]}),(0,U.jsx)(`div`,{className:`flex items-center gap-1`,title:s===null?`Level ${a}/5`:`Aktuell ${s}/5 (Spitze ${a}/5)`,children:[1,2,3,4,5].map(t=>(0,U.jsx)(`button`,{type:`button`,className:`h-2.5 w-2.5 rounded-full transition-colors ${t<=c?l?c<=2?`bg-amber/70`:`bg-amber`:c<=2?`bg-amber`:c<=3?`bg-sky`:`bg-teal`:`bg-white/[0.08] hover:bg-white/[0.2]`}`,onClick:async()=>{let n=t===a?t-1:t;try{await Ot(`/api/skill/${e.id}`,{...e,level:n}),f(t=>({...t,skills:t.skills.map(t=>t.id===e.id?{...t,level:n}:t)})),await i({quiet:!0})}catch(e){o(`Level konnte nicht geändert werden: ${e.message}`,`danger`)}}},t))})]}),(0,U.jsx)(`h3`,{className:`mt-2 text-sm font-semibold text-ink`,children:e.name}),(0,U.jsxs)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:[r!==null&&u?`${r} Jahre Erfahrung · ${u}`:u||`Ohne Erfahrungsjahre`,l&&s!==null&&sI({open:!0,draft:Qi(e)}),children:`Bearbeiten`}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>{window.confirm(`Skill "${e.name}" wirklich löschen?`)&&Ie(()=>kt(`/api/skill/${e.id}`),`Skill gelöscht`,{onSuccess:()=>(0,w.startTransition)(()=>{f(t=>t&&{...t,skills:(t.skills||[]).filter(t=>t.id!==e.id)})})})},children:[(0,U.jsx)(ot,{size:13}),`Löschen`]})]})]},e.id)})})]},e))})})():(0,U.jsx)(er,{title:`Noch keine Skills`,description:`Lege Fach-, Tool- oder Soft-Skills an.`,action:(0,U.jsxs)(G,{onClick:()=>I({open:!0,draft:Qi(zi)}),children:[(0,U.jsx)(vt,{size:15}),`Skill erfassen`]})})]})]}),(0,U.jsxs)(K,{id:`profil-dokumente`,className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Dokumente`,description:`Upload und Schnell-Import. Suche, Filter und Verwaltung findest du im Docs-Tab.`,action:(0,U.jsxs)(`div`,{className:`flex gap-2`,children:[(0,U.jsxs)(G,{type:`button`,variant:`secondary`,onClick:()=>s(`/profil_erweiterung`),children:[(0,U.jsx)(he,{size:15}),`Profil-Prompt kopieren`]}),(0,U.jsxs)(G,{type:`button`,onClick:()=>a(`dokumente`),children:[(0,U.jsx)(Ce,{size:15}),`Docs-Tab oeffnen`]})]})}),(0,U.jsxs)(`div`,{className:`grid gap-4 xl:grid-cols-[minmax(0,1.2fr)_minmax(18rem,0.8fr)]`,children:[(0,U.jsx)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(J,{label:`Dokumenttyp`,children:(0,U.jsxs)(Qn,{value:de.doc_type,onChange:e=>fe(t=>({...t,doc_type:e.target.value})),children:[(0,U.jsx)(`option`,{value:`sonstiges`,children:`Automatisch / Sonstiges`}),(0,U.jsx)(`option`,{value:`lebenslauf`,children:`Lebenslauf`}),(0,U.jsx)(`option`,{value:`anschreiben`,children:`Anschreiben`}),(0,U.jsx)(`option`,{value:`zeugnis`,children:`Zeugnis`}),(0,U.jsx)(`option`,{value:`zertifikat`,children:`Zertifikat`})]})}),(0,U.jsxs)(`div`,{className:W(`rounded-xl border-2 border-dashed border-white/15 bg-white/[0.02] p-5 transition`,pe&&`border-sky/60 bg-sky/10 ring-2 ring-sky/35`),onDragOver:e=>{e.preventDefault(),e.stopPropagation(),me(!0)},onDragEnter:e=>{e.preventDefault(),e.stopPropagation(),me(!0)},onDragLeave:e=>{e.preventDefault(),e.stopPropagation(),!e.currentTarget.contains(e.relatedTarget)&&me(!1)},onDrop:async e=>{e.preventDefault(),e.stopPropagation(),me(!1),await Pe(await fn(e.dataTransfer))},children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Dateien oder Ordner hier hineinziehen`}),(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted`,children:`Mehrfach-Upload bleibt aktiv.`}),(0,U.jsxs)(`div`,{className:`mt-4 flex flex-wrap gap-2`,children:[(0,U.jsxs)(G,{type:`button`,variant:`secondary`,onClick:()=>ye.current?.click(),children:[(0,U.jsx)(dt,{size:15}),`Dateien auswaehlen`]}),(0,U.jsx)(G,{type:`button`,variant:`ghost`,onClick:()=>Ee.current?.click(),children:`Ordner auswaehlen`})]}),(0,U.jsx)(`input`,{ref:ye,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:async e=>{await Pe(e.target.files),e.target.value=``}}),(0,U.jsx)(`input`,{ref:Ee,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:async e=>{await Pe(e.target.files),e.target.value=``}})]})]})}),(0,U.jsxs)(K,{className:`glass-card-soft rounded-xl shadow-none`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-muted/50`,children:`Dokumentenstatus`}),(0,U.jsxs)(`div`,{className:`mt-3 grid grid-cols-2 gap-2`,children:[(0,U.jsxs)(`div`,{className:`rounded-lg border border-white/[0.05] bg-white/[0.02] px-3 py-2.5`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:`Gesamt`}),(0,U.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-ink`,children:Ve.length})]}),(0,U.jsxs)(`div`,{className:`rounded-lg border border-teal/15 bg-teal/[0.06] px-3 py-2.5`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-teal/70`,children:`Bearbeitet`}),(0,U.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-teal`,children:We})]}),(0,U.jsxs)(`div`,{className:`rounded-lg border border-amber/15 bg-amber/[0.06] px-3 py-2.5`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-amber/70`,children:`Offen`}),(0,U.jsx)(`p`,{className:`mt-1 text-lg font-semibold text-amber`,children:Ge})]}),(0,U.jsxs)(`div`,{className:`rounded-lg border border-white/[0.05] bg-white/[0.02] px-3 py-2.5`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:`Letzte Aktivitaet`}),(0,U.jsx)(`p`,{className:`mt-1 text-[12px] font-medium text-ink/90`,children:Ue})]})]}),(0,U.jsxs)(`div`,{className:`mt-4 rounded-lg border border-white/[0.05] bg-white/[0.02] p-3`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/50`,children:`Dokumenttypen`}),(0,U.jsx)(`div`,{className:`mt-2 flex flex-wrap gap-2`,children:qe.length?qe.map(([e,t])=>(0,U.jsxs)(q,{tone:`neutral`,children:[e,` (`,t,`)`]},e)):(0,U.jsx)(`span`,{className:`text-[12px] text-muted/60`,children:`Noch keine Dokumente vorhanden.`})})]}),(0,U.jsxs)(G,{type:`button`,className:`mt-4 w-full`,onClick:()=>a(`dokumente`),children:[(0,U.jsx)(Ce,{size:15}),`Alle Dokumente anzeigen (`,Ve.length,`)`]})]})]})]}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Extraktions-Verlauf (${C.length})`,description:`Typ, Status und erkannte Bereiche pro Lauf.`}),C.length?(0,U.jsx)(`div`,{className:`overflow-hidden rounded-xl border border-white/[0.05]`,children:C.slice(0,10).map((e,t)=>{let n=ea[e.status]||{label:e.status||`Unbekannt`,tone:`neutral`},r=oe===e.id,i=ta(e.extracted_fields),a=Array.isArray(e.conflicts)?e.conflicts.length:0,o=Object.keys(e.extracted_fields||{}),s=Object.entries(e.applied_fields||{}).map(([e,t])=>Array.isArray(t)?`${e}: ${t.length}`:t&&typeof t==`object`?`${e}: ${Object.keys(t).length}`:`${e}: ${t??0}`).join(` | `),c=[o.length?o.join(`, `):`${i} Bereiche extrahiert`];return s&&c.push(`→ ${s}`),a&&c.push(`${a} Konflikte`),(0,U.jsxs)(`div`,{className:W(`px-4 py-3 transition-colors`,r?`bg-white/[0.03]`:`hover:bg-white/[0.02]`,tz(t=>t===e.id?``:e.id),onKeyDown:t=>{(t.key===`Enter`||t.key===` `)&&(t.preventDefault(),z(t=>t===e.id?``:e.id))},children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`p`,{className:`text-[15px] font-semibold text-ink`,children:e.extraction_type||e.filename||`auto`}),(0,U.jsx)(`p`,{className:`mt-1 text-[12px] text-muted/50`,children:Cn(e.created_at)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(q,{tone:n.tone,children:n.label}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:t=>{t.stopPropagation(),window.confirm(`Diesen Historieneintrag wirklich löschen?`)&&Ie(()=>kt(`/api/extraction-history/${e.id}`),`Historieneintrag gelöscht`,{localRefresh:!0,syncChrome:!0})},children:[(0,U.jsx)(ot,{size:14}),`Löschen`]})]}),(0,U.jsx)(L,{size:20,className:W(`shrink-0 text-muted/60 transition-transform duration-200`,r&&`rotate-180`)})]}),(0,U.jsx)(`p`,{className:`mt-2 text-[13px] text-muted/70`,children:c.join(`, `)})]}),(0,U.jsx)(`div`,{className:W(`grid transition-all duration-300 ease-out`,r?`mt-3 grid-rows-[1fr] opacity-100`:`mt-0 grid-rows-[0fr] opacity-0`),children:(0,U.jsx)(`div`,{className:`overflow-hidden`,children:(0,U.jsxs)(`div`,{className:`space-y-3 rounded-xl border border-white/[0.05] bg-white/[0.02] p-3`,children:[o.map(t=>{let n=e.extracted_fields[t],r=e.applied_fields?.[t];return(0,U.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] bg-white/[0.02] p-2.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-teal/80`,children:t}),r!=null&&(0,U.jsx)(q,{tone:`success`,children:typeof r==`number`?`${r} übernommen`:`übernommen`})]}),(0,U.jsx)(`div`,{className:`mt-1.5 text-[12px] text-ink/80`,children:Array.isArray(n)?(0,U.jsxs)(`div`,{className:`flex flex-wrap gap-1.5`,children:[n.slice(0,12).map((e,t)=>(0,U.jsx)(`span`,{className:`inline-block rounded-md border border-white/[0.06] bg-white/[0.04] px-2 py-0.5 text-[11px]`,children:typeof e==`string`?e:e?.name||e?.title||e?.institution||JSON.stringify(e).slice(0,40)},t)),n.length>12&&(0,U.jsxs)(`span`,{className:`text-[11px] text-muted/50`,children:[`+`,n.length-12,` weitere`]})]}):n&&typeof n==`object`?(0,U.jsx)(`div`,{className:`grid gap-1 sm:grid-cols-2`,children:Object.entries(n).map(([e,t])=>(0,U.jsxs)(`div`,{className:`flex gap-1.5`,children:[(0,U.jsxs)(`span`,{className:`shrink-0 text-[11px] text-muted/50`,children:[e,`:`]}),(0,U.jsx)(`span`,{className:`text-[11px] text-ink/80 truncate`,children:String(t??`–`)})]},e))}):(0,U.jsx)(`p`,{className:`text-[11px] text-ink/70`,children:String(n??`–`)})})]},t)}),a>0&&(0,U.jsxs)(`div`,{className:`rounded-lg border border-coral/15 bg-coral/[0.04] p-2.5`,children:[(0,U.jsxs)(`p`,{className:`text-[11px] font-semibold text-coral/80`,children:[`Konflikte (`,a,`)`]}),(0,U.jsx)(`p`,{className:`mt-1 text-[12px] text-ink/70`,children:(e.conflicts||[]).slice(0,5).map(e=>typeof e==`string`?e:e?.field||e?.key||`Konflikt`).join(`, `)})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3 text-[11px] text-muted/40`,children:[(0,U.jsxs)(`span`,{children:[`ID: `,e.id||`n/a`]}),(0,U.jsxs)(`span`,{children:[`Dokument: `,e.document_id||`n/a`]}),(0,U.jsxs)(`span`,{children:[`Abgeschlossen: `,e.completed_at?Cn(e.completed_at):`Noch offen`]})]})]})})})]},e.id)})}):(0,U.jsx)(er,{title:`Keine Extraktionshistorie`,description:`Sobald Dokumente analysiert werden, erscheinen die Einträge hier.`})]})]})}),(0,U.jsxs)(nr,{open:O.open,title:O.draft.id?`Position bearbeiten`:`Neue Position`,onClose:()=>k({open:!1,draft:Ii}),footer:(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[O.draft.id?(0,U.jsxs)(G,{variant:`danger`,onClick:()=>{window.confirm(`Position wirklich loeschen? Alle zugehoerigen Projekte werden ebenfalls geloescht.`)&&Ie(()=>kt(`/api/position/${O.draft.id}`),`Position geloescht`,{onSuccess:()=>{k({open:!1,draft:Ii}),(0,w.startTransition)(()=>{f(e=>e&&{...e,positions:(e.positions||[]).filter(e=>e.id!==O.draft.id)})})}})},children:[(0,U.jsx)(ot,{size:15}),` Loeschen`]}):(0,U.jsx)(`span`,{}),(0,U.jsxs)(`div`,{className:`flex gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>k({open:!1,draft:Ii}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:()=>ke(`position`,O),children:`Speichern`})]})]}),children:[(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,U.jsx)(J,{label:`Firma`,children:(0,U.jsx)(Y,{value:O.draft.company||``,onChange:e=>k(t=>({...t,draft:{...t.draft,company:e.target.value}}))})}),(0,U.jsx)(J,{label:`Titel`,children:(0,U.jsx)(Y,{value:O.draft.title||``,onChange:e=>k(t=>({...t,draft:{...t.draft,title:e.target.value}}))})}),(0,U.jsx)(J,{label:`Standort`,children:(0,U.jsx)(Y,{value:O.draft.location||``,onChange:e=>k(t=>({...t,draft:{...t.draft,location:e.target.value}}))})}),(0,U.jsx)(J,{label:`Branche`,children:(0,U.jsx)(Y,{value:O.draft.industry||``,onChange:e=>k(t=>({...t,draft:{...t.draft,industry:e.target.value}}))})}),(0,U.jsx)(J,{label:`Von`,children:(0,U.jsx)(Y,{type:`month`,value:O.draft.start_date||``,onChange:e=>k(t=>({...t,draft:{...t.draft,start_date:e.target.value}}))})}),(0,U.jsx)(J,{label:`Bis`,children:(0,U.jsx)(Y,{type:`month`,value:O.draft.end_date||``,disabled:!!O.draft.is_current,onChange:e=>k(t=>({...t,draft:{...t.draft,end_date:e.target.value}}))})}),(0,U.jsx)(J,{label:`Anstellungsart`,children:(0,U.jsxs)(Qn,{value:O.draft.employment_type||`festanstellung`,onChange:e=>k(t=>({...t,draft:{...t.draft,employment_type:e.target.value}})),children:[(0,U.jsx)(`option`,{value:`festanstellung`,children:`Festanstellung`}),(0,U.jsx)(`option`,{value:`freelance`,children:`Freelance`}),(0,U.jsx)(`option`,{value:`teilzeit`,children:`Teilzeit`}),(0,U.jsx)(`option`,{value:`praktikum`,children:`Praktikum`})]})}),(0,U.jsxs)(`label`,{className:`mt-8 inline-flex items-center gap-2 text-sm text-ink`,children:[(0,U.jsx)($n,{checked:!!O.draft.is_current,onChange:e=>k(t=>({...t,draft:{...t.draft,is_current:e.target.checked,end_date:e.target.checked?``:t.draft.end_date}}))}),`Aktuelle Position`]})]}),(0,U.jsxs)(`div`,{className:`mt-4 grid gap-4`,children:[(0,U.jsx)(J,{label:`Beschreibung`,children:(0,U.jsx)(Xn,{rows:2,value:O.draft.description||``,onChange:e=>k(t=>({...t,draft:{...t.draft,description:e.target.value}}))})}),(0,U.jsx)(J,{label:`Aufgaben`,children:(0,U.jsx)(Xn,{rows:3,value:O.draft.tasks||``,onChange:e=>k(t=>({...t,draft:{...t.draft,tasks:e.target.value}}))})}),(0,U.jsx)(J,{label:`Erfolge / Achievements`,children:(0,U.jsx)(Xn,{rows:2,value:O.draft.achievements||``,onChange:e=>k(t=>({...t,draft:{...t.draft,achievements:e.target.value}}))})}),(0,U.jsx)(J,{label:`Technologien`,children:(0,U.jsx)(Y,{value:O.draft.technologies||``,onChange:e=>k(t=>({...t,draft:{...t.draft,technologies:e.target.value}}))})})]})]}),(0,U.jsx)(nr,{open:A.open,title:A.draft?.id?`Projekt bearbeiten (STAR-Methode)`:`Projekt hinzufügen (STAR-Methode)`,onClose:()=>M({open:!1,positionId:``,draft:Li}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>M({open:!1,positionId:``,draft:Li}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:je,children:`Speichern`})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,U.jsx)(J,{label:`Projektname`,children:(0,U.jsx)(Y,{value:A.draft.name||``,onChange:e=>M(t=>({...t,draft:{...t.draft,name:e.target.value}}))})}),(0,U.jsx)(J,{label:`Rolle`,children:(0,U.jsx)(Y,{value:A.draft.role||``,onChange:e=>M(t=>({...t,draft:{...t.draft,role:e.target.value}}))})}),(0,U.jsx)(J,{label:`Dauer`,children:(0,U.jsx)(Y,{value:A.draft.duration||``,onChange:e=>M(t=>({...t,draft:{...t.draft,duration:e.target.value}}))})}),(0,U.jsx)(J,{label:`Technologien`,children:(0,U.jsx)(Y,{value:A.draft.technologies||``,onChange:e=>M(t=>({...t,draft:{...t.draft,technologies:e.target.value}}))})}),(0,U.jsx)(J,{label:`Projektbeginn`,children:(0,U.jsx)(Y,{type:`month`,value:A.draft.start_date||``,onChange:e=>M(t=>({...t,draft:{...t.draft,start_date:e.target.value}}))})}),(0,U.jsx)(J,{label:`Projektende`,children:(0,U.jsx)(Y,{type:`month`,value:A.draft.end_date||``,onChange:e=>M(t=>({...t,draft:{...t.draft,end_date:e.target.value}}))})})]}),(0,U.jsx)(J,{label:`Beschreibung`,children:(0,U.jsx)(Xn,{rows:2,value:A.draft.description||``,onChange:e=>M(t=>({...t,draft:{...t.draft,description:e.target.value}}))})}),(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.15em] text-teal/70`,children:`STAR-Methode`}),(0,U.jsx)(J,{label:`S - Situation`,children:(0,U.jsx)(Xn,{rows:2,value:A.draft.situation||``,onChange:e=>M(t=>({...t,draft:{...t.draft,situation:e.target.value}}))})}),(0,U.jsx)(J,{label:`T - Task / Aufgabe`,children:(0,U.jsx)(Xn,{rows:2,value:A.draft.task||``,onChange:e=>M(t=>({...t,draft:{...t.draft,task:e.target.value}}))})}),(0,U.jsx)(J,{label:`A - Action / Vorgehen`,children:(0,U.jsx)(Xn,{rows:2,value:A.draft.action||``,onChange:e=>M(t=>({...t,draft:{...t.draft,action:e.target.value}}))})}),(0,U.jsx)(J,{label:`R - Result / Ergebnis`,children:(0,U.jsx)(Xn,{rows:2,value:A.draft.result||``,onChange:e=>M(t=>({...t,draft:{...t.draft,result:e.target.value}}))})})]})}),(0,U.jsx)(nr,{open:N.open,title:N.draft.id?`Ausbildung bearbeiten`:`Ausbildung hinzufügen`,onClose:()=>P({open:!1,draft:Ri}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>P({open:!1,draft:Ri}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:()=>ke(`education`,N),children:`Speichern`})]}),children:(0,U.jsx)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[[`institution`,`Institution`],[`degree`,`Abschluss`],[`field_of_study`,`Fachrichtung`],[`start_date`,`Startdatum`],[`end_date`,`Enddatum`]].map(([e,t])=>(0,U.jsx)(J,{label:t,children:(0,U.jsx)(Y,{value:N.draft[e]||``,onChange:t=>P(n=>({...n,draft:{...n.draft,[e]:t.target.value}}))})},e))})}),(0,U.jsx)(nr,{open:F.open,title:F.draft.id?`Skill bearbeiten`:`Skill hinzufügen`,onClose:()=>I({open:!1,draft:zi}),footer:(()=>{let e=d?.skills||[],t=F.draft.id?e.findIndex(e=>e.id===F.draft.id):-1,n=t>0,r=t>=0&&t1?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(G,{variant:`ghost`,disabled:!n,onClick:()=>I({open:!0,draft:Qi(e[t-1])}),children:(0,U.jsx)(R,{size:16})}),(0,U.jsxs)(`span`,{className:`flex items-center text-xs text-muted/60 tabular-nums`,children:[t+1,`/`,e.length]}),(0,U.jsx)(G,{variant:`ghost`,disabled:!r,onClick:()=>I({open:!0,draft:Qi(e[t+1])}),children:(0,U.jsx)(ae,{size:16})})]}):null}),(0,U.jsxs)(`div`,{className:`flex gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>I({open:!1,draft:zi}),children:`Abbrechen`}),(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ke(`skill`,F,{keepOpen:!0}),children:`Speichern & weiter`}),(0,U.jsx)(G,{onClick:()=>ke(`skill`,F),children:`Speichern`})]})]})})(),children:(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2`,children:[(0,U.jsx)(J,{label:`Name`,children:(0,U.jsx)(Y,{value:F.draft.name,onChange:e=>I(t=>({...t,draft:{...t.draft,name:e.target.value}}))})}),(0,U.jsx)(J,{label:`Kategorie`,children:(0,U.jsxs)(Qn,{value:F.draft.category,onChange:e=>I(t=>({...t,draft:{...t.draft,category:e.target.value}})),children:[(0,U.jsx)(`option`,{value:`fachlich`,children:`Fachlich`}),(0,U.jsx)(`option`,{value:`tool`,children:`Tool`}),(0,U.jsx)(`option`,{value:`methodisch`,children:`Methodisch`}),(0,U.jsx)(`option`,{value:`soft_skill`,children:`Soft Skill`}),(0,U.jsx)(`option`,{value:`sprache`,children:`Sprache`})]})}),(0,U.jsx)(J,{label:`Spitzen-Niveau (zum Zeitpunkt der Erfahrung)`,children:(()=>{let e=Math.max(1,Math.min(5,Number(F.draft.level)||3)),t=e=>I(t=>({...t,draft:{...t.draft,level:e}}));return(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`flex gap-1.5`,children:[1,2,3,4,5].map(n=>(0,U.jsx)(`button`,{type:`button`,"aria-label":`Level ${n} von 5`,onClick:()=>t(n),className:W(`h-5 w-5 rounded-full border transition-all`,n<=e?`bg-sky border-sky`:`bg-transparent border-muted/30 hover:border-muted/60`)},n))}),(0,U.jsx)(`span`,{className:`text-xs text-muted/60`,children:e===1?`Grundkenntnisse`:e===2?`Erweiterte Grundkenntnisse`:e===3?`Solide Praxiserfahrung`:e===4?`Fortgeschritten`:`Experte`})]})})()}),(0,U.jsx)(J,{label:`Jahre Erfahrung`,children:(0,U.jsx)(Y,{type:`number`,min:`0`,value:F.draft.years_experience,onChange:e=>{let t=Zi(e.target.value),n=t===null?``:Math.min(Te,Math.max(1900,Te-Math.max(0,t)));I(t=>({...t,draft:{...t.draft,years_experience:e.target.value,since_year:n}}))}})}),(0,U.jsx)(J,{label:`Von (Jahr)`,children:(0,U.jsx)(Y,{type:`number`,min:`1900`,max:String(Te),value:F.draft.since_year,onChange:e=>{let t=Zi(e.target.value),n=t===null?``:Math.max(0,Te-Math.min(Te,Math.max(1900,t)));I(r=>({...r,draft:{...r.draft,since_year:e.target.value,years_experience:F.draft.end_year?Math.max(0,Zi(F.draft.end_year)-t):n}}))}})}),(0,U.jsx)(J,{label:`Bis (Jahr) — leer = laufend`,children:(0,U.jsx)(Y,{type:`number`,min:`1900`,max:String(Te),placeholder:`(laufend)`,value:F.draft.end_year,onChange:e=>{I(t=>({...t,draft:{...t.draft,end_year:e.target.value}}))}})}),F.draft.end_year?(0,U.jsx)(J,{label:`Aktuell verfügbares Niveau`,children:(()=>{let e=Math.max(1,Math.min(5,Number(F.draft.level)||3)),t=F.draft.level_current,n=t===``||t==null,r=n?e:Math.max(1,Math.min(5,Number(t)||e)),i=e=>I(t=>({...t,draft:{...t.draft,level_current:e}}));return(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`flex gap-1.5`,children:[1,2,3,4,5].map(e=>(0,U.jsx)(`button`,{type:`button`,"aria-label":`Aktuelles Level ${e} von 5`,onClick:()=>i(e),className:W(`h-5 w-5 rounded-full border transition-all`,e<=r?n?`bg-sky/40 border-sky/40`:`bg-amber border-amber`:`bg-transparent border-muted/30 hover:border-muted/60`)},e))}),(0,U.jsx)(`span`,{className:`text-xs text-muted/60`,children:n?`(= Spitzen-Niveau ${e})`:r===1?`Grundkenntnisse`:r===2?`Erweiterte Grundkenntnisse`:r===3?`Solide Praxiserfahrung`:r===4?`Fortgeschritten`:`Experte`}),!n&&(0,U.jsx)(`button`,{type:`button`,className:`text-[11px] text-muted/50 hover:text-muted underline`,onClick:()=>i(``),children:`zuruecksetzen`})]}),(0,U.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Wenn der Skill ruht: das aktuell noch abrufbare Niveau (Prinzip- Verstaendnis bleibt, Tiefe verfaellt). Leer = identisch mit Spitzen-Niveau.`})]})})()}):null,F.draft.end_year?(0,U.jsx)(`div`,{className:`md:col-span-2`,children:(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-md bg-amber/10 border border-amber/30 px-2 py-1 text-xs text-amber`,children:[`Skill ruht seit `,F.draft.end_year,F.draft.since_year?` (aktiv ${F.draft.since_year}–${F.draft.end_year})`:``]})}):F.draft.since_year?(0,U.jsx)(`div`,{className:`md:col-span-2`,children:(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-md bg-success/10 border border-success/30 px-2 py-1 text-xs text-success`,children:[`Aktiv seit `,F.draft.since_year]})}):null]})}),(0,U.jsx)(nr,{open:se,title:`Ordner importieren`,description:`Gib einen lokalen Ordnerpfad an, um bestehende Unterlagen zu importieren.`,onClose:()=>ce(!1),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ce(!1),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:Fe,children:`Import starten`})]}),children:(0,U.jsx)(J,{label:`Ordnerpfad`,children:(0,U.jsx)(Y,{value:le,onChange:e=>ue(e.target.value),placeholder:`C:\\\\Users\\\\...\\\\Bewerbungen`})})}),(0,U.jsx)(nr,{open:ge.open,title:`Extraktion prüfen${ge.document?.filename?`: ${ge.document.filename}`:``}`,description:`Hier bearbeitest du bereits erkannte Felder, bevor sie ins Profil übernommen werden. Für Claude nutze den Analyse-Prompt.`,onClose:()=>ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),footer:(0,U.jsxs)(`div`,{className:`flex w-full flex-wrap items-center justify-between gap-3`,children:[ge.document?(0,U.jsxs)(G,{variant:`secondary`,onClick:()=>Le(ge.document),children:[(0,U.jsx)(nt,{size:15}),`Analyse-Prompt kopieren`]}):(0,U.jsx)(`span`,{}),(0,U.jsx)(G,{variant:`ghost`,onClick:()=>ve({open:!1,loading:!1,saving:!1,document:null,extraction:null,draftText:`{}`}),children:`Schließen`}),(0,U.jsx)(G,{onClick:Be,disabled:ge.loading||ge.saving||!ge.extraction,children:ge.saving?`Speichere...`:`Korrekturen ins Profil übernehmen`})]}),children:ge.loading?(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Extraktion wird geladen...`}):ge.extraction?(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-3`,children:[(0,U.jsx)(J,{label:`Status`,children:(0,U.jsx)(Y,{value:ge.extraction.status||``,readOnly:!0})}),(0,U.jsx)(J,{label:`Typ`,children:(0,U.jsx)(Y,{value:ge.extraction.extraction_type||``,readOnly:!0})}),(0,U.jsx)(J,{label:`Zeitpunkt`,children:(0,U.jsx)(Y,{value:Cn(ge.extraction.created_at),readOnly:!0})})]}),(0,U.jsx)(J,{label:`Extrahierte Felder (JSON)`,children:(0,U.jsx)(Xn,{rows:16,value:ge.draftText,onChange:e=>ve(t=>({...t,draftText:e.target.value}))})}),(0,U.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Unterstützte Korrekturen für die direkte Profil-Übernahme: `,(0,U.jsx)(`code`,{children:`persoenliche_daten`}),` und `,(0,U.jsx)(`code`,{children:`skills`}),`.`]})]}):(0,U.jsx)(`p`,{className:`text-sm text-muted`,children:`Für dieses Dokument liegt noch keine interne Extraktion vor. Nutze den Analyse-Prompt, wenn Claude genau diese Datei auswerten soll.`})})]})}function ra(){let{themeMode:e,themeCustom:t,setThemeMode:n,setThemeColor:r,resetThemeMode:i,resetAllTheme:a,defaultPalette:o,themePreset:s,setThemePreset:c,themePresets:l,pushToast:u}=jt(),[d,f]=(0,w.useState)(null),p=[{id:`system`,label:`System`,Icon:ze,hint:`Folge OS-Einstellung`},{id:`light`,label:`Hell`,Icon:it,hint:`Immer helles Theme`},{id:`dark`,label:`Dunkel`,Icon:Be,hint:`Immer dunkles Theme`}];function m(e){let n=l.find(e=>e.id===s),a=n&&n.id!==`default`&&n.palette[e]||o[e],c=t&&t[e]||{};return(0,U.jsxs)(`div`,{className:`mt-3 grid gap-3 rounded-xl border border-line/40 bg-shell/40 p-4`,children:[(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center justify-between gap-2`,children:[(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Aenderungen werden lokal in deinem Browser gespeichert und sofort angewendet.`}),(0,U.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>{i(e),u(`${e===`light`?`Helles`:`Dunkles`} Theme auf Standard zurueckgesetzt`,`success`)},children:[(0,U.jsx)(Xe,{size:14}),` Standard wiederherstellen`]})]}),(0,U.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-2`,children:Mt.map(({key:t,label:n,hint:i})=>{let o=c[t]||a[t],s=!!c[t];return(0,U.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-line/30 bg-panel/40 p-2.5`,children:[(0,U.jsx)(`input`,{type:`color`,value:Vt(o),onChange:n=>{let i=Ht(n.target.value);i&&r(e,t,i)},className:`h-9 w-10 cursor-pointer rounded-md border border-line/40 bg-transparent`,"aria-label":`Farbe ${n}`}),(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`p`,{className:`text-[13px] font-medium text-ink`,children:[n,s&&(0,U.jsx)(`span`,{className:`ml-2 text-[10px] uppercase tracking-wider text-amber`,children:`Angepasst`})]}),(0,U.jsx)(`p`,{className:`truncate text-[11px] text-muted`,children:i})]}),s&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>r(e,t,null),className:`rounded-md p-1 text-muted hover:text-ink`,title:`Auf Standard zuruecksetzen`,children:(0,U.jsx)(Xe,{size:13})})]},t)})})]})}return(0,U.jsxs)(K,{children:[(0,U.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-sky h-10 w-10`,children:(0,U.jsx)(He,{size:18})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Erscheinungsbild`}),(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Theme-Modus waehlen und Farben individuell anpassen.`})]})]}),(0,U.jsx)(`div`,{className:`mb-4 grid grid-cols-3 gap-2`,children:p.map(({id:t,label:r,Icon:i,hint:a})=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(t),className:`flex flex-col items-center gap-1.5 rounded-xl border p-3 transition-colors ${e===t?`border-sky/40 bg-sky/10 text-sky`:`border-line/40 bg-shell/40 text-muted hover:text-ink hover:border-line/60`}`,title:a,children:[(0,U.jsx)(i,{size:18}),(0,U.jsx)(`span`,{className:`text-sm font-medium`,children:r})]},t))}),(0,U.jsxs)(`div`,{className:`mb-4`,children:[(0,U.jsx)(`p`,{className:`mb-2 text-xs font-medium uppercase tracking-wide text-muted/70`,children:`Farb-Schema`}),(0,U.jsx)(`div`,{className:`grid grid-cols-2 gap-2 sm:grid-cols-4`,children:l.map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{c(e.id),u(`Farb-Schema: ${e.label}`,`success`,{duration:2200})},className:`rounded-xl border p-3 text-left transition-colors ${s===e.id?`border-teal/40 bg-teal/10 text-ink`:`border-line/40 bg-shell/40 text-muted hover:text-ink hover:border-line/60`}`,title:e.description,children:[(0,U.jsx)(`div`,{className:`mb-1.5 flex items-center gap-1.5`,children:[`teal`,`amber`,`coral`,`sky`].map(t=>(0,U.jsx)(`span`,{className:`h-3 w-3 rounded-full border border-white/10`,style:{background:`rgb(${e.palette.dark[t]})`}},t))}),(0,U.jsx)(`p`,{className:`text-sm font-medium leading-tight`,children:e.label}),(0,U.jsx)(`p`,{className:`mt-0.5 text-[11px] leading-snug text-muted/60`,children:e.description})]},e.id))}),(0,U.jsx)(`p`,{className:`mt-2 text-[11px] text-muted/60`,children:`Ein Schema setzt alle Farben fuer Hell + Dunkel auf einmal. Einzelne Tokens lassen sich darunter weiter individuell anpassen (Custom-Override pro Token).`})]}),(0,U.jsx)(`div`,{className:`grid gap-2`,children:[`light`,`dark`].map(e=>{let n=d===e,r=Object.keys(t&&t[e]||{}).length;return(0,U.jsxs)(`div`,{className:`rounded-xl border border-line/40`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>f(n?null:e),className:`flex w-full items-center justify-between gap-3 p-3 text-left hover:bg-white/[0.03]`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[e===`light`?(0,U.jsx)(it,{size:15}):(0,U.jsx)(Be,{size:15}),e===`light`?`Helles Theme anpassen`:`Dunkles Theme anpassen`,r>0&&(0,U.jsxs)(q,{tone:`amber`,children:[r,` angepasst`]})]}),(0,U.jsx)(`span`,{className:`text-xs text-muted`,children:n?`Schliessen`:`Oeffnen`})]}),n&&(0,U.jsx)(`div`,{className:`px-3 pb-3`,children:m(e)})]},e)})}),(0,U.jsx)(`div`,{className:`mt-4 flex justify-end`,children:(0,U.jsxs)(G,{variant:`ghost`,size:`sm`,onClick:()=>{a(),u(`Theme komplett auf Standard zurueckgesetzt`,`success`)},children:[(0,U.jsx)(Xe,{size:14}),` Alles zuruecksetzen`]})})]})}function ia({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1);async function s(){try{let[e,t]=await Promise.all([V(`/api/activity/stats`),V(`/api/settings/learning`)]);n(e),i(t)}catch(t){e(`Lern-System-Status laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{s()},[]);async function c(t){let n=t.target.checked;o(!0);try{await Ot(`/api/settings/learning`,{learning_enabled:n}),(await Wr(()=>Promise.resolve().then(()=>vU),void 0)).setLearningEnabled(n),await s(),e(n?`Lern-Modus aktiviert. Daten bleiben lokal.`:`Lern-Modus deaktiviert. Bestehende Daten bleiben — du kannst sie unten loeschen.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}async function l(){if(confirm(`Wirklich ALLE gesammelten Lern-Daten loeschen? Domain-Daten (Bewerbungen, Stellen, etc.) bleiben unangetastet.`)){o(!0);try{e(`${(await kt(`/api/activity/clear`))?.deleted||0} Lern-Events geloescht.`,`success`),await s()}catch(t){e(`Loeschen fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}}return!t||!r?null:(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Lern-System (Privatsphaere)`,description:`PBP kann aus deinem Verhalten lernen, um sich anzupassen — alle Daten bleiben LOKAL.`}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!r.learning_enabled,onChange:c,disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Lern-Modus aktiv (empfohlen)`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:[`Wenn aktiv, sammelt PBP `,(0,U.jsx)(`strong`,{children:`lokal`}),` Klicks, Scroll- und Verweildauer-Daten in der eigenen DB. Diese Daten `,(0,U.jsx)(`strong`,{children:`verlassen deinen Rechner NICHT`}),`. Sie helfen PBP, sich an deinen Workflow anzupassen — z.B. haeufig genutzte Filter als Default zu lernen, ueberfluessige Klicks zu erkennen, oder mit der lokalen AI Muster auszuwerten. Du kannst es jederzeit ausschalten.`]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[(0,U.jsx)(`strong`,{children:`Vorteil:`}),` PBP wird mit der Zeit treffsicherer in Auto-Aussortierung, Filter-Vorschlaegen und passt UI an dein Verhalten an. Ohne Lern-Modus bleibt PBP statisch wie heute.`]})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 text-[12px] text-muted/70`,children:[(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:t.total_events}),` Events insgesamt erfasst`]}),t.oldest_event_at&&(0,U.jsxs)(`p`,{children:[`Aeltester Eintrag: `,new Date(t.oldest_event_at).toLocaleDateString(`de-DE`)]}),t.by_type?.length>0&&(0,U.jsxs)(`details`,{className:`mt-2`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer text-[11px] text-muted/60`,children:[`Verteilung nach Event-Typ (`,t.by_type.length,`)`]}),(0,U.jsx)(`ul`,{className:`mt-1 space-y-0.5 text-[11px]`,children:t.by_type.map(e=>(0,U.jsxs)(`li`,{className:`font-mono`,children:[e.type,`: `,e.count]},e.type))})]})]}),t.total_events>0&&(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:l,disabled:a,children:`Alle Lern-Daten loeschen`})]})]})}function aa({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1);async function l(){try{n(await V(`/api/telemetry/settings`))}catch(t){e(`Telemetrie-Settings laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{l()},[]);async function u(){o(!0);try{i(await V(`/api/telemetry/preview`)),c(!0)}catch(t){e(`Vorschau laden: ${t.message}`,`danger`)}finally{o(!1)}}async function d(t){let n=t.target.checked;o(!0);try{await Ot(`/api/telemetry/settings`,{enabled:n}),await l(),e(n?`Telemetrie-Sharing aktiviert. Du wirst nur wochenweise gefragt.`:`Telemetrie-Sharing deaktiviert. Es geht nichts raus.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}async function f(t){let n=parseInt(t.target.value,10);o(!0);try{await Ot(`/api/telemetry/settings`,{interval_days:n}),await l(),e(n===0?`Auto-Trigger deaktiviert`:`Intervall: alle ${n} Tage`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}function p(){if(!r)return;let e=`mailto:${encodeURIComponent(r.recipient)}?subject=${encodeURIComponent(r.mail.subject)}&body=${encodeURIComponent(r.mail.body)}`;window.open(e,`_blank`),H(`/api/telemetry/mark-shared`,{}).then(()=>l()).catch(()=>{})}if(!t)return null;let m=r?.trigger||{};return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Telemetrie-Sharing (optional)`,description:`Hilf das Lern-System fuer alle PBP-Nutzer zu verbessern, indem du anonymisierte Erkenntnisse an ${t.recipient} schickst — wochenweise (nicht taeglich), opt-in, jederzeit abschaltbar.`}),(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!t.enabled,onChange:d,disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Telemetrie-Sharing aktiv`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:[`Wenn aktiv: PBP zeigt dir `,(0,U.jsx)(`strong`,{children:`wochenweise`}),` (nicht taeglich) eine Vorschau, was geteilt werden koennte. Du entscheidest jedes Mal selbst, ob du die Mail tatsaechlich abschickst.`]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[(0,U.jsx)(`strong`,{children:`Was wird geteilt:`}),` nur signifikante Insights (≥ 5x beobachtet ODER score ≥ 0.8), aggregierte Zahlen, anonymisierte Workflow-Stats. `,(0,U.jsx)(`strong`,{children:`Was NICHT:`}),`Profildaten, Job-Titel, Firmen, Anschreiben, Mails.`]})]})]}),t.enabled&&(0,U.jsxs)(`div`,{className:`glass-card p-3 border-sky/15 border space-y-2`,children:[(0,U.jsxs)(`label`,{className:`flex items-center justify-between gap-3`,children:[(0,U.jsx)(`span`,{className:`text-sm text-ink`,children:`Frage mich…`}),(0,U.jsxs)(Qn,{value:String(t.interval_days),onChange:f,disabled:a,children:[(0,U.jsx)(`option`,{value:`0`,children:`Nie automatisch (nur manuell)`}),(0,U.jsx)(`option`,{value:`7`,children:`Wochenweise (Standard)`}),(0,U.jsx)(`option`,{value:`14`,children:`Alle 2 Wochen`}),(0,U.jsx)(`option`,{value:`30`,children:`Monatlich`})]})]}),t.last_share_at&&(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Letzter Share: `,new Date(t.last_share_at).toLocaleString(`de-DE`)]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:u,disabled:a,children:`Jetzt Vorschau anzeigen`}),m.due===!1&&m.reason&&(0,U.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:m.reason})]}),s&&r&&(0,U.jsxs)(`div`,{className:`glass-card p-3 border-teal/20 border space-y-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Vorschau-Mail`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>c(!1),className:`text-[11px] text-muted/40 hover:text-ink`,children:`schliessen`})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Empfaenger: `,(0,U.jsx)(`span`,{className:`font-mono text-ink`,children:r.recipient})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Betreff: `,(0,U.jsx)(`span`,{className:`text-ink`,children:r.mail.subject})]}),(0,U.jsx)(`pre`,{className:`text-[11px] font-mono text-muted/80 bg-black/20 p-2 rounded max-h-64 overflow-auto whitespace-pre-wrap`,children:r.mail.body}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(G,{size:`sm`,onClick:p,children:`In Mail-Client oeffnen`}),(0,U.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:`Du kannst die Mail noch bearbeiten oder verwerfen — nichts geht automatisch raus.`})]})]})]})]})}function oa({sources:e,onToggle:t,pushToast:n}){let[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1);if((0,w.useEffect)(()=>{let e=!1;return V(`/api/profile/recommended-sources`).then(t=>{e||i(t)}).catch(()=>{}),()=>{e=!0}},[]),!r||r.type===`mixed`&&r.confidence<.5)return null;let l=r.recommended||[],u=new Map((e||[]).map(e=>[e.key,e])),d=new Set((e||[]).filter(e=>e.active).map(e=>e.key)),f=l.filter(e=>!d.has(e));async function p(){o(!0);let e=0;for(let n of f){let r=u.get(n);if(r)try{await t(r,!0),e+=1}catch{}}n(e>0?`${e} Quelle${e===1?``:`n`} aktiviert.`:`Bereits alles aktiv.`,`success`),o(!1)}return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`button`,{type:`button`,onClick:()=>c(!s),className:`w-full flex items-center justify-between`,children:[(0,U.jsxs)(`div`,{className:`text-left`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Empfohlene Quellen fuer dein Profil`}),(0,U.jsxs)(`p`,{className:`text-sm text-ink mt-1`,children:[r.label,f.length>0&&(0,U.jsxs)(`span`,{className:`ml-2 text-amber/80`,children:[`· `,f.length,` noch nicht aktiv`]})]})]}),(0,U.jsx)(`span`,{className:`text-muted/40 text-xs`,children:s?`▼`:`▲`})]}),!s&&(0,U.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,U.jsx)(`p`,{className:`text-[12px] text-muted/70`,children:r.rationale}),r.reasons?.length>0&&(0,U.jsxs)(`details`,{children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/50`,children:`Wie PBP das erkannt hat`}),(0,U.jsx)(`ul`,{className:`mt-1.5 ml-4 list-disc text-[11px] text-muted/60`,children:r.reasons.map((e,t)=>(0,U.jsx)(`li`,{children:e},t))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase mb-2`,children:[`Empfohlen (`,l.length,`)`]}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1.5`,children:l.map(e=>{let t=d.has(e);return(0,U.jsxs)(`span`,{className:`inline-flex items-center gap-1.5 rounded-full border px-2.5 py-0.5 text-[11px] ${t?`bg-teal/15 border-teal/30 text-teal`:`bg-amber/[0.04] border-amber/20 text-amber/80`}`,children:[t?`✓`:`+`,e]},e)})})]}),f.length>0&&(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsxs)(G,{onClick:p,disabled:a,size:`sm`,children:[f.length,` fehlende empfohlene Quelle`,f.length===1?``:`n`,` aktivieren`]}),(0,U.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:`Du kannst jede Quelle einzeln auch wieder abschalten.`})]})]})]})}function sa({pushToast:e}){let[t,n]=(0,w.useState)([]),[r,i]=(0,w.useState)(!1);async function a(){try{n((await V(`/api/scraper-health`))?.scrapers||[])}catch{}}(0,w.useEffect)(()=>{a()},[]);function o(e){return e.is_active?e.consecutive_failures>=3?`warn`:e.consecutive_silent>=2?`silent`:e.total_runs>0&&e.total_successes/e.total_runs>=.7?`ok`:e.total_runs>0?`warn`:`unknown`:e.reactivate_at?`probing`:`off`}let s={ok:{color:`bg-teal/80`,label:`OK`},warn:{color:`bg-amber/80`,label:`Warnung`},silent:{color:`bg-amber/80`,label:`Stumm`},probing:{color:`bg-amber/40`,label:`Probe geplant`},off:{color:`bg-coral/70`,label:`Aus`},unknown:{color:`bg-muted/40`,label:`Unbekannt`}};function c(e){if(!e)return`—`;try{let t=new Date(e),n=new Date,r=Math.round((t-n)/36e5);return Math.abs(r)<1?`in <1h`:r<0?`vor ${Math.abs(r)}h`:r<24?`in ${r}h`:`in ${Math.round(r/24)}d`}catch{return e.slice(0,10)}}async function l(t){i(!0);try{await H(`/api/scraper-health/${t}/probe-result`,{success:!0}),e(`${t} reaktiviert`,`success`),await a()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}async function u(t){i(!0);try{await H(`/api/scraper-health/${t}/toggle`,{active:!1}),e(`${t} deaktiviert`,`success`),await a()}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return t.length===0?null:(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Quellen-Health`,description:`Erfolgsquote pro Scraper, Auto-Reactivate-Plan und Reaktivieren-Buttons.`}),(0,U.jsx)(`div`,{className:`space-y-2`,children:t.map(e=>{let t=s[o(e)],n=e.total_runs>0?Math.round(e.total_successes/e.total_runs*100):0;return(0,U.jsxs)(`div`,{className:`glass-card p-3 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0 flex-1`,children:[(0,U.jsx)(`span`,{className:`inline-block h-2 w-2 rounded-full ${t.color} shrink-0`}),(0,U.jsx)(`span`,{className:`font-medium text-ink truncate`,children:e.scraper_name}),(0,U.jsxs)(`span`,{className:`text-[10px] text-muted/50`,children:[`[`,t.label,`]`]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-[11px] text-muted/60 shrink-0`,children:[(0,U.jsxs)(`span`,{children:[n,`% Quote`]}),(0,U.jsx)(`span`,{children:`·`}),(0,U.jsxs)(`span`,{children:[e.total_successes,`/`,e.total_runs]})]})]}),(0,U.jsxs)(`div`,{className:`mt-1.5 grid grid-cols-2 gap-2 text-[10px] text-muted/50`,children:[(0,U.jsxs)(`div`,{children:[`Letzter Lauf: `,e.last_run?new Date(e.last_run).toLocaleString(`de-DE`):`—`]}),e.consecutive_failures>0&&(0,U.jsxs)(`div`,{className:`text-coral/80`,children:[e.consecutive_failures,` Fehler in Folge`]}),e.consecutive_silent>0&&(0,U.jsxs)(`div`,{className:`text-amber/80`,children:[e.consecutive_silent,` Mal stumm`]}),e.reactivate_at&&(0,U.jsxs)(`div`,{className:`text-amber/80`,children:[`Probe-Run `,c(e.reactivate_at),` (Versuch `,e.reactivate_attempt,`)`]}),e.retry_after&&(0,U.jsxs)(`div`,{className:`text-coral/80`,children:[`Retry-After `,c(e.retry_after)]})]}),(0,U.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[!e.is_active&&(0,U.jsx)(G,{size:`xs`,variant:`secondary`,onClick:()=>l(e.scraper_name),disabled:r,children:`Jetzt reaktivieren`}),e.is_active&&(0,U.jsx)(G,{size:`xs`,variant:`secondary`,onClick:()=>u(e.scraper_name),disabled:r,children:`Deaktivieren`})]})]},e.scraper_name)})})]})}function ca({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(``),[a,o]=(0,w.useState)(!1);async function s(){try{let e=await V(`/api/settings/pbp-start-date`);n(e),i(e.override||``)}catch(t){e(`PBP-Start-Datum laden fehlgeschlagen: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{s()},[]);async function c(){o(!0);try{await Ot(`/api/settings/pbp-start-date`,{date:r||``}),await s(),e(r?`PBP-Start-Datum gesetzt`:`Auf Auto-Detect zurueckgesetzt`,`success`)}catch(t){e(`Speichern fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}return t?(0,U.jsxs)(`div`,{className:`mt-5 glass-card p-3 border-sky/15 border`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink mb-1`,children:`PBP-Nutzung gestartet am`}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/70 mb-3`,children:[`Steuert, ab welchem Datum die Bewerbungen im Bericht als „mit PBP erfasst" gelten. Daten davor werden im PDF grau markiert (nachtraeglich erfasst, ggf. unvollstaendig). Default: Auto-Detect aus dem ersten Bewerbungs-Ereignis (`,(0,U.jsx)(`strong`,{className:`text-ink`,children:t.auto_detect||`noch keine Daten`}),`).`]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsx)(`input`,{type:`date`,value:r,onChange:e=>i(e.target.value),disabled:a,className:`rounded-lg border border-white/8 bg-white/[0.03] px-3 py-1.5 text-[13px] text-ink`}),(0,U.jsx)(G,{size:`sm`,onClick:c,disabled:a,children:a?`...`:`Speichern`}),t.override&&(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:()=>{i(``),c()},disabled:a,children:`Auf Auto-Detect zuruecksetzen`})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:[`Aktuell wirksam: `,(0,U.jsx)(`strong`,{className:`text-ink`,children:t.effective||`—`}),t.override?` (User-Override)`:` (Auto-Detect)`]})]}):null}var la=[{v:0,l:`Aus`},{v:1,l:`Taeglich`},{v:3,l:`Alle 3 Tage`},{v:7,l:`Woechentlich`},{v:14,l:`Alle 2 Wochen`},{v:30,l:`Monatlich`}];function ua({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1);async function a(){try{n(await V(`/api/automatik/settings`))}catch{}}(0,w.useEffect)(()=>{a()},[]);async function o(t,n){i(!0);try{await Ot(`/api/automatik/settings`,{[t]:Number(n)}),await a(),e(`Automatik gespeichert.`,`success`)}catch(t){e(t?.message||`Speichern fehlgeschlagen.`,`danger`)}finally{i(!1)}}async function s(t){i(!0);try{let n=await H(`/api/automatik/run-now`,{kind:t});await a();let r=`Angestossen.`;t===`lernen`?r=`Lern-Lauf angestossen.`:n.status===`gestartet`?r=`Interne Jobsuche gestartet.`:n.status===`keine_internen_quellen`?r=`Keine internen Quellen aktiv — nichts zu suchen.`:n.status===`laeuft_bereits`&&(r=`Eine Jobsuche laeuft bereits.`),e(r,`success`)}catch(t){e(t?.message||`Lauf fehlgeschlagen.`,`danger`)}finally{i(!1)}}if(!t)return null;let c=e=>{if(!e)return`noch nie`;if(e===`faellig`)return`faellig`;try{return new Date(e).toLocaleString(`de-DE`)}catch{return e}},l=(e,n,i,a)=>(0,U.jsxs)(`div`,{className:`glass-card p-4 space-y-2`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:n}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/60`,children:i}),(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,U.jsx)(Qn,{value:String(t[e].intervall_tage),onChange:t=>o(`${e}_intervall_tage`,t.target.value),disabled:r,children:la.map(e=>(0,U.jsx)(`option`,{value:e.v,children:e.l},e.v))}),(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:()=>s(e),disabled:r,children:a})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50`,children:[`Letzter Lauf: `,c(t[e].letzter_lauf),` · Naechster: `,c(t[e].naechster_lauf)]})]});return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Automatik im Hintergrund`,description:`PBP kann die interne Jobsuche und das Lernen aus deinem Verhalten/Dokumenten selbststaendig nach Zeitplan ausfuehren — solange Claude Desktop laeuft.`}),(0,U.jsxs)(`div`,{className:`space-y-4`,children:[l(`jobsuche`,`Interne Jobsuche`,`Nur die internen Scraper-Quellen. Login-/Browser-Quellen (LinkedIn, StepStone, XING, ...) laufen weiter manuell ueber die Chrome-Extension.`,`Jetzt suchen`),l(`lernen`,`Ollama lernt aus Verhalten + Dokumenten`,`Analysiert regelmaessig deine Aktivitaet und Dokumente, damit Vorschlaege treffsicherer werden. Greift nur, wenn der Lern-Modus (Datenschutz-Tab) an ist.`,`Jetzt lernen`),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:t.hinweis})]})]})}function da({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(null);async function l(){try{n(await V(`/api/auto-actions/status`))}catch(t){e(`Status laden fehlgeschlagen: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{l()},[]);async function u(t,n){i(!0);try{await Ot(`/api/auto-actions/settings`,{[t]:n}),await l(),e(`Gespeichert`,`success`)}catch(t){e(`Speichern fehlgeschlagen: ${t.message}`,`danger`)}finally{i(!1)}}async function d(){o(!0);try{let t=await H(`/api/auto-actions/run`,{});c(t),await l();let n=t.expire?.expired_count||0,r=t.followup_reconciler?.created_count||0;e(n+r===0?`Auto-Aktionen liefen — nichts zu tun.`:`${n} abgelaufen, ${r} neue Follow-ups`,`success`)}catch(t){e(`Lauf fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1)}}if(!t)return(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade...`})});let f=t.settings;return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Automatik fuer Bewerbungs-Lifecycle`,description:`PBP setzt Bewerbungen ohne Aktivitaet automatisch auf 'abgelaufen' und legt fehlende Nachfass-Erinnerungen an.`}),(0,U.jsxs)(`div`,{className:`space-y-5`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Auto-Ablauf (Status -> abgelaufen)`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Bewerbungen werden auf `,(0,U.jsx)(`strong`,{children:`abgelaufen`}),` gesetzt wenn seit der letzten Aktivitaet die folgende Zahl an Tagen ohne Antwort verstrichen ist. Sie sind dann nicht weg — falls doch noch was kommt, kannst du sie jederzeit zurueckholen.`]}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,U.jsx)(J,{label:`Status 'beworben' nach (Tage)`,children:(0,U.jsx)(`input`,{type:`number`,min:7,max:365,defaultValue:f.expire_default_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.expire_default_days&&u(`expire_default_days`,t)},disabled:r,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})}),(0,U.jsx)(J,{label:`Status 'eingangsbestaetigung' nach (Tage)`,children:(0,U.jsx)(`input`,{type:`number`,min:7,max:180,defaultValue:f.expire_eingangsbestaetigung_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.expire_eingangsbestaetigung_days&&u(`expire_eingangsbestaetigung_days`,t)},disabled:r,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Auto-Followup (Nachfass-Erinnerungen)`}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/60`,children:`Wenn eine aktive Bewerbung keinen offenen Nachfass-Follow-up hat, wird automatisch einer angelegt — N Tage nach der letzten Aktivitaet. Der Faden reisst nicht mehr ab wenn du den ersten Follow-up als erledigt markierst.`}),(0,U.jsx)(J,{label:`Nachfass-Erinnerung nach (Tage seit letzter Aktivitaet)`,children:(0,U.jsx)(`input`,{type:`number`,min:1,max:60,defaultValue:f.followup_default_days,onBlur:e=>{let t=parseInt(e.target.value,10);t&&t!==f.followup_default_days&&u(`followup_default_days`,t)},disabled:r,className:`w-full max-w-xs rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-[13px] text-ink`})})]}),(0,U.jsxs)(`div`,{className:`glass-card p-4 space-y-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink text-sm`,children:`Sofort-Lauf`}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/60`,children:[`Letzter Lauf: `,(0,U.jsx)(`strong`,{children:t.last_run_at||`noch nie`})]}),(0,U.jsx)(G,{size:`sm`,onClick:d,disabled:a,children:a?`Laeuft...`:`Jetzt durchlaufen`}),s&&(0,U.jsx)(`div`,{className:`text-[12px] text-muted/60 space-y-1`,children:(0,U.jsxs)(`p`,{children:[`Letzter Lauf: `,(0,U.jsx)(`strong`,{className:`text-ink`,children:s.expire?.expired_count||0}),` abgelaufen, `,(0,U.jsx)(`strong`,{className:`text-ink`,children:s.followup_reconciler?.created_count||0}),` Follow-ups neu angelegt.`]})})]})]})]})}var fa=[{id:`jobsuche`,label:`Jobsuche via Claude`,desc:`Erlaubt Claude, jobsuche_starten() aufzurufen. Dashboard-Button bleibt unabhaengig nutzbar.`},{id:`dokumentenanalyse`,label:`Dokumentenanalyse`,desc:`Profil-Daten aus hochgeladenen Lebenslaeufen, Zeugnissen und Anschreiben extrahieren.`},{id:`stellenanalyse`,label:`Stellenanalyse / Fit-Bewertung`,desc:`Fit-Analyse, Skill-Gap-Analyse und Score-Verfeinerung fuer einzelne Stellen.`},{id:`bewerbungserstellung`,label:`Bewerbungs-Erstellung`,desc:`Angepasste Lebenslaeufe, Fachprofile und Anschreiben generieren.`},{id:`coaching`,label:`Interview- und Verhandlungs-Coaching`,desc:`Interview-Vorbereitung, Gehaltsverhandlung, Ablehnungs-Analyse.`},{id:`ersterfassung`,label:`Profil-Ersterfassung via Claude`,desc:`Gefuehrtes Profil-Interview. Profil bleibt manuell pflegbar wenn aus.`},{id:`guidance`,label:`KI-Hinweise im Dashboard`,desc:`Hinweise und Empfehlungen die explizit auf Claude verweisen.`}];function pa({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)(!1);async function a(){try{n((await V(`/api/settings/ki-features`))?.features||null)}catch(t){e(`KI-Steuerung laden: ${t.message}`,`danger`)}}(0,w.useEffect)(()=>{a()},[]);async function o(t,r){i(!0);try{let i=await Ot(`/api/settings/ki-features`,{features:{[t]:r}});i?.features&&n(i.features),e(r?`${t} aktiviert.`:`${t} deaktiviert.`,`success`)}catch(t){e(`Aenderung fehlgeschlagen: ${t.message}`,`danger`),await a()}finally{i(!1)}}if(!t)return(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade KI-Steuerung...`})});let s=!t.master;return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`KI-Unterstuetzung (Claude)`,description:`Welche KI-Funktionen Claude in PBP nutzen darf. Default: alles aktiv. Aenderungen wirken sofort.`}),(0,U.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card border-sky/15 mb-4`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!t.master,onChange:e=>o(`master`,e.target.checked),disabled:r,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm font-semibold text-ink`,children:`Master-Schalter`}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:`Wenn aus: Claude blockt ALLE KI-Operationen mit einem Hinweis, wo du das wieder anschaltest. Manuelle Tools (Profil pflegen, Bewerbungen tracken, Standard-CV exportieren) und der Dashboard-Button "Jetzt suchen" bleiben unabhaengig nutzbar.`})]})]}),(0,U.jsx)(`div`,{className:`space-y-2 ${s?`opacity-50`:``}`,children:fa.map(e=>(0,U.jsxs)(`label`,{className:`flex items-start gap-3 cursor-pointer p-3 glass-card`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!t[e.id],onChange:t=>o(e.id,t.target.checked),disabled:r||s,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{className:`flex-1`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:e.label}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-1 leading-snug`,children:e.desc})]})]},e.id))}),s&&(0,U.jsx)(`p`,{className:`mt-3 text-[12px] text-amber/80`,children:`Master-Schalter ist aus — die einzelnen Toggles sind ohne Wirkung, bis der Master wieder aktiv ist.`})]})}function ma(){let[e,t]=(0,w.useState)(null);if((0,w.useEffect)(()=>{V(`/api/llm/accuracy`).then(t).catch(()=>{})},[]),!e||!e.auto_aussortiert_gesamt)return null;let n=e.genauigkeit_prozent,r=n==null?`text-muted/50`:n>=85?`text-teal`:n>=65?`text-amber`:`text-coral`;return(0,U.jsxs)(`div`,{className:`glass-card p-3 mb-4 border-teal/15`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide mb-2`,children:`Ollama-Leistung (Auto-Aussortierung)`}),(0,U.jsxs)(`div`,{className:`grid grid-cols-3 gap-2 text-center`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-lg font-bold text-ink`,children:e.auto_aussortiert_gesamt}),(0,U.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`automatisch`,(0,U.jsx)(`br`,{}),`aussortiert`]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-lg font-bold text-amber`,children:e.reaktiviert}),(0,U.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`von dir`,(0,U.jsx)(`br`,{}),`zurueckgeholt`]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-lg font-bold ${r}`,children:n==null?`—`:`${n}%`}),(0,U.jsxs)(`p`,{className:`text-[10px] text-muted/60`,children:[`Treffer-`,(0,U.jsx)(`br`,{}),`genauigkeit`]})]})]}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:e.datenbasis_ausreichend?`Genauigkeit = Anteil der Auto-Entscheidungen, die du NICHT korrigiert hast. Je mehr du selbst aussortierst, desto besser lernt Ollama (Few-Shot).`:`Genauigkeit wird ab 5 Auto-Entscheidungen angezeigt — noch zu wenig Datenbasis.`})]})}function ha({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(null),l=(0,w.useEffectEvent)(async(t=!1)=>{try{n(await V(t?`/api/llm/status?refresh=1`:`/api/llm/status`))}catch(t){e(`Lokale-KI-Status: ${t.message}`,`danger`)}});if((0,w.useEffect)(()=>{l(!0),V(`/api/llm/recommended-models`).then(e=>i(e?.models||[])).catch(()=>{})},[]),!t)return(0,U.jsx)(K,{className:`rounded-2xl`,children:(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade Lokale-KI-Status...`})});async function u(t){try{await Ot(`/api/llm/state`,{state:t}),await l(),e(`Status gesetzt: ${t}`,`success`)}catch(t){e(`Konnte Status nicht setzen: ${t.message}`,`danger`)}}async function d(t){try{await Ot(`/api/llm/model`,{model:t}),await l(),e(`Modell gesetzt: ${t}`,`success`)}catch(t){e(`Konnte Modell nicht setzen: ${t.message}`,`danger`)}}async function f(t){o(!0),c(t);try{e(`Lade ${t}... das kann einige Minuten dauern.`,`amber`,{duration:1e4});let n=await H(`/api/llm/pull`,{model:t});n?.status===`error`?e(`Download fehlgeschlagen: ${n.error}`,`danger`):(e(`${t} ist installiert.`,`success`),await d(t),await u(`active`))}catch(t){e(`Download fehlgeschlagen: ${t.message}`,`danger`)}finally{o(!1),c(null),await l()}}return t.ui_state===`not_installed`?(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4`,children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI`}),(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Status: Nicht erreichbar`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-4 mb-4 border-sky/20`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Vielleicht nur gestoppt?`}),(0,U.jsx)(`p`,{className:`text-sm text-muted/80 mb-3`,children:`Wenn Ollama vorher schonmal lief (z.B. nach Reboot oder Taskmanager-Stop), kann PBP versuchen es erneut zu starten — kein manueller Start in der Konsole noetig.`}),(0,U.jsx)(G,{type:`button`,size:`sm`,onClick:async()=>{e(`Ollama wird gestartet...`,`neutral`,{duration:2e3});try{let t=await H(`/api/llm/start`,{});if(t.status===`already_running`){e(`Ollama lief bereits — Status wird neu geladen.`,`success`),await l();return}if(t.status===`starting`){e(`Ollama startet — Status wird in 10-30s aktualisiert.`,`success`,{duration:4e3});let t=0,n=setInterval(async()=>{t+=1,await l(),(await V(`/api/llm/status`))?.ollama_available?(clearInterval(n),e(`Ollama ist verbunden.`,`success`)):t>=15&&(clearInterval(n),e(`Status nach 30s noch nicht verbunden — pruefe Logs.`,`amber`))},2e3)}}catch(t){let n=t?.message||String(t);n.includes(`not_installed`)||n.includes(`404`)?e(`Ollama-Binary nicht gefunden — bitte herunterladen.`,`danger`,{duration:5e3}):e(`Start fehlgeschlagen: ${n}`,`danger`)}},children:`Ollama starten`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-4 mb-4 border-coral/15`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Noch nicht installiert?`}),(0,U.jsx)(`p`,{className:`text-sm text-muted/80 mb-3`,children:`Eine lokale KI auf deinem Rechner uebernimmt Routine-Aufgaben fuer PBP — z.B. Dokumente klassifizieren, Skills extrahieren, Stellen vorsortieren.`}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 text-sm`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`font-medium text-teal mb-1.5`,children:`✅ Vorteile`}),(0,U.jsxs)(`ul`,{className:`space-y-0.5 text-[13px] text-muted/70`,children:[(0,U.jsx)(`li`,{children:`Spart Claude-Tokens UND ist kostenlos`}),(0,U.jsx)(`li`,{children:`Funktioniert auch ohne Internet`}),(0,U.jsx)(`li`,{children:`Daten verlassen das Geraet nie`}),(0,U.jsx)(`li`,{children:`Schneller bei Standard-Aufgaben`})]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`font-medium text-amber mb-1.5`,children:`⚠️ Nachteile`}),(0,U.jsxs)(`ul`,{className:`space-y-0.5 text-[13px] text-muted/70`,children:[(0,U.jsx)(`li`,{children:`Einmalig 4–5 GB Modell herunterladen`}),(0,U.jsx)(`li`,{children:`Braucht 8–16 GB freien RAM`}),(0,U.jsx)(`li`,{children:`Kreatives bleibt bei Claude`})]})]})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-4 mb-4`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Voraussetzung: Ollama`}),(0,U.jsx)(`p`,{className:`text-sm text-muted/80 mb-2`,children:`Du brauchst Ollama auf deinem Rechner — der Sidecar, der die lokale KI laeuft.`}),(0,U.jsx)(`a`,{href:`https://ollama.com/download`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1.5 text-sky text-sm hover:underline`,children:`Ollama herunterladen → ollama.com/download`}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/60 mt-2`,children:`Nach der Installation startet Ollama automatisch. PBP erkennt es dann hier und du kannst sie kuenftig auch ueber den "Ollama starten"-Button oben re-starten.`})]}),(0,U.jsx)(`button`,{type:`button`,onClick:l,className:`px-3 py-1.5 rounded-lg bg-white/[0.04] text-sm text-ink hover:bg-white/[0.08]`,children:`Status neu pruefen`}),t.error&&(0,U.jsxs)(`p`,{className:`mt-3 text-[11px] text-coral/70 font-mono`,children:[`Erkennungs-Fehler: `,t.error]})]}):t.ui_state===`no_model`?(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4`,children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI — Modell auswaehlen`}),(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Ollama erkannt. Jetzt ein Modell laden.`})]}),(0,U.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`p`,{className:`font-medium text-ink`,children:e.name}),e.recommended&&(0,U.jsx)(`span`,{className:`rounded bg-teal/15 px-1.5 py-0.5 text-[10px] font-bold text-teal`,children:`EMPFOHLEN`})]}),(0,U.jsxs)(`p`,{className:`text-[12px] text-muted/70`,children:[e.size_gb,` GB · braucht `,e.ram_gb,` GB RAM · `,e.description]})]}),(0,U.jsx)(`button`,{type:`button`,disabled:a,onClick:()=>f(e.id),className:`shrink-0 px-3 py-1.5 rounded-lg bg-sky/15 text-sky text-sm font-medium hover:bg-sky/25 disabled:opacity-50`,children:a&&s===e.id?`Laedt...`:`${e.size_gb} GB laden`})]},e.id))}),(0,U.jsx)(`p`,{className:`mt-3 text-[11px] text-muted/60`,children:`Empfehlung: Standard (Qwen 2.5 7B) — gutes Deutsch, vernuenftiger Speicher-Bedarf. Du kannst spaeter jederzeit das Modell wechseln.`})]}):(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(`div`,{className:`mb-4 flex items-center justify-between`,children:(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Lokale KI`}),(0,U.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Modell: `,(0,U.jsx)(`span`,{className:`font-mono`,children:t.selected_model||`—`}),` · `,`Status: `,(0,U.jsx)(`span`,{className:t.ui_state===`active`?`text-teal`:t.ui_state===`paused`?`text-amber`:`text-muted/50`,children:t.ui_state})]})]})}),(0,U.jsx)(`div`,{className:`grid gap-2 sm:grid-cols-3 mb-4`,children:[{value:`active`,label:`Aktiv`,desc:`PBP nutzt das lokale Modell wo moeglich`},{value:`paused`,label:`Pausiert`,desc:`Wie 'Aus' — alle Tasks gehen an Claude`},{value:`off`,label:`Aus`,desc:`Wie nicht installiert`}].map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>u(e.value),className:`glass-card p-3 text-left rounded-lg transition ${t.ui_state===e.value?`border-teal/40 bg-teal/[0.06]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:e.label}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60`,children:e.desc})]},e.value))}),(0,U.jsx)(_a,{status:t,recommended:r,onSelect:d,onPull:f,pulling:a,pullModel:s}),(0,U.jsxs)(`div`,{className:`glass-card p-3 mb-4 border-sky/10`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide mb-2`,children:`Was laeuft lokal?`}),(0,U.jsxs)(`ul`,{className:`text-[12px] text-muted/80 space-y-1 list-disc list-inside`,children:[(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Doku-Klassifikation`}),` — neue Uploads werden eingeordnet (Lebenslauf, Anschreiben, Mail, ...)`]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Skill-Extraktion`}),` — Skills aus Lebenslauf-Text ziehen`]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Stellen-Profil-Match`})," — `stellen_auto_aussortieren` filtert profilbasiert"]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Mail-Klassifikation`}),` — eingehende Mails werden kategorisiert`]})]}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/50 mt-2`,children:`Kreatives (Anschreiben, Coaching) bleibt bei Claude.`})]}),(0,U.jsx)(ma,{}),(0,U.jsx)(va,{}),(0,U.jsx)(`div`,{className:`border-t border-white/5 pt-3 mt-3`,children:(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/60`,children:[`Endpoint: `,(0,U.jsx)(`span`,{className:`font-mono`,children:t.ollama_endpoint}),` · `,t.available_models?.length||0,` Modell(e) installiert`]})}),(0,U.jsx)(ga,{pushToast:e})]})}function ga({pushToast:e}){let[t,n]=(0,w.useState)(null),[r,i]=(0,w.useState)([]),[a,o]=(0,w.useState)(!1);async function s(){try{let[e,t]=await Promise.all([V(`/api/elwosa/settings`),V(`/api/elwosa/pending-lines`)]);n(e),i(t?.pending||[])}catch{}}(0,w.useEffect)(()=>{s()},[]);async function c(t){o(!0);try{n(await Ot(`/api/elwosa/settings`,t));let e=l(t);if(e)try{await H(`/api/elwosa/user-action`,{action:`settings_change`,target:e,payload:u(e,t)})}catch{}}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{o(!1)}}function l(e){for(let t of[`tonfall_modus`,`frequency`,`comment_user_actions`,`triggers_disabled`,`cooldown_seconds`,`enabled`,`paused_until`])if(t in e&&e[t]!==void 0)return t;return null}function u(e,n){if(e===`triggers_disabled`){let e=t?.triggers_disabled||[],r=n.triggers_disabled||[];return{value:r,added:r.filter(t=>!e.includes(t)),removed:e.filter(e=>!r.includes(e))}}return{value:n[e]}}async function d(t){try{await H(`/api/elwosa/pending-lines/${t}/approve`,{}),e(`Linie aktiviert`,`success`),s()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}async function f(t){try{await kt(`/api/elwosa/pending-lines/${t}`),e(`Linie verworfen`,`success`),s()}catch(t){e(`Fehler: ${t.message}`,`danger`)}}return t?(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-4 mt-4`,children:[(0,U.jsxs)(`div`,{className:`mb-3 flex items-center gap-2`,children:[(0,U.jsx)(`span`,{className:`flex h-6 w-6 items-center justify-center rounded-full bg-teal/15 text-[11px] font-semibold text-teal`,children:`E`}),(0,U.jsx)(`h3`,{className:`text-sm font-semibold text-ink`,children:`Elwosa`})]}),(0,U.jsx)(`p`,{className:`mb-3 text-[12px] text-muted/70`,children:`Live-Statusanzeige der lokalen AI in der Sidebar. Kommentiert was im Hintergrund passiert, gibt gelegentlich Tipps zu Claude und PBP.`}),(0,U.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-3 mb-3`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!t.enabled,onChange:e=>c({enabled:e.target.checked}),disabled:a,className:`mt-1 h-4 w-4 cursor-pointer`}),(0,U.jsx)(`span`,{className:`text-sm text-ink`,children:`Elwosa aktiv (wenn lokale AI laeuft)`})]}),t.enabled&&(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Frequenz (fuer Idle/Welt/Tipp — Status-Linien sind unbegrenzt)`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:[{id:`ruhig`,label:`Ruhig (3/Tag)`},{id:`standard`,label:`Standard (8)`},{id:`aktiv`,label:`Aktiv (15)`},{id:`unbegrenzt`,label:`Unbegrenzt`}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>c({frequency:e.id}),disabled:a,className:`px-3 py-1 text-[11px] rounded-md border ${t.frequency===e.id?`border-teal bg-teal/15 text-teal`:`border-white/10 text-muted hover:border-white/30`}`,children:e.label},e.id))})]}),(0,U.jsxs)(`details`,{className:`border-t border-white/5 pt-3`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-[11px] uppercase tracking-wider text-muted/50 mb-2`,children:`Power-User-Optionen`}),(0,U.jsxs)(`div`,{className:`mt-3 space-y-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:[`Cooldown zwischen Nachrichten (`,t.cooldown_seconds||90,`s)`]}),(0,U.jsx)(`input`,{type:`range`,min:10,max:300,step:10,value:t.cooldown_seconds||90,onChange:e=>c({cooldown_seconds:parseInt(e.target.value,10)}),disabled:a,className:`w-full`}),(0,U.jsx)(`p`,{className:`text-[10px] text-muted/50`,children:`Niedriger = schneller (10s minimum). Standard 90s.`})]}),(0,U.jsxs)(`label`,{className:`flex cursor-pointer items-start gap-2`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!t.comment_user_actions,onChange:e=>c({comment_user_actions:e.target.checked}),disabled:a,className:`mt-0.5 h-3.5 w-3.5`}),(0,U.jsx)(`span`,{className:`text-[11px] text-muted`,children:`Auch manuelle User-Aktionen kommentieren (klicken, sortieren, oeffnen)`})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Trigger-Klassen ausschalten`}),(0,U.jsx)(`div`,{className:`space-y-1`,children:[{id:`idle`,label:`Idle (Stille-Linien)`},{id:`world`,label:`Welt-Bezug (Tageszeit, Feiertage)`},{id:`tip`,label:`Tipps & Tricks`},{id:`easter_egg`,label:`Easter Eggs`}].map(e=>{let n=(t.triggers_disabled||[]).includes(e.id);return(0,U.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-2`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:n,onChange:n=>{let r=t.triggers_disabled||[];c({triggers_disabled:n.target.checked?[...r,e.id]:r.filter(t=>t!==e.id)})},disabled:a,className:`h-3 w-3`}),(0,U.jsxs)(`span`,{className:`text-[11px] text-muted`,children:[e.label,` `,n&&(0,U.jsx)(`span`,{className:`text-coral/70`,children:`(aus)`})]})]},e.id)})})]})]})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-1`,children:`Tonfall`}),(0,U.jsx)(`div`,{className:`flex gap-2 flex-wrap`,children:[{id:`standard`,label:`Standard`},{id:`sachlich`,label:`Sachlicher`},{id:`humorvoll`,label:`Mehr Humor`},{id:`minimal`,label:`Minimal (1/Tag)`}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>c({tonfall_modus:e.id}),disabled:a,className:`px-3 py-1 text-[11px] rounded-md border ${t.tonfall_modus===e.id?`border-teal bg-teal/15 text-teal`:`border-white/10 text-muted hover:border-white/30`}`,children:e.label},e.id))})]}),r.length>0&&(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-3`,children:[(0,U.jsxs)(`p`,{className:`text-[11px] font-medium text-muted/70 mb-2`,children:[`Vorgeschlagene Linien (von Claude) — `,r.length]}),(0,U.jsx)(`div`,{className:`space-y-2`,children:r.map(e=>(0,U.jsxs)(`div`,{className:`rounded-md border border-white/10 bg-white/[0.02] p-2 text-[11px]`,children:[(0,U.jsxs)(`p`,{className:`text-muted/85 italic`,children:[`„`,e.content,`"`]}),(0,U.jsxs)(`p`,{className:`mt-1 text-[9px] text-muted/40`,children:[e.cluster,` · `,e.trigger_kind]}),(0,U.jsxs)(`div`,{className:`mt-2 flex gap-2`,children:[(0,U.jsx)(G,{size:`xs`,onClick:()=>d(e.id),children:`Akzeptieren`}),(0,U.jsx)(G,{size:`xs`,variant:`secondary`,onClick:()=>f(e.id),children:`Verwerfen`})]})]},e.id))})]}),t.paused_until&&new Date(t.paused_until)>new Date&&(0,U.jsxs)(`div`,{className:`rounded-md border border-amber/20 bg-amber/[0.04] p-2 text-[11px] text-amber/80`,children:[`Pausiert bis `,new Date(t.paused_until).toLocaleString(`de-DE`),`.`,` `,(0,U.jsx)(`button`,{type:`button`,onClick:()=>c({paused_until:``}),className:`underline hover:text-amber`,children:`Zurueckholen`})]})]})]}):null}function _a({status:e,recommended:t,onSelect:n,onPull:r,pulling:i,pullModel:a}){let o=e.models_detail||[],s=new Set(e.available_models||[]),c=(t||[]).filter(e=>!s.has(e.id));return(0,U.jsxs)(`div`,{className:`mb-4`,children:[(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60 mb-1.5`,children:`Installierte Modelle:`}),(0,U.jsxs)(`div`,{className:`space-y-1.5 mb-3`,children:[o.length===0&&e.available_models?.length>0&&e.available_models.map(t=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(t),className:`w-full glass-card p-2 flex items-center justify-between text-left ${e.selected_model===t?`border-sky/40 bg-sky/[0.05]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,U.jsx)(`span`,{className:`text-[13px] font-mono text-ink`,children:t}),e.selected_model===t&&(0,U.jsx)(`span`,{className:`text-[10px] font-bold text-sky uppercase`,children:`aktiv`})]},t)),o.map(t=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>n(t.name),className:`w-full glass-card p-2 flex items-center justify-between text-left ${e.selected_model===t.name?`border-sky/40 bg-sky/[0.05]`:`border-white/5 hover:bg-white/[0.04]`}`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-[13px] font-mono text-ink`,children:t.name}),t.parameter_size&&(0,U.jsx)(`span`,{className:`ml-2 text-[10px] text-muted/50`,children:t.parameter_size})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 shrink-0`,children:[(0,U.jsx)(`span`,{className:`text-[11px] text-muted/50`,children:ya(t.size_bytes)}),e.selected_model===t.name&&(0,U.jsx)(`span`,{className:`text-[10px] font-bold text-sky uppercase`,children:`aktiv`})]})]},t.name))]}),c.length>0&&(0,U.jsxs)(`details`,{className:`glass-card p-2`,children:[(0,U.jsxs)(`summary`,{className:`text-[12px] cursor-pointer text-sky`,children:[`+ Weiteres Modell installieren (`,c.length,` Vorschlaege)`]}),(0,U.jsx)(`div`,{className:`space-y-1.5 mt-2`,children:c.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-2 p-2 rounded bg-white/[0.02]`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsxs)(`p`,{className:`text-[12px] font-medium text-ink`,children:[e.name,e.recommended&&(0,U.jsx)(`span`,{className:`ml-2 rounded bg-teal/15 px-1 py-0.5 text-[9px] font-bold text-teal`,children:`EMPFOHLEN`})]}),(0,U.jsxs)(`p`,{className:`text-[10px] text-muted/50`,children:[e.size_gb,` GB · braucht `,e.ram_gb,` GB RAM`]})]}),(0,U.jsx)(`button`,{type:`button`,disabled:i,onClick:()=>r(e.id),className:`shrink-0 px-2 py-1 rounded text-[11px] bg-sky/15 text-sky hover:bg-sky/25 disabled:opacity-50`,children:i&&a===e.id?`Laedt...`:`Laden`})]},e.id))})]})]})}function va(){let{pushToast:e}=jt(),[t,n]=(0,w.useState)(!1),[r,i]=(0,w.useState)(null);async function a(){n(!0),i(null);try{i(await H(`/api/llm/test-connection`,{}))}catch(t){e(`Test fehlgeschlagen: ${t.message}`,`danger`)}finally{n(!1)}}return(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-3 mt-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-2`,children:[(0,U.jsx)(`p`,{className:`text-[11px] font-semibold text-muted/70 uppercase tracking-wide`,children:`Test-Verbindung`}),(0,U.jsx)(G,{size:`sm`,onClick:a,disabled:t,children:t?`Teste...`:`Jetzt testen`})]}),!r&&!t&&(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Schickt einen Klassifizierungs-Task an Ollama und misst die Antwortzeit.`}),r&&(0,U.jsxs)(`div`,{className:`space-y-2 text-[12px]`,children:[(0,U.jsxs)(`div`,{className:`grid gap-1`,children:[(0,U.jsxs)(`p`,{children:[`Ollama:`,` `,(0,U.jsx)(`span`,{className:r.ollama_available?`text-teal`:`text-coral`,children:r.ollama_available?`erreichbar`:`nicht erreichbar`})]}),(0,U.jsxs)(`p`,{children:[`Endpoint:`,` `,(0,U.jsx)(`span`,{className:`font-mono text-muted/70`,children:r.ollama_endpoint})]}),(0,U.jsxs)(`p`,{children:[`Installierte Modelle:`,` `,(0,U.jsx)(`span`,{className:`text-ink`,children:(r.available_models||[]).join(`, `)||`—`})]}),(0,U.jsxs)(`p`,{children:[`Aktives Modell:`,` `,(0,U.jsx)(`span`,{className:`font-mono text-sky`,children:r.selected_model||`—`})]}),(0,U.jsxs)(`p`,{children:[`State:`,` `,(0,U.jsx)(`span`,{className:r.user_state===`active`?`text-teal`:r.user_state===`paused`?`text-amber`:`text-muted/50`,children:r.user_state})]})]}),r.test_roundtrip?.skipped?(0,U.jsxs)(`div`,{className:`glass-card p-2 text-amber`,children:[`⚠ Test-Roundtrip skipped: `,r.test_roundtrip.reason]}):r.test_roundtrip?.success?(0,U.jsxs)(`div`,{className:`glass-card p-2 text-teal`,children:[`✓ Test-Roundtrip erfolgreich — Backend:`,` `,(0,U.jsx)(`strong`,{children:r.test_roundtrip.backend}),`, Latenz:`,` `,(0,U.jsxs)(`strong`,{children:[r.test_roundtrip.duration_ms,` ms`]}),r.test_roundtrip.result_payload?.category&&(0,U.jsxs)(U.Fragment,{children:[` · `,`Klassifikation:`,` `,(0,U.jsx)(`strong`,{children:r.test_roundtrip.result_payload.category})]})]}):r.test_roundtrip?.error?(0,U.jsxs)(`div`,{className:`glass-card p-2 text-coral`,children:[`✗ Test-Roundtrip fehlgeschlagen: `,r.test_roundtrip.error]}):null]})]})}function ya(e){return e?e<1024?`${e} B`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(1)} MB`:`0 B`}function ba(){let{chrome:e,reloadKey:t,refreshChrome:n,pushToast:r,intent:i,clearIntent:a}=jt(),[o,s]=(0,w.useState)(!0),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)(``),[m,h]=(0,w.useState)({}),[g,_]=(0,w.useState)(!0),[v,y]=(0,w.useState)(null),[b,x]=(0,w.useState)(null),[S,C]=(0,w.useState)(``),[T,E]=(0,w.useState)(!1),[O,k]=(0,w.useState)(``),[A,j]=(0,w.useState)(`quellen`),[M,P]=(0,w.useState)({followup_default_days:7,followup_interview_delay_days:14}),[ee,F]=(0,w.useState)(!1),[I,te]=(0,w.useState)({arbeitsamt_block_enabled:!1,ba_vermittlungsnummer:``,ba_aktenzeichen:``,ba_berater_name:``,ba_berater_stelle:``,berater_kommentar_block:!1,taetigkeitsbericht_mode:!1}),[ne,re]=(0,w.useState)(!1),[ie,L]=(0,w.useState)([]),[R,ae]=(0,w.useState)(``),[oe,z]=(0,w.useState)(!1),[se,ce]=(0,w.useState)(null),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)({open:!1,reason:null,reassignTo:``}),pe=(0,w.useRef)(new Map);(0,w.useEffect)(()=>{i?.page===`einstellungen`&&i?.tab&&(j(i.tab),a())},[i]),(0,w.useEffect)(()=>{let e=e=>{let t=e.detail?.tab;t&&j(t)};return document.addEventListener(`settings-nav`,e),()=>document.removeEventListener(`settings-nav`,e)},[]);let me=(0,w.useEffectEvent)(async()=>{try{let[e,t,n,r,i,a,o,c]=await Promise.all([V(`/api/sources`),V(`/api/logs?lines=100`),V(`/api/daily-impulse`).catch(()=>null),V(`/api/health`).catch(()=>null),V(`/api/privacy-info`).catch(()=>null),V(`/api/settings/followup`).catch(()=>null),V(`/api/settings/report`).catch(()=>null),V(`/api/dismiss-reasons`).catch(()=>[])]);(0,w.startTransition)(()=>{l(e||[]),d(t?.lines||[]),n&&_(n.enabled!==!1),y(r),x(i),a&&P(a),o&&te(e=>({...e,...o})),L(Array.isArray(c)?c:[]),s(!1)})}catch(e){r(`Einstellungen konnten nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>s(!1))}});(0,w.useEffect)(()=>{s(!0),me()},[t]),(0,w.useEffect)(()=>()=>{pe.current.forEach(e=>window.clearInterval(e)),pe.current.clear()},[]);function he(e,t){let n=pe.current.get(e);n&&window.clearInterval(n);let i=window.setInterval(async()=>{try{let n=await V(`/api/background-jobs/${t}`);(0,w.startTransition)(()=>{h(r=>({...r,[e]:{status:n.status,message:n.message||``,jobId:t}}))}),n.status!==`running`&&(window.clearInterval(i),pe.current.delete(e),n.status===`fertig`?r(n.message||`Login abgeschlossen.`,`success`):n.status===`fehler`&&r(n.message||`Login konnte nicht abgeschlossen werden.`,`danger`))}catch(t){window.clearInterval(i),pe.current.delete(e),r(`Login-Status konnte nicht geladen werden: ${t.message}`,`danger`)}},1500);pe.current.set(e,i)}async function ve(e){try{let t=await H(`/api/sources/${e.key}/login`,{});(0,w.startTransition)(()=>{h(n=>({...n,[e.key]:{status:`running`,message:t.nachricht||``,jobId:t.job_id}}))}),r(t.nachricht||`${e.name}: Login wird gestartet.`,`sky`),he(e.key,t.job_id)}catch(e){r(`Login konnte nicht gestartet werden: ${e.message}`,`danger`)}}async function ye(e,t){let i=c,a=c.map(n=>n.key===e.key?{...n,active:t}:n);(0,w.startTransition)(()=>l(a));try{await H(`/api/sources`,{active_sources:a.filter(e=>e.active).map(e=>e.key)}),await n({quiet:!0}),t&&e.login_erforderlich&&await ve(e)}catch(e){(0,w.startTransition)(()=>l(i)),r(`Quelle konnte nicht aktualisiert werden: ${e.message}`,`danger`)}}async function be(e){re(!0);try{let t=await Ot(`/api/settings/report`,e);t?.gespeichert&&te(e=>({...e,...t.gespeichert})),r(`Bericht-Einstellungen gespeichert`,`success`)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{re(!1)}}async function Se(e){F(!0);try{let t=await Ot(`/api/settings/followup`,e);t?.gespeichert&&P(e=>({...e,...t.gespeichert})),r(`Follow-up-Einstellungen gespeichert`,`success`)}catch(e){r(`Speichern fehlgeschlagen: ${e.message}`,`danger`)}finally{F(!1)}}async function Ce(){try{await H(`/api/reset`,{confirm:`RESET`}),r(`Factory Reset ausgeführt. Seite wird neu geladen.`,`success`),window.setTimeout(()=>window.location.reload(),1200)}catch(e){r(`Reset fehlgeschlagen: ${e.message}`,`danger`)}}async function B(){E(!0);try{let e=await fetch(`/api/export-package`);if(!e.ok)throw Error(`Export fehlgeschlagen`);let t=await e.blob(),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`pbp_export_${new Date().toISOString().slice(0,10)}.zip`,i.click(),URL.revokeObjectURL(n),r(`Export heruntergeladen.`,`success`)}catch(e){r(`Export fehlgeschlagen: ${e.message}`,`danger`)}finally{E(!1)}}let we=(0,w.useRef)(null);async function Ee(){try{let e=await V(`/api/profile/export`),t=new Blob([JSON.stringify(e,null,2)],{type:`application/json`}),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`profil_export_${new Date().toISOString().slice(0,10)}.json`,i.click(),URL.revokeObjectURL(n),r(`Profil exportiert`,`success`)}catch(e){r(`Export fehlgeschlagen: ${e.message}`,`danger`)}}async function De(){try{let e=await fetch(Et(`/api/backup`));if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.blob(),n=URL.createObjectURL(t),i=document.createElement(`a`);i.href=n,i.download=`pbp_backup_${new Date().toISOString().slice(0,10)}.db`,i.click(),URL.revokeObjectURL(n),r(`Datenbank-Backup heruntergeladen`,`success`)}catch(e){r(`Backup fehlgeschlagen: ${e.message}`,`danger`)}}async function Oe(e){let t=e.target.files?.[0];if(t)try{let e=new FormData;e.append(`file`,t),await V(`/api/profile/import`,{method:`POST`,body:e}),await n({quiet:!1}),r(`Profil importiert.`,`success`)}catch(e){r(`Profilimport fehlgeschlagen: ${e.message}`,`danger`)}finally{e.target.value=``}}async function ke(){try{await kt(`/api/privacy-delete-all`,{confirm:`ALLES_LOESCHEN`}),r(`Alle Daten geloescht. Seite wird neu geladen.`,`success`),window.setTimeout(()=>window.location.reload(),1500)}catch(e){r(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function Ae(){try{let e=await V(`/api/dismiss-reasons`);L(Array.isArray(e)?e:[])}catch{}}async function je(){let e=(R||``).trim();if(e){z(!0);try{await H(`/api/dismiss-reasons`,{label:e}),ae(``),await Ae(),r(`Ablehnungsgrund "${e}" angelegt.`,`success`)}catch(e){r(e?.message||`Konnte Grund nicht anlegen.`,`danger`)}finally{z(!1)}}}async function Me(e){let t=!!e.is_active;try{await V(`/api/dismiss-reasons/${e.id}`,{method:`PATCH`,body:JSON.stringify({is_active:t?0:1})}),await Ae(),r(`"${e.label}" ${t?`deaktiviert`:`aktiviert`}.`,`success`)}catch(e){r(e?.message||`Konnte Status nicht aendern.`,`danger`)}}function Ne(e){ce(e.id),ue(e.label||``)}function Pe(){ce(null),ue(``)}async function Fe(e){let t=(le||``).trim();if(!t||t===e.label){Pe();return}z(!0);try{let n=await V(`/api/dismiss-reasons/${e.id}`,{method:`PATCH`,body:JSON.stringify({label:t})}),i=n?.rename?.reassigned_jobs||0,a=n?.rename?.status===`zusammengefuehrt`;Pe(),await Ae(),r(a?`Mit "${t}" zusammengefuehrt${i?` (${i} Stellen umgezogen)`:``}.`:`Umbenannt in "${t}"${i?` (${i} Stellen mitgezogen)`:``}.`,`success`)}catch(e){r(e?.message||`Konnte nicht umbenennen.`,`danger`)}finally{z(!1)}}function Ie(e){let t=ie.filter(t=>t.id!==e.id&&(t.is_active===void 0||t.is_active));fe({open:!0,reason:e,reassignTo:t.find(e=>e.label===`sonstiges`)?.label||t[0]?.label||`sonstiges`})}async function Le(){let{reason:e,reassignTo:t}=de;if(!e)return;let n=Number(e.usage_count||0)>0;z(!0);try{await kt(`/api/dismiss-reasons/${e.id}`,{reassign_to:t||``}),fe({open:!1,reason:null,reassignTo:``}),await Ae(),r(n?`"${e.label}" geloescht, Stellen auf "${t}" umgezogen.`:`"${e.label}" geloescht.`,`success`)}catch(e){r(e?.message||`Konnte nicht loeschen.`,`danger`)}finally{z(!1)}}return o?(0,U.jsx)(tr,{label:`Einstellungen werden geladen...`}):(0,U.jsxs)(`div`,{id:`page-einstellungen`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Einstellungen`}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-1 mb-6`,children:[{id:`quellen`,label:`Quellen`},{id:`ai`,label:`Lokale KI`},{id:`automatik`,label:`Automatik`},{id:`bewerten`,label:`Bewertung`},{id:`system`,label:`System`},{id:`erscheinungsbild`,label:`Erscheinungsbild`},{id:`datenschutz`,label:`Datenschutz`},{id:`logs`,label:`Logs`},{id:`gefahrenzone`,label:`Gefahrenzone`}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>j(e.id),className:`px-3 py-1.5 rounded-lg text-sm font-medium transition-colors whitespace-nowrap ${A===e.id?`bg-sky/15 text-sky`:`text-muted/50 hover:text-muted hover:bg-white/5`}`,children:e.label},e.id))}),(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[A===`quellen`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(oa,{sources:c,onToggle:ye,pushToast:r}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Quellen`,description:`Welche Jobportale aktiv durchsucht werden.`}),(0,U.jsx)(sr,{sources:c,loginJobs:m,onToggle:ye,onStartLogin:ve})]}),(0,U.jsx)(sa,{pushToast:r}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Dashboard`,description:`Allgemeine Dashboard-Einstellungen.`}),(0,U.jsxs)(`label`,{className:`flex cursor-pointer items-center gap-3 text-sm text-muted`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:g,onChange:async()=>{try{_((await H(`/api/daily-impulse/toggle`)).enabled)}catch(e){r(`Fehler: ${e.message}`,`danger`)}},className:`h-4 w-4 accent-sky-500`}),`Tagesimpuls im Dashboard anzeigen`]})]})]}),A===`ai`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(pa,{pushToast:r}),(0,U.jsx)(ha,{pushToast:r})]}),A===`automatik`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(ua,{pushToast:r}),(0,U.jsx)(da,{pushToast:r})]}),A===`bewerten`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Ablehnungsgruende`,description:`Eigene Gruende fuer 'passt nicht' anlegen, umbenennen (Tippfehler-Korrektur zieht bestehende Stellen mit), deaktivieren oder loeschen. Aktive Gruende stehen Claude bei stelle_bewerten zur Verfuegung.`}),(0,U.jsxs)(`div`,{className:`mt-4 grid gap-2`,children:[ie.length===0&&(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Noch keine Ablehnungsgruende vorhanden.`}),ie.slice().sort((e,t)=>(t.usage_count||0)-(e.usage_count||0)).map(e=>{let t=e.is_active===void 0?!0:!!e.is_active;return(0,U.jsx)(`div`,{className:`flex items-center justify-between gap-3 rounded-lg border border-white/5 px-3 py-2`,children:se===e.id?(0,U.jsxs)(`div`,{className:`flex flex-1 items-center gap-2`,children:[(0,U.jsx)(Y,{value:le,onChange:e=>ue(e.target.value),autoFocus:!0,onKeyDown:t=>{t.key===`Enter`?(t.preventDefault(),Fe(e)):t.key===`Escape`&&Pe()}}),(0,U.jsx)(G,{type:`button`,onClick:()=>Fe(e),disabled:oe,children:`Speichern`}),(0,U.jsx)(G,{type:`button`,variant:`ghost`,onClick:Pe,children:`Abbrechen`})]}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 min-w-0`,children:[(0,U.jsx)(`span`,{className:`text-sm ${t?`text-ink`:`text-muted/40 line-through`}`,children:e.label}),e.is_custom?(0,U.jsx)(q,{tone:`sky`,children:`eigen`}):null,e.usage_count?(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[e.usage_count,`x`]}):null]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,children:[(0,U.jsx)(G,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>Ne(e),title:`Umbenennen (Tippfehler korrigieren)`,children:(0,U.jsx)(Ge,{size:15})}),(0,U.jsx)(G,{type:`button`,variant:`ghost`,size:`sm`,onClick:()=>Me(e),children:t?`Deaktivieren`:`Aktivieren`}),(0,U.jsx)(G,{type:`button`,variant:`danger`,size:`sm`,onClick:()=>Ie(e),title:`Loeschen`,children:(0,U.jsx)(ot,{size:15})})]})]})},e.id??e.label)})]}),(0,U.jsxs)(`div`,{className:`mt-4 flex items-end gap-2`,children:[(0,U.jsx)(J,{label:`Neuer Grund (z.B. kein_homeoffice)`,className:`flex-1`,children:(0,U.jsx)(Y,{value:R,onChange:e=>ae(e.target.value),placeholder:`snake_case empfohlen`,onKeyDown:e=>{e.key===`Enter`&&(e.preventDefault(),je())}})}),(0,U.jsx)(G,{type:`button`,onClick:je,disabled:oe||!R.trim(),children:`Hinzufuegen`})]})]}),(0,U.jsx)(nr,{open:de.open,onClose:()=>fe({open:!1,reason:null,reassignTo:``}),title:`Ablehnungsgrund loeschen`,size:`sm`,footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,U.jsx)(G,{type:`button`,variant:`ghost`,onClick:()=>fe({open:!1,reason:null,reassignTo:``}),children:`Abbrechen`}),(0,U.jsx)(G,{type:`button`,variant:`danger`,onClick:Le,disabled:oe,children:`Endgueltig loeschen`})]}),children:de.reason&&(0,U.jsxs)(`div`,{className:`space-y-3 text-sm text-muted/80`,children:[(0,U.jsxs)(`p`,{children:[`Grund`,` `,(0,U.jsxs)(`span`,{className:`font-semibold text-ink`,children:[`"`,de.reason.label,`"`]}),` `,`wirklich loeschen?`]}),Number(de.reason.usage_count||0)>0?(0,U.jsx)(J,{label:`Die ${de.reason.usage_count} bisher so aussortierten Stellen neu zuordnen zu:`,children:(0,U.jsx)(Qn,{value:de.reassignTo,onChange:e=>fe(t=>({...t,reassignTo:e.target.value})),children:ie.filter(e=>e.id!==de.reason.id).map(e=>(0,U.jsx)(`option`,{value:e.label,children:e.label},e.id))})}):(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Dieser Grund wird von keiner Stelle verwendet und kann gefahrlos geloescht werden.`})]})})]}),A===`system`&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-amber h-10 w-10`,children:(0,U.jsx)(N,{size:18})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Follow-up-Automation`}),(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Zeitraeume fuer automatisch erzeugte Follow-ups. 0 deaktiviert das jeweilige Auto-Follow-up.`})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,U.jsxs)(J,{label:`Nachfrage nach Bewerbung (Tage)`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(Y,{type:`number`,min:`0`,max:`365`,value:M.followup_default_days,onChange:e=>P(t=>({...t,followup_default_days:e.target.value})),onBlur:e=>{Se({followup_default_days:Math.max(0,Math.min(365,parseInt(e.target.value,10)||0))})},disabled:ee}),(0,U.jsx)(`span`,{className:`text-sm text-muted`,children:`Tage`})]}),(0,U.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Standard: 7. Wird beim Wechsel auf „beworben" angelegt, sofern keines offen ist.`})]}),(0,U.jsxs)(J,{label:`Nachfrage nach Interview (Tage)`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(Y,{type:`number`,min:`0`,max:`365`,value:M.followup_interview_delay_days,onChange:e=>P(t=>({...t,followup_interview_delay_days:e.target.value})),onBlur:e=>{Se({followup_interview_delay_days:Math.max(0,Math.min(365,parseInt(e.target.value,10)||0))})},disabled:ee}),(0,U.jsx)(`span`,{className:`text-sm text-muted`,children:`Tage`})]}),(0,U.jsx)(`p`,{className:`mt-1 text-[11px] text-muted/70`,children:`Standard: 14. Wird nach „interview_abgeschlossen" automatisch erzeugt; alte Follow-ups dieser Bewerbung werden hinfaellig.`})]})]})]}),A===`system`&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4 flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-sky h-10 w-10`,children:(0,U.jsx)(D,{size:18})}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`text-base font-semibold text-ink`,children:`Bewerbungsbericht`}),(0,U.jsx)(`p`,{className:`text-xs text-muted`,children:`Optionale Felder fuer den PDF-/Excel-Bericht. Nuetzlich fuer Anwender, die ihren Bericht beim Arbeitsamt vorlegen — sonst einfach den Haken weglassen.`})]})]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-3 cursor-pointer mb-4`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!I.arbeitsamt_block_enabled,onChange:e=>{let t=e.target.checked;te(e=>({...e,arbeitsamt_block_enabled:t})),be({arbeitsamt_block_enabled:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Arbeitsamt-Vorlagenblock im Bericht anzeigen`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Wenn aktiv, wird auf der Cover-Page ein Block mit Vermittlungsnummer, Aktenzeichen und Berater-Daten gerendert. Ohne Haken werden die Felder ignoriert — du musst sie nicht loeschen.`})]})]}),(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2 ${I.arbeitsamt_block_enabled?``:`opacity-50 pointer-events-none`}`,children:[(0,U.jsx)(J,{label:`Vermittlungsnummer`,children:(0,U.jsx)(Y,{type:`text`,maxLength:200,value:I.ba_vermittlungsnummer,onChange:e=>te(t=>({...t,ba_vermittlungsnummer:e.target.value})),onBlur:e=>be({ba_vermittlungsnummer:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. 123ABC456`})}),(0,U.jsx)(J,{label:`Aktenzeichen`,children:(0,U.jsx)(Y,{type:`text`,maxLength:200,value:I.ba_aktenzeichen,onChange:e=>te(t=>({...t,ba_aktenzeichen:e.target.value})),onBlur:e=>be({ba_aktenzeichen:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. 12345/2026`})}),(0,U.jsx)(J,{label:`Berater(in)`,children:(0,U.jsx)(Y,{type:`text`,maxLength:200,value:I.ba_berater_name,onChange:e=>te(t=>({...t,ba_berater_name:e.target.value})),onBlur:e=>be({ba_berater_name:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`Name der Beratungsperson`})}),(0,U.jsx)(J,{label:`Beratungsstelle`,children:(0,U.jsx)(Y,{type:`text`,maxLength:200,value:I.ba_berater_stelle,onChange:e=>te(t=>({...t,ba_berater_stelle:e.target.value})),onBlur:e=>be({ba_berater_stelle:e.target.value}),disabled:ne||!I.arbeitsamt_block_enabled,placeholder:`z.B. Agentur fuer Arbeit Bremen`})})]}),(0,U.jsxs)(`label`,{className:`mt-5 flex items-center gap-3 cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!I.berater_kommentar_block,onChange:e=>{let t=e.target.checked;te(e=>({...e,berater_kommentar_block:t})),be({berater_kommentar_block:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Beraterkommentar-Block am Berichtende`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Fuegt am Ende des Berichts leere Linien fuer handschriftliche Anmerkungen ein.`})]})]}),(0,U.jsxs)(`label`,{className:`mt-3 flex items-center gap-3 cursor-pointer`,children:[(0,U.jsx)(`input`,{type:`checkbox`,checked:!!I.taetigkeitsbericht_mode,onChange:e=>{let t=e.target.checked;te(e=>({...e,taetigkeitsbericht_mode:t})),be({taetigkeitsbericht_mode:t})},disabled:ne,className:`h-4 w-4 cursor-pointer`}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Taetigkeitsbericht-Modus`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/70`,children:`Fokus auf taegliche Aktivitaet als Nachweis fuer Vermittler/Berater. Cover-Titel wird zu „Taetigkeitsbericht" und der Bericht enthaelt eine zusaetzliche tagesgruppierte Uebersicht aller Bewerbungs-Ereignisse.`})]})]}),(0,U.jsx)(ca,{pushToast:r})]}),A===`system`&&v&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`System-Info`,description:`Technische Details fuer Fehlerdiagnose.`}),(0,U.jsxs)(`div`,{className:`grid gap-4 sm:grid-cols-2`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-3 space-y-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[(0,U.jsx)(D,{size:14,className:`text-sky`}),`Versionen`]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`PBP: `,(0,U.jsxs)(`span`,{className:`text-ink`,children:[`v`,v.pbp_version]})]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Python: `,(0,U.jsx)(`span`,{className:`text-ink`,children:v.python_version})]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Plattform: `,(0,U.jsx)(`span`,{className:`text-ink`,children:v.platform_detail})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 space-y-1.5`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink`,children:[(0,U.jsx)(Te,{size:14,className:`text-teal`}),`Speicher`]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Datenbank: `,(0,U.jsxs)(`span`,{className:`text-ink`,children:[v.db_size_mb,` MB`]})]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`Dokumente: `,(0,U.jsxs)(`span`,{className:`text-ink`,children:[v.document_count,` Dateien`]})]}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/60 break-all`,children:[`Pfad: `,(0,U.jsx)(`span`,{className:`text-ink`,children:v.data_dir})]})]})]}),(0,U.jsxs)(`div`,{className:`mt-4 glass-card p-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 text-sm font-medium text-ink mb-2`,children:[(0,U.jsx)(Ve,{size:14,className:`text-amber`}),`Module`]}),(0,U.jsx)(`div`,{className:`flex flex-wrap gap-2`,children:v.modules&&Object.entries(v.modules).map(([e,t])=>(0,U.jsxs)(q,{tone:t?`success`:`neutral`,children:[e,` `,t||`—`]},e))})]}),v.mcp_connection&&(0,U.jsx)(`div`,{className:`mt-4 glass-card p-3`,children:(0,U.jsxs)(`p`,{className:`text-xs text-muted/60`,children:[`MCP-Verbindung: `,(0,U.jsx)(`span`,{className:`font-medium ${v.mcp_connection.status===`connected`?`text-teal`:v.mcp_connection.status===`unknown`?`text-amber`:`text-red-400`}`,children:v.mcp_connection.status}),v.mcp_connection.last_tool&&(0,U.jsxs)(U.Fragment,{children:[` — Letztes Tool: `,(0,U.jsx)(`span`,{className:`text-ink`,children:v.mcp_connection.last_tool})]})]})})]}),A===`erscheinungsbild`&&(0,U.jsx)(ra,{}),A===`datenschutz`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Datenschutz`,description:`Wo liegen deine Daten und was wird wohin gesendet.`}),b&&(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsxs)(`h3`,{className:`text-sm font-medium text-ink mb-2 flex items-center gap-2`,children:[(0,U.jsx)(xe,{size:14,className:`text-sky`}),`Datenfluss`]}),(0,U.jsxs)(`div`,{className:`space-y-2 text-xs`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`span`,{className:`text-teal font-medium`,children:`Nur lokal gespeichert:`}),(0,U.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.local_only.join(`, `)})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`span`,{className:`text-amber font-medium`,children:`An Claude Desktop (du kontrollierst):`}),(0,U.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.sent_to_claude.join(`, `)})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`span`,{className:`text-sky font-medium`,children:`Externe Anfragen:`}),(0,U.jsx)(`p`,{className:`text-muted/60 mt-0.5`,children:b.data_flow.external_requests.join(`, `)})]})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`text-sm font-medium text-ink mb-2`,children:`Gespeicherte Daten`}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 text-xs text-muted/60`,children:[(0,U.jsxs)(`p`,{children:[`Profile: `,(0,U.jsx)(`span`,{className:`text-ink`,children:b.counts.profiles})]}),(0,U.jsxs)(`p`,{children:[`Stellen: `,(0,U.jsx)(`span`,{className:`text-ink`,children:b.counts.jobs})]}),(0,U.jsxs)(`p`,{children:[`Bewerbungen: `,(0,U.jsx)(`span`,{className:`text-ink`,children:b.counts.applications})]}),(0,U.jsxs)(`p`,{children:[`Dokumente: `,(0,U.jsx)(`span`,{className:`text-ink`,children:b.counts.documents})]})]}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/40 mt-2 break-all`,children:[`Speicherort: `,b.storage.data_dir]})]})]})]}),(0,U.jsx)(ia,{pushToast:r}),(0,U.jsx)(aa,{pushToast:r}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Datenauskunft (DSGVO Art. 15)`,description:`PDF-Bericht: Welche Daten hat PBP gespeichert, wo liegen sie, seit wann.`}),(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Selbstauskunft als PDF erstellen`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Strukturierter Bericht: Profil, Skills, Berufserfahrung, Dokumenten-/Bewerbungs-/ Stellen-/Termine-Anzahlen, Speicherort. Inhalte deiner Dokumente und E-Mails sind NICHT enthalten — nur die Meta-Information dass sie existieren.`})]}),(0,U.jsxs)(`a`,{href:Et(`/api/privacy/self-disclosure.pdf`),target:`_blank`,rel:`noreferrer`,className:`inline-flex items-center gap-1.5 rounded-lg border border-white/10 bg-white/[0.03] px-3 py-1.5 text-sm font-medium text-ink hover:bg-white/[0.08]`,children:[(0,U.jsx)(_e,{size:14}),`PDF`]})]})]}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Daten & Backup`,description:`Daten exportieren, sichern oder aus einer Datei importieren.`}),(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Komplett-Export (ZIP)`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Alle Profile, Bewerbungen, Dokumente und Einstellungen als ZIP-Paket.`})]}),(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:B,disabled:T,children:[(0,U.jsx)(Ve,{size:14}),T?`Erstelle...`:`Herunterladen`]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Datenbank-Backup (SQLite)`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Rohe Datenbankdatei — fuer technische Wiederherstellung.`})]}),(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:De,children:[(0,U.jsx)(ge,{size:14}),` Herunterladen`]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Profil exportieren (JSON)`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Nur das aktive Profil als JSON — fuer Uebertragung zwischen Installationen.`})]}),(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:Ee,children:[(0,U.jsx)(_e,{size:14}),` Exportieren`]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 flex items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-sm font-medium text-ink`,children:`Profil importieren (JSON)`}),(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Ein zuvor exportiertes Profil wiederherstellen.`})]}),(0,U.jsx)(`input`,{ref:we,type:`file`,accept:`.json`,className:`hidden`,onChange:Oe}),(0,U.jsxs)(G,{variant:`secondary`,size:`sm`,onClick:()=>we.current?.click(),children:[(0,U.jsx)(dt,{size:14}),` Importieren`]})]})]})]}),(0,U.jsx)(K,{className:`rounded-2xl border border-amber/20 bg-amber/5`,children:(0,U.jsxs)(`p`,{className:`text-xs text-muted`,children:[`Moechtest du Daten loeschen? Alle Optionen findest du im Tab`,` `,(0,U.jsx)(`button`,{type:`button`,className:`text-sky underline`,onClick:()=>j(`gefahrenzone`),children:`Gefahrenzone`}),`.`]})})]}),A===`logs`&&(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsxs)(K,{className:`rounded-2xl border-sky/20 bg-sky/[0.03]`,children:[(0,U.jsx)(qn,{title:`Bug gefunden? Log mitsenden.`,description:`Der Download enthaelt die letzten Eintraege des Runtime-Logs. Beim Issue auf GitHub bitte als Anhang mitsenden — beschleunigt die Analyse drastisch.`}),(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-3`,children:[(0,U.jsx)(G,{variant:`secondary`,size:`sm`,onClick:async()=>{try{let e=await fetch(Et(`/api/system/logs/download`));if(!e.ok)throw Error(`HTTP ${e.status}`);let t=await e.blob(),n=window.URL.createObjectURL(t),i=document.createElement(`a`),a=new Date().toISOString().replace(/[:T]/g,`-`).slice(0,19);i.href=n,i.download=`pbp-log-${a}.log`,document.body.appendChild(i),i.click(),document.body.removeChild(i),window.URL.revokeObjectURL(n),r(`Log heruntergeladen — bei Bug-Report als Anhang mitsenden`,`success`,{duration:4e3})}catch(e){r(`Log-Download fehlgeschlagen: ${e.message}`,`danger`)}},children:`Log-Datei herunterladen`}),(0,U.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new`,target:`_blank`,rel:`noopener noreferrer`,className:`text-xs text-sky hover:underline`,children:`Issue auf GitHub aufmachen →`})]}),(0,U.jsxs)(`p`,{className:`mt-3 text-[11px] text-muted/60`,children:[(0,U.jsx)(`strong`,{className:`text-amber/80`,children:`Datenschutz-Hinweis:`}),` Das Logfile kann persoenliche Daten enthalten (Firmennamen, Pfade, Job-Hashes). Pruefe es kurz vor dem Hochladen oder schwaerze sensible Stellen.`]})]}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Runtime-Logs (Live-Vorschau)`,description:`Die letzten Zeilen aus dem Dashboard-Log fuer schnelle Diagnose.`}),(0,U.jsx)(`div`,{className:`soft-scrollbar glass-log max-h-[28rem] overflow-y-auto p-4`,children:u.length?u.map((e,t)=>(0,U.jsx)(`p`,{children:e},`${t}-${e.slice(0,20)}`)):(0,U.jsx)(`p`,{children:`Keine Logs gefunden.`})})]})]}),A===`gefahrenzone`&&(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[(0,U.jsxs)(K,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Alle Daten loeschen (DSGVO)`,description:`Loescht Datenbank und Dokumente unwiderruflich. Das wird geloescht: Profil, Bewerbungen, Stellen, Dokumente, Einstellungen.`}),(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,U.jsx)(ot,{size:16})}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,U.jsx)(`strong`,{className:`text-ink`,children:`ALLES_LOESCHEN`}),` ein, um alle Daten unwiderruflich zu entfernen.`]})]}),(0,U.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,U.jsx)(J,{label:`Bestaetigung`,children:(0,U.jsx)(Y,{className:`!w-56`,value:S,onChange:e=>C(e.target.value),placeholder:`ALLES_LOESCHEN`})}),(0,U.jsxs)(G,{variant:`danger`,disabled:S!==`ALLES_LOESCHEN`,onClick:ke,children:[(0,U.jsx)(ot,{size:15}),`Endgueltig loeschen`]})]})]})]}),e?.profile?.name&&(0,U.jsxs)(K,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Profil loeschen`,description:`Loescht das aktive Profil "${e.profile.name}" inkl. aller Positionen, Skills, Bewerbungen und Dokumente unwiderruflich.`}),(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,U.jsx)(ot,{size:16})}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib den Profilnamen `,(0,U.jsx)(`strong`,{className:`text-ink`,children:e.profile.name}),` exakt ein, um das Profil zu loeschen.`]})]}),(0,U.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,U.jsx)(J,{label:`Profilname bestaetigen`,children:(0,U.jsx)(Y,{className:`!w-56`,value:O,onChange:e=>k(e.target.value),placeholder:e.profile.name})}),(0,U.jsxs)(G,{variant:`danger`,disabled:O!==e.profile.name,onClick:async()=>{try{await kt(`/api/profiles/${e.profile.id}`),k(``),r(`Profil geloescht.`,`success`),n()}catch(e){r(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}},children:[(0,U.jsx)(ot,{size:15}),`Profil loeschen`]})]})]})]}),(0,U.jsxs)(K,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,U.jsx)(qn,{title:`Factory Reset`,description:`Setzt die App in einen sauberen Zustand zurueck. Das wird geloescht: Alle Profile, Stellen, Bewerbungen, Dokumente — die App wird wie neu.`}),(0,U.jsxs)(`div`,{className:`flex flex-col items-center gap-4`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,U.jsx)(tt,{size:16})}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,U.jsx)(`strong`,{className:`text-ink`,children:`RESET`}),` ein, wenn du wirklich alles zuruecksetzen willst.`]})]}),(0,U.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,U.jsx)(J,{label:`Bestaetigung`,children:(0,U.jsx)(Y,{className:`!w-48`,value:f,onChange:e=>p(e.target.value),placeholder:`RESET`})}),(0,U.jsxs)(G,{variant:`danger`,disabled:f!==`RESET`,onClick:Ce,children:[(0,U.jsx)(rt,{size:15}),`Factory Reset`]})]})]})]}),(0,U.jsx)(xa,{pushToast:r})]})]})]})}function xa({pushToast:e}){let[t,n]=(0,w.useState)(``),[r,i]=(0,w.useState)(!1);async function a(){i(!0);try{e((await H(`/api/danger/launch-uninstaller`,{confirm:`DEINSTALLIEREN`}))?.hint||`Deinstaller gestartet — folge dem neuen Konsolen-Fenster`,`success`),n(``)}catch(t){e(`Fehler: ${t.message}`,`danger`)}finally{i(!1)}}return(0,U.jsxs)(K,{className:`glass-banner glass-banner-danger rounded-2xl`,children:[(0,U.jsx)(qn,{title:`PBP komplett deinstallieren`,description:`Entfernt PBP von diesem Rechner: Programmdateien, Registry-Eintrag, Desktop-Verknuepfung und MCP-Eintrag in Claude Desktop. Im Deinstaller wirst du gefragt ob du auch deine Bewerbungsdaten loeschen willst.`}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-4`,children:[(0,U.jsxs)(`div`,{className:`rounded-xl border border-amber/30 bg-amber/[0.05] p-3 text-[12px] text-amber/90`,children:[(0,U.jsx)(`strong`,{className:`text-amber`,children:`Wichtig — was NICHT mit deinstalliert wird:`}),(0,U.jsxs)(`ul`,{className:`mt-1.5 ml-4 list-disc space-y-0.5`,children:[(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Claude Desktop`}),` — Anthropics App. Bleibt installiert. Manuell ueber `,(0,U.jsx)(`em`,{children:`Windows Apps & Features`}),` entfernen wenn gewuenscht.`]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Ollama`}),` — falls du es fuer die lokale AI installiert hast. Bleibt installiert. Manuell ueber `,(0,U.jsx)(`em`,{children:`Windows Apps & Features`}),` entfernen.`]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{children:`Python`}),` — falls du eine eigene Installation neben PBP nutzt. PBPs eigenes Python (im AppData) wird komplett entfernt.`]})]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon glass-icon-danger h-10 w-10 shrink-0`,children:(0,U.jsx)(ot,{size:16})}),(0,U.jsxs)(`p`,{className:`text-sm text-muted`,children:[`Gib `,(0,U.jsx)(`strong`,{className:`text-ink`,children:`DEINSTALLIEREN`}),` ein, um die Komplett-Deinstallation zu starten. Es oeffnet sich ein neues Konsolen-Fenster mit den Deinstaller-Prompts.`]})]}),(0,U.jsxs)(`div`,{className:`flex items-end gap-3`,children:[(0,U.jsx)(J,{label:`Bestaetigung`,children:(0,U.jsx)(Y,{className:`!w-56`,value:t,onChange:e=>n(e.target.value),placeholder:`DEINSTALLIEREN`})}),(0,U.jsxs)(G,{variant:`danger`,disabled:t!==`DEINSTALLIEREN`||r,onClick:a,children:[(0,U.jsx)(ot,{size:15}),`Deinstaller starten`]})]})]})]})}var Sa={interview:`Interview`,zweitgespraech:`2. Gespraech`,telefoninterview:`Telefoninterview`,assessment:`Assessment`,kennenlernen:`Kennenlernen`,followup:`Follow-up`,sonstiges:`Termin`};function Ca(e){return Sa[e]||e||`Termin`}function wa(e){if(!e)return!1;let t=new Date(e),n=new Date;return t.toDateString()===n.toDateString()?!1:te.toLocaleDateString(`de-DE`,n);return e===`woche`?`${r(t.start)} – ${r(t.end)}`:e===`monat`?t.start.toLocaleDateString(`de-DE`,{month:`long`,year:`numeric`}):e===`quartal`?`Q${Math.floor(t.start.getMonth()/3)+1} ${t.start.getFullYear()}`:`H${t.start.getMonth()<6?1:2} ${t.start.getFullYear()}`}function Pa(e,t){if(!e)return!1;let n=new Date(e);return n.setHours(0,0,0,0),n>=t.start&&n<=t.end}function Fa(e){return{title:``,meeting_date:e||new Date().toISOString().slice(0,16),meeting_type:`sonstiges`,location:``,notes:``,application_id:``,duration_minutes:60,is_private:!1,category_id:``}}function Ia(e,t){let n=new Date(e,t,1),r=new Date(e,t+1,0),i=n.getDay()===0?6:n.getDay()-1,a=[];for(let n=i-1;n>=0;n--){let r=new Date(e,t,-n);a.push({date:r,isCurrentMonth:!1})}for(let n=1;n<=r.getDate();n++)a.push({date:new Date(e,t,n),isCurrentMonth:!0});for(;a.length%7!=0;){let n=new Date(e,t+1,a.length-i-r.getDate()+1);a.push({date:n,isCurrentMonth:!1})}return a}function La(e){return`${e.getFullYear()}-${String(e.getMonth()+1).padStart(2,`0`)}-${String(e.getDate()).padStart(2,`0`)}`}function Ra({year:e,month:t,meetingsByDate:n,onDayClick:r,onMeetingClick:i,compact:a,collisionIds:o}){let s=Ia(e,t),c=La(new Date);return(0,U.jsxs)(`div`,{children:[a&&(0,U.jsxs)(`h3`,{className:`mb-2 text-xs font-semibold text-muted/50`,children:[Aa[t],` `,e]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-7 gap-px rounded-xl overflow-hidden border border-white/[0.06]`,children:[ka.map(e=>(0,U.jsx)(`div`,{className:`bg-white/[0.03] px-1 py-1.5 text-center text-[10px] font-semibold text-muted/40 uppercase`,children:e},e)),s.map((e,t)=>{let s=La(e.date),l=n[s]||[],u=s===c,d=e.dater(e.date),children:[(0,U.jsx)(`span`,{className:W(`text-[11px] font-medium`,u?`inline-flex h-5 w-5 items-center justify-center rounded-full bg-sky text-shell font-bold`:``,!u&&e.isCurrentMonth?d?`text-muted/30`:`text-ink/70`:``,!u&&!e.isCurrentMonth?`text-muted/15`:``),children:e.date.getDate()}),!a&&l.length>0&&(0,U.jsxs)(`div`,{className:`mt-0.5 space-y-0.5`,children:[l.slice(0,3).map(e=>{let t=o.has(e.id),n=e.category_color||(e.is_private?`#6b7280`:e.is_follow_up?`#f59e0b`:`#0ea5e9`);return(0,U.jsx)(`button`,{type:`button`,className:W(`block w-full truncate rounded px-1 py-px text-left text-[10px] font-medium transition-colors hover:brightness-125`,t&&`ring-1 ring-amber/50`),style:{backgroundColor:`${n}20`,color:n},onClick:t=>{t.stopPropagation(),i(e)},title:`${e.is_private?`Geblockt`:e.title} — ${Cn(e.meeting_date)}`,children:e.is_private?`Geblockt`:e.title},e.id)}),l.length>3&&(0,U.jsxs)(`span`,{className:`block text-[9px] text-muted/40 px-1`,children:[`+`,l.length-3]})]}),a&&l.length>0&&(0,U.jsx)(`div`,{className:`absolute bottom-0.5 left-1/2 flex -translate-x-1/2 gap-0.5`,children:l.slice(0,3).map(e=>(0,U.jsx)(`span`,{className:`inline-block h-1 w-1 rounded-full`,style:{backgroundColor:e.category_color||(e.is_private?`#6b7280`:`#0ea5e9`)}},e.id))})]},t)})]})]})}function za(){let{reloadKey:e,pushToast:t,navigateTo:n,copyPrompt:r}=jt(),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)([]),[c,l]=(0,w.useState)([]),[u,d]=(0,w.useState)([]),[f,p]=(0,w.useState)([]),[m,h]=(0,w.useState)(`all`),[g,_]=(0,w.useState)(`kalender`),[v,y]=(0,w.useState)(`monat`),[b,x]=(0,w.useState)(new Date),[S,C]=(0,w.useState)(Oa),[T,E]=(0,w.useState)([]),[D,O]=(0,w.useState)(90),[k,A]=(0,w.useState)(!1),[j,M]=(0,w.useState)(()=>{try{let e=localStorage.getItem(`pbp-meeting-cat-filter`);if(e)return JSON.parse(e)}catch{}return{}}),[N,P]=(0,w.useState)(null),[ee,I]=(0,w.useState)(null),[te,re]=(0,w.useState)(!1),[ie,L]=(0,w.useState)({name:``,color:`#3b82f6`,show_in_stats:!0});(0,w.useEffect)(()=>{function e(e){let{action:t}=e.detail||{};t===`cal-view-kalender`?_(`kalender`):t===`cal-view-log`?_(`log`):t===`cal-period-woche`?(y(`woche`),x(new Date)):t===`cal-period-monat`?(y(`monat`),x(new Date)):t===`cal-period-quartal`?(y(`quartal`),x(new Date)):t===`cal-period-halbjahr`?(y(`halbjahr`),x(new Date)):t===`cal-filter-all`?h(`all`):t===`cal-filter-upcoming`?h(`upcoming`):t===`cal-filter-past`&&h(`past`)}return document.addEventListener(`cal-nav`,e),()=>document.removeEventListener(`cal-nav`,e)},[]),(0,w.useEffect)(()=>{document.querySelectorAll(`[data-cal-action]`).forEach(e=>{let t=e.dataset.calAction,n=t===`cal-view-${g}`||t===`cal-period-${v}`||t===`cal-filter-${m}`;e.classList.toggle(`bg-white/[0.06]`,n),e.classList.toggle(`text-ink`,n),e.classList.toggle(`text-muted/60`,!n)})},[g,v,m]);let z=(0,w.useEffectEvent)(async()=>{try{let[e,t]=await Promise.all([V(`/api/meetings/calendar?days=365`),V(`/api/applications`)]);s(e?.meetings||[]),l(e?.collisions||[]),d(e?.categories||[]),p(t?.applications||[])}catch(e){t(`Termine konnten nicht geladen werden: ${e.message}`,`danger`)}finally{a(!1)}});(0,w.useEffect)(()=>{z()},[e]);let se=(0,w.useEffectEvent)(async()=>{A(!0);try{E((await V(`/api/activity-log?days=${D}&categories=${Object.entries(S).filter(([,e])=>e).map(([e])=>e).join(`,`)}`))?.entries||[])}catch(e){t(`Aktivitaetslog konnte nicht geladen werden: ${e.message}`,`danger`)}finally{A(!1)}});(0,w.useEffect)(()=>{g===`log`&&se()},[g,D,S,e]);function ce(e){C(t=>{let n={...t,[e]:!t[e]};return localStorage.setItem(`pbp-calendar-categories`,JSON.stringify(n)),n})}function ue(e){M(t=>{let n={...t,[e]:t[e]===!1};return localStorage.setItem(`pbp-meeting-cat-filter`,JSON.stringify(n)),n})}async function de(){if(ee)try{await kt(`/api/meetings/${ee.id}`),s(e=>e.filter(e=>e.id!==ee.id)),t(`Termin geloescht`,`success`),I(null)}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function fe(){if(!N)return;let e=N._isNew,n={title:N.title,meeting_date:N.meeting_date,meeting_type:N.meeting_type,location:N.location||``,notes:N.notes||``,application_id:N.application_id||null,is_private:N.is_private||!1,duration_minutes:N.duration_minutes?Number(N.duration_minutes):null,category_id:N.category_id||null};if(n.duration_minutes&&n.meeting_date){let e=new Date(n.meeting_date);n.meeting_end=new Date(e.getTime()+n.duration_minutes*60*1e3).toISOString().slice(0,16)}try{e?(await H(`/api/meetings`,n),t(`Termin angelegt`,`success`)):(await Ot(`/api/meetings/${N.id}`,n),t(`Termin aktualisiert`,`success`)),P(null),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function me(){if(ie.name.trim())try{await H(`/api/meeting-categories`,ie),t(`Kategorie "${ie.name}" erstellt`,`success`),L({name:``,color:`#3b82f6`,show_in_stats:!0}),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function he(e){if(e.is_system){t(`Systemkategorien koennen nicht geloescht werden`,`danger`);return}if(window.confirm(`Kategorie "${e.name}" loeschen? Bestehende Termine werden entkoppelt.`))try{await kt(`/api/meeting-categories/${e.id}`,{}),t(`Kategorie "${e.name}" geloescht`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function ge(e,n){try{await Ot(`/api/meeting-categories/${e.id}`,n),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}let ve=new Set(c.flatMap(e=>[e.meeting_1,e.meeting_2])),be=ja(v,b),xe=o.filter(e=>!(e.is_follow_up&&!S.followups||!e.is_follow_up&&!S.termine||e.category_id&&j[e.category_id]===!1||m===`upcoming`&&wa(e.meeting_date)||m===`past`&&!wa(e.meeting_date))),Se={};for(let e of xe){let t=(e.meeting_date||``).slice(0,10);Se[t]||(Se[t]=[]),Se[t].push(e)}let Ce=xe.filter(e=>Pa(e.meeting_date,be)),B={};for(let e of Ce){let t=(e.meeting_date||``).slice(0,10);B[t]||(B[t]=[]),B[t].push(e)}let we=Object.keys(B).sort();function Te(e){P({...Fa(`${La(e)}T09:00`),_isNew:!0})}function Ee(e){e.application_id?n(`bewerbungen`,{highlight:e.application_id}):P({...e,_isNew:!1})}function De(){let e=[],t=new Date(be.start);for(;t<=be.end;)e.push({year:t.getFullYear(),month:t.getMonth()}),t.setMonth(t.getMonth()+1);return e}return i?(0,U.jsx)(tr,{}):(0,U.jsxs)(`div`,{id:`page-kalender`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Kalender`}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/50 mb-2`,children:[o.length,` Termine`]}),(0,U.jsx)(`div`,{className:`mb-4 flex flex-wrap items-center justify-end gap-3`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>x(e=>Ma(v,e,-1)),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink hover:bg-white/[0.04]`,children:(0,U.jsx)(R,{size:16})}),(0,U.jsx)(`span`,{className:`text-sm font-medium text-ink min-w-[140px] text-center`,children:g===`kalender`?Na(v,be):`Letzten ${D} Tage`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>x(e=>Ma(v,e,1)),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink hover:bg-white/[0.04]`,children:(0,U.jsx)(ae,{size:16})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>x(new Date),className:`rounded-lg px-2 py-1 text-xs text-muted/40 hover:text-sky hover:bg-white/[0.04]`,children:`Heute`}),(0,U.jsx)(`span`,{className:`mx-1 h-4 w-px bg-white/10`}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>re(!0),children:[(0,U.jsx)(et,{size:12}),` Kategorien`]}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>P({...Fa(),_isNew:!0}),children:[(0,U.jsx)(Je,{size:12}),` Neuer Termin`]}),(0,U.jsxs)(Gn,{size:`sm`,href:Et(`/api/meetings/export.ics`),target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(_e,{size:14}),` ICS`]})]})}),(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-2`,children:[g===`log`&&Ea.map(e=>{let t=e.icon,n=S[e.key];return(0,U.jsxs)(`button`,{type:`button`,onClick:()=>ce(e.key),className:W(`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors`,n?Da[e.key]:`text-muted/30 bg-white/[0.02] line-through`),children:[(0,U.jsx)(t,{size:12}),e.label]},e.key)}),g===`kalender`&&u.length>0&&(0,U.jsx)(U.Fragment,{children:u.map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>ue(e.id),className:W(`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors`,j[e.id]===!1?`text-muted/30 bg-white/[0.02] line-through`:`bg-white/[0.05] text-ink`),children:[(0,U.jsx)(`span`,{className:`inline-block w-2.5 h-2.5 rounded-full shrink-0`,style:{backgroundColor:e.color||`#3b82f6`}}),e.name]},e.id))})]}),N&&(0,U.jsx)(nr,{open:!0,title:N._isNew?`Neuen Termin anlegen`:`Termin bearbeiten`,onClose:()=>P(null),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(J,{label:`Titel *`,children:(0,U.jsx)(Y,{value:N.title,onChange:e=>P(t=>({...t,title:e.target.value})),placeholder:`z.B. Interview bei Firma XY`})}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,U.jsx)(J,{label:`Datum & Uhrzeit *`,children:(0,U.jsx)(Y,{type:`datetime-local`,value:N.meeting_date,onChange:e=>P(t=>({...t,meeting_date:e.target.value}))})}),(0,U.jsx)(J,{label:`Dauer (Minuten)`,children:(0,U.jsx)(Y,{type:`number`,min:`5`,step:`5`,value:N.duration_minutes||``,onChange:e=>P(t=>({...t,duration_minutes:e.target.value})),placeholder:`60`})})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-4`,children:[(0,U.jsx)(J,{label:`Typ`,children:(0,U.jsx)(Qn,{value:N.meeting_type,onChange:e=>P(t=>({...t,meeting_type:e.target.value})),children:Object.entries(Sa).map(([e,t])=>(0,U.jsx)(`option`,{value:e,children:t},e))})}),(0,U.jsx)(J,{label:`Kategorie`,children:(0,U.jsxs)(Qn,{value:N.category_id||``,onChange:e=>P(t=>({...t,category_id:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Keine`}),u.map(e=>(0,U.jsx)(`option`,{value:e.id,children:e.name},e.id))]})})]}),(0,U.jsx)(J,{label:`Bewerbung verknuepfen (optional)`,children:(0,U.jsxs)(Qn,{value:N.application_id||``,onChange:e=>P(t=>({...t,application_id:e.target.value})),children:[(0,U.jsx)(`option`,{value:``,children:`Keine Verknuepfung`}),f.map(e=>(0,U.jsxs)(`option`,{value:e.id,children:[e.company||`Unbekannt`,` — `,e.title||`Keine Stelle`]},e.id))]})}),(0,U.jsx)(J,{label:`Ort (optional)`,children:(0,U.jsx)(Y,{value:N.location||``,onChange:e=>P(t=>({...t,location:e.target.value})),placeholder:`z.B. Zoom, Buero, ...`})}),(0,U.jsx)(J,{label:`Notizen (optional)`,children:(0,U.jsx)(Xn,{value:N.notes||``,onChange:e=>P(t=>({...t,notes:e.target.value})),rows:2})}),(0,U.jsx)(`div`,{className:`flex items-center gap-3`,children:(0,U.jsxs)(`label`,{className:`flex items-center gap-2 text-sm text-muted cursor-pointer`,children:[(0,U.jsx)($n,{checked:N.is_private||!1,onChange:e=>P(t=>({...t,is_private:e.target.checked}))}),`Privater Termin (wird als “Geblockt” angezeigt, nicht in Statistik)`]})}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>P(null),children:`Abbrechen`}),(0,U.jsx)(G,{disabled:!N.title||!N.meeting_date,onClick:fe,children:N._isNew?`Anlegen`:`Speichern`})]})]})}),ee&&(0,U.jsxs)(nr,{open:!0,title:`Termin loeschen`,onClose:()=>I(null),children:[(0,U.jsxs)(`p`,{className:`text-sm text-muted mb-2`,children:[`Soll der Termin `,(0,U.jsxs)(`strong`,{className:`text-ink`,children:[`“`,ee.title,`”`]}),` wirklich geloescht werden?`]}),ee.application_id&&(0,U.jsx)(`p`,{className:`text-xs text-amber mb-4`,children:`Dieser Termin ist mit einer Bewerbung verknuepft. Der Timeline-Eintrag wird ebenfalls entfernt.`}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>I(null),children:`Abbrechen`}),(0,U.jsx)(G,{variant:`danger`,onClick:de,children:`Endgueltig loeschen`})]})]}),te&&(0,U.jsx)(nr,{open:!0,title:`Termin-Kategorien verwalten`,onClose:()=>re(!1),children:(0,U.jsxs)(`div`,{className:`grid gap-3`,children:[u.map(e=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 rounded-xl border border-white/[0.05] px-4 py-2.5`,children:[(0,U.jsx)(`input`,{type:`color`,value:e.color||`#3b82f6`,onChange:t=>ge(e,{color:t.target.value}),className:`h-6 w-6 rounded cursor-pointer border-0 bg-transparent`,disabled:e.is_system}),(0,U.jsxs)(`span`,{className:`flex-1 text-sm text-ink font-medium`,children:[e.name,e.is_system?(0,U.jsx)(q,{tone:`neutral`,className:`ml-2`,children:`System`}):null]}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1.5 text-xs text-muted cursor-pointer`,children:[(0,U.jsx)($n,{checked:e.show_in_stats!==0,onChange:t=>ge(e,{show_in_stats:t.target.checked?1:0})}),`Statistik`]}),!e.is_system&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>he(e),className:`text-muted/30 hover:text-coral p-1`,children:(0,U.jsx)(ot,{size:14})})]},e.id)),(0,U.jsxs)(`div`,{className:`border-t border-white/5 pt-3 mt-1`,children:[(0,U.jsx)(`p`,{className:`text-xs text-muted/50 mb-2`,children:`Neue Kategorie`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(`input`,{type:`color`,value:ie.color,onChange:e=>L(t=>({...t,color:e.target.value})),className:`h-8 w-8 rounded cursor-pointer border-0 bg-transparent`}),(0,U.jsx)(Y,{value:ie.name,onChange:e=>L(t=>({...t,name:e.target.value})),placeholder:`z.B. Networking`,className:`flex-1`}),(0,U.jsxs)(`label`,{className:`flex items-center gap-1 text-xs text-muted cursor-pointer whitespace-nowrap`,children:[(0,U.jsx)($n,{checked:ie.show_in_stats,onChange:e=>L(t=>({...t,show_in_stats:e.target.checked}))}),`Statistik`]}),(0,U.jsx)(G,{size:`sm`,disabled:!ie.name.trim(),onClick:me,children:`Erstellen`})]})]})]})}),g===`log`?k?(0,U.jsx)(tr,{}):T.length===0?(0,U.jsx)(er,{title:`Keine Aktivitaeten`,description:`Keine Eintraege in den letzten ${D} Tagen.`}):(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:T.map(e=>{let t=Ea.find(t=>t.key===e.category)?.icon||ne;return(0,U.jsxs)(`button`,{type:`button`,className:`flex items-center gap-3 rounded-xl bg-white/[0.02] px-4 py-2.5 text-left transition-colors hover:bg-white/[0.05]`,onClick:()=>{e.link_type===`bewerbung`&&e.link_id?n(`bewerbungen`,{highlight:e.link_id}):e.link_type===`dokument`&&n(`dokumente`)},children:[(0,U.jsx)(`div`,{className:W(`flex h-7 w-7 items-center justify-center rounded-lg shrink-0`,Da[e.category]||`bg-white/5 text-muted/40`),children:(0,U.jsx)(t,{size:14})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-sm text-ink truncate`,children:e.title}),e.subtitle&&(0,U.jsx)(`p`,{className:`text-xs text-muted/40 truncate`,children:e.subtitle})]}),(0,U.jsx)(`span`,{className:`shrink-0 text-xs text-muted/30`,children:Sn(e.event_date)}),e.is_imported&&(0,U.jsx)(q,{tone:`neutral`,className:`shrink-0`,children:`Import`})]},`${e.category}-${e.id}`)})}):(0,U.jsxs)(U.Fragment,{children:[v===`monat`&&(0,U.jsx)(Ra,{year:be.start.getFullYear(),month:be.start.getMonth(),meetingsByDate:Se,onDayClick:Te,onMeetingClick:Ee,compact:!1,collisionIds:ve}),v===`woche`&&(0,U.jsxs)(`div`,{className:`grid grid-cols-7 gap-px rounded-xl overflow-hidden border border-white/[0.06]`,children:[ka.map(e=>(0,U.jsx)(`div`,{className:`bg-white/[0.03] px-1 py-1.5 text-center text-[10px] font-semibold text-muted/40 uppercase`,children:e},e)),(()=>{let e=[],t=new Date(be.start),n=La(new Date);for(;t<=be.end;)e.push(new Date(t)),t.setDate(t.getDate()+1);return e.map(e=>{let t=La(e),r=Se[t]||[],i=t===n,a=eTe(e),children:[(0,U.jsx)(`span`,{className:W(`text-xs font-medium`,i?`inline-flex h-5 w-5 items-center justify-center rounded-full bg-sky text-shell font-bold`:``,!i&&(a?`text-muted/30`:`text-ink/70`)),children:e.getDate()}),(0,U.jsx)(`p`,{className:`text-[9px] text-muted/30 mt-0.5`,children:e.toLocaleDateString(`de-DE`,{weekday:`short`,day:`numeric`,month:`short`})}),(0,U.jsx)(`div`,{className:`mt-1 space-y-0.5`,children:r.map(e=>{let t=e.category_color||(e.is_private?`#6b7280`:e.is_follow_up?`#f59e0b`:`#0ea5e9`);return(0,U.jsx)(`button`,{type:`button`,className:`block w-full truncate rounded px-1 py-px text-left text-[10px] font-medium transition-colors hover:brightness-125`,style:{backgroundColor:`${t}20`,color:t},onClick:t=>{t.stopPropagation(),Ee(e)},title:`${e.is_private?`Geblockt`:e.title} — ${Cn(e.meeting_date)}`,children:e.is_private?`Geblockt`:e.title},e.id)})})]},t)})})()]}),(v===`quartal`||v===`halbjahr`)&&(0,U.jsx)(`div`,{className:W(`grid gap-4`,v===`quartal`?`md:grid-cols-3`:`md:grid-cols-3 lg:grid-cols-3`),children:De().map(({year:e,month:t})=>(0,U.jsx)(Ra,{year:e,month:t,meetingsByDate:Se,onDayClick:Te,onMeetingClick:Ee,compact:!0,collisionIds:ve},`${e}-${t}`))}),we.length>0&&(0,U.jsxs)(`div`,{className:`mt-6 grid gap-4`,children:[(0,U.jsxs)(`h2`,{className:`text-xs font-semibold uppercase tracking-[0.15em] text-muted/40`,children:[`Termine im Zeitraum (`,Ce.length,`)`]}),we.map(e=>(0,U.jsxs)(`div`,{children:[(0,U.jsxs)(`h3`,{className:W(`mb-1.5 text-sm font-semibold`,Ta(e)?`text-sky`:wa(e)?`text-muted/40`:`text-ink`),children:[Ta(e)?`Heute`:Sn(e),Ta(e)&&(0,U.jsxs)(`span`,{className:`ml-2 text-xs font-normal text-muted/50`,children:[`(`,Sn(e),`)`]})]}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:B[e].map(e=>{let n=wa(e.meeting_date),i=ve.has(e.id),a=e.is_follow_up,o=e.is_private,s=e.category_color||null;return(0,U.jsx)(K,{className:W(`rounded-xl cursor-pointer hover:bg-white/[0.03] transition-colors`,n&&`opacity-50`,i&&`border-amber/30 border`,o&&`bg-white/[0.02] border-white/[0.05] border`),onClick:()=>Ee(e),children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsx)(`h4`,{className:W(`text-sm font-medium truncate`,o?`text-muted/50`:`text-ink`),children:o?`Geblockt`:e.title}),(0,U.jsx)(q,{tone:n||o?`neutral`:a?`amber`:`sky`,children:o?`Privat`:Ca(e.meeting_type)}),e.category_name&&!o&&(0,U.jsx)(`span`,{className:`rounded-lg px-2 py-0.5 text-[10px] font-medium`,style:{backgroundColor:`${s||`#3b82f6`}20`,color:s||`#3b82f6`},children:e.category_name}),i&&(0,U.jsx)(q,{tone:`amber`,children:`Kollision`})]}),!o&&(e.app_company||e.app_title)&&(0,U.jsxs)(`p`,{className:`text-xs text-muted/50 mt-0.5 truncate`,children:[e.app_title,e.app_company?` — ${e.app_company}`:``]}),(0,U.jsxs)(`div`,{className:`mt-1 flex flex-wrap items-center gap-3 text-xs text-muted/40`,children:[(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(pe,{size:11}),Cn(e.meeting_date),e.meeting_end&&` – ${Cn(e.meeting_end).split(`, `).pop()}`,!e.meeting_end&&e.duration_minutes&&` (${e.duration_minutes} Min.)`]}),!o&&e.location&&(0,U.jsxs)(`span`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(Fe,{size:11}),e.location]})]})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),children:[!o&&e.meeting_url&&(0,U.jsx)(`a`,{href:e.meeting_url,target:`_blank`,rel:`noreferrer`,className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Meeting-Link oeffnen`,children:(0,U.jsx)(ye,{size:14})}),a?e.status===`geplant`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`button`,{type:`button`,onClick:async()=>{let n=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${n}/complete`,{}),t(`Nachfass erledigt.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Als erledigt markieren`,children:(0,U.jsx)(oe,{size:14})}),(0,U.jsx)(`button`,{type:`button`,onClick:async()=>{let n=String(e.id).replace(/^followup-/,``);try{await H(`/api/follow-ups/${n}/dismiss`,{}),t(`Nachfass hinfaellig.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-coral transition-colors`,title:`Als hinfaellig markieren`,children:(0,U.jsx)(le,{size:14})})]}):(0,U.jsxs)(U.Fragment,{children:[!n&&[`interview`,`telefoninterview`,`video`,`vor_ort`,`kennenlernen`,`zweitgespraech`].includes(e.meeting_type)&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>{r(`/interview_vorbereitung${e.app_title?` stelle="${e.app_title}"`:``}${e.app_company?` firma="${e.app_company}"`:``}`)},className:`rounded-lg p-1.5 text-muted/30 hover:text-amber transition-colors`,title:`Auf dieses Interview vorbereiten`,children:(0,U.jsx)(F,{size:14})}),n&&(e.status===`geplant`||e.status===`bestaetigt`)&&(0,U.jsx)(`button`,{type:`button`,onClick:async()=>{try{await Ot(`/api/meetings/${e.id}`,{status:`durchgefuehrt`}),t(`Termin als durchgeführt markiert.`,`success`),z()}catch(e){t(`Fehler: ${e.message}`,`danger`)}},className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Termin hat stattgefunden`,children:(0,U.jsx)(oe,{size:14})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>P({...e,_isNew:!1}),className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Termin bearbeiten`,children:(0,U.jsx)(We,{size:14})}),(0,U.jsx)(`a`,{href:Et(`/api/meetings/${e.id}/ics`),className:`rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`ICS herunterladen`,children:(0,U.jsx)(_e,{size:14})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>I(e),className:`rounded-lg p-1.5 text-muted/30 hover:text-coral transition-colors`,title:`Termin loeschen`,children:(0,U.jsx)(ot,{size:14})})]})]})]})},e.id)})})]},e))]})]})]})}var Ba={lebenslauf:`Lebenslauf`,anschreiben:`Anschreiben`,zeugnis:`Zeugnis`,zertifikat:`Zertifikat`,bescheinigung:`Bescheinigung`,mail_eingang:`E-Mail (Eingang)`,mail_ausgang:`E-Mail (Ausgang)`,sonstiges:`Sonstiges`};function Va(e){return Ba[e]||e||`Sonstiges`}var Ha={nicht_extrahiert:{label:`Nicht analysiert`,tone:`danger`},basis_analysiert:{label:`Basis`,tone:`amber`},analysiert:{label:`Analysiert`,tone:`sky`},analysiert_leer:{label:`Leer`,tone:`neutral`},angewendet:{label:`Angewendet`,tone:`success`},duplikat:{label:`Duplikat`,tone:`neutral`}};function Ua(e){return Ha[e]||Ha.nicht_extrahiert}function Wa(){let{reloadKey:e,pushToast:t,navigateTo:n,copyPrompt:r}=jt(),[i,a]=(0,w.useState)(!0),[o,s]=(0,w.useState)({documents:[],total:0,page:1,pages:1,doc_types:[],applications:[],unlinked_count:0,unanalyzed_count:0}),[c,l]=(0,w.useState)(``),[u,d]=(0,w.useState)(``),[f,p]=(0,w.useState)(``),[m,h]=(0,w.useState)(``),[g,_]=(0,w.useState)(!1),[v,y]=(0,w.useState)(``),[b,x]=(0,w.useState)(1),[S,C]=(0,w.useState)(`created_at`),[T,E]=(0,w.useState)(`desc`),[D,O]=(0,w.useState)(null),[k,A]=(0,w.useState)({open:!1,doc:null,value:``,search:``}),[j,M]=(0,w.useState)(null),[N,P]=(0,w.useState)(null),[ee,F]=(0,w.useState)({}),[I,te]=(0,w.useState)([]),[ne,re]=(0,w.useState)(`sonstiges`),[ie,L]=(0,w.useState)(``),[oe,z]=(0,w.useState)(!1),se=(0,w.useRef)(null),[ce,le]=(0,w.useState)(!1),[ue,de]=(0,w.useState)(!1),fe=(0,w.useRef)(null),pe=(0,w.useRef)(null),me=(0,w.useRef)(new Set),ge=(0,w.useEffectEvent)(async()=>{try{let e=new URLSearchParams({page:String(b),per_page:`25`,sort:S,order:T});u&&e.set(`q`,u),f&&e.set(`doc_type`,f),m&&e.set(`application_id`,m),g&&e.set(`unlinked`,`1`),v&&e.set(`extraction_status`,v),s(await V(`/api/documents?${e}`))}catch(e){t(`Dokumente konnten nicht geladen werden: ${e.message}`,`danger`)}finally{a(!1)}});(0,w.useEffect)(()=>{a(!0),ge()},[e,b,S,T,u,f,m,g,v]),(0,w.useEffect)(()=>{V(`/api/analysis-templates`).then(e=>te(e.templates||[])).catch(()=>{})},[]);function ve(e){e.preventDefault(),x(1),d(c)}function ye(){l(``),d(``),x(1)}function be(e){S===e?E(e=>e===`desc`?`asc`:`desc`):(C(e),E(`desc`)),x(1)}async function xe(){if(k.doc)try{await Ot(`/api/document/${k.doc.id}/link`,{application_id:k.value||null}),t(`Verknuepfung aktualisiert`,`success`),A({open:!1,doc:null,value:``}),ge()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function Ce(e){try{await kt(`/api/document/${e}`),t(`Dokument geloescht`,`success`),M(null),ge()}catch(e){t(`Loeschen fehlgeschlagen: ${e.message}`,`danger`)}}async function B(e,n=null){let r=n||ee[e]||null;try{await H(`/api/document/${e}/reanalyze`,{});try{let n=await V(`/api/document/${e}/analysis-prompt${r?`?template=${encodeURIComponent(r)}`:``}`);n.available_templates&&!I.length&&te(n.available_templates),await An(n.prompt),t(`Analyse-Prompt (${n.template_label}) kopiert \u2014 in Claude einfuegen`,`success`)}catch{t(`Dokument vorgemerkt (Clipboard/API blockiert)`,`success`)}ge()}catch(e){t(`Fehler: ${e.message}`,`danger`)}}async function we(e){if(!e?.length)return;de(!0);let n=0;try{for(let t of e){let e=await Qt(t);me.current.has(e)||(me.current.add(e),await tn(t,ne),n++)}n>0&&(t(`${n} Dokument${n>1?`e`:``} hochgeladen`,`success`),ge())}catch(e){t(`Upload-Fehler: ${e.message}`,`danger`)}finally{de(!1)}}return i&&o.documents.length===0?(0,U.jsx)(tr,{}):(0,U.jsxs)(`div`,{id:`page-dokumente`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Dokumente`}),(0,U.jsxs)(`p`,{className:`text-xs text-muted/50 mb-2`,children:[o.total,` Dokumente`]}),(0,U.jsx)(`div`,{className:`mb-6 flex flex-wrap items-baseline justify-end gap-4`}),(0,U.jsx)(K,{className:`mb-4 rounded-xl`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-4`,children:[(0,U.jsx)(`div`,{className:W(`flex-1 min-w-[200px] rounded-xl border-2 border-dashed border-white/15 bg-white/[0.02] px-4 py-3 transition`,ce&&`border-sky/60 bg-sky/10 ring-2 ring-sky/35`),onDragOver:e=>{e.preventDefault(),le(!0)},onDragEnter:e=>{e.preventDefault(),le(!0)},onDragLeave:e=>{e.preventDefault(),!e.currentTarget.contains(e.relatedTarget)&&le(!1)},onDrop:async e=>{e.preventDefault(),le(!1),await we(await fn(e.dataTransfer))},children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(dt,{size:16,className:`text-muted/40 shrink-0`}),(0,U.jsx)(`span`,{className:`text-sm text-muted/60`,children:`Dateien oder Ordner hier ablegen`}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2 ml-auto`,children:[(0,U.jsxs)(Qn,{className:`!h-8 !min-h-0 !w-auto !rounded-lg !border-white/5 !bg-white/[0.03] !pl-2 !pr-2 !py-0 !text-[12px] !text-muted/60`,value:ne,onChange:e=>re(e.target.value),children:[(0,U.jsx)(`option`,{value:`sonstiges`,children:`Auto / Sonstiges`}),(0,U.jsx)(`option`,{value:`lebenslauf`,children:`Lebenslauf`}),(0,U.jsx)(`option`,{value:`anschreiben`,children:`Anschreiben`}),(0,U.jsx)(`option`,{value:`zeugnis`,children:`Zeugnis`}),(0,U.jsx)(`option`,{value:`zertifikat`,children:`Zertifikat`})]}),(0,U.jsx)(G,{type:`button`,size:`sm`,variant:`secondary`,disabled:ue,onClick:()=>fe.current?.click(),children:ue?`Lade...`:`Dateien`}),(0,U.jsx)(G,{type:`button`,size:`sm`,variant:`ghost`,disabled:ue,onClick:()=>pe.current?.click(),children:`Ordner`})]})]})}),(0,U.jsx)(`input`,{ref:fe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,onChange:async e=>{await we(e.target.files),e.target.value=``}}),(0,U.jsx)(`input`,{ref:pe,className:`hidden`,type:`file`,multiple:!0,accept:`.pdf,.doc,.docx,.txt,.md,.csv,.json,.xml,.rtf,.msg,.eml`,webkitdirectory:``,directory:``,onChange:async e=>{await we(e.target.files),e.target.value=``}})]})}),o.unanalyzed_count>0&&(0,U.jsx)(K,{className:`mb-4 rounded-xl border-violet-500/20 bg-violet-500/[0.06]`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-start gap-3 px-4 py-3`,children:[(0,U.jsx)(nt,{size:18,className:`text-violet-400 shrink-0 mt-0.5`}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-[240px]`,children:[(0,U.jsxs)(`div`,{className:`text-sm font-medium text-ink`,children:[o.unanalyzed_count,` Dokument`,o.unanalyzed_count===1?``:`e`,` koennen verarbeitet werden`]}),(0,U.jsxs)(`div`,{className:`text-xs text-muted/70 mt-1 leading-snug`,children:[`Claude klassifiziert jedes hochgeladene Dokument und macht das Passende:`,(0,U.jsx)(`strong`,{className:`text-ink`,children:` Profil-Daten`}),` aus CVs/Zeugnissen,`,(0,U.jsx)(`strong`,{className:`text-ink`,children:` Status-Updates`}),` bei Absagen/Einladungen/Angeboten,`,(0,U.jsx)(`strong`,{className:`text-ink`,children:` Anhang-Verknuepfung`}),` bei firmenspezifischen Anschreiben,`,(0,U.jsx)(`strong`,{className:`text-ink`,children:` Termin-Anlage`}),` bei Interview-Bestaetigungen.`]}),(0,U.jsxs)(`details`,{className:`mt-2 text-[11px] text-muted/70`,children:[(0,U.jsx)(`summary`,{className:`cursor-pointer text-muted hover:text-ink`,children:`So gehts (3 Schritte)`}),(0,U.jsxs)(`ol`,{className:`mt-1.5 ml-4 list-decimal space-y-0.5`,children:[(0,U.jsx)(`li`,{children:`Button rechts klicken — der Verarbeitungs-Prompt landet in der Zwischenablage`}),(0,U.jsxs)(`li`,{children:[`Wechsle zu Claude Desktop und fuege den Prompt mit `,(0,U.jsx)(`kbd`,{className:`px-1 rounded bg-shell/60`,children:`Strg+V`}),` ein`]}),(0,U.jsx)(`li`,{children:`Claude klassifiziert die Dokumente und fragt vor jeder Aktion um Bestaetigung`})]}),(0,U.jsxs)(`p`,{className:`mt-1.5 text-muted/50`,children:[`Nur Profil-Daten? Nutze stattdessen den Befehl`,(0,U.jsx)(`code`,{className:`ml-1 px-1 rounded bg-shell/60`,children:`/profil_erweiterung`})]})]})]}),(0,U.jsxs)(G,{type:`button`,size:`sm`,variant:`secondary`,onClick:async()=>{await r(`/dokumente_verarbeiten`),t(`Verarbeitungs-Prompt kopiert — jetzt in Claude Desktop einfuegen`,`success`,{duration:3500})},children:[(0,U.jsx)(he,{size:14,className:`mr-1`}),`Dokumente verarbeiten`]})]})}),(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center gap-3`,children:[(0,U.jsxs)(`form`,{onSubmit:ve,className:`flex flex-1 items-center gap-2 min-w-[200px] max-w-md`,children:[(0,U.jsxs)(`div`,{className:`relative flex-1`,children:[(0,U.jsx)(Ze,{size:14,className:`absolute left-3 top-1/2 -translate-y-1/2 text-muted/40`}),(0,U.jsx)(`input`,{type:`text`,value:c,onChange:e=>l(e.target.value),placeholder:`Dateiname oder Inhalt suchen...`,className:`w-full rounded-xl border border-white/8 bg-white/[0.03] py-2 pl-9 pr-8 text-sm text-ink placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),u&&(0,U.jsx)(`button`,{type:`button`,onClick:ye,className:`absolute right-2.5 top-1/2 -translate-y-1/2 text-muted/40 hover:text-ink`,children:(0,U.jsx)(yt,{size:14})})]}),(0,U.jsx)(`button`,{type:`submit`,className:`rounded-xl bg-sky/15 px-3 py-2 text-xs font-medium text-sky hover:bg-sky/25 transition-colors`,children:`Suchen`})]}),(0,U.jsxs)(Qn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:f,onChange:e=>{p(e.target.value),x(1)},children:[(0,U.jsx)(`option`,{value:``,children:`Alle Typen`}),o.doc_types.map(e=>(0,U.jsx)(`option`,{value:e,children:Va(e)},e))]}),o.applications?.length>0&&(0,U.jsxs)(`div`,{className:`relative`,ref:se,children:[(0,U.jsx)(`input`,{type:`text`,value:ie,onChange:e=>{L(e.target.value),z(!0)},onFocus:()=>z(!0),onBlur:()=>setTimeout(()=>z(!1),200),placeholder:m?o.applications.find(e=>e.id===m)?.company||`Bewerbung`:`Bewerbung filtern...`,className:`h-9 w-[14rem] rounded-xl border border-white/5 bg-white/[0.03] px-3 text-[13px] text-muted/60 placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),m&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>{h(``),L(``),x(1)},className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted/40 hover:text-ink`,children:(0,U.jsx)(yt,{size:12})}),oe&&(()=>{let e=ie.toLowerCase(),t=o.applications.filter(t=>!e||(t.company||``).toLowerCase().includes(e)||(t.title||``).toLowerCase().includes(e));return t.length===0?null:(0,U.jsxs)(`div`,{className:`absolute left-0 top-full z-50 mt-1 max-h-48 w-[18rem] overflow-y-auto rounded-xl border border-white/10 bg-[rgba(30,34,52,0.95)] shadow-2xl backdrop-blur-2xl`,children:[(0,U.jsx)(`button`,{type:`button`,className:`flex w-full px-3 py-1.5 text-[12px] text-muted/50 hover:bg-white/[0.06]`,onMouseDown:()=>{h(``),L(``),x(1),z(!1)},children:`Alle Bewerbungen`}),t.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:W(`flex w-full px-3 py-1.5 text-[12px] text-left transition-colors hover:bg-white/[0.06]`,m===e.id?`text-sky`:`text-muted/60`),onMouseDown:()=>{h(e.id),L(``),_(!1),x(1),z(!1)},children:[e.company,e.title?` \u2014 ${e.title}`:``]},e.id))]})})()]}),o.unlinked_count>0&&(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{_(!g),h(``),x(1)},className:`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors ${g?`bg-amber/15 text-amber`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[(0,U.jsx)(ut,{size:12}),`Nicht verknuepft (`,o.unlinked_count,`)`]}),o.unanalyzed_count>0&&(0,U.jsxs)(`button`,{type:`button`,onClick:()=>{y(v?``:`nicht_extrahiert`),x(1)},className:`flex items-center gap-1.5 rounded-xl px-3 py-1.5 text-xs font-medium transition-colors ${v?`bg-violet-500/15 text-violet-400`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[(0,U.jsx)(nt,{size:12}),`Nicht analysiert (`,o.unanalyzed_count,`)`]}),(0,U.jsx)(`div`,{className:`flex items-center gap-1`,children:[{col:`created_at`,label:`Datum`},{col:`filename`,label:`Name`},{col:`doc_type`,label:`Typ`}].map(e=>(0,U.jsxs)(`button`,{type:`button`,onClick:()=>be(e.col),className:`rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${S===e.col?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:[e.label,S===e.col&&(T===`desc`?` ↓`:` ↑`)]},e.col))})]}),o.documents.length===0?(0,U.jsx)(er,{title:`Keine Dokumente`,description:u||f||m||g||v?`Keine Dokumente fuer diese Suche/Filter gefunden.`:`Noch keine Dokumente vorhanden. Dokumente werden beim Upload und E-Mail-Import automatisch erfasst.`}):(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(`div`,{className:`grid gap-2`,children:o.documents.map(e=>{let r=D===e.id,i=N===e.id;return(0,U.jsxs)(K,{className:W(`rounded-xl cursor-pointer transition-colors`,i?`ring-1 ring-sky/20`:`hover:bg-white/[0.02]`),onClick:()=>P(i?null:e.id),children:[(0,U.jsxs)(`div`,{className:`flex items-start gap-3`,children:[(0,U.jsx)(`div`,{className:`mt-0.5 flex h-9 w-9 items-center justify-center rounded-lg bg-sky/10 shrink-0`,children:(0,U.jsx)(Se,{size:18,className:`text-sky`})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 flex-wrap`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink truncate`,children:e.filename}),(0,U.jsx)(q,{tone:`neutral`,children:Va(e.doc_type)}),(()=>{let t=Ua(e.extraction_status);return(0,U.jsx)(q,{tone:t.tone,children:t.label})})()]}),e.app_company||e.app_title?(0,U.jsxs)(`button`,{type:`button`,onClick:t=>{t.stopPropagation(),n(`bewerbungen`,{highlight:e.linked_application_id})},className:`mt-0.5 flex items-center gap-1 text-sm text-sky/70 hover:text-sky transition-colors`,children:[(0,U.jsx)(Ae,{size:11}),(0,U.jsxs)(`span`,{className:`truncate`,children:[e.app_company,e.app_title?` \u2014 ${e.app_title}`:``]}),e.app_status&&(0,U.jsx)(q,{tone:e.app_status===`abgelehnt`?`danger`:e.app_status===`interview`?`amber`:`neutral`,className:`ml-1`,children:e.app_status})]}):(0,U.jsx)(`p`,{className:`mt-0.5 text-[11px] text-muted/30`,children:`Nicht verknuepft`}),e.extracted_text&&(0,U.jsxs)(`button`,{type:`button`,className:`mt-1 text-left text-xs text-muted/40 hover:text-muted/60 transition-colors w-full`,onClick:()=>O(r?null:e.id),children:[r?e.extracted_text.slice(0,500):e.extracted_text.slice(0,150),e.extracted_text.length>(r?500:150)&&`…`,e.extracted_text.length>150&&(0,U.jsx)(`span`,{className:`ml-1 text-sky/50`,children:r?`weniger`:`mehr`})]}),(0,U.jsx)(`div`,{className:`mt-1 text-[11px] text-muted/30`,children:e.created_at&&Sn(e.created_at)})]}),(0,U.jsxs)(`div`,{className:`flex shrink-0 items-center gap-1`,onClick:e=>e.stopPropagation(),children:[e.extraction_status===`basis_analysiert`?(0,U.jsx)(`button`,{type:`button`,onClick:()=>B(e.id),className:`rounded-lg p-1.5 text-amber/50 hover:text-amber transition-colors`,title:`Vollanalyse starten (bisher nur Basis)`,children:(0,U.jsx)(nt,{size:14})}):e.extraction_status&&![`nicht_extrahiert`,``].includes(e.extraction_status)?(0,U.jsx)(`button`,{type:`button`,onClick:()=>B(e.id),className:`rounded-lg p-1.5 text-muted/30 hover:text-violet-400 transition-colors`,title:`Erneut analysieren`,children:(0,U.jsx)(Xe,{size:14})}):null,(0,U.jsx)(`button`,{type:`button`,onClick:()=>A({open:!0,doc:e,value:e.linked_application_id||``}),className:`rounded-lg p-1.5 text-muted/30 hover:text-sky transition-colors`,title:`Verknuepfung aendern`,children:(0,U.jsx)(je,{size:14})}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{let n=e.id.slice(0,8);navigator.clipboard.writeText(n),t(`ID ${n} kopiert`,`success`)},className:`rounded-lg p-1.5 text-muted/30 hover:text-amber transition-colors`,title:`Kommunikations-ID kopieren (${e.id.slice(0,8)})`,children:(0,U.jsx)(he,{size:14})}),(0,U.jsx)(`a`,{href:Et(`/api/documents/${e.id}/download`),className:`shrink-0 rounded-lg p-1.5 text-muted/30 hover:text-teal transition-colors`,title:`Herunterladen`,children:(0,U.jsx)(_e,{size:14})}),j===e.id?(0,U.jsxs)(`div`,{className:`flex items-center gap-1`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>Ce(e.id),className:`rounded-lg px-2 py-1 text-xs font-medium bg-red-500/15 text-red-400 hover:bg-red-500/25 transition-colors`,children:`Ja`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>M(null),className:`rounded-lg px-2 py-1 text-xs text-muted/50 hover:text-ink transition-colors`,children:`Nein`})]}):(0,U.jsx)(`button`,{type:`button`,onClick:()=>M(e.id),className:`shrink-0 rounded-lg p-1.5 text-muted/30 hover:text-red-400 transition-colors`,title:`Loeschen`,children:(0,U.jsx)(ot,{size:14})})]})]}),i&&(0,U.jsxs)(`div`,{className:`mt-3 border-t border-white/[0.06] pt-3`,onClick:e=>e.stopPropagation(),children:[(0,U.jsxs)(`div`,{className:`grid gap-3 sm:grid-cols-2`,children:[(0,U.jsxs)(`div`,{className:`text-xs text-muted/50 space-y-1`,children:[(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/30`,children:`ID:`}),` `,e.id.slice(0,8)]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/30`,children:`Typ:`}),` `,Va(e.doc_type)]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/30`,children:`Erstellt:`}),` `,e.created_at?Cn(e.created_at):`k.A.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/30`,children:`Status:`}),` `,Ua(e.extraction_status).label]}),e.app_company&&(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`span`,{className:`text-muted/30`,children:`Bewerbung:`}),` `,e.app_company,e.app_title?` — ${e.app_title}`:``]})]}),(0,U.jsxs)(`div`,{className:`flex flex-col gap-2 items-start sm:items-end`,children:[I.length>0&&(0,U.jsxs)(Qn,{className:`!h-8 !min-h-0 !w-auto !rounded-lg !border-white/10 !bg-white/[0.03] !pl-2 !pr-2 !py-0 !text-[11px] !text-muted/60`,value:ee[e.id]||``,onChange:t=>F(n=>({...n,[e.id]:t.target.value})),title:`Analyse-Template`,children:[(0,U.jsx)(`option`,{value:``,children:`Auto (nach Dokumenttyp)`}),I.map(e=>(0,U.jsx)(`option`,{value:e.key,children:e.label},e.key))]}),(0,U.jsxs)(G,{size:`sm`,onClick:()=>B(e.id),children:[(0,U.jsx)(nt,{size:13}),e.extraction_status===`basis_analysiert`?`Vollanalyse starten`:e.extraction_status&&![`nicht_extrahiert`,``].includes(e.extraction_status)?`Erneut analysieren`:`Analysieren`]}),(0,U.jsxs)(G,{size:`sm`,variant:`ghost`,onClick:()=>window.open(Et(`/api/documents/${e.id}/download`),`_blank`),children:[(0,U.jsx)(_e,{size:13}),`Herunterladen`]})]})]}),e.extracted_text&&(0,U.jsx)(`div`,{className:`mt-3 rounded-lg bg-white/[0.02] border border-white/[0.04] p-3 max-h-48 overflow-y-auto`,children:(0,U.jsx)(`p`,{className:`text-xs text-muted/40 whitespace-pre-wrap`,children:e.extracted_text.slice(0,2e3)})})]})]},e.id)})}),o.pages>1&&(0,U.jsxs)(`div`,{className:`mt-4 flex items-center justify-center gap-2`,children:[(0,U.jsx)(`button`,{type:`button`,disabled:o.page<=1,onClick:()=>x(e=>e-1),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink disabled:opacity-30 transition-colors`,children:(0,U.jsx)(R,{size:16})}),(0,U.jsxs)(`span`,{className:`text-xs text-muted/50`,children:[`Seite `,o.page,` von `,o.pages,` (`,o.total,` Dokumente)`]}),(0,U.jsx)(`button`,{type:`button`,disabled:o.page>=o.pages,onClick:()=>x(e=>e+1),className:`rounded-lg p-1.5 text-muted/40 hover:text-ink disabled:opacity-30 transition-colors`,children:(0,U.jsx)(ae,{size:16})})]})]}),(0,U.jsx)(nr,{open:k.open,title:`Dokument verknuepfen`,description:k.doc?`${k.doc.filename}`:``,onClose:()=>A({open:!1,doc:null,value:``,search:``}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>A({open:!1,doc:null,value:``,search:``}),children:`Abbrechen`}),(0,U.jsx)(G,{onClick:xe,children:`Speichern`})]}),children:(0,U.jsxs)(`div`,{className:`space-y-2`,children:[(0,U.jsx)(`input`,{type:`text`,value:k.search,onChange:e=>A(t=>({...t,search:e.target.value})),placeholder:`Bewerbung suchen...`,className:`w-full rounded-xl border border-white/8 bg-white/[0.03] py-2 px-3 text-sm text-ink placeholder:text-muted/30 focus:border-sky/30 focus:outline-none`}),(0,U.jsxs)(`div`,{className:`max-h-48 overflow-y-auto rounded-xl border border-white/[0.05]`,children:[(0,U.jsx)(`button`,{type:`button`,className:W(`flex w-full px-3 py-2 text-sm transition-colors hover:bg-white/[0.06]`,k.value?`text-muted/60`:`text-sky font-medium`),onClick:()=>A(e=>({...e,value:``})),children:`Nicht verknuepft`}),(o.applications||[]).filter(e=>{let t=(k.search||``).toLowerCase();return!t||(e.company||``).toLowerCase().includes(t)||(e.title||``).toLowerCase().includes(t)}).map(e=>(0,U.jsxs)(`button`,{type:`button`,className:W(`flex w-full px-3 py-2 text-sm text-left transition-colors hover:bg-white/[0.06]`,k.value===e.id?`text-sky font-medium`:`text-muted/60`),onClick:()=>A(t=>({...t,value:e.id})),children:[e.company,e.title?` \u2014 ${e.title}`:``]},e.id))]})]})})]})}function Ga(e){var t,n,r=``;if(typeof e==`string`||typeof e==`number`)r+=e;else if(typeof e==`object`)if(Array.isArray(e)){var i=e.length;for(t=0;t{var{children:n,width:r,height:i,viewBox:a,className:o,style:s,title:c,desc:l}=e,u=io(e,no),d=a||{width:r,height:i,x:0,y:0},f=Ka(`recharts-surface`,o);return w.createElement(`svg`,ro({},eo(u),{className:f,width:r,height:i,style:s,viewBox:`${d.x} ${d.y} ${d.width} ${d.height}`,ref:t}),w.createElement(`title`,null,c),w.createElement(`desc`,null,l),n)}),so=[`children`,`className`];function co(){return co=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:n,className:r}=e,i=lo(e,so),a=Ka(`recharts-layer`,r);return w.createElement(`g`,co({className:a},eo(i),{ref:t}),n)}),po=(0,w.createContext)(null),mo=()=>(0,w.useContext)(po);function ho(e){return function(){return e}}var go=Math.cos,_o=Math.sin,vo=Math.sqrt,yo=Math.PI;yo/2;var bo=2*yo,xo=Math.PI,So=2*xo,Co=1e-6,wo=So-Co;function To(e){this._+=e[0];for(let t=1,n=e.length;t=0))throw Error(`invalid digits: ${e}`);if(t>15)return To;let n=10**t;return function(e){this._+=e[0];for(let t=1,r=e.length;tCo)if(!(Math.abs(u*s-c*l)>Co)||!i)this._append`L${this._x1=e},${this._y1=t}`;else{let f=n-a,p=r-o,m=s*s+c*c,h=f*f+p*p,g=Math.sqrt(m),_=Math.sqrt(d),v=i*Math.tan((xo-Math.acos((m+d-h)/(2*g*_)))/2),y=v/_,b=v/g;Math.abs(y-1)>Co&&this._append`L${e+y*l},${t+y*u}`,this._append`A${i},${i},0,0,${+(u*f>l*p)},${this._x1=e+b*s},${this._y1=t+b*c}`}}arc(e,t,n,r,i,a){if(e=+e,t=+t,n=+n,a=!!a,n<0)throw Error(`negative radius: ${n}`);let o=n*Math.cos(r),s=n*Math.sin(r),c=e+o,l=t+s,u=1^a,d=a?r-i:i-r;this._x1===null?this._append`M${c},${l}`:(Math.abs(this._x1-c)>Co||Math.abs(this._y1-l)>Co)&&this._append`L${c},${l}`,n&&(d<0&&(d=d%So+So),d>wo?this._append`A${n},${n},0,1,${u},${e-o},${t-s}A${n},${n},0,1,${u},${this._x1=c},${this._y1=l}`:d>Co&&this._append`A${n},${n},0,${+(d>=xo)},${u},${this._x1=e+n*Math.cos(i)},${this._y1=t+n*Math.sin(i)}`)}rect(e,t,n,r){this._append`M${this._x0=this._x1=+e},${this._y0=this._y1=+t}h${n=+n}v${+r}h${-n}Z`}toString(){return this._}};function Oo(){return new Do}Oo.prototype=Do.prototype;function ko(e){let t=3;return e.digits=function(n){if(!arguments.length)return t;if(n==null)t=null;else{let e=Math.floor(n);if(!(e>=0))throw RangeError(`invalid digits: ${n}`);t=e}return e},()=>new Do(t)}Array.prototype.slice;function Ao(e){return typeof e==`object`&&`length`in e?e:Array.from(e)}function jo(e){this._context=e}jo.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._context.lineTo(e,t);break}}};function Mo(e){return new jo(e)}function No(e){return e[0]}function Po(e){return e[1]}function Fo(e,t){var n=ho(!0),r=null,i=Mo,a=null,o=ko(s);e=typeof e==`function`?e:e===void 0?No:ho(e),t=typeof t==`function`?t:t===void 0?Po:ho(t);function s(s){var c,l=(s=Ao(s)).length,u,d=!1,f;for(r??(a=i(f=o())),c=0;c<=l;++c)!(c=d;--f)s.point(_[f],v[f]);s.lineEnd(),s.areaEnd()}h&&(_[u]=+e(m,u,l),v[u]=+t(m,u,l),s.point(r?+r(m,u,l):_[u],n?+n(m,u,l):v[u]))}if(g)return s=null,g+``||null}function u(){return Fo().defined(i).curve(o).context(a)}return l.x=function(t){return arguments.length?(e=typeof t==`function`?t:ho(+t),r=null,l):e},l.x0=function(t){return arguments.length?(e=typeof t==`function`?t:ho(+t),l):e},l.x1=function(e){return arguments.length?(r=e==null?null:typeof e==`function`?e:ho(+e),l):r},l.y=function(e){return arguments.length?(t=typeof e==`function`?e:ho(+e),n=null,l):t},l.y0=function(e){return arguments.length?(t=typeof e==`function`?e:ho(+e),l):t},l.y1=function(e){return arguments.length?(n=e==null?null:typeof e==`function`?e:ho(+e),l):n},l.lineX0=l.lineY0=function(){return u().x(e).y(t)},l.lineY1=function(){return u().x(e).y(n)},l.lineX1=function(){return u().x(r).y(t)},l.defined=function(e){return arguments.length?(i=typeof e==`function`?e:ho(!!e),l):i},l.curve=function(e){return arguments.length?(o=e,a!=null&&(s=o(a)),l):o},l.context=function(e){return arguments.length?(e==null?a=s=null:s=o(a=e),l):a},l}var Lo=class{constructor(e,t){this._context=e,this._x=t}areaStart(){this._line=0}areaEnd(){this._line=NaN}lineStart(){this._point=0}lineEnd(){(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line}point(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:this._x?this._context.bezierCurveTo(this._x0=(this._x0+e)/2,this._y0,this._x0,t,e,t):this._context.bezierCurveTo(this._x0,this._y0=(this._y0+t)/2,e,this._y0,e,t);break}this._x0=e,this._y0=t}};function Ro(e){return new Lo(e,!0)}function zo(e){return new Lo(e,!1)}var Bo={draw(e,t){let n=vo(t/yo);e.moveTo(n,0),e.arc(0,0,n,0,bo)}},Vo={draw(e,t){let n=vo(t/5)/2;e.moveTo(-3*n,-n),e.lineTo(-n,-n),e.lineTo(-n,-3*n),e.lineTo(n,-3*n),e.lineTo(n,-n),e.lineTo(3*n,-n),e.lineTo(3*n,n),e.lineTo(n,n),e.lineTo(n,3*n),e.lineTo(-n,3*n),e.lineTo(-n,n),e.lineTo(-3*n,n),e.closePath()}},Ho=vo(1/3),Uo=Ho*2,Wo={draw(e,t){let n=vo(t/Uo),r=n*Ho;e.moveTo(0,-n),e.lineTo(r,0),e.lineTo(0,n),e.lineTo(-r,0),e.closePath()}},Go={draw(e,t){let n=vo(t),r=-n/2;e.rect(r,r,n,n)}},Ko=.8908130915292852,qo=_o(yo/10)/_o(7*yo/10),Jo=_o(bo/10)*qo,Yo=-go(bo/10)*qo,Xo={draw(e,t){let n=vo(t*Ko),r=Jo*n,i=Yo*n;e.moveTo(0,-n),e.lineTo(r,i);for(let t=1;t<5;++t){let a=bo*t/5,o=go(a),s=_o(a);e.lineTo(s*n,-o*n),e.lineTo(o*r-s*i,s*r+o*i)}e.closePath()}},Zo=vo(3),Qo={draw(e,t){let n=-vo(t/(Zo*3));e.moveTo(0,n*2),e.lineTo(-Zo*n,-n),e.lineTo(Zo*n,-n),e.closePath()}},$o=-.5,es=vo(3)/2,ts=1/vo(12),ns=(ts/2+1)*3,rs={draw(e,t){let n=vo(t/ns),r=n/2,i=n*ts,a=r,o=n*ts+n,s=-a,c=o;e.moveTo(r,i),e.lineTo(a,o),e.lineTo(s,c),e.lineTo($o*r-es*i,es*r+$o*i),e.lineTo($o*a-es*o,es*a+$o*o),e.lineTo($o*s-es*c,es*s+$o*c),e.lineTo($o*r+es*i,$o*i-es*r),e.lineTo($o*a+es*o,$o*o-es*a),e.lineTo($o*s+es*c,$o*c-es*s),e.closePath()}};function is(e,t){let n=null,r=ko(i);e=typeof e==`function`?e:ho(e||Bo),t=typeof t==`function`?t:ho(t===void 0?64:+t);function i(){let i;if(n||=i=r(),e.apply(this,arguments).draw(n,+t.apply(this,arguments)),i)return n=null,i+``||null}return i.type=function(t){return arguments.length?(e=typeof t==`function`?t:ho(t),i):e},i.size=function(e){return arguments.length?(t=typeof e==`function`?e:ho(+e),i):t},i.context=function(e){return arguments.length?(n=e??null,i):n},i}function as(){}function os(e,t,n){e._context.bezierCurveTo((2*e._x0+e._x1)/3,(2*e._y0+e._y1)/3,(e._x0+2*e._x1)/3,(e._y0+2*e._y1)/3,(e._x0+4*e._x1+t)/6,(e._y0+4*e._y1+n)/6)}function ss(e){this._context=e}ss.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){switch(this._point){case 3:os(this,this._x1,this._y1);case 2:this._context.lineTo(this._x1,this._y1);break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,this._context.lineTo((5*this._x0+this._x1)/6,(5*this._y0+this._y1)/6);default:os(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function cs(e){return new ss(e)}function ls(e){this._context=e}ls.prototype={areaStart:as,areaEnd:as,lineStart:function(){this._x0=this._x1=this._x2=this._x3=this._x4=this._y0=this._y1=this._y2=this._y3=this._y4=NaN,this._point=0},lineEnd:function(){switch(this._point){case 1:this._context.moveTo(this._x2,this._y2),this._context.closePath();break;case 2:this._context.moveTo((this._x2+2*this._x3)/3,(this._y2+2*this._y3)/3),this._context.lineTo((this._x3+2*this._x2)/3,(this._y3+2*this._y2)/3),this._context.closePath();break;case 3:this.point(this._x2,this._y2),this.point(this._x3,this._y3),this.point(this._x4,this._y4);break}},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._x2=e,this._y2=t;break;case 1:this._point=2,this._x3=e,this._y3=t;break;case 2:this._point=3,this._x4=e,this._y4=t,this._context.moveTo((this._x0+4*this._x1+e)/6,(this._y0+4*this._y1+t)/6);break;default:os(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function us(e){return new ls(e)}function ds(e){this._context=e}ds.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=NaN,this._point=0},lineEnd:function(){(this._line||this._line!==0&&this._point===3)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1;break;case 1:this._point=2;break;case 2:this._point=3;var n=(this._x0+4*this._x1+e)/6,r=(this._y0+4*this._y1+t)/6;this._line?this._context.lineTo(n,r):this._context.moveTo(n,r);break;case 3:this._point=4;default:os(this,e,t);break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t}};function fs(e){return new ds(e)}function ps(e){this._context=e}ps.prototype={areaStart:as,areaEnd:as,lineStart:function(){this._point=0},lineEnd:function(){this._point&&this._context.closePath()},point:function(e,t){e=+e,t=+t,this._point?this._context.lineTo(e,t):(this._point=1,this._context.moveTo(e,t))}};function ms(e){return new ps(e)}function hs(e){return e<0?-1:1}function gs(e,t,n){var r=e._x1-e._x0,i=t-e._x1,a=(e._y1-e._y0)/(r||i<0&&-0),o=(n-e._y1)/(i||r<0&&-0),s=(a*i+o*r)/(r+i);return(hs(a)+hs(o))*Math.min(Math.abs(a),Math.abs(o),.5*Math.abs(s))||0}function _s(e,t){var n=e._x1-e._x0;return n?(3*(e._y1-e._y0)/n-t)/2:t}function vs(e,t,n){var r=e._x0,i=e._y0,a=e._x1,o=e._y1,s=(a-r)/3;e._context.bezierCurveTo(r+s,i+s*t,a-s,o-s*n,a,o)}function ys(e){this._context=e}ys.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x0=this._x1=this._y0=this._y1=this._t0=NaN,this._point=0},lineEnd:function(){switch(this._point){case 2:this._context.lineTo(this._x1,this._y1);break;case 3:vs(this,this._t0,_s(this,this._t0));break}(this._line||this._line!==0&&this._point===1)&&this._context.closePath(),this._line=1-this._line},point:function(e,t){var n=NaN;if(e=+e,t=+t,!(e===this._x1&&t===this._y1)){switch(this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;break;case 2:this._point=3,vs(this,_s(this,n=gs(this,e,t)),n);break;default:vs(this,this._t0,n=gs(this,e,t));break}this._x0=this._x1,this._x1=e,this._y0=this._y1,this._y1=t,this._t0=n}}};function bs(e){this._context=new xs(e)}(bs.prototype=Object.create(ys.prototype)).point=function(e,t){ys.prototype.point.call(this,t,e)};function xs(e){this._context=e}xs.prototype={moveTo:function(e,t){this._context.moveTo(t,e)},closePath:function(){this._context.closePath()},lineTo:function(e,t){this._context.lineTo(t,e)},bezierCurveTo:function(e,t,n,r,i,a){this._context.bezierCurveTo(t,e,r,n,a,i)}};function Ss(e){return new ys(e)}function Cs(e){return new bs(e)}function ws(e){this._context=e}ws.prototype={areaStart:function(){this._line=0},areaEnd:function(){this._line=NaN},lineStart:function(){this._x=[],this._y=[]},lineEnd:function(){var e=this._x,t=this._y,n=e.length;if(n)if(this._line?this._context.lineTo(e[0],t[0]):this._context.moveTo(e[0],t[0]),n===2)this._context.lineTo(e[1],t[1]);else for(var r=Ts(e),i=Ts(t),a=0,o=1;o=0;--t)i[t]=(o[t]-i[t+1])/a[t];for(a[n-1]=(e[n]+i[n-1])/2,t=0;t=0&&(this._t=1-this._t,this._line=1-this._line)},point:function(e,t){switch(e=+e,t=+t,this._point){case 0:this._point=1,this._line?this._context.lineTo(e,t):this._context.moveTo(e,t);break;case 1:this._point=2;default:if(this._t<=0)this._context.lineTo(this._x,t),this._context.lineTo(e,t);else{var n=this._x*(1-this._t)+e*this._t;this._context.lineTo(n,this._y),this._context.lineTo(n,t)}break}this._x=e,this._y=t}};function Os(e){return new Ds(e,.5)}function ks(e){return new Ds(e,0)}function As(e){return new Ds(e,1)}function js(e,t){if((o=e.length)>1)for(var n=1,r,i,a=e[t[0]],o,s=a.length;n=0;)n[t]=t;return n}function Ns(e,t){return e[t]}function Ps(e){let t=[];return t.key=e,t}function Fs(){var e=ho([]),t=Ms,n=js,r=Ns;function i(i){var a=Array.from(e.apply(this,arguments),Ps),o,s=a.length,c=-1,l;for(let e of i)for(o=0,++c;o0){for(var n,r,i=0,a=e[0].length,o;i0){for(var n=0,r=e[t[0]],i,a=r.length;n0)||!((a=(i=e[t[0]]).length)>0))){for(var n=0,r=1,i,a,o;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e===`__proto__`}e.isUnsafeProperty=t})),Bs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){switch(typeof e){case`number`:case`symbol`:return!1;case`string`:return e.includes(`.`)||e.includes(`[`)||e.includes(`]`)}}e.isDeepKey=t})),Vs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`string`||typeof e==`symbol`?e:Object.is(e?.valueOf?.(),-0)?`-0`:String(e)}e.toKey=t})),Hs=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(e==null)return``;if(typeof e==`string`)return e;if(Array.isArray(e))return e.map(t).join(`,`);let n=String(e);return n===`0`&&Object.is(Number(e),-0)?`-0`:n}e.toString=t})),Us=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Hs(),n=Vs();function r(e){if(Array.isArray(e))return e.map(n.toKey);if(typeof e==`symbol`)return[e];e=t.toString(e);let r=[],i=e.length;if(i===0)return r;let a=0,o=``,s=``,c=!1;for(e.charCodeAt(0)===46&&(r.push(``),a++);a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=zs(),n=Bs(),r=Vs(),i=Us();function a(e,s,c){if(e==null)return c;switch(typeof s){case`string`:{if(t.isUnsafeProperty(s))return c;let r=e[s];return r===void 0?n.isDeepKey(s)?a(e,i.toPath(s),c):c:r}case`number`:case`symbol`:{typeof s==`number`&&(s=r.toKey(s));let t=e[s];return t===void 0?c:t}default:{if(Array.isArray(s))return o(e,s,c);if(s=Object.is(s?.valueOf(),-0)?`-0`:String(s),t.isUnsafeProperty(s))return c;let n=e[s];return n===void 0?c:n}}}function o(e,n,r){if(n.length===0)return r;let i=e;for(let e=0;e{t.exports=Ws().get})),Ks=4;function qs(e){var t=10**(arguments.length>1&&arguments[1]!==void 0?arguments[1]:Ks),n=Math.round(e*t)/t;return Object.is(n,-0)?0:n}function Js(e){var t=[...arguments].slice(1);return e.reduce((e,n,r)=>{var i=t[r-1];return typeof i==`string`?e+i+n:i===void 0?e+n:e+qs(i)+n},``)}var Ys=l(Gs()),Xs=e=>e===0?0:e>0?1:-1,Zs=e=>typeof e==`number`&&e!=+e,Qs=e=>typeof e==`string`&&e.indexOf(`%`)===e.length-1,X=e=>(typeof e==`number`||e instanceof Number)&&!Zs(e),$s=e=>X(e)||typeof e==`string`,ec=0,tc=e=>{var t=++ec;return`${e||``}${t}`},nc=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:0,r=arguments.length>3&&arguments[3]!==void 0?arguments[3]:!1;if(!X(e)&&typeof e!=`string`)return n;var i;if(Qs(e)){if(t==null)return n;var a=e.indexOf(`%`);i=t*parseFloat(e.slice(0,a))/100}else i=+e;return Zs(i)&&(i=n),r&&t!=null&&i>t&&(i=t),i},rc=e=>{if(!Array.isArray(e))return!1;for(var t=e.length,n={},r=0;re&&(typeof t==`function`?t(e):(0,Ys.default)(e,t))===n)}var oc=e=>e==null,sc=e=>oc(e)?e:`${e.charAt(0).toUpperCase()}${e.slice(1)}`;function cc(e){return e!=null}function lc(){}var uc=[`type`,`size`,`sizeType`];function dc(){return dc=Object.assign?Object.assign.bind():function(e){for(var t=1;tyc[`symbol${sc(e)}`]||Bo,Sc=(e,t,n)=>{if(t===`area`)return e;switch(n){case`cross`:return 5*e*e/9;case`diamond`:return .5*e*e/Math.sqrt(3);case`square`:return e*e;case`star`:var r=18*bc;return 1.25*e*e*(Math.tan(r)-Math.tan(r*2)*Math.tan(r)**2);case`triangle`:return Math.sqrt(3)*e*e/4;case`wye`:return(21-10*Math.sqrt(3))*e*e/8;default:return Math.PI*e*e/4}},Cc=(e,t)=>{yc[`symbol${sc(e)}`]=t},wc=e=>{var{type:t=`circle`,size:n=64,sizeType:r=`area`}=e,i=pc(pc({},_c(e,uc)),{},{type:t,size:n,sizeType:r}),a=`circle`;typeof t==`string`&&(a=t);var o=()=>{var e=xc(a),t=is().type(e).size(Sc(n,r,a))();if(t!==null)return t},{className:s,cx:c,cy:l}=i,u=eo(i);return X(c)&&X(l)&&X(n)?w.createElement(`path`,dc({},u,{className:Ka(`recharts-symbols`,s),transform:`translate(${c}, ${l})`,d:o()})):null};wc.registerSymbol=Cc;var Tc=e=>`radius`in e&&`startAngle`in e&&`endAngle`in e,Ec=(e,t)=>{if(!e||typeof e==`function`||typeof e==`boolean`)return null;var n=e;if((0,w.isValidElement)(e)&&(n=e.props),typeof n!=`object`&&typeof n!=`function`)return null;var r={};return Object.keys(n).forEach(e=>{Ja(e)&&typeof n[e]==`function`&&(r[e]=t||(t=>n[e](n,t)))}),r},Dc=(e,t,n)=>r=>(e(t,n,r),null),Oc=(e,t,n)=>{if(e===null||typeof e!=`object`&&typeof e!=`function`)return null;var r=null;return Object.keys(e).forEach(i=>{var a=e[i];Ja(i)&&typeof a==`function`&&(r||={},r[i]=Dc(a,t,n))}),r};function kc(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ac(e){for(var t=1;t(e[t]===void 0&&r[t]!==void 0&&(e[t]=r[t]),e),n)}function Fc(){return Fc=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var d=t.formatter||i,f=Ka({"recharts-legend-item":!0,[`legend-item-${r}`]:!0,inactive:t.inactive});if(t.type===`none`)return null;var p=typeof s==`object`?Lc({},s):{};p.color=t.inactive?a:p.color||t.color;var m=d?d(t.value,t,r):t.value;return w.createElement(`li`,Fc({className:f,style:l,key:`legend-item-${r}`},Oc(e,t,r)),w.createElement(oo,{width:n,height:n,viewBox:c,style:u,"aria-label":`${m} legend icon`},w.createElement(Wc,{data:t,iconType:o,inactiveColor:a})),w.createElement(`span`,{className:`recharts-legend-item-text`,style:p},m))})}var Kc=e=>{var t=Pc(e,Hc),{payload:n,layout:r,align:i}=t;if(!n||!n.length)return null;var a={padding:0,margin:0,textAlign:r===`horizontal`?i:`left`};return w.createElement(`ul`,{className:`recharts-default-legend`,style:a},w.createElement(Gc,Fc({},t,{payload:n})))},qc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){let n=new Map;for(let r=0;r{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return function(...n){return e.apply(this,n.slice(0,t))}}e.ary=t})),Yc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e}e.identity=t})),Xc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Number.isSafeInteger(e)&&e>=0}e.isLength=t})),Zc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Xc();function n(e){return e!=null&&typeof e!=`function`&&t.isLength(e.length)}e.isArrayLike=n})),Qc=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`object`&&!!e}e.isObjectLike=t})),$c=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Zc(),n=Qc();function r(e){return n.isObjectLike(e)&&t.isArrayLike(e)}e.isArrayLikeObject=r})),el=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Ws();function n(e){return function(n){return t.get(n,e)}}e.property=n})),tl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e!==null&&(typeof e==`object`||typeof e==`function`)}e.isObject=t})),nl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null||typeof e!=`object`&&typeof e!=`function`}e.isPrimitive=t})),rl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t){return e===t||Number.isNaN(e)&&Number.isNaN(t)}e.isEqualsSameValueZero=t})),il=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=tl(),n=nl(),r=rl();function i(e,t,n){return typeof n==`function`?a(e,t,function e(t,r,i,o,s,c){let l=n(t,r,i,o,s,c);return l===void 0?a(t,r,e,c):!!l},new Map):i(e,t,()=>void 0)}function a(e,n,i,s){if(n===e)return!0;switch(typeof n){case`object`:return o(e,n,i,s);case`function`:return Object.keys(n).length>0?a(e,{...n},i,s):r.isEqualsSameValueZero(e,n);default:return t.isObject(e)?typeof n==`string`?n===``:!0:r.isEqualsSameValueZero(e,n)}}function o(e,t,r,i){if(t==null)return!0;if(Array.isArray(t))return c(e,t,r,i);if(t instanceof Map)return s(e,t,r,i);if(t instanceof Set)return l(e,t,r,i);let a=Object.keys(t);if(e==null||n.isPrimitive(e))return a.length===0;if(a.length===0)return!0;if(i?.has(t))return i.get(t)===e;i?.set(t,e);try{for(let o=0;o{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=il();function n(e,n){return t.isMatchWith(e,n,()=>void 0)}e.isMatch=n})),ol=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return Object.getOwnPropertySymbols(e).filter(t=>Object.prototype.propertyIsEnumerable.call(e,t))}e.getSymbols=t})),sl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return e==null?e===void 0?`[object Undefined]`:`[object Null]`:Object.prototype.toString.call(e)}e.getTag=t})),cl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`}),e.argumentsTag=`[object Arguments]`,e.arrayBufferTag=`[object ArrayBuffer]`,e.arrayTag=`[object Array]`,e.bigInt64ArrayTag=`[object BigInt64Array]`,e.bigUint64ArrayTag=`[object BigUint64Array]`,e.booleanTag=`[object Boolean]`,e.dataViewTag=`[object DataView]`,e.dateTag=`[object Date]`,e.errorTag=`[object Error]`,e.float32ArrayTag=`[object Float32Array]`,e.float64ArrayTag=`[object Float64Array]`,e.functionTag=`[object Function]`,e.int16ArrayTag=`[object Int16Array]`,e.int32ArrayTag=`[object Int32Array]`,e.int8ArrayTag=`[object Int8Array]`,e.mapTag=`[object Map]`,e.numberTag=`[object Number]`,e.objectTag=`[object Object]`,e.regexpTag=`[object RegExp]`,e.setTag=`[object Set]`,e.stringTag=`[object String]`,e.symbolTag=`[object Symbol]`,e.uint16ArrayTag=`[object Uint16Array]`,e.uint32ArrayTag=`[object Uint32Array]`,e.uint8ArrayTag=`[object Uint8Array]`,e.uint8ClampedArrayTag=`[object Uint8ClampedArray]`})),ll=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return ArrayBuffer.isView(e)&&!(e instanceof DataView)}e.isTypedArray=t})),ul=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ol(),n=sl(),r=cl(),i=nl(),a=ll();function o(e,t){return s(e,void 0,e,new Map,t)}function s(e,t,n,r=new Map,o=void 0){let u=o?.(e,t,n,r);if(u!==void 0)return u;if(i.isPrimitive(e))return e;if(r.has(e))return r.get(e);if(Array.isArray(e)){let t=Array(e.length);r.set(e,t);for(let i=0;i{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ul();function n(e){return t.cloneDeepWithImpl(e,void 0,e,new Map,void 0)}e.cloneDeep=n})),fl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=al(),n=dl();function r(e){return e=n.cloneDeep(e),n=>t.isMatch(n,e)}e.matches=r})),pl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ul(),n=sl(),r=cl();function i(e,i){return t.cloneDeepWith(e,(a,o,s,c)=>{let l=i?.(a,o,s,c);if(l!==void 0)return l;if(typeof e==`object`){if(n.getTag(e)===r.objectTag&&typeof e.constructor!=`function`){let n={};return c.set(e,n),t.copyProperties(n,e,s,c),n}switch(Object.prototype.toString.call(e)){case r.numberTag:case r.stringTag:case r.booleanTag:{let n=new e.constructor(e?.valueOf());return t.copyProperties(n,e),n}case r.argumentsTag:{let n={};return t.copyProperties(n,e),n.length=e.length,n[Symbol.iterator]=e[Symbol.iterator],n}default:return}}})}e.cloneDeepWith=i})),ml=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=pl();function n(e){return t.cloneDeepWith(e)}e.cloneDeep=n})),hl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=/^(?:0|[1-9]\d*)$/;function n(e,n=2**53-1){switch(typeof e){case`number`:return Number.isInteger(e)&&e>=0&&e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=sl();function n(e){return typeof e==`object`&&!!e&&t.getTag(e)===`[object Arguments]`}e.isArguments=n})),_l=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Bs(),n=hl(),r=gl(),i=Us();function a(e,a){let o;if(o=Array.isArray(a)?a:typeof a==`string`&&t.isDeepKey(a)&&e?.[a]==null?i.toPath(a):[a],o.length===0)return!1;let s=e;for(let e=0;e{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=al(),n=Vs(),r=ml(),i=Ws(),a=_l();function o(e,o){switch(typeof e){case`object`:Object.is(e?.valueOf(),-0)&&(e=`-0`);break;case`number`:e=n.toKey(e);break}return o=r.cloneDeep(o),function(n){let r=i.get(n,e);return r===void 0?a.has(n,e):o===void 0?r===void 0:t.isMatch(r,o)}}e.matchesProperty=o})),yl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yc(),n=el(),r=fl(),i=vl();function a(e){if(e==null)return t.identity;switch(typeof e){case`function`:return e;case`object`:return Array.isArray(e)&&e.length===2?i.matchesProperty(e[0],e[1]):r.matches(e);case`string`:case`symbol`:case`number`:return n.property(e)}}e.iteratee=a})),bl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=qc(),n=Jc(),r=Yc(),i=$c(),a=yl();function o(e,o=r.identity){return i.isArrayLikeObject(e)?t.uniqBy(Array.from(e),n.ary(a.iteratee(o),1)):[]}e.uniqBy=o})),xl=l(o(((e,t)=>{t.exports=bl().uniqBy}))());function Sl(e,t,n){return t===!0?(0,xl.default)(e,n):typeof t==`function`?(0,xl.default)(e,t):e}var Cl=o((e=>{var t=d();function n(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var r=typeof Object.is==`function`?Object.is:n,i=t.useState,a=t.useEffect,o=t.useLayoutEffect,s=t.useDebugValue;function c(e,t){var n=t(),r=i({inst:{value:n,getSnapshot:t}}),c=r[0].inst,u=r[1];return o(function(){c.value=n,c.getSnapshot=t,l(c)&&u({inst:c})},[e,n,t]),a(function(){return l(c)&&u({inst:c}),e(function(){l(c)&&u({inst:c})})},[e]),s(n),n}function l(e){var t=e.getSnapshot;e=e.value;try{var n=t();return!r(e,n)}catch{return!0}}function u(e,t){return t()}var f=typeof window>`u`||window.document===void 0||window.document.createElement===void 0?u:c;e.useSyncExternalStore=t.useSyncExternalStore===void 0?f:t.useSyncExternalStore})),wl=o(((e,t)=>{t.exports=Cl()})),Tl=o((e=>{var t=d(),n=wl();function r(e,t){return e===t&&(e!==0||1/e==1/t)||e!==e&&t!==t}var i=typeof Object.is==`function`?Object.is:r,a=n.useSyncExternalStore,o=t.useRef,s=t.useEffect,c=t.useMemo,l=t.useDebugValue;e.useSyncExternalStoreWithSelector=function(e,t,n,r,u){var d=o(null);if(d.current===null){var f={hasValue:!1,value:null};d.current=f}else f=d.current;d=c(function(){function e(e){if(!a){if(a=!0,o=e,e=r(e),u!==void 0&&f.hasValue){var t=f.value;if(u(t,e))return s=t}return s=e}if(t=s,i(o,e))return t;var n=r(e);return u!==void 0&&u(t,n)?(o=e,t):(o=e,s=n)}var a=!1,o,s,c=n===void 0?null:n;return[function(){return e(t())},c===null?void 0:function(){return e(c())}]},[t,n,r,u]);var p=a(e,d[0],d[1]);return s(function(){f.hasValue=!0,f.value=p},[p]),l(p),p}})),El=o(((e,t)=>{t.exports=Tl()})),Dl=(0,w.createContext)(null),Ol=El(),kl=e=>e,Al=()=>{var e=(0,w.useContext)(Dl);return e?e.store.dispatch:kl},jl=()=>{},Ml=()=>jl,Nl=(e,t)=>e===t;function Z(e){var t=(0,w.useContext)(Dl),n=(0,w.useMemo)(()=>t?t=>{if(t!=null)return e(t)}:jl,[t,e]);return(0,Ol.useSyncExternalStoreWithSelector)(t?t.subscription.addNestedSub:Ml,t?t.store.getState:jl,t?t.store.getState:jl,n,Nl)}function Pl(e,t=`expected a function, instead received ${typeof e}`){if(typeof e!=`function`)throw TypeError(t)}function Fl(e,t=`expected an object, instead received ${typeof e}`){if(typeof e!=`object`)throw TypeError(t)}function Il(e,t=`expected all items to be functions, instead received the following types: `){if(!e.every(e=>typeof e==`function`)){let n=e.map(e=>typeof e==`function`?`function ${e.name||`unnamed`}()`:typeof e).join(`, `);throw TypeError(`${t}[${n}]`)}}var Ll=e=>Array.isArray(e)?e:[e];function Rl(e){let t=Array.isArray(e[0])?e[0]:e;return Il(t,`createSelector expects all input-selectors to be functions, but received the following types: `),t}function zl(e,t){let n=[],{length:r}=e;for(let i=0;i{n=Wl(),o.resetResultsCount()},o.resultsCount=()=>a,o.resetResultsCount=()=>{a=0},o}function Kl(e,...t){let n=typeof e==`function`?{memoize:e,memoizeOptions:t}:e,r=(...e)=>{let t=0,r=0,i,a={},o=e.pop();typeof o==`object`&&(a=o,o=e.pop()),Pl(o,`createSelector expects an output function after the inputs, but received: [${typeof o}]`);let{memoize:s,memoizeOptions:c=[],argsMemoize:l=Gl,argsMemoizeOptions:u=[],devModeChecks:d={}}={...n,...a},f=Ll(c),p=Ll(u),m=Rl(e),h=s(function(){return t++,o.apply(null,arguments)},...f),g=l(function(){r++;let e=zl(m,arguments);return i=h.apply(null,e),i},...p);return Object.assign(g,{resultFunc:o,memoizedResultFunc:h,dependencies:m,dependencyRecomputations:()=>r,resetDependencyRecomputations:()=>{r=0},lastResult:()=>i,recomputations:()=>t,resetRecomputations:()=>{t=0},memoize:s,argsMemoize:l})};return Object.assign(r,{withTypes:()=>r}),r}var Q=Kl(Gl),ql=Object.assign((e,t=Q)=>{Fl(e,`createStructuredSelector expects first argument to be an object where each property is a selector, instead received a ${typeof e}`);let n=Object.keys(e);return t(n.map(t=>e[t]),(...e)=>e.reduce((e,t,r)=>(e[n[r]]=t,e),{}))},{withTypes:()=>ql}),Jl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`?1:e===null?2:e===void 0?3:e===e?0:4}e.compareValues=(e,n,r)=>{if(e!==n){let i=t(e),a=t(n);if(i===a&&i===0){if(en)return r===`desc`?-1:1}return r===`desc`?a-i:i-a}return 0}})),Yl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){return typeof e==`symbol`||e instanceof Symbol}e.isSymbol=t})),Xl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yl(),n=/\.|\[(?:[^[\]]*|(["'])(?:(?!\1)[^\\]|\\.)*?\1)\]/,r=/^\w*$/;function i(e,i){return Array.isArray(e)?!1:typeof e==`number`||typeof e==`boolean`||e==null||t.isSymbol(e)?!0:typeof e==`string`&&(r.test(e)||!n.test(e))||i!=null&&Object.hasOwn(i,e)}e.isKey=i})),Zl=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Jl(),n=Xl(),r=Us();function i(e,i,a,o){if(e==null)return[];a=o?void 0:a,Array.isArray(e)||(e=Object.values(e)),Array.isArray(i)||(i=i==null?[null]:[i]),i.length===0&&(i=[null]),Array.isArray(a)||(a=a==null?[]:[a]),a=a.map(e=>String(e));let s=(e,t)=>{let n=e;for(let e=0;et==null||e==null?t:typeof e==`object`&&`key`in e?Object.hasOwn(t,e.key)?t[e.key]:s(t,e.path):typeof e==`function`?e(t):Array.isArray(e)?s(t,e):typeof t==`object`?t[e]:t,l=i.map(e=>(Array.isArray(e)&&e.length===1&&(e=e[0]),e==null||typeof e==`function`||Array.isArray(e)||n.isKey(e)?e:{key:e,path:r.toPath(e)}));return e.map(e=>({original:e,criteria:l.map(t=>c(t,e))})).slice().sort((e,n)=>{for(let r=0;re.original)}e.orderBy=i})),Ql=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t=1){let n=[],r=Math.floor(t),i=(e,t)=>{for(let a=0;a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=hl(),n=Zc(),r=tl(),i=rl();function a(e,a,o){return r.isObject(o)&&(typeof a==`number`&&n.isArrayLike(o)&&t.isIndex(a)&&a{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Zl(),n=Ql(),r=$l();function i(e,...i){let a=i.length;return a>1&&r.isIterateeCall(e,i[0],i[1])?i=[]:a>2&&r.isIterateeCall(i[0],i[1],i[2])&&(i=[i[0]]),t.orderBy(e,n.flatten(i),[`asc`])}e.sortBy=i})),tu=l(o(((e,t)=>{t.exports=eu().sortBy}))()),nu=e=>e.legend.settings,ru=e=>e.legend.size,iu=Q([e=>e.legend.payload,nu],(e,t)=>{var{itemSorter:n}=t,r=e.flat(1);return n?(0,tu.default)(r,n):r});function au(){return Z(iu)}var ou=1;function su(){var e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:[],[t,n]=(0,w.useState)({height:0,left:0,top:0,width:0});return[t,(0,w.useCallback)(e=>{if(e!=null){var r=e.getBoundingClientRect(),i={height:r.height,left:r.left,top:r.top,width:r.width};(Math.abs(i.height-t.height)>ou||Math.abs(i.left-t.left)>ou||Math.abs(i.top-t.top)>ou||Math.abs(i.width-t.width)>ou)&&n({height:i.height,left:i.left,top:i.top,width:i.width})}},[t.width,t.height,t.top,t.left,...e])]}function cu(e){return`Minified Redux error #${e}; visit https://redux.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var lu=typeof Symbol==`function`&&Symbol.observable||`@@observable`,uu=()=>Math.random().toString(36).substring(7).split(``).join(`.`),du={INIT:`@@redux/INIT${uu()}`,REPLACE:`@@redux/REPLACE${uu()}`,PROBE_UNKNOWN_ACTION:()=>`@@redux/PROBE_UNKNOWN_ACTION${uu()}`};function fu(e){if(typeof e!=`object`||!e)return!1;let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t||Object.getPrototypeOf(e)===null}function pu(e,t,n){if(typeof e!=`function`)throw Error(cu(2));if(typeof t==`function`&&typeof n==`function`||typeof n==`function`&&typeof arguments[3]==`function`)throw Error(cu(0));if(typeof t==`function`&&n===void 0&&(n=t,t=void 0),n!==void 0){if(typeof n!=`function`)throw Error(cu(1));return n(pu)(e,t)}let r=e,i=t,a=new Map,o=a,s=0,c=!1;function l(){o===a&&(o=new Map,a.forEach((e,t)=>{o.set(t,e)}))}function u(){if(c)throw Error(cu(3));return i}function d(e){if(typeof e!=`function`)throw Error(cu(4));if(c)throw Error(cu(5));let t=!0;l();let n=s++;return o.set(n,e),function(){if(t){if(c)throw Error(cu(6));t=!1,l(),o.delete(n),a=null}}}function f(e){if(!fu(e))throw Error(cu(7));if(e.type===void 0)throw Error(cu(8));if(typeof e.type!=`string`)throw Error(cu(17));if(c)throw Error(cu(9));try{c=!0,i=r(i,e)}finally{c=!1}return(a=o).forEach(e=>{e()}),e}function p(e){if(typeof e!=`function`)throw Error(cu(10));r=e,f({type:du.REPLACE})}function m(){let e=d;return{subscribe(t){if(typeof t!=`object`||!t)throw Error(cu(11));function n(){let e=t;e.next&&e.next(u())}return n(),{unsubscribe:e(n)}},[lu](){return this}}}return f({type:du.INIT}),{dispatch:f,subscribe:d,getState:u,replaceReducer:p,[lu]:m}}function mu(e){Object.keys(e).forEach(t=>{let n=e[t];if(n(void 0,{type:du.INIT})===void 0)throw Error(cu(12));if(n(void 0,{type:du.PROBE_UNKNOWN_ACTION()})===void 0)throw Error(cu(13))})}function hu(e){let t=Object.keys(e),n={};for(let r=0;re:e.length===1?e[0]:e.reduce((e,t)=>(...n)=>e(t(...n)))}function _u(...e){return t=>(n,r)=>{let i=t(n,r),a=()=>{throw Error(cu(15))},o={getState:i.getState,dispatch:(e,...t)=>a(e,...t)};return a=gu(...e.map(e=>e(o)))(i.dispatch),{...i,dispatch:a}}}function vu(e){return fu(e)&&`type`in e&&typeof e.type==`string`}var yu=Symbol.for(`immer-nothing`),bu=Symbol.for(`immer-draftable`),xu=Symbol.for(`immer-state`);function Su(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var Cu=Object,wu=Cu.getPrototypeOf,Tu=`constructor`,Eu=`prototype`,Du=`configurable`,Ou=`enumerable`,ku=`writable`,Au=`value`,ju=e=>!!e&&!!e[xu];function Mu(e){return e?Fu(e)||Hu(e)||!!e[bu]||!!e[Tu]?.[bu]||Uu(e)||Wu(e):!1}var Nu=Cu[Eu][Tu].toString(),Pu=new WeakMap;function Fu(e){if(!e||!Gu(e))return!1;let t=wu(e);if(t===null||t===Cu[Eu])return!0;let n=Cu.hasOwnProperty.call(t,Tu)&&t[Tu];if(n===Object)return!0;if(!Ku(n))return!1;let r=Pu.get(n);return r===void 0&&(r=Function.toString.call(n),Pu.set(n,r)),r===Nu}function Iu(e,t,n=!0){Lu(e)===0?(n?Reflect.ownKeys(e):Cu.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function Lu(e){let t=e[xu];return t?t.type_:Hu(e)?1:Uu(e)?2:Wu(e)?3:0}var Ru=(e,t,n=Lu(e))=>n===2?e.has(t):Cu[Eu].hasOwnProperty.call(e,t),zu=(e,t,n=Lu(e))=>n===2?e.get(t):e[t],Bu=(e,t,n,r=Lu(e))=>{r===2?e.set(t,n):r===3?e.add(n):e[t]=n};function Vu(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}var Hu=Array.isArray,Uu=e=>e instanceof Map,Wu=e=>e instanceof Set,Gu=e=>typeof e==`object`,Ku=e=>typeof e==`function`,qu=e=>typeof e==`boolean`;function Ju(e){let t=+e;return Number.isInteger(t)&&String(t)===e}var Yu=e=>e.copy_||e.base_,Xu=e=>e.modified_?e.copy_:e.base_;function Zu(e,t){if(Uu(e))return new Map(e);if(Wu(e))return new Set(e);if(Hu(e))return Array[Eu].slice.call(e);let n=Fu(e);if(t===!0||t===`class_only`&&!n){let t=Cu.getOwnPropertyDescriptors(e);delete t[xu];let n=Reflect.ownKeys(t);for(let r=0;r1&&Cu.defineProperties(e,{set:ed,add:ed,clear:ed,delete:ed}),Cu.freeze(e),t&&Iu(e,(e,t)=>{Qu(t,!0)},!1),e)}function $u(){Su(2)}var ed={[Au]:$u};function td(e){return e===null||!Gu(e)?!0:Cu.isFrozen(e)}var nd=`MapSet`,rd=`Patches`,id=`ArrayMethods`,ad={};function od(e){let t=ad[e];return t||Su(0,e),t}var sd=e=>!!ad[e],cd,ld=()=>cd,ud=(e,t)=>({drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0,handledSet_:new Set,processedForPatches_:new Set,mapSetPlugin_:sd(nd)?od(nd):void 0,arrayMethodsPlugin_:sd(id)?od(id):void 0});function dd(e,t){t&&(e.patchPlugin_=od(rd),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function fd(e){pd(e),e.drafts_.forEach(hd),e.drafts_=null}function pd(e){e===cd&&(cd=e.parent_)}var md=e=>cd=ud(cd,e);function hd(e){let t=e[xu];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function gd(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];if(e!==void 0&&e!==n){n[xu].modified_&&(fd(t),Su(4)),Mu(e)&&(e=_d(t,e));let{patchPlugin_:r}=t;r&&r.generateReplacementPatches_(n[xu].base_,e,t)}else e=_d(t,n);return vd(t,e,!0),fd(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===yu?void 0:e}function _d(e,t){if(td(t))return t;let n=t[xu];if(!n)return Ed(t,e.handledSet_,e);if(!bd(n,e))return t;if(!n.modified_)return n.base_;if(!n.finalized_){let{callbacks_:t}=n;if(t)for(;t.length>0;)t.pop()(e);wd(n,e)}return n.copy_}function vd(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&Qu(t,n)}function yd(e){e.finalized_=!0,e.scope_.unfinalizedDrafts_--}var bd=(e,t)=>e.scope_===t,xd=[];function Sd(e,t,n,r){let i=Yu(e),a=e.type_;if(r!==void 0&&zu(i,r,a)===t){Bu(i,r,n,a);return}if(!e.draftLocations_){let t=e.draftLocations_=new Map;Iu(i,(e,n)=>{if(ju(n)){let r=t.get(n)||[];r.push(e),t.set(n,r)}})}let o=e.draftLocations_.get(t)??xd;for(let e of o)Bu(i,e,n,a)}function Cd(e,t,n){e.callbacks_.push(function(r){let i=t;if(!i||!bd(i,r))return;r.mapSetPlugin_?.fixSetContents(i);let a=Xu(i);Sd(e,i.draft_??i,a,n),wd(i,r)})}function wd(e,t){if(e.modified_&&!e.finalized_&&(e.type_===3||e.type_===1&&e.allIndicesReassigned_||(e.assigned_?.size??0)>0)){let{patchPlugin_:n}=t;if(n){let r=n.getPath(e);r&&n.generatePatches_(e,r,t)}yd(e)}}function Td(e,t,n){let{scope_:r}=e;if(ju(n)){let i=n[xu];bd(i,r)&&i.callbacks_.push(function(){Pd(e),Sd(e,n,Xu(i),t)})}else Mu(n)&&e.callbacks_.push(function(){let i=Yu(e);e.type_===3?i.has(n)&&Ed(n,r.handledSet_,r):zu(i,t,e.type_)===n&&r.drafts_.length>1&&(e.assigned_.get(t)??!1)===!0&&e.copy_&&Ed(zu(e.copy_,t,e.type_),r.handledSet_,r)})}function Ed(e,t,n){return!n.immer_.autoFreeze_&&n.unfinalizedDrafts_<1||ju(e)||t.has(e)||!Mu(e)||td(e)?e:(t.add(e),Iu(e,(r,i)=>{if(ju(i)){let t=i[xu];bd(t,n)&&(Bu(e,r,Xu(t),e.type_),yd(t))}else Mu(i)&&Ed(i,t,n)}),e)}function Dd(e,t){let n=Hu(e),r={type_:n?1:0,scope_:t?t.scope_:ld(),modified_:!1,finalized_:!1,assigned_:void 0,parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1,callbacks_:void 0},i=r,a=Od;n&&(i=[r],a=kd);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,[s,r]}var Od={get(e,t){if(t===xu)return e;let n=e.scope_.arrayMethodsPlugin_,r=e.type_===1&&typeof t==`string`;if(r&&n?.isArrayOperationMethod(t))return n.createMethodInterceptor(e,t);let i=Yu(e);if(!Ru(i,t,e.type_))return jd(e,i,t);let a=i[t];if(e.finalized_||!Mu(a)||r&&e.operationMethod&&n?.isMutatingArrayMethod(e.operationMethod)&&Ju(t))return a;if(a===Ad(e.base_,t)){Pd(e);let n=e.type_===1?+t:t,r=Id(e.scope_,a,e,n);return e.copy_[n]=r}return a},has(e,t){return t in Yu(e)},ownKeys(e){return Reflect.ownKeys(Yu(e))},set(e,t,n){let r=Md(Yu(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Ad(Yu(e),t),i=r?.[xu];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_.set(t,!1),!0;if(Vu(n,r)&&(n!==void 0||Ru(e.base_,t,e.type_)))return!0;Pd(e),Nd(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_.set(t,!0),Td(e,t,n),!0)},deleteProperty(e,t){return Pd(e),Ad(e.base_,t)!==void 0||t in e.base_?(e.assigned_.set(t,!1),Nd(e)):e.assigned_.delete(t),e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=Yu(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{[ku]:!0,[Du]:e.type_!==1||t!==`length`,[Ou]:r[Ou],[Au]:n[t]}},defineProperty(){Su(11)},getPrototypeOf(e){return wu(e.base_)},setPrototypeOf(){Su(12)}},kd={};for(let e in Od){let t=Od[e];kd[e]=function(){let e=arguments;return e[0]=e[0][0],t.apply(this,e)}}kd.deleteProperty=function(e,t){return kd.set.call(this,e,t,void 0)},kd.set=function(e,t,n){return Od.set.call(this,e[0],t,n,e[0])};function Ad(e,t){let n=e[xu];return(n?Yu(n):e)[t]}function jd(e,t,n){let r=Md(t,n);return r?Au in r?r[Au]:r.get?.call(e.draft_):void 0}function Md(e,t){if(!(t in e))return;let n=wu(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=wu(n)}}function Nd(e){e.modified_||(e.modified_=!0,e.parent_&&Nd(e.parent_))}function Pd(e){e.copy_||=(e.assigned_=new Map,Zu(e.base_,e.scope_.immer_.useStrictShallowCopy_))}var Fd=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!1,this.produce=(e,t,n)=>{if(Ku(e)&&!Ku(t)){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}Ku(t)||Su(6),n!==void 0&&!Ku(n)&&Su(7);let r;if(Mu(e)){let i=md(this),a=Id(i,e,void 0),o=!0;try{r=t(a),o=!1}finally{o?fd(i):pd(i)}return dd(i,n),gd(r,i)}else if(!e||!Gu(e)){if(r=t(e),r===void 0&&(r=e),r===yu&&(r=void 0),this.autoFreeze_&&Qu(r,!0),n){let t=[],i=[];od(rd).generateReplacementPatches_(e,r,{patches_:t,inversePatches_:i}),n(t,i)}return r}else Su(1,e)},this.produceWithPatches=(e,t)=>{if(Ku(e))return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},qu(e?.autoFreeze)&&this.setAutoFreeze(e.autoFreeze),qu(e?.useStrictShallowCopy)&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),qu(e?.useStrictIteration)&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){Mu(e)||Su(8),ju(e)&&(e=Ld(e));let t=md(this),n=Id(t,e,void 0);return n[xu].isManual_=!0,pd(t),n}finishDraft(e,t){let n=e&&e[xu];(!n||!n.isManual_)&&Su(9);let{scope_:r}=n;return dd(r,t),gd(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=od(rd).applyPatches_;return ju(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Id(e,t,n,r){let[i,a]=Uu(t)?od(nd).proxyMap_(t,n):Wu(t)?od(nd).proxySet_(t,n):Dd(t,n);return(n?.scope_??ld()).drafts_.push(i),a.callbacks_=n?.callbacks_??[],a.key_=r,n&&r!==void 0?Cd(n,a,r):a.callbacks_.push(function(e){e.mapSetPlugin_?.fixSetContents(a);let{patchPlugin_:t}=e;a.modified_&&t&&t.generatePatches_(a,[],e)}),i}function Ld(e){return ju(e)||Su(10,e),Rd(e)}function Rd(e){if(!Mu(e)||td(e))return e;let t=e[xu],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=Zu(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=Zu(e,!0);return Iu(n,(e,t)=>{Bu(n,e,Rd(t))},r),t&&(t.finalized_=!1),n}var zd=new Fd().produce;function Bd(e){return({dispatch:t,getState:n})=>r=>i=>typeof i==`function`?i(t,n,e):r(i)}var Vd=Bd(),Hd=Bd,Ud=typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__?window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__:function(){if(arguments.length!==0)return typeof arguments[0]==`object`?gu:gu.apply(null,arguments)};typeof window<`u`&&window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__;var Wd=e=>e&&typeof e.match==`function`;function Gd(e,t){function n(...n){if(t){let r=t(...n);if(!r)throw Error(lp(0));return{type:e,payload:r.payload,...`meta`in r&&{meta:r.meta},...`error`in r&&{error:r.error}}}return{type:e,payload:n[0]}}return n.toString=()=>`${e}`,n.type=e,n.match=t=>vu(t)&&t.type===e,n}var Kd=class e extends Array{constructor(...t){super(...t),Object.setPrototypeOf(this,e.prototype)}static get[Symbol.species](){return e}concat(...e){return super.concat.apply(this,e)}prepend(...t){return t.length===1&&Array.isArray(t[0])?new e(...t[0].concat(this)):new e(...t.concat(this))}};function qd(e){return Mu(e)?zd(e,()=>{}):e}function Jd(e,t,n){return e.has(t)?e.get(t):e.set(t,n(t)).get(t)}function Yd(e){return typeof e==`boolean`}var Xd=()=>function(e){let{thunk:t=!0,immutableCheck:n=!0,serializableCheck:r=!0,actionCreatorCheck:i=!0}=e??{},a=new Kd;return t&&(Yd(t)?a.push(Vd):a.push(Hd(t.extraArgument))),a},Zd=`RTK_autoBatch`,Qd=()=>e=>({payload:e,meta:{[Zd]:!0}}),$d=e=>t=>{setTimeout(t,e)},ef=(e={type:`raf`})=>t=>(...n)=>{let r=t(...n),i=!0,a=!1,o=!1,s=new Set,c=e.type===`tick`?queueMicrotask:e.type===`raf`?typeof window<`u`&&window.requestAnimationFrame?window.requestAnimationFrame:$d(10):e.type===`callback`?e.queueNotification:$d(e.timeout),l=()=>{o=!1,a&&(a=!1,s.forEach(e=>e()))};return Object.assign({},r,{subscribe(e){let t=r.subscribe(()=>i&&e());return s.add(e),()=>{t(),s.delete(e)}},dispatch(e){try{return i=!e?.meta?.[Zd],a=!i,a&&(o||(o=!0,c(l))),r.dispatch(e)}finally{i=!0}}})},tf=e=>function(t){let{autoBatch:n=!0}=t??{},r=new Kd(e);return n&&r.push(ef(typeof n==`object`?n:void 0)),r};function nf(e){let t=Xd(),{reducer:n=void 0,middleware:r,devTools:i=!0,duplicateMiddlewareCheck:a=!0,preloadedState:o=void 0,enhancers:s=void 0}=e||{},c;if(typeof n==`function`)c=n;else if(fu(n))c=hu(n);else throw Error(lp(1));let l;l=typeof r==`function`?r(t):t();let u=gu;i&&(u=Ud({trace:!1,...typeof i==`object`&&i}));let d=tf(_u(...l)),f=typeof s==`function`?s(d):d(),p=u(...f);return pu(c,o,p)}function rf(e){let t={},n=[],r,i={addCase(e,n){let r=typeof e==`string`?e:e.type;if(!r)throw Error(lp(28));if(r in t)throw Error(lp(29));return t[r]=n,i},addAsyncThunk(e,r){return r.pending&&(t[e.pending.type]=r.pending),r.rejected&&(t[e.rejected.type]=r.rejected),r.fulfilled&&(t[e.fulfilled.type]=r.fulfilled),r.settled&&n.push({matcher:e.settled,reducer:r.settled}),i},addMatcher(e,t){return n.push({matcher:e,reducer:t}),i},addDefaultCase(e){return r=e,i}};return e(i),[t,n,r]}function af(e){return typeof e==`function`}function of(e,t){let[n,r,i]=rf(t),a;if(af(e))a=()=>qd(e());else{let t=qd(e);a=()=>t}function o(e=a(),t){let o=[n[t.type],...r.filter(({matcher:e})=>e(t)).map(({reducer:e})=>e)];return o.filter(e=>!!e).length===0&&(o=[i]),o.reduce((e,n)=>{if(n)if(ju(e)){let r=n(e,t);return r===void 0?e:r}else if(Mu(e))return zd(e,e=>n(e,t));else{let r=n(e,t);if(r===void 0){if(e===null)return e;throw Error(`A case reducer on a non-draftable value must not return undefined`)}return r}return e},e)}return o.getInitialState=a,o}var sf=(e,t)=>Wd(e)?e.match(t):e(t);function cf(...e){return t=>e.some(e=>sf(e,t))}var lf=`ModuleSymbhasOwnPr-0123456789ABCDEFGHNRVfgctiUvz_KqYTJkLxpZXIjQW`,uf=(e=21)=>{let t=``,n=e;for(;n--;)t+=lf[Math.random()*64|0];return t},df=[`name`,`message`,`stack`,`code`],ff=class{constructor(e,t){this.payload=e,this.meta=t}_type},pf=class{constructor(e,t){this.payload=e,this.meta=t}_type},mf=e=>{if(typeof e==`object`&&e){let t={};for(let n of df)typeof e[n]==`string`&&(t[n]=e[n]);return t}return{message:String(e)}},hf=`External signal was aborted`;(()=>{function e(e,t,n){let r=Gd(e+`/fulfilled`,(e,t,n,r)=>({payload:e,meta:{...r||{},arg:n,requestId:t,requestStatus:`fulfilled`}})),i=Gd(e+`/pending`,(e,t,n)=>({payload:void 0,meta:{...n||{},arg:t,requestId:e,requestStatus:`pending`}})),a=Gd(e+`/rejected`,(e,t,r,i,a)=>({payload:i,error:(n&&n.serializeError||mf)(e||`Rejected`),meta:{...a||{},arg:r,requestId:t,rejectedWithValue:!!i,requestStatus:`rejected`,aborted:e?.name===`AbortError`,condition:e?.name===`ConditionError`}}));function o(e,{signal:o}={}){return(s,c,l)=>{let u=n?.idGenerator?n.idGenerator(e):uf(),d=new AbortController,f,p;function m(e){p=e,d.abort()}o&&(o.aborted?m(hf):o.addEventListener(`abort`,()=>m(hf),{once:!0}));let h=async function(){let o;try{let a=n?.condition?.(e,{getState:c,extra:l});if(_f(a)&&(a=await a),a===!1||d.signal.aborted)throw{name:`ConditionError`,message:`Aborted due to condition callback returning false.`};let h=new Promise((e,t)=>{f=()=>{t({name:`AbortError`,message:p||`Aborted`})},d.signal.addEventListener(`abort`,f,{once:!0})});s(i(u,e,n?.getPendingMeta?.({requestId:u,arg:e},{getState:c,extra:l}))),o=await Promise.race([h,Promise.resolve(t(e,{dispatch:s,getState:c,extra:l,requestId:u,signal:d.signal,abort:m,rejectWithValue:(e,t)=>new ff(e,t),fulfillWithValue:(e,t)=>new pf(e,t)})).then(t=>{if(t instanceof ff)throw t;return t instanceof pf?r(t.payload,u,e,t.meta):r(t,u,e)})])}catch(t){o=t instanceof ff?a(null,u,e,t.payload,t.meta):a(t,u,e)}finally{f&&d.signal.removeEventListener(`abort`,f)}return n&&!n.dispatchConditionRejection&&a.match(o)&&o.meta.condition||s(o),o}();return Object.assign(h,{abort:m,requestId:u,arg:e,unwrap(){return h.then(gf)}})}}return Object.assign(o,{pending:i,rejected:a,fulfilled:r,settled:cf(a,r),typePrefix:e})}return e.withTypes=()=>e,e})();function gf(e){if(e.meta&&e.meta.rejectedWithValue)throw e.payload;if(e.error)throw e.error;return e.payload}function _f(e){return typeof e==`object`&&!!e&&typeof e.then==`function`}var vf=Symbol.for(`rtk-slice-createasyncthunk`);function yf(e,t){return`${e}/${t}`}function bf({creators:e}={}){let t=e?.asyncThunk?.[vf];return function(e){let{name:n,reducerPath:r=n}=e;if(!n)throw Error(lp(11));let i=(typeof e.reducers==`function`?e.reducers(Cf()):e.reducers)||{},a=Object.keys(i),o={sliceCaseReducersByName:{},sliceCaseReducersByType:{},actionCreators:{},sliceMatchers:[]},s={addCase(e,t){let n=typeof e==`string`?e:e.type;if(!n)throw Error(lp(12));if(n in o.sliceCaseReducersByType)throw Error(lp(13));return o.sliceCaseReducersByType[n]=t,s},addMatcher(e,t){return o.sliceMatchers.push({matcher:e,reducer:t}),s},exposeAction(e,t){return o.actionCreators[e]=t,s},exposeCaseReducer(e,t){return o.sliceCaseReducersByName[e]=t,s}};a.forEach(r=>{let a=i[r],o={reducerName:r,type:yf(n,r),createNotation:typeof e.reducers==`function`};Tf(a)?Df(o,a,s,t):wf(o,a,s)});function c(){let[t={},n=[],r=void 0]=typeof e.extraReducers==`function`?rf(e.extraReducers):[e.extraReducers],i={...t,...o.sliceCaseReducersByType};return of(e.initialState,e=>{for(let t in i)e.addCase(t,i[t]);for(let t of o.sliceMatchers)e.addMatcher(t.matcher,t.reducer);for(let t of n)e.addMatcher(t.matcher,t.reducer);r&&e.addDefaultCase(r)})}let l=e=>e,u=new Map,d=new WeakMap,f;function p(e,t){return f||=c(),f(e,t)}function m(){return f||=c(),f.getInitialState()}function h(t,n=!1){function r(e){let i=e[t];return i===void 0&&n&&(i=Jd(d,r,m)),i}function i(t=l){return Jd(Jd(u,n,()=>new WeakMap),t,()=>{let r={};for(let[i,a]of Object.entries(e.selectors??{}))r[i]=xf(a,t,()=>Jd(d,t,m),n);return r})}return{reducerPath:t,getSelectors:i,get selectors(){return i(r)},selectSlice:r}}let g={name:n,reducer:p,actions:o.actionCreators,caseReducers:o.sliceCaseReducersByName,getInitialState:m,...h(r),injectInto(e,{reducerPath:t,...n}={}){let i=t??r;return e.inject({reducerPath:i,reducer:p},n),{...g,...h(i,!0)}}};return g}}function xf(e,t,n,r){function i(i,...a){let o=t(i);return o===void 0&&r&&(o=n()),e(o,...a)}return i.unwrapped=e,i}var Sf=bf();function Cf(){function e(e,t){return{_reducerDefinitionType:`asyncThunk`,payloadCreator:e,...t}}return e.withTypes=()=>e,{reducer(e){return Object.assign({[e.name](...t){return e(...t)}}[e.name],{_reducerDefinitionType:`reducer`})},preparedReducer(e,t){return{_reducerDefinitionType:`reducerWithPrepare`,prepare:e,reducer:t}},asyncThunk:e}}function wf({type:e,reducerName:t,createNotation:n},r,i){let a,o;if(`reducer`in r){if(n&&!Ef(r))throw Error(lp(17));a=r.reducer,o=r.prepare}else a=r;i.addCase(e,a).exposeCaseReducer(t,a).exposeAction(t,o?Gd(e,o):Gd(e))}function Tf(e){return e._reducerDefinitionType===`asyncThunk`}function Ef(e){return e._reducerDefinitionType===`reducerWithPrepare`}function Df({type:e,reducerName:t},n,r,i){if(!i)throw Error(lp(18));let{payloadCreator:a,fulfilled:o,pending:s,rejected:c,settled:l,options:u}=n,d=i(e,a,u);r.exposeAction(t,d),o&&r.addCase(d.fulfilled,o),s&&r.addCase(d.pending,s),c&&r.addCase(d.rejected,c),l&&r.addMatcher(d.settled,l),r.exposeCaseReducer(t,{fulfilled:o||Of,pending:s||Of,rejected:c||Of,settled:l||Of})}function Of(){}var kf=`task`,Af=`listener`,jf=`completed`,Mf=`cancelled`,Nf=`task-${Mf}`,Pf=`task-${jf}`,Ff=`${Af}-${Mf}`,If=`${Af}-${jf}`,Lf=class{constructor(e){this.code=e,this.message=`${kf} ${Mf} (reason: ${e})`}name=`TaskAbortError`;message},Rf=(e,t)=>{if(typeof e!=`function`)throw TypeError(lp(32))},zf=()=>{},Bf=(e,t=zf)=>(e.catch(t),e),Vf=(e,t)=>(e.addEventListener(`abort`,t,{once:!0}),()=>e.removeEventListener(`abort`,t)),Hf=e=>{if(e.aborted)throw new Lf(e.reason)};function Uf(e,t){let n=zf;return new Promise((r,i)=>{let a=()=>i(new Lf(e.reason));if(e.aborted){a();return}n=Vf(e,a),t.finally(()=>n()).then(r,i)}).finally(()=>{n=zf})}var Wf=async(e,t)=>{try{return await Promise.resolve(),{status:`ok`,value:await e()}}catch(e){return{status:e instanceof Lf?`cancelled`:`rejected`,error:e}}finally{t?.()}},Gf=e=>t=>Bf(Uf(e,t).then(t=>(Hf(e),t))),Kf=e=>{let t=Gf(e);return e=>t(new Promise(t=>setTimeout(t,e)))},{assign:qf}=Object,Jf={},Yf=`listenerMiddleware`,Xf=(e,t)=>{let n=t=>Vf(e,()=>t.abort(e.reason));return(r,i)=>{Rf(r,`taskExecutor`);let a=new AbortController;n(a);let o=Wf(async()=>{Hf(e),Hf(a.signal);let t=await r({pause:Gf(a.signal),delay:Kf(a.signal),signal:a.signal});return Hf(a.signal),t},()=>a.abort(Pf));return i?.autoJoin&&t.push(o.catch(zf)),{result:Gf(e)(o),cancel(){a.abort(Nf)}}}},Zf=(e,t)=>{let n=async(n,r)=>{Hf(t);let i=()=>{},a=[new Promise((t,r)=>{let a=e({predicate:n,effect:(e,n)=>{n.unsubscribe(),t([e,n.getState(),n.getOriginalState()])}});i=()=>{a(),r()}})];r!=null&&a.push(new Promise(e=>setTimeout(e,r,null)));try{let e=await Uf(t,Promise.race(a));return Hf(t),e}finally{i()}};return(e,t)=>Bf(n(e,t))},Qf=e=>{let{type:t,actionCreator:n,matcher:r,predicate:i,effect:a}=e;if(t)i=Gd(t).match;else if(n)t=n.type,i=n.match;else if(r)i=r;else if(!i)throw Error(lp(21));return Rf(a,`options.listener`),{predicate:i,type:t,effect:a}},$f=qf(e=>{let{type:t,predicate:n,effect:r}=Qf(e);return{id:uf(),effect:r,type:t,predicate:n,pending:new Set,unsubscribe:()=>{throw Error(lp(22))}}},{withTypes:()=>$f}),ep=(e,t)=>{let{type:n,effect:r,predicate:i}=Qf(t);return Array.from(e.values()).find(e=>(typeof n==`string`?e.type===n:e.predicate===i)&&e.effect===r)},tp=e=>{e.pending.forEach(e=>{e.abort(Ff)})},np=(e,t)=>()=>{for(let e of t.keys())tp(e);e.clear()},rp=(e,t,n)=>{try{e(t,n)}catch(e){setTimeout(()=>{throw e},0)}},ip=qf(Gd(`${Yf}/add`),{withTypes:()=>ip}),ap=Gd(`${Yf}/removeAll`),op=qf(Gd(`${Yf}/remove`),{withTypes:()=>op}),sp=(...e)=>{console.error(`${Yf}/error`,...e)},cp=(e={})=>{let t=new Map,n=new Map,r=e=>{let t=n.get(e)??0;n.set(e,t+1)},i=e=>{let t=n.get(e)??1;t===1?n.delete(e):n.set(e,t-1)},{extra:a,onError:o=sp}=e;Rf(o,`onError`);let s=e=>(e.unsubscribe=()=>t.delete(e.id),t.set(e.id,e),t=>{e.unsubscribe(),t?.cancelActive&&tp(e)}),c=e=>s(ep(t,e)??$f(e));qf(c,{withTypes:()=>c});let l=e=>{let n=ep(t,e);return n&&(n.unsubscribe(),e.cancelActive&&tp(n)),!!n};qf(l,{withTypes:()=>l});let u=async(e,n,s,l)=>{let u=new AbortController,d=Zf(c,u.signal),f=[];try{e.pending.add(u),r(e),await Promise.resolve(e.effect(n,qf({},s,{getOriginalState:l,condition:(e,t)=>d(e,t).then(Boolean),take:d,delay:Kf(u.signal),pause:Gf(u.signal),extra:a,signal:u.signal,fork:Xf(u.signal,f),unsubscribe:e.unsubscribe,subscribe:()=>{t.set(e.id,e)},cancelActiveListeners:()=>{e.pending.forEach((e,t,n)=>{e!==u&&(e.abort(Ff),n.delete(e))})},cancel:()=>{u.abort(Ff),e.pending.delete(u)},throwIfCancelled:()=>{Hf(u.signal)}})))}catch(e){e instanceof Lf||rp(o,e,{raisedBy:`effect`})}finally{await Promise.all(f),u.abort(If),i(e),e.pending.delete(u)}},d=np(t,n);return{middleware:e=>n=>r=>{if(!vu(r))return n(r);if(ip.match(r))return c(r.payload);if(ap.match(r)){d();return}if(op.match(r))return l(r.payload);let i=e.getState(),a=()=>{if(i===Jf)throw Error(lp(23));return i},s;try{if(s=n(r),t.size>0){let n=e.getState(),s=Array.from(t.values());for(let t of s){let s=!1;try{s=t.predicate(r,n,i)}catch(e){s=!1,rp(o,e,{raisedBy:`predicate`})}s&&u(t,r,e,a)}}}finally{i=Jf}return s},startListening:c,stopListening:l,clearListeners:d}};function lp(e){return`Minified Redux Toolkit error #${e}; visit https://redux-toolkit.js.org/Errors?code=${e} for the full message or use the non-minified dev environment for full errors. `}var up=Sf({name:`chartLayout`,initialState:{layoutType:`horizontal`,width:0,height:0,margin:{top:5,right:5,bottom:5,left:5},scale:1},reducers:{setLayout(e,t){e.layoutType=t.payload},setChartSize(e,t){e.width=t.payload.width,e.height=t.payload.height},setMargin(e,t){e.margin.top=t.payload.top??0,e.margin.right=t.payload.right??0,e.margin.bottom=t.payload.bottom??0,e.margin.left=t.payload.left??0},setScale(e,t){e.scale=t.payload}}}),{setMargin:dp,setLayout:fp,setChartSize:pp,setScale:mp}=up.actions,hp=up.reducer;function gp(e,t,n){return Array.isArray(e)&&e&&t+n!==0?e.slice(t,n+1):e}function $(e){return Number.isFinite(e)}function _p(e){return typeof e==`number`&&e>0&&Number.isFinite(e)}function vp(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function yp(e){for(var t=1;t{if(t&&n){var{width:r,height:i}=n,{align:a,verticalAlign:o,layout:s}=t;if((s===`vertical`||s===`horizontal`&&o===`middle`)&&a!==`center`&&X(e[a]))return yp(yp({},e),{},{[a]:e[a]+(r||0)});if((s===`horizontal`||s===`vertical`&&a===`center`)&&o!==`middle`&&X(e[o]))return yp(yp({},e),{},{[o]:e[o]+(i||0)})}return e},Tp=(e,t)=>e===`horizontal`&&t===`xAxis`||e===`vertical`&&t===`yAxis`||e===`centric`&&t===`angleAxis`||e===`radial`&&t===`radiusAxis`,Ep=(e,t,n,r)=>{if(r)return e.map(e=>e.coordinate);var i,a,o=e.map(e=>(e.coordinate===t&&(i=!0),e.coordinate===n&&(a=!0),e.coordinate));return i||o.push(t),a||o.push(n),o},Dp=(e,t,n)=>{if(!e)return null;var{duplicateDomain:r,type:i,range:a,scale:o,realScaleType:s,isCategorical:c,categoricalDomain:l,tickCount:u,ticks:d,niceTicks:f,axisType:p}=e;if(!o)return null;var m=s===`scaleBand`&&o.bandwidth?o.bandwidth()/2:2,h=(t||n)&&i===`category`&&o.bandwidth?o.bandwidth()/m:0;return h=p===`angleAxis`&&a&&a.length>=2?Xs(a[0]-a[1])*2*h:h,t&&(d||f)?(d||f||[]).map((e,t)=>{var n=r?r.indexOf(e):e,i=o.map(n);return $(i)?{coordinate:i+h,value:e,offset:h,index:t}:null}).filter(cc):c&&l?l.map((e,t)=>{var n=o.map(e);return $(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(cc):o.ticks&&!n&&u!=null?o.ticks(u).map((e,t)=>{var n=o.map(e);return $(n)?{coordinate:n+h,value:e,index:t,offset:h}:null}).filter(cc):o.domain().map((e,t)=>{var n=o.map(e);return $(n)?{coordinate:n+h,value:r?r[e]:e,index:t,offset:h}:null}).filter(cc)},Op=(e,t)=>{if(!t||t.length!==2||!X(t[0])||!X(t[1]))return e;var n=Math.min(t[0],t[1]),r=Math.max(t[0],t[1]),i=[e[0],e[1]];return(!X(e[0])||e[0]r)&&(i[1]=r),i[0]>r&&(i[0]=r),i[1]{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(s[0]=i,i+=u,s[1]=i):(s[0]=a,a+=u,s[1]=a)}}}},expand:Is,none:js,silhouette:Ls,wiggle:Rs,positive:e=>{var t=e.length;if(!(t<=0)){var n=e[0]?.length;if(!(n==null||n<=0))for(var r=0;r=0?(o[0]=i,i+=s,o[1]=i):(o[0]=0,o[1]=0)}}}}},Ap=(e,t,n)=>{var r=kp[n]??js,i=Fs().keys(t).value((e,t)=>Number(Cp(e,t,0))).order(Ms).offset(r)(e);return i.forEach((n,r)=>{n.forEach((n,i)=>{var a=Cp(e[i],t[r],0);Array.isArray(a)&&a.length===2&&X(a[0])&&X(a[1])&&(n[0]=a[0],n[1]=a[1])})}),i};function jp(e){return e==null?void 0:String(e)}function Mp(e){var{axis:t,ticks:n,bandSize:r,entry:i,index:a,dataKey:o}=e;if(t.type===`category`){if(!t.allowDuplicatedCategory&&t.dataKey&&!oc(i[t.dataKey])){var s=ac(n,`value`,i[t.dataKey]);if(s)return s.coordinate+r/2}return n!=null&&n[a]?n[a].coordinate+r/2:null}var c=Cp(i,oc(o)?t.dataKey:o),l=t.scale.map(c);return X(l)?l:null}var Np=e=>{var{axis:t,ticks:n,offset:r,bandSize:i,entry:a,index:o}=e;if(t.type===`category`)return n[o]?n[o].coordinate+r:null;var s=Cp(a,t.dataKey,t.scale.domain()[o]);if(oc(s))return null;var c=t.scale.map(s);return X(c)?c-i/2+r:null},Pp=e=>{var{numericAxis:t}=e,n=t.scale.domain();if(t.type===`number`){var r=Math.min(n[0],n[1]),i=Math.max(n[0],n[1]);return r<=0&&i>=0?0:i<0?i:r}return n[0]},Fp=e=>{var t=e.flat(2).filter(X);return[Math.min(...t),Math.max(...t)]},Ip=e=>[e[0]===1/0?0:e[0],e[1]===-1/0?0:e[1]],Lp=(e,t,n)=>{if(e!=null)return Ip(Object.keys(e).reduce((r,i)=>{var a=e[i];if(!a)return r;var{stackedData:o}=a,s=o.reduce((e,r)=>{var i=Fp(gp(r,t,n));return!$(i[0])||!$(i[1])?e:[Math.min(e[0],i[0]),Math.max(e[1],i[1])]},[1/0,-1/0]);return[Math.min(s[0],r[0]),Math.max(s[1],r[1])]},[1/0,-1/0]))},Rp=/^dataMin[\s]*-[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,zp=/^dataMax[\s]*\+[\s]*([0-9]+([.]{1}[0-9]+){0,1})$/,Bp=(e,t,n)=>{if(e&&e.scale&&e.scale.bandwidth){var r=e.scale.bandwidth();if(!n||r>0)return r}if(e&&t&&t.length>=2){for(var i=(0,tu.default)(t,e=>e.coordinate),a=1/0,o=1,s=i.length;o{if(t===`horizontal`)return e.relativeX;if(t===`vertical`)return e.relativeY},Wp=(e,t)=>t===`centric`?e.angle:e.radius,Gp=e=>e.layout.width,Kp=e=>e.layout.height,qp=e=>e.layout.scale,Jp=e=>e.layout.margin,Yp=Q(e=>e.cartesianAxis.xAxis,e=>Object.values(e)),Xp=Q(e=>e.cartesianAxis.yAxis,e=>Object.values(e)),Zp=`data-recharts-item-index`,Qp=`data-recharts-item-id`;function $p(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function em(e){for(var t=1;te.brush.height;function am(e){return Xp(e).reduce((e,t)=>t.orientation===`left`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function om(e){return Xp(e).reduce((e,t)=>t.orientation===`right`&&!t.mirror&&!t.hide?e+(typeof t.width==`number`?t.width:60):e,0)}function sm(e){return Yp(e).reduce((e,t)=>t.orientation===`top`&&!t.mirror&&!t.hide?e+t.height:e,0)}function cm(e){return Yp(e).reduce((e,t)=>t.orientation===`bottom`&&!t.mirror&&!t.hide?e+t.height:e,0)}var lm=Q([Gp,Kp,Jp,im,am,om,sm,cm,nu,ru],(e,t,n,r,i,a,o,s,c,l)=>{var u={left:(n.left||0)+i,right:(n.right||0)+a},d=em(em({},{top:(n.top||0)+o,bottom:(n.bottom||0)+s}),u),f=d.bottom;d.bottom+=r,d=wp(d,c,l);var p=e-d.left-d.right,m=t-d.top-d.bottom;return em(em({brushBottom:f},d),{},{width:Math.max(p,0),height:Math.max(m,0)})}),um=Q(lm,e=>({x:e.left,y:e.top,width:e.width,height:e.height})),dm=Q(Gp,Kp,(e,t)=>({x:0,y:0,width:e,height:t})),fm=(0,w.createContext)(null),pm=()=>(0,w.useContext)(fm)!=null,mm=e=>e.brush,hm=Q([mm,lm,Jp],(e,t,n)=>({height:e.height,x:X(e.x)?e.x:t.left,y:X(e.y)?e.y:t.top+t.height+t.brushBottom-(n?.bottom||0),width:X(e.width)?e.width:t.width})),gm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e,t,{signal:n,edges:r}={}){let i,a=null,o=r!=null&&r.includes(`leading`),s=r==null||r.includes(`trailing`),c=()=>{a!==null&&(e.apply(i,a),i=void 0,a=null)},l=()=>{s&&c(),p()},u=null,d=()=>{u!=null&&clearTimeout(u),u=setTimeout(()=>{u=null,l()},t)},f=()=>{u!==null&&(clearTimeout(u),u=null)},p=()=>{f(),i=void 0,a=null},m=()=>{c()},h=function(...e){if(n?.aborted)return;i=this,a=e;let t=u==null;d(),o&&t&&c()};return h.schedule=d,h.cancel=p,h.flush=m,n?.addEventListener(`abort`,p,{once:!0}),h}e.debounce=t})),_m=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=gm();function n(e,n=0,r={}){typeof r!=`object`&&(r={});let{leading:i=!1,trailing:a=!0,maxWait:o}=r,s=[,,];i&&(s[0]=`leading`),a&&(s[1]=`trailing`);let c,l=null,u=t.debounce(function(...t){c=e.apply(this,t),l=null},n,{edges:s}),d=function(...t){return o!=null&&(l===null&&(l=Date.now()),Date.now()-l>=o)?(c=e.apply(this,t),l=Date.now(),u.cancel(),u.schedule(),c):(u.apply(this,t),c)};return d.cancel=u.cancel,d.flush=()=>(u.flush(),c),d}e.debounce=n})),vm=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=_m();function n(e,n=0,r={}){let{leading:i=!0,trailing:a=!0}=r;return t.debounce(e,n,{leading:i,maxWait:n,trailing:a})}e.throttle=n})),ym=o(((e,t)=>{t.exports=vm().throttle})),bm=!0,xm=function(e,t){var n=[...arguments].slice(2);if(bm&&typeof console<`u`&&console.warn&&(t===void 0&&console.warn(`LogUtils requires an error message argument`),!e))if(t===void 0)console.warn(`Minified exception occurred; use the non-minified dev environment for the full error message and additional helpful warnings.`);else{var r=0;console.warn(t.replace(/%s/g,()=>n[r++]))}},Sm={width:`100%`,height:`100%`,debounce:0,minWidth:0,initialDimension:{width:-1,height:-1}},Cm=(e,t,n)=>{var{width:r=Sm.width,height:i=Sm.height,aspect:a,maxHeight:o}=n,s=Qs(r)?e:Number(r),c=Qs(i)?t:Number(i);return a&&a>0&&(s?c=s/a:c&&(s=c*a),o&&c!=null&&c>o&&(c=o)),{calculatedWidth:s,calculatedHeight:c}},wm={width:0,height:0,overflow:`visible`},Tm={width:0,overflowX:`visible`},Em={height:0,overflowY:`visible`},Dm={},Om=e=>{var{width:t,height:n}=e,r=Qs(t),i=Qs(n);return r&&i?wm:r?Tm:i?Em:Dm};function km(e){var{width:t,height:n,aspect:r}=e,i=t,a=n;return i===void 0&&a===void 0?(i=Sm.width,a=Sm.height):i===void 0?i=r&&r>0?void 0:Sm.width:a===void 0&&(a=r&&r>0?void 0:Sm.height),{width:i,height:a}}var Am=l(ym());function jm(){return jm=Object.assign?Object.assign.bind():function(e){for(var t=1;t({width:n,height:r}),[n,r]);return Rm(i)?w.createElement(Lm.Provider,{value:i},t):null}var Bm=()=>(0,w.useContext)(Lm),Vm=(0,w.forwardRef)((e,t)=>{var{aspect:n,initialDimension:r=Sm.initialDimension,width:i,height:a,minWidth:o=Sm.minWidth,minHeight:s,maxHeight:c,children:l,debounce:u=Sm.debounce,id:d,className:f,onResize:p,style:m={}}=e,h=(0,w.useRef)(null),g=(0,w.useRef)();g.current=p,(0,w.useImperativeHandle)(t,()=>h.current);var[_,v]=(0,w.useState)({containerWidth:r.width,containerHeight:r.height}),y=(0,w.useCallback)((e,t)=>{v(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]);(0,w.useEffect)(()=>{if(h.current==null||typeof ResizeObserver>`u`)return lc;var e=e=>{var t,n=e[0];if(n!=null){var{width:r,height:i}=n.contentRect;y(r,i),(t=g.current)==null||t.call(g,r,i)}};u>0&&(e=(0,Am.default)(e,u,{trailing:!0,leading:!1}));var t=new ResizeObserver(e),{width:n,height:r}=h.current.getBoundingClientRect();return y(n,r),t.observe(h.current),()=>{t.disconnect()}},[y,u]);var{containerWidth:b,containerHeight:x}=_;xm(!n||n>0,`The aspect(%s) must be greater than zero.`,n);var{calculatedWidth:S,calculatedHeight:C}=Cm(b,x,{width:i,height:a,aspect:n,maxHeight:c});return xm(S!=null&&S>0||C!=null&&C>0,`The width(%s) and height(%s) of chart should be greater than 0, + please check the style of container, or the props width(%s) and height(%s), + or add a minWidth(%s) or minHeight(%s) or use aspect(%s) to control the + height and width.`,S,C,i,a,o,s,n),w.createElement(`div`,{id:d?`${d}`:void 0,className:Ka(`recharts-responsive-container`,f),style:Nm(Nm({},m),{},{width:i,height:a,minWidth:o,minHeight:s,maxHeight:c}),ref:h},w.createElement(`div`,{style:Om({width:i,height:a})},w.createElement(zm,{width:S,height:C},l)))}),Hm=(0,w.forwardRef)((e,t)=>{var n=Bm();if(_p(n.width)&&_p(n.height))return e.children;var{width:r,height:i}=km({width:e.width,height:e.height,aspect:e.aspect}),{calculatedWidth:a,calculatedHeight:o}=Cm(void 0,void 0,{width:r,height:i,aspect:e.aspect,maxHeight:e.maxHeight});return X(a)&&X(o)?w.createElement(zm,{width:a,height:o},e.children):w.createElement(Vm,jm({},e,{width:r,height:i,ref:t}))});function Um(e){if(e)return{x:e.x,y:e.y,upperWidth:`upperWidth`in e?e.upperWidth:e.width,lowerWidth:`lowerWidth`in e?e.lowerWidth:e.width,width:e.width,height:e.height}}var Wm=()=>{var e=pm(),t=Z(um),n=Z(hm),r=Z(mm)?.padding;return!e||!n||!r?t:{width:n.width-r.left-r.right,height:n.height-r.top-r.bottom,x:r.left,y:r.top}},Gm={top:0,bottom:0,left:0,right:0,width:0,height:0,brushBottom:0},Km=()=>Z(lm)??Gm,qm=()=>Z(Gp),Jm=()=>Z(Kp),Ym=()=>Z(e=>e.layout.margin),Xm=e=>e.layout.layoutType,Zm=()=>Z(Xm),Qm=()=>{var e=Zm();if(e===`horizontal`||e===`vertical`)return e},$m=e=>{var t=e.layout.layoutType;if(t===`centric`||t===`radial`)return t},eh=()=>Zm()!==void 0,th=e=>{var t=Al(),n=pm(),{width:r,height:i}=e,a=Bm(),o=r,s=i;return a&&(o=a.width>0?a.width:r,s=a.height>0?a.height:i),(0,w.useEffect)(()=>{!n&&_p(o)&&_p(s)&&t(pp({width:o,height:s}))},[t,n,o,s]),null},nh=Symbol.for(`immer-nothing`),rh=Symbol.for(`immer-draftable`),ih=Symbol.for(`immer-state`);function ah(e,...t){throw Error(`[Immer] minified error nr: ${e}. Full error at: https://bit.ly/3cXEKWf`)}var oh=Object.getPrototypeOf;function sh(e){return!!e&&!!e[ih]}function ch(e){return e?dh(e)||Array.isArray(e)||!!e[rh]||!!e.constructor?.[rh]||_h(e)||vh(e):!1}var lh=Object.prototype.constructor.toString(),uh=new WeakMap;function dh(e){if(!e||typeof e!=`object`)return!1;let t=Object.getPrototypeOf(e);if(t===null||t===Object.prototype)return!0;let n=Object.hasOwnProperty.call(t,`constructor`)&&t.constructor;if(n===Object)return!0;if(typeof n!=`function`)return!1;let r=uh.get(n);return r===void 0&&(r=Function.toString.call(n),uh.set(n,r)),r===lh}function fh(e,t,n=!0){ph(e)===0?(n?Reflect.ownKeys(e):Object.keys(e)).forEach(n=>{t(n,e[n],e)}):e.forEach((n,r)=>t(r,n,e))}function ph(e){let t=e[ih];return t?t.type_:Array.isArray(e)?1:_h(e)?2:vh(e)?3:0}function mh(e,t){return ph(e)===2?e.has(t):Object.prototype.hasOwnProperty.call(e,t)}function hh(e,t,n){let r=ph(e);r===2?e.set(t,n):r===3?e.add(n):e[t]=n}function gh(e,t){return e===t?e!==0||1/e==1/t:e!==e&&t!==t}function _h(e){return e instanceof Map}function vh(e){return e instanceof Set}function yh(e){return e.copy_||e.base_}function bh(e,t){if(_h(e))return new Map(e);if(vh(e))return new Set(e);if(Array.isArray(e))return Array.prototype.slice.call(e);let n=dh(e);if(t===!0||t===`class_only`&&!n){let t=Object.getOwnPropertyDescriptors(e);delete t[ih];let n=Reflect.ownKeys(t);for(let r=0;r1&&Object.defineProperties(e,{set:Ch,add:Ch,clear:Ch,delete:Ch}),Object.freeze(e),t&&Object.values(e).forEach(e=>xh(e,!0)),e)}function Sh(){ah(2)}var Ch={value:Sh};function wh(e){return typeof e!=`object`||!e?!0:Object.isFrozen(e)}var Th={};function Eh(e){let t=Th[e];return t||ah(0,e),t}var Dh;function Oh(){return Dh}function kh(e,t){return{drafts_:[],parent_:e,immer_:t,canAutoFreeze_:!0,unfinalizedDrafts_:0}}function Ah(e,t){t&&(Eh(`Patches`),e.patches_=[],e.inversePatches_=[],e.patchListener_=t)}function jh(e){Mh(e),e.drafts_.forEach(Ph),e.drafts_=null}function Mh(e){e===Dh&&(Dh=e.parent_)}function Nh(e){return Dh=kh(Dh,e)}function Ph(e){let t=e[ih];t.type_===0||t.type_===1?t.revoke_():t.revoked_=!0}function Fh(e,t){t.unfinalizedDrafts_=t.drafts_.length;let n=t.drafts_[0];return e!==void 0&&e!==n?(n[ih].modified_&&(jh(t),ah(4)),ch(e)&&(e=Ih(t,e),t.parent_||Rh(t,e)),t.patches_&&Eh(`Patches`).generateReplacementPatches_(n[ih].base_,e,t.patches_,t.inversePatches_)):e=Ih(t,n,[]),jh(t),t.patches_&&t.patchListener_(t.patches_,t.inversePatches_),e===nh?void 0:e}function Ih(e,t,n){if(wh(t))return t;let r=e.immer_.shouldUseStrictIteration(),i=t[ih];if(!i)return fh(t,(r,a)=>Lh(e,i,t,r,a,n),r),t;if(i.scope_!==e)return t;if(!i.modified_)return Rh(e,i.base_,!0),i.base_;if(!i.finalized_){i.finalized_=!0,i.scope_.unfinalizedDrafts_--;let t=i.copy_,a=t,o=!1;i.type_===3&&(a=new Set(t),t.clear(),o=!0),fh(a,(r,a)=>Lh(e,i,t,r,a,n,o),r),Rh(e,t,!1),n&&e.patches_&&Eh(`Patches`).generatePatches_(i,n,e.patches_,e.inversePatches_)}return i.copy_}function Lh(e,t,n,r,i,a,o){if(i==null||typeof i!=`object`&&!o)return;let s=wh(i);if(!(s&&!o)){if(sh(i)){let o=Ih(e,i,a&&t&&t.type_!==3&&!mh(t.assigned_,r)?a.concat(r):void 0);if(hh(n,r,o),sh(o))e.canAutoFreeze_=!1;else return}else o&&n.add(i);if(ch(i)&&!s){if(!e.immer_.autoFreeze_&&e.unfinalizedDrafts_<1||t&&t.base_&&t.base_[r]===i&&s)return;Ih(e,i),(!t||!t.scope_.parent_)&&typeof r!=`symbol`&&(_h(n)?n.has(r):Object.prototype.propertyIsEnumerable.call(n,r))&&Rh(e,i)}}}function Rh(e,t,n=!1){!e.parent_&&e.immer_.autoFreeze_&&e.canAutoFreeze_&&xh(t,n)}function zh(e,t){let n=Array.isArray(e),r={type_:n?1:0,scope_:t?t.scope_:Oh(),modified_:!1,finalized_:!1,assigned_:{},parent_:t,base_:e,draft_:null,copy_:null,revoke_:null,isManual_:!1},i=r,a=Bh;n&&(i=[r],a=Vh);let{revoke:o,proxy:s}=Proxy.revocable(i,a);return r.draft_=s,r.revoke_=o,s}var Bh={get(e,t){if(t===ih)return e;let n=yh(e);if(!mh(n,t))return Uh(e,n,t);let r=n[t];return e.finalized_||!ch(r)?r:r===Hh(e.base_,t)?(Kh(e),e.copy_[t]=Jh(r,e)):r},has(e,t){return t in yh(e)},ownKeys(e){return Reflect.ownKeys(yh(e))},set(e,t,n){let r=Wh(yh(e),t);if(r?.set)return r.set.call(e.draft_,n),!0;if(!e.modified_){let r=Hh(yh(e),t),i=r?.[ih];if(i&&i.base_===n)return e.copy_[t]=n,e.assigned_[t]=!1,!0;if(gh(n,r)&&(n!==void 0||mh(e.base_,t)))return!0;Kh(e),Gh(e)}return e.copy_[t]===n&&(n!==void 0||t in e.copy_)||Number.isNaN(n)&&Number.isNaN(e.copy_[t])?!0:(e.copy_[t]=n,e.assigned_[t]=!0,!0)},deleteProperty(e,t){return Hh(e.base_,t)!==void 0||t in e.base_?(e.assigned_[t]=!1,Kh(e),Gh(e)):delete e.assigned_[t],e.copy_&&delete e.copy_[t],!0},getOwnPropertyDescriptor(e,t){let n=yh(e),r=Reflect.getOwnPropertyDescriptor(n,t);return r&&{writable:!0,configurable:e.type_!==1||t!==`length`,enumerable:r.enumerable,value:n[t]}},defineProperty(){ah(11)},getPrototypeOf(e){return oh(e.base_)},setPrototypeOf(){ah(12)}},Vh={};fh(Bh,(e,t)=>{Vh[e]=function(){return arguments[0]=arguments[0][0],t.apply(this,arguments)}}),Vh.deleteProperty=function(e,t){return Vh.set.call(this,e,t,void 0)},Vh.set=function(e,t,n){return Bh.set.call(this,e[0],t,n,e[0])};function Hh(e,t){let n=e[ih];return(n?yh(n):e)[t]}function Uh(e,t,n){let r=Wh(t,n);return r?`value`in r?r.value:r.get?.call(e.draft_):void 0}function Wh(e,t){if(!(t in e))return;let n=oh(e);for(;n;){let e=Object.getOwnPropertyDescriptor(n,t);if(e)return e;n=oh(n)}}function Gh(e){e.modified_||(e.modified_=!0,e.parent_&&Gh(e.parent_))}function Kh(e){e.copy_||=bh(e.base_,e.scope_.immer_.useStrictShallowCopy_)}var qh=class{constructor(e){this.autoFreeze_=!0,this.useStrictShallowCopy_=!1,this.useStrictIteration_=!0,this.produce=(e,t,n)=>{if(typeof e==`function`&&typeof t!=`function`){let n=t;t=e;let r=this;return function(e=n,...i){return r.produce(e,e=>t.call(this,e,...i))}}typeof t!=`function`&&ah(6),n!==void 0&&typeof n!=`function`&&ah(7);let r;if(ch(e)){let i=Nh(this),a=Jh(e,void 0),o=!0;try{r=t(a),o=!1}finally{o?jh(i):Mh(i)}return Ah(i,n),Fh(r,i)}else if(!e||typeof e!=`object`){if(r=t(e),r===void 0&&(r=e),r===nh&&(r=void 0),this.autoFreeze_&&xh(r,!0),n){let t=[],i=[];Eh(`Patches`).generateReplacementPatches_(e,r,t,i),n(t,i)}return r}else ah(1,e)},this.produceWithPatches=(e,t)=>{if(typeof e==`function`)return(t,...n)=>this.produceWithPatches(t,t=>e(t,...n));let n,r;return[this.produce(e,t,(e,t)=>{n=e,r=t}),n,r]},typeof e?.autoFreeze==`boolean`&&this.setAutoFreeze(e.autoFreeze),typeof e?.useStrictShallowCopy==`boolean`&&this.setUseStrictShallowCopy(e.useStrictShallowCopy),typeof e?.useStrictIteration==`boolean`&&this.setUseStrictIteration(e.useStrictIteration)}createDraft(e){ch(e)||ah(8),sh(e)&&(e=Yh(e));let t=Nh(this),n=Jh(e,void 0);return n[ih].isManual_=!0,Mh(t),n}finishDraft(e,t){let n=e&&e[ih];(!n||!n.isManual_)&&ah(9);let{scope_:r}=n;return Ah(r,t),Fh(void 0,r)}setAutoFreeze(e){this.autoFreeze_=e}setUseStrictShallowCopy(e){this.useStrictShallowCopy_=e}setUseStrictIteration(e){this.useStrictIteration_=e}shouldUseStrictIteration(){return this.useStrictIteration_}applyPatches(e,t){let n;for(n=t.length-1;n>=0;n--){let r=t[n];if(r.path.length===0&&r.op===`replace`){e=r.value;break}}n>-1&&(t=t.slice(n+1));let r=Eh(`Patches`).applyPatches_;return sh(e)?r(e,t):this.produce(e,e=>r(e,t))}};function Jh(e,t){let n=_h(e)?Eh(`MapSet`).proxyMap_(e,t):vh(e)?Eh(`MapSet`).proxySet_(e,t):zh(e,t);return(t?t.scope_:Oh()).drafts_.push(n),n}function Yh(e){return sh(e)||ah(10,e),Xh(e)}function Xh(e){if(!ch(e)||wh(e))return e;let t=e[ih],n,r=!0;if(t){if(!t.modified_)return t.base_;t.finalized_=!0,n=bh(e,t.scope_.immer_.useStrictShallowCopy_),r=t.scope_.immer_.shouldUseStrictIteration()}else n=bh(e,!0);return fh(n,(e,t)=>{hh(n,e,Xh(t))},r),t&&(t.finalized_=!1),n}new qh().produce;function Zh(e){return e}var Qh=Sf({name:`legend`,initialState:{settings:{layout:`horizontal`,align:`center`,verticalAlign:`middle`,itemSorter:`value`},size:{width:0,height:0},payload:[]},reducers:{setLegendSize(e,t){e.size.width=t.payload.width,e.size.height=t.payload.height},setLegendSettings(e,t){e.settings.align=t.payload.align,e.settings.layout=t.payload.layout,e.settings.verticalAlign=t.payload.verticalAlign,e.settings.itemSorter=t.payload.itemSorter},addLegendPayload:{reducer(e,t){e.payload.push(Zh(t.payload))},prepare:Qd()},replaceLegendPayload:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Ld(e).payload.indexOf(Zh(n));i>-1&&(e.payload[i]=Zh(r))},prepare:Qd()},removeLegendPayload:{reducer(e,t){var n=Ld(e).payload.indexOf(Zh(t.payload));n>-1&&e.payload.splice(n,1)},prepare:Qd()}}}),{setLegendSize:$h,setLegendSettings:eg,addLegendPayload:tg,replaceLegendPayload:ng,removeLegendPayload:rg}=Qh.actions,ig=Qh.reducer,ag=o((e=>{var t=d();typeof Object.is==`function`&&Object.is,t.useSyncExternalStore,t.useRef,t.useEffect,t.useMemo,t.useDebugValue}));o(((e,t)=>{t.exports=ag()}))();function og(e){e()}function sg(){let e=null,t=null;return{clear(){e=null,t=null},notify(){og(()=>{let t=e;for(;t;)t.callback(),t=t.next})},get(){let t=[],n=e;for(;n;)t.push(n),n=n.next;return t},subscribe(n){let r=!0,i=t={callback:n,next:null,prev:t};return i.prev?i.prev.next=i:e=i,function(){!r||e===null||(r=!1,i.next?i.next.prev=i.prev:t=i.prev,i.prev?i.prev.next=i.next:e=i.next)}}}}var cg={notify(){},get:()=>[]};function lg(e,t){let n,r=cg,i=0,a=!1;function o(e){u();let t=r.subscribe(e),n=!1;return()=>{n||(n=!0,t(),d())}}function s(){r.notify()}function c(){m.onStateChange&&m.onStateChange()}function l(){return a}function u(){i++,n||(n=t?t.addNestedSub(c):e.subscribe(c),r=sg())}function d(){i--,n&&i===0&&(n(),n=void 0,r.clear(),r=cg)}function f(){a||(a=!0,u())}function p(){a&&(a=!1,d())}let m={addNestedSub:o,notifyNestedSubs:s,handleChangeWrapper:c,isSubscribed:l,trySubscribe:f,tryUnsubscribe:p,getListeners:()=>r};return m}var ug=typeof window<`u`&&window.document!==void 0&&window.document.createElement!==void 0,dg=typeof navigator<`u`&&navigator.product===`ReactNative`,fg=ug||dg?w.useLayoutEffect:w.useEffect;function pg(e,t){return e===t?e!==0||t!==0||1/e==1/t:e!==e&&t!==t}function mg(e,t){if(pg(e,t))return!0;if(typeof e!=`object`||!e||typeof t!=`object`||!t)return!1;let n=Object.keys(e),r=Object.keys(t);if(n.length!==r.length)return!1;for(let r=0;r({store:i,subscription:lg(i),getServerState:r?()=>r:void 0}),[i,r]),o=w.useMemo(()=>i.getState(),[i]);fg(()=>{let{subscription:e}=a;return e.onStateChange=e.notifyNestedSubs,e.trySubscribe(),o!==i.getState()&&e.notifyNestedSubs(),()=>{e.tryUnsubscribe(),e.onStateChange=void 0}},[a,o]);let s=n||vg;return w.createElement(s.Provider,{value:a},t)}var bg=yg,xg=new Set([`axisLine`,`tickLine`,`activeBar`,`activeDot`,`activeLabel`,`activeShape`,`allowEscapeViewBox`,`background`,`cursor`,`dot`,`label`,`line`,`margin`,`padding`,`position`,`shape`,`style`,`tick`,`wrapperStyle`,`radius`,`throttledEvents`]);function Sg(e,t){return e==null&&t==null?!0:typeof e==`number`&&typeof t==`number`?e===t||e!==e&&t!==t:e===t}function Cg(e,t){for(var n of new Set([...Object.keys(e),...Object.keys(t)]))if(xg.has(n)){if(e[n]==null&&t[n]==null)continue;if(!mg(e[n],t[n]))return!1}else if(!Sg(e[n],t[n]))return!1;return!0}var wg=[`contextPayload`];function Tg(){return Tg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{t(eg(e))},[t,e]),null}function Lg(e){var t=Al();return(0,w.useEffect)(()=>(t($h(e)),()=>{t($h({width:0,height:0}))}),[t,e]),null}function Rg(e,t,n,r){return e===`vertical`&&t!=null?{height:t}:e===`horizontal`?{width:n||r}:null}var zg={align:`center`,iconSize:14,inactiveColor:`#ccc`,itemSorter:`value`,layout:`horizontal`,verticalAlign:`bottom`};function Bg(e){var t=Pc(e,zg),n=au(),r=mo(),i=Ym(),{width:a,height:o,wrapperStyle:s,portal:c}=t,[l,u]=su([n]),d=qm(),f=Jm();if(d==null||f==null)return null;var p=d-(i?.left||0)-(i?.right||0),m=Rg(t.layout,o,a,p),h=c?s:Dg(Dg({position:`absolute`,width:m?.width||a||`auto`,height:m?.height||o||`auto`},Fg(s,t,i,d,f,l)),s),g=c??r;return g==null||n==null?null:(0,vn.createPortal)(w.createElement(`div`,{className:`recharts-legend-wrapper`,style:h,ref:u},w.createElement(Ig,{layout:t.layout,align:t.align,verticalAlign:t.verticalAlign,itemSorter:t.itemSorter}),!c&&w.createElement(Lg,{width:l.width,height:l.height}),w.createElement(Pg,Tg({},t,m,{margin:i,chartWidth:d,chartHeight:f,contextPayload:n}))),g)}var Vg=w.memo(Bg,Cg);Vg.displayName=`Legend`;function Hg(){return Hg=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{separator:t=Yg.separator,contentStyle:n,itemStyle:r,labelStyle:i=Yg.labelStyle,payload:a,formatter:o,itemSorter:s,wrapperClassName:c,labelClassName:l,label:u,labelFormatter:d,accessibilityLayer:f=Yg.accessibilityLayer}=e,p=()=>{if(a&&a.length){var e={padding:0,margin:0},n=Xg(a,s).map((e,n)=>{if(e.type===`none`)return null;var i=e.formatter||o||Jg,{value:s,name:c}=e,l=s,u=c;if(i){var d=i(s,c,e,n,a);if(Array.isArray(d))[l,u]=d;else if(d!=null)l=d;else return null}var f=Wg(Wg({},Yg.itemStyle),{},{color:e.color||Yg.itemStyle.color},r);return w.createElement(`li`,{className:`recharts-tooltip-item`,key:`tooltip-item-${n}`,style:f},$s(u)?w.createElement(`span`,{className:`recharts-tooltip-item-name`},u):null,$s(u)?w.createElement(`span`,{className:`recharts-tooltip-item-separator`},t):null,w.createElement(`span`,{className:`recharts-tooltip-item-value`},l),w.createElement(`span`,{className:`recharts-tooltip-item-unit`},e.unit||``))});return w.createElement(`ul`,{className:`recharts-tooltip-item-list`,style:e},n)}return null},m=Wg(Wg({},Yg.contentStyle),n),h=Wg({margin:0},i),g=!oc(u),_=g?u:``,v=Ka(`recharts-default-tooltip`,c),y=Ka(`recharts-tooltip-label`,l);g&&d&&a!=null&&(_=d(u,a));var b=f?{role:`status`,"aria-live":`assertive`}:{};return w.createElement(`div`,Hg({className:v,style:m},b),w.createElement(`p`,{className:y,style:h},w.isValidElement(_)?_:`${_}`),p())},Qg=`recharts-tooltip-wrapper`,$g={visibility:`hidden`};function e_(e){var{coordinate:t,translateX:n,translateY:r}=e;return Ka(Qg,{[`${Qg}-right`]:X(n)&&t&&X(t.x)&&n>=t.x,[`${Qg}-left`]:X(n)&&t&&X(t.x)&&n=t.y,[`${Qg}-top`]:X(r)&&t&&X(t.y)&&r0?i:0),d=n[r]+i;if(t[r])return o[r]?u:d;var f=c[r];return f==null?0:o[r]?uf+l?Math.max(u,f):Math.max(d,f)}function n_(e){var{translateX:t,translateY:n,useTranslate3d:r}=e;return{transform:r?`translate3d(${t}px, ${n}px, 0)`:`translate(${t}px, ${n}px)`}}function r_(e){var{allowEscapeViewBox:t,coordinate:n,offsetTop:r,offsetLeft:i,position:a,reverseDirection:o,tooltipBox:s,useTranslate3d:c,viewBox:l}=e,u,d,f;return s.height>0&&s.width>0&&n?(d=t_({allowEscapeViewBox:t,coordinate:n,key:`x`,offset:i,position:a,reverseDirection:o,tooltipDimension:s.width,viewBox:l,viewBoxDimension:l.width}),f=t_({allowEscapeViewBox:t,coordinate:n,key:`y`,offset:r,position:a,reverseDirection:o,tooltipDimension:s.height,viewBox:l,viewBoxDimension:l.height}),u=n_({translateX:d,translateY:f,useTranslate3d:c})):u=$g,{cssProperties:u,cssClasses:e_({translateX:d,translateY:f,coordinate:n})}}var i_={devToolsEnabled:!0,isSsr:!(typeof window<`u`&&window.document&&window.document.createElement&&window.setTimeout)};function a_(){var[e,t]=(0,w.useState)(()=>i_.isSsr||!window.matchMedia?!1:window.matchMedia(`(prefers-reduced-motion: reduce)`).matches);return(0,w.useEffect)(()=>{if(window.matchMedia){var e=window.matchMedia(`(prefers-reduced-motion: reduce)`),n=()=>{t(e.matches)};return e.addEventListener(`change`,n),()=>{e.removeEventListener(`change`,n)}}},[]),e}function o_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function s_(e){for(var t=1;t({dismissed:!1,dismissedAtCoordinate:{x:0,y:0}}));w.useEffect(()=>{var t=t=>{t.key===`Escape`&&r({dismissed:!0,dismissedAtCoordinate:{x:e.coordinate?.x??0,y:e.coordinate?.y??0}})};return document.addEventListener(`keydown`,t),()=>{document.removeEventListener(`keydown`,t)}},[e.coordinate?.x,e.coordinate?.y]),n.dismissed&&((e.coordinate?.x??0)!==n.dismissedAtCoordinate.x||(e.coordinate?.y??0)!==n.dismissedAtCoordinate.y)&&r(s_(s_({},n),{},{dismissed:!1}));var{cssClasses:i,cssProperties:a}=r_({allowEscapeViewBox:e.allowEscapeViewBox,coordinate:e.coordinate,offsetLeft:typeof e.offset==`number`?e.offset:e.offset.x,offsetTop:typeof e.offset==`number`?e.offset:e.offset.y,position:e.position,reverseDirection:e.reverseDirection,tooltipBox:{height:e.lastBoundingBox.height,width:e.lastBoundingBox.width},useTranslate3d:e.useTranslate3d,viewBox:e.viewBox}),o=s_(s_({},e.hasPortalFromProps?{}:s_(s_({transition:d_({prefersReducedMotion:t,isAnimationActive:e.isAnimationActive,active:e.active,animationDuration:e.animationDuration,animationEasing:e.animationEasing})},a),{},{pointerEvents:`none`,position:`absolute`,top:0,left:0})),{},{visibility:!n.dismissed&&e.active&&e.hasPayload?`visible`:`hidden`},e.wrapperStyle);return w.createElement(`div`,{xmlns:`http://www.w3.org/1999/xhtml`,tabIndex:-1,className:i,style:o,ref:e.innerRef},e.children)}var p_=w.memo(f_),m_=()=>Z(e=>e.rootProps.accessibilityLayer)??!0;function h_(){return h_=Object.assign?Object.assign.bind():function(e){for(var t=1;t$(e.x)&&$(e.y),C_=e=>e.base!=null&&S_(e.base)&&S_(e),w_=e=>e.x,T_=e=>e.y,E_=(e,t)=>{if(typeof e==`function`)return e;var n=`curve${sc(e)}`;if((n===`curveMonotone`||n===`curveBump`)&&t){var r=x_[`${n}${t===`vertical`?`Y`:`X`}`];if(r)return r}return x_[n]||Mo},D_={connectNulls:!1,type:`linear`},O_=e=>{var{type:t=D_.type,points:n=[],baseLine:r,layout:i,connectNulls:a=D_.connectNulls}=e,o=E_(t,i),s=a?n.filter(S_):n;if(Array.isArray(r)){var c,l=n.map((e,t)=>__(__({},e),{},{base:r[t]}));return c=i===`vertical`?Io().y(T_).x1(w_).x0(e=>e.base.x):Io().x(w_).y1(T_).y0(e=>e.base.y),c.defined(C_).curve(o)(a?l.filter(C_):l)}return(i===`vertical`&&X(r)?Io().y(T_).x1(w_).x0(r):X(r)?Io().x(w_).y1(T_).y0(r):Fo().x(w_).y(T_)).defined(S_).curve(o)(s)},k_=e=>{var{className:t,points:n,path:r,pathRef:i}=e,a=Zm();if((!n||!n.length)&&!r)return null;var o={type:e.type,points:e.points,baseLine:e.baseLine,layout:e.layout||a,connectNulls:e.connectNulls},s=n&&n.length?O_(o):r;return w.createElement(`path`,h_({},Qa(e),Ec(e),{className:Ka(`recharts-curve`,t),d:s===null?void 0:s,ref:i}))},A_=[`x`,`y`,`top`,`left`,`width`,`height`,`className`];function j_(){return j_=Object.assign?Object.assign.bind():function(e){for(var t=1;t`M${e},${i}v${r}M${a},${t}h${n}`,B_=e=>{var{x:t=0,y:n=0,top:r=0,left:i=0,width:a=0,height:o=0,className:s}=e,c=L_(e,A_),l=N_({x:t,y:n,top:r,left:i,width:a,height:o},c);return!X(t)||!X(n)||!X(a)||!X(o)||!X(r)||!X(i)?null:w.createElement(`path`,j_({},eo(l),{className:Ka(`recharts-cross`,s),d:z_(t,n,a,o,r,i)}))};function V_(e,t,n,r){var i=r/2;return{stroke:`none`,fill:`#ccc`,x:e===`horizontal`?t.x-i:n.left+.5,y:e===`horizontal`?n.top+.5:t.y-i,width:e===`horizontal`?r:n.width-1,height:e===`horizontal`?n.height-1:r}}function H_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function U_(e){for(var t=1;te.replace(/([A-Z])/g,e=>`-${e.toLowerCase()}`),J_=(e,t,n)=>e.map(e=>`${q_(e)} ${t}ms ${n}`).join(`,`),Y_=(e,t)=>[Object.keys(e),Object.keys(t)].reduce((e,t)=>e.filter(e=>t.includes(e))),X_=(e,t)=>Object.keys(t).reduce((n,r)=>U_(U_({},n),{},{[r]:e(r,t[r])}),{});function Z_(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Q_(e){for(var t=1;te+(t-e)*n,rv=e=>{var{from:t,to:n}=e;return t!==n},iv=(e,t,n)=>{var r=X_((t,n)=>{if(rv(n)){var[r,i]=e(n.from,n.to,n.velocity);return Q_(Q_({},n),{},{from:r,velocity:i})}return n},t);return n<1?X_((e,t)=>rv(t)&&r[e]!=null?Q_(Q_({},t),{},{velocity:nv(t.velocity,r[e].velocity,n),from:nv(t.from,r[e].from,n)}):t,t):iv(e,r,n-1)};function av(e,t,n,r,i,a){var o,s=r.reduce((n,r)=>Q_(Q_({},n),{},{[r]:{from:e[r],velocity:0,to:t[r]}}),{}),c=()=>X_((e,t)=>t.from,s),l=()=>!Object.values(s).filter(rv).length,u=null,d=r=>{o||=r;var f=(r-o)/n.dt;s=iv(n,s,f),i(Q_(Q_(Q_({},e),t),c())),o=r,l()||(u=a.setTimeout(d))};return()=>(u=a.setTimeout(d),()=>{var e;(e=u)==null||e()})}function ov(e,t,n,r,i,a,o){var s=null,c=i.reduce((n,r)=>{var i=e[r],a=t[r];return i==null||a==null?n:Q_(Q_({},n),{},{[r]:[i,a]})},{}),l,u=i=>{l||=i;var d=(i-l)/r,f=X_((e,t)=>nv(...t,n(d)),c);if(a(Q_(Q_(Q_({},e),t),f)),d<1)s=o.setTimeout(u);else{var p=X_((e,t)=>nv(...t,n(1)),c);a(Q_(Q_(Q_({},e),t),p))}};return()=>(s=o.setTimeout(u),()=>{var e;(e=s)==null||e()})}var sv=(e,t,n,r,i,a)=>{var o=Y_(e,t);return n==null?()=>(i(Q_(Q_({},e),t)),()=>{}):n.isStepper===!0?av(e,t,n,o,i,a):ov(e,t,n,r,o,i,a)},cv=(e,t)=>[0,3*e,3*t-6*e,3*e-3*t+1],lv=(e,t)=>e.map((e,n)=>e*t**n).reduce((e,t)=>e+t),uv=(e,t)=>n=>lv(cv(e,t),n),dv=(e,t)=>n=>lv([...cv(e,t).map((e,t)=>e*t).slice(1),0],n),fv=e=>{var t,n=e.split(`(`);if(n.length!==2||n[0]!==`cubic-bezier`)return null;var r=(t=n[1])==null||(t=t.split(`)`)[0])==null?void 0:t.split(`,`);if(r==null||r.length!==4)return null;var i=r.map(e=>parseFloat(e));return[i[0],i[1],i[2],i[3]]},pv=function(){var e=[...arguments];if(e.length===1)switch(e[0]){case`linear`:return[0,0,1,1];case`ease`:return[.25,.1,.25,1];case`ease-in`:return[.42,0,1,1];case`ease-out`:return[.42,0,.58,1];case`ease-in-out`:return[0,0,.58,1];default:var t=fv(e[0]);if(t)return t}return e.length===4?e:[0,0,1,1]},mv=(e,t,n,r)=>{var i=uv(e,n),a=uv(t,r),o=dv(e,n),s=e=>e>1?1:e<0?0:e,c=e=>{for(var t=e>1?1:e,n=t,r=0;r<8;++r){var c=i(n)-t,l=o(n);if(Math.abs(c-t)<1e-4||l<1e-4)return a(n);n=s(n-c/l)}return a(n)};return c.isStepper=!1,c},hv=function(){return mv(...pv(...arguments))},gv=function(){var{stiff:e=100,damping:t=8,dt:n=17}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(r,i,a)=>{var o=a+(-(r-i)*e-a*t)*n/1e3,s=a*n/1e3+r;return Math.abs(s-i)<1e-4&&Math.abs(o)<1e-4?[i,0]:[s,o]};return r.isStepper=!0,r.dt=n,r},_v=e=>{if(typeof e==`string`)switch(e){case`ease`:case`ease-in-out`:case`ease-out`:case`ease-in`:case`linear`:return hv(e);case`spring`:return gv();default:if(e.split(`(`)[0]===`cubic-bezier`)return hv(e)}return typeof e==`function`?e:null};function vv(e){var t,n=()=>null,r=!1,i=null,a=o=>{if(!r){if(Array.isArray(o)){if(!o.length)return;var[s,...c]=o;if(typeof s==`number`){i=e.setTimeout(a.bind(null,c),s);return}a(s),i=e.setTimeout(a.bind(null,c));return}typeof o==`string`&&(t=o,n(t)),typeof o==`object`&&(t=o,n(t)),typeof o==`function`&&o()}};return{stop:()=>{r=!0},start:e=>{r=!1,i&&=(i(),null),a(e)},subscribe:e=>(n=e,()=>{n=()=>null}),getTimeoutController:()=>e}}var yv=class{setTimeout(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:0,n=performance.now(),r=null,i=a=>{a-n>=t?e(a):typeof requestAnimationFrame==`function`&&(r=requestAnimationFrame(i))};return r=requestAnimationFrame(i),()=>{r!=null&&cancelAnimationFrame(r)}}};function bv(){return vv(new yv)}var xv=(0,w.createContext)(bv);function Sv(e,t){var n=(0,w.useContext)(xv);return(0,w.useMemo)(()=>t??n(e),[e,t,n])}var Cv={begin:0,duration:1e3,easing:`ease`,isActive:!0,canBegin:!0,onAnimationEnd:()=>{},onAnimationStart:()=>{}},wv={t:0},Tv={t:1};function Ev(e){var t=Pc(e,Cv),{isActive:n,canBegin:r,duration:i,easing:a,begin:o,onAnimationEnd:s,onAnimationStart:c,children:l}=t,u=a_(),d=n===`auto`?!i_.isSsr&&!u:n,f=Sv(t.animationId,t.animationManager),[p,m]=(0,w.useState)(d?wv:Tv),h=(0,w.useRef)(null);return(0,w.useEffect)(()=>{d||m(Tv)},[d]),(0,w.useEffect)(()=>{if(!d||!r)return lc;var e=sv(wv,Tv,_v(a),i,m,f.getTimeoutController());return f.start([c,o,()=>{h.current=e()},i,s]),()=>{f.stop(),h.current&&h.current(),s()}},[d,r,i,a,o,c,s,f]),l(p.t)}function Dv(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`animation-`,n=(0,w.useRef)(tc(t)),r=(0,w.useRef)(e);return r.current!==e&&(n.current=tc(t),r.current=e),n.current}var Ov=[`radius`],kv=[`radius`],Av,jv,Mv,Nv,Pv,Fv,Iv,Lv,Rv,zv;function Bv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Vv(e){for(var t=1;t{var a=qs(n),o=qs(r),s=Math.min(Math.abs(a)/2,Math.abs(o)/2),c=o>=0?1:-1,l=a>=0?1:-1,u=o>=0&&a>=0||o<0&&a<0?1:0,d;if(s>0&&Array.isArray(i)){for(var f=[0,0,0,0],p=0,m=4;ps?s:h}d=Js(Av||=Jv([`M`,`,`,``]),e,t+c*f[0]),f[0]>0&&(d+=Js(jv||=Jv([`A `,`,`,`,0,0,`,`,`,`,`,``]),f[0],f[0],u,e+l*f[0],t)),d+=Js(Mv||=Jv([`L `,`,`,``]),e+n-l*f[1],t),f[1]>0&&(d+=Js(Nv||=Jv([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[1],f[1],u,e+n,t+c*f[1])),d+=Js(Pv||=Jv([`L `,`,`,``]),e+n,t+r-c*f[2]),f[2]>0&&(d+=Js(Fv||=Jv([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[2],f[2],u,e+n-l*f[2],t+r)),d+=Js(Iv||=Jv([`L `,`,`,``]),e+l*f[3],t+r),f[3]>0&&(d+=Js(Lv||=Jv([`A `,`,`,`,0,0,`,`, + `,`,`,``]),f[3],f[3],u,e,t+r-c*f[3])),d+=`Z`}else if(s>0&&i===+i&&i>0){var g=Math.min(s,i);d=Js(Rv||=Jv(`M .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. + L .,. + A .,.,0,0,.,.,. Z`.split(`.`)),e,t+c*g,g,g,u,e+l*g,t,e+n-l*g,t,g,g,u,e+n,t+c*g,e+n,t+r-c*g,g,g,u,e+n-l*g,t+r,e+l*g,t+r,g,g,u,e,t+r-c*g)}else d=Js(zv||=Jv([`M `,`,`,` h `,` v `,` h `,` Z`]),e,t,n,r,-n);return d},Xv={x:0,y:0,width:0,height:0,radius:0,isAnimationActive:!1,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},Zv=e=>{var t=Pc(e,Xv),n=(0,w.useRef)(null),[r,i]=(0,w.useState)(-1);(0,w.useEffect)(()=>{if(n.current&&n.current.getTotalLength)try{var e=n.current.getTotalLength();e&&i(e)}catch{}},[]);var{x:a,y:o,width:s,height:c,radius:l,className:u}=t,{animationEasing:d,animationDuration:f,animationBegin:p,isAnimationActive:m,isUpdateAnimationActive:h}=t,g=(0,w.useRef)(s),_=(0,w.useRef)(c),v=(0,w.useRef)(a),y=(0,w.useRef)(o),b=Dv((0,w.useMemo)(()=>({x:a,y:o,width:s,height:c,radius:l}),[a,o,s,c,l]),`rectangle-`);if(a!==+a||o!==+o||s!==+s||c!==+c||s===0||c===0)return null;var x=Ka(`recharts-rectangle`,u);if(!h){var S=eo(t),{radius:C}=S,T=Kv(S,Ov);return w.createElement(`path`,Gv({},T,{x:qs(a),y:qs(o),width:qs(s),height:qs(c),radius:typeof l==`number`?l:void 0,className:x,d:Yv(a,o,s,c,l)}))}var E=g.current,D=_.current,O=v.current,k=y.current,A=`0px ${r===-1?1:r}px`,j=`${r}px ${r}px`,M=J_([`strokeDasharray`],f,typeof d==`string`?d:Xv.animationEasing);return w.createElement(Ev,{animationId:b,key:b,canBegin:r>0,duration:f,easing:d,isActive:h,begin:p},e=>{var r=ic(E,s,e),i=ic(D,c,e),u=ic(O,a,e),d=ic(k,o,e);n.current&&(g.current=r,_.current=i,v.current=u,y.current=d);var f=m?e>0?{transition:M,strokeDasharray:j}:{strokeDasharray:A}:{strokeDasharray:j},p=eo(t),{radius:h}=p,b=Kv(p,kv);return w.createElement(`path`,Gv({},b,{radius:typeof l==`number`?l:void 0,className:x,d:Yv(u,d,r,i,l),ref:n,style:Vv(Vv({},f),t.style)}))})};function Qv(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function $v(e){for(var t=1;te*180/Math.PI,ay=(e,t,n,r)=>({x:e+Math.cos(-ry*r)*n,y:t+Math.sin(-ry*r)*n}),oy=function(e,t){var n=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{top:0,right:0,bottom:0,left:0,width:0,height:0,brushBottom:0};return Math.min(Math.abs(e-(n.left||0)-(n.right||0)),Math.abs(t-(n.top||0)-(n.bottom||0)))/2},sy=(e,t)=>{var{x:n,y:r}=e,{x:i,y:a}=t;return Math.sqrt((n-i)**2+(r-a)**2)},cy=(e,t)=>{var{x:n,y:r}=e,{cx:i,cy:a}=t,o=sy({x:n,y:r},{x:i,y:a});if(o<=0)return{radius:o,angle:0};var s=(n-i)/o,c=Math.acos(s);return r>a&&(c=2*Math.PI-c),{radius:o,angle:iy(c),angleInRadian:c}},ly=e=>{var{startAngle:t,endAngle:n}=e,r=Math.floor(t/360),i=Math.floor(n/360),a=Math.min(r,i);return{startAngle:t-a*360,endAngle:n-a*360}},uy=(e,t)=>{var{startAngle:n,endAngle:r}=t,i=Math.floor(n/360),a=Math.floor(r/360);return e+Math.min(i,a)*360},dy=(e,t)=>{var{relativeX:n,relativeY:r}=e,{radius:i,angle:a}=cy({x:n,y:r},t),{innerRadius:o,outerRadius:s}=t;if(is||i===0)return null;var{startAngle:c,endAngle:l}=ly(t),u=a,d;if(c<=l){for(;u>l;)u-=360;for(;u=c&&u<=l}else{for(;u>c;)u-=360;for(;u=l&&u<=c}return d?$v($v({},t),{},{radius:i,angle:uy(u,t)}):null};function fy(e){var{cx:t,cy:n,radius:r,startAngle:i,endAngle:a}=e;return{points:[ay(t,n,r,i),ay(t,n,r,a)],cx:t,cy:n,radius:r,startAngle:i,endAngle:a}}var py,my,hy,gy,_y,vy,yy;function by(){return by=Object.assign?Object.assign.bind():function(e){for(var t=1;tXs(t-e)*Math.min(Math.abs(t-e),359.999),Cy=e=>{var{cx:t,cy:n,radius:r,angle:i,sign:a,isExternal:o,cornerRadius:s,cornerIsExternal:c}=e,l=s*(o?1:-1)+r,u=Math.asin(s/l)/ry,d=c?i:i+a*u,f=ay(t,n,l,d),p=ay(t,n,r,d),m=c?i-a*u:i;return{center:f,circleTangency:p,lineTangency:ay(t,n,l*Math.cos(u*ry),m),theta:u}},wy=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:a,endAngle:o}=e,s=Sy(a,o),c=a+s,l=ay(t,n,i,a),u=ay(t,n,i,c),d=Js(py||=xy([`M `,`,`,` + A `,`,`,`,0, + `,`,`,`, + `,`,`,` + `]),l.x,l.y,i,i,+(Math.abs(s)>180),+(a>c),u.x,u.y);if(r>0){var f=ay(t,n,r,a),p=ay(t,n,r,c);d+=Js(my||=xy([`L `,`,`,` + A `,`,`,`,0, + `,`,`,`, + `,`,`,` Z`]),p.x,p.y,r,r,+(Math.abs(s)>180),+(a<=c),f.x,f.y)}else d+=Js(hy||=xy([`L `,`,`,` Z`]),t,n);return d},Ty=e=>{var{cx:t,cy:n,innerRadius:r,outerRadius:i,cornerRadius:a,forceCornerRadius:o,cornerIsExternal:s,startAngle:c,endAngle:l}=e,u=Xs(l-c),{circleTangency:d,lineTangency:f,theta:p}=Cy({cx:t,cy:n,radius:i,angle:c,sign:u,cornerRadius:a,cornerIsExternal:s}),{circleTangency:m,lineTangency:h,theta:g}=Cy({cx:t,cy:n,radius:i,angle:l,sign:-u,cornerRadius:a,cornerIsExternal:s}),_=s?Math.abs(c-l):Math.abs(c-l)-p-g;if(_<0)return o?Js(gy||=xy([`M `,`,`,` + a`,`,`,`,0,0,1,`,`,0 + a`,`,`,`,0,0,1,`,`,0 + `]),f.x,f.y,a,a,a*2,a,a,-a*2):wy({cx:t,cy:n,innerRadius:r,outerRadius:i,startAngle:c,endAngle:l});var v=Js(_y||=xy([`M `,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + A`,`,`,`,0,`,`,`,`,`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + `]),f.x,f.y,a,a,+(u<0),d.x,d.y,i,i,+(_>180),+(u<0),m.x,m.y,a,a,+(u<0),h.x,h.y);if(r>0){var{circleTangency:y,lineTangency:b,theta:x}=Cy({cx:t,cy:n,radius:r,angle:c,sign:u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),{circleTangency:S,lineTangency:C,theta:w}=Cy({cx:t,cy:n,radius:r,angle:l,sign:-u,isExternal:!0,cornerRadius:a,cornerIsExternal:s}),T=s?Math.abs(c-l):Math.abs(c-l)-x-w;if(T<0&&a===0)return`${v}L${t},${n}Z`;v+=Js(vy||=xy([`L`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,` + A`,`,`,`,0,`,`,`,`,`,`,`,` + A`,`,`,`,0,0,`,`,`,`,`,`Z`]),C.x,C.y,a,a,+(u<0),S.x,S.y,r,r,+(T>180),+(u>0),y.x,y.y,a,a,+(u<0),b.x,b.y)}else v+=Js(yy||=xy([`L`,`,`,`Z`]),t,n);return v},Ey={cx:0,cy:0,innerRadius:0,outerRadius:0,startAngle:0,endAngle:0,cornerRadius:0,forceCornerRadius:!1,cornerIsExternal:!1},Dy=e=>{var t=Pc(e,Ey),{cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:o,forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u,className:d}=t;if(a0&&Math.abs(l-u)<360?Ty({cx:n,cy:r,innerRadius:i,outerRadius:a,cornerRadius:Math.min(m,p/2),forceCornerRadius:s,cornerIsExternal:c,startAngle:l,endAngle:u}):wy({cx:n,cy:r,innerRadius:i,outerRadius:a,startAngle:l,endAngle:u});return w.createElement(`path`,by({},eo(t),{className:f,d:h}))};function Oy(e,t,n){if(e===`horizontal`)return[{x:t.x,y:n.top},{x:t.x,y:n.top+n.height}];if(e===`vertical`)return[{x:n.left,y:t.y},{x:n.left+n.width,y:t.y}];if(Tc(t)){if(e===`centric`){var{cx:r,cy:i,innerRadius:a,outerRadius:o,angle:s}=t,c=ay(r,i,a,s),l=ay(r,i,o,s);return[{x:c.x,y:c.y},{x:l.x,y:l.y}]}return fy(t)}}var ky=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=Yl();function n(e){return t.isSymbol(e)?NaN:Number(e)}e.toNumber=n})),Ay=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=ky();function n(e){return e?(e=t.toNumber(e),e===1/0||e===-1/0?(e<0?-1:1)*Number.MAX_VALUE:e===e?e:0):e===0?e:0}e.toFinite=n})),jy=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});var t=$l(),n=Ay();function r(e,r,i){i&&typeof i!=`number`&&t.isIterateeCall(e,r,i)&&(r=i=void 0),e=n.toFinite(e),r===void 0?(r=e,e=0):r=n.toFinite(r),i=i===void 0?e{t.exports=jy().range})),Ny=e=>e.chartData,Py=Q([Ny],e=>{var t=e.chartData==null?0:e.chartData.length-1;return{chartData:e.chartData,computedData:e.computedData,dataEndIndex:t,dataStartIndex:0}}),Fy=(e,t,n,r)=>r?Py(e):Ny(e),Iy=(e,t,n)=>n?Py(e):Ny(e);function Ly(e){if(Array.isArray(e)&&e.length===2){var[t,n]=e;if($(t)&&$(n))return!0}return!1}function Ry(e,t,n){return n?e:[Math.min(e[0],t[0]),Math.max(e[1],t[1])]}function zy(e,t){if(t&&typeof e!=`function`&&Array.isArray(e)&&e.length===2){var[n,r]=e,i,a;if($(n))i=n;else if(typeof n==`function`)return;if($(r))a=r;else if(typeof r==`function`)return;var o=[i,a];if(Ly(o))return o}}function By(e,t,n){if(!(!n&&t==null)){if(typeof e==`function`&&t!=null)try{var r=e(t,n);if(Ly(r))return Ry(r,t,n)}catch{}if(Array.isArray(e)&&e.length===2){var[i,a]=e,o,s;if(i===`auto`)t!=null&&(o=Math.min(...t));else if(X(i))o=i;else if(typeof i==`function`)try{t!=null&&(o=i(t?.[0]))}catch{}else if(typeof i==`string`&&Rp.test(i)){var c=Rp.exec(i);if(c==null||c[1]==null||t==null)o=void 0;else{var l=+c[1];o=t[0]-l}}else o=t?.[0];if(a===`auto`)t!=null&&(s=Math.max(...t));else if(X(a))s=a;else if(typeof a==`function`)try{t!=null&&(s=a(t?.[1]))}catch{}else if(typeof a==`string`&&zp.test(a)){var u=zp.exec(a);if(u==null||u[1]==null||t==null)s=void 0;else{var d=+u[1];s=t[1]+d}}else s=t?.[1];var f=[o,s];if(Ly(f))return t==null?f:Ry(f,t,n)}}}var Vy=l(o(((e,t)=>{(function(e){var n=1e9,r={precision:20,rounding:4,toExpNeg:-7,toExpPos:21,LN10:`2.302585092994045684017991454684364207601101488628772976033327900967572609677352480235997205089598298341967784042286`},i=!0,a=`[DecimalError] `,o=a+`Invalid argument: `,s=a+`Exponent out of range: `,c=Math.floor,l=Math.pow,u=/^(\d+(\.\d*)?|\.\d+)(e[+-]?\d+)?$/i,d,f=1e7,p=7,m=9007199254740991,h=c(m/p),g={};g.absoluteValue=g.abs=function(){var e=new this.constructor(this);return e.s&&=1,e},g.comparedTo=g.cmp=function(e){var t,n,r,i,a=this;if(e=new a.constructor(e),a.s!==e.s)return a.s||-e.s;if(a.e!==e.e)return a.e>e.e^a.s<0?1:-1;for(r=a.d.length,i=e.d.length,t=0,n=re.d[t]^a.s<0?1:-1;return r===i?0:r>i^a.s<0?1:-1},g.decimalPlaces=g.dp=function(){var e=this,t=e.d.length-1,n=(t-e.e)*p;if(t=e.d[t],t)for(;t%10==0;t/=10)n--;return n<0?0:n},g.dividedBy=g.div=function(e){return b(this,new this.constructor(e))},g.dividedToIntegerBy=g.idiv=function(e){var t=this,n=t.constructor;return D(b(t,new n(e),0,1),n.precision)},g.equals=g.eq=function(e){return!this.cmp(e)},g.exponent=function(){return S(this)},g.greaterThan=g.gt=function(e){return this.cmp(e)>0},g.greaterThanOrEqualTo=g.gte=function(e){return this.cmp(e)>=0},g.isInteger=g.isint=function(){return this.e>this.d.length-2},g.isNegative=g.isneg=function(){return this.s<0},g.isPositive=g.ispos=function(){return this.s>0},g.isZero=function(){return this.s===0},g.lessThan=g.lt=function(e){return this.cmp(e)<0},g.lessThanOrEqualTo=g.lte=function(e){return this.cmp(e)<1},g.logarithm=g.log=function(e){var t,n=this,r=n.constructor,o=r.precision,s=o+5;if(e===void 0)e=new r(10);else if(e=new r(e),e.s<1||e.eq(d))throw Error(a+`NaN`);if(n.s<1)throw Error(a+(n.s?`NaN`:`-Infinity`));return n.eq(d)?new r(0):(i=!1,t=b(T(n,s),T(e,s),s),i=!0,D(t,o))},g.minus=g.sub=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?O(t,e):_(t,(e.s=-e.s,e))},g.modulo=g.mod=function(e){var t,n=this,r=n.constructor,o=r.precision;if(e=new r(e),!e.s)throw Error(a+`NaN`);return n.s?(i=!1,t=b(n,e,0,1).times(e),i=!0,n.minus(t)):D(new r(n),o)},g.naturalExponential=g.exp=function(){return x(this)},g.naturalLogarithm=g.ln=function(){return T(this)},g.negated=g.neg=function(){var e=new this.constructor(this);return e.s=-e.s||0,e},g.plus=g.add=function(e){var t=this;return e=new t.constructor(e),t.s==e.s?_(t,e):O(t,(e.s=-e.s,e))},g.precision=g.sd=function(e){var t,n,r,i=this;if(e!==void 0&&e!==!!e&&e!==1&&e!==0)throw Error(o+e);if(t=S(i)+1,r=i.d.length-1,n=r*p+1,r=i.d[r],r){for(;r%10==0;r/=10)n--;for(r=i.d[0];r>=10;r/=10)n++}return e&&t>n?t:n},g.squareRoot=g.sqrt=function(){var e,t,n,r,o,s,l,u=this,d=u.constructor;if(u.s<1){if(!u.s)return new d(0);throw Error(a+`NaN`)}for(e=S(u),i=!1,o=Math.sqrt(+u),o==0||o==1/0?(t=y(u.d),(t.length+e)%2==0&&(t+=`0`),o=Math.sqrt(t),e=c((e+1)/2)-(e<0||e%2),o==1/0?t=`5e`+e:(t=o.toExponential(),t=t.slice(0,t.indexOf(`e`)+1)+e),r=new d(t)):r=new d(o.toString()),n=d.precision,o=l=n+3;;)if(s=r,r=s.plus(b(u,s,l+2)).times(.5),y(s.d).slice(0,l)===(t=y(r.d)).slice(0,l)){if(t=t.slice(l-3,l+1),o==l&&t==`4999`){if(D(s,n+1,0),s.times(s).eq(u)){r=s;break}}else if(t!=`9999`)break;l+=4}return i=!0,D(r,n)},g.times=g.mul=function(e){var t,n,r,a,o,s,c,l,u,d=this,p=d.constructor,m=d.d,h=(e=new p(e)).d;if(!d.s||!e.s)return new p(0);for(e.s*=d.s,n=d.e+e.e,l=m.length,u=h.length,l=0;){for(t=0,a=l+r;a>r;)c=o[a]+h[r]*m[a-r-1]+t,o[a--]=c%f|0,t=c/f|0;o[a]=(o[a]+t)%f|0}for(;!o[--s];)o.pop();return t?++n:o.shift(),e.d=o,e.e=n,i?D(e,p.precision):e},g.toDecimalPlaces=g.todp=function(e,t){var r=this,i=r.constructor;return r=new i(r),e===void 0?r:(v(e,0,n),t===void 0?t=i.rounding:v(t,0,8),D(r,e+S(r)+1,t))},g.toExponential=function(e,t){var r,i=this,a=i.constructor;return e===void 0?r=k(i,!0):(v(e,0,n),t===void 0?t=a.rounding:v(t,0,8),i=D(new a(i),e+1,t),r=k(i,!0,e+1)),r},g.toFixed=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?k(a):(v(e,0,n),t===void 0?t=o.rounding:v(t,0,8),i=D(new o(a),e+S(a)+1,t),r=k(i.abs(),!1,e+S(i)+1),a.isneg()&&!a.isZero()?`-`+r:r)},g.toInteger=g.toint=function(){var e=this,t=e.constructor;return D(new t(e),S(e)+1,t.rounding)},g.toNumber=function(){return+this},g.toPower=g.pow=function(e){var t,n,r,o,s,l,u=this,f=u.constructor,h=12,g=+(e=new f(e));if(!e.s)return new f(d);if(u=new f(u),!u.s){if(e.s<1)throw Error(a+`Infinity`);return u}if(u.eq(d))return u;if(r=f.precision,e.eq(d))return D(u,r);if(t=e.e,n=e.d.length-1,l=t>=n,s=u.s,!l){if(s<0)throw Error(a+`NaN`)}else if((n=g<0?-g:g)<=m){for(o=new f(d),t=Math.ceil(r/p+4),i=!1;n%2&&(o=o.times(u),A(o.d,t)),n=c(n/2),n!==0;)u=u.times(u),A(u.d,t);return i=!0,e.s<0?new f(d).div(o):D(o,r)}return s=s<0&&e.d[Math.max(t,n)]&1?-1:1,u.s=1,i=!1,o=e.times(T(u,r+h)),i=!0,o=x(o),o.s=s,o},g.toPrecision=function(e,t){var r,i,a=this,o=a.constructor;return e===void 0?(r=S(a),i=k(a,r<=o.toExpNeg||r>=o.toExpPos)):(v(e,1,n),t===void 0?t=o.rounding:v(t,0,8),a=D(new o(a),e,t),r=S(a),i=k(a,e<=r||r<=o.toExpNeg,e)),i},g.toSignificantDigits=g.tosd=function(e,t){var r=this,i=r.constructor;return e===void 0?(e=i.precision,t=i.rounding):(v(e,1,n),t===void 0?t=i.rounding:v(t,0,8)),D(new i(r),e,t)},g.toString=g.valueOf=g.val=g.toJSON=function(){var e=this,t=S(e),n=e.constructor;return k(e,t<=n.toExpNeg||t>=n.toExpPos)};function _(e,t){var n,r,a,o,s,c,l,u,d=e.constructor,m=d.precision;if(!e.s||!t.s)return t.s||(t=new d(e)),i?D(t,m):t;if(l=e.d,u=t.d,s=e.e,a=t.e,l=l.slice(),o=s-a,o){for(o<0?(r=l,o=-o,c=u.length):(r=u,a=s,c=l.length),s=Math.ceil(m/p),c=s>c?s+1:c+1,o>c&&(o=c,r.length=1),r.reverse();o--;)r.push(0);r.reverse()}for(c=l.length,o=u.length,c-o<0&&(o=c,r=u,u=l,l=r),n=0;o;)n=(l[--o]=l[o]+u[o]+n)/f|0,l[o]%=f;for(n&&(l.unshift(n),++a),c=l.length;l[--c]==0;)l.pop();return t.d=l,t.e=a,i?D(t,m):t}function v(e,t,n){if(e!==~~e||en)throw Error(o+e)}function y(e){var t,n,r,i=e.length-1,a=``,o=e[0];if(i>0){for(a+=o,t=1;tr?1:-1;else for(i=a=0;it[i]?1:-1;break}return a}function n(e,t,n){for(var r=0;n--;)e[n]-=r,r=e[n]1;)e.shift()}return function(r,i,o,s){var c,l,u,d,m,h,g,_,v,y,b,x,C,w,T,E,O,k,A=r.constructor,j=r.s==i.s?1:-1,M=r.d,N=i.d;if(!r.s)return new A(r);if(!i.s)throw Error(a+`Division by zero`);for(l=r.e-i.e,O=N.length,T=M.length,g=new A(j),_=g.d=[],u=0;N[u]==(M[u]||0);)++u;if(N[u]>(M[u]||0)&&--l,x=o==null?o=A.precision:s?o+(S(r)-S(i))+1:o,x<0)return new A(0);if(x=x/p+2|0,u=0,O==1)for(d=0,N=N[0],x++;(u1&&(N=e(N,d),M=e(M,d),O=N.length,T=M.length),w=O,v=M.slice(0,O),y=v.length;y=f/2&&++E;do d=0,c=t(N,v,O,y),c<0?(b=v[0],O!=y&&(b=b*f+(v[1]||0)),d=b/E|0,d>1?(d>=f&&(d=f-1),m=e(N,d),h=m.length,y=v.length,c=t(m,v,h,y),c==1&&(d--,n(m,O16)throw Error(s+S(e));if(!e.s)return new m(d);for(t==null?(i=!1,u=h):u=t,c=new m(.03125);e.abs().gte(.1);)e=e.times(c),p+=5;for(r=Math.log(l(2,p))/Math.LN10*2+5|0,u+=r,n=a=o=new m(d),m.precision=u;;){if(a=D(a.times(e),u),n=n.times(++f),c=o.plus(b(a,n,u)),y(c.d).slice(0,u)===y(o.d).slice(0,u)){for(;p--;)o=D(o.times(o),u);return m.precision=h,t==null?(i=!0,D(o,h)):o}o=c}}function S(e){for(var t=e.e*p,n=e.d[0];n>=10;n/=10)t++;return t}function C(e,t,n){if(t>e.LN10.sd())throw i=!0,n&&(e.precision=n),Error(a+`LN10 precision limit exceeded`);return D(new e(e.LN10),t)}function w(e){for(var t=``;e--;)t+=`0`;return t}function T(e,t){var n,r,o,s,c,l,u,f,p,m=1,h=10,g=e,_=g.d,v=g.constructor,x=v.precision;if(g.s<1)throw Error(a+(g.s?`NaN`:`-Infinity`));if(g.eq(d))return new v(0);if(t==null?(i=!1,f=x):f=t,g.eq(10))return t??(i=!0),C(v,f);if(f+=h,v.precision=f,n=y(_),r=n.charAt(0),s=S(g),Math.abs(s)<0x5543df729c000){for(;r<7&&r!=1||r==1&&n.charAt(1)>3;)g=g.times(e),n=y(g.d),r=n.charAt(0),m++;s=S(g),r>1?(g=new v(`0.`+n),s++):g=new v(r+`.`+n.slice(1))}else return u=C(v,f+2,x).times(s+``),g=T(new v(r+`.`+n.slice(1)),f-h).plus(u),v.precision=x,t==null?(i=!0,D(g,x)):g;for(l=c=g=b(g.minus(d),g.plus(d),f),p=D(g.times(g),f),o=3;;){if(c=D(c.times(p),f),u=l.plus(b(c,new v(o),f)),y(u.d).slice(0,f)===y(l.d).slice(0,f))return l=l.times(2),s!==0&&(l=l.plus(C(v,f+2,x).times(s+``))),l=b(l,new v(m),f),v.precision=x,t==null?(i=!0,D(l,x)):l;l=u,o+=2}}function E(e,t){var n,r,a;for((n=t.indexOf(`.`))>-1&&(t=t.replace(`.`,``)),(r=t.search(/e/i))>0?(n<0&&(n=r),n+=+t.slice(r+1),t=t.substring(0,r)):n<0&&(n=t.length),r=0;t.charCodeAt(r)===48;)++r;for(a=t.length;t.charCodeAt(a-1)===48;)--a;if(t=t.slice(r,a),t){if(a-=r,n=n-r-1,e.e=c(n/p),e.d=[],r=(n+1)%p,n<0&&(r+=p),rh||e.e<-h))throw Error(s+n)}else e.s=0,e.e=0,e.d=[0];return e}function D(e,t,n){var r,a,o,u,d,m,g,_,v=e.d;for(u=1,o=v[0];o>=10;o/=10)u++;if(r=t-u,r<0)r+=p,a=t,g=v[_=0];else{if(_=Math.ceil((r+1)/p),o=v.length,_>=o)return e;for(g=o=v[_],u=1;o>=10;o/=10)u++;r%=p,a=r-p+u}if(n!==void 0&&(o=l(10,u-a-1),d=g/o%10|0,m=t<0||v[_+1]!==void 0||g%o,m=n<4?(d||m)&&(n==0||n==(e.s<0?3:2)):d>5||d==5&&(n==4||m||n==6&&(r>0?a>0?g/l(10,u-a):0:v[_-1])%10&1||n==(e.s<0?8:7))),t<1||!v[0])return m?(o=S(e),v.length=1,t=t-o-1,v[0]=l(10,(p-t%p)%p),e.e=c(-t/p)||0):(v.length=1,v[0]=e.e=e.s=0),e;if(r==0?(v.length=_,o=1,_--):(v.length=_+1,o=l(10,p-r),v[_]=a>0?(g/l(10,u-a)%l(10,a)|0)*o:0),m)for(;;)if(_==0){(v[0]+=o)==f&&(v[0]=1,++e.e);break}else{if(v[_]+=o,v[_]!=f)break;v[_--]=0,o=1}for(r=v.length;v[--r]===0;)v.pop();if(i&&(e.e>h||e.e<-h))throw Error(s+S(e));return e}function O(e,t){var n,r,a,o,s,c,l,u,d,m,h=e.constructor,g=h.precision;if(!e.s||!t.s)return t.s?t.s=-t.s:t=new h(e),i?D(t,g):t;if(l=e.d,m=t.d,r=t.e,u=e.e,l=l.slice(),s=u-r,s){for(d=s<0,d?(n=l,s=-s,c=m.length):(n=m,r=u,c=l.length),a=Math.max(Math.ceil(g/p),c)+2,s>a&&(s=a,n.length=1),n.reverse(),a=s;a--;)n.push(0);n.reverse()}else{for(a=l.length,c=m.length,d=a0;--a)l[c++]=0;for(a=m.length;a>s;){if(l[--a]0?a=a.charAt(0)+`.`+a.slice(1)+w(r):o>1&&(a=a.charAt(0)+`.`+a.slice(1)),a=a+(i<0?`e`:`e+`)+i):i<0?(a=`0.`+w(-i-1)+a,n&&(r=n-o)>0&&(a+=w(r))):i>=o?(a+=w(i+1-o),n&&(r=n-i-1)>0&&(a=a+`.`+w(r))):((r=i+1)0&&(i+1===o&&(a+=`.`),a+=w(r))),e.s<0?`-`+a:a}function A(e,t){if(e.length>t)return e.length=t,!0}function j(e){var t,n,r;function i(e){var t=this;if(!(t instanceof i))return new i(e);if(t.constructor=i,e instanceof i){t.s=e.s,t.e=e.e,t.d=(e=e.d)?e.slice():e;return}if(typeof e==`number`){if(e*0!=0)throw Error(o+e);if(e>0)t.s=1;else if(e<0)e=-e,t.s=-1;else{t.s=0,t.e=0,t.d=[0];return}if(e===~~e&&e<1e7){t.e=0,t.d=[e];return}return E(t,e.toString())}else if(typeof e!=`string`)throw Error(o+e);if(e.charCodeAt(0)===45?(e=e.slice(1),t.s=-1):t.s=1,u.test(e))E(t,e);else throw Error(o+e)}if(i.prototype=g,i.ROUND_UP=0,i.ROUND_DOWN=1,i.ROUND_CEIL=2,i.ROUND_FLOOR=3,i.ROUND_HALF_UP=4,i.ROUND_HALF_DOWN=5,i.ROUND_HALF_EVEN=6,i.ROUND_HALF_CEIL=7,i.ROUND_HALF_FLOOR=8,i.clone=j,i.config=i.set=M,e===void 0&&(e={}),e)for(r=[`precision`,`rounding`,`toExpNeg`,`toExpPos`,`LN10`],t=0;t=s[t+1]&&i<=s[t+2])this[r]=i;else throw Error(o+r+`: `+i);if((i=e[r=`LN10`])!==void 0)if(i==Math.LN10)this[r]=new this(i);else throw Error(o+r+`: `+i);return this}r=j(r),r.default=r.Decimal=r,d=new r(1),typeof define==`function`&&define.amd?define(function(){return r}):t!==void 0&&t.exports?t.exports=r:(e||=typeof self<`u`&&self&&self.self==self?self:Function(`return this`)(),e.Decimal=r)})(e)}))());function Hy(e){return e===0?1:Math.floor(new Vy.default(e).abs().log(10).toNumber())+1}function Uy(e,t,n){for(var r=new Vy.default(e),i=0,a=[];r.lt(t)&&i<1e5;)a.push(r.toNumber()),r=r.add(n),i++;return a}var Wy=e=>{var[t,n]=e,[r,i]=[t,n];return t>n&&([r,i]=[n,t]),[r,i]},Gy=(e,t,n)=>{if(e.lte(0))return new Vy.default(0);var r=Hy(e.toNumber()),i=new Vy.default(10).pow(r),a=e.div(i),o=r===1?.1:.05,s=new Vy.default(Math.ceil(a.div(o).toNumber())).add(n).mul(o).mul(i);return t?new Vy.default(s.toNumber()):new Vy.default(Math.ceil(s.toNumber()))},Ky=(e,t,n)=>{if(e.lte(0))return new Vy.default(0);var r=[1,2,2.5,5],i=e.toNumber(),a=Math.floor(new Vy.default(i).abs().log(10).toNumber()),o=new Vy.default(10).pow(a),s=e.div(o).toNumber(),c=r.findIndex(e=>e>=s-1e-10);if(c===-1&&(o=o.mul(10),c=0),c+=n,c>=r.length){var l=Math.floor(c/r.length);c%=r.length,o=o.mul(new Vy.default(10).pow(l))}var u=new Vy.default(r[c]??1).mul(o);return t?u:new Vy.default(Math.ceil(u.toNumber()))},qy=(e,t,n)=>{var r=new Vy.default(1),i=new Vy.default(e);if(!i.isint()&&n){var a=Math.abs(e);a<1?(r=new Vy.default(10).pow(Hy(e)-1),i=new Vy.default(Math.floor(i.div(r).toNumber())).mul(r)):a>1&&(i=new Vy.default(Math.floor(e)))}else e===0?i=new Vy.default(Math.floor((t-1)/2)):n||(i=new Vy.default(Math.floor(e)));for(var o=Math.floor((t-1)/2),s=[],c=0;c4&&arguments[4]!==void 0?arguments[4]:0,a=arguments.length>5&&arguments[5]!==void 0?arguments[5]:Gy;if(!Number.isFinite((t-e)/(n-1)))return{step:new Vy.default(0),tickMin:new Vy.default(0),tickMax:new Vy.default(0)};var o=a(new Vy.default(t).sub(e).div(n-1),r,i),s;e<=0&&t>=0?s=new Vy.default(0):(s=new Vy.default(e).add(t).div(2),s=s.sub(new Vy.default(s).mod(o)));var c=Math.ceil(s.sub(e).div(o).toNumber()),l=Math.ceil(new Vy.default(t).sub(s).div(o).toNumber()),u=c+l+1;return u>n?Jy(e,t,n,r,i+1,a):(u0?l+(n-u):l,c=t>0?c:c+(n-u)),{step:o,tickMin:s.sub(new Vy.default(c).mul(o)),tickMax:s.add(new Vy.default(l).mul(o))})},Yy=function(e){var[t,n]=e,r=arguments.length>1&&arguments[1]!==void 0?arguments[1]:6,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,o=Math.max(r,2),[s,c]=Wy([t,n]);if(s===-1/0||c===1/0){var l=c===1/0?[s,...Array(r-1).fill(1/0)]:[...Array(r-1).fill(-1/0),c];return t>n?l.reverse():l}if(s===c)return qy(s,r,i);var{step:u,tickMin:d,tickMax:f}=Jy(s,c,o,i,0,a===`snap125`?Ky:Gy),p=Uy(d,f.add(new Vy.default(.1).mul(u)),u);return t>n?p.reverse():p},Xy=function(e,t){var[n,r]=e,i=arguments.length>2&&arguments[2]!==void 0?arguments[2]:!0,a=arguments.length>3&&arguments[3]!==void 0?arguments[3]:`auto`,[o,s]=Wy([n,r]);if(o===-1/0||s===1/0)return[n,r];if(o===s)return[o];var c=a===`snap125`?Ky:Gy,l=Math.max(t,2),u=c(new Vy.default(s).sub(o).div(l-1),i,0),d=[...Uy(new Vy.default(o),new Vy.default(s),u),s];return i===!1&&(d=d.map(e=>Math.round(e))),n>r?d.reverse():d},Zy=e=>e.rootProps.maxBarSize,Qy=e=>e.rootProps.barGap,$y=e=>e.rootProps.barCategoryGap,eb=e=>e.rootProps.barSize,tb=e=>e.rootProps.stackOffset,nb=e=>e.rootProps.reverseStackOrder,rb=e=>e.options.chartName,ib=e=>e.rootProps.syncId,ab=e=>e.rootProps.syncMethod,ob=e=>e.options.eventEmitter,sb=e=>e.rootProps.baseValue,cb={grid:-100,barBackground:-50,area:100,cursorRectangle:200,bar:300,line:400,axis:500,scatter:600,activeBar:1e3,cursorLine:1100,activeDot:1200,label:2e3},lb={allowDecimals:!1,allowDuplicatedCategory:!0,allowDataOverflow:!1,angle:0,angleAxisId:0,axisLine:!0,axisLineType:`polygon`,cx:0,cy:0,hide:!1,includeHidden:!1,label:!1,niceTicks:`auto`,orientation:`outer`,reversed:!1,scale:`auto`,tick:!0,tickLine:!0,tickSize:8,type:`auto`,zIndex:cb.axis},ub={allowDataOverflow:!1,allowDecimals:!1,allowDuplicatedCategory:!0,angle:0,axisLine:!0,includeHidden:!1,hide:!1,niceTicks:`auto`,label:!1,orientation:`right`,radiusAxisId:0,reversed:!1,scale:`auto`,stroke:`#ccc`,tick:!0,tickCount:5,tickLine:!0,type:`auto`,zIndex:cb.axis},db=(e,t)=>{if(!(!e||!t))return e!=null&&e.reversed?[t[1],t[0]]:t};function fb(e,t,n){if(n!==`auto`)return n;if(e!=null)return Tp(e,t)?`category`:`number`}function pb(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function mb(e){for(var t=1;t{if(t!=null)return e.polarAxis.angleAxis[t]},$m],(e,t)=>{if(e!=null)return e;var n=fb(t,`angleAxis`,vb.type)??`category`;return mb(mb({},vb),{},{type:n})}),xb=Q([(e,t)=>e.polarAxis.radiusAxis[t],$m],(e,t)=>{if(e!=null)return e;var n=fb(t,`radiusAxis`,yb.type)??`category`;return mb(mb({},yb),{},{type:n})}),Sb=e=>e.polarOptions,Cb=Q([Gp,Kp,lm],oy),wb=Q([Sb,Cb],(e,t)=>{if(e!=null)return nc(e.innerRadius,t,0)}),Tb=Q([Sb,Cb],(e,t)=>{if(e!=null)return nc(e.outerRadius,t,t*.8)}),Eb=Q([Sb],e=>{if(e==null)return[0,0];var{startAngle:t,endAngle:n}=e;return[t,n]});Q([bb,Eb],db);var Db=Q([Cb,wb,Tb],(e,t,n)=>{if(!(e==null||t==null||n==null))return[t,n]});Q([xb,Db],db);var Ob=Q([Xm,Sb,wb,Tb,Gp,Kp],(e,t,n,r,i,a)=>{if(!(e!==`centric`&&e!==`radial`||t==null||n==null||r==null)){var{cx:o,cy:s,startAngle:c,endAngle:l}=t;return{cx:nc(o,i,i/2),cy:nc(s,a,a/2),innerRadius:n,outerRadius:r,startAngle:c,endAngle:l,clockWise:!1}}}),kb=(e,t)=>t,Ab=(e,t,n)=>n;function jb(e){return e?.id}function Mb(e,t,n){var{chartData:r=[]}=t,{allowDuplicatedCategory:i,dataKey:a}=n,o=new Map;return e.forEach(e=>{var t=e.data??r;if(!(t==null||t.length===0)){var n=jb(e);t.forEach((t,r)=>{var s=a==null||i?r:String(Cp(t,a,null)),c=Cp(t,e.dataKey,0),l=o.has(s)?o.get(s):{};Object.assign(l,{[n]:c}),o.set(s,l)})}}),Array.from(o.values())}function Nb(e){return`stackId`in e&&e.stackId!=null&&e.dataKey!=null}var Pb=(e,t)=>e===t?!0:e==null||t==null?!1:e[0]===t[0]&&e[1]===t[1];function Fb(e,t){return Array.isArray(e)&&Array.isArray(t)&&e.length===0&&t.length===0?!0:e===t}function Ib(e,t){if(e.length===t.length){for(var n=0;n{var t=Xm(e);return t===`horizontal`?`xAxis`:t===`vertical`?`yAxis`:t===`centric`?`angleAxis`:`radiusAxis`},Rb=e=>e.tooltip.settings.axisId;function zb(e){if(e!=null){var t=e.ticks,n=e.bandwidth,r=e.range(),i=[Math.min(...r),Math.max(...r)];return{domain:()=>e.domain(),range:function(e){function t(){return e.apply(this,arguments)}return t.toString=function(){return e.toString()},t}(()=>i),rangeMin:()=>i[0],rangeMax:()=>i[1],isInRange(e){var t=i[0],n=i[1];return t<=n?e>=t&&e<=n:e>=n&&e<=t},bandwidth:n?()=>n.call(e):void 0,ticks:t?n=>t.call(e,n):void 0,map:(t,n)=>{var r=e(t);if(r!=null){if(e.bandwidth&&n!=null&&n.position){var i=e.bandwidth();switch(n.position){case`middle`:r+=i/2;break;case`end`:r+=i;break;default:break}}return r}}}}}var Bb=(e,t)=>{if(t!=null)switch(e){case`linear`:if(!Ly(t)){for(var n,r,i=0;ir)&&(r=a))}return n!==void 0&&r!==void 0?[n,r]:void 0}return t;default:return t}};function Vb(e,t){return e==null||t==null?NaN:et?1:e>=t?0:NaN}function Hb(e,t){return e==null||t==null?NaN:te?1:t>=e?0:NaN}function Ub(e){let t,n,r;e.length===2?(t=e===Vb||e===Hb?e:Wb,n=e,r=e):(t=Vb,n=(t,n)=>Vb(e(t),n),r=(t,n)=>e(t)-n);function i(e,r,i=0,a=e.length){if(i>>1;n(e[t],r)<0?i=t+1:a=t}while(i>>1;n(e[t],r)<=0?i=t+1:a=t}while(in&&r(e[o-1],t)>-r(e[o],t)?o-1:o}return{left:i,center:o,right:a}}function Wb(){return 0}function Gb(e){return e===null?NaN:+e}function*Kb(e,t){if(t===void 0)for(let t of e)t!=null&&(t=+t)>=t&&(yield t);else{let n=-1;for(let r of e)(r=t(r,++n,e))!=null&&(r=+r)>=r&&(yield r)}}var qb=Ub(Vb),Jb=qb.right;qb.left,Ub(Gb).center;var Yb=class extends Map{constructor(e,t=$b){if(super(),Object.defineProperties(this,{_intern:{value:new Map},_key:{value:t}}),e!=null)for(let[t,n]of e)this.set(t,n)}get(e){return super.get(Xb(this,e))}has(e){return super.has(Xb(this,e))}set(e,t){return super.set(Zb(this,e),t)}delete(e){return super.delete(Qb(this,e))}};function Xb({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):n}function Zb({_intern:e,_key:t},n){let r=t(n);return e.has(r)?e.get(r):(e.set(r,n),n)}function Qb({_intern:e,_key:t},n){let r=t(n);return e.has(r)&&(n=e.get(r),e.delete(r)),n}function $b(e){return typeof e==`object`&&e?e.valueOf():e}function ex(e=Vb){if(e===Vb)return tx;if(typeof e!=`function`)throw TypeError(`compare is not a function`);return(t,n)=>{let r=e(t,n);return r||r===0?r:(e(n,n)===0)-(e(t,t)===0)}}function tx(e,t){return(e==null||!(e>=e))-(t==null||!(t>=t))||(et?1:0)}var nx=Math.sqrt(50),rx=Math.sqrt(10),ix=Math.sqrt(2);function ax(e,t,n){let r=(t-e)/Math.max(0,n),i=Math.floor(Math.log10(r)),a=r/10**i,o=a>=nx?10:a>=rx?5:a>=ix?2:1,s,c,l;return i<0?(l=10**-i/o,s=Math.round(e*l),c=Math.round(t*l),s/lt&&--c,l=-l):(l=10**i*o,s=Math.round(e/l),c=Math.round(t/l),s*lt&&--c),c0))return[];if(e===t)return[e];let r=t=i))return[];let s=a-i+1,c=Array(s);if(r)if(o<0)for(let e=0;e=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n=i)&&(n=i)}return n}function ux(e,t){let n;if(t===void 0)for(let t of e)t!=null&&(n>t||n===void 0&&t>=t)&&(n=t);else{let r=-1;for(let i of e)(i=t(i,++r,e))!=null&&(n>i||n===void 0&&i>=i)&&(n=i)}return n}function dx(e,t,n=0,r=1/0,i){if(t=Math.floor(t),n=Math.floor(Math.max(0,n)),r=Math.floor(Math.min(e.length-1,r)),!(n<=t&&t<=r))return e;for(i=i===void 0?tx:ex(i);r>n;){if(r-n>600){let a=r-n+1,o=t-n+1,s=Math.log(a),c=.5*Math.exp(2*s/3),l=.5*Math.sqrt(s*c*(a-c)/a)*(o-a/2<0?-1:1),u=Math.max(n,Math.floor(t-o*c/a+l)),d=Math.min(r,Math.floor(t+(a-o)*c/a+l));dx(e,t,u,d,i)}let a=e[t],o=n,s=r;for(fx(e,n,t),i(e[r],a)>0&&fx(e,n,r);o0;)--s}i(e[n],a)===0?fx(e,n,s):(++s,fx(e,s,r)),s<=t&&(n=s+1),t<=s&&(r=s-1)}return e}function fx(e,t,n){let r=e[t];e[t]=e[n],e[n]=r}function px(e,t,n){if(e=Float64Array.from(Kb(e,n)),!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return ux(e);if(t>=1)return lx(e);var r,i=(r-1)*t,a=Math.floor(i),o=lx(dx(e,a).subarray(0,a+1));return o+(ux(e.subarray(a+1))-o)*(i-a)}}function mx(e,t,n=Gb){if(!(!(r=e.length)||isNaN(t=+t))){if(t<=0||r<2)return+n(e[0],0,e);if(t>=1)return+n(e[r-1],r-1,e);var r,i=(r-1)*t,a=Math.floor(i),o=+n(e[a],a,e);return o+(+n(e[a+1],a+1,e)-o)*(i-a)}}function hx(e,t,n){e=+e,t=+t,n=(i=arguments.length)<2?(t=e,e=0,1):i<3?1:+n;for(var r=-1,i=Math.max(0,Math.ceil((t-e)/n))|0,a=Array(i);++r>8&15|t>>4&240,t>>4&15|t&240,(t&15)<<4|t&15,1):n===8?Gx(t>>24&255,t>>16&255,t>>8&255,(t&255)/255):n===4?Gx(t>>12&15|t>>8&240,t>>8&15|t>>4&240,t>>4&15|t&240,((t&15)<<4|t&15)/255):null):(t=Mx.exec(e))?new Jx(t[1],t[2],t[3],1):(t=Nx.exec(e))?new Jx(t[1]*255/100,t[2]*255/100,t[3]*255/100,1):(t=Px.exec(e))?Gx(t[1],t[2],t[3],t[4]):(t=Fx.exec(e))?Gx(t[1]*255/100,t[2]*255/100,t[3]*255/100,t[4]):(t=Ix.exec(e))?tS(t[1],t[2]/100,t[3]/100,1):(t=Lx.exec(e))?tS(t[1],t[2]/100,t[3]/100,t[4]):Rx.hasOwnProperty(e)?Wx(Rx[e]):e===`transparent`?new Jx(NaN,NaN,NaN,0):null}function Wx(e){return new Jx(e>>16&255,e>>8&255,e&255,1)}function Gx(e,t,n,r){return r<=0&&(e=t=n=NaN),new Jx(e,t,n,r)}function Kx(e){return e instanceof Tx||(e=Ux(e)),e?(e=e.rgb(),new Jx(e.r,e.g,e.b,e.opacity)):new Jx}function qx(e,t,n,r){return arguments.length===1?Kx(e):new Jx(e,t,n,r??1)}function Jx(e,t,n,r){this.r=+e,this.g=+t,this.b=+n,this.opacity=+r}Cx(Jx,qx,wx(Tx,{brighter(e){return e=e==null?Dx:Dx**+e,new Jx(this.r*e,this.g*e,this.b*e,this.opacity)},darker(e){return e=e==null?Ex:Ex**+e,new Jx(this.r*e,this.g*e,this.b*e,this.opacity)},rgb(){return this},clamp(){return new Jx($x(this.r),$x(this.g),$x(this.b),Qx(this.opacity))},displayable(){return-.5<=this.r&&this.r<255.5&&-.5<=this.g&&this.g<255.5&&-.5<=this.b&&this.b<255.5&&0<=this.opacity&&this.opacity<=1},hex:Yx,formatHex:Yx,formatHex8:Xx,formatRgb:Zx,toString:Zx}));function Yx(){return`#${eS(this.r)}${eS(this.g)}${eS(this.b)}`}function Xx(){return`#${eS(this.r)}${eS(this.g)}${eS(this.b)}${eS((isNaN(this.opacity)?1:this.opacity)*255)}`}function Zx(){let e=Qx(this.opacity);return`${e===1?`rgb(`:`rgba(`}${$x(this.r)}, ${$x(this.g)}, ${$x(this.b)}${e===1?`)`:`, ${e})`}`}function Qx(e){return isNaN(e)?1:Math.max(0,Math.min(1,e))}function $x(e){return Math.max(0,Math.min(255,Math.round(e)||0))}function eS(e){return e=$x(e),(e<16?`0`:``)+e.toString(16)}function tS(e,t,n,r){return r<=0?e=t=n=NaN:n<=0||n>=1?e=t=NaN:t<=0&&(e=NaN),new iS(e,t,n,r)}function nS(e){if(e instanceof iS)return new iS(e.h,e.s,e.l,e.opacity);if(e instanceof Tx||(e=Ux(e)),!e)return new iS;if(e instanceof iS)return e;e=e.rgb();var t=e.r/255,n=e.g/255,r=e.b/255,i=Math.min(t,n,r),a=Math.max(t,n,r),o=NaN,s=a-i,c=(a+i)/2;return s?(o=t===a?(n-r)/s+(n0&&c<1?0:o,new iS(o,s,c,e.opacity)}function rS(e,t,n,r){return arguments.length===1?nS(e):new iS(e,t,n,r??1)}function iS(e,t,n,r){this.h=+e,this.s=+t,this.l=+n,this.opacity=+r}Cx(iS,rS,wx(Tx,{brighter(e){return e=e==null?Dx:Dx**+e,new iS(this.h,this.s,this.l*e,this.opacity)},darker(e){return e=e==null?Ex:Ex**+e,new iS(this.h,this.s,this.l*e,this.opacity)},rgb(){var e=this.h%360+(this.h<0)*360,t=isNaN(e)||isNaN(this.s)?0:this.s,n=this.l,r=n+(n<.5?n:1-n)*t,i=2*n-r;return new Jx(sS(e>=240?e-240:e+120,i,r),sS(e,i,r),sS(e<120?e+240:e-120,i,r),this.opacity)},clamp(){return new iS(aS(this.h),oS(this.s),oS(this.l),Qx(this.opacity))},displayable(){return(0<=this.s&&this.s<=1||isNaN(this.s))&&0<=this.l&&this.l<=1&&0<=this.opacity&&this.opacity<=1},formatHsl(){let e=Qx(this.opacity);return`${e===1?`hsl(`:`hsla(`}${aS(this.h)}, ${oS(this.s)*100}%, ${oS(this.l)*100}%${e===1?`)`:`, ${e})`}`}}));function aS(e){return e=(e||0)%360,e<0?e+360:e}function oS(e){return Math.max(0,Math.min(1,e||0))}function sS(e,t,n){return(e<60?t+(n-t)*e/60:e<180?n:e<240?t+(n-t)*(240-e)/60:t)*255}var cS=e=>()=>e;function lS(e,t){return function(n){return e+n*t}}function uS(e,t,n){return e**=+n,t=t**+n-e,n=1/n,function(r){return(e+r*t)**+n}}function dS(e){return(e=+e)==1?fS:function(t,n){return n-t?uS(t,n,e):cS(isNaN(t)?n:t)}}function fS(e,t){var n=t-e;return n?lS(e,n):cS(isNaN(e)?t:e)}var pS=(function e(t){var n=dS(t);function r(e,t){var r=n((e=qx(e)).r,(t=qx(t)).r),i=n(e.g,t.g),a=n(e.b,t.b),o=fS(e.opacity,t.opacity);return function(t){return e.r=r(t),e.g=i(t),e.b=a(t),e.opacity=o(t),e+``}}return r.gamma=e,r})(1);function mS(e,t){t||=[];var n=e?Math.min(t.length,e.length):0,r=t.slice(),i;return function(a){for(i=0;in&&(a=t.slice(n,a),s[o]?s[o]+=a:s[++o]=a),(r=r[0])===(i=i[0])?s[o]?s[o]+=i:s[++o]=i:(s[++o]=null,c.push({i:o,x:vS(r,i)})),n=xS.lastIndex;return nt&&(n=e,e=t,t=n),function(n){return Math.max(e,Math.min(t,n))}}function PS(e,t,n){var r=e[0],i=e[1],a=t[0],o=t[1];return i2?FS:PS,c=l=null,d}function d(i){return i==null||isNaN(i=+i)?a:(c||=s(e.map(r),t,n))(r(o(i)))}return d.invert=function(n){return o(i((l||=s(t,e.map(r),vS))(n)))},d.domain=function(t){return arguments.length?(e=Array.from(t,kS),u()):e.slice()},d.range=function(e){return arguments.length?(t=Array.from(e),u()):t.slice()},d.rangeRound=function(e){return t=Array.from(e),n=ES,u()},d.clamp=function(e){return arguments.length?(o=e?!0:jS,u()):o!==jS},d.interpolate=function(e){return arguments.length?(n=e,u()):n},d.unknown=function(e){return arguments.length?(a=e,d):a},function(e,t){return r=e,i=t,u()}}function RS(){return LS()(jS,jS)}function zS(e){return Math.abs(e=Math.round(e))>=1e21?e.toLocaleString(`en`).replace(/,/g,``):e.toString(10)}function BS(e,t){if(!isFinite(e)||e===0)return null;var n=(e=t?e.toExponential(t-1):e.toExponential()).indexOf(`e`),r=e.slice(0,n);return[r.length>1?r[0]+r.slice(2):r,+e.slice(n+1)]}function VS(e){return e=BS(Math.abs(e)),e?e[1]:NaN}function HS(e,t){return function(n,r){for(var i=n.length,a=[],o=0,s=e[0],c=0;i>0&&s>0&&(c+s+1>r&&(s=Math.max(1,r-c)),a.push(n.substring(i-=s,i+s)),!((c+=s+1)>r));)s=e[o=(o+1)%e.length];return a.reverse().join(t)}}function US(e){return function(t){return t.replace(/[0-9]/g,function(t){return e[+t]})}}var WS=/^(?:(.)?([<>=^]))?([+\-( ])?([$#])?(0)?(\d+)?(,)?(\.\d+)?(~)?([a-z%])?$/i;function GS(e){if(!(t=WS.exec(e)))throw Error(`invalid format: `+e);var t;return new KS({fill:t[1],align:t[2],sign:t[3],symbol:t[4],zero:t[5],width:t[6],comma:t[7],precision:t[8]&&t[8].slice(1),trim:t[9],type:t[10]})}GS.prototype=KS.prototype;function KS(e){this.fill=e.fill===void 0?` `:e.fill+``,this.align=e.align===void 0?`>`:e.align+``,this.sign=e.sign===void 0?`-`:e.sign+``,this.symbol=e.symbol===void 0?``:e.symbol+``,this.zero=!!e.zero,this.width=e.width===void 0?void 0:+e.width,this.comma=!!e.comma,this.precision=e.precision===void 0?void 0:+e.precision,this.trim=!!e.trim,this.type=e.type===void 0?``:e.type+``}KS.prototype.toString=function(){return this.fill+this.align+this.sign+this.symbol+(this.zero?`0`:``)+(this.width===void 0?``:Math.max(1,this.width|0))+(this.comma?`,`:``)+(this.precision===void 0?``:`.`+Math.max(0,this.precision|0))+(this.trim?`~`:``)+this.type};function qS(e){out:for(var t=e.length,n=1,r=-1,i;n0&&(r=0);break}return r>0?e.slice(0,r)+e.slice(i+1):e}var JS;function YS(e,t){var n=BS(e,t);if(!n)return JS=void 0,e.toPrecision(t);var r=n[0],i=n[1],a=i-(JS=Math.max(-8,Math.min(8,Math.floor(i/3)))*3)+1,o=r.length;return a===o?r:a>o?r+Array(a-o+1).join(`0`):a>0?r.slice(0,a)+`.`+r.slice(a):`0.`+Array(1-a).join(`0`)+BS(e,Math.max(0,t+a-1))[0]}function XS(e,t){var n=BS(e,t);if(!n)return e+``;var r=n[0],i=n[1];return i<0?`0.`+Array(-i).join(`0`)+r:r.length>i+1?r.slice(0,i+1)+`.`+r.slice(i+1):r+Array(i-r.length+2).join(`0`)}var ZS={"%":(e,t)=>(e*100).toFixed(t),b:e=>Math.round(e).toString(2),c:e=>e+``,d:zS,e:(e,t)=>e.toExponential(t),f:(e,t)=>e.toFixed(t),g:(e,t)=>e.toPrecision(t),o:e=>Math.round(e).toString(8),p:(e,t)=>XS(e*100,t),r:XS,s:YS,X:e=>Math.round(e).toString(16).toUpperCase(),x:e=>Math.round(e).toString(16)};function QS(e){return e}var $S=Array.prototype.map,eC=[`y`,`z`,`a`,`f`,`p`,`n`,`µ`,`m`,``,`k`,`M`,`G`,`T`,`P`,`E`,`Z`,`Y`];function tC(e){var t=e.grouping===void 0||e.thousands===void 0?QS:HS($S.call(e.grouping,Number),e.thousands+``),n=e.currency===void 0?``:e.currency[0]+``,r=e.currency===void 0?``:e.currency[1]+``,i=e.decimal===void 0?`.`:e.decimal+``,a=e.numerals===void 0?QS:US($S.call(e.numerals,String)),o=e.percent===void 0?`%`:e.percent+``,s=e.minus===void 0?`−`:e.minus+``,c=e.nan===void 0?`NaN`:e.nan+``;function l(e,l){e=GS(e);var u=e.fill,d=e.align,f=e.sign,p=e.symbol,m=e.zero,h=e.width,g=e.comma,_=e.precision,v=e.trim,y=e.type;y===`n`?(g=!0,y=`g`):ZS[y]||(_===void 0&&(_=12),v=!0,y=`g`),(m||u===`0`&&d===`=`)&&(m=!0,u=`0`,d=`=`);var b=(l&&l.prefix!==void 0?l.prefix:``)+(p===`$`?n:p===`#`&&/[boxX]/.test(y)?`0`+y.toLowerCase():``),x=(p===`$`?r:/[%p]/.test(y)?o:``)+(l&&l.suffix!==void 0?l.suffix:``),S=ZS[y],C=/[defgprs%]/.test(y);_=_===void 0?6:/[gprs]/.test(y)?Math.max(1,Math.min(21,_)):Math.max(0,Math.min(20,_));function w(e){var n=b,r=x,o,l,p;if(y===`c`)r=S(e)+r,e=``;else{e=+e;var w=e<0||1/e<0;if(e=isNaN(e)?c:S(Math.abs(e),_),v&&(e=qS(e)),w&&+e==0&&f!==`+`&&(w=!1),n=(w?f===`(`?f:s:f===`-`||f===`(`?``:f)+n,r=(y===`s`&&!isNaN(e)&&JS!==void 0?eC[8+JS/3]:``)+r+(w&&f===`(`?`)`:``),C){for(o=-1,l=e.length;++op||p>57){r=(p===46?i+e.slice(o+1):e.slice(o))+r,e=e.slice(0,o);break}}}g&&!m&&(e=t(e,1/0));var T=n.length+e.length+r.length,E=T>1)+n+e+r+E.slice(T);break;default:e=E+n+e+r;break}return a(e)}return w.toString=function(){return e+``},w}function u(e,t){var n=Math.max(-8,Math.min(8,Math.floor(VS(t)/3)))*3,r=10**-n,i=l((e=GS(e),e.type=`f`,e),{suffix:eC[8+n/3]});return function(e){return i(r*e)}}return{format:l,formatPrefix:u}}var nC,rC,iC;aC({thousands:`,`,grouping:[3],currency:[`$`,``]});function aC(e){return nC=tC(e),rC=nC.format,iC=nC.formatPrefix,nC}function oC(e){return Math.max(0,-VS(Math.abs(e)))}function sC(e,t){return Math.max(0,Math.max(-8,Math.min(8,Math.floor(VS(t)/3)))*3-VS(Math.abs(e)))}function cC(e,t){return e=Math.abs(e),t=Math.abs(t)-e,Math.max(0,VS(t)-VS(e))+1}function lC(e,t,n,r){var i=cx(e,t,n),a;switch(r=GS(r??`,f`),r.type){case`s`:var o=Math.max(Math.abs(e),Math.abs(t));return r.precision==null&&!isNaN(a=sC(i,o))&&(r.precision=a),iC(r,o);case``:case`e`:case`g`:case`p`:case`r`:r.precision==null&&!isNaN(a=cC(i,Math.max(Math.abs(e),Math.abs(t))))&&(r.precision=a-(r.type===`e`));break;case`f`:case`%`:r.precision==null&&!isNaN(a=oC(i))&&(r.precision=a-(r.type===`%`)*2);break}return rC(r)}function uC(e){var t=e.domain;return e.ticks=function(e){var n=t();return ox(n[0],n[n.length-1],e??10)},e.tickFormat=function(e,n){var r=t();return lC(r[0],r[r.length-1],e??10,n)},e.nice=function(n){n??=10;var r=t(),i=0,a=r.length-1,o=r[i],s=r[a],c,l,u=10;for(s0;){if(l=sx(o,s,n),l===c)return r[i]=o,r[a]=s,t(r);if(l>0)o=Math.floor(o/l)*l,s=Math.ceil(s/l)*l;else if(l<0)o=Math.ceil(o*l)/l,s=Math.floor(s*l)/l;else break;c=l}return e},e}function dC(){var e=RS();return e.copy=function(){return IS(e,dC())},gx.apply(e,arguments),uC(e)}function fC(e){var t;function n(e){return e==null||isNaN(e=+e)?t:e}return n.invert=n,n.domain=n.range=function(t){return arguments.length?(e=Array.from(t,kS),n):e.slice()},n.unknown=function(e){return arguments.length?(t=e,n):t},n.copy=function(){return fC(e).unknown(t)},e=arguments.length?Array.from(e,kS):[0,1],uC(n)}function pC(e,t){e=e.slice();var n=0,r=e.length-1,i=e[n],a=e[r],o;return ae**+t}function bC(e){return e===Math.E?Math.log:e===10&&Math.log10||e===2&&Math.log2||(e=Math.log(e),t=>Math.log(t)/e)}function xC(e){return(t,n)=>-e(-t,n)}function SC(e){let t=e(mC,hC),n=t.domain,r=10,i,a;function o(){return i=bC(r),a=yC(r),n()[0]<0?(i=xC(i),a=xC(a),e(gC,_C)):e(mC,hC),t}return t.base=function(e){return arguments.length?(r=+e,o()):r},t.domain=function(e){return arguments.length?(n(e),o()):n()},t.ticks=e=>{let t=n(),o=t[0],s=t[t.length-1],c=s0){for(;l<=u;++l)for(d=1;ds)break;m.push(f)}}else for(;l<=u;++l)for(d=r-1;d>=1;--d)if(f=l>0?d/a(-l):d*a(l),!(fs)break;m.push(f)}m.length*2{if(e??=10,n??=r===10?`s`:`,`,typeof n!=`function`&&(!(r%1)&&(n=GS(n)).precision==null&&(n.trim=!0),n=rC(n)),e===1/0)return n;let o=Math.max(1,r*e/t.ticks().length);return e=>{let t=e/a(Math.round(i(e)));return t*rn(pC(n(),{floor:e=>a(Math.floor(i(e))),ceil:e=>a(Math.ceil(i(e)))})),t}function CC(){let e=SC(LS()).domain([1,10]);return e.copy=()=>IS(e,CC()).base(e.base()),gx.apply(e,arguments),e}function wC(e){return function(t){return Math.sign(t)*Math.log1p(Math.abs(t/e))}}function TC(e){return function(t){return Math.sign(t)*Math.expm1(Math.abs(t))*e}}function EC(e){var t=1,n=e(wC(t),TC(t));return n.constant=function(n){return arguments.length?e(wC(t=+n),TC(t)):t},uC(n)}function DC(){var e=EC(LS());return e.copy=function(){return IS(e,DC()).constant(e.constant())},gx.apply(e,arguments)}function OC(e){return function(t){return t<0?-((-t)**+e):t**+e}}function kC(e){return e<0?-Math.sqrt(-e):Math.sqrt(e)}function AC(e){return e<0?-e*e:e*e}function jC(e){var t=e(jS,jS),n=1;function r(){return n===1?e(jS,jS):n===.5?e(kC,AC):e(OC(n),OC(1/n))}return t.exponent=function(e){return arguments.length?(n=+e,r()):n},uC(t)}function MC(){var e=jC(LS());return e.copy=function(){return IS(e,MC()).exponent(e.exponent())},gx.apply(e,arguments),e}function NC(){return MC.apply(null,arguments).exponent(.5)}function PC(e){return Math.sign(e)*e*e}function FC(e){return Math.sign(e)*Math.sqrt(Math.abs(e))}function IC(){var e=RS(),t=[0,1],n=!1,r;function i(t){var i=FC(e(t));return isNaN(i)?r:n?Math.round(i):i}return i.invert=function(t){return e.invert(PC(t))},i.domain=function(t){return arguments.length?(e.domain(t),i):e.domain()},i.range=function(n){return arguments.length?(e.range((t=Array.from(n,kS)).map(PC)),i):t.slice()},i.rangeRound=function(e){return i.range(e).round(!0)},i.round=function(e){return arguments.length?(n=!!e,i):n},i.clamp=function(t){return arguments.length?(e.clamp(t),i):e.clamp()},i.unknown=function(e){return arguments.length?(r=e,i):r},i.copy=function(){return IC(e.domain(),t).round(n).clamp(e.clamp()).unknown(r)},gx.apply(i,arguments),uC(i)}function LC(){var e=[],t=[],n=[],r;function i(){var r=0,i=Math.max(1,t.length);for(n=Array(i-1);++r0?n[i-1]:e[0],i=n?[r[n-1],t]:[r[o-1],r[o]]},o.unknown=function(e){return arguments.length&&(a=e),o},o.thresholds=function(){return r.slice()},o.copy=function(){return RC().domain([e,t]).range(i).unknown(a)},gx.apply(uC(o),arguments)}function zC(){var e=[.5],t=[0,1],n,r=1;function i(i){return i!=null&&i<=i?t[Jb(e,i,0,r)]:n}return i.domain=function(n){return arguments.length?(e=Array.from(n),r=Math.min(e.length,t.length-1),i):e.slice()},i.range=function(n){return arguments.length?(t=Array.from(n),r=Math.min(e.length,t.length-1),i):t.slice()},i.invertExtent=function(n){var r=t.indexOf(n);return[e[r-1],e[r]]},i.unknown=function(e){return arguments.length?(n=e,i):n},i.copy=function(){return zC().domain(e).range(t).unknown(n)},gx.apply(i,arguments)}var BC=new Date,VC=new Date;function HC(e,t,n,r){function i(t){return e(t=arguments.length===0?new Date:new Date(+t)),t}return i.floor=t=>(e(t=new Date(+t)),t),i.ceil=n=>(e(n=new Date(n-1)),t(n,1),e(n),n),i.round=e=>{let t=i(e),n=i.ceil(e);return e-t(t(e=new Date(+e),n==null?1:Math.floor(n)),e),i.range=(n,r,a)=>{let o=[];if(n=i.ceil(n),a=a==null?1:Math.floor(a),!(n0))return o;let s;do o.push(s=new Date(+n)),t(n,a),e(n);while(sHC(t=>{if(t>=t)for(;e(t),!n(t);)t.setTime(t-1)},(e,r)=>{if(e>=e)if(r<0)for(;++r<=0;)for(;t(e,-1),!n(e););else for(;--r>=0;)for(;t(e,1),!n(e););}),n&&(i.count=(t,r)=>(BC.setTime(+t),VC.setTime(+r),e(BC),e(VC),Math.floor(n(BC,VC))),i.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?i.filter(r?t=>r(t)%e===0:t=>i.count(0,t)%e===0):i)),i}var UC=HC(()=>{},(e,t)=>{e.setTime(+e+t)},(e,t)=>t-e);UC.every=e=>(e=Math.floor(e),!isFinite(e)||!(e>0)?null:e>1?HC(t=>{t.setTime(Math.floor(t/e)*e)},(t,n)=>{t.setTime(+t+n*e)},(t,n)=>(n-t)/e):UC),UC.range;var WC=1e3,GC=WC*60,KC=GC*60,qC=KC*24,JC=qC*7,YC=qC*30,XC=qC*365,ZC=HC(e=>{e.setTime(e-e.getMilliseconds())},(e,t)=>{e.setTime(+e+t*WC)},(e,t)=>(t-e)/WC,e=>e.getUTCSeconds());ZC.range;var QC=HC(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*WC)},(e,t)=>{e.setTime(+e+t*GC)},(e,t)=>(t-e)/GC,e=>e.getMinutes());QC.range;var $C=HC(e=>{e.setUTCSeconds(0,0)},(e,t)=>{e.setTime(+e+t*GC)},(e,t)=>(t-e)/GC,e=>e.getUTCMinutes());$C.range;var ew=HC(e=>{e.setTime(e-e.getMilliseconds()-e.getSeconds()*WC-e.getMinutes()*GC)},(e,t)=>{e.setTime(+e+t*KC)},(e,t)=>(t-e)/KC,e=>e.getHours());ew.range;var tw=HC(e=>{e.setUTCMinutes(0,0,0)},(e,t)=>{e.setTime(+e+t*KC)},(e,t)=>(t-e)/KC,e=>e.getUTCHours());tw.range;var nw=HC(e=>e.setHours(0,0,0,0),(e,t)=>e.setDate(e.getDate()+t),(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*GC)/qC,e=>e.getDate()-1);nw.range;var rw=HC(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/qC,e=>e.getUTCDate()-1);rw.range;var iw=HC(e=>{e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t)},(e,t)=>(t-e)/qC,e=>Math.floor(e/qC));iw.range;function aw(e){return HC(t=>{t.setDate(t.getDate()-(t.getDay()+7-e)%7),t.setHours(0,0,0,0)},(e,t)=>{e.setDate(e.getDate()+t*7)},(e,t)=>(t-e-(t.getTimezoneOffset()-e.getTimezoneOffset())*GC)/JC)}var ow=aw(0),sw=aw(1),cw=aw(2),lw=aw(3),uw=aw(4),dw=aw(5),fw=aw(6);ow.range,sw.range,cw.range,lw.range,uw.range,dw.range,fw.range;function pw(e){return HC(t=>{t.setUTCDate(t.getUTCDate()-(t.getUTCDay()+7-e)%7),t.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCDate(e.getUTCDate()+t*7)},(e,t)=>(t-e)/JC)}var mw=pw(0),hw=pw(1),gw=pw(2),_w=pw(3),vw=pw(4),yw=pw(5),bw=pw(6);mw.range,hw.range,gw.range,_w.range,vw.range,yw.range,bw.range;var xw=HC(e=>{e.setDate(1),e.setHours(0,0,0,0)},(e,t)=>{e.setMonth(e.getMonth()+t)},(e,t)=>t.getMonth()-e.getMonth()+(t.getFullYear()-e.getFullYear())*12,e=>e.getMonth());xw.range;var Sw=HC(e=>{e.setUTCDate(1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCMonth(e.getUTCMonth()+t)},(e,t)=>t.getUTCMonth()-e.getUTCMonth()+(t.getUTCFullYear()-e.getUTCFullYear())*12,e=>e.getUTCMonth());Sw.range;var Cw=HC(e=>{e.setMonth(0,1),e.setHours(0,0,0,0)},(e,t)=>{e.setFullYear(e.getFullYear()+t)},(e,t)=>t.getFullYear()-e.getFullYear(),e=>e.getFullYear());Cw.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:HC(t=>{t.setFullYear(Math.floor(t.getFullYear()/e)*e),t.setMonth(0,1),t.setHours(0,0,0,0)},(t,n)=>{t.setFullYear(t.getFullYear()+n*e)}),Cw.range;var ww=HC(e=>{e.setUTCMonth(0,1),e.setUTCHours(0,0,0,0)},(e,t)=>{e.setUTCFullYear(e.getUTCFullYear()+t)},(e,t)=>t.getUTCFullYear()-e.getUTCFullYear(),e=>e.getUTCFullYear());ww.every=e=>!isFinite(e=Math.floor(e))||!(e>0)?null:HC(t=>{t.setUTCFullYear(Math.floor(t.getUTCFullYear()/e)*e),t.setUTCMonth(0,1),t.setUTCHours(0,0,0,0)},(t,n)=>{t.setUTCFullYear(t.getUTCFullYear()+n*e)}),ww.range;function Tw(e,t,n,r,i,a){let o=[[ZC,1,WC],[ZC,5,5*WC],[ZC,15,15*WC],[ZC,30,30*WC],[a,1,GC],[a,5,5*GC],[a,15,15*GC],[a,30,30*GC],[i,1,KC],[i,3,3*KC],[i,6,6*KC],[i,12,12*KC],[r,1,qC],[r,2,2*qC],[n,1,JC],[t,1,YC],[t,3,3*YC],[e,1,XC]];function s(e,t,n){let r=te).right(o,i);if(a===o.length)return e.every(cx(t/XC,n/XC,r));if(a===0)return UC.every(Math.max(cx(t,n,r),1));let[s,c]=o[i/o[a-1][2]53)return null;`w`in r||(r.w=1),`Z`in r?(a=jw(Mw(r.y,0,1)),o=a.getUTCDay(),a=o>4||o===0?hw.ceil(a):hw(a),a=rw.offset(a,(r.V-1)*7),r.y=a.getUTCFullYear(),r.m=a.getUTCMonth(),r.d=a.getUTCDate()+(r.w+6)%7):(a=Aw(Mw(r.y,0,1)),o=a.getDay(),a=o>4||o===0?sw.ceil(a):sw(a),a=nw.offset(a,(r.V-1)*7),r.y=a.getFullYear(),r.m=a.getMonth(),r.d=a.getDate()+(r.w+6)%7)}else (`W`in r||`U`in r)&&(`w`in r||(r.w=`u`in r?r.u%7:`W`in r?1:0),o=`Z`in r?jw(Mw(r.y,0,1)).getUTCDay():Aw(Mw(r.y,0,1)).getDay(),r.m=0,r.d=`W`in r?(r.w+6)%7+r.W*7-(o+5)%7:r.w+r.U*7-(o+6)%7);return`Z`in r?(r.H+=r.Z/100|0,r.M+=r.Z%100,jw(r)):Aw(r)}}function w(e,t,n,r){for(var i=0,a=t.length,o=n.length,s,c;i=o)return-1;if(s=t.charCodeAt(i++),s===37){if(s=t.charAt(i++),c=x[s in Pw?t.charAt(i++):s],!c||(r=c(e,n,r))<0)return-1}else if(s!=n.charCodeAt(r++))return-1}return r}function T(e,t,n){var r=l.exec(t.slice(n));return r?(e.p=u.get(r[0].toLowerCase()),n+r[0].length):-1}function E(e,t,n){var r=p.exec(t.slice(n));return r?(e.w=m.get(r[0].toLowerCase()),n+r[0].length):-1}function D(e,t,n){var r=d.exec(t.slice(n));return r?(e.w=f.get(r[0].toLowerCase()),n+r[0].length):-1}function O(e,t,n){var r=_.exec(t.slice(n));return r?(e.m=v.get(r[0].toLowerCase()),n+r[0].length):-1}function k(e,t,n){var r=h.exec(t.slice(n));return r?(e.m=g.get(r[0].toLowerCase()),n+r[0].length):-1}function A(e,n,r){return w(e,t,n,r)}function j(e,t,r){return w(e,n,t,r)}function M(e,t,n){return w(e,r,t,n)}function N(e){return o[e.getDay()]}function P(e){return a[e.getDay()]}function ee(e){return c[e.getMonth()]}function F(e){return s[e.getMonth()]}function I(e){return i[+(e.getHours()>=12)]}function te(e){return 1+~~(e.getMonth()/3)}function ne(e){return o[e.getUTCDay()]}function re(e){return a[e.getUTCDay()]}function ie(e){return c[e.getUTCMonth()]}function L(e){return s[e.getUTCMonth()]}function R(e){return i[+(e.getUTCHours()>=12)]}function ae(e){return 1+~~(e.getUTCMonth()/3)}return{format:function(e){var t=S(e+=``,y);return t.toString=function(){return e},t},parse:function(e){var t=C(e+=``,!1);return t.toString=function(){return e},t},utcFormat:function(e){var t=S(e+=``,b);return t.toString=function(){return e},t},utcParse:function(e){var t=C(e+=``,!0);return t.toString=function(){return e},t}}}var Pw={"-":``,_:` `,0:`0`},Fw=/^\s*\d+/,Iw=/^%/,Lw=/[\\^$*+?|[\]().{}]/g;function Rw(e,t,n){var r=e<0?`-`:``,i=(r?-e:e)+``,a=i.length;return r+(a[e.toLowerCase(),t]))}function Hw(e,t,n){var r=Fw.exec(t.slice(n,n+1));return r?(e.w=+r[0],n+r[0].length):-1}function Uw(e,t,n){var r=Fw.exec(t.slice(n,n+1));return r?(e.u=+r[0],n+r[0].length):-1}function Ww(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.U=+r[0],n+r[0].length):-1}function Gw(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.V=+r[0],n+r[0].length):-1}function Kw(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.W=+r[0],n+r[0].length):-1}function qw(e,t,n){var r=Fw.exec(t.slice(n,n+4));return r?(e.y=+r[0],n+r[0].length):-1}function Jw(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.y=+r[0]+(+r[0]>68?1900:2e3),n+r[0].length):-1}function Yw(e,t,n){var r=/^(Z)|([+-]\d\d)(?::?(\d\d))?/.exec(t.slice(n,n+6));return r?(e.Z=r[1]?0:-(r[2]+(r[3]||`00`)),n+r[0].length):-1}function Xw(e,t,n){var r=Fw.exec(t.slice(n,n+1));return r?(e.q=r[0]*3-3,n+r[0].length):-1}function Zw(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.m=r[0]-1,n+r[0].length):-1}function Qw(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.d=+r[0],n+r[0].length):-1}function $w(e,t,n){var r=Fw.exec(t.slice(n,n+3));return r?(e.m=0,e.d=+r[0],n+r[0].length):-1}function eT(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.H=+r[0],n+r[0].length):-1}function tT(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.M=+r[0],n+r[0].length):-1}function nT(e,t,n){var r=Fw.exec(t.slice(n,n+2));return r?(e.S=+r[0],n+r[0].length):-1}function rT(e,t,n){var r=Fw.exec(t.slice(n,n+3));return r?(e.L=+r[0],n+r[0].length):-1}function iT(e,t,n){var r=Fw.exec(t.slice(n,n+6));return r?(e.L=Math.floor(r[0]/1e3),n+r[0].length):-1}function aT(e,t,n){var r=Iw.exec(t.slice(n,n+1));return r?n+r[0].length:-1}function oT(e,t,n){var r=Fw.exec(t.slice(n));return r?(e.Q=+r[0],n+r[0].length):-1}function sT(e,t,n){var r=Fw.exec(t.slice(n));return r?(e.s=+r[0],n+r[0].length):-1}function cT(e,t){return Rw(e.getDate(),t,2)}function lT(e,t){return Rw(e.getHours(),t,2)}function uT(e,t){return Rw(e.getHours()%12||12,t,2)}function dT(e,t){return Rw(1+nw.count(Cw(e),e),t,3)}function fT(e,t){return Rw(e.getMilliseconds(),t,3)}function pT(e,t){return fT(e,t)+`000`}function mT(e,t){return Rw(e.getMonth()+1,t,2)}function hT(e,t){return Rw(e.getMinutes(),t,2)}function gT(e,t){return Rw(e.getSeconds(),t,2)}function _T(e){var t=e.getDay();return t===0?7:t}function vT(e,t){return Rw(ow.count(Cw(e)-1,e),t,2)}function yT(e){var t=e.getDay();return t>=4||t===0?uw(e):uw.ceil(e)}function bT(e,t){return e=yT(e),Rw(uw.count(Cw(e),e)+(Cw(e).getDay()===4),t,2)}function xT(e){return e.getDay()}function ST(e,t){return Rw(sw.count(Cw(e)-1,e),t,2)}function CT(e,t){return Rw(e.getFullYear()%100,t,2)}function wT(e,t){return e=yT(e),Rw(e.getFullYear()%100,t,2)}function TT(e,t){return Rw(e.getFullYear()%1e4,t,4)}function ET(e,t){var n=e.getDay();return e=n>=4||n===0?uw(e):uw.ceil(e),Rw(e.getFullYear()%1e4,t,4)}function DT(e){var t=e.getTimezoneOffset();return(t>0?`-`:(t*=-1,`+`))+Rw(t/60|0,`0`,2)+Rw(t%60,`0`,2)}function OT(e,t){return Rw(e.getUTCDate(),t,2)}function kT(e,t){return Rw(e.getUTCHours(),t,2)}function AT(e,t){return Rw(e.getUTCHours()%12||12,t,2)}function jT(e,t){return Rw(1+rw.count(ww(e),e),t,3)}function MT(e,t){return Rw(e.getUTCMilliseconds(),t,3)}function NT(e,t){return MT(e,t)+`000`}function PT(e,t){return Rw(e.getUTCMonth()+1,t,2)}function FT(e,t){return Rw(e.getUTCMinutes(),t,2)}function IT(e,t){return Rw(e.getUTCSeconds(),t,2)}function LT(e){var t=e.getUTCDay();return t===0?7:t}function RT(e,t){return Rw(mw.count(ww(e)-1,e),t,2)}function zT(e){var t=e.getUTCDay();return t>=4||t===0?vw(e):vw.ceil(e)}function BT(e,t){return e=zT(e),Rw(vw.count(ww(e),e)+(ww(e).getUTCDay()===4),t,2)}function VT(e){return e.getUTCDay()}function HT(e,t){return Rw(hw.count(ww(e)-1,e),t,2)}function UT(e,t){return Rw(e.getUTCFullYear()%100,t,2)}function WT(e,t){return e=zT(e),Rw(e.getUTCFullYear()%100,t,2)}function GT(e,t){return Rw(e.getUTCFullYear()%1e4,t,4)}function KT(e,t){var n=e.getUTCDay();return e=n>=4||n===0?vw(e):vw.ceil(e),Rw(e.getUTCFullYear()%1e4,t,4)}function qT(){return`+0000`}function JT(){return`%`}function YT(e){return+e}function XT(e){return Math.floor(e/1e3)}var ZT,QT,$T;eE({dateTime:`%x, %X`,date:`%-m/%-d/%Y`,time:`%-I:%M:%S %p`,periods:[`AM`,`PM`],days:[`Sunday`,`Monday`,`Tuesday`,`Wednesday`,`Thursday`,`Friday`,`Saturday`],shortDays:[`Sun`,`Mon`,`Tue`,`Wed`,`Thu`,`Fri`,`Sat`],months:[`January`,`February`,`March`,`April`,`May`,`June`,`July`,`August`,`September`,`October`,`November`,`December`],shortMonths:[`Jan`,`Feb`,`Mar`,`Apr`,`May`,`Jun`,`Jul`,`Aug`,`Sep`,`Oct`,`Nov`,`Dec`]});function eE(e){return ZT=Nw(e),QT=ZT.format,ZT.parse,$T=ZT.utcFormat,ZT.utcParse,ZT}function tE(e){return new Date(e)}function nE(e){return e instanceof Date?+e:+new Date(+e)}function rE(e,t,n,r,i,a,o,s,c,l){var u=RS(),d=u.invert,f=u.domain,p=l(`.%L`),m=l(`:%S`),h=l(`%I:%M`),g=l(`%I %p`),_=l(`%a %d`),v=l(`%b %d`),y=l(`%B`),b=l(`%Y`);function x(e){return(c(e)t(r/(e.length-1)))},n.quantiles=function(t){return Array.from({length:t+1},(n,r)=>px(e,r/t))},n.copy=function(){return pE(t).domain(e)},_x.apply(n,arguments)}function mE(){var e=0,t=.5,n=1,r=1,i,a,o,s,c,l=jS,u,d=!1,f;function p(e){return isNaN(e=+e)?f:(e=.5+((e=+u(e))-a)*(r*ebx,scaleDiverging:()=>hE,scaleDivergingLog:()=>gE,scaleDivergingPow:()=>vE,scaleDivergingSqrt:()=>yE,scaleDivergingSymlog:()=>_E,scaleIdentity:()=>fC,scaleImplicit:()=>vx,scaleLinear:()=>dC,scaleLog:()=>CC,scaleOrdinal:()=>yx,scalePoint:()=>Sx,scalePow:()=>MC,scaleQuantile:()=>LC,scaleQuantize:()=>RC,scaleRadial:()=>IC,scaleSequential:()=>cE,scaleSequentialLog:()=>lE,scaleSequentialPow:()=>dE,scaleSequentialQuantile:()=>pE,scaleSequentialSqrt:()=>fE,scaleSequentialSymlog:()=>uE,scaleSqrt:()=>NC,scaleSymlog:()=>DC,scaleThreshold:()=>zC,scaleTime:()=>iE,scaleUtc:()=>aE,tickFormat:()=>lC});function xE(e){if(e in bE)return bE[e]();var t=`scale${sc(e)}`;if(t in bE)return bE[t]()}function SE(e,t,n){if(typeof e==`function`)return e.copy().domain(t).range(n);if(e!=null){var r=xE(e);if(r!=null)return r.domain(t).range(n),r}}function CE(e,t,n,r){if(!(n==null||r==null))return typeof e.scale==`function`?SE(e.scale,n,r):SE(t,n,r)}function wE(e){return`scale${sc(e)}`}function TE(e){return wE(e)in bE}var EE=(e,t,n)=>{if(e!=null){var{scale:r,type:i}=e;if(r===`auto`)return i===`category`&&n&&(n.indexOf(`LineChart`)>=0||n.indexOf(`AreaChart`)>=0||n.indexOf(`ComposedChart`)>=0&&!t)?`point`:i===`category`?`band`:`linear`;if(typeof r==`string`)return TE(r)?r:`point`}};function DE(e,t){for(var n=0,r=e.length,i=e[0]t)?n=a+1:r=a}return n}function OE(e,t){if(e){var n=t??e.domain(),r=n.map(t=>e(t)??0),i=e.range();if(!(n.length===0||i.length<2))return e=>{var t=DE(r,e);if(t<=0)return n[0];if(t>=n.length)return n[n.length-1];var i=r[t-1]??0,a=r[t]??0;return Math.abs(e-i)<=Math.abs(e-a)?n[t-1]:n[t]}}}function kE(e){if(e!=null)return`invert`in e&&typeof e.invert==`function`?e.invert.bind(e):OE(e,void 0)}var AE=l(My());function jE(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function ME(e){for(var t=1;te.cartesianAxis.xAxis[t],zE=(e,t)=>RE(e,t)??LE,BE={allowDataOverflow:!1,allowDecimals:!0,allowDuplicatedCategory:!0,angle:0,dataKey:void 0,domain:IE,hide:!0,id:0,includeHidden:!1,interval:`preserveEnd`,minTickGap:5,mirror:!1,name:void 0,orientation:`left`,padding:{top:0,bottom:0},reversed:!1,scale:`auto`,tick:!0,tickCount:5,tickFormatter:void 0,ticks:void 0,type:`number`,unit:void 0,niceTicks:`auto`,width:60},VE=(e,t)=>e.cartesianAxis.yAxis[t],HE=(e,t)=>VE(e,t)??BE,UE={domain:[0,`auto`],includeHidden:!1,reversed:!1,allowDataOverflow:!1,allowDuplicatedCategory:!1,dataKey:void 0,id:0,name:``,range:[64,64],scale:`auto`,type:`number`,unit:``},WE=(e,t)=>e.cartesianAxis.zAxis[t]??UE,GE=(e,t,n)=>{switch(t){case`xAxis`:return zE(e,n);case`yAxis`:return HE(e,n);case`zAxis`:return WE(e,n);case`angleAxis`:return bb(e,n);case`radiusAxis`:return xb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},KE=(e,t,n)=>{switch(t){case`xAxis`:return zE(e,n);case`yAxis`:return HE(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},qE=(e,t,n)=>{switch(t){case`xAxis`:return zE(e,n);case`yAxis`:return HE(e,n);case`angleAxis`:return bb(e,n);case`radiusAxis`:return xb(e,n);default:throw Error(`Unexpected axis type: ${t}`)}},JE=e=>e.graphicalItems.cartesianItems.some(e=>e.type===`bar`)||e.graphicalItems.polarItems.some(e=>e.type===`radialBar`);function YE(e,t){return n=>{switch(e){case`xAxis`:return`xAxisId`in n&&n.xAxisId===t;case`yAxis`:return`yAxisId`in n&&n.yAxisId===t;case`zAxis`:return`zAxisId`in n&&n.zAxisId===t;case`angleAxis`:return`angleAxisId`in n&&n.angleAxisId===t;case`radiusAxis`:return`radiusAxisId`in n&&n.radiusAxisId===t;default:return!1}}}var XE=e=>e.graphicalItems.cartesianItems,ZE=Q([kb,Ab],YE),QE=(e,t,n)=>e.filter(n).filter(e=>t?.includeHidden===!0?!0:!e.hide),$E=Q([XE,GE,ZE],QE,{memoizeOptions:{resultEqualityCheck:Fb}}),eD=Q([$E],e=>e.filter(e=>e.type===`area`||e.type===`bar`).filter(Nb)),tD=e=>e.filter(e=>!(`stackId`in e)||e.stackId===void 0),nD=Q([$E],tD),rD=e=>e.map(e=>e.data).filter(Boolean).flat(1),iD=Q([$E],rD,{memoizeOptions:{resultEqualityCheck:Fb}}),aD=(e,t)=>{var{chartData:n=[],dataStartIndex:r,dataEndIndex:i}=t;return e.length>0?e:n.slice(r,i+1)},oD=Q([iD,Fy],aD),sD=(e,t,n)=>t?.dataKey==null?n.length>0?n.map(e=>e.dataKey).flatMap(t=>e.map(e=>({value:Cp(e,t)}))):e.map(e=>({value:e})):e.map(e=>({value:Cp(e,t.dataKey)})),cD=Q([oD,GE,$E],sD);function lD(e){if($s(e)||e instanceof Date){var t=Number(e);if($(t))return t}}function uD(e){if(Array.isArray(e)){var t=[lD(e[0]),lD(e[1])];return Ly(t)?t:void 0}var n=lD(e);if(n!=null)return[n,n]}function dD(e){return e.map(lD).filter(cc)}function fD(e,t){var n=lD(e),r=lD(t);return n==null&&r==null?0:n==null?-1:r==null?1:n-r}var pD=Q([cD],e=>e?.map(e=>e.value).sort(fD));function mD(e,t){switch(e){case`xAxis`:return t.direction===`x`;case`yAxis`:return t.direction===`y`;default:return!1}}function hD(e,t,n){return!n||typeof t!=`number`||Zs(t)||!n.length?[]:dD(n.flatMap(n=>{var r=Cp(e,n.dataKey),i,a;if(Array.isArray(r)?[i,a]=r:i=a=r,!(!$(i)||!$(a)))return[t-i,t+a]}))}var gD=e=>qE(e,Lb(e),Rb(e)),_D=Q([gD],e=>e?.dataKey),vD=Q([eD,Fy,gD],Mb),yD=(e,t,n,r)=>{var i=t.reduce((e,t)=>{if(t.stackId==null)return e;var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},{});return Object.fromEntries(Object.entries(i).map(t=>{var[i,a]=t,o=r?[...a].reverse():a;return[i,{stackedData:Ap(e,o.map(jb),n),graphicalItems:o}]}))},bD=Q([vD,eD,tb,nb],yD),xD=(e,t,n,r)=>{var{dataStartIndex:i,dataEndIndex:a}=t;if(r==null&&n!==`zAxis`){var o=Lp(e,i,a);if(!(o!=null&&o[0]===0&&o[1]===0))return o}},SD=Q([GE],e=>e.allowDataOverflow),CD=e=>{if(e==null||!(`domain`in e))return IE;if(e.domain!=null)return e.domain;if(`ticks`in e&&e.ticks!=null){if(e.type===`number`){var t=dD(e.ticks);return[Math.min(...t),Math.max(...t)]}if(e.type===`category`)return e.ticks.map(String)}return e?.domain??IE},wD=Q([GE],CD),TD=Q([wD,SD],zy),ED=Q([bD,Ny,kb,TD],xD,{memoizeOptions:{resultEqualityCheck:Pb}}),DD=e=>e.errorBars,OD=(e,t,n)=>e.flatMap(e=>t[e.id]).filter(Boolean).filter(e=>mD(n,e)),kD=function(){var e=[...arguments].filter(Boolean);if(e.length!==0){var t=e.flat();return[Math.min(...t),Math.max(...t)]}},AD=(e,t,n,r,i)=>{var a,o;if(n.length>0&&e.forEach(e=>{n.forEach(n=>{var s=r[n.id]?.filter(e=>mD(i,e)),c=Cp(e,t.dataKey??n.dataKey),l=hD(e,c,s);if(l.length>=2){var u=Math.min(...l),d=Math.max(...l);(a==null||uo)&&(o=d)}var f=uD(c);f!=null&&(a=a==null?f[0]:Math.min(a,f[0]),o=o==null?f[1]:Math.max(o,f[1]))})}),t?.dataKey!=null&&e.forEach(e=>{var n=uD(Cp(e,t.dataKey));n!=null&&(a=a==null?n[0]:Math.min(a,n[0]),o=o==null?n[1]:Math.max(o,n[1]))}),$(a)&&$(o))return[a,o]},jD=Q([oD,GE,nD,DD,kb],AD,{memoizeOptions:{resultEqualityCheck:Pb}});function MD(e){var{value:t}=e;if($s(t)||t instanceof Date)return t}var ND=(e,t,n)=>{var r=e.map(MD).filter(e=>e!=null);return n&&(t.dataKey==null||t.allowDuplicatedCategory&&rc(r))?(0,AE.default)(0,e.length):t.allowDuplicatedCategory?r:Array.from(new Set(r))},PD=e=>e.referenceElements.dots,FD=(e,t,n)=>e.filter(e=>e.ifOverflow===`extendDomain`).filter(e=>t===`xAxis`?e.xAxisId===n:e.yAxisId===n),ID=Q([PD,kb,Ab],FD),LD=e=>e.referenceElements.areas,RD=Q([LD,kb,Ab],FD),zD=e=>e.referenceElements.lines,BD=Q([zD,kb,Ab],FD),VD=(e,t)=>{if(e!=null){var n=dD(e.map(e=>t===`xAxis`?e.x:e.y));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},HD=Q(ID,kb,VD),UD=(e,t)=>{if(e!=null){var n=dD(e.flatMap(e=>[t===`xAxis`?e.x1:e.y1,t===`xAxis`?e.x2:e.y2]));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},WD=Q([RD,kb],UD);function GD(e){if(e.x!=null)return dD([e.x]);var t=e.segment?.map(e=>e.x);return t==null||t.length===0?[]:dD(t)}function KD(e){if(e.y!=null)return dD([e.y]);var t=e.segment?.map(e=>e.y);return t==null||t.length===0?[]:dD(t)}var qD=(e,t)=>{if(e!=null){var n=e.flatMap(e=>t===`xAxis`?GD(e):KD(e));if(n.length!==0)return[Math.min(...n),Math.max(...n)]}},JD=Q(HD,Q([BD,kb],qD),WD,(e,t,n)=>kD(e,n,t)),YD=(e,t,n,r,i,a,o,s)=>n??By(t,o===`vertical`&&s===`xAxis`||o===`horizontal`&&s===`yAxis`?kD(r,a,i):kD(a,i),e.allowDataOverflow),XD=Q([GE,wD,TD,ED,jD,JD,Xm,kb],YD,{memoizeOptions:{resultEqualityCheck:Pb}}),ZD=[0,1],QD=(e,t,n,r,i,a,o)=>{if(!((e==null||n==null||n.length===0)&&o===void 0)){var{dataKey:s,type:c}=e,l=Tp(t,a);return l&&s==null?(0,AE.default)(0,n?.length??0):c===`category`?ND(r,e,l):i===`expand`?ZD:o}},$D=Q([GE,Xm,oD,cD,tb,kb,XD],QD),eO=Q([GE,JE,rb],EE),tO=(e,t,n)=>{var{niceTicks:r}=t;if(r!==`none`){var i=CD(t),a=Array.isArray(i)&&(i[0]===`auto`||i[1]===`auto`);if((r===`snap125`||r===`adaptive`)&&t!=null&&t.tickCount&&Ly(e)){if(a)return Yy(e,t.tickCount,t.allowDecimals,r);if(t.type===`number`)return Xy(e,t.tickCount,t.allowDecimals,r)}if(r===`auto`&&n===`linear`&&t!=null&&t.tickCount){if(a&&Ly(e))return Yy(e,t.tickCount,t.allowDecimals,`adaptive`);if(t.type===`number`&&Ly(e))return Xy(e,t.tickCount,t.allowDecimals,`adaptive`)}}},nO=Q([$D,qE,eO],tO),rO=(e,t,n,r)=>{if(r!==`angleAxis`&&e?.type===`number`&&Ly(t)&&Array.isArray(n)&&n.length>0){var i=t[0],a=n[0]??0,o=t[1],s=n[n.length-1]??0;return[Math.min(i,a),Math.max(o,s)]}return t},iO=Q([GE,$D,nO,kb],rO),aO=Q(Q(cD,GE,(e,t)=>{if(!(!t||t.type!==`number`)){var n=1/0,r=Array.from(dD(e.map(e=>e.value))).sort((e,t)=>e-t),i=r[0],a=r[r.length-1];if(i==null||a==null)return 1/0;var o=a-i;if(o===0)return 1/0;for(var s=0;si,(e,t,n,r,i)=>{if(!$(e))return 0;var a=t===`vertical`?r.height:r.width;if(i===`gap`)return e*a/2;if(i===`no-gap`){var o=nc(n,e*a),s=e*a/2;return s-o-(s-o)/a*o}return 0}),oO=(e,t,n)=>{var r=zE(e,t);return r==null||typeof r.padding!=`string`?0:aO(e,`xAxis`,t,n,r.padding)},sO=(e,t,n)=>{var r=HE(e,t);return r==null||typeof r.padding!=`string`?0:aO(e,`yAxis`,t,n,r.padding)},cO=Q(zE,oO,(e,t)=>{if(e==null)return{left:0,right:0};var{padding:n}=e;return typeof n==`string`?{left:t,right:t}:{left:(n.left??0)+t,right:(n.right??0)+t}}),lO=Q(HE,sO,(e,t)=>{if(e==null)return{top:0,bottom:0};var{padding:n}=e;return typeof n==`string`?{top:t,bottom:t}:{top:(n.top??0)+t,bottom:(n.bottom??0)+t}}),uO=Q([lm,cO,hm,mm,(e,t,n)=>n],(e,t,n,r,i)=>{var{padding:a}=r;return i?[a.left,n.width-a.right]:[e.left+t.left,e.left+e.width-t.right]}),dO=Q([lm,Xm,lO,hm,mm,(e,t,n)=>n],(e,t,n,r,i,a)=>{var{padding:o}=i;return a?[r.height-o.bottom,o.top]:t===`horizontal`?[e.top+e.height-n.bottom,e.top+n.top]:[e.top+n.top,e.top+e.height-n.bottom]}),fO=(e,t,n,r)=>{switch(t){case`xAxis`:return uO(e,n,r);case`yAxis`:return dO(e,n,r);case`zAxis`:return WE(e,n)?.range;case`angleAxis`:return Eb(e);case`radiusAxis`:return Db(e,n);default:return}},pO=Q([GE,fO],db),mO=Q([GE,eO,Q([eO,iO],Bb),pO],CE),hO=(e,t,n,r)=>{if(!(n==null||n.dataKey==null)){var{type:i,scale:a}=n;if(Tp(e,r)&&(i===`number`||a!==`auto`))return t.map(e=>e.value)}},gO=Q([Xm,cD,qE,kb],hO),_O=Q([mO],zb);Q([mO],kE),Q([mO,pD],OE),Q([$E,DD,kb],OD);function vO(e,t){return e.idt.id?1:0}var yO=(e,t)=>t,bO=(e,t,n)=>n,xO=Q(Yp,yO,bO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(vO)),SO=Q(Xp,yO,bO,(e,t,n)=>e.filter(e=>e.orientation===t).filter(e=>e.mirror===n).sort(vO)),CO=(e,t)=>({width:e.width,height:t.height}),wO=(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height}),TO=Q(lm,zE,CO),EO=(e,t,n)=>{switch(t){case`top`:return e.top;case`bottom`:return n-e.bottom;default:return 0}},DO=(e,t,n)=>{switch(t){case`left`:return e.left;case`right`:return n-e.right;default:return 0}},OO=Q(Kp,lm,xO,yO,bO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=CO(t,n);o??=EO(t,r,e);var c=r===`top`&&!i||r===`bottom`&&i;a[n.id]=o-Number(c)*s.height,o+=(c?-1:1)*s.height}),a}),kO=Q(Gp,lm,SO,yO,bO,(e,t,n,r,i)=>{var a={},o;return n.forEach(n=>{var s=wO(t,n);o??=DO(t,r,e);var c=r===`left`&&!i||r===`right`&&i;a[n.id]=o-Number(c)*s.width,o+=(c?-1:1)*s.width}),a}),AO=Q([lm,zE,(e,t)=>{var n=zE(e,t);if(n!=null)return OO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:e.left,y:0}:{x:e.left,y:i}}}),jO=Q([lm,HE,(e,t)=>{var n=HE(e,t);if(n!=null)return kO(e,n.orientation,n.mirror)},(e,t)=>t],(e,t,n,r)=>{if(t!=null){var i=n?.[r];return i==null?{x:0,y:e.top}:{x:i,y:e.top}}}),MO=Q(lm,HE,(e,t)=>({width:typeof t.width==`number`?t.width:60,height:e.height})),NO=(e,t,n)=>{switch(t){case`xAxis`:return TO(e,n).width;case`yAxis`:return MO(e,n).height;default:return}},PO=(e,t,n,r)=>{if(n!=null){var{allowDuplicatedCategory:i,type:a,dataKey:o}=n,s=Tp(e,r),c=t.map(e=>e.value);if(o&&s&&a===`category`&&i&&rc(c))return c}},FO=Q([Xm,cD,GE,kb],PO),IO=Q([Xm,KE,eO,_O,FO,gO,fO,nO,kb],(e,t,n,r,i,a,o,s,c)=>{if(t!=null){var l=Tp(e,c);return{angle:t.angle,interval:t.interval,minTickGap:t.minTickGap,orientation:t.orientation,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,axisType:c,categoricalDomain:a,duplicateDomain:i,isCategorical:l,niceTicks:s,range:o,realScaleType:n,scale:r}}}),LO=Q([Xm,qE,eO,_O,nO,fO,FO,gO,kb],(e,t,n,r,i,a,o,s,c)=>{if(!(t==null||r==null)){var l=Tp(e,c),{type:u,ticks:d,tickCount:f}=t,p=n===`scaleBand`&&typeof r.bandwidth==`function`?r.bandwidth()/2:2,m=u===`category`&&r.bandwidth?r.bandwidth()/p:0;m=c===`angleAxis`&&a!=null&&a.length>=2?Xs(a[0]-a[1])*2*m:m;var h=d||i;return h?h.map((e,t)=>{var n=o?o.indexOf(e):e,i=r.map(n);return $(i)?{index:t,coordinate:i+m,value:e,offset:m}:null}).filter(cc):l&&s?s.map((e,t)=>{var n=r.map(e);return $(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(cc):r.ticks?r.ticks(f).map((e,t)=>{var n=r.map(e);return $(n)?{coordinate:n+m,value:e,index:t,offset:m}:null}).filter(cc):r.domain().map((e,t)=>{var n=r.map(e);return $(n)?{coordinate:n+m,value:o?o[e]:e,index:t,offset:m}:null}).filter(cc)}}),RO=Q([Xm,qE,_O,fO,FO,gO,kb],(e,t,n,r,i,a,o)=>{if(!(t==null||n==null||r==null||r[0]===r[1])){var s=Tp(e,o),{tickCount:c}=t,l=0;return l=o===`angleAxis`&&r?.length>=2?Xs(r[0]-r[1])*2*l:l,s&&a?a.map((e,t)=>{var r=n.map(e);return $(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(cc):n.ticks?n.ticks(c).map((e,t)=>{var r=n.map(e);return $(r)?{coordinate:r+l,value:e,index:t,offset:l}:null}).filter(cc):n.domain().map((e,t)=>{var r=n.map(e);return $(r)?{coordinate:r+l,value:i?i[e]:e,index:t,offset:l}:null}).filter(cc)}}),zO=Q(GE,_O,(e,t)=>{if(!(e==null||t==null))return ME(ME({},e),{},{scale:t})});Q((e,t,n)=>WE(e,n),Q([Q([GE,eO,$D,pO],CE)],zb),(e,t)=>{if(!(e==null||t==null))return ME(ME({},e),{},{scale:t})});var BO=Q([Xm,Yp,Xp],(e,t,n)=>{switch(e){case`horizontal`:return t.some(e=>e.reversed)?`right-to-left`:`left-to-right`;case`vertical`:return n.some(e=>e.reversed)?`bottom-to-top`:`top-to-bottom`;case`centric`:case`radial`:return`left-to-right`;default:return}});Q([(e,t,n)=>e.renderedTicks[t]?.[n]],e=>{if(!(!e||e.length===0))return t=>{var n=1/0,r=e[0];for(var i of e){var a=Math.abs(i.coordinate-t);ae.options.defaultTooltipEventType,HO=e=>e.options.validateTooltipEventTypes;function UO(e,t,n){if(e==null)return t;var r=e?`axis`:`item`;return n==null?t:n.includes(r)?r:t}function WO(e,t){return UO(t,VO(e),HO(e))}function GO(e){return Z(t=>WO(t,e))}var KO=(e,t)=>{var n,r=Number(t);if(!(Zs(r)||t==null))return r>=0?e==null||(n=e[r])==null?void 0:n.value:void 0},qO=e=>e.tooltip.settings,JO={active:!1,index:null,dataKey:void 0,graphicalItemId:void 0,coordinate:void 0},YO=Sf({name:`tooltip`,initialState:{itemInteraction:{click:JO,hover:JO},axisInteraction:{click:JO,hover:JO},keyboardInteraction:JO,syncInteraction:{active:!1,index:null,dataKey:void 0,label:void 0,coordinate:void 0,sourceViewBox:void 0,graphicalItemId:void 0},tooltipItemPayloads:[],settings:{shared:void 0,trigger:`hover`,axisId:0,active:!1,defaultIndex:void 0}},reducers:{addTooltipEntrySettings:{reducer(e,t){e.tooltipItemPayloads.push(Zh(t.payload))},prepare:Qd()},replaceTooltipEntrySettings:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Ld(e).tooltipItemPayloads.indexOf(Zh(n));i>-1&&(e.tooltipItemPayloads[i]=Zh(r))},prepare:Qd()},removeTooltipEntrySettings:{reducer(e,t){var n=Ld(e).tooltipItemPayloads.indexOf(Zh(t.payload));n>-1&&e.tooltipItemPayloads.splice(n,1)},prepare:Qd()},setTooltipSettingsState(e,t){e.settings=t.payload},setActiveMouseOverItemIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.itemInteraction.hover.active=!0,e.itemInteraction.hover.index=t.payload.activeIndex,e.itemInteraction.hover.dataKey=t.payload.activeDataKey,e.itemInteraction.hover.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.hover.coordinate=t.payload.activeCoordinate},mouseLeaveChart(e){e.itemInteraction.hover.active=!1,e.axisInteraction.hover.active=!1},mouseLeaveItem(e){e.itemInteraction.hover.active=!1},setActiveClickItemIndex(e,t){e.syncInteraction.active=!1,e.itemInteraction.click.active=!0,e.keyboardInteraction.active=!1,e.itemInteraction.click.index=t.payload.activeIndex,e.itemInteraction.click.dataKey=t.payload.activeDataKey,e.itemInteraction.click.graphicalItemId=t.payload.activeGraphicalItemId,e.itemInteraction.click.coordinate=t.payload.activeCoordinate},setMouseOverAxisIndex(e,t){e.syncInteraction.active=!1,e.axisInteraction.hover.active=!0,e.keyboardInteraction.active=!1,e.axisInteraction.hover.index=t.payload.activeIndex,e.axisInteraction.hover.dataKey=t.payload.activeDataKey,e.axisInteraction.hover.coordinate=t.payload.activeCoordinate},setMouseClickAxisIndex(e,t){e.syncInteraction.active=!1,e.keyboardInteraction.active=!1,e.axisInteraction.click.active=!0,e.axisInteraction.click.index=t.payload.activeIndex,e.axisInteraction.click.dataKey=t.payload.activeDataKey,e.axisInteraction.click.coordinate=t.payload.activeCoordinate},setSyncInteraction(e,t){e.syncInteraction=t.payload},setKeyboardInteraction(e,t){e.keyboardInteraction.active=t.payload.active,e.keyboardInteraction.index=t.payload.activeIndex,e.keyboardInteraction.coordinate=t.payload.activeCoordinate}}}),{addTooltipEntrySettings:XO,replaceTooltipEntrySettings:ZO,removeTooltipEntrySettings:QO,setTooltipSettingsState:$O,setActiveMouseOverItemIndex:ek,mouseLeaveItem:tk,mouseLeaveChart:nk,setActiveClickItemIndex:rk,setMouseOverAxisIndex:ik,setMouseClickAxisIndex:ak,setSyncInteraction:ok,setKeyboardInteraction:sk}=YO.actions,ck=YO.reducer;function lk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function uk(e){for(var t=1;t{if(t==null)return JO;var i=mk(e,t,n);if(i==null)return JO;if(i.active)return i;if(e.keyboardInteraction.active)return e.keyboardInteraction;if(e.syncInteraction.active&&e.syncInteraction.index!=null)return e.syncInteraction;var a=e.settings.active===!0;if(hk(i)){if(a)return uk(uk({},i),{},{active:!0})}else if(r!=null)return{active:!0,coordinate:void 0,dataKey:void 0,index:r,graphicalItemId:void 0};return uk(uk({},JO),{},{coordinate:i.coordinate})};function _k(e){if(typeof e==`number`)return Number.isFinite(e)?e:void 0;if(e instanceof Date){var t=e.valueOf();return Number.isFinite(t)?t:void 0}var n=Number(e);return Number.isFinite(n)?n:void 0}function vk(e,t){var n=_k(e),r=t[0],i=t[1];return n===void 0?!1:n>=Math.min(r,i)&&n<=Math.max(r,i)}function yk(e,t,n){if(n==null||t==null)return!0;var r=Cp(e,t);return r==null||!Ly(n)?!0:vk(r,n)}var bk=(e,t,n,r)=>{var i=e?.index;if(i==null)return null;var a=Number(i);if(!$(a))return i;var o=0,s=1/0;t.length>0&&(s=t.length-1);var c=Math.max(o,Math.min(a,s)),l=t[c];return l==null||yk(l,n,r)?String(c):null},xk=(e,t,n,r,i,a,o)=>{if(a!=null){var s=o[0]?.getPosition(a);if(s!=null)return s;var c=i?.[Number(a)];if(c)switch(n){case`horizontal`:return{x:c.coordinate,y:(r.top+t)/2};default:return{x:(r.left+e)/2,y:c.coordinate}}}},Sk=(e,t,n,r)=>{if(t===`axis`)return e.tooltipItemPayloads;if(e.tooltipItemPayloads.length===0)return[];var i=n===`hover`?e.itemInteraction.hover.graphicalItemId:e.itemInteraction.click.graphicalItemId;if(e.syncInteraction.active&&i==null)return e.tooltipItemPayloads;if(i==null&&r!=null){var a=e.tooltipItemPayloads[0];return a==null?[]:[a]}return e.tooltipItemPayloads.filter(e=>e.settings?.graphicalItemId===i)},Ck=e=>e.options.tooltipPayloadSearcher,wk=e=>e.tooltip;function Tk(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ek(e){for(var t=1;te(t)}function Nk(e){if(typeof e==`string`)return e}function Pk(e){if(!(typeof e!=`object`||!e))return{name:`name`in e?Ak(e.name):void 0,unit:`unit`in e?jk(e.unit):void 0,dataKey:`dataKey`in e?Mk(e.dataKey):void 0,payload:`payload`in e?e.payload:void 0,color:`color`in e?Nk(e.color):void 0,fill:`fill`in e?Nk(e.fill):void 0}}function Fk(e,t){return e??t}var Ik=(e,t,n,r,i,a,o)=>{if(!(t==null||a==null)){var{chartData:s,computedData:c,dataStartIndex:l,dataEndIndex:u}=n;return e.reduce((e,n)=>{var{dataDefinedOnItem:d,settings:f}=n,p=Fk(d,s),m=Array.isArray(p)?gp(p,l,u):p,h=f?.dataKey??r,g=f?.nameKey,_=r&&Array.isArray(m)&&!Array.isArray(m[0])&&o===`axis`?ac(m,r,i):a(m,t,c,g);return Array.isArray(_)?_.forEach(t=>{var n=Pk(t),r=n?.name,i=n?.dataKey,a=n?.payload,o=Ek(Ek({},f),{},{name:r,unit:n?.unit,color:n?.color??f?.color,fill:n?.fill??f?.fill});e.push(Vp({tooltipEntrySettings:o,dataKey:i,payload:a,value:Cp(a,i),name:r==null?void 0:String(r)}))}):e.push(Vp({tooltipEntrySettings:f,dataKey:h,payload:_,value:Cp(_,h),name:Cp(_,g)??f?.name})),e},[])}},Lk=Q([gD,JE,rb],EE),Rk=Q([Q([e=>e.graphicalItems.cartesianItems,e=>e.graphicalItems.polarItems],(e,t)=>[...e,...t]),gD,Q([Lb,Rb],YE)],QE,{memoizeOptions:{resultEqualityCheck:Fb}}),zk=Q([Rk],e=>e.filter(Nb)),Bk=Q([Q([Rk],rD,{memoizeOptions:{resultEqualityCheck:Fb}}),Ny],aD),Vk=Q([zk,Ny,gD],Mb),Hk=Q([Bk,gD,Rk],sD),Uk=Q([gD],CD),Wk=Q([Uk,Q([gD],e=>e.allowDataOverflow)],zy),Gk=Q([Q([Vk,Q([Rk],e=>e.filter(Nb)),tb,nb],yD),Ny,Lb,Wk],xD),Kk=Q([Bk,gD,Q([Rk],tD),DD,Lb],AD,{memoizeOptions:{resultEqualityCheck:Pb}}),qk=Q([Q([PD,Lb,Rb],FD),Lb],VD),Jk=Q([Q([LD,Lb,Rb],FD),Lb],UD),Yk=Q([gD,Xm,Bk,Hk,tb,Lb,Q([gD,Uk,Wk,Gk,Kk,Q([qk,Q([Q([zD,Lb,Rb],FD),Lb],qD),Jk],kD),Xm,Lb],YD)],QD),Xk=Q([gD,Yk,Q([Yk,gD,Lk],tO),Lb],rO),Zk=e=>fO(e,Lb(e),Rb(e),!1),Qk=Q([gD,Zk],db),$k=Q([Q([gD,Lk,Xk,Qk],CE)],zb),eA=Q([Xm,gD,Lk,$k,Zk,Q([Xm,Hk,gD,Lb],PO),Q([Xm,Hk,gD,Lb],hO),Lb],(e,t,n,r,i,a,o,s)=>{if(t){var{type:c}=t,l=Tp(e,s);if(r){var u=n===`scaleBand`&&r.bandwidth?r.bandwidth()/2:2,d=c===`category`&&r.bandwidth?r.bandwidth()/u:0;return d=s===`angleAxis`&&i!=null&&i?.length>=2?Xs(i[0]-i[1])*2*d:d,l&&o?o.map((e,t)=>{var n=r.map(e);return $(n)?{coordinate:n+d,value:e,index:t,offset:d}:null}).filter(cc):r.domain().map((e,t)=>{var n=r.map(e);return $(n)?{coordinate:n+d,value:a?a[e]:e,index:t,offset:d}:null}).filter(cc)}}}),tA=Q([VO,HO,qO],(e,t,n)=>UO(n.shared,e,t)),nA=e=>e.tooltip.settings.trigger,rA=e=>e.tooltip.settings.defaultIndex,iA=Q([wk,tA,nA,rA],gk),aA=Q([iA,Bk,_D,Yk],bk),oA=Q([eA,aA],KO),sA=Q([iA],e=>{if(e)return e.dataKey}),cA=Q([iA],e=>{if(e)return e.graphicalItemId}),lA=Q([wk,tA,nA,rA],Sk),uA=Q([iA,Q([Gp,Kp,Xm,lm,eA,rA,lA],xk)],(e,t)=>e!=null&&e.coordinate?e.coordinate:t),dA=Q([iA],e=>e?.active??!1),fA=Q([Q([lA,aA,Ny,_D,oA,Ck,tA],Ik)],e=>{if(e!=null){var t=e.map(e=>e.payload).filter(e=>e!=null);return Array.from(new Set(t))}});function pA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function mA(e){for(var t=1;tZ(gD),yA=()=>{var e=vA(),t=Z(eA),n=Z($k);return Bp(!e||!n?void 0:mA(mA({},e),{},{scale:n}),t)};function bA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function xA(e){for(var t=1;t{var i=t.find(e=>e&&e.index===n);if(i){if(e===`horizontal`)return{x:i.coordinate,y:r.relativeY};if(e===`vertical`)return{x:r.relativeX,y:i.coordinate}}return{x:0,y:0}},EA=(e,t,n,r)=>{var i=t.find(e=>e&&e.index===n);if(i){if(e===`centric`){var a=i.coordinate,{radius:o}=r;return xA(xA(xA({},r),ay(r.cx,r.cy,o,a)),{},{angle:a,radius:o})}var s=i.coordinate,{angle:c}=r;return xA(xA(xA({},r),ay(r.cx,r.cy,s,c)),{},{angle:c,radius:s})}return{angle:0,clockWise:!1,cx:0,cy:0,endAngle:0,innerRadius:0,outerRadius:0,radius:0,startAngle:0,x:0,y:0}};function DA(e,t){var{relativeX:n,relativeY:r}=e;return n>=t.left&&n<=t.left+t.width&&r>=t.top&&r<=t.top+t.height}var OA=(e,t,n,r,i)=>{var a=t?.length??0;if(a<=1||e==null)return 0;if(r===`angleAxis`&&i!=null&&Math.abs(Math.abs(i[1]-i[0])-360)<=1e-6)for(var o=0;o0?n[o-1]?.coordinate:n[a-1]?.coordinate,c=n[o]?.coordinate,l=o>=a-1?n[0]?.coordinate:n[o+1]?.coordinate,u=void 0;if(!(s==null||c==null||l==null))if(Xs(c-s)!==Xs(l-c)){var d=[];if(Xs(l-c)===Xs(i[1]-i[0])){u=l;var f=c+i[1]-i[0];d[0]=Math.min(f,(f+s)/2),d[1]=Math.max(f,(f+s)/2)}else{u=s;var p=l+i[1]-i[0];d[0]=Math.min(c,(p+c)/2),d[1]=Math.max(c,(p+c)/2)}var m=[Math.min(c,(u+c)/2),Math.max(c,(u+c)/2)];if(e>m[0]&&e<=m[1]||e>=d[0]&&e<=d[1])return n[o]?.index}else{var h=Math.min(s,l),g=Math.max(s,l);if(e>(h+c)/2&&e<=(g+c)/2)return n[o]?.index}}else if(t)for(var _=0;_(v.coordinate+b.coordinate)/2||_>0&&_(v.coordinate+b.coordinate)/2&&e<=(v.coordinate+y.coordinate)/2)return v.index}}return-1},kA=()=>Z(rb),AA=(e,t)=>t,jA=(e,t,n)=>n,MA=(e,t,n,r)=>r,NA=Q(eA,e=>(0,tu.default)(e,e=>e.coordinate)),PA=Q([wk,AA,jA,MA],gk),FA=Q([PA,Bk,_D,Yk],bk),IA=(e,t,n)=>{if(t!=null){var r=wk(e);return t===`axis`?n===`hover`?r.axisInteraction.hover.dataKey:r.axisInteraction.click.dataKey:n===`hover`?r.itemInteraction.hover.dataKey:r.itemInteraction.click.dataKey}},LA=Q([wk,AA,jA,MA],Sk),RA=Q([Gp,Kp,Xm,lm,eA,MA,LA],xk),zA=Q([PA,RA],(e,t)=>e.coordinate??t),BA=Q([eA,FA],KO),VA=Q([LA,FA,Ny,_D,BA,Ck,AA],Ik),HA=Q([PA,FA],(e,t)=>({isActive:e.active&&t!=null,activeIndex:t})),UA=(e,t,n,r,i,a,o)=>{if(!(!e||!n||!r||!i)&&DA(e,o)){var s=OA(Up(e,t),a,i,n,r),c=TA(t,i,s,e);return{activeIndex:String(s),activeCoordinate:c}}},WA=(e,t,n,r,i,a,o)=>{if(!(!e||!r||!i||!a||!n)){var s=dy(e,n);if(s){var c=OA(Wp(s,t),o,a,r,i),l=EA(t,a,c,s);return{activeIndex:String(c),activeCoordinate:l}}}},GA=(e,t,n,r,i,a,o,s)=>{if(!(!e||!t||!r||!i||!a))return t===`horizontal`||t===`vertical`?UA(e,t,r,i,a,o,s):WA(e,t,n,r,i,a,o)},KA=Q(e=>e.zIndex.zIndexMap,(e,t)=>t,(e,t,n)=>n,(e,t,n)=>{if(t!=null){var r=e[t];if(r!=null)return n?r.panoramaElement:r.element}}),qA=Q(e=>e.zIndex.zIndexMap,e=>{var t=Object.keys(e).map(e=>parseInt(e,10)).concat(Object.values(cb));return Array.from(new Set(t)).sort((e,t)=>e-t)},{memoizeOptions:{resultEqualityCheck:Ib}});function JA(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function YA(e){for(var t=1;tYA(YA({},e),{},{[t]:{element:void 0,panoramaElement:void 0,consumers:0}}),{})},ej=new Set(Object.values(cb));function tj(e){return ej.has(e)}var nj=Sf({name:`zIndex`,initialState:$A,reducers:{registerZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]?e.zIndexMap[n].consumers+=1:e.zIndexMap[n]={consumers:1,element:void 0,panoramaElement:void 0}},prepare:Qd()},unregisterZIndexPortal:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(--e.zIndexMap[n].consumers,e.zIndexMap[n].consumers<=0&&!tj(n)&&delete e.zIndexMap[n])},prepare:Qd()},registerZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n,element:r,isPanorama:i}=t.payload;e.zIndexMap[n]?i?e.zIndexMap[n].panoramaElement=Zh(r):e.zIndexMap[n].element=Zh(r):e.zIndexMap[n]={consumers:0,element:i?void 0:Zh(r),panoramaElement:i?Zh(r):void 0}},prepare:Qd()},unregisterZIndexPortalElement:{reducer:(e,t)=>{var{zIndex:n}=t.payload;e.zIndexMap[n]&&(t.payload.isPanorama?e.zIndexMap[n].panoramaElement=void 0:e.zIndexMap[n].element=void 0)},prepare:Qd()}}}),{registerZIndexPortal:rj,unregisterZIndexPortal:ij,registerZIndexPortalElement:aj,unregisterZIndexPortalElement:oj}=nj.actions,sj=nj.reducer;function cj(e){var{zIndex:t,children:n}=e,r=eh()&&t!==void 0&&t!==0,i=pm(),a=Al();(0,w.useLayoutEffect)(()=>r?(a(rj({zIndex:t})),()=>{a(ij({zIndex:t}))}):lc,[a,t,r]);var o=Z(e=>KA(e,t,i));return r?o?(0,vn.createPortal)(n,o):null:n}function lj(){return lj=Object.assign?Object.assign.bind():function(e){for(var t=1;t(0,w.useContext)(vj),bj=l(o(((e,t)=>{var n=Object.prototype.hasOwnProperty,r=`~`;function i(){}Object.create&&(i.prototype=Object.create(null),new i().__proto__||(r=!1));function a(e,t,n){this.fn=e,this.context=t,this.once=n||!1}function o(e,t,n,i,o){if(typeof n!=`function`)throw TypeError(`The listener must be a function`);var s=new a(n,i||e,o),c=r?r+t:t;return e._events[c]?e._events[c].fn?e._events[c]=[e._events[c],s]:e._events[c].push(s):(e._events[c]=s,e._eventsCount++),e}function s(e,t){--e._eventsCount===0?e._events=new i:delete e._events[t]}function c(){this._events=new i,this._eventsCount=0}c.prototype.eventNames=function(){var e=[],t,i;if(this._eventsCount===0)return e;for(i in t=this._events)n.call(t,i)&&e.push(r?i.slice(1):i);return Object.getOwnPropertySymbols?e.concat(Object.getOwnPropertySymbols(t)):e},c.prototype.listeners=function(e){var t=r?r+e:e,n=this._events[t];if(!n)return[];if(n.fn)return[n.fn];for(var i=0,a=n.length,o=Array(a);i{if(t&&Array.isArray(e)){var n=Number.parseInt(t,10);if(!Zs(n))return e[n]}},Tj=Sf({name:`options`,initialState:{chartName:``,tooltipPayloadSearcher:()=>void 0,eventEmitter:void 0,defaultTooltipEventType:`axis`},reducers:{createEventEmitter:e=>{e.eventEmitter??=Symbol(`rechartsEventEmitter`)}}}),Ej=Tj.reducer,{createEventEmitter:Dj}=Tj.actions;function Oj(e){return e.tooltip.syncInteraction}var kj=Sf({name:`chartData`,initialState:{chartData:void 0,computedData:void 0,dataStartIndex:0,dataEndIndex:0},reducers:{setChartData(e,t){if(e.chartData=Zh(t.payload),t.payload==null){e.dataStartIndex=0,e.dataEndIndex=0;return}t.payload.length>0&&e.dataEndIndex!==t.payload.length-1&&(e.dataEndIndex=t.payload.length-1)},setComputedData(e,t){e.computedData=t.payload},setDataStartEndIndexes(e,t){var{startIndex:n,endIndex:r}=t.payload;n!=null&&(e.dataStartIndex=n),r!=null&&(e.dataEndIndex=r)}}}),{setChartData:Aj,setDataStartEndIndexes:jj,setComputedData:Mj}=kj.actions,Nj=kj.reducer,Pj=[`x`,`y`];function Fj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Ij(e){for(var t=1;t{if(e==null)return lc;var s=(s,c,l)=>{if(t!==l&&e===s){if(r===`index`){var u;if(o&&c!=null&&(u=c.payload)!=null&&u.coordinate&&c.payload.sourceViewBox){var d=c.payload.coordinate,{x:f,y:p}=d,m=Bj(d,Pj),{x:h,y:g,width:_,height:v}=c.payload.sourceViewBox,y=Ij(Ij({},m),{},{x:o.x+(_?(f-h)/_:0)*o.width,y:o.y+(v?(p-g)/v:0)*o.height});n(Ij(Ij({},c),{},{payload:Ij(Ij({},c.payload),{},{coordinate:y})}))}else n(c);return}if(i!=null){var b;typeof r==`function`?b=i[r(i,{activeTooltipIndex:c.payload.index==null?void 0:Number(c.payload.index),isTooltipActive:c.payload.active,activeIndex:c.payload.index==null?void 0:Number(c.payload.index),activeLabel:c.payload.label,activeDataKey:c.payload.dataKey,activeCoordinate:c.payload.coordinate})]:r===`value`&&(b=i.find(e=>String(e.value)===c.payload.label));var{coordinate:x}=c.payload;if(b==null||c.payload.active===!1||x==null||o==null){n(ok({active:!1,coordinate:void 0,dataKey:void 0,index:null,label:void 0,sourceViewBox:void 0,graphicalItemId:void 0}));return}var{x:S,y:C}=x,w=Math.min(S,o.x+o.width),T=Math.min(C,o.y+o.height),E={x:a===`horizontal`?b.coordinate:w,y:a===`horizontal`?T:b.coordinate};n(ok({active:c.payload.active,coordinate:E,dataKey:c.payload.dataKey,index:String(b.index),label:c.payload.label,sourceViewBox:c.payload.sourceViewBox,graphicalItemId:c.payload.graphicalItemId}))}}};return xj.on(Sj,s),()=>{xj.off(Sj,s)}},[Z(e=>e.rootProps.className),n,t,e,r,i,a,o])}function Uj(){var e=Z(ib),t=Z(ob),n=Al();(0,w.useEffect)(()=>{if(e==null)return lc;var r=(r,i,a)=>{t!==a&&e===r&&n(jj(i))};return xj.on(Cj,r),()=>{xj.off(Cj,r)}},[n,t,e])}function Wj(){var e=Al();(0,w.useEffect)(()=>{e(Dj())},[e]),Hj(),Uj()}function Gj(e,t,n,r,i,a){var o=Z(n=>IA(n,e,t)),s=Z(cA),c=Z(ob),l=Z(ib),u=Z(ab),d=Z(Oj)?.active,f=Wm();(0,w.useEffect)(()=>{if(!d&&l!=null&&c!=null){var e=ok({active:a,coordinate:n,dataKey:o,index:i,label:typeof r==`number`?String(r):r,sourceViewBox:f,graphicalItemId:s});xj.emit(Sj,l,e,c)}},[d,n,o,s,i,r,c,l,u,a,f])}function Kj(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function qj(e){for(var t=1;t{x($O({shared:g,trigger:_,axisId:b,active:n,defaultIndex:S}))},[x,g,_,b,n,S]);var C=Wm(),T=m_(),E=GO(g),{activeIndex:D,isActive:O}=Z(e=>HA(e,E,_,S))??{},k=Z(e=>VA(e,E,_,S)),A=Z(e=>BA(e,E,_,S)),j=Z(e=>zA(e,E,_,S)),M=k,N=yj(),P=n??O??!1,[ee,F]=su([M,P]),I=E===`axis`?A:void 0;Gj(E,_,j,I,D,P);var te=y??N;if(te==null||C==null||E==null)return null;var ne=M??$j;P||(ne=$j),s&&ne.length&&(ne=Sl(ne.filter(e=>e.value!=null&&(e.hide!==!0||t.includeHidden)),u,Zj));var re=ne.length>0,ie=qj(qj({},t),{},{payload:ne,label:I,active:P,activeIndex:D,coordinate:j,accessibilityLayer:T}),L=w.createElement(p_,{allowEscapeViewBox:r,animationDuration:i,animationEasing:a,isAnimationActive:c,active:P,coordinate:j,hasPayload:re,offset:l,position:d,reverseDirection:f,useTranslate3d:p,viewBox:C,wrapperStyle:m,lastBoundingBox:ee,innerRef:F,hasPortalFromProps:!!y},Qj(o,ie));return w.createElement(w.Fragment,null,(0,vn.createPortal)(L,te),P&&w.createElement(_j,{cursor:h,tooltipEventType:E,coordinate:j,payload:ne,index:D}))}var nM=e=>null;nM.displayName=`Cell`;function rM(e,t,n){return(t=iM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function iM(e){var t=aM(e,`string`);return typeof t==`symbol`?t:t+``}function aM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var oM=class{constructor(e){rM(this,`cache`,new Map),this.maxSize=e}get(e){var t=this.cache.get(e);return t!==void 0&&(this.cache.delete(e),this.cache.set(e,t)),t}set(e,t){if(this.cache.has(e))this.cache.delete(e);else if(this.cache.size>=this.maxSize){var n=this.cache.keys().next().value;n!=null&&this.cache.delete(n)}this.cache.set(e,t)}clear(){this.cache.clear()}size(){return this.cache.size}};function sM(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function cM(e){for(var t=1;t{try{var n=document.getElementById(hM);n||(n=document.createElement(`span`),n.setAttribute(`id`,hM),n.setAttribute(`aria-hidden`,`true`),document.body.appendChild(n)),Object.assign(n.style,mM,t),n.textContent=`${e}`;var r=n.getBoundingClientRect();return{width:r.width,height:r.height}}catch{return{width:0,height:0}}},vM=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{};if(e==null||i_.isSsr)return{width:0,height:0};if(!fM.enableCache)return _M(e,t);var n=gM(e,t),r=pM.get(n);if(r)return r;var i=_M(e,t);return pM.set(n,i),i},yM;function bM(e,t,n){return(t=xM(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function xM(e){var t=SM(e,`string`);return typeof t==`symbol`?t:t+``}function SM(e,t){if(typeof e!=`object`||!e)return e;var n=e[Symbol.toPrimitive];if(n!==void 0){var r=n.call(e,t||`default`);if(typeof r!=`object`)return r;throw TypeError(`@@toPrimitive must return a primitive value.`)}return(t===`string`?String:Number)(e)}var CM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([*/])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,wM=/(-?\d+(?:\.\d+)?[a-zA-Z%]*)([+-])(-?\d+(?:\.\d+)?[a-zA-Z%]*)/,TM=/^(px|cm|vh|vw|em|rem|%|mm|in|pt|pc|ex|ch|vmin|vmax|Q)$/,EM=/(-?\d+(?:\.\d+)?)([a-zA-Z%]+)?/,DM={cm:96/2.54,mm:96/25.4,pt:96/72,pc:96/6,in:96,Q:96/(2.54*40),px:1},OM=[`cm`,`mm`,`pt`,`pc`,`in`,`Q`,`px`];function kM(e){return OM.includes(e)}var AM=`NaN`;function jM(e,t){return e*DM[t]}var MM=class e{static parse(t){var[,n,r]=EM.exec(t)??[];return n==null?e.NaN:new e(parseFloat(n),r??``)}constructor(e,t){this.num=e,this.unit=t,this.num=e,this.unit=t,Zs(e)&&(this.unit=``),t!==``&&!TM.test(t)&&(this.num=NaN,this.unit=``),kM(t)&&(this.num=jM(e,t),this.unit=`px`)}add(t){return this.unit===t.unit?new e(this.num+t.num,this.unit):new e(NaN,``)}subtract(t){return this.unit===t.unit?new e(this.num-t.num,this.unit):new e(NaN,``)}multiply(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num*t.num,this.unit||t.unit)}divide(t){return this.unit!==``&&t.unit!==``&&this.unit!==t.unit?new e(NaN,``):new e(this.num/t.num,this.unit||t.unit)}toString(){return`${this.num}${this.unit}`}isNaN(){return Zs(this.num)}};yM=MM,bM(MM,`NaN`,new yM(NaN,``));function NM(e){if(e==null||e.includes(AM))return AM;for(var t=e;t.includes(`*`)||t.includes(`/`);){var[,n,r,i]=CM.exec(t)??[],a=MM.parse(n??``),o=MM.parse(i??``),s=r===`*`?a.multiply(o):a.divide(o);if(s.isNaN())return AM;t=t.replace(CM,s.toString())}for(;t.includes(`+`)||/.-\d+(?:\.\d+)?/.test(t);){var[,c,l,u]=wM.exec(t)??[],d=MM.parse(c??``),f=MM.parse(u??``),p=l===`+`?d.add(f):d.subtract(f);if(p.isNaN())return AM;t=t.replace(wM,p.toString())}return t}var PM=/\(([^()]*)\)/;function FM(e){for(var t=e,n;(n=PM.exec(t))!=null;){var[,r]=n;t=t.replace(PM,NM(r))}return t}function IM(e){var t=e.replace(/\s+/g,``);return t=FM(t),t=NM(t),t}function LM(e){try{return IM(e)}catch{return AM}}function RM(e){var t=LM(e.slice(5,-1));return t===AM?``:t}var zM=[`x`,`y`,`lineHeight`,`capHeight`,`fill`,`scaleToFit`,`textAnchor`,`verticalAnchor`],BM=[`dx`,`dy`,`angle`,`className`,`breakAll`];function VM(){return VM=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{children:t,breakAll:n,style:r}=e;try{var i=[];return oc(t)||(i=n?t.toString().split(``):t.toString().split(WM)),{wordsWithComputedWidth:i.map(e=>({word:e,width:vM(e,r).width})),spaceWidth:n?0:vM(`\xA0`,r).width}}catch{return null}};function KM(e){return e===`start`||e===`middle`||e===`end`||e===`inherit`}function qM(e){return oc(e)||typeof e==`string`||typeof e==`number`||typeof e==`boolean`}var JM=(e,t,n,r)=>e.reduce((e,i)=>{var{word:a,width:o}=i,s=e[e.length-1];if(s&&o!=null&&(t==null||r||s.width+o+ne.reduce((e,t)=>e.width>t.width?e:t),XM=`…`,ZM=(e,t,n,r,i,a,o,s)=>{var c=GM({breakAll:n,style:r,children:e.slice(0,t)+XM});if(!c)return[!1,[]];var l=JM(c.wordsWithComputedWidth,a,o,s);return[l.length>i||YM(l).width>Number(a),l]},QM=(e,t,n,r,i)=>{var{maxLines:a,children:o,style:s,breakAll:c}=e,l=X(a),u=String(o),d=JM(t,r,n,i);if(!l||i||!(d.length>a||YM(d).width>Number(r)))return d;for(var f=0,p=u.length-1,m=0,h;f<=p&&m<=u.length-1;){var g=Math.floor((f+p)/2),[_,v]=ZM(u,g-1,c,s,a,r,n,i),[y]=ZM(u,g,c,s,a,r,n,i);if(!_&&!y&&(f=g+1),_&&y&&(p=g-1),!_&&y){h=v;break}m++}return h||d},$M=e=>[{words:oc(e)?[]:e.toString().split(WM),width:void 0}],eN=e=>{var{width:t,scaleToFit:n,children:r,style:i,breakAll:a,maxLines:o}=e;if((t||n)&&!i_.isSsr){var s,c,l=GM({breakAll:a,children:r,style:i});if(l){var{wordsWithComputedWidth:u,spaceWidth:d}=l;s=u,c=d}else return $M(r);return QM({breakAll:a,children:r,maxLines:o,style:i},s,c,t,!!n)}return $M(r)},tN=`#808080`,nN={angle:0,breakAll:!1,capHeight:`0.71em`,fill:tN,lineHeight:`1em`,scaleToFit:!1,textAnchor:`start`,verticalAnchor:`end`,x:0,y:0},rN=(0,w.forwardRef)((e,t)=>{var n=Pc(e,nN),{x:r,y:i,lineHeight:a,capHeight:o,fill:s,scaleToFit:c,textAnchor:l,verticalAnchor:u}=n,d=HM(n,zM),f=(0,w.useMemo)(()=>eN({breakAll:d.breakAll,children:d.children,maxLines:d.maxLines,scaleToFit:c,style:d.style,width:d.width}),[d.breakAll,d.children,d.maxLines,c,d.style,d.width]),{dx:p,dy:m,angle:h,className:g,breakAll:_}=d,v=HM(d,BM);if(!$s(r)||!$s(i)||f.length===0)return null;var y=Number(r)+(X(p)?p:0),b=Number(i)+(X(m)?m:0);if(!$(y)||!$(b))return null;var x;switch(u){case`start`:x=RM(`calc(${o})`);break;case`middle`:x=RM(`calc(${(f.length-1)/2} * -${a} + (${o} / 2))`);break;default:x=RM(`calc(${f.length-1} * -${a})`);break}var S=[],C=f[0];if(c&&C!=null){var T=C.width,{width:E}=d;S.push(`scale(${X(E)&&X(T)?E/T:1})`)}return h&&S.push(`rotate(${h}, ${y}, ${b})`),S.length&&(v.transform=S.join(` `)),w.createElement(`text`,VM({},eo(v),{ref:t,x:y,y:b,className:Ka(`recharts-text`,g),textAnchor:l,fill:s.includes(`url`)?tN:s}),f.map((e,t)=>{var n=e.words.join(_?``:` `);return w.createElement(`tspan`,{x:y,dy:t===0?x:a,key:`${n}-${t}`},n)}))});rN.displayName=`Text`;function iN(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function aN(e){for(var t=1;t{var{viewBox:t,position:n,offset:r=0,parentViewBox:i,clamp:a}=e,{x:o,y:s,height:c,upperWidth:l,lowerWidth:u}=Um(t),d=o,f=o+(l-u)/2,p=(d+f)/2,m=(l+u)/2,h=d+l/2,g=c>=0?1:-1,_=g*r,v=g>0?`end`:`start`,y=g>0?`start`:`end`,b=l>=0?1:-1,x=b*r,S=b>0?`end`:`start`,C=b>0?`start`:`end`,w=i;if(n===`top`){var T={x:d+l/2,y:s-_,horizontalAnchor:`middle`,verticalAnchor:v};return a&&w&&(T.height=Math.max(s-w.y,0),T.width=l),T}if(n===`bottom`){var E={x:f+u/2,y:s+c+_,horizontalAnchor:`middle`,verticalAnchor:y};return a&&w&&(E.height=Math.max(w.y+w.height-(s+c),0),E.width=u),E}if(n===`left`){var D={x:p-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`};return a&&w&&(D.width=Math.max(D.x-w.x,0),D.height=c),D}if(n===`right`){var O={x:p+m+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`};return a&&w&&(O.width=Math.max(w.x+w.width-O.x,0),O.height=c),O}var k=a&&w?{width:m,height:c}:{};return n===`insideLeft`?aN({x:p+x,y:s+c/2,horizontalAnchor:C,verticalAnchor:`middle`},k):n===`insideRight`?aN({x:p+m-x,y:s+c/2,horizontalAnchor:S,verticalAnchor:`middle`},k):n===`insideTop`?aN({x:d+l/2,y:s+_,horizontalAnchor:`middle`,verticalAnchor:y},k):n===`insideBottom`?aN({x:f+u/2,y:s+c-_,horizontalAnchor:`middle`,verticalAnchor:v},k):n===`insideTopLeft`?aN({x:d+x,y:s+_,horizontalAnchor:C,verticalAnchor:y},k):n===`insideTopRight`?aN({x:d+l-x,y:s+_,horizontalAnchor:S,verticalAnchor:y},k):n===`insideBottomLeft`?aN({x:f+x,y:s+c-_,horizontalAnchor:C,verticalAnchor:v},k):n===`insideBottomRight`?aN({x:f+u-x,y:s+c-_,horizontalAnchor:S,verticalAnchor:v},k):n&&typeof n==`object`&&(X(n.x)||Qs(n.x))&&(X(n.y)||Qs(n.y))?aN({x:o+nc(n.x,m),y:s+nc(n.y,c),horizontalAnchor:`end`,verticalAnchor:`end`},k):aN({x:h,y:s+c/2,horizontalAnchor:`middle`,verticalAnchor:`middle`},k)},uN=[`labelRef`],dN=[`content`];function fN(e,t){if(e==null)return{};var n,r,i=pN(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o,children:s}=e,c=(0,w.useMemo)(()=>({x:t,y:n,upperWidth:r,lowerWidth:i,width:a,height:o}),[t,n,r,i,a,o]);return w.createElement(bN.Provider,{value:c},s)},SN=()=>{var e=(0,w.useContext)(bN),t=Wm();return e||(t?Um(t):void 0)},CN=(0,w.createContext)(null),wN=()=>{var e=(0,w.useContext)(CN),t=Z(Ob);return e||t},TN=e=>{var{value:t,formatter:n}=e,r=oc(e.children)?t:e.children;return typeof n==`function`?n(r):r},EN=e=>e!=null&&typeof e==`function`,DN=(e,t)=>Xs(t-e)*Math.min(Math.abs(t-e),360),ON=(e,t,n,r,i)=>{var{offset:a,className:o}=e,{cx:s,cy:c,innerRadius:l,outerRadius:u,startAngle:d,endAngle:f,clockWise:p}=i,m=(l+u)/2,h=DN(d,f),g=h>=0?1:-1,_,v;switch(t){case`insideStart`:_=d+g*a,v=p;break;case`insideEnd`:_=f-g*a,v=!p;break;case`end`:_=f+g*a,v=p;break;default:throw Error(`Unsupported position ${t}`)}v=h<=0?v:!v;var y=ay(s,c,m,_),b=ay(s,c,m,_+(v?1:-1)*359),x=`M${y.x},${y.y} + A${m},${m},0,1,${v?0:1}, + ${b.x},${b.y}`,S=oc(e.id)?tc(`recharts-radial-line-`):e.id;return w.createElement(`text`,yN({},r,{dominantBaseline:`central`,className:Ka(`recharts-radial-bar-label`,o)}),w.createElement(`defs`,null,w.createElement(`path`,{id:S,d:x})),w.createElement(`textPath`,{xlinkHref:`#${S}`},n))},kN=(e,t,n)=>{var{cx:r,cy:i,innerRadius:a,outerRadius:o,startAngle:s,endAngle:c}=e,l=(s+c)/2;if(n===`outside`){var{x:u,y:d}=ay(r,i,o+t,l);return{x:u,y:d,textAnchor:u>=r?`start`:`end`,verticalAnchor:`middle`}}if(n===`center`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`middle`};if(n===`centerTop`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`start`};if(n===`centerBottom`)return{x:r,y:i,textAnchor:`middle`,verticalAnchor:`end`};var{x:f,y:p}=ay(r,i,(a+o)/2,l);return{x:f,y:p,textAnchor:`middle`,verticalAnchor:`middle`}},AN=e=>e!=null&&`cx`in e&&X(e.cx),jN={angle:0,offset:5,zIndex:cb.label,position:`middle`,textBreakAll:!1};function MN(e){if(!AN(e))return e;var{cx:t,cy:n,outerRadius:r}=e,i=r*2;return{x:t-r,y:n-r,width:i,upperWidth:i,lowerWidth:i,height:i}}function NN(e){var t=Pc(e,jN),{viewBox:n,parentViewBox:r,position:i,value:a,children:o,content:s,className:c=``,textBreakAll:l,labelRef:u}=t,d=wN(),f=SN(),p=n==null?i===`center`?f:d??f:AN(n)?n:Um(n),m,h,g=MN(p);if(!p||oc(a)&&oc(o)&&!(0,w.isValidElement)(s)&&typeof s!=`function`)return null;var _=hN(hN({},t),{},{viewBox:p});if((0,w.isValidElement)(s)){var{labelRef:v}=_;return(0,w.cloneElement)(s,fN(_,uN))}if(typeof s==`function`){var{content:y}=_;if(m=(0,w.createElement)(s,fN(_,dN)),(0,w.isValidElement)(m))return m}else m=TN(t);var b=eo(t);if(AN(p)){if(i===`insideStart`||i===`insideEnd`||i===`end`)return ON(t,i,m,b,p);h=kN(p,t.offset,t.position)}else{if(!g)return null;var x=lN({viewBox:g,position:i,offset:t.offset,parentViewBox:AN(r)?void 0:r,clamp:!0});h=hN(hN({x:x.x,y:x.y,textAnchor:x.horizontalAnchor,verticalAnchor:x.verticalAnchor},x.width===void 0?{}:{width:x.width}),x.height===void 0?{}:{height:x.height})}return w.createElement(cj,{zIndex:t.zIndex},w.createElement(rN,yN({ref:u,className:Ka(`recharts-label`,c)},b,h,{textAnchor:KM(b.textAnchor)?b.textAnchor:h.textAnchor,breakAll:l}),m))}NN.displayName=`Label`;var PN=(e,t,n)=>{if(!e)return null;var r={viewBox:t,labelRef:n};return e===!0?w.createElement(NN,yN({key:`label-implicit`},r)):$s(e)?w.createElement(NN,yN({key:`label-implicit`,value:e},r)):(0,w.isValidElement)(e)?e.type===NN?(0,w.cloneElement)(e,hN({key:`label-implicit`},r)):w.createElement(NN,yN({key:`label-implicit`,content:e},r)):EN(e)?w.createElement(NN,yN({key:`label-implicit`,content:e},r)):e&&typeof e==`object`?w.createElement(NN,yN({},e,{key:`label-implicit`},r)):null};function FN(e){var{label:t,labelRef:n}=e;return PN(t,SN(),n)||null}var IN=[`valueAccessor`],LN=[`dataKey`,`clockWise`,`id`,`textBreakAll`,`zIndex`];function RN(){return RN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=Array.isArray(e.value)?e.value[e.value.length-1]:e.value;if(qM(t))return t},HN=(0,w.createContext)(void 0),UN=HN.Provider,WN=(0,w.createContext)(void 0),GN=WN.Provider;function KN(){return(0,w.useContext)(HN)}function qN(){return(0,w.useContext)(WN)}function JN(e){var{valueAccessor:t=VN}=e,n=zN(e,IN),{dataKey:r,clockWise:i,id:a,textBreakAll:o,zIndex:s}=n,c=zN(n,LN),l=KN(),u=qN(),d=l||u;return!d||!d.length?null:w.createElement(cj,{zIndex:s??cb.label},w.createElement(fo,{className:`recharts-label-list`},d.map((e,i)=>{var s=oc(r)?t(e,i):Cp(e.payload,r),l=oc(a)?{}:{id:`${a}-${i}`};return w.createElement(NN,RN({key:`label-${i}`},eo(e),c,l,{fill:n.fill??e.fill,parentViewBox:e.parentViewBox,value:s,textBreakAll:o,viewBox:e.viewBox,index:i,zIndex:0}))})))}JN.displayName=`LabelList`;function YN(e){var{label:t}=e;return t?t===!0?w.createElement(JN,{key:`labelList-implicit`}):w.isValidElement(t)||EN(t)?w.createElement(JN,{key:`labelList-implicit`,content:t}):typeof t==`object`?w.createElement(JN,RN({key:`labelList-implicit`},t,{type:String(t.type)})):null:null}function XN(){return XN=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{cx:t,cy:n,r,className:i}=e,a=Ka(`recharts-dot`,i);return X(t)&&X(n)&&X(r)?w.createElement(`circle`,XN({},Qa(e),Ec(e),{className:a,cx:t,cy:n,r})):null},QN=e=>e.graphicalItems.polarItems,$N=Q([QN,GE,Q([kb,Ab],YE)],QE),eP=Q([Q([$N],rD),Py],aD),tP=Q([eP,GE,$N],sD);Q([eP,GE,$N],(e,t,n)=>n.length>0?e.flatMap(e=>n.flatMap(n=>({value:Cp(e,t.dataKey??n.dataKey),errorDomain:[]}))).filter(Boolean):t?.dataKey==null?e.map(e=>({value:e,errorDomain:[]})):e.map(e=>({value:Cp(e,t.dataKey),errorDomain:[]})));var nP=()=>void 0,rP=Q([GE,Xm,eP,tP,tb,kb,Q([GE,wD,TD,nP,Q([eP,GE,$N,DD,kb],AD),nP,Xm,kb],YD)],QD);Q([eO,Q([GE,rP,Q([rP,qE,eO],tO),kb],rO)],Bb);var iP=Sf({name:`polarAxis`,initialState:{radiusAxis:{},angleAxis:{}},reducers:{addRadiusAxis(e,t){e.radiusAxis[t.payload.id]=Zh(t.payload)},removeRadiusAxis(e,t){delete e.radiusAxis[t.payload.id]},addAngleAxis(e,t){e.angleAxis[t.payload.id]=Zh(t.payload)},removeAngleAxis(e,t){delete e.angleAxis[t.payload.id]}}}),{addRadiusAxis:aP,removeRadiusAxis:oP,addAngleAxis:sP,removeAngleAxis:cP}=iP.actions,lP=iP.reducer;function uP(e){return e&&typeof e==`object`&&`className`in e&&typeof e.className==`string`?e.className:``}function dP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function fP(e){for(var t=1;tt],(e,t)=>e.filter(e=>e.type===`pie`).find(e=>e.id===t)),_P=[],vP=(e,t,n)=>n?.length===0?_P:n,yP=Q([Py,gP,vP],(e,t,n)=>{var{chartData:r}=e;if(t!=null){var i=t?.data!=null&&t.data.length>0?t.data:r;if((!i||!i.length)&&n!=null&&(i=n.map(e=>fP(fP({},t.presentationProps),e.props))),i!=null)return i}}),bP=Q([yP,gP,vP],(e,t,n)=>{if(!(e==null||t==null))return e.map((e,r)=>{var i,a=Cp(e,t.nameKey,t.name),o=n!=null&&(i=n[r])!=null&&(i=i.props)!=null&&i.fill?n[r].props.fill:typeof e==`object`&&e&&`fill`in e?e.fill:t.fill;return{value:Hp(a,t.dataKey),color:o,payload:e,type:t.legendType}})}),xP=Q([yP,gP,vP,lm],(e,t,n,r)=>{if(!(t==null||e==null))return ZF({offset:r,pieSettings:t,displayedData:e,cells:n})}),SP=o((e=>{var t=Symbol.for(`react.transitional.element`),n=Symbol.for(`react.portal`),r=Symbol.for(`react.fragment`),i=Symbol.for(`react.strict_mode`),a=Symbol.for(`react.profiler`),o=Symbol.for(`react.consumer`),s=Symbol.for(`react.context`),c=Symbol.for(`react.forward_ref`),l=Symbol.for(`react.suspense`),u=Symbol.for(`react.suspense_list`),d=Symbol.for(`react.memo`),f=Symbol.for(`react.lazy`),p=Symbol.for(`react.view_transition`);function m(e){if(typeof e==`object`&&e){var m=e.$$typeof;switch(m){case t:switch(e=e.type,e){case r:case a:case i:case l:case u:case p:return e;default:switch(e&&=e.$$typeof,e){case s:case c:case f:case d:return e;case o:return e;default:return m}}case n:return m}}}e.isFragment=function(e){return m(e)===r}})),CP=o(((e,t)=>{t.exports=SP()}))(),wP=e=>typeof e==`string`?e:e?e.displayName||e.name||`Component`:``,TP=null,EP=null,DP=e=>{if(e===TP&&Array.isArray(EP))return EP;var t=[];return w.Children.forEach(e,e=>{oc(e)||((0,CP.isFragment)(e)?t=t.concat(DP(e.props.children)):t.push(e))}),EP=t,TP=e,t};function OP(e,t){var n=[],r=[];return r=Array.isArray(t)?t.map(e=>wP(e)):[wP(t)],DP(e).forEach(e=>{var t=(0,Ys.default)(e,`type.displayName`)||(0,Ys.default)(e,`type.name`);t&&r.indexOf(t)!==-1&&n.push(e)}),n}var kP=e=>e&&typeof e==`object`&&`clipDot`in e?!!e.clipDot:!0,AP=o((e=>{Object.defineProperty(e,Symbol.toStringTag,{value:`Module`});function t(e){if(typeof e!=`object`||!e)return!1;if(Object.getPrototypeOf(e)===null)return!0;if(Object.prototype.toString.call(e)!==`[object Object]`){let t=e[Symbol.toStringTag];return t==null||!Object.getOwnPropertyDescriptor(e,Symbol.toStringTag)?.writable?!1:e.toString()===`[object ${t}]`}let t=e;for(;Object.getPrototypeOf(t)!==null;)t=Object.getPrototypeOf(t);return Object.getPrototypeOf(e)===t}e.isPlainObject=t})),jP=o(((e,t)=>{t.exports=AP().isPlainObject})),MP,NP,PP,FP,IP;function LP(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function RP(e){for(var t=1;t{var a=n-r,o=Js(MP||=UP([`M `,`,`,``]),e,t);return o+=Js(NP||=UP([`L `,`,`,``]),e+n,t),o+=Js(PP||=UP([`L `,`,`,``]),e+n-a/2,t+i),o+=Js(FP||=UP([`L `,`,`,``]),e+n-a/2-r,t+i),o+=Js(IP||=UP([`L `,`,`,` Z`]),e,t),o},GP={x:0,y:0,upperWidth:0,lowerWidth:0,height:0,isUpdateAnimationActive:!1,animationBegin:0,animationDuration:1500,animationEasing:`ease`},KP=e=>{var t=Pc(e,GP),{x:n,y:r,upperWidth:i,lowerWidth:a,height:o,className:s}=t,{animationEasing:c,animationDuration:l,animationBegin:u,isUpdateAnimationActive:d}=t,f=(0,w.useRef)(null),[p,m]=(0,w.useState)(-1),h=(0,w.useRef)(i),g=(0,w.useRef)(a),_=(0,w.useRef)(o),v=(0,w.useRef)(n),y=(0,w.useRef)(r),b=Dv(e,`trapezoid-`);if((0,w.useEffect)(()=>{if(f.current&&f.current.getTotalLength)try{var e=f.current.getTotalLength();e&&m(e)}catch{}},[]),n!==+n||r!==+r||i!==+i||a!==+a||o!==+o||i===0&&a===0||o===0)return null;var x=Ka(`recharts-trapezoid`,s);if(!d)return w.createElement(`g`,null,w.createElement(`path`,HP({},eo(t),{className:x,d:WP(n,r,i,a,o)})));var S=h.current,C=g.current,T=_.current,E=v.current,D=y.current,O=`0px ${p===-1?1:p}px`,k=`${p}px ${p}px`,A=J_([`strokeDasharray`],l,c);return w.createElement(Ev,{animationId:b,key:b,canBegin:p>0,duration:l,easing:c,isActive:d,begin:u},e=>{var s=ic(S,i,e),c=ic(C,a,e),l=ic(T,o,e),u=ic(E,n,e),d=ic(D,r,e);f.current&&(h.current=s,g.current=c,_.current=l,v.current=u,y.current=d);var p=e>0?{transition:A,strokeDasharray:k}:{strokeDasharray:O};return w.createElement(`path`,HP({},eo(t),{className:x,d:WP(u,d,s,c,l),ref:f,style:RP(RP({},p),t.style)}))})},qP=l(jP()),JP=[`option`,`shapeType`,`activeClassName`,`inActiveClassName`];function YP(e,t){if(e==null)return{};var n,r,i=XP(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var r=Al();return(i,a)=>o=>{e?.(i,a,o),r(ek({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}},cF=e=>{var t=Al();return(n,r)=>i=>{e?.(n,r,i),t(tk())}},lF=(e,t,n)=>{var r=Al();return(i,a)=>o=>{e?.(i,a,o),r(rk({activeIndex:String(a),activeDataKey:t,activeCoordinate:i.tooltipPosition,activeGraphicalItemId:n}))}};function uF(e){var{tooltipEntrySettings:t}=e,n=Al(),r=pm(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(XO(t)):i.current!==t&&n(ZO({prev:i.current,next:t})),i.current=t)},[t,n,r]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(QO(i.current)),null)},[n]),null}function dF(e){var{legendPayload:t}=e,n=Al(),r=pm(),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r||(i.current===null?n(tg(t)):i.current!==t&&n(ng({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(rg(i.current)),null)},[n]),null}function fF(e){var{legendPayload:t}=e,n=Al(),r=Z(Xm),i=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{r!==`centric`&&r!==`radial`||(i.current===null?n(tg(t)):i.current!==t&&n(ng({prev:i.current,next:t})),i.current=t)},[n,r,t]),(0,w.useLayoutEffect)(()=>()=>{i.current&&=(n(rg(i.current)),null)},[n]),null}var pF=w.useId??(()=>{var[e]=w.useState(()=>tc(`uid-`));return e});function mF(e,t){var n=pF();return t||(e?`${e}-${n}`:n)}var hF=(0,w.createContext)(void 0),gF=e=>{var{id:t,type:n,children:r}=e,i=mF(`recharts-${n}`,t);return w.createElement(hF.Provider,{value:i},r(i))},_F=Sf({name:`graphicalItems`,initialState:{cartesianItems:[],polarItems:[]},reducers:{addCartesianGraphicalItem:{reducer(e,t){e.cartesianItems.push(Zh(t.payload))},prepare:Qd()},replaceCartesianGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Ld(e).cartesianItems.indexOf(Zh(n));i>-1&&(e.cartesianItems[i]=Zh(r))},prepare:Qd()},removeCartesianGraphicalItem:{reducer(e,t){var n=Ld(e).cartesianItems.indexOf(Zh(t.payload));n>-1&&e.cartesianItems.splice(n,1)},prepare:Qd()},addPolarGraphicalItem:{reducer(e,t){e.polarItems.push(Zh(t.payload))},prepare:Qd()},removePolarGraphicalItem:{reducer(e,t){var n=Ld(e).polarItems.indexOf(Zh(t.payload));n>-1&&e.polarItems.splice(n,1)},prepare:Qd()},replacePolarGraphicalItem:{reducer(e,t){var{prev:n,next:r}=t.payload,i=Ld(e).polarItems.indexOf(Zh(n));i>-1&&(e.polarItems[i]=Zh(r))},prepare:Qd()}}}),{addCartesianGraphicalItem:vF,replaceCartesianGraphicalItem:yF,removeCartesianGraphicalItem:bF,addPolarGraphicalItem:xF,removePolarGraphicalItem:SF,replacePolarGraphicalItem:CF}=_F.actions,wF=_F.reducer,TF=(0,w.memo)(e=>{var t=Al(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(vF(e)):n.current!==e&&t(yF({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(bF(n.current)),null)},[t]),null}),EF=(0,w.memo)(e=>{var t=Al(),n=(0,w.useRef)(null);return(0,w.useLayoutEffect)(()=>{n.current===null?t(xF(e)):n.current!==e&&t(CF({prev:n.current,next:e})),n.current=e},[t,e]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(SF(n.current)),null)},[t]),null}),DF=[`key`],OF=[`onMouseEnter`,`onClick`,`onMouseLeave`],kF=[`id`],AF=[`id`];function jF(){return jF=Object.assign?Object.assign.bind():function(e){for(var t=1;tOP(e.children,nM),[e.children]),n=Z(n=>bP(n,e.id,t));return n==null?null:w.createElement(fF,{legendPayload:n})}function BF(e){if(!(e==null||typeof e==`boolean`||typeof e==`function`)){if(w.isValidElement(e)){var t=e.props?.fill;return typeof t==`string`?t:void 0}var{fill:n}=e;return typeof n==`string`?n:void 0}}var VF=w.memo(e=>{var{dataKey:t,nameKey:n,sectors:r,stroke:i,strokeWidth:a,fill:o,name:s,hide:c,tooltipType:l,id:u,activeShape:d}=e,f=BF(d),p={dataDefinedOnItem:r.map(e=>{var t=e.tooltipPayload;return f==null||t==null?t:t.map(e=>FF(FF({},e),{},{color:f,fill:f}))}),getPosition:e=>r[Number(e)]?.tooltipPosition,settings:{stroke:i,strokeWidth:a,fill:o,dataKey:t,nameKey:n,name:Hp(s,t),hide:c,type:l,color:o,unit:``,graphicalItemId:u}};return w.createElement(uF,{tooltipEntrySettings:p})}),HF=(e,t)=>e>t?`start`:enc(typeof t==`function`?t(e):t,n,n*.8),WF=(e,t,n)=>{var{top:r,left:i,width:a,height:o}=t,s=oy(a,o);return{cx:i+nc(e.cx,a,a/2),cy:r+nc(e.cy,o,o/2),innerRadius:nc(e.innerRadius,s,0),outerRadius:UF(n,e.outerRadius,s),maxRadius:e.maxRadius||Math.sqrt(a*a+o*o)/2}},GF=(e,t)=>Xs(t-e)*Math.min(Math.abs(t-e),360),KF=(e,t)=>{if(w.isValidElement(e))return w.cloneElement(e,t);if(typeof e==`function`)return e(t);var n=Ka(`recharts-pie-label-line`,typeof e==`boolean`?``:e.className),{key:r}=t,i=MF(t,DF);return w.createElement(k_,jF({},i,{type:`linear`,className:n}))},qF=(e,t,n)=>{if(w.isValidElement(e))return w.cloneElement(e,t);var r=n;if(typeof e==`function`&&(r=e(t),w.isValidElement(r)))return r;var i=Ka(`recharts-pie-label-text`,uP(e));return w.createElement(rN,jF({},t,{alignmentBaseline:`middle`,className:i}),r)};function JF(e){var{sectors:t,props:n,showLabels:r}=e,{label:i,labelLine:a,dataKey:o}=n;if(!r||!i||!t)return null;var s=Qa(n),c=$a(i),l=$a(a),u=typeof i==`object`&&`offsetRadius`in i&&typeof i.offsetRadius==`number`&&i.offsetRadius||20,d=t.map((e,t)=>{var n=(e.startAngle+e.endAngle)/2,r=ay(e.cx,e.cy,e.outerRadius+u,n),d=FF(FF(FF(FF({},s),e),{},{stroke:`none`},c),{},{index:t,textAnchor:HF(r.x,e.cx)},r),f=FF(FF(FF(FF({},s),e),{},{fill:`none`,stroke:e.fill},l),{},{index:t,points:[ay(e.cx,e.cy,e.outerRadius,n),r],key:`line`});return w.createElement(cj,{zIndex:cb.label,key:`label-${e.startAngle}-${e.endAngle}-${e.midAngle}-${t}`},w.createElement(fo,null,a&&KF(a,f),qF(i,d,Cp(e,o))))});return w.createElement(fo,{className:`recharts-pie-labels`},d)}function YF(e){var{sectors:t,props:n,showLabels:r}=e,{label:i}=n;return typeof i==`object`&&i&&`position`in i?w.createElement(YN,{label:i}):w.createElement(JF,{sectors:t,props:n,showLabels:r})}function XF(e){var{sectors:t,activeShape:n,inactiveShape:r,allOtherPieProps:i,shape:a,id:o}=e,s=Z(aA),c=Z(sA),l=Z(cA),{onMouseEnter:u,onClick:d,onMouseLeave:f}=i,p=MF(i,OF),m=sF(u,i.dataKey,o),h=cF(f),g=lF(d,i.dataKey,o);return t==null||t.length===0?null:w.createElement(w.Fragment,null,t.map((e,u)=>{if(e?.startAngle===0&&e?.endAngle===0&&t.length!==1)return null;var d=l==null||l===o,f=String(u)===s&&(c==null||i.dataKey===c)&&d,_=n&&f?n:s?r:null,v=FF(FF({},e),{},{stroke:e.stroke,tabIndex:-1,[Zp]:u,[Qp]:o});return w.createElement(fo,jF({key:`sector-${e?.startAngle}-${e?.endAngle}-${e.midAngle}-${u}`,tabIndex:-1,className:`recharts-pie-sector`},Oc(p,e,u),{onMouseEnter:m(e,u),onMouseLeave:h(e,u),onClick:g(e,u)}),w.createElement(oF,jF({option:a??_,index:u,shapeType:`sector`,isActive:f},v)))}))}function ZF(e){var{pieSettings:t,displayedData:n,cells:r,offset:i}=e,{cornerRadius:a,startAngle:o,endAngle:s,dataKey:c,nameKey:l,tooltipType:u}=t,d=Math.abs(t.minAngle),f=GF(o,s),p=Math.abs(f),m=n.length<=1?0:t.paddingAngle??0,h=n.filter(e=>Cp(e,c,0)!==0).length,g=(p>=360?h:h-1)*m,_=p-h*d-g,v=n.reduce((e,t)=>{var n=Cp(t,c,0);return e+(X(n)?n:0)},0),y;if(v>0){var b;y=n.map((e,n)=>{var s=Cp(e,c,0),p=Cp(e,l,n),h=WF(t,i,e),g=(X(s)?s:0)/v,y,x=FF(FF({},e),r&&r[n]&&r[n].props),S=x!=null&&`fill`in x&&typeof x.fill==`string`?x.fill:t.fill;y=n?b.endAngle+Xs(f)*m*(s===0?0:1):o;var C=y+Xs(f)*((s===0?0:d)+g*_),w=(y+C)/2,T=(h.innerRadius+h.outerRadius)/2,E=[{name:p,value:s,payload:x,dataKey:c,type:u,color:S,fill:S,graphicalItemId:t.id}],D=ay(h.cx,h.cy,T,w);return b=FF(FF(FF(FF({},t.presentationProps),{},{percent:g,cornerRadius:typeof a==`string`?parseFloat(a):a,name:p,tooltipPayload:E,midAngle:w,middleRadius:T,tooltipPosition:D},x),h),{},{value:s,dataKey:c,startAngle:y,endAngle:C,payload:x,paddingAngle:Xs(f)*m}),b})}return y}function QF(e){var{showLabels:t,sectors:n,children:r}=e,i=(0,w.useMemo)(()=>!t||!n?[]:n.map(e=>({value:e.value,payload:e.payload,clockWise:!1,parentViewBox:void 0,viewBox:{cx:e.cx,cy:e.cy,innerRadius:e.innerRadius,outerRadius:e.outerRadius,startAngle:e.startAngle,endAngle:e.endAngle,clockWise:!1},fill:e.fill})),[n,t]);return w.createElement(GN,{value:t?i:void 0},r)}function $F(e){var{props:t,previousSectorsRef:n,id:r}=e,{sectors:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,activeShape:l,inactiveShape:u,onAnimationStart:d,onAnimationEnd:f}=t,p=Dv(t,`recharts-pie-`),m=n.current,[h,g]=(0,w.useState)(!1),_=(0,w.useCallback)(()=>{typeof f==`function`&&f(),g(!1)},[f]),v=(0,w.useCallback)(()=>{typeof d==`function`&&d(),g(!0)},[d]);return w.createElement(QF,{showLabels:!h,sectors:i},w.createElement(Ev,{animationId:p,begin:o,duration:s,isActive:a,easing:c,onAnimationStart:v,onAnimationEnd:_,key:p},e=>{var a=[],o=(i&&i[0])?.startAngle??0;return i?.forEach((t,n)=>{var r=m&&m[n],i=n>0?(0,Ys.default)(t,`paddingAngle`,0):0;if(r){var s=ic(r.endAngle-r.startAngle,t.endAngle-t.startAngle,e),c=FF(FF({},t),{},{startAngle:o+i,endAngle:o+s+i});a.push(c),o=c.endAngle}else{var{endAngle:l,startAngle:u}=t,d=ic(0,l-u,e),f=FF(FF({},t),{},{startAngle:o+i,endAngle:o+d+i});a.push(f),o=f.endAngle}}),n.current=a,w.createElement(fo,null,w.createElement(XF,{sectors:a,activeShape:l,inactiveShape:u,allOtherPieProps:t,shape:t.shape,id:r}))}),w.createElement(YF,{showLabels:!h,sectors:i,props:t}),t.children)}var eI={animationBegin:400,animationDuration:1500,animationEasing:`ease`,cx:`50%`,cy:`50%`,dataKey:`value`,endAngle:360,fill:`#808080`,hide:!1,innerRadius:0,isAnimationActive:`auto`,label:!1,labelLine:!0,legendType:`rect`,minAngle:0,nameKey:`name`,outerRadius:`80%`,paddingAngle:0,rootTabIndex:0,startAngle:0,stroke:`#fff`,zIndex:cb.area};function tI(e){var{id:t}=e,n=MF(e,kF),{hide:r,className:i,rootTabIndex:a}=e,o=(0,w.useMemo)(()=>OP(e.children,nM),[e.children]),s=Z(e=>xP(e,t,o)),c=(0,w.useRef)(null),l=Ka(`recharts-pie`,i);return r||s==null?(c.current=null,w.createElement(fo,{tabIndex:a,className:l})):w.createElement(cj,{zIndex:e.zIndex},w.createElement(VF,{dataKey:e.dataKey,nameKey:e.nameKey,sectors:s,stroke:e.stroke,strokeWidth:e.strokeWidth,fill:e.fill,name:e.name,hide:e.hide,tooltipType:e.tooltipType,id:t,activeShape:e.activeShape}),w.createElement(fo,{tabIndex:a,className:l},w.createElement($F,{props:FF(FF({},n),{},{sectors:s}),previousSectorsRef:c,id:t})))}function nI(e){var t=Pc(e,eI),{id:n}=t,r=MF(t,AF),i=Qa(r);return w.createElement(gF,{id:n,type:`pie`},e=>w.createElement(w.Fragment,null,w.createElement(EF,{type:`pie`,id:e,data:r.data,dataKey:r.dataKey,hide:r.hide,angleAxisId:0,radiusAxisId:0,name:r.name,nameKey:r.nameKey,tooltipType:r.tooltipType,legendType:r.legendType,fill:r.fill,cx:r.cx,cy:r.cy,startAngle:r.startAngle,endAngle:r.endAngle,paddingAngle:r.paddingAngle,minAngle:r.minAngle,innerRadius:r.innerRadius,outerRadius:r.outerRadius,cornerRadius:r.cornerRadius,presentationProps:i,maxRadius:t.maxRadius}),w.createElement(zF,jF({},r,{id:e})),w.createElement(tI,jF({},r,{id:e}))))}var rI=nI;rI.displayName=`Pie`;var iI=[`points`];function aI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function oI(e){for(var t=1;t{var s=oI(oI(oI({r:3},o),d),{},{index:r,cx:e.x??void 0,cy:e.y??void 0,dataKey:a,value:e.value,payload:e.payload,points:t});return w.createElement(pI,{key:`dot-${r}`,option:n,dotProps:s,className:i})}),p={};return s&&c!=null&&(p.clipPath=`url(#clipPath-${u?``:`dots-`}${c})`),w.createElement(cj,{zIndex:l},w.createElement(fo,uI({className:r},p),f))}function gI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function _I(e){for(var t=1;t({top:e.top,bottom:e.bottom,left:e.left,right:e.right})),Gp,Kp],(e,t,n)=>{if(!(!e||t==null||n==null))return{x:e.left,y:e.top,width:Math.max(0,t-e.left-e.right),height:Math.max(0,n-e.top-e.bottom)}}),PI=()=>Z(NI),FI=()=>Z(fA);function II(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function LI(e){for(var t=1;t{var{point:t,childIndex:n,mainColor:r,activeDot:i,dataKey:a,clipPath:o}=e;if(i===!1||t.x==null||t.y==null)return null;var s=LI(LI(LI({},{index:n,dataKey:a,cx:t.x,cy:t.y,r:4,fill:r??`none`,strokeWidth:2,stroke:`#fff`,payload:t.payload,value:t.value}),$a(i)),Ec(i)),c=(0,w.isValidElement)(i)?(0,w.cloneElement)(i,s):typeof i==`function`?i(s):w.createElement(ZN,s);return w.createElement(fo,{className:`recharts-active-dot`,clipPath:o},c)};function HI(e){var{points:t,mainColor:n,activeDot:r,itemDataKey:i,clipPath:a,zIndex:o=cb.activeDot}=e,s=Z(aA),c=FI();if(t==null||c==null)return null;var l=t.find(e=>c.includes(e.payload));return oc(l)?null:w.createElement(cj,{zIndex:o},w.createElement(VI,{point:l,childIndex:Number(s),mainColor:n,dataKey:i,activeDot:r,clipPath:a}))}var UI=(e,t,n)=>{var r=n??e;if(!oc(r))return nc(r,t,0)},WI=(e,t,n)=>{var r={},i=e.filter(Nb),a=e.filter(e=>e.stackId==null),o=i.reduce((e,t)=>{var n=e[t.stackId];return n??=[],n.push(t),e[t.stackId]=n,e},r),s=Object.entries(o).map(e=>{var[r,i]=e;return{stackId:r,dataKeys:i.map(e=>e.dataKey),barSize:UI(t,n,i[0]?.barSize)}}),c=a.map(e=>({stackId:void 0,dataKeys:[e.dataKey].filter(e=>e!=null),barSize:UI(t,n,e.barSize)}));return[...s,...c]};function GI(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function KI(e){for(var t=1;te+(t.barSize||0),0);d+=(a-1)*o,d>=n&&(d-=(a-1)*o,o=0),d>=n&&u>0&&(l=!0,u*=.9,d=a*u);var f={offset:((n-d)/2>>0)-o,size:0};s=r.reduce((e,t)=>{var n={stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:f.offset+f.size+o,size:l?u:t.barSize??0}},r=[...e,n];return f=n.position,r},c)}else{var p=nc(t,n,0,!0);n-2*p-(a-1)*o<=0&&(o=0);var m=(n-2*p-(a-1)*o)/a;m>1&&(m>>=0);var h=$(i)?Math.min(m,i):m;s=r.reduce((e,t,n)=>[...e,{stackId:t.stackId,dataKeys:t.dataKeys,position:{offset:p+(m+o)*n+(m-h)/2,size:h}}],c)}return s}}var ZI=(e,t,n,r,i,a,o)=>{var s=oc(o)?t:o,c=XI(n,r,i===a?a:i,e,s);return i!==a&&c!=null&&(c=c.map(e=>KI(KI({},e),{},{position:KI(KI({},e.position),{},{offset:e.position.offset-i/2})}))),c},QI=(e,t)=>{var n=jb(t);if(!(!e||n==null||t==null)){var{stackId:r}=t;if(r!=null){var i=e[r];if(i){var{stackedData:a}=i;if(a)return a.find(e=>e.key===n)}}}},$I=(e,t)=>{if(!(e==null||t==null)){var n=e.find(e=>e.stackId===t.stackId&&t.dataKey!=null&&e.dataKeys.includes(t.dataKey));if(n!=null)return n.position}};function eL(e,t){return e&&typeof e==`object`&&`zIndex`in e&&typeof e.zIndex==`number`&&$(e.zIndex)?e.zIndex:t}var tL=e=>{var{chartData:t}=e,n=Al(),r=pm();return(0,w.useEffect)(()=>r?()=>{}:(n(Aj(t)),()=>{n(Aj(void 0))}),[t,n,r]),null},nL={x:0,y:0,width:0,height:0,padding:{top:0,right:0,bottom:0,left:0}},rL=Sf({name:`brush`,initialState:nL,reducers:{setBrushSettings(e,t){return t.payload==null?nL:t.payload}}}),{setBrushSettings:iL}=rL.actions,aL=rL.reducer;function oL(e){return(e%180+180)%180}var sL=function(e){var{width:t,height:n}=e,r=oL(arguments.length>1&&arguments[1]!==void 0?arguments[1]:0)*Math.PI/180,i=Math.atan(n/t),a=r>i&&r{e.dots.push(t.payload)},removeDot:(e,t)=>{var n=Ld(e).dots.findIndex(e=>e===t.payload);n!==-1&&e.dots.splice(n,1)},addArea:(e,t)=>{e.areas.push(t.payload)},removeArea:(e,t)=>{var n=Ld(e).areas.findIndex(e=>e===t.payload);n!==-1&&e.areas.splice(n,1)},addLine:(e,t)=>{e.lines.push(Zh(t.payload))},removeLine:(e,t)=>{var n=Ld(e).lines.findIndex(e=>e===t.payload);n!==-1&&e.lines.splice(n,1)}}}),{addDot:lL,removeDot:uL,addArea:dL,removeArea:fL,addLine:pL,removeLine:mL}=cL.actions,hL=cL.reducer,gL=(0,w.createContext)(void 0),_L=e=>{var{children:t}=e,[n]=(0,w.useState)(`${tc(`recharts`)}-clip`),r=PI();if(r==null)return null;var{x:i,y:a,width:o,height:s}=r;return w.createElement(gL.Provider,{value:n},w.createElement(`defs`,null,w.createElement(`clipPath`,{id:n},w.createElement(`rect`,{x:i,y:a,height:s,width:o}))),t)};function vL(e,t){if(t<1)return[];if(t===1)return e;for(var n=[],r=0;re*i)return!1;var a=n();return e*(t-e*a/2-r)>=0&&e*(t+e*a/2-i)<=0}function SL(e,t){return vL(e,t+1)}function CL(e,t,n,r,i){for(var a=(r||[]).slice(),{start:o,end:s}=t,c=0,l=1,u=o,d=function(){var t=r?.[c];if(t===void 0)return{v:vL(r,l)};var a=c,d,f=()=>(d===void 0&&(d=n(t,a)),d),p=t.coordinate,m=c===0||xL(e,p,f,u,s);m||(c=0,u=o,l+=1),m&&(u=p+e*(f()/2+i),c+=l)},f;l<=a.length;)if(f=d(),f)return f.v;return[]}function wL(e,t,n,r,i){var a=(r||[]).slice().length;if(a===0)return[];for(var{start:o,end:s}=t,c=1;c<=a;c++){for(var l=(a-1)%c,u=o,d=!0,f=function(){var t=r[m];if(t==null)return 0;var a=m,o,c=()=>(o===void 0&&(o=n(t,a)),o),f=t.coordinate,p=m===l||xL(e,f,c,u,s);if(!p)return d=!1,1;p&&(u=f+e*(c()/2+i))},p,m=l;m(u===void 0&&(u=n(r,t)),u);if(t===o-1){var f=e*(l.coordinate+e*d()/2-c);a[t]=l=EL(EL({},l),{},{tickCoord:f>0?l.coordinate-f*e:l.coordinate})}else a[t]=l=EL(EL({},l),{},{tickCoord:l.coordinate});l.tickCoord!=null&&xL(e,l.tickCoord,d,s,c)&&(c=l.tickCoord-e*(d()/2+i),a[t]=EL(EL({},l),{},{isShow:!0}))},u=o-1;u>=0;u--)if(l(u))continue;return a}function jL(e,t,n,r,i,a){var o=(r||[]).slice(),s=o.length,{start:c,end:l}=t;if(a){var u=r[s-1];if(u!=null){var d=n(u,s-1),f=e*(u.coordinate+e*d/2-l);o[s-1]=u=EL(EL({},u),{},{tickCoord:f>0?u.coordinate-f*e:u.coordinate}),u.tickCoord!=null&&xL(e,u.tickCoord,()=>d,c,l)&&(l=u.tickCoord-e*(d/2+i),o[s-1]=EL(EL({},u),{},{isShow:!0}))}}for(var p=a?s-1:s,m=function(t){var r=o[t];if(r==null)return 1;var a=r,s,u=()=>(s===void 0&&(s=n(r,t)),s);if(t===0){var d=e*(a.coordinate-e*u()/2-c);o[t]=a=EL(EL({},a),{},{tickCoord:d<0?a.coordinate-d*e:a.coordinate})}else o[t]=a=EL(EL({},a),{},{tickCoord:a.coordinate});a.tickCoord!=null&&xL(e,a.tickCoord,u,c,l)&&(c=a.tickCoord+e*(u()/2+i),o[t]=EL(EL({},a),{},{isShow:!0}))},h=0;h{var i=typeof l==`function`?l(e.value,r):e.value;return p===`width`?yL(vM(i,{fontSize:t,letterSpacing:n}),m,d):vM(i,{fontSize:t,letterSpacing:n})[p]},g=i[0],_=i[1],v=i.length>=2&&g!=null&&_!=null?Xs(_.coordinate-g.coordinate):1,y=bL(a,v,p);return c===`equidistantPreserveStart`?CL(v,y,h,i,o):c===`equidistantPreserveEnd`?wL(v,y,h,i,o):(f=c===`preserveStart`||c===`preserveStartEnd`?jL(v,y,h,i,o,c===`preserveStartEnd`):AL(v,y,h,i,o),f.filter(e=>e.isShow))}var NL=e=>{var{ticks:t,label:n,labelGapWithTick:r=5,tickSize:i=0,tickMargin:a=0}=e,o=0;if(t){Array.from(t).forEach(e=>{if(e){var t=e.getBoundingClientRect();t.width>o&&(o=t.width)}});var s=n?n.getBoundingClientRect().width:0,c=i+a,l=o+c+s+(n?r:0);return Math.round(l)}return 0},PL=Sf({name:`renderedTicks`,initialState:{xAxis:{},yAxis:{}},reducers:{setRenderedTicks:(e,t)=>{var{axisType:n,axisId:r,ticks:i}=t.payload;e[n][r]=Zh(i)},removeRenderedTicks:(e,t)=>{var{axisType:n,axisId:r}=t.payload;delete e[n][r]}}}),{setRenderedTicks:FL,removeRenderedTicks:IL}=PL.actions,LL=PL.reducer,RL=[`axisLine`,`width`,`height`,`className`,`hide`,`ticks`,`axisType`,`axisId`];function zL(e,t){if(e==null)return{};var n,r,i=BL(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;rr==null||n==null?lc:(i(FL({ticks:t.map(e=>({value:e.value,coordinate:e.coordinate,offset:e.offset,index:e.index})),axisId:r,axisType:n})),()=>{i(IL({axisId:r,axisType:n}))}),[i,t,r,n]),null}var eR=(0,w.forwardRef)((e,t)=>{var{ticks:n=[],tick:r,tickLine:i,stroke:a,tickFormatter:o,unit:s,padding:c,tickTextProps:l,orientation:u,mirror:d,x:f,y:p,width:m,height:h,tickSize:g,tickMargin:_,fontSize:v,letterSpacing:y,getTicksConfig:b,events:x,axisType:S,axisId:C}=e,T=ML(UL(UL({},b),{},{ticks:n}),v,y),E=Qa(b),D=$a(r),O=KM(E.textAnchor)?E.textAnchor:XL(u,d),k=ZL(u,d),A={};typeof i==`object`&&(A=i);var j=UL(UL({},E),{},{fill:`none`},A),M=T.map(e=>UL({entry:e},YL(e,f,p,m,h,u,g,d,_))),N=M.map(e=>{var{entry:t,line:n}=e;return w.createElement(fo,{className:`recharts-cartesian-axis-tick`,key:`tick-${t.value}-${t.coordinate}-${t.tickCoord}`},i&&w.createElement(`line`,VL({},j,n,{className:Ka(`recharts-cartesian-axis-tick-line`,(0,Ys.default)(i,`className`))})))}),P=M.map((e,t)=>{var{entry:n,tick:i}=e,u=UL(UL({},UL(UL(UL(UL({verticalAnchor:k},E),{},{textAnchor:O,stroke:`none`,fill:a},i),{},{index:t,payload:n,visibleTicksCount:T.length,tickFormatter:o,padding:c},l),{},{angle:l?.angle??E.angle??0})),D);return w.createElement(fo,VL({className:`recharts-cartesian-axis-tick-label`,key:`tick-label-${n.value}-${n.coordinate}-${n.tickCoord}`},Oc(x,n,t)),r&&w.createElement(QL,{option:r,tickProps:u,value:`${typeof o==`function`?o(n.value,t):n.value}${s||``}`}))});return w.createElement(`g`,{className:`recharts-cartesian-axis-ticks recharts-${S}-ticks`},w.createElement($L,{ticks:T,axisId:C,axisType:S}),P.length>0&&w.createElement(cj,{zIndex:cb.label},w.createElement(`g`,{className:`recharts-cartesian-axis-tick-labels recharts-${S}-tick-labels`,ref:t},P)),N.length>0&&w.createElement(`g`,{className:`recharts-cartesian-axis-tick-lines recharts-${S}-tick-lines`},N))}),tR=(0,w.forwardRef)((e,t)=>{var{axisLine:n,width:r,height:i,className:a,hide:o,ticks:s,axisType:c,axisId:l}=e,u=zL(e,RL),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(``),h=(0,w.useRef)(null);(0,w.useImperativeHandle)(t,()=>({getCalculatedWidth:()=>NL({ticks:h.current,label:e.labelRef?.current,labelGapWithTick:5,tickSize:e.tickSize,tickMargin:e.tickMargin})}));var g=(0,w.useCallback)(e=>{if(e){var t=e.getElementsByClassName(`recharts-cartesian-axis-tick-value`);h.current=t;var n=t[0];if(n){var r=window.getComputedStyle(n),i=r.fontSize,a=r.letterSpacing;(i!==d||a!==p)&&(f(i),m(a))}}},[d,p]);return o||r!=null&&r<=0||i!=null&&i<=0?null:w.createElement(cj,{zIndex:e.zIndex},w.createElement(fo,{className:Ka(`recharts-cartesian-axis`,a)},w.createElement(JL,{x:e.x,y:e.y,width:r,height:i,orientation:e.orientation,mirror:e.mirror,axisLine:n,otherSvgProps:Qa(e)}),w.createElement(eR,{ref:g,axisType:c,events:u,fontSize:d,getTicksConfig:e,height:e.height,letterSpacing:p,mirror:e.mirror,orientation:e.orientation,padding:e.padding,stroke:e.stroke,tick:e.tick,tickFormatter:e.tickFormatter,tickLine:e.tickLine,tickMargin:e.tickMargin,tickSize:e.tickSize,tickTextProps:e.tickTextProps,ticks:s,unit:e.unit,width:e.width,x:e.x,y:e.y,axisId:l}),w.createElement(xN,{x:e.x,y:e.y,width:e.width,height:e.height,lowerWidth:e.width,upperWidth:e.width},w.createElement(FN,{label:e.label,labelRef:e.labelRef}),e.children)))}),nR=w.forwardRef((e,t)=>{var n=Pc(e,qL);return w.createElement(tR,VL({},n,{ref:t}))});nR.displayName=`CartesianAxis`;var rR=[`x1`,`y1`,`x2`,`y2`,`key`],iR=[`offset`],aR=[`xAxisId`,`yAxisId`],oR=[`xAxisId`,`yAxisId`];function sR(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function cR(e){for(var t=1;t{var{fill:t}=e;if(!t||t===`none`)return null;var{fillOpacity:n,x:r,y:i,width:a,height:o,ry:s}=e;return w.createElement(`rect`,{x:r,y:i,ry:s,width:a,height:o,stroke:`none`,fill:t,fillOpacity:n,className:`recharts-cartesian-grid-bg`})};function gR(e){var{option:t,lineItemProps:n}=e,r;if(w.isValidElement(t))r=w.cloneElement(t,n);else if(typeof t==`function`)r=t(n);else{var{x1:i,y1:a,x2:o,y2:s,key:c}=n,l=Qa(pR(n,rR))??{},{offset:u}=l,d=pR(l,iR);r=w.createElement(`line`,fR({},d,{x1:i,y1:a,x2:o,y2:s,fill:`none`,key:c}))}return r}function _R(e){var{x:t,width:n,horizontal:r=!0,horizontalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=pR(e,aR),c=i.map((e,i)=>{var a=cR(cR({},s),{},{x1:t,y1:e,x2:t+n,y2:e,key:`line-${i}`,index:i});return w.createElement(gR,{key:`line-${i}`,option:r,lineItemProps:a})});return w.createElement(`g`,{className:`recharts-cartesian-grid-horizontal`},c)}function vR(e){var{y:t,height:n,vertical:r=!0,verticalPoints:i}=e;if(!r||!i||!i.length)return null;var{xAxisId:a,yAxisId:o}=e,s=pR(e,oR),c=i.map((e,i)=>{var a=cR(cR({},s),{},{x1:e,y1:t,x2:e,y2:t+n,key:`line-${i}`,index:i});return w.createElement(gR,{option:r,lineItemProps:a,key:`line-${i}`})});return w.createElement(`g`,{className:`recharts-cartesian-grid-vertical`},c)}function yR(e){var{horizontalFill:t,fillOpacity:n,x:r,y:i,width:a,height:o,horizontalPoints:s,horizontal:c=!0}=e;if(!c||!t||!t.length||s==null)return null;var l=s.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,s)=>{var c=l[s+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=s%t.length;return w.createElement(`rect`,{key:`react-${s}`,y:e,x:r,height:u,width:a,stroke:`none`,fill:t[d],fillOpacity:n,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-horizontal`},u)}function bR(e){var{vertical:t=!0,verticalFill:n,fillOpacity:r,x:i,y:a,width:o,height:s,verticalPoints:c}=e;if(!t||!n||!n.length)return null;var l=c.map(e=>Math.round(e+i-i)).sort((e,t)=>e-t);i!==l[0]&&l.unshift(0);var u=l.map((e,t)=>{var c=l[t+1],u=c==null?i+o-e:c-e;if(u<=0)return null;var d=t%n.length;return w.createElement(`rect`,{key:`react-${t}`,x:e,y:a,width:u,height:s,stroke:`none`,fill:n[d],fillOpacity:r,className:`recharts-cartesian-grid-bg`})});return w.createElement(`g`,{className:`recharts-cartesian-gridstripes-vertical`},u)}var xR=(e,t)=>{var{xAxis:n,width:r,height:i,offset:a}=e;return Ep(ML(cR(cR(cR({},qL),n),{},{ticks:Dp(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.left,a.left+a.width,t)},SR=(e,t)=>{var{yAxis:n,width:r,height:i,offset:a}=e;return Ep(ML(cR(cR(cR({},qL),n),{},{ticks:Dp(n,!0),viewBox:{x:0,y:0,width:r,height:i}})),a.top,a.top+a.height,t)},CR={horizontal:!0,vertical:!0,horizontalPoints:[],verticalPoints:[],stroke:`#ccc`,fill:`none`,verticalFill:[],horizontalFill:[],xAxisId:0,yAxisId:0,syncWithTicks:!1,zIndex:cb.grid};function wR(e){var t=qm(),n=Jm(),r=Km(),i=cR(cR({},Pc(e,CR)),{},{x:X(e.x)?e.x:r.left,y:X(e.y)?e.y:r.top,width:X(e.width)?e.width:r.width,height:X(e.height)?e.height:r.height}),{xAxisId:a,yAxisId:o,x:s,y:c,width:l,height:u,syncWithTicks:d,horizontalValues:f,verticalValues:p}=i,m=pm(),h=Z(e=>IO(e,`xAxis`,a,m)),g=Z(e=>IO(e,`yAxis`,o,m));if(!_p(l)||!_p(u)||!X(s)||!X(c))return null;var _=i.verticalCoordinatesGenerator||xR,v=i.horizontalCoordinatesGenerator||SR,{horizontalPoints:y,verticalPoints:b}=i;if((!y||!y.length)&&typeof v==`function`){var x=f&&f.length,S=v({yAxis:g?cR(cR({},g),{},{ticks:x?f:g.ticks}):void 0,width:t??l,height:n??u,offset:r},x?!0:d);xm(Array.isArray(S),`horizontalCoordinatesGenerator should return Array but instead it returned [${typeof S}]`),Array.isArray(S)&&(y=S)}if((!b||!b.length)&&typeof _==`function`){var C=p&&p.length,T=_({xAxis:h?cR(cR({},h),{},{ticks:C?p:h.ticks}):void 0,width:t??l,height:n??u,offset:r},C?!0:d);xm(Array.isArray(T),`verticalCoordinatesGenerator should return Array but instead it returned [${typeof T}]`),Array.isArray(T)&&(b=T)}return w.createElement(cj,{zIndex:i.zIndex},w.createElement(`g`,{className:`recharts-cartesian-grid`},w.createElement(hR,{fill:i.fill,fillOpacity:i.fillOpacity,x:i.x,y:i.y,width:i.width,height:i.height,ry:i.ry}),w.createElement(yR,fR({},i,{horizontalPoints:y})),w.createElement(bR,fR({},i,{verticalPoints:b})),w.createElement(_R,fR({},i,{offset:r,horizontalPoints:y,xAxis:h,yAxis:g})),w.createElement(vR,fR({},i,{offset:r,verticalPoints:b,xAxis:h,yAxis:g}))))}wR.displayName=`CartesianGrid`;var TR=Sf({name:`errorBars`,initialState:{},reducers:{addErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]||(e[n]=[]),e[n].push(r)},replaceErrorBar:(e,t)=>{var{itemId:n,prev:r,next:i}=t.payload;e[n]&&(e[n]=e[n].map(e=>e.dataKey===r.dataKey&&e.direction===r.direction?i:e))},removeErrorBar:(e,t)=>{var{itemId:n,errorBar:r}=t.payload;e[n]&&(e[n]=e[n].filter(e=>e.dataKey!==r.dataKey||e.direction!==r.direction))}}}),{addErrorBar:ER,replaceErrorBar:DR,removeErrorBar:OR}=TR.actions,kR=TR.reducer,AR=[`children`];function jR(e,t){if(e==null)return{};var n,r,i=MR(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r({x:0,y:0,value:0}),errorBarOffset:0});function PR(e){var{children:t}=e,n=jR(e,AR);return w.createElement(NR.Provider,{value:n},t)}function FR(e,t){var n=Z(t=>zE(t,e)),r=Z(e=>HE(e,t)),i=n?.allowDataOverflow??LE.allowDataOverflow,a=r?.allowDataOverflow??BE.allowDataOverflow;return{needClip:i||a,needClipX:i,needClipY:a}}function IR(e){var{xAxisId:t,yAxisId:n,clipPathId:r}=e,i=PI(),{needClipX:a,needClipY:o,needClip:s}=FR(t,n);if(!s||!i)return null;var{x:c,y:l,width:u,height:d}=i;return w.createElement(`clipPath`,{id:`clipPath-${r}`},w.createElement(`rect`,{x:a?c:c-u/2,y:o?l:l-d/2,width:a?u:u*2,height:o?d:d*2}))}function LR(e){var t=$a(e),n=3,r=2;if(t!=null){var{r:i,strokeWidth:a}=t,o=Number(i),s=Number(a);return(Number.isNaN(o)||o<0)&&(o=n),(Number.isNaN(s)||s<0)&&(s=r),{r:o,strokeWidth:s}}return{r:n,strokeWidth:r}}function RR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.xAxisId??0}function zR(e,t){return e.graphicalItems.cartesianItems.find(e=>e.id===t)?.yAxisId??0}var BR=(e,t,n)=>zO(e,`xAxis`,RR(e,t),n),VR=(e,t,n)=>RO(e,`xAxis`,RR(e,t),n),HR=(e,t,n)=>zO(e,`yAxis`,zR(e,t),n),UR=(e,t,n)=>RO(e,`yAxis`,zR(e,t),n),WR=Q([Xm,BR,HR,VR,UR],(e,t,n,r,i)=>Tp(e,`xAxis`)?Bp(t,r,!1):Bp(n,i,!1)),GR=Q([XE,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`area`).find(e=>e.id===t)),KR=e=>Tp(Xm(e),`xAxis`)?`yAxis`:`xAxis`,qR=(e,t)=>KR(e)===`yAxis`?zR(e,t):RR(e,t),JR=Q([Xm,BR,HR,VR,UR,Q([GR,(e,t,n)=>bD(e,KR(e),qR(e,t),n)],(e,t)=>{if(!(e==null||t==null)){var{stackId:n}=e,r=jb(e);if(!(n==null||r==null)){var i=(t[n]?.stackedData)?.find(e=>e.key===r);if(i!=null)return i.map(e=>[e[0],e[1]])}}}),Iy,WR,GR,sb],(e,t,n,r,i,a,o,s,c,l)=>{var{chartData:u,dataStartIndex:d,dataEndIndex:f}=o;if(!(c==null||e!==`horizontal`&&e!==`vertical`||t==null||n==null||r==null||i==null||r.length===0||i.length===0||s==null)){var{data:p}=c,m=p&&p.length>0?p:u?.slice(d,f+1);if(m!=null)return bz({layout:e,xAxis:t,yAxis:n,xAxisTicks:r,yAxisTicks:i,dataStartIndex:d,areaSettings:c,stackedData:a,displayedData:m,chartBaseValue:l,bandSize:s})}}),YR=[`id`],XR=[`activeDot`,`animationBegin`,`animationDuration`,`animationEasing`,`connectNulls`,`dot`,`fill`,`fillOpacity`,`hide`,`isAnimationActive`,`legendType`,`stroke`,`xAxisId`,`yAxisId`];function ZR(){return ZR=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,stroke:r,fill:i,legendType:a,hide:o}=e;return[{inactive:o,dataKey:t,type:a,color:az(r,i),value:Hp(n,t),payload:e}]},sz=w.memo(e=>{var{dataKey:t,data:n,stroke:r,strokeWidth:i,fill:a,name:o,hide:s,unit:c,tooltipType:l,id:u}=e,d={dataDefinedOnItem:n,getPosition:lc,settings:{stroke:r,strokeWidth:i,fill:a,dataKey:t,nameKey:void 0,name:Hp(o,t),hide:s,type:l,color:az(r,a),unit:c,graphicalItemId:u}};return w.createElement(uF,{tooltipEntrySettings:d})});function cz(e){var{clipPathId:t,points:n,props:r}=e,{needClip:i,dot:a,dataKey:o}=r,s=Qa(r);return w.createElement(hI,{points:n,dot:a,className:`recharts-area-dots`,dotClassName:`recharts-area-dot`,dataKey:o,baseProps:s,needClip:i,clipPathId:t})}function lz(e){var{showLabels:t,children:n,points:r}=e,i=r.map(e=>{var t={x:e.x??0,y:e.y??0,width:0,lowerWidth:0,upperWidth:0,height:0};return tz(tz({},t),{},{value:e.value,payload:e.payload,parentViewBox:void 0,viewBox:t,fill:void 0})});return w.createElement(UN,{value:t?i:void 0},n)}function uz(e){var{points:t,baseLine:n,needClip:r,clipPathId:i,props:a}=e,{layout:o,type:s,stroke:c,connectNulls:l,isRange:u}=a,{id:d}=a,f=QR(a,YR),p=Qa(f),m=eo(f);return w.createElement(w.Fragment,null,t?.length>1&&w.createElement(fo,{clipPath:r?`url(#clipPath-${i})`:void 0},w.createElement(k_,ZR({},m,{id:d,points:t,connectNulls:l,type:s,baseLine:n,layout:o,stroke:`none`,className:`recharts-area-area`})),c!==`none`&&w.createElement(k_,ZR({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:t})),c!==`none`&&u&&Array.isArray(n)&&w.createElement(k_,ZR({},p,{className:`recharts-area-curve`,layout:o,type:s,connectNulls:l,fill:`none`,points:n}))),w.createElement(cz,{points:t,props:f,clipPathId:i}))}function dz(e){var{alpha:t,baseLine:n,points:r,strokeWidth:i}=e,a=r[0]?.y,o=r[r.length-1]?.y;if(!$(a)||!$(o))return null;var s=t*Math.abs(a-o),c=Math.max(...r.map(e=>e.x||0));return X(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.x||0),c)),X(c)?w.createElement(`rect`,{x:0,y:ae.y||0));return X(n)?c=Math.max(n,c):n&&Array.isArray(n)&&n.length&&(c=Math.max(...n.map(e=>e.y||0),c)),X(c)?w.createElement(`rect`,{x:a({points:o,baseLine:s}),[o,s]),`recharts-area-`),h=Qm(),[g,_]=(0,w.useState)(!1),v=!g,y=(0,w.useCallback)(()=>{typeof p==`function`&&p(),_(!1)},[p]),b=(0,w.useCallback)(()=>{typeof f==`function`&&f(),_(!0)},[f]);if(h==null)return null;var x=i.current,S=a.current;return w.createElement(lz,{showLabels:v,points:o},r.children,w.createElement(Ev,{animationId:m,begin:l,duration:u,isActive:c,easing:d,onAnimationEnd:y,onAnimationStart:b,key:m},e=>{if(x){var l=x.length/o.length,u=e===1?o:o.map((t,n)=>{var r=Math.floor(n*l);if(x[r]){var i=x[r];return tz(tz({},t),{},{x:ic(i.x,t.x,e),y:ic(i.y,t.y,e)})}return t}),d=X(s)?ic(S,s,e):oc(s)||Zs(s)?ic(S,0,e):s.map((t,n)=>{var r=Math.floor(n*l);if(Array.isArray(S)&&S[r]){var i=S[r];return tz(tz({},t),{},{x:ic(i.x,t.x,e),y:ic(i.y,t.y,e)})}return t});return e>0&&(i.current=u,a.current=d),w.createElement(uz,{points:u,baseLine:d,needClip:t,clipPathId:n,props:r})}return e>0&&(i.current=o,a.current=s),w.createElement(fo,null,c&&w.createElement(`defs`,null,w.createElement(`clipPath`,{id:`animationClipPath-${n}`},w.createElement(pz,{alpha:e,points:o,baseLine:s,layout:h,strokeWidth:r.strokeWidth}))),w.createElement(fo,{clipPath:`url(#animationClipPath-${n})`},w.createElement(uz,{points:o,baseLine:s,needClip:t,clipPathId:n,props:r})))}),w.createElement(YN,{label:r.label}))}function hz(e){var{needClip:t,clipPathId:n,props:r}=e,i=(0,w.useRef)(null),a=(0,w.useRef)();return w.createElement(mz,{needClip:t,clipPathId:n,props:r,previousPointsRef:i,previousBaselineRef:a})}var gz=class extends w.PureComponent{render(){var{hide:e,dot:t,points:n,className:r,top:i,left:a,needClip:o,xAxisId:s,yAxisId:c,width:l,height:u,id:d,baseLine:f,zIndex:p}=this.props;if(e)return null;var m=Ka(`recharts-area`,r),h=d,{r:g,strokeWidth:_}=LR(t),v=kP(t),y=g*2+_,b=o?`url(#clipPath-${v?``:`dots-`}${h})`:void 0;return w.createElement(cj,{zIndex:p},w.createElement(fo,{className:m},o&&w.createElement(`defs`,null,w.createElement(IR,{clipPathId:h,xAxisId:s,yAxisId:c}),!v&&w.createElement(`clipPath`,{id:`clipPath-dots-${h}`},w.createElement(`rect`,{x:a-y/2,y:i-y/2,width:l+y,height:u+y}))),w.createElement(hz,{needClip:o,clipPathId:h,props:this.props})),w.createElement(HI,{points:n,mainColor:az(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}),this.props.isRange&&Array.isArray(f)&&w.createElement(HI,{points:f,mainColor:az(this.props.stroke,this.props.fill),itemDataKey:this.props.dataKey,activeDot:this.props.activeDot,clipPath:b}))}},_z={activeDot:!0,animationBegin:0,animationDuration:1500,animationEasing:`ease`,connectNulls:!1,dot:!1,fill:`#3182bd`,fillOpacity:.6,hide:!1,isAnimationActive:`auto`,legendType:`line`,stroke:`#3182bd`,strokeWidth:1,type:`linear`,label:!1,xAxisId:0,yAxisId:0,zIndex:cb.area};function vz(e){var{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,connectNulls:a,dot:o,fill:s,fillOpacity:c,hide:l,isAnimationActive:u,legendType:d,stroke:f,xAxisId:p,yAxisId:m}=e,h=QR(e,XR),g=Zm(),_=kA(),{needClip:v}=FR(p,m),y=pm(),{points:b,isRange:x,baseLine:S}=Z(t=>JR(t,e.id,y))??{},C=PI();if(g!==`horizontal`&&g!==`vertical`||C==null||_!==`AreaChart`&&_!==`ComposedChart`)return null;var{height:T,width:E,x:D,y:O}=C;return!b||!b.length?null:w.createElement(gz,ZR({},h,{activeDot:t,animationBegin:n,animationDuration:r,animationEasing:i,baseLine:S,connectNulls:a,dot:o,fill:s,fillOpacity:c,height:T,hide:l,layout:g,isAnimationActive:u,isRange:x,legendType:d,needClip:v,points:b,stroke:f,width:E,left:D,top:O,xAxisId:p,yAxisId:m}))}var yz=(e,t,n,r,i)=>{var a=n??t;if(X(a))return a;var o=e===`horizontal`?i:r,s=o.scale.domain();if(o.type===`number`){var c=Math.max(s[0],s[1]),l=Math.min(s[0],s[1]);return a===`dataMin`?l:a===`dataMax`||c<0?c:Math.max(Math.min(s[0],s[1]),0)}return a===`dataMin`?s[0]:a===`dataMax`?s[1]:s[0]};function bz(e){var{areaSettings:{connectNulls:t,baseValue:n,dataKey:r},stackedData:i,layout:a,chartBaseValue:o,xAxis:s,yAxis:c,displayedData:l,dataStartIndex:u,xAxisTicks:d,yAxisTicks:f,bandSize:p}=e,m=i&&i.length,h=yz(a,o,n,s,c),g=a===`horizontal`,_=!1,v=l.map((e,n)=>{var a;if(m)a=i[u+n];else{var o=Cp(e,r);Array.isArray(o)?(a=o,_=!0):a=[h,o]}var l=a?.[1]??null,v=l==null||m&&!t&&Cp(e,r)==null;return g?{x:Mp({axis:s,ticks:d,bandSize:p,entry:e,index:n}),y:v?null:c.scale.map(l)??null,value:a,payload:e}:{x:v?null:s.scale.map(l)??null,y:Mp({axis:c,ticks:f,bandSize:p,entry:e,index:n}),value:a,payload:e}});return{points:v,baseLine:(m||_?v.map(e=>{var t=Array.isArray(e.value)?e.value[0]:null;return g?{x:e.x,y:t!=null&&e.y!=null?c.scale.map(t)??null:null,payload:e.payload}:{x:t==null?null:s.scale.map(t)??null,y:e.y,payload:e.payload}}):g?c.scale.map(h):s.scale.map(h))??0,isRange:_}}function xz(e){var t=Pc(e,_z),n=pm();return w.createElement(gF,{id:t.id,type:`area`},e=>w.createElement(w.Fragment,null,w.createElement(dF,{legendPayload:oz(t)}),w.createElement(sz,{dataKey:t.dataKey,data:t.data,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(TF,{type:`area`,id:e,data:t.data,dataKey:t.dataKey,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,stackId:jp(t.stackId),hide:t.hide,barSize:void 0,baseValue:t.baseValue,isPanorama:n,connectNulls:t.connectNulls}),w.createElement(vz,ZR({},t,{id:e}))))}var Sz=w.memo(xz,Cg);Sz.displayName=`Area`;var Cz=!0,wz=`Invariant failed`;function Tz(e,t){if(!e){if(Cz)throw Error(wz);var n=typeof t==`function`?t():t,r=n?`${wz}: ${n}`:wz;throw Error(r)}}function Ez(){return Ez=Object.assign?Object.assign.bind():function(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:0;return(n,r)=>{if(X(e))return e;var i=X(n)||oc(n);return i?e(n,r):(!i&&Tz(!1,`minPointSize callback function received a value with type of ${typeof n}. Currently only numbers or null/undefined are supported.`),t)}},kz=(e,t,n)=>n,Az=Q([XE,(e,t)=>t],(e,t)=>e.filter(e=>e.type===`bar`).find(e=>e.id===t)),jz=Q([Az],e=>e?.maxBarSize),Mz=(e,t,n,r)=>r,Nz=Q([Xm,XE,RR,zR,kz],(e,t,n,r,i)=>t.filter(t=>e===`horizontal`?t.xAxisId===n:t.yAxisId===r).filter(e=>e.isPanorama===i).filter(e=>e.hide===!1).filter(e=>e.type===`bar`)),Pz=(e,t,n)=>{var r=Xm(e),i=RR(e,t),a=zR(e,t);if(!(i==null||a==null))return r===`horizontal`?bD(e,`yAxis`,a,n):bD(e,`xAxis`,i,n)},Fz=Q([Nz,eb,(e,t)=>{var n=Xm(e),r=RR(e,t),i=zR(e,t);if(!(r==null||i==null))return n===`horizontal`?NO(e,`xAxis`,r):NO(e,`yAxis`,i)}],WI),Iz=(e,t,n)=>{var r=Az(e,t);if(r==null)return 0;var i=RR(e,t),a=zR(e,t);if(i==null||a==null)return 0;var o=Xm(e),s=Zy(e),{maxBarSize:c}=r,l=oc(c)?s:c,u,d;return o===`horizontal`?(u=zO(e,`xAxis`,i,n),d=RO(e,`xAxis`,i,n)):(u=zO(e,`yAxis`,a,n),d=RO(e,`yAxis`,a,n)),Bp(u,d,!0)??l??0},Lz=(e,t,n)=>{var r=Xm(e),i=RR(e,t),a=zR(e,t);if(!(i==null||a==null)){var o,s;return r===`horizontal`?(o=zO(e,`xAxis`,i,n),s=RO(e,`xAxis`,i,n)):(o=zO(e,`yAxis`,a,n),s=RO(e,`yAxis`,a,n)),Bp(o,s)}},Rz=Q([lm,dm,(e,t,n)=>{var r=RR(e,t);if(r!=null)return zO(e,`xAxis`,r,n)},(e,t,n)=>{var r=zR(e,t);if(r!=null)return zO(e,`yAxis`,r,n)},(e,t,n)=>{var r=RR(e,t);if(r!=null)return RO(e,`xAxis`,r,n)},(e,t,n)=>{var r=zR(e,t);if(r!=null)return RO(e,`yAxis`,r,n)},Q([Q([Fz,Zy,Qy,$y,Iz,Lz,jz],ZI),Az],$I),Xm,Iy,Lz,Q([Pz,Az],QI),Az,Mz],(e,t,n,r,i,a,o,s,c,l,u,d,f)=>{var{chartData:p,dataStartIndex:m,dataEndIndex:h}=c;if(!(d==null||o==null||t==null||s!==`horizontal`&&s!==`vertical`||n==null||r==null||i==null||a==null||l==null)){var{data:g}=d,_=g!=null&&g.length>0?g:p?.slice(m,h+1);if(_!=null)return bB({layout:s,barSettings:d,pos:o,parentViewBox:t,bandSize:l,xAxis:n,yAxis:r,xAxisTicks:i,yAxisTicks:a,stackedData:u,displayedData:_,offset:e,cells:f,dataStartIndex:m})}}),zz=[`index`];function Bz(){return Bz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var t=(0,w.useContext)(Uz);if(t!=null)return t.stackId;if(e!=null)return jp(e)},Gz=(e,t)=>`recharts-bar-stack-clip-path-${e}-${t}`,Kz=e=>{var t=(0,w.useContext)(Uz);if(t!=null){var{stackId:n}=t;return`url(#${Gz(n,e)})`}},qz=e=>{var{index:t}=e,n=Vz(e,zz),r=Kz(t);return w.createElement(fo,Bz({className:`recharts-bar-stack-layer`,clipPath:r},n))},Jz=[`onMouseEnter`,`onMouseLeave`,`onClick`],Yz=[`value`,`background`,`tooltipPosition`],Xz=[`id`],Zz=[`onMouseEnter`,`onClick`,`onMouseLeave`];function Qz(){return Qz=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var{dataKey:t,name:n,fill:r,legendType:i,hide:a}=e;return[{inactive:a,dataKey:t,type:i,color:r,value:Hp(n,t),payload:e}]},sB=w.memo(e=>{var{dataKey:t,stroke:n,strokeWidth:r,fill:i,name:a,hide:o,unit:s,tooltipType:c,id:l}=e,u={dataDefinedOnItem:void 0,getPosition:lc,settings:{stroke:n,strokeWidth:r,fill:i,dataKey:t,nameKey:void 0,name:Hp(a,t),hide:o,type:c,color:i,unit:s,graphicalItemId:l}};return w.createElement(uF,{tooltipEntrySettings:u})});function cB(e){var t=Z(aA),{data:n,dataKey:r,background:i,allOtherBarProps:a}=e,{onMouseEnter:o,onMouseLeave:s,onClick:c}=a,l=iB(a,Jz),u=sF(o,r,a.id),d=cF(s),f=lF(c,r,a.id);if(!i||n==null)return null;var p=$a(i);return w.createElement(cj,{zIndex:eL(i,cb.barBackground)},n.map((e,n)=>{var{value:a,background:o,tooltipPosition:s}=e,c=iB(e,Yz);if(!o)return null;var m=u(e,n),h=d(e,n),g=f(e,n),_=eB(eB(eB(eB(eB({option:i,isActive:String(n)===t},c),{},{fill:`#eee`},o),p),Oc(l,e,n)),{},{onMouseEnter:m,onMouseLeave:h,onClick:g,dataKey:r,index:n,className:`recharts-bar-background-rectangle`});return w.createElement(Dz,Qz({key:`background-bar-${n}`},_))}))}function lB(e){var{showLabels:t,children:n,rects:r}=e,i=r?.map(e=>{var t={x:e.x,y:e.y,width:e.width,lowerWidth:e.width,upperWidth:e.width,height:e.height};return eB(eB({},t),{},{value:e.value,payload:e.payload,parentViewBox:e.parentViewBox,viewBox:t,fill:e.fill})});return w.createElement(UN,{value:t?i:void 0},n)}function uB(e){var{shape:t,activeBar:n,baseProps:r,entry:i,index:a,dataKey:o}=e,s=Z(aA),c=Z(sA),l=n&&String(i.originalDataIndex)===s&&(c==null||o===c),[u,d]=(0,w.useState)(!1),[f,p]=(0,w.useState)(!1);(0,w.useEffect)(()=>{var e;return l?(d(!0),e=requestAnimationFrame(()=>{p(!0)})):p(!1),()=>{cancelAnimationFrame(e)}},[l]);var m=(0,w.useCallback)(()=>{l||d(!1)},[l]),h=l&&f,g=l||u,_=l?n===!0?t:n:t,v=w.createElement(Dz,Qz({},r,{name:String(r.name)},i,{isActive:h,option:_,index:a,dataKey:o,onTransitionEnd:m}));return g?w.createElement(cj,{zIndex:cb.activeBar},w.createElement(qz,{index:i.originalDataIndex},v)):v}function dB(e){var{shape:t,baseProps:n,entry:r,index:i,dataKey:a}=e;return w.createElement(Dz,Qz({},n,{name:String(n.name)},r,{isActive:!1,option:t,index:i,dataKey:a}))}function fB(e){var{data:t,props:n}=e,r=Qa(n)??{},{id:i}=r,a=iB(r,Xz),{shape:o,dataKey:s,activeBar:c}=n,{onMouseEnter:l,onClick:u,onMouseLeave:d}=n,f=iB(n,Zz),p=sF(l,s,i),m=cF(d),h=lF(u,s,i);return t?w.createElement(w.Fragment,null,t.map((e,t)=>w.createElement(qz,Qz({index:e.originalDataIndex,key:`rectangle-${e?.x}-${e?.y}-${e?.value}-${t}`,className:`recharts-bar-rectangle`},Oc(f,e,t),{onMouseEnter:p(e,t),onMouseLeave:m(e,t),onClick:h(e,t)}),c?w.createElement(uB,{shape:o,activeBar:c,baseProps:a,entry:e,index:t,dataKey:s}):w.createElement(dB,{shape:o,baseProps:a,entry:e,index:t,dataKey:s})))):null}function pB(e){var{props:t,previousRectanglesRef:n}=e,{data:r,layout:i,isAnimationActive:a,animationBegin:o,animationDuration:s,animationEasing:c,onAnimationEnd:l,onAnimationStart:u}=t,d=n.current,f=Dv(t,`recharts-bar-`),[p,m]=(0,w.useState)(!1),h=!p,g=(0,w.useCallback)(()=>{typeof l==`function`&&l(),m(!1)},[l]),_=(0,w.useCallback)(()=>{typeof u==`function`&&u(),m(!0)},[u]);return w.createElement(lB,{showLabels:h,rects:r},w.createElement(Ev,{animationId:f,begin:o,duration:s,isActive:a,easing:c,onAnimationEnd:g,onAnimationStart:_,key:f},e=>{var a=e===1?r:r?.map((t,n)=>{var r=d&&d[n];if(r)return eB(eB({},t),{},{x:ic(r.x,t.x,e),y:ic(r.y,t.y,e),width:ic(r.width,t.width,e),height:ic(r.height,t.height,e)});if(i===`horizontal`){var a=ic(0,t.height,e),o=ic(t.stackedBarStart,t.y,e);return eB(eB({},t),{},{y:o,height:a})}var s=ic(0,t.width,e),c=ic(t.stackedBarStart,t.x,e);return eB(eB({},t),{},{width:s,x:c})});return e>0&&(n.current=a??null),a==null?null:w.createElement(fo,null,w.createElement(fB,{props:t,data:a}))}),w.createElement(YN,{label:t.label}),t.children)}function mB(e){var t=(0,w.useRef)(null);return w.createElement(pB,{previousRectanglesRef:t,props:e})}var hB=0,gB=(e,t)=>{var n=Array.isArray(e.value)?e.value[1]:e.value;return{x:e.x,y:e.y,value:n,errorVal:Cp(e,t)}},_B=class extends w.PureComponent{render(){var{hide:e,data:t,dataKey:n,className:r,xAxisId:i,yAxisId:a,needClip:o,background:s,id:c}=this.props;if(e||t==null)return null;var l=Ka(`recharts-bar`,r),u=c;return w.createElement(fo,{className:l,id:c},o&&w.createElement(`defs`,null,w.createElement(IR,{clipPathId:u,xAxisId:i,yAxisId:a})),w.createElement(fo,{className:`recharts-bar-rectangles`,clipPath:o?`url(#clipPath-${u})`:void 0},w.createElement(cB,{data:t,dataKey:n,background:s,allOtherBarProps:this.props}),w.createElement(mB,this.props)))}},vB={activeBar:!1,animationBegin:0,animationDuration:400,animationEasing:`ease`,background:!1,hide:!1,isAnimationActive:`auto`,label:!1,legendType:`rect`,minPointSize:hB,xAxisId:0,yAxisId:0,zIndex:cb.bar};function yB(e){var{xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u}=e,{needClip:d}=FR(t,n),f=Zm(),p=pm(),m=OP(e.children,nM),h=Z(t=>Rz(t,e.id,p,m));if(f!==`vertical`&&f!==`horizontal`)return null;var g,_=h?.[0];return g=_==null||_.height==null||_.width==null?0:f===`vertical`?_.height/2:_.width/2,w.createElement(PR,{xAxisId:t,yAxisId:n,data:h,dataPointFormatter:gB,errorBarOffset:g},w.createElement(_B,Qz({},e,{layout:f,needClip:d,data:h,xAxisId:t,yAxisId:n,hide:r,legendType:i,minPointSize:a,activeBar:o,animationBegin:s,animationDuration:c,animationEasing:l,isAnimationActive:u})))}function bB(e){var{layout:t,barSettings:{dataKey:n,minPointSize:r,hasCustomShape:i},pos:a,bandSize:o,xAxis:s,yAxis:c,xAxisTicks:l,yAxisTicks:u,stackedData:d,displayedData:f,offset:p,cells:m,parentViewBox:h,dataStartIndex:g}=e,_=t===`horizontal`?c:s,v=d?_.scale.domain():null,y=Pp({numericAxis:_}),b=_.scale.map(y);return f.map((e,f)=>{var _,x,S,C,w,T;if(d){var E=d[f+g];if(E==null)return null;_=Op(E,v)}else _=Cp(e,n),Array.isArray(_)||(_=[y,_]);var D=Oz(r,hB)(_[1],f);if(t===`horizontal`){var O=c.scale.map(_[0]),k=c.scale.map(_[1]);if(O==null||k==null)return null;x=Np({axis:s,ticks:l,bandSize:o,offset:a.offset,entry:e,index:f}),S=k??O??void 0,C=a.size;var A=O-k;if(w=Zs(A)?0:A,T={x,y:p.top,width:C,height:p.height},Math.abs(D)>0&&Math.abs(w)0&&Math.abs(C)w.createElement(w.Fragment,null,w.createElement(dF,{legendPayload:oB(t)}),w.createElement(sB,{dataKey:t.dataKey,stroke:t.stroke,strokeWidth:t.strokeWidth,fill:t.fill,name:t.name,hide:t.hide,unit:t.unit,tooltipType:t.tooltipType,id:e}),w.createElement(TF,{type:`bar`,id:e,data:void 0,xAxisId:t.xAxisId,yAxisId:t.yAxisId,zAxisId:0,dataKey:t.dataKey,stackId:n,hide:t.hide,barSize:t.barSize,minPointSize:t.minPointSize,maxBarSize:t.maxBarSize,isPanorama:r,hasCustomShape:t.shape!=null}),w.createElement(cj,{zIndex:t.zIndex},w.createElement(yB,Qz({},t,{id:e})))))}var SB=w.memo(xB,Cg);SB.displayName=`Bar`;var CB=[`domain`,`range`],wB=[`domain`,`range`];function TB(e,t){if(e==null)return{};var n,r,i=EB(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{if(o!=null)return PB(PB({},a),{},{type:o})},[a,o]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(SI(s)):n.current!==s&&t(CI({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(wI(n.current)),null)},[t]),null}var VB=e=>{var{xAxisId:t,className:n}=e,r=Z(dm),i=pm(),a=`xAxis`,o=Z(e=>LO(e,a,t,i)),s=Z(e=>TO(e,t)),c=Z(e=>AO(e,t)),l=Z(e=>RE(e,t));if(s==null||c==null||l==null)return null;var{dangerouslySetInnerHTML:u,ticks:d,scale:f}=e,p=RB(e,AB),{id:m,scale:h}=l,g=RB(l,jB);return w.createElement(nR,MB({},p,g,{x:c.x,y:c.y,width:s.width,height:s.height,className:Ka(`recharts-${a} ${a}`,n),viewBox:r,ticks:o,axisType:a,axisId:t}))},HB={allowDataOverflow:LE.allowDataOverflow,allowDecimals:LE.allowDecimals,allowDuplicatedCategory:LE.allowDuplicatedCategory,angle:LE.angle,axisLine:qL.axisLine,height:LE.height,hide:!1,includeHidden:LE.includeHidden,interval:LE.interval,label:!1,minTickGap:LE.minTickGap,mirror:LE.mirror,orientation:LE.orientation,padding:LE.padding,reversed:LE.reversed,scale:LE.scale,tick:LE.tick,tickCount:LE.tickCount,tickLine:qL.tickLine,tickSize:qL.tickSize,type:LE.type,niceTicks:LE.niceTicks,xAxisId:0},UB=w.memo(e=>{var t=Pc(e,HB);return w.createElement(w.Fragment,null,w.createElement(BB,{allowDataOverflow:t.allowDataOverflow,allowDecimals:t.allowDecimals,allowDuplicatedCategory:t.allowDuplicatedCategory,angle:t.angle,dataKey:t.dataKey,domain:t.domain,height:t.height,hide:t.hide,id:t.xAxisId,includeHidden:t.includeHidden,interval:t.interval,minTickGap:t.minTickGap,mirror:t.mirror,name:t.name,orientation:t.orientation,padding:t.padding,reversed:t.reversed,scale:t.scale,tick:t.tick,tickCount:t.tickCount,tickFormatter:t.tickFormatter,ticks:t.ticks,type:t.type,unit:t.unit,niceTicks:t.niceTicks}),w.createElement(VB,t))},OB);UB.displayName=`XAxis`;var WB=[`type`],GB=[`dangerouslySetInnerHTML`,`ticks`,`scale`],KB=[`id`,`scale`];function qB(){return qB=Object.assign?Object.assign.bind():function(e){for(var t=1;t{if(o!=null)return YB(YB({},a),{},{type:o})},[o,a]);return(0,w.useLayoutEffect)(()=>{s!=null&&(n.current===null?t(TI(s)):n.current!==s&&t(EI({prev:n.current,next:s})),n.current=s)},[s,t]),(0,w.useLayoutEffect)(()=>()=>{n.current&&=(t(DI(n.current)),null)},[t]),null}function nV(e){var{yAxisId:t,className:n,width:r,label:i}=e,a=(0,w.useRef)(null),o=(0,w.useRef)(null),s=Z(dm),c=pm(),l=Al(),u=`yAxis`,d=Z(e=>MO(e,t)),f=Z(e=>jO(e,t)),p=Z(e=>LO(e,u,t,c)),m=Z(e=>VE(e,t));if((0,w.useLayoutEffect)(()=>{if(!(r!==`auto`||!d||EN(i)||(0,w.isValidElement)(i)||m==null)){var e=a.current;if(e){var n=e.getCalculatedWidth();Math.round(d.width)!==Math.round(n)&&l(jI({id:t,width:n}))}}},[p,d,l,i,t,r,m]),d==null||f==null||m==null)return null;var{dangerouslySetInnerHTML:h,ticks:g,scale:_}=e,v=$B(e,GB),{id:y,scale:b}=m,x=$B(m,KB);return w.createElement(nR,qB({},v,x,{ref:a,labelRef:o,x:f.x,y:f.y,tickTextProps:r===`auto`?{width:void 0}:{width:r},width:d.width,height:d.height,className:Ka(`recharts-${u} ${u}`,n),viewBox:s,ticks:p,axisType:u,axisId:t}))}var rV={allowDataOverflow:BE.allowDataOverflow,allowDecimals:BE.allowDecimals,allowDuplicatedCategory:BE.allowDuplicatedCategory,angle:BE.angle,axisLine:qL.axisLine,hide:!1,includeHidden:BE.includeHidden,interval:BE.interval,label:!1,minTickGap:BE.minTickGap,mirror:BE.mirror,orientation:BE.orientation,padding:BE.padding,reversed:BE.reversed,scale:BE.scale,tick:BE.tick,tickCount:BE.tickCount,tickLine:qL.tickLine,tickSize:qL.tickSize,type:BE.type,niceTicks:BE.niceTicks,width:BE.width,yAxisId:0},iV=w.memo(e=>{var t=Pc(e,rV);return w.createElement(w.Fragment,null,w.createElement(tV,{interval:t.interval,id:t.yAxisId,scale:t.scale,type:t.type,domain:t.domain,allowDataOverflow:t.allowDataOverflow,dataKey:t.dataKey,allowDuplicatedCategory:t.allowDuplicatedCategory,allowDecimals:t.allowDecimals,tickCount:t.tickCount,padding:t.padding,includeHidden:t.includeHidden,reversed:t.reversed,ticks:t.ticks,width:t.width,orientation:t.orientation,mirror:t.mirror,hide:t.hide,unit:t.unit,name:t.name,angle:t.angle,minTickGap:t.minTickGap,tick:t.tick,tickFormatter:t.tickFormatter,niceTicks:t.niceTicks}),w.createElement(nV,t))},OB);iV.displayName=`YAxis`;var aV=Q([(e,t)=>t,Xm,Ob,Lb,Qk,eA,NA,lm],GA);function oV(e){return`getBBox`in e.currentTarget&&typeof e.currentTarget.getBBox==`function`}function sV(e){var t=e.currentTarget.getBoundingClientRect(),n,r;if(oV(e)){var i=e.currentTarget.getBBox();n=i.width>0?t.width/i.width:1,r=i.height>0?t.height/i.height:1}else{var a=e.currentTarget;n=a.offsetWidth>0?t.width/a.offsetWidth:1,r=a.offsetHeight>0?t.height/a.offsetHeight:1}var o=(e,i)=>({relativeX:Math.round((e-t.left)/n),relativeY:Math.round((i-t.top)/r)});return`touches`in e?Array.from(e.touches).map(e=>o(e.clientX,e.clientY)):o(e.clientX,e.clientY)}var cV=Gd(`mouseClick`),lV=cp();lV.startListening({actionCreator:cV,effect:(e,t)=>{var n=e.payload,r=aV(t.getState(),sV(n));r?.activeIndex!=null&&t.dispatch(ak({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}});var uV=Gd(`mouseMove`),dV=cp(),fV=null,pV=null,mV=null;dV.startListening({actionCreator:uV,effect:(e,t)=>{var n=e.payload,{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i?.includes(`mousemove`);fV!==null&&(cancelAnimationFrame(fV),fV=null),pV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(pV),pV=null),mV=sV(n);var o=()=>{var e=t.getState(),n=WO(e,e.tooltip.settings.shared);if(!mV){fV=null,pV=null;return}if(n===`axis`){var r=aV(e,mV);r?.activeIndex==null?t.dispatch(nk()):t.dispatch(ik({activeIndex:r.activeIndex,activeDataKey:void 0,activeCoordinate:r.activeCoordinate}))}fV=null,pV=null};if(!a){o();return}r===`raf`?fV=requestAnimationFrame(o):typeof r==`number`&&pV===null&&(pV=setTimeout(o,r))}});function hV(e,t){return t instanceof HTMLElement?`HTMLElement <${t.tagName} class="${t.className}">`:t===window?`global.window`:e===`children`&&typeof t==`object`&&t?`<>`:t}var gV={accessibilityLayer:!0,barCategoryGap:`10%`,barGap:4,barSize:void 0,className:void 0,maxBarSize:void 0,stackOffset:`none`,syncId:void 0,syncMethod:`index`,baseValue:void 0,reverseStackOrder:!1},_V=Sf({name:`rootProps`,initialState:gV,reducers:{updateOptions:(e,t)=>{e.accessibilityLayer=t.payload.accessibilityLayer,e.barCategoryGap=t.payload.barCategoryGap,e.barGap=t.payload.barGap??gV.barGap,e.barSize=t.payload.barSize,e.maxBarSize=t.payload.maxBarSize,e.stackOffset=t.payload.stackOffset,e.syncId=t.payload.syncId,e.syncMethod=t.payload.syncMethod,e.className=t.payload.className,e.baseValue=t.payload.baseValue,e.reverseStackOrder=t.payload.reverseStackOrder}}}),vV=_V.reducer,{updateOptions:yV}=_V.actions,bV=Sf({name:`polarOptions`,initialState:null,reducers:{updatePolarOptions:(e,t)=>e===null?t.payload:(e.startAngle=t.payload.startAngle,e.endAngle=t.payload.endAngle,e.cx=t.payload.cx,e.cy=t.payload.cy,e.innerRadius=t.payload.innerRadius,e.outerRadius=t.payload.outerRadius,e)}}),{updatePolarOptions:xV}=bV.actions,SV=bV.reducer,CV=Gd(`keyDown`),wV=Gd(`focus`),TV=Gd(`blur`),EV=cp(),DV=null,OV=null,kV=null;EV.startListening({actionCreator:CV,effect:(e,t)=>{kV=e.payload,DV!==null&&(cancelAnimationFrame(DV),DV=null);var{throttleDelay:n,throttledEvents:r}=t.getState().eventSettings,i=r===`all`||r.includes(`keydown`);OV!==null&&(typeof n!=`number`||!i)&&(clearTimeout(OV),OV=null);var a=()=>{try{var e=t.getState();if(e.rootProps.accessibilityLayer===!1)return;var{keyboardInteraction:n}=e.tooltip,r=kV;if(r!==`ArrowRight`&&r!==`ArrowLeft`&&r!==`Enter`)return;var i=bk(n,Bk(e),_D(e),Yk(e)),a=i==null?-1:Number(i);if(!Number.isFinite(a)||a<0)return;var o=eA(e);if(r===`Enter`){var s=RA(e,`axis`,`hover`,String(n.index));t.dispatch(sk({active:!n.active,activeIndex:n.index,activeCoordinate:s}));return}var c=BO(e)===`left-to-right`?1:-1,l=a+(r===`ArrowRight`?1:-1)*c;if(o==null||l>=o.length||l<0)return;var u=RA(e,`axis`,`hover`,String(l));t.dispatch(sk({active:!0,activeIndex:l.toString(),activeCoordinate:u}))}finally{DV=null,OV=null}};if(!i){a();return}n===`raf`?DV=requestAnimationFrame(a):typeof n==`number`&&OV===null&&(a(),kV=null,OV=setTimeout(()=>{kV?a():(OV=null,DV=null)},n))}}),EV.startListening({actionCreator:wV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;if(!r.active&&r.index==null){var i=`0`,a=RA(n,`axis`,`hover`,String(i));t.dispatch(sk({active:!0,activeIndex:i,activeCoordinate:a}))}}}}),EV.startListening({actionCreator:TV,effect:(e,t)=>{var n=t.getState();if(n.rootProps.accessibilityLayer!==!1){var{keyboardInteraction:r}=n.tooltip;r.active&&t.dispatch(sk({active:!1,activeIndex:r.index,activeCoordinate:r.coordinate}))}}});function AV(e){e.persist();var{currentTarget:t}=e;return new Proxy(e,{get:(e,n)=>{if(n===`currentTarget`)return t;var r=Reflect.get(e,n);return typeof r==`function`?r.bind(e):r}})}var jV=Gd(`externalEvent`),MV=cp(),NV=new Map,PV=new Map,FV=new Map;MV.startListening({actionCreator:jV,effect:(e,t)=>{var{handler:n,reactEvent:r}=e.payload;if(n!=null){var i=r.type,a=AV(r);FV.set(i,{handler:n,reactEvent:a});var o=NV.get(i);o!==void 0&&(cancelAnimationFrame(o),NV.delete(i));var{throttleDelay:s,throttledEvents:c}=t.getState().eventSettings,l=c,u=l===`all`||l?.includes(i),d=PV.get(i);d!==void 0&&(typeof s!=`number`||!u)&&(clearTimeout(d),PV.delete(i));var f=()=>{var e=FV.get(i);try{if(!e)return;var{handler:n,reactEvent:r}=e,a=t.getState(),o={activeCoordinate:uA(a),activeDataKey:sA(a),activeIndex:aA(a),activeLabel:oA(a),activeTooltipIndex:aA(a),isTooltipActive:dA(a)};n&&n(o,r)}finally{NV.delete(i),PV.delete(i),FV.delete(i)}};if(!u){f();return}if(s===`raf`){var p=requestAnimationFrame(f);NV.set(i,p)}else if(typeof s==`number`){if(!PV.has(i)){f();var m=setTimeout(f,s);PV.set(i,m)}}else f()}}});var IV=Q([Q([wk],e=>e.tooltipItemPayloads),(e,t)=>t,(e,t,n)=>n],(e,t,n)=>{if(t!=null){var r=e.find(e=>e.settings.graphicalItemId===n);if(r!=null){var{getPosition:i}=r;if(i!=null)return i(t)}}}),LV=Gd(`touchMove`),RV=cp(),zV=null,BV=null,VV=null,HV=null;RV.startListening({actionCreator:LV,effect:(e,t)=>{var n=e.payload;if(!(n.touches==null||n.touches.length===0)){HV=AV(n);var{throttleDelay:r,throttledEvents:i}=t.getState().eventSettings,a=i===`all`||i.includes(`touchmove`);zV!==null&&(cancelAnimationFrame(zV),zV=null),BV!==null&&(typeof r!=`number`||!a)&&(clearTimeout(BV),BV=null),VV=Array.from(n.touches).map(e=>sV({clientX:e.clientX,clientY:e.clientY,currentTarget:n.currentTarget}));var o=()=>{if(HV!=null){var e=t.getState(),n=WO(e,e.tooltip.settings.shared);if(n===`axis`){var r=VV?.[0];if(r==null){zV=null,BV=null;return}var i=aV(e,r);i?.activeIndex!=null&&t.dispatch(ik({activeIndex:i.activeIndex,activeDataKey:void 0,activeCoordinate:i.activeCoordinate}))}else if(n===`item`){var a=HV.touches[0];if(document.elementFromPoint==null||a==null)return;var o=document.elementFromPoint(a.clientX,a.clientY);if(!o||!o.getAttribute)return;var s=o.getAttribute(Zp),c=o.getAttribute(`data-recharts-item-id`)??void 0,l=Rk(e).find(e=>e.id===c);if(s==null||l==null||c==null)return;var{dataKey:u}=l,d=IV(e,s,c);t.dispatch(ek({activeDataKey:u,activeIndex:s,activeCoordinate:d,activeGraphicalItemId:c}))}zV=null,BV=null}};if(!a){o();return}r===`raf`?zV=requestAnimationFrame(o):typeof r==`number`&&BV===null&&(o(),HV=null,BV=setTimeout(()=>{HV?o():(BV=null,zV=null)},r))}}});var UV={throttleDelay:`raf`,throttledEvents:[`mousemove`,`touchmove`,`pointermove`,`scroll`,`wheel`]},WV=Sf({name:`eventSettings`,initialState:UV,reducers:{setEventSettings:(e,t)=>{t.payload.throttleDelay!=null&&(e.throttleDelay=t.payload.throttleDelay),t.payload.throttledEvents!=null&&(e.throttledEvents=Zh(t.payload.throttledEvents))}}}),{setEventSettings:GV}=WV.actions,KV=WV.reducer,qV=hu({brush:aL,cartesianAxis:MI,chartData:Nj,errorBars:kR,eventSettings:KV,graphicalItems:wF,layout:hp,legend:ig,options:Ej,polarAxis:lP,polarOptions:SV,referenceElements:hL,renderedTicks:LL,rootProps:vV,tooltip:ck,zIndex:sj}),JV=function(e){var t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:`Chart`;return nf({reducer:qV,preloadedState:e,middleware:e=>e({serializableCheck:!1,immutableCheck:![`commonjs`,`es6`,`production`].includes(`es6`)}).concat([lV.middleware,dV.middleware,EV.middleware,MV.middleware,RV.middleware]),enhancers:e=>{var t=e;return typeof e==`function`&&(t=e()),t.concat(ef({type:`raf`}))},devTools:i_.devToolsEnabled&&{serialize:{replacer:hV},name:`recharts-${t}`}})};function YV(e){var{preloadedState:t,children:n,reduxStoreName:r}=e,i=pm(),a=(0,w.useRef)(null);if(i)return n;a.current??=JV(t,r);var o=Dl;return w.createElement(bg,{context:o,store:a.current},n)}function XV(e){var{layout:t,margin:n}=e,r=Al(),i=pm();return(0,w.useEffect)(()=>{i||(r(fp(t)),r(dp(n)))},[r,i,t,n]),null}var ZV=(0,w.memo)(XV,Cg);function QV(e){var t=Al();return(0,w.useEffect)(()=>{t(yV(e))},[t,e]),null}var $V=(0,w.memo)(e=>{var t=Al();return(0,w.useEffect)(()=>{t(GV(e))},[t,e]),null},Cg);function eH(e){var{zIndex:t,isPanorama:n}=e,r=(0,w.useRef)(null),i=Al();return(0,w.useLayoutEffect)(()=>(r.current&&i(aj({zIndex:t,element:r.current,isPanorama:n})),()=>{i(oj({zIndex:t,isPanorama:n}))}),[i,t,n]),w.createElement(`g`,{tabIndex:-1,ref:r,className:`recharts-zIndex-layer_${t}`})}function tH(e){var{children:t,isPanorama:n}=e,r=Z(qA);if(!r||r.length===0)return t;var i=r.filter(e=>e<0),a=r.filter(e=>e>0);return w.createElement(w.Fragment,null,i.map(e=>w.createElement(eH,{key:e,zIndex:e,isPanorama:n})),t,a.map(e=>w.createElement(eH,{key:e,zIndex:e,isPanorama:n})))}var nH=[`children`];function rH(e,t){if(e==null)return{};var n,r,i=iH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var n=qm(),r=Jm(),i=m_();if(!_p(n)||!_p(r))return null;var{children:a,otherAttributes:o,title:s,desc:c}=e,l,u;return o!=null&&(l=typeof o.tabIndex==`number`?o.tabIndex:i?0:void 0,u=typeof o.role==`string`?o.role:i?`application`:void 0),w.createElement(oo,aH({},o,{title:s,desc:c,role:u,tabIndex:l,width:n,height:r,style:oH,ref:t}),a)}),cH=e=>{var{children:t}=e,n=Z(hm);if(!n)return null;var{width:r,height:i,y:a,x:o}=n;return w.createElement(oo,{width:r,height:i,x:o,y:a},t)},lH=(0,w.forwardRef)((e,t)=>{var{children:n}=e,r=rH(e,nH);return pm()?w.createElement(cH,null,w.createElement(tH,{isPanorama:!0},n)):w.createElement(sH,aH({ref:t},r),w.createElement(tH,{isPanorama:!1},n))});function uH(){var e=Al(),[t,n]=(0,w.useState)(null),r=Z(qp);return(0,w.useEffect)(()=>{if(t!=null){var n=t.getBoundingClientRect().width/t.offsetWidth;$(n)&&n!==r&&e(mp(n))}},[t,e,r]),n}function dH(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function fH(e){for(var t=1;t(Wj(),null);function vH(e){if(typeof e==`number`)return e;if(typeof e==`string`){var t=parseFloat(e);if(!Number.isNaN(t))return t}return 0}var yH=(0,w.forwardRef)((e,t)=>{var n=(0,w.useRef)(null),[r,i]=(0,w.useState)({containerWidth:vH(e.style?.width),containerHeight:vH(e.style?.height)}),a=(0,w.useCallback)((e,t)=>{i(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),o=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null&&typeof ResizeObserver<`u`){var{width:r,height:i}=e.getBoundingClientRect();a(r,i);var o=new ResizeObserver(e=>{var t=e[0];if(t!=null){var{width:n,height:r}=t.contentRect;a(n,r)}});o.observe(e),n.current=o}},[t,a]);return(0,w.useEffect)(()=>()=>{n.current?.disconnect()},[a]),w.createElement(w.Fragment,null,w.createElement(th,{width:r.containerWidth,height:r.containerHeight}),w.createElement(`div`,gH({ref:o},e)))}),bH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e,[i,a]=(0,w.useState)({containerWidth:vH(n),containerHeight:vH(r)}),o=(0,w.useCallback)((e,t)=>{a(n=>{var r=Math.round(e),i=Math.round(t);return n.containerWidth===r&&n.containerHeight===i?n:{containerWidth:r,containerHeight:i}})},[]),s=(0,w.useCallback)(e=>{if(typeof t==`function`&&t(e),e!=null){var{width:n,height:r}=e.getBoundingClientRect();o(n,r)}},[t,o]);return w.createElement(w.Fragment,null,w.createElement(th,{width:i.containerWidth,height:i.containerHeight}),w.createElement(`div`,gH({ref:s},e)))}),xH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return w.createElement(w.Fragment,null,w.createElement(th,{width:n,height:r}),w.createElement(`div`,gH({ref:t},e)))}),SH=(0,w.forwardRef)((e,t)=>{var{width:n,height:r}=e;return typeof n==`string`||typeof r==`string`?w.createElement(bH,gH({},e,{ref:t})):typeof n==`number`&&typeof r==`number`?w.createElement(xH,gH({},e,{width:n,height:r,ref:t})):w.createElement(w.Fragment,null,w.createElement(th,{width:n,height:r}),w.createElement(`div`,gH({ref:t},e)))});function CH(e){return e?yH:SH}var wH=(0,w.forwardRef)((e,t)=>{var{children:n,className:r,height:i,onClick:a,onContextMenu:o,onDoubleClick:s,onMouseDown:c,onMouseEnter:l,onMouseLeave:u,onMouseMove:d,onMouseUp:f,onTouchEnd:p,onTouchMove:m,onTouchStart:h,style:g,width:_,responsive:v,dispatchTouchEvents:y=!0}=e,b=(0,w.useRef)(null),x=Al(),[S,C]=(0,w.useState)(null),[T,E]=(0,w.useState)(null),D=uH(),O=Bm(),k=O?.width>0?O.width:_,A=O?.height>0?O.height:i,j=(0,w.useCallback)(e=>{D(e),typeof t==`function`&&t(e),C(e),E(e),e!=null&&(b.current=e)},[D,t,C,E]),M=(0,w.useCallback)(e=>{x(cV(e)),x(jV({handler:a,reactEvent:e}))},[x,a]),N=(0,w.useCallback)(e=>{x(uV(e)),x(jV({handler:l,reactEvent:e}))},[x,l]),P=(0,w.useCallback)(e=>{x(nk()),x(jV({handler:u,reactEvent:e}))},[x,u]),ee=(0,w.useCallback)(e=>{x(uV(e)),x(jV({handler:d,reactEvent:e}))},[x,d]),F=(0,w.useCallback)(()=>{x(wV())},[x]),I=(0,w.useCallback)(()=>{x(TV())},[x]),te=(0,w.useCallback)(e=>{x(CV(e.key))},[x]),ne=(0,w.useCallback)(e=>{x(jV({handler:o,reactEvent:e}))},[x,o]),re=(0,w.useCallback)(e=>{x(jV({handler:s,reactEvent:e}))},[x,s]),ie=(0,w.useCallback)(e=>{x(jV({handler:c,reactEvent:e}))},[x,c]),L=(0,w.useCallback)(e=>{x(jV({handler:f,reactEvent:e}))},[x,f]),R=(0,w.useCallback)(e=>{x(jV({handler:h,reactEvent:e}))},[x,h]),ae=(0,w.useCallback)(e=>{y&&x(LV(e)),x(jV({handler:m,reactEvent:e}))},[x,y,m]),oe=(0,w.useCallback)(e=>{x(jV({handler:p,reactEvent:e}))},[x,p]),z=CH(v);return w.createElement(vj.Provider,{value:S},w.createElement(po.Provider,{value:T},w.createElement(z,{width:k??g?.width,height:A??g?.height,className:Ka(`recharts-wrapper`,r),style:fH({position:`relative`,cursor:`default`,width:k,height:A},g),onClick:M,onContextMenu:ne,onDoubleClick:re,onFocus:F,onBlur:I,onKeyDown:te,onMouseDown:ie,onMouseEnter:N,onMouseLeave:P,onMouseMove:ee,onMouseUp:L,onTouchEnd:oe,onTouchMove:ae,onTouchStart:R,ref:j},w.createElement(_H,null),n)))}),TH=[`width`,`height`,`responsive`,`children`,`className`,`style`,`compact`,`title`,`desc`];function EH(e,t){if(e==null)return{};var n,r,i=DH(e,t);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);for(r=0;r{var{width:n,height:r,responsive:i,children:a,className:o,style:s,compact:c,title:l,desc:u}=e,d=Qa(EH(e,TH));return c?w.createElement(w.Fragment,null,w.createElement(th,{width:n,height:r}),w.createElement(lH,{otherAttributes:d,title:l,desc:u},a)):w.createElement(wH,{className:o,style:s,width:n,height:r,responsive:i??!1,onClick:e.onClick,onMouseLeave:e.onMouseLeave,onMouseEnter:e.onMouseEnter,onMouseMove:e.onMouseMove,onMouseDown:e.onMouseDown,onMouseUp:e.onMouseUp,onContextMenu:e.onContextMenu,onDoubleClick:e.onDoubleClick,onTouchStart:e.onTouchStart,onTouchMove:e.onTouchMove,onTouchEnd:e.onTouchEnd},w.createElement(lH,{otherAttributes:d,title:l,desc:u,ref:t},w.createElement(_L,null,a)))});function kH(){return kH=Object.assign?Object.assign.bind():function(e){for(var t=1;tw.createElement(IH,{chartName:`BarChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:LH,tooltipPayloadSearcher:wj,categoricalChartProps:e,ref:t}));function zH(e){var t=Al();return(0,w.useEffect)(()=>{t(xV(e))},[t,e]),null}var BH=[`layout`];function VH(){return VH=Object.assign?Object.assign.bind():function(e){for(var t=1;t{var n=Pc(e,rU);return w.createElement(XH,{chartName:`PieChart`,defaultTooltipEventType:`item`,validateTooltipEventTypes:nU,tooltipPayloadSearcher:wj,categoricalChartProps:n,ref:t})}),aU=[`axis`],oU=(0,w.forwardRef)((e,t)=>w.createElement(IH,{chartName:`AreaChart`,defaultTooltipEventType:`axis`,validateTooltipEventTypes:aU,tooltipPayloadSearcher:wj,categoricalChartProps:e,ref:t})),sU={beworben:`#38bdf8`,eingangsbestaetigung:`#38bdf8`,interview:`#fbbf24`,zweitgespraech:`#fbbf24`,interview_abgeschlossen:`#14b8a6`,angebot:`#34d399`,abgelehnt:`#f87171`,entwurf:`#94a3b8`,zurueckgezogen:`#a78bfa`,abgelaufen:`#94a3b8`},cU=[`#38bdf8`,`#34d399`,`#fbbf24`,`#f87171`,`#a78bfa`,`#fb923c`,`#2dd4bf`,`#e879f9`,`#60a5fa`,`#facc15`],lU=[`#f87171`,`#fb923c`,`#fbbf24`,`#a78bfa`,`#38bdf8`,`#34d399`,`#e879f9`,`#94a3b8`,`#2dd4bf`,`#60a5fa`],uU={fontSize:11,fill:`rgba(255,255,255,0.45)`},dU={background:`rgba(30,34,52,0.95)`,border:`1px solid rgba(255,255,255,0.1)`,borderRadius:12,fontSize:12};function fU(e){if(!e)return{from:``,to:``};let t=new Date,n=t.toISOString().slice(0,10),r=new Date(t);if(e===`30d`)r.setDate(r.getDate()-30);else if(e===`90d`)r.setDate(r.getDate()-90);else if(e===`6m`)r.setMonth(r.getMonth()-6);else if(e===`12m`)r.setMonth(r.getMonth()-12);else return{from:``,to:``};return{from:r.toISOString().slice(0,10),to:n}}function pU(e,t,n,r){let i=new URLSearchParams({format:e});if(n||r)n&&i.set(`from`,n),r&&i.set(`to`,r);else{let{from:e,to:n}=fU(t);e&&i.set(`from`,e),n&&i.set(`to`,n)}return`/api/applications/export?${i.toString()}`}function mU({title:e,children:t}){return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsx)(`p`,{className:`mb-4 text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:e}),t]})}function hU({data:e,days:t}){let n=new Map((e||[]).map(e=>[e.date,e])),r=new Date,i=[],a=new Date(r);a.setDate(a.getDate()-(t-1));let o=(a.getDay()+6)%7;a.setDate(a.getDate()-o);let s=new Date(a);for(;s<=r;){let e=s.toISOString().slice(0,10),a=(r-s)/864e5<=t;i.push({date:e,entry:a?n.get(e):null,inRange:a}),s.setDate(s.getDate()+1)}let c=[];for(let e=0;ee.count||0));function u(e){if(!e)return 0;let t=e/l;return t<.25?1:t<.5?2:t<.75?3:4}let d=[`rgba(255,255,255,0.04)`,`rgba(56,189,248,0.25)`,`rgba(56,189,248,0.5)`,`rgba(56,189,248,0.75)`,`rgba(56,189,248,1)`],f=[],p=-1;return c.forEach((e,t)=>{let n=e.find(e=>e.inRange);if(!n)return;let r=new Date(n.date).getMonth();r!==p&&(f.push({index:t,label:[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`][r]}),p=r)}),(0,U.jsx)(`div`,{className:`overflow-x-auto`,children:(0,U.jsxs)(`div`,{className:`inline-flex flex-col gap-1`,children:[(0,U.jsx)(`div`,{className:`ml-7 flex gap-[3px] text-[9px] text-muted/40`,children:c.map((e,t)=>{let n=f.find(e=>e.index===t);return(0,U.jsx)(`div`,{className:`w-[11px] text-left`,children:n?n.label:``},t)})}),(0,U.jsxs)(`div`,{className:`flex gap-[3px]`,children:[(0,U.jsxs)(`div`,{className:`flex flex-col justify-between pr-1 text-[9px] text-muted/40`,children:[(0,U.jsx)(`span`,{children:`Mo`}),(0,U.jsx)(`span`,{children:`Mi`}),(0,U.jsx)(`span`,{children:`Fr`}),(0,U.jsx)(`span`,{children:`So`})]}),c.map((e,t)=>(0,U.jsx)(`div`,{className:`flex flex-col gap-[3px]`,children:e.map((e,t)=>{let n=e.entry?.count||0,r=e.inRange?u(n):0;return(0,U.jsx)(`div`,{title:e.inRange?`${e.date}: ${n} Aktion${n===1?``:`en`}`:``,className:`h-[11px] w-[11px] rounded-[2px]`,style:{background:d[r],opacity:e.inRange?1:.3}},t)})},t))]}),(0,U.jsxs)(`div`,{className:`ml-7 mt-1 flex items-center gap-2 text-[10px] text-muted/40`,children:[(0,U.jsx)(`span`,{children:`weniger`}),d.map((e,t)=>(0,U.jsx)(`div`,{className:`h-[10px] w-[10px] rounded-[2px]`,style:{background:e}},t)),(0,U.jsx)(`span`,{children:`mehr`})]})]})})}function gU({label:e,value:t,sub:n,tone:r=`neutral`}){let i={sky:`border-sky/15 bg-sky/[0.06]`,success:`border-teal/15 bg-teal/[0.06]`,amber:`border-amber/15 bg-amber/[0.06]`,danger:`border-coral/15 bg-coral/[0.06]`,neutral:`border-white/[0.05] bg-white/[0.02]`};return(0,U.jsxs)(`div`,{className:`rounded-lg border px-3 py-2.5 ${i[r]||i.neutral}`,children:[(0,U.jsx)(`p`,{className:`text-[10px] uppercase tracking-[0.12em] text-muted/50`,children:e}),(0,U.jsx)(`p`,{className:`mt-1 text-lg font-semibold ${{sky:`text-sky`,success:`text-teal`,amber:`text-amber`,danger:`text-coral`,neutral:`text-ink`}[r]||`text-ink`}`,children:t}),n&&(0,U.jsx)(`p`,{className:`text-[10px] text-muted/40`,children:n})]})}function _U(){let{reloadKey:e,pushToast:t,navigateTo:n}=jt(),[r,i]=(0,w.useState)(!0),[a,o]=(0,w.useState)(`month`),[s,c]=(0,w.useState)(``),[l,u]=(0,w.useState)(``),[d,f]=(0,w.useState)(``),[p,m]=(0,w.useState)(null),[h,g]=(0,w.useState)(null),[_,v]=(0,w.useState)(null),[y,b]=(0,w.useState)(null),[x,S]=(0,w.useState)(`seit_pbp`),[C,T]=(0,w.useState)(null),[E,O]=(0,w.useState)(null),[k,A]=(0,w.useState)(null),[j,M]=(0,w.useState)(365),N=(0,w.useEffectEvent)(async(e,n)=>{try{let r=new URLSearchParams({interval:e});n&&r.set(`range`,n);let[a,o,s,c,l,u,d]=await Promise.all([Dt(`/api/stats/timeline?${r}`),Dt(`/api/stats/scores`),Dt(`/api/stats/extended`),Dt(`/api/rejection-patterns`),Dt(`/api/stats/style`),Dt(`/api/stats/heatmap?days=${j}`),Dt(`/api/statistics`)]);if(!a&&!o&&!s){t(`Server nicht erreichbar.`,`danger`),i(!1);return}m(a),g(o),v(s),b(d),T(c),O(l),A(u),i(!1)}catch(e){t(`Statistiken konnten nicht geladen werden: ${e.message}`,`danger`),i(!1)}});if((0,w.useEffect)(()=>{i(!0),N(a,s)},[e,a,s,j]),r)return(0,U.jsx)(tr,{label:`Statistiken werden geladen...`});p?.current_period;let P=p?.periods||[];function ee(e){let t=e.match(/^\d{4}-W(\d+)$/);if(t)return`KW ${parseInt(t[1],10)}`;let n=e.match(/^(\d{4})-(\d{2})-(\d{2})$/);if(n)return`${n[3]}.${n[2]}.`;let r=e.match(/^(\d{4})-(\d{2})$/);return r?[`Jan`,`Feb`,`Mär`,`Apr`,`Mai`,`Jun`,`Jul`,`Aug`,`Sep`,`Okt`,`Nov`,`Dez`][parseInt(r[2],10)-1]+` `+r[1].slice(2):e}let F=P.map(e=>({name:ee(e),Bewerbungen:p?.applications?.[e]||0,"Neue Stellen":p?.jobs_found?.[e]||0})),I=new Set;for(let e of P)for(let t of Object.keys(p?.by_status?.[e]||{}))I.add(t);let te=[...I],ie=te.map(e=>On(e)),L=P.map(e=>{let t={name:ee(e)};for(let n=0;n({name:e.name,value:e.count})),oe=h?.score_distribution||{},z=[`0`,`1-3`,`4-6`,`7-9`,`10+`].filter(e=>oe[e]!=null).map(e=>({bucket:e,count:oe[e]||0})),se=R.filter(e=>e.avg_score>0).map(e=>({name:e.name,"Ø Score":Math.round(e.avg_score*10)/10,"Max Score":e.max_score||0})),ce=(_?.dismiss_reasons||[]).slice(0,10).map(([e,t])=>({name:e,count:t})),le=F.length>0||ae.length>0||z.length>0,ue=_?.today||{},de=_?.this_week||{},fe=_?.totals||{},pe=_?.applications||{},me=_?.response_times||{};return(0,U.jsxs)(`div`,{id:`page-statistiken`,className:`page active`,children:[(0,U.jsx)(`h1`,{className:`sr-only`,children:`Statistiken`}),(0,U.jsx)(`div`,{className:`mb-6 flex flex-wrap items-baseline justify-end gap-4`,children:(0,U.jsxs)(`div`,{className:`flex flex-wrap items-center gap-2`,children:[[{label:`30 Tage`,value:`30d`},{label:`90 Tage`,value:`90d`},{label:`6 Monate`,value:`6m`},{label:`12 Monate`,value:`12m`},{label:`Alles`,value:``}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>{c(e.value),e.value===``&&a!==`all`&&o(`all`),e.value!==``&&a===`all`&&o(`month`)},className:`rounded-lg px-2.5 py-1 text-xs font-medium transition-colors ${s===e.value?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.value)),(0,U.jsx)(`span`,{className:`mx-0.5 h-4 w-px bg-white/10`}),(0,U.jsxs)(Qn,{className:`!h-9 !min-h-0 !w-auto !rounded-xl !border-white/5 !bg-white/[0.03] !pl-3 !pr-3 !py-0 !text-[13px] !text-muted/60`,value:a,onChange:e=>o(e.target.value),children:[(0,U.jsx)(`option`,{value:`day`,children:`Taeglich`}),(0,U.jsx)(`option`,{value:`week`,children:`Woechentlich`}),(0,U.jsx)(`option`,{value:`month`,children:`Monatlich`}),(0,U.jsx)(`option`,{value:`quarter`,children:`Quartalsweise`}),(0,U.jsx)(`option`,{value:`year`,children:`Jaehrlich`}),(0,U.jsx)(`option`,{value:`all`,children:`Komplett`})]}),(0,U.jsxs)(Gn,{size:`sm`,href:Et(pU(`pdf`,s,l,d)),target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(_e,{size:14}),`PDF`]}),(0,U.jsxs)(Gn,{size:`sm`,href:Et(pU(`xlsx`,s,l,d)),target:`_blank`,rel:`noreferrer`,children:[(0,U.jsx)(_e,{size:14}),`Excel`]})]})}),(0,U.jsxs)(`div`,{className:`mb-6 flex flex-wrap items-center gap-3 text-xs text-muted/70`,children:[(0,U.jsx)(`span`,{children:`Bericht-Zeitraum manuell:`}),(0,U.jsx)(`input`,{type:`date`,value:l,onChange:e=>u(e.target.value),className:`rounded-lg border border-white/5 bg-white/[0.03] px-2 py-1 text-ink`,"aria-label":`Zeitraum von`}),(0,U.jsx)(`span`,{children:`bis`}),(0,U.jsx)(`input`,{type:`date`,value:d,onChange:e=>f(e.target.value),className:`rounded-lg border border-white/5 bg-white/[0.03] px-2 py-1 text-ink`,"aria-label":`Zeitraum bis`}),(l||d)&&(0,U.jsx)(`button`,{type:`button`,onClick:()=>{u(``),f(``)},className:`text-[11px] text-muted/60 hover:text-ink underline`,children:`zuruecksetzen`}),(0,U.jsx)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:`(ueberschreibt die Preset-Auswahl oben — leer = Preset gilt)`})]}),!le&&!_?(0,U.jsx)(er,{title:`Noch keine Daten`,description:`Sobald Bewerbungen und Stellen vorhanden sind, erscheinen hier Auswertungen.`}):(0,U.jsxs)(`div`,{className:`grid gap-6`,children:[_&&(0,U.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-3`,children:[(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,U.jsx)(ne,{size:14,className:`text-sky`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Heute`})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,U.jsx)(gU,{label:`Gefunden`,value:ue.jobs_found||0,tone:`success`}),(0,U.jsx)(gU,{label:`Aussortiert`,value:ue.dismissed||0,tone:`danger`}),(0,U.jsx)(gU,{label:`Beworben`,value:ue.applied||0,tone:`sky`})]})]}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,U.jsx)(ct,{size:14,className:`text-teal`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Diese Woche`})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-3 gap-2`,children:[(0,U.jsx)(gU,{label:`Gefunden`,value:de.jobs_found||0,tone:`success`}),(0,U.jsx)(gU,{label:`Aussortiert`,value:de.dismissed||0,tone:`danger`}),(0,U.jsx)(gU,{label:`Beworben`,value:de.applied||0,tone:`sky`})]})]}),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,U.jsx)(re,{size:14,className:`text-amber`}),(0,U.jsxs)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:[`Gesamt`,_.start_date?` (seit ${Sn(_.start_date)})`:``]})]}),(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2`,children:[(0,U.jsx)(gU,{label:`Stellen gesamt`,value:fe.jobs_ever||0,tone:`neutral`}),(0,U.jsx)(gU,{label:`Aktiv`,value:fe.jobs_active||0,tone:`success`}),(0,U.jsx)(gU,{label:`Beworben`,value:fe.jobs_applied||0,sub:fe.hit_rate?`${fe.hit_rate}% Trefferquote`:``,tone:`sky`}),(0,U.jsx)(gU,{label:`Aussortiert`,value:fe.jobs_dismissed||0,sub:fe.dismiss_rate?`${fe.dismiss_rate}%`:``,tone:`danger`}),(0,U.jsx)(gU,{label:`Gepinnt`,value:fe.jobs_pinned||0,tone:`amber`})]})]})]}),_&&(0,U.jsxs)(`div`,{className:`grid gap-4 md:grid-cols-2 xl:grid-cols-5`,children:[(0,U.jsx)(Jn,{label:`Bewerbungen gesamt`,value:pe.total||0,note:pe.imported?`${pe.imported} importiert, ${pe.new||0} neu`:`Alle im Tool erstellt`,tone:`sky`}),(0,U.jsx)(Jn,{label:`Importiert`,value:pe.imported||0,note:`Vor Tool-Nutzung`,tone:`neutral`}),(0,U.jsx)(Jn,{label:`Neu erstellt`,value:pe.new||0,note:`Seit Tool-Nutzung`,tone:`success`}),(0,U.jsx)(Jn,{label:`Ø Antwortzeit`,value:me.average_days==null?`k.A.`:`${me.average_days} Tage`,note:me.sample_size?`Basierend auf ${me.sample_size} Rueckmeldungen`:`Noch keine Daten`,tone:`amber`}),(0,U.jsx)(Jn,{label:`Schnellste Antwort`,value:me.fastest_days==null?`k.A.`:`${me.fastest_days} Tage`,note:me.slowest_days==null?``:`Langsamste: ${me.slowest_days} Tage`,tone:`success`})]}),y?.quoten&&(()=>{let e=y.quoten,t=e[x]||{basis:0},n=[{key:`seit_pbp`,label:`Seit PBP`},{key:`vor_pbp`,label:`Vor PBP`},{key:`gesamt`,label:`Gesamt`}],r=n.find(e=>e.key===x)?.label;return(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(re,{size:14,className:`text-amber`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Outcome-Quoten`}),e.pbp_start_datum&&(0,U.jsxs)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:[`PBP-Start: `,Sn(e.pbp_start_datum)]})]}),(0,U.jsx)(`div`,{className:`flex gap-1`,children:n.map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>S(e.key),className:`rounded-md px-2.5 py-1 text-[11px] transition ${x===e.key?`bg-sky/15 text-sky`:`text-muted/60 hover:text-ink`}`,children:e.label},e.key))})]}),t.basis>0?(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`grid grid-cols-2 gap-2 md:grid-cols-5`,children:[(0,U.jsx)(gU,{label:`Abgelaufen`,value:`${t.expired_rate}%`,sub:`${t.abgelaufen} Bew.`,tone:`danger`}),(0,U.jsx)(gU,{label:`Abgelehnt`,value:`${t.rejection_rate}%`,sub:`${t.abgelehnt} Bew.`,tone:`amber`}),(0,U.jsx)(gU,{label:`Zurueckgezogen`,value:`${t.withdrawal_rate}%`,sub:`${t.zurueckgezogen} Bew.`,tone:`neutral`}),(0,U.jsx)(gU,{label:`Interview erreicht`,value:`${t.interview_rate}%`,sub:`${t.interview} Bew.`,tone:`sky`}),(0,U.jsx)(gU,{label:`Angebot`,value:`${t.offer_rate}%`,sub:`${t.angebot} Bew.`,tone:`success`})]}),(0,U.jsxs)(`p`,{className:`mt-2 text-[11px] text-muted/50`,children:[`Basis: `,t.basis,` abgeschickte Bewerbungen (`,r,`, nach Bewerbungsdatum). Der Vergleich „Seit PBP" vs. „Vor PBP" zeigt, ob seit der systematischen Nutzung anteilig weniger Bewerbungen versanden.`]})]}):(0,U.jsx)(`p`,{className:`text-xs text-muted/60`,children:`Noch keine abgeschickten Bewerbungen in diesem Zeitraum.`})]})})(),(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`mb-4 flex flex-wrap items-center justify-between gap-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(D,{size:14,className:`text-sky`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Aktivitaets-Heatmap`}),k?.total_active_days!=null&&(0,U.jsxs)(`span`,{className:`ml-2 text-[11px] text-muted/50`,children:[k.total_active_days,` aktive Tage`,k.max_per_day?` · max. ${k.max_per_day}/Tag`:``]})]}),(0,U.jsx)(`div`,{className:`flex items-center gap-1`,children:[{label:`90 T`,value:90},{label:`180 T`,value:180},{label:`365 T`,value:365},{label:`730 T`,value:730}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>M(e.value),className:`rounded-lg px-2 py-0.5 text-[11px] font-medium transition-colors ${j===e.value?`bg-sky/15 text-sky`:`text-muted/40 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.value))})]}),k&&k.data&&k.data.length>0?(0,U.jsx)(hU,{data:k.data,days:j}):(0,U.jsx)(`p`,{className:`py-6 text-center text-sm text-muted/40`,children:`Noch keine Aktivitaeten erfasst. Sobald du Bewerbungen, Termine oder Follow-ups anlegst, erscheint hier ein Aktivitaetsmuster.`})]}),(0,U.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,U.jsx)(mU,{title:`Bewerbungen & Stellen im Zeitverlauf`,children:F.length>0?(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(oU,{data:F,children:[(0,U.jsx)(wR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,U.jsx)(UB,{dataKey:`name`,tick:uU}),(0,U.jsx)(iV,{tick:uU,allowDecimals:!1}),(0,U.jsx)(tM,{contentStyle:dU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,U.jsx)(Vg,{wrapperStyle:{fontSize:12}}),(0,U.jsx)(Sz,{type:`monotone`,dataKey:`Bewerbungen`,stroke:`#38bdf8`,fill:`#38bdf8`,fillOpacity:.15,strokeWidth:2}),(0,U.jsx)(Sz,{type:`monotone`,dataKey:`Neue Stellen`,stroke:`#34d399`,fill:`#34d399`,fillOpacity:.1,strokeWidth:2})]})}):(0,U.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Zeitraumdaten vorhanden.`})}),(0,U.jsx)(mU,{title:`Status-Verteilung im Zeitverlauf`,children:L.length>0&&te.length>0?(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(RH,{data:L,children:[(0,U.jsx)(wR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,U.jsx)(UB,{dataKey:`name`,tick:uU}),(0,U.jsx)(iV,{tick:uU,allowDecimals:!1}),(0,U.jsx)(tM,{contentStyle:dU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,U.jsx)(Vg,{wrapperStyle:{fontSize:12}}),te.map((e,t)=>(0,U.jsx)(SB,{dataKey:ie[t],stackId:`status`,fill:sU[e]||`#94a3b8`,radius:[2,2,0,0]},e))]})}):(0,U.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Statusdaten vorhanden.`})})]}),(0,U.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(0,U.jsx)(mU,{title:`Quellen-Verteilung`,children:ae.length>0?(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(iU,{children:[(0,U.jsx)(rI,{data:ae,dataKey:`value`,nameKey:`name`,cx:`50%`,cy:`50%`,outerRadius:100,innerRadius:50,paddingAngle:2,label:({name:e,percent:t})=>`${e} (${(t*100).toFixed(0)}%)`,labelLine:{stroke:`rgba(255,255,255,0.2)`},children:ae.map((e,t)=>(0,U.jsx)(nM,{fill:cU[t%cU.length],cursor:`pointer`,onClick:()=>n(`stellen`)},t))}),(0,U.jsx)(tM,{contentStyle:dU})]})}):(0,U.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Quellendaten vorhanden.`})}),(0,U.jsx)(mU,{title:`Score-Verteilung`,children:z.length>0?(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(RH,{data:z,children:[(0,U.jsx)(wR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,U.jsx)(UB,{dataKey:`bucket`,tick:uU,label:{value:`Score`,position:`insideBottom`,offset:-2,style:uU}}),(0,U.jsx)(iV,{tick:uU,allowDecimals:!1}),(0,U.jsx)(tM,{contentStyle:dU,labelStyle:{color:`rgba(255,255,255,0.7)`},formatter:e=>[e,`Stellen`],labelFormatter:e=>`Score-Bereich ${e}`}),(0,U.jsx)(SB,{dataKey:`count`,fill:`#fbbf24`,radius:[4,4,0,0],children:z.map((e,t)=>(0,U.jsx)(nM,{fill:`hsl(${40+t*8}, 90%, 60%)`},t))})]})}):(0,U.jsx)(`p`,{className:`py-8 text-center text-sm text-muted/40`,children:`Keine Score-Daten vorhanden.`})})]}),(0,U.jsxs)(`div`,{className:`grid gap-6 xl:grid-cols-2`,children:[(h?.application_sources||[]).length>0&&(0,U.jsx)(mU,{title:`Bewerbungs-Quellen`,children:(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(iU,{children:[(0,U.jsx)(rI,{data:h.application_sources.map(e=>({name:e.name,value:e.count})),dataKey:`value`,nameKey:`name`,cx:`50%`,cy:`50%`,outerRadius:100,innerRadius:50,paddingAngle:2,label:({name:e,percent:t})=>`${e} (${(t*100).toFixed(0)}%)`,labelLine:{stroke:`rgba(255,255,255,0.2)`},children:h.application_sources.map((e,t)=>(0,U.jsx)(nM,{fill:cU[t%cU.length]},t))}),(0,U.jsx)(tM,{contentStyle:dU})]})})}),ce.length>0&&(0,U.jsx)(mU,{title:`Ablehnungsgruende (Top 10)`,children:(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(RH,{data:ce,layout:`vertical`,children:[(0,U.jsx)(wR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,U.jsx)(UB,{type:`number`,tick:uU,allowDecimals:!1}),(0,U.jsx)(iV,{type:`category`,dataKey:`name`,tick:uU,width:140}),(0,U.jsx)(tM,{contentStyle:dU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,U.jsx)(SB,{dataKey:`count`,radius:[0,4,4,0],children:ce.map((e,t)=>(0,U.jsx)(nM,{fill:lU[t%lU.length]},t))})]})})})]}),se.length>0?(0,U.jsx)(mU,{title:`Durchschnittsscore nach Quelle`,children:(0,U.jsx)(Hm,{width:`100%`,height:280,children:(0,U.jsxs)(RH,{data:se,layout:`vertical`,children:[(0,U.jsx)(wR,{strokeDasharray:`3 3`,stroke:`rgba(255,255,255,0.06)`}),(0,U.jsx)(UB,{type:`number`,tick:uU}),(0,U.jsx)(iV,{type:`category`,dataKey:`name`,tick:uU,width:100}),(0,U.jsx)(tM,{contentStyle:dU,labelStyle:{color:`rgba(255,255,255,0.7)`}}),(0,U.jsx)(Vg,{wrapperStyle:{fontSize:12}}),(0,U.jsx)(SB,{dataKey:`Ø Score`,fill:`#38bdf8`,radius:[0,4,4,0]}),(0,U.jsx)(SB,{dataKey:`Max Score`,fill:`#34d399`,radius:[0,4,4,0]})]})})}):null,C&&C.anzahl>=3&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(ct,{size:14,className:`text-coral`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Was Absagen dir sagen`})]}),(0,U.jsxs)(q,{tone:`danger`,children:[C.anzahl,` Absagen`]})]}),(0,U.jsxs)(`div`,{className:`grid gap-3 md:grid-cols-2`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/50 mb-2`,children:`Haeufigste Gruende`}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(C.nach_grund||{}).slice(0,6).map(([e,t])=>(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border border-white/[0.04] px-3 py-1.5 text-sm`,children:[(0,U.jsx)(`span`,{className:`flex-1 min-w-0 break-words text-ink leading-snug`,children:e}),(0,U.jsx)(q,{tone:`neutral`,className:`shrink-0 mt-0.5`,children:t})]},e))})]}),(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`p`,{className:`text-[11px] uppercase tracking-wide text-muted/50 mb-2`,children:`Betroffene Firmen`}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(C.nach_firma||{}).slice(0,6).map(([e,t])=>(0,U.jsxs)(`div`,{className:`flex items-start justify-between gap-3 rounded-lg border border-white/[0.04] px-3 py-1.5 text-sm`,children:[(0,U.jsx)(`span`,{className:`flex-1 min-w-0 break-words text-ink leading-snug`,children:e}),(0,U.jsx)(q,{tone:`neutral`,className:`shrink-0 mt-0.5`,children:t===1?`1 Absage`:`${t} Absagen`})]},e))})]})]}),(0,U.jsxs)(`div`,{className:`mt-4 flex items-center justify-between gap-3`,children:[(0,U.jsx)(`p`,{className:`text-xs text-muted/50`,children:`Eine systematische Haeufung weist oft auf ein konkretes Profil- oder Kommunikations-Thema hin.`}),(0,U.jsx)(G,{size:`sm`,variant:`secondary`,onClick:()=>{navigator.clipboard?.writeText(`/ablehnungs_coaching`).catch(()=>{}),t(`Prompt /ablehnungs_coaching kopiert — in Claude Desktop einfuegen.`,`success`)},children:`Vertieft mit Claude besprechen`})]})]}),E?.status===`ok`&&Object.keys(E.stile||{}).length>0&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between mb-3`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[(0,U.jsx)(We,{size:14,className:`text-sky`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Anschreiben-Stile im Vergleich`})]}),(0,U.jsxs)(q,{tone:`neutral`,children:[E.gesamt_getrackt,` getrackt`]})]}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:Object.entries(E.stile).map(([e,t])=>{let n=typeof t.interview_quote==`number`;return(0,U.jsxs)(`div`,{className:`rounded-lg border border-white/[0.04] px-3 py-2`,children:[(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3`,children:[(0,U.jsx)(`span`,{className:`font-medium text-ink capitalize`,children:e}),(0,U.jsxs)(q,{tone:`neutral`,children:[t.anzahl,` `,t.anzahl===1?`Bewerbung`:`Bewerbungen`]})]}),n?(0,U.jsxs)(`div`,{className:`mt-1.5 flex items-center gap-3 text-xs text-muted/70`,children:[(0,U.jsxs)(`span`,{children:[`Interview-Quote: `,(0,U.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.interview_quote,`%`]})]}),(0,U.jsxs)(`span`,{children:[`Angebote: `,(0,U.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.angebots_quote,`%`]})]}),(0,U.jsxs)(`span`,{children:[`Absagen: `,(0,U.jsxs)(`span`,{className:`text-ink font-medium`,children:[t.absage_quote,`%`]})]})]}):(0,U.jsx)(`p`,{className:`mt-1 text-xs text-muted/50`,children:t.hinweis||`Mindestens ${E.min_samples_fuer_quoten} Bewerbungen pro Stil noetig.`})]},e)})}),(0,U.jsxs)(`p`,{className:`mt-3 text-xs text-muted/50`,children:[`Stil per `,(0,U.jsx)(`code`,{className:`text-ink/70`,children:`bewerbung_stil_tracken()`}),` nach jedem Anschreiben festhalten — Claude macht das nach dem Standard-Workflow automatisch.`]})]}),(_?.recent_activity||[]).length>0&&(0,U.jsxs)(K,{className:`rounded-2xl`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-3`,children:[(0,U.jsx)(D,{size:14,className:`text-sky`}),(0,U.jsx)(`p`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-muted/60`,children:`Letzte Aktivitaet`})]}),(0,U.jsx)(`div`,{className:`grid gap-1.5`,children:_.recent_activity.map((e,t)=>(0,U.jsxs)(`div`,{className:`flex items-center gap-3 rounded-lg border border-white/[0.04] px-3 py-2 text-sm`,children:[(0,U.jsx)(`span`,{className:`shrink-0 text-[11px] text-muted/40 tabular-nums w-28`,children:Cn(e.event_date)}),(0,U.jsx)(q,{tone:e.status===`notiz`?`neutral`:e.status===`abgelehnt`?`danger`:e.status===`interview`?`amber`:`sky`,children:e.status||`Event`}),(0,U.jsxs)(`span`,{className:`flex-1 truncate text-ink font-medium`,children:[e.title,` — `,e.company]}),e.notes&&(0,U.jsx)(`span`,{className:`shrink-0 max-w-48 truncate text-xs text-muted/50`,children:e.notes})]},t))})]})]})]})}var vU=s({flushNow:()=>LU,getEnabledStatus:()=>IU,initActivityTracking:()=>MU,setLearningEnabled:()=>NU,track:()=>FU,trackEvent:()=>PU}),yU=1e4,bU=200,xU=[],SU=null,CU=`unknown`,wU=null,TU=null,EU=!1;function DU(){return new Date().toISOString()}function OU(){if(SU)return SU;try{let e=sessionStorage.getItem(`pbp_activity_session`);if(e)return SU=e,SU}catch{}SU=`s-`+Math.random().toString(36).slice(2,14)+`-`+Date.now();try{sessionStorage.setItem(`pbp_activity_session`,SU)}catch{}return SU}async function kU(){if(!xU.length)return;let e=xU.splice(0,xU.length);try{let t=await fetch(`/api/activity/track`,{method:`POST`,headers:{"Content-Type":`application/json`},body:JSON.stringify({events:e})});if(!t.ok)return;(await t.json())?.status===`disabled`&&(wU=!1,jU())}catch{}}function AU(){TU||=window.setInterval(kU,yU)}function jU(){TU&&=(window.clearInterval(TU),null)}function MU(e){EU||(EU=!0,CU=e||`unknown`,fetch(`/api/settings/learning`).then(e=>e.ok?e.json():null).then(e=>{wU=e?.learning_enabled!==!1,wU&&AU()}).catch(()=>{wU=!1}),window.addEventListener(`beforeunload`,()=>{if(!(!wU||!xU.length))try{let e=xU.splice(0,xU.length),t=new Blob([JSON.stringify({events:e})],{type:`application/json`});navigator.sendBeacon(`/api/activity/track`,t)}catch{}}))}function NU(e){wU=!!e,wU?AU():(jU(),xU=[])}function PU(e,t={}){wU!==!1&&(xU.length>=bU&&xU.splice(0,50),xU.push({event_type:e,entity_type:t.entityType||null,entity_id:t.entityId||null,page:t.page||null,action:t.action||null,metadata:t.metadata||null,session_id:OU(),app_version:CU,timestamp:DU()}))}var FU={pageView:e=>PU(`page_view`,{page:e}),click:(e,t,n)=>PU(`click`,{page:e,action:t,metadata:n}),filterApply:(e,t,n)=>PU(`filter_apply`,{page:e,action:`filter_apply`,metadata:{filter:t,value:String(n).slice(0,100)}}),workflowStart:e=>PU(`workflow_start`,{action:e}),workflowAbort:(e,t)=>PU(`workflow_abort`,{action:e,metadata:{reason:t||``}}),workflowComplete:e=>PU(`workflow_complete`,{action:e}),scroll:(()=>{let e=0;return(t,n,r)=>{let i=Date.now();i-e<1e3||(e=i,PU(`scroll`,{page:t,metadata:{y:n,y_pct:r>0?Math.round(n/r*100):0}}))}})(),dwell:(e,t)=>PU(`dwell`,{page:e,metadata:{duration_ms:Math.round(t)}}),llmCorrection:(e,t,n,r)=>PU(`llm_correction`,{entity_type:`job`,entity_id:r,action:`llm_correction`,metadata:{task:e,original:t,corrected_to:n}})};function IU(){return wU}async function LU(){await kU()}var RU={has_profile:!1,profile_name:null,profile:{completeness:0,complete:0,total:9,missing_areas:[],positionen:0,skills:0,dokumente:0},sources:{active:0,total:0},search:{status:`nie`},jobs:{active:0},applications:{total:0,follow_ups_total:0,follow_ups_due:0},readiness:{label:`Startklar machen`,tone:`blue`,headline:`Lege dein Profil an oder importiere vorhandene Unterlagen.`,description:`Ohne Profil kann PBP noch nicht für Jobsuche, Export oder Bewerbungen arbeiten.`,action_type:`prompt`,action_target:`/ersterfassung`,action_label:`Profil starten`},navigation:{}},zU=[{id:`dashboard`,title:`Dashboard`,icon:O,defaultMeta:`Status und Übersicht`},{id:`profil`,title:`Profil`,icon:pt,defaultMeta:`Lebenslauf-Basis und Vollständigkeit`},{id:`stellen`,title:`Stellen`,icon:ee,defaultMeta:`Treffer, Filter und Fit`},{id:`bewerbungen`,title:`Bewerbungen`,icon:Qe,defaultMeta:`TODOs, Follow-ups und Status`},{id:`kontakte`,title:`Kontakte`,icon:mt,defaultMeta:`Personen mit Rollen und Historie`},{id:`dokumente`,title:`Docs`,icon:Ce,defaultMeta:`Suche, Filter und Querverweis`},{id:`kalender`,title:`Kalender`,icon:te,defaultMeta:`Termine und ICS-Export`},{id:`statistiken`,title:`Statistiken`,icon:re,defaultMeta:`Charts, Trends und Export`},{id:`einstellungen`,title:`Einstellungen`,icon:$e,defaultMeta:`Quellen, Suche und Verhalten`}];function BU(e){return e===!0||e===`true`||e===1||e===`1`}function VU(){if(typeof document>`u`)return!1;let e=document.activeElement;if(!e)return!1;let t=(e.tagName||``).toUpperCase();return t===`INPUT`||t===`TEXTAREA`||t===`SELECT`?!0:!!e.isContentEditable}function HU(e,t){let n=(e?.name||``).trim()||`Unbenanntes Profil`,r=n.toLocaleLowerCase(`de-DE`);return(t.get(r)||0)<2?n:`${n} (ID ${e.id})`}function UU(e){let t=new Map;for(let n of e||[])!n?.id||t.has(n.id)||t.set(n.id,n);let n=[...t.values()],r=new Map;for(let e of n){let t=((e?.name||``).trim()||`Unbenanntes Profil`).toLocaleLowerCase(`de-DE`);r.set(t,(r.get(t)||0)+1)}return n.map(e=>({...e,display_name:HU(e,r)}))}function WU({navigateTo:e}){let[t,n]=(0,w.useState)(``),[r,i]=(0,w.useState)(null),[a,o]=(0,w.useState)(!1),[s,c]=(0,w.useState)(!1),l=(0,w.useRef)(null),u=(0,w.useRef)(null);(0,w.useEffect)(()=>{function e(e){u.current&&!u.current.contains(e.target)&&o(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[]),(0,w.useEffect)(()=>{if(l.current&&clearTimeout(l.current),!t||t.length<2){i(null);return}return l.current=setTimeout(async()=>{c(!0);try{i(await fetch(`/api/search?q=${encodeURIComponent(t)}&limit=6`).then(e=>e.ok?e.json():null)),o(!0)}catch{i(null)}finally{c(!1)}},280),()=>l.current&&clearTimeout(l.current)},[t]);function d(e){o(!1),n(``),i(null),e.url&&(window.location.hash=e.url.replace(/^#/,``))}return(0,U.jsxs)(`div`,{ref:u,className:`relative shrink-0 hidden md:block`,children:[(0,U.jsx)(`input`,{type:`search`,value:t,onChange:e=>n(e.target.value),onFocus:()=>r&&o(!0),placeholder:`Suchen...`,className:`w-48 lg:w-64 rounded-lg border border-white/8 bg-white/[0.03] px-3 py-1.5 text-[13px] text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`}),a&&r&&r.total>0&&(0,U.jsxs)(`div`,{className:`absolute right-0 top-full mt-1 w-[420px] max-h-[60vh] overflow-y-auto rounded-xl border border-white/10 bg-[var(--surface-1,_#1a1d23)] shadow-2xl shadow-black/40 z-[60]`,children:[r.groups.map(e=>(0,U.jsxs)(`div`,{className:`border-b border-white/5 last:border-b-0`,children:[(0,U.jsx)(`p`,{className:`px-3 pt-2 pb-1 text-[10px] uppercase tracking-[0.15em] text-teal/70`,children:e.label}),(0,U.jsx)(`ul`,{children:e.items.map(e=>(0,U.jsx)(`li`,{children:(0,U.jsxs)(`button`,{type:`button`,onClick:()=>d(e),className:`w-full text-left px-3 py-2 hover:bg-white/[0.04] transition-colors`,children:[(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink truncate`,children:e.title}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/60 truncate`,children:e.subtitle})]})},`${e.kind}-${e.id}`))})]},e.kind)),(0,U.jsxs)(`p`,{className:`px-3 py-1.5 text-[10px] text-muted/40 border-t border-white/5`,children:[r.total,` Treffer`]})]}),a&&r&&r.total===0&&t.length>=2&&(0,U.jsx)(`div`,{className:`absolute right-0 top-full mt-1 w-[420px] rounded-xl border border-white/10 bg-[var(--surface-1,_#1a1d23)] p-4 shadow-2xl shadow-black/40 z-[60]`,children:(0,U.jsxs)(`p`,{className:`text-sm text-muted/60`,children:[`Keine Treffer fuer „`,t,`"`]})}),s&&(0,U.jsx)(`div`,{className:`absolute right-2 top-1/2 -translate-y-1/2 text-muted/40 text-[10px]`,children:`...`})]})}function GU({pushToast:e,copyPrompt:t}){let[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(``),[o,s]=(0,w.useState)(null);if((0,w.useEffect)(()=>{let e=!0;return fetch(`/api/prompts`).then(e=>e.ok?e.json():Promise.reject(Error(`HTTP ${e.status}`))).then(t=>{e&&r(t?.prompts||[])}).catch(t=>{e&&s(t.message)}),()=>{e=!1}},[]),o)return(0,U.jsxs)(`p`,{className:`text-sm text-coral`,children:[`Prompts konnten nicht geladen werden: `,o]});if(n===null)return(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Lade...`});let c=i?n.filter(e=>(e.titel+` `+e.name+` `+e.beschreibung).toLowerCase().includes(i.toLowerCase())):n,l={};for(let e of c)l[e.kategorie]||(l[e.kategorie]=[]),l[e.kategorie].push(e);return(0,U.jsxs)(`div`,{className:`space-y-4`,children:[(0,U.jsxs)(`p`,{className:`text-sm text-muted/70`,children:[`Vollstaendige Liste aller `,n.length,` verfuegbaren MCP-Prompts. Klick auf „Kopieren" kopiert den Prompt in die Zwischenablage — dann in Claude Desktop einfuegen und absenden.`]}),(0,U.jsx)(`input`,{type:`text`,value:i,onChange:e=>a(e.target.value),placeholder:`Filter nach Titel oder Beschreibung...`,className:`w-full rounded-lg border border-white/8 bg-white/[0.03] px-3 py-2 text-sm text-ink placeholder-muted/40 focus:border-sky/40 focus:outline-none`}),c.length===0?(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Keine Prompts gefunden.`}):Object.entries(l).map(([e,n])=>(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h3`,{className:`text-[10px] font-bold uppercase tracking-[0.2em] text-teal/70 mb-2`,children:e}),(0,U.jsx)(`div`,{className:`space-y-1.5`,children:n.map(e=>(0,U.jsxs)(`div`,{className:`glass-card flex items-start justify-between gap-3 px-3 py-2.5 rounded-lg`,children:[(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:e.titel}),(0,U.jsxs)(`p`,{className:`text-[11px] text-muted/50 font-mono`,children:[`/`,e.name]}),e.beschreibung&&(0,U.jsx)(`p`,{className:`text-[12px] text-muted/70 mt-0.5`,children:e.beschreibung})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>t(`/${e.name}`),className:`shrink-0 rounded-md bg-sky/15 hover:bg-sky/25 text-sky text-[11px] font-medium px-2.5 py-1.5 transition-colors`,children:`Kopieren`})]},e.name))})]},e))]})}function KU(){let[e,t]=(0,w.useState)(xn()),[n,r]=(0,w.useState)(null),[i,a]=(0,w.useState)(0),[o,s]=(0,w.useState)(()=>Ut()),[c,l]=(0,w.useState)(()=>Gt()),[u,d]=(0,w.useState)(()=>Rt());(0,w.useEffect)(()=>{Jt(o,c,u)},[o,c,u]),(0,w.useEffect)(()=>{if(!e)return;let t=setTimeout(()=>{H(`/api/wiki/request-hint`,{page:e}).catch(()=>{})},800);return()=>clearTimeout(t)},[e]),(0,w.useEffect)(()=>{if(typeof window>`u`||!window.matchMedia)return;let e=window.matchMedia(`(prefers-color-scheme: light)`),t=()=>{o===`system`&&Jt(`system`,c,u)};return e.addEventListener?e.addEventListener(`change`,t):e.addListener(t),()=>{e.removeEventListener?e.removeEventListener(`change`,t):e.removeListener(t)}},[o,c]);function f(e){s(e),Wt(e)}function p(e,t,n){l(r=>{let i={light:{...r.light||{}},dark:{...r.dark||{}}};return n?i[e][t]=n:delete i[e][t],Kt(i),i})}function m(e){l(t=>{let n={light:e===`light`?{}:{...t.light||{}},dark:e===`dark`?{}:{...t.dark||{}}};return Kt(n),n})}function h(){s(`system`),Wt(`system`),l({light:{},dark:{}}),Kt({light:{},dark:{}}),d(`default`),zt(`default`)}function g(e){let t=Pt.some(t=>t.id===e)?e:`default`;d(t),zt(t)}let[_,v]=(0,w.useState)({loading:!0,status:{has_profile:!1},workspace:RU,profiles:[],profile:null,wizardCompleted:!1,searchStatus:{status:`nie`},profileOnboarding:{profileId:``,started:!1,completed:!1,dismissed:!1}}),[y,b]=(0,w.useState)([]),[x,S]=(0,w.useState)(!1),[C,T]=(0,w.useState)({name:``,email:``}),[E,D]=(0,w.useState)({open:!1,profile:null,confirm:``}),[O,k]=(0,w.useState)(!1),A=(0,w.useRef)(null),[j,M]=(0,w.useState)(!0),[N,P]=(0,w.useState)(!1),[ee,F]=(0,w.useState)(!1),[I,te]=(0,w.useState)(`hilfe`),[ne,re]=(0,w.useState)(!1),[ie,R]=(0,w.useState)({ui_state:`not_installed`}),[ae,oe]=(0,w.useState)(!1),[z,se]=(0,w.useState)(null),[le,ue]=(0,w.useState)(``),[de,fe]=(0,w.useState)(()=>{try{return localStorage.getItem(`pbp-sidebar-collapsed`)===`1`}catch{return!1}}),pe=(0,w.useRef)(new Map),ge=(0,w.useRef)(``),_e=(0,w.useRef)(!1),ve=(0,w.useRef)(!1),be=(0,w.useRef)(!1),xe=(0,w.useRef)(!1);(0,w.useEffect)(()=>{if(!O)return;function e(e){A.current&&!A.current.contains(e.target)&&k(!1)}return document.addEventListener(`mousedown`,e),()=>document.removeEventListener(`mousedown`,e)},[O]);function Se(e){b(t=>t.filter(t=>t.id!==e))}function B(e,t=`sky`,n={}){let r=String(e||``).trim(),i=n?.dedupe!==!1,a=Number(n?.dedupeWindowMs||5e3);if(i&&r){let e=`${t}:${r}`,n=Date.now();if(n-(pe.current.get(e)||0)200)for(let[e,t]of pe.current.entries())n-t>a*2&&pe.current.delete(e)}let o=typeof crypto<`u`&&crypto.randomUUID?crypto.randomUUID():`${Date.now()}-${Math.random()}`;b(i=>[...i,{id:o,message:r||e,tone:t,action:n?.action}]),window.setTimeout(()=>Se(o),Number(n?.duration)||4200)}async function we(e){try{let t=String(e||``).trim(),n=t.toLocaleLowerCase(`de-DE`),r=t;if(n.startsWith(`/`)){let e=t.slice(1).split(/\s+/)[0];if(e)try{let t=await V(`/api/workflow-prompt/${encodeURIComponent(e)}`);t?.prompt&&(r=t.prompt)}catch{B(`Anleitung konnte nicht geladen werden — der Originaltext wurde kopiert.`,`amber`)}}await An(r);let i=_.status?.mcp_connection?.status;if(i&&i!==`connected`&&B(`Claude Desktop scheint nicht verbunden zu sein. Bitte pruefen: 1) Laeuft das PBP-Fenster noch? 2) Claude Desktop komplett beenden und neu starten 3) Unter Einstellungen > Entwickler den MCP-Status pruefen.`,`amber`,{duration:12e3,dedupe:!0}),n===`/ersterfassung`||n.startsWith(`/ersterfassung `)){let e=_.profile?.id||_.profiles?.find(e=>e.is_active)?.id||``;e&&(await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${e}`,{value:`active`})]),(0,w.startTransition)(()=>{v(t=>({...t,profileOnboarding:{...t.profileOnboarding,profileId:e,started:!0,completed:!1,dismissed:!1}}))}))}B(`Anleitung kopiert! Wechsle jetzt zu Claude Desktop — Einfuegen mit Strg+V (Cmd+V auf Mac).`,`success`,{duration:1e4,action:{label:`Zu Claude wechseln`,onClick:()=>{window.open(`claude://`,`_self`)}}})}catch(e){B(`Kopieren fehlgeschlagen: ${e.message}`,`danger`)}}async function Te(e={}){let t=!!e?.quiet;t&&!e?.forceReload&&(xe.current=!0);try{let[n,r,i,o,s,c]=await Promise.all([V(`/api/status`),V(`/api/workspace-summary`),V(`/api/profiles`),Dt(`/api/profile`),V(`/api/user-preferences/wizard_completed`),V(`/api/search-status`)]),l=o?.id||i?.profiles?.find(e=>e.is_active)?.id||``,[u,d,f]=l?await Promise.all([V(`/api/user-preferences/profile_onboarding_started_${l}`),V(`/api/user-preferences/profile_onboarding_completed_${l}`),V(`/api/user-preferences/profile_onboarding_dismissed_${l}`)]):[{value:!1},{value:!1},{value:!1}],p={profileId:l,started:BU(u?.value),completed:BU(d?.value),dismissed:BU(f?.value)};if(t&&!e?.forceReload)try{let e=await Dt(`/api/live-update-token`);e?.token&&(ge.current=String(e.token),_e.current=!0,ve.current=!1)}catch{}finally{xe.current=!1}(0,w.startTransition)(()=>{v({loading:!1,status:n,workspace:r||RU,profiles:i?.profiles||[],profile:o,wizardCompleted:!!s?.value,searchStatus:c||{status:`nie`},profileOnboarding:p}),P(p.started&&!p.completed&&!p.dismissed),(!t||e?.forceReload)&&a(e=>e+1)})}catch(e){t||B(`Dashboard konnte nicht geladen werden: ${e.message}`,`danger`),(0,w.startTransition)(()=>{v(e=>({...e,loading:!1}))})}}let De=(0,w.useEffectEvent)(()=>{t(xn())}),Oe=(0,w.useEffectEvent)(async()=>{if(!be.current){be.current=!0;try{let e=await Dt(`/api/live-update-token`);if(!e?.token)return;let t=String(e.token);if(!_e.current){ge.current=t,_e.current=!0,ve.current=!1;return}let n=t!==ge.current;if(n&&(ge.current=t),xe.current){ve.current=!1;return}if(!n&&!ve.current)return;if(VU()){ve.current=!0;return}ve.current=!1,await Te({quiet:!0,forceReload:!0})}catch{}finally{be.current=!1}}});(0,w.useEffect)(()=>{Te(),Dt(`/api/update-check`).then(e=>{e?.update_available&&se(e)}),Dt(`/api/status`).then(e=>{MU(e?.pbp_version||`unknown`);try{FU.pageView(xn())}catch{}})},[]);let ke=(0,w.useRef)({page:null,ts:Date.now()});(0,w.useEffect)(()=>{let t=ke.current;if(t.page&&t.page!==e)try{FU.dwell(t.page,Date.now()-t.ts)}catch{}ke.current={page:e,ts:Date.now()}},[e]),(0,w.useEffect)(()=>(window.addEventListener(`hashchange`,De),()=>window.removeEventListener(`hashchange`,De)),[De]),(0,w.useEffect)(()=>{let e=!1,t=null,n=async()=>{e||(await Oe(),!e&&(t=window.setTimeout(n,2e3)))};return n(),()=>{e=!0,ve.current=!1,be.current=!1,t&&window.clearTimeout(t)}},[Oe]),(0,w.useEffect)(()=>{let e=!1,t=window.setInterval(async()=>{if(!e)try{let t=await Dt(`/api/status`);t?.mcp_connection&&!e&&(0,w.startTransition)(()=>{v(e=>e.status?.mcp_connection?.status===t.mcp_connection.status?e:{...e,status:{...e.status,mcp_connection:t.mcp_connection}})})}catch{}},3e4);return()=>{e=!0,window.clearInterval(t)}},[]),(0,w.useEffect)(()=>{let e=!1,t=async()=>{if(!e)try{let t=await Dt(`/api/llm/status`);t?.ui_state&&!e&&(0,w.startTransition)(()=>R(t))}catch{}};t();let n=window.setInterval(t,6e4);return()=>{e=!0,window.clearInterval(n)}},[]);function Ae(e,n=null){r(n?{page:e,...n,nonce:Date.now()}:null),t(e),ue(``),window.location.hash!==`#${e}`&&(window.location.hash=e);try{FU.pageView(e)}catch{}}function je(){fe(e=>{let t=!e;try{localStorage.setItem(`pbp-sidebar-collapsed`,t?`1`:`0`)}catch{}return t})}let Me=zU.find(t=>t.id===e)?.title||``;async function Ne(e){if(!e)return;if(e.prompt){await we(e.prompt);return}let t=Fn(e.action_target||e.actionTarget);if(t){Ae(t.page,t);return}if(e.action_type===`page`&&e.action_target){Ae(e.action_target);return}e.action_type===`prompt`&&e.action_target&&await we(e.action_target)}async function Pe(){let e=_.workspace?.readiness;if(e){if(e.action_type===`prompt`){await we(e.action_target);return}e.action_target&&Ae(e.action_target)}}async function Fe(e){try{await H(`/api/profiles/switch`,{profile_id:e}),await Te(),B(`Aktives Profil gewechselt.`,`success`)}catch(e){B(`Profilwechsel fehlgeschlagen: ${e.message}`,`danger`)}}async function Le(e){e.preventDefault();try{let e=await H(`/api/profiles/new`,C);if(e?.id)try{await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e.id}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_dismissed_${e.id}`,{value:!1}),H(`/api/user-preferences/profile_onboarding_conversation_${e.id}`,{value:`idle`})]),P(!0)}catch(e){B(`Profil wurde erstellt, aber das Setup konnte nicht vorbereitet werden: ${e.message}`,`danger`)}S(!1),T({name:``,email:``}),await Te(),Ae(`dashboard`),B(`Neues Profil erstellt.`,`success`)}catch(e){B(`Profil konnte nicht erstellt werden: ${e.message}`,`danger`)}}async function Re(){try{await kt(`/api/profiles/${E.profile.id}`),D({open:!1,profile:null,confirm:``}),await Te(),B(`Profil gelöscht.`,`success`)}catch(e){B(`Löschen fehlgeschlagen: ${e.message}`,`danger`)}}async function Ve(e=!1){if(M(!1),e)try{await H(`/api/user-preferences/wizard_completed`,{value:!0})}catch(e){B(`Wizard-Status konnte nicht gespeichert werden: ${e.message}`,`danger`)}}async function He(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!1),e)try{await H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!0}),(0,w.startTransition)(()=>{v(e=>({...e,profileOnboarding:{...e.profileOnboarding,dismissed:!0}}))})}catch(e){B(`Onboarding konnte nicht geschlossen werden: ${e.message}`,`danger`)}}async function Ue(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!0),e)try{await H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1}),(0,w.startTransition)(()=>{v(e=>({...e,profileOnboarding:{...e.profileOnboarding,dismissed:!1}}))})}catch(e){B(`Onboarding konnte nicht erneut geöffnet werden: ${e.message}`,`danger`)}}async function We(){let e=_.profileOnboarding?.profileId||_.profile?.id;if(P(!1),e)try{await Promise.all([H(`/api/user-preferences/profile_onboarding_started_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_completed_${e}`,{value:!0}),H(`/api/user-preferences/profile_onboarding_dismissed_${e}`,{value:!1})]),await Te(),B(`Profil-Setup abgeschlossen.`,`success`)}catch(e){B(`Onboarding konnte nicht abgeschlossen werden: ${e.message}`,`danger`)}}let Ge=_.workspace?.readiness||RU.readiness,Ke=UU(_.profiles),qe=_.profile?.id||Ke.find(e=>e.is_active)?.id||``,Ye=new Set(Ke.map(e=>e.id)).has(qe)?qe:Ke.find(e=>e.is_active)?.id||Ke[0]?.id||``,Xe=Ke.find(e=>e.id===Ye)?.display_name||`Kein Profil`,Ze=!_.loading&&!_.status?.has_profile&&!_.wizardCompleted&&j,et=!_.loading&&_.status?.has_profile&&_.profileOnboarding?.started&&!_.profileOnboarding?.completed&&N,tt=!_.loading&&_.status?.has_profile&&_.profileOnboarding?.started&&!_.profileOnboarding?.completed&&!et,nt=(_.workspace?.profile?.completeness||0)>=100,rt=!_.loading&&!nt&&(_.workspace?.readiness?.stage||Ge.stage)!==`im_fluss`,at=(Ge.action_target||``).toString().toLowerCase()!==`dashboard`&&(Ge.action_label||``).toString().toLowerCase()!==`dashboard ansehen`;async function st(e={}){try{let t=await H(`/api/jobsuche/start`,e);return t?.status===`gestartet`?(B(`Jobsuche laeuft auf ${t.quellen?.length||0} Portalen. Fortschritt siehst du in der Sidebar.`,`teal`),Te(),t):t?.status===`laeuft_bereits`?(B(`Eine Jobsuche laeuft bereits.`,`amber`),t):t?.status===`keine_quellen`?(B(`Keine Job-Quellen aktiviert — bitte unter Einstellungen → Job-Quellen auswaehlen.`,`amber`,{duration:6e3}),t):(t?.status===`nur_manuelle_quellen`&&B(`Alle gewaehlten Quellen laufen nur via Claude-in-Chrome.`,`amber`,{duration:6e3}),t)}catch(e){throw B(e?.message||`Jobsuche konnte nicht gestartet werden.`,`rose`),e}}let ct={page:e,intent:n,clearIntent:()=>r(null),chrome:_,reloadKey:i,refreshChrome:Te,navigateTo:Ae,pushToast:B,copyPrompt:we,startJobsuche:st,executeAction:Ne,openCreateProfileModal:()=>S(!0),openProfileOnboarding:Ue,themeMode:o,themeCustom:c,setThemeMode:f,setThemeColor:p,resetThemeMode:m,resetAllTheme:h,defaultPalette:Nt,themePreset:u,setThemePreset:g,themePresets:Pt},lt={profil:_.workspace?.navigation?.profile_badge,stellen:_.workspace?.navigation?.jobs_badge,bewerbungen:_.workspace?.navigation?.applications_badge,einstellungen:_.workspace?.navigation?.settings_badge},ut={dashboard:Ge.label||zU[0].defaultMeta},dt=null;return e===`profil`?dt={items:[{id:`profil-uebersicht`,label:`Uebersicht`},{id:`profil-persoenlich`,label:`Persoenliche Daten`},{id:`profil-suchkriterien`,label:`Suchkriterien`},{id:`profil-blacklist`,label:`Blacklist`},{id:`profil-erfahrung`,label:`Berufserfahrung`},{id:`profil-ausbildung`,label:`Ausbildung`},{id:`profil-skills`,label:`Skills`},{id:`profil-dokumente`,label:`Dokumente`}],onSelect:e=>{document.getElementById(e)?.scrollIntoView({behavior:`smooth`,block:`start`}),ue({"profil-uebersicht":`Uebersicht`,"profil-persoenlich":`Persoenliche Daten`,"profil-suchkriterien":`Suchkriterien`,"profil-blacklist":`Blacklist`,"profil-erfahrung":`Berufserfahrung`,"profil-ausbildung":`Ausbildung`,"profil-skills":`Skills`,"profil-dokumente":`Dokumente`}[e]||``)}}:e===`einstellungen`?dt={items:[{id:`settings-quellen`,label:`Quellen`},{id:`settings-ai`,label:`Lokale KI`},{id:`settings-automatik`,label:`Automatik`},{id:`settings-system`,label:`System`},{id:`settings-erscheinungsbild`,label:`Erscheinungsbild`},{id:`settings-datenschutz`,label:`Datenschutz`},{id:`settings-logs`,label:`Logs`},{id:`settings-gefahrenzone`,label:`Gefahrenzone`}],onSelect:e=>{let t=e.replace(`settings-`,``);document.dispatchEvent(new CustomEvent(`settings-nav`,{detail:{tab:t}})),ue({quellen:`Quellen`,ai:`Lokale KI`,automatik:`Automatik`,system:`System`,erscheinungsbild:`Erscheinungsbild`,datenschutz:`Datenschutz`,logs:`Logs`,gefahrenzone:`Gefahrenzone`}[t]||``)}}:e===`kalender`&&(dt={items:[{id:`cal-view-kalender`,label:`Kalender`},{id:`cal-view-log`,label:`Aktivitaetslog`},{id:`cal-period-woche`,label:` Woche`},{id:`cal-period-monat`,label:` Monat`},{id:`cal-period-quartal`,label:` Quartal`},{id:`cal-period-halbjahr`,label:` Halbjahr`},{id:`cal-filter-all`,label:`Alle Termine`},{id:`cal-filter-upcoming`,label:`Kommende`},{id:`cal-filter-past`,label:`Vergangene`}],onSelect:e=>document.dispatchEvent(new CustomEvent(`cal-nav`,{detail:{action:e}}))}),(0,U.jsx)(At.Provider,{value:ct,children:(0,U.jsxs)(`div`,{className:`app-shell flex min-h-screen`,children:[(0,U.jsx)(rr,{toasts:y,onDismiss:Se}),(0,U.jsx)(xr,{tabs:zU,activePage:e,onSelectPage:Ae,subNavigation:dt,badges:lt,meta:ut,brand:{version:_.status?.version||null,connectionStatus:_.status?.mcp_connection?.status||`unknown`,onConnectionClick:()=>{_.status?.mcp_connection?.status===`connected`?window.open(`claude://`,`_self`):re(!0)},llmState:ie?.ui_state||`not_installed`,onLlmClick:()=>oe(!0)},collapsed:de,onToggle:je,footerSlot:(0,U.jsxs)(U.Fragment,{children:[(0,U.jsx)(_n,{onNavigateToJobs:()=>Ae(`stellen`)}),(0,U.jsx)(Fr,{collapsed:de,onToast:B,onNavigateToSettings:e=>{Ae(`einstellungen`),setTimeout(()=>{document.dispatchEvent(new CustomEvent(`settings-nav`,{detail:{tab:e||`ai`}}))},50)},onNavigate:(e,t)=>{e===`application`?Ae(`bewerbungen`,{applicationId:t}):e===`job`?Ae(`stellen`,{jobHash:t}):e===`job_filter`?t===`missing_desc`?Ae(`stellen`,{missingDescriptionOnly:!0}):Ae(`stellen`):e===`page`&&Ae(t)}})]})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0 flex flex-col`,children:[(0,U.jsx)(`header`,{className:`app-topbar glass-topbar sticky top-0 z-50`,children:(0,U.jsxs)(`div`,{className:`flex w-full items-center gap-x-3 gap-y-2 px-5 py-2.5 sm:px-8`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:je,className:`shrink-0 rounded-lg p-2 text-muted/60 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:de?`Sidebar ausklappen`:`Sidebar einklappen`,children:(0,U.jsx)(Ie,{size:20})}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2.5 min-w-0 flex-1`,children:[(0,U.jsx)(`img`,{src:`/static/dashboard/pbp.png`,alt:`PBP`,className:`h-7 w-7 shrink-0 rounded-md`,onError:e=>{e.currentTarget.style.display=`none`}}),(0,U.jsxs)(`div`,{className:`flex items-baseline gap-2 min-w-0 truncate`,children:[(0,U.jsx)(`span`,{className:`font-display text-[15px] font-semibold text-ink whitespace-nowrap`,children:`PBP`}),(0,U.jsx)(`span`,{className:`text-[12px] text-muted/50 whitespace-nowrap hidden md:inline`,children:`Persönliches Bewerbungs-Portal`}),(0,U.jsx)(`span`,{className:`text-muted/30 select-none`,children:`·`}),(0,U.jsxs)(`span`,{className:`text-[14px] font-medium text-ink/80 whitespace-nowrap truncate`,children:[`/`,Me,le?`/${le}`:``]})]})]}),(0,U.jsx)(WU,{navigateTo:Ae}),(()=>{let e=o===`system`?`light`:o===`light`?`dark`:`system`;return(0,U.jsx)(`button`,{type:`button`,onClick:()=>f(e),className:`shrink-0 rounded-lg p-1.5 text-muted/60 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:`Theme: ${o===`system`?`System`:o===`light`?`Hell`:`Dunkel`} — klicken fuer ${e===`system`?`System`:e===`light`?`Hell`:`Dunkel`}`,children:(0,U.jsx)(o===`system`?ze:o===`light`?it:Be,{size:18})})})(),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{M(!1),F(!0)},className:`shrink-0 rounded-lg p-1.5 text-muted/50 hover:text-ink hover:bg-white/[0.04] transition-colors`,title:`Hilfe & Support`,children:(0,U.jsx)(ce,{size:18})}),(0,U.jsxs)(`div`,{id:`profile-switcher`,ref:A,className:`relative flex shrink-0 items-center`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`flex items-center gap-2.5 rounded-xl border border-white/8 bg-white/[0.04] px-3 py-1.5 text-[13px] font-medium text-ink transition-all duration-200 hover:border-white/12 hover:bg-white/[0.07]`,onClick:()=>k(e=>!e),children:[(0,U.jsx)(`span`,{className:`flex h-6 w-6 items-center justify-center rounded-full bg-teal/15 text-[10px] font-bold uppercase text-teal`,children:Xe[0]||`?`}),(0,U.jsx)(`span`,{className:`max-w-[10rem] truncate`,children:Xe}),(0,U.jsx)(L,{size:14,className:W(`text-muted/50 transition-transform duration-200`,O&&`rotate-180`)})]}),O&&(0,U.jsxs)(`div`,{className:`absolute right-0 top-full z-50 mt-2 min-w-[13rem] overflow-hidden rounded-xl border border-white/10 shadow-2xl backdrop-blur-2xl animate-rise`,style:{background:`rgba(30, 34, 52, 0.95)`},children:[(0,U.jsxs)(`div`,{className:`p-1`,children:[Ke.length===0&&(0,U.jsx)(`p`,{className:`px-3 py-2 text-[12px] text-muted/50`,children:`Kein Profil vorhanden`}),Ke.map(e=>(0,U.jsxs)(`button`,{type:`button`,className:W(`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] transition-colors duration-150`,e.id===Ye?`bg-teal/10 font-medium text-teal`:`text-muted hover:bg-white/[0.06] hover:text-ink`),onClick:()=>{Fe(e.id),k(!1)},children:[(0,U.jsx)(`span`,{className:W(`flex h-6 w-6 shrink-0 items-center justify-center rounded-full text-[10px] font-bold uppercase`,e.id===Ye?`bg-teal/20 text-teal`:`bg-white/[0.06] text-muted/60`),children:e.display_name?.[0]||`?`}),(0,U.jsx)(`span`,{className:`truncate`,children:e.display_name})]},e.id))]}),(0,U.jsxs)(`div`,{className:`border-t border-white/6 p-1`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] text-muted transition-colors duration-150 hover:bg-white/[0.06] hover:text-ink`,onClick:()=>{S(!0),k(!1)},children:[(0,U.jsx)(Je,{size:14}),(0,U.jsx)(`span`,{children:`Neues Profil`})]}),(0,U.jsxs)(`button`,{type:`button`,className:`flex w-full items-center gap-2.5 rounded-lg px-3 py-2 text-[13px] text-coral/60 transition-colors duration-150 hover:bg-coral/5 hover:text-coral disabled:cursor-not-allowed disabled:opacity-40`,disabled:!_.profile,onClick:()=>{D({open:!0,profile:_.profile,confirm:``}),k(!1)},children:[(0,U.jsx)(ot,{size:14}),(0,U.jsx)(`span`,{children:`Profil löschen`})]})]})]})]})]})}),z?.update_available&&(0,U.jsx)(`div`,{className:`mx-auto w-full max-w-[92rem] px-5 sm:px-8 pt-2`,children:(0,U.jsxs)(`div`,{className:`flex items-center justify-between gap-3 rounded-xl border border-amber/20 bg-amber/8 px-4 py-2.5 text-sm text-amber`,children:[(0,U.jsxs)(`span`,{children:[`Neue Version verfuegbar: `,(0,U.jsxs)(`strong`,{children:[`v`,z.latest_version]}),z.release_name?` — ${z.release_name}`:``]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-2`,children:[z.release_url&&(0,U.jsx)(`a`,{href:z.release_url,target:`_blank`,rel:`noopener noreferrer`,className:`rounded-lg bg-amber/15 px-3 py-1 text-xs font-medium hover:bg-amber/25 transition-colors`,children:`Update-Anleitung`}),(0,U.jsx)(`button`,{type:`button`,className:`rounded-lg p-1 hover:bg-amber/15 transition-colors`,onClick:()=>se(null),children:(0,U.jsx)(`svg`,{width:`14`,height:`14`,viewBox:`0 0 14 14`,fill:`none`,stroke:`currentColor`,strokeWidth:`1.5`,strokeLinecap:`round`,children:(0,U.jsx)(`path`,{d:`M3.5 3.5l7 7M10.5 3.5l-7 7`})})})]})]})}),rt?(0,U.jsx)(`div`,{id:`workspace-strip`,className:W(`workspace-strip mx-auto w-full max-w-[92rem] px-5 pb-2 pt-4 sm:px-8`,!_.loading&&`active`),children:(0,U.jsxs)(K,{className:`workspace-grid flex flex-wrap items-center gap-x-6 gap-y-3 rounded-xl px-5 py-3`,children:[(0,U.jsxs)(`div`,{className:`min-w-0 flex-1`,children:[(0,U.jsx)(`h2`,{className:`workspace-headline truncate text-[13px] font-semibold text-ink`,children:Ge.headline}),(0,U.jsxs)(`p`,{className:`mt-0.5 truncate text-[12px] text-muted/50`,children:[_.workspace?.profile_name||`Kein Profil`,` — `,Ge.description]})]}),(0,U.jsxs)(`div`,{className:`flex items-center gap-5 text-center`,children:[(0,U.jsxs)(`div`,{className:`workspace-card`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Profil`}),(0,U.jsxs)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:[_.workspace?.profile?.completeness||0,`%`]})]}),(0,U.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,U.jsxs)(`div`,{className:`workspace-card`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Quellen`}),(0,U.jsxs)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:[_.workspace?.sources?.active||0,`/`,_.workspace?.sources?.total||0]})]}),(0,U.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,U.jsxs)(`div`,{className:`workspace-card`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Stellen`}),(0,U.jsx)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:_.workspace?.jobs?.active||0})]}),(0,U.jsx)(`div`,{className:`h-6 w-px bg-white/[0.06]`}),(0,U.jsxs)(`div`,{className:`workspace-card`,children:[(0,U.jsx)(`p`,{className:`text-[10px] font-semibold uppercase tracking-[0.12em] text-muted/40`,children:`Bewerbungen aktiv`}),(0,U.jsx)(`p`,{className:`workspace-value text-base font-semibold text-ink`,children:_.workspace?.applications?.active??_.workspace?.applications?.total??0})]})]}),at||tt?(0,U.jsxs)(`div`,{className:`workspace-actions flex shrink-0 gap-2`,children:[at?(0,U.jsx)(G,{size:`sm`,onClick:Pe,children:Ge.action_label||`Öffnen`}):null,tt?(0,U.jsx)(G,{size:`sm`,variant:`ghost`,onClick:Ue,children:`Setup fortsetzen`}):null]}):null]})}):null,!_.loading&&_.status?.has_profile&&_.workspace?.sources?.active===0?(0,U.jsx)(`div`,{id:`source-banner`,className:`mx-auto flex w-full max-w-[92rem] flex-wrap items-center gap-3 px-5 pb-2 sm:px-8`,children:(0,U.jsxs)(K,{className:`glass-banner glass-banner-amber flex w-full flex-wrap items-center justify-between gap-3 rounded-xl`,children:[(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-amber`,children:`Keine Jobquellen aktiviert. Ohne Quellen kann keine Suche starten.`}),(0,U.jsxs)(G,{size:`sm`,onClick:()=>Ae(`einstellungen`),children:[(0,U.jsx)($e,{size:14}),`Quellen aktivieren`]})]})}):null,(0,U.jsx)(`div`,{className:`flex w-full px-5 pt-4 sm:px-8 overflow-x-auto`,children:(0,U.jsx)(`main`,{className:`min-w-0 flex-1 pb-12`,children:(0,U.jsxs)(Xt,{children:[e===`dashboard`?(0,U.jsx)(vi,{}):null,e===`profil`?(0,U.jsx)(na,{}):null,e===`stellen`?(0,U.jsx)(Pi,{}):null,e===`bewerbungen`?(0,U.jsx)(Xr,{}):null,e===`kontakte`?(0,U.jsx)(mi,{}):null,e===`dokumente`?(0,U.jsx)(Wa,{}):null,e===`kalender`?(0,U.jsx)(za,{}):null,e===`statistiken`?(0,U.jsx)(_U,{}):null,e===`einstellungen`?(0,U.jsx)(ba,{}):null]},e)})}),(0,U.jsx)(`footer`,{className:`mt-auto border-t border-white/5 px-6 py-3 text-xs text-muted/50`,children:(0,U.jsxs)(`div`,{className:`mx-auto flex max-w-6xl flex-wrap items-center justify-center gap-x-4 gap-y-1 text-center`,children:[(0,U.jsxs)(`span`,{children:[`PBP v`,_.status?.version||`?`]}),(0,U.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted/30`,children:`·`}),(0,U.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 hover:text-ink`,children:[`Open Source auf GitHub`,(0,U.jsx)(ye,{size:10,"aria-hidden":`true`})]}),(0,U.jsx)(`span`,{"aria-hidden":`true`,className:`text-muted/30`,children:`·`}),(0,U.jsxs)(`a`,{href:`https://paypal.me/birzite`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-1 hover:text-ink`,"aria-label":`Kaffee spendieren via PayPal`,children:[(0,U.jsx)(me,{size:12,"aria-hidden":`true`}),`Gefaellt dir PBP? Spendier mir einen Kaffee`]})]})}),(0,U.jsx)(nr,{open:x,title:`Neues Profil anlegen`,description:`Lege ein weiteres Profil für einen anderen Karrierepfad oder Zielmarkt an.`,onClose:()=>S(!1),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>S(!1),children:`Abbrechen`}),(0,U.jsx)(G,{type:`submit`,form:`create-profile-form`,children:`Profil anlegen`})]}),children:(0,U.jsxs)(`form`,{id:`create-profile-form`,className:`grid gap-4`,onSubmit:Le,children:[(0,U.jsx)(J,{label:`Profilname`,children:(0,U.jsx)(Y,{autoFocus:!0,value:C.name,onChange:e=>T(t=>({...t,name:e.target.value})),placeholder:`z. B. IT Consulting`,required:!0})}),(0,U.jsx)(J,{label:`E-Mail`,children:(0,U.jsx)(Y,{type:`email`,value:C.email,onChange:e=>T(t=>({...t,email:e.target.value})),placeholder:`optional`})})]})}),(0,U.jsx)(nr,{open:E.open,title:`Profil unwiderruflich löschen`,description:`Tippe den Profilnamen exakt ein, damit das Profil inklusive Daten gelöscht werden kann.`,onClose:()=>D({open:!1,profile:null,confirm:``}),footer:(0,U.jsxs)(`div`,{className:`flex justify-end gap-3`,children:[(0,U.jsx)(G,{variant:`ghost`,onClick:()=>D({open:!1,profile:null,confirm:``}),children:`Abbrechen`}),(0,U.jsx)(G,{variant:`danger`,disabled:E.confirm!==E.profile?.name,onClick:Re,children:`Endgültig löschen`})]}),children:(0,U.jsxs)(`div`,{className:`grid gap-4`,children:[(0,U.jsx)(K,{className:`glass-banner glass-banner-danger rounded-[24px] shadow-none`,children:(0,U.jsxs)(`p`,{className:`text-sm text-ink`,children:[`Betroffen sind alle Positionen, Skills, Ausbildungsdaten, Dokumente, Jobs und Bewerbungen des Profils `,(0,U.jsx)(`strong`,{children:E.profile?.name}),` (ID`,` `,E.profile?.id,`).`]})}),(0,U.jsx)(J,{label:`Profilname bestätigen`,children:(0,U.jsx)(Y,{value:E.confirm,onChange:e=>D(t=>({...t,confirm:e.target.value})),placeholder:E.profile?.name||``})})]})}),(0,U.jsx)(`div`,{id:`wizard-overlay`,className:W(`glass-overlay fixed inset-x-0 bottom-0 top-[52px] z-[45] items-center justify-center px-4 py-6`,Ze?`show flex`:`hidden`),children:(0,U.jsxs)(`div`,{className:`glass-card-strong w-full max-w-2xl rounded-2xl p-6 animate-rise`,children:[(0,U.jsxs)(`div`,{className:`mb-5 flex flex-wrap items-start justify-between gap-3`,children:[(0,U.jsxs)(`div`,{children:[(0,U.jsx)(`h2`,{className:`font-display text-xl font-semibold text-ink`,children:`Willkommen beim Bewerbungs-Assistenten`}),(0,U.jsx)(`p`,{className:`mt-1 max-w-lg text-[13px] text-muted/60`,children:`Am schnellsten startest du mit dem Kennlerngespräch — Claude fuehrt dich durch alles.`})]}),(0,U.jsx)(G,{variant:`ghost`,size:`sm`,onClick:()=>Ve(!1),children:`Später`})]}),(0,U.jsx)(K,{className:`glass-card-soft rounded-xl border border-sky/20 mb-3`,children:(0,U.jsxs)(`div`,{className:`flex items-center gap-3`,children:[(0,U.jsx)(`div`,{className:`glass-icon h-10 w-10 shrink-0 bg-sky/15 text-sky rounded-xl flex items-center justify-center`,children:(0,U.jsx)(Qe,{size:18})}),(0,U.jsxs)(`div`,{className:`flex-1 min-w-0`,children:[(0,U.jsx)(`h3`,{className:`text-base font-semibold text-ink`,children:`Kennlerngespräch starten`}),(0,U.jsx)(`p`,{className:`text-[12px] text-muted/50`,children:`Claude fragt dich alles Wichtige und baut dein Profil automatisch auf.`})]}),(0,U.jsxs)(G,{size:`sm`,onClick:()=>{Ve(!0),we(`/ersterfassung`)},children:[(0,U.jsx)(he,{size:14}),`Starten`]})]})}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40 mb-2 uppercase tracking-widest`,children:`Oder manuell:`}),(0,U.jsxs)(`div`,{className:`grid gap-2 sm:grid-cols-3`,children:[(0,U.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`profil`)},children:[(0,U.jsx)(pt,{size:14,className:`text-muted/40 mb-1`}),(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Profil anlegen`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Manuell ausfuellen`})]}),(0,U.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`profil`,{composer:`document`})},children:[(0,U.jsx)(Ce,{size:14,className:`text-muted/40 mb-1`}),(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Unterlagen importieren`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`PDF, DOCX hochladen`})]}),(0,U.jsxs)(`button`,{type:`button`,className:`glass-card-soft rounded-xl p-3 text-left hover:bg-white/[0.04] transition-colors`,onClick:()=>{Ve(!0),Ae(`einstellungen`)},children:[(0,U.jsx)($e,{size:14,className:`text-muted/40 mb-1`}),(0,U.jsx)(`p`,{className:`text-[13px] font-medium text-ink`,children:`Quellen aktivieren`}),(0,U.jsx)(`p`,{className:`text-[11px] text-muted/40`,children:`Jobportale einrichten`})]})]})]})}),(0,U.jsx)(vr,{open:et,profile:_.profile,workspace:_.workspace,onDismiss:He,onComplete:We}),ee&&(0,U.jsxs)(nr,{open:ee,title:`Hilfe & Support`,onClose:()=>F(!1),children:[(0,U.jsx)(`div`,{className:`flex gap-1 mb-4 border-b border-white/8 pb-2 overflow-x-auto`,children:[{id:`hilfe`,label:`Hilfe`},{id:`prompts`,label:`Prompts`},{id:`faq`,label:`FAQ`},{id:`troubleshooting`,label:`Probleme`},{id:`bug`,label:`Bug melden`},{id:`feature`,label:`Feature`},{id:`credits`,label:`Credits`}].map(e=>(0,U.jsx)(`button`,{type:`button`,onClick:()=>te(e.id),className:`px-3 py-1.5 rounded-lg text-sm transition-colors ${I===e.id?`bg-sky/15 text-sky font-medium`:`text-muted/50 hover:text-ink hover:bg-white/[0.04]`}`,children:e.label},e.id))}),I===`hilfe`&&(0,U.jsxs)(`div`,{className:`space-y-3 text-sm text-muted/60`,children:[e===`dashboard`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Dashboard`}),(0,U.jsx)(`p`,{children:`Das Dashboard zeigt dir eine Übersicht über dein Profil, aktuelle Stellen und Bewerbungen. Die Metriken aktualisieren sich automatisch.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Top-Stellen`}),(0,U.jsx)(`p`,{children:`Zeigt die 3 besten Stellen nach Score, bei denen du dich noch nicht beworben hast. Klicke darauf, um zur Stellenansicht zu springen.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Follow-Ups`}),(0,U.jsx)(`p`,{children:`Fällige Nachfass-Aktionen werden hier hervorgehoben. Klicke auf "Erledigt", um sie abzuhaken.`})]})]}),e===`profil`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Profil aufbauen`}),(0,U.jsx)(`p`,{children:`Dein Profil ist die Basis für alles: Lebenslauf-Export, Fit-Analysen und personalisierte Anschreiben. Je vollständiger, desto besser.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Positionen & Projekte`}),(0,U.jsx)(`p`,{children:`Fülle Positionen mit dem STAR-Format aus (Situation, Task, Action, Result). Das ergibt starke Projektbeschreibungen für den Lebenslauf.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Dokumente`}),(0,U.jsx)(`p`,{children:`Ziehe PDF- oder DOCX-Dateien per Drag & Drop ins Fenster. Der Dokumenttyp wird automatisch erkannt.`})]})]}),e===`stellen`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Stellensuche`}),(0,U.jsx)(`p`,{children:`Aktiviere Jobquellen unter "Einstellungen" und starte eine Suche über Claude mit "/jobsuche_workflow". Die Stellen werden automatisch bewertet.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Score`}),(0,U.jsx)(`p`,{children:`Der Score (0–100) zeigt die Passgenauigkeit: Entfernung, Skills, Gehalt und Keywords fliessen ein. Klicke auf den Score um ihn manuell anzupassen.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Fit-Analyse`}),(0,U.jsx)(`p`,{children:`Klicke auf "Fit-Analyse" für eine detaillierte Auswertung der MUSS-/PLUS-Treffer und Risiken.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Anpinnen & Blacklist`}),(0,U.jsx)(`p`,{children:`Pinne interessante Stellen an, damit sie oben bleiben. Unpassende Firmen oder Keywords kannst du auf die Blacklist setzen.`})]})]}),e===`bewerbungen`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Bewerbungen verwalten`}),(0,U.jsx)(`p`,{children:`Hier trackst du alle laufenden Bewerbungen mit Status, Timeline und Notizen. Ändere den Status per Dropdown.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Timeline & Notizen`}),(0,U.jsx)(`p`,{children:`Klicke auf eine Bewerbung für die vollständige Timeline. Dort kannst du Notizen hinzufügen und Follow-ups planen.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Follow-Ups`}),(0,U.jsx)(`p`,{children:`Plane automatische Erinnerungen (z.B. "In 2 Wochen nachfragen"). Die werden auf dem Dashboard als TODO angezeigt.`})]})]}),e===`statistiken`&&(0,U.jsx)(U.Fragment,{children:(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Statistiken`}),(0,U.jsx)(`p`,{children:`Visualisiert Bewerbungsverlauf, Erfolgsquoten, Antwortzeiten und Gehaltsverteilung. Exportiere Berichte als PDF.`})]})}),e===`einstellungen`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Jobquellen`}),(0,U.jsx)(`p`,{children:`Aktiviere und deaktiviere einzelne Quellen (StepStone, Indeed, LinkedIn, etc.). LinkedIn und XING benötigen Login-Daten.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Suchkriterien`}),(0,U.jsx)(`p`,{children:`Definiere MUSS-Keywords (Pflicht), PLUS-Keywords (Bonus) und AUSSCHLUSS-Keywords. Diese steuern den Score der gefundenen Stellen.`})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Wie starte ich?`}),(0,U.jsx)(`p`,{children:`Öffne Claude Desktop und tippe "Ersterfassung starten". Claude führt dich durch den Aufbau deines Bewerbungsprofils.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:`Support & Dokumentation`}),(0,U.jsx)(`p`,{children:`Für Fragen und Probleme erstelle ein Issue auf GitHub. Du brauchst dafür einen kostenlosen GitHub-Account.`}),(0,U.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP#readme`,target:`_blank`,rel:`noopener noreferrer`,className:`mt-2 inline-flex items-center gap-1.5 text-sky hover:underline text-[13px]`,children:[(0,U.jsx)(ye,{size:12}),`Vollständige Anleitung auf GitHub`]})]})]}),I===`prompts`&&(0,U.jsx)(GU,{pushToast:B,copyPrompt:we}),I===`faq`&&(0,U.jsxs)(`div`,{className:`space-y-2 text-sm text-muted/60`,children:[[{q:`Was ist MCP?`,a:`MCP (Model Context Protocol) ist die Schnittstelle, ueber die PBP mit Claude Desktop kommuniziert. PBP stellt Tools bereit, die Claude nutzen kann.`},{q:`Wo werden meine Daten gespeichert?`,a:`Alle Daten liegen lokal auf deinem Geraet. Unter Windows in %LOCALAPPDATA%/bewerbungs-assistent, auf macOS in ~/.bewerbungs-assistent. Es werden keine Daten an Server gesendet.`},{q:`Muss Claude Desktop laufen?`,a:`Fuer die KI-Funktionen ja. Das Dashboard funktioniert aber auch ohne Claude Desktop — du kannst Profil, Stellen und Bewerbungen jederzeit verwalten.`},{q:`Wie starte ich das Kennlerngespräch?`,a:`Oeffne Claude Desktop und tippe /ersterfassung ein. Claude fuehrt dich dann Schritt fuer Schritt durch den Aufbau deines Profils.`},{q:`Kann ich mehrere Profile haben?`,a:`Ja. Klicke oben auf deinen Profilnamen und waehle 'Neues Profil'. Du kannst zwischen Profilen wechseln.`},{q:`Wie funktioniert die Jobsuche?`,a:`Aktiviere Quellen unter Einstellungen, dann kopiere /jobsuche_workflow in Claude Desktop. Claude durchsucht die aktivierten Portale und bewertet die Treffer.`},{q:`Welche Dokumentformate werden unterstuetzt?`,a:`PDF, DOCX, DOC und TXT. Ziehe Dateien per Drag & Drop ins Dashboard-Fenster oder nutze den Upload-Button.`},{q:`Wie exportiere ich meinen Lebenslauf?`,a:`Gehe zu Profil > Lebenslauf-Export. Es stehen verschiedene Formate zur Verfuegung (PDF, DOCX, TXT).`},{q:`Kostet PBP etwas?`,a:`Nein. PBP ist kostenlos und Open Source (MIT-Lizenz). Du brauchst aber einen Claude Desktop Account (kostenloser Tier reicht).`},{q:`Wie aktualisiere ich PBP?`,a:`Lade die neue Version von GitHub herunter und fuehre den Installer erneut aus. Deine Daten bleiben erhalten.`}].map(({q:e,a:t})=>(0,U.jsxs)(`details`,{className:`glass-card rounded-lg group`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer px-3 py-2.5 font-medium text-ink text-[13px] hover:bg-white/[0.03] rounded-lg list-none flex items-center justify-between`,children:[e,(0,U.jsx)(L,{size:14,className:`text-muted/30 transition-transform group-open:rotate-180`})]}),(0,U.jsx)(`p`,{className:`px-3 pb-2.5 text-[12.5px]`,children:t})]},e)),(0,U.jsx)(`div`,{className:`glass-card p-3 mt-2`,children:(0,U.jsxs)(`p`,{className:`text-[12px]`,children:[`Ausfuehrliche FAQ, Anleitungen und Troubleshooting findest du im `,(0,U.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/wiki/FAQ`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`PBP Wiki`}),`.`]})})]}),I===`troubleshooting`&&(0,U.jsxs)(`div`,{className:`space-y-2 text-sm text-muted/60`,children:[[{q:`Claude antwortet nicht auf PBP-Befehle`,a:`1. Pruefe ob das PBP-Terminal/Fenster noch laeuft +2. Oeffne Claude Desktop Einstellungen > Entwickler — PBP muss dort als MCP-Server sichtbar sein +3. Starte Claude Desktop neu (komplett beenden und neu oeffnen) +4. Pruefe den MCP-Status im Dashboard-Header`},{q:`Dashboard startet nicht`,a:`1. Pruefe ob Port 8200 bereits belegt ist (anderes PBP-Fenster?) +2. Starte das Dashboard ueber das Terminal: python start_dashboard.py +3. Pruefe die Logs unter Einstellungen > Logs`},{q:`Jobsuche findet keine Stellen`,a:`1. Pruefe ob Quellen unter Einstellungen aktiviert sind +2. Pruefe ob Suchkriterien (Keywords, Ort, Umkreis) gesetzt sind +3. Manche Quellen brauchen einen Login (LinkedIn, XING) +4. StepStone blockiert automatische Suche — nutze Claude-in-Chrome (siehe unten)`},{q:`StepStone blockiert / Timeout bei Jobsuche`,a:`StepStone erkennt automatische Browser und zeigt CAPTCHAs. Workaround: + +1. Deaktiviere StepStone als automatische Quelle +2. Oeffne StepStone manuell im Chrome-Browser mit Claude-in-Chrome: + https://www.stepstone.de/jobs/plm?radius=100&location=Hamburg +3. Bitte Claude die Stellen via stelle_manuell_anlegen zu uebernehmen +4. Oder nutze den Prompt: 'Suche StepStone via Chrome nach PLM-Stellen' + +Das funktioniert zuverlaessig, weil der echte Browser nicht geblockt wird.`},{q:`Dokumente werden nicht erkannt`,a:`1. Nur PDF, DOCX, DOC und TXT werden unterstuetzt +2. Gescannte PDFs ohne Text-Layer koennen nicht analysiert werden +3. Versuche 'Erneut analysieren' auf dem Dokument`},{q:`MCP-Verbindung zeigt 'Nicht verbunden'`,a:`Die Verbindung wird ueber einen Heartbeat geprueft. Claude Desktop muss PBP mindestens einmal aufgerufen haben. Tippe einen beliebigen PBP-Befehl in Claude Desktop ein.`}].map(({q:e,a:t})=>(0,U.jsxs)(`details`,{className:`glass-card rounded-lg group`,children:[(0,U.jsxs)(`summary`,{className:`cursor-pointer px-3 py-2.5 font-medium text-ink text-[13px] hover:bg-white/[0.03] rounded-lg list-none flex items-center justify-between`,children:[e,(0,U.jsx)(L,{size:14,className:`text-muted/30 transition-transform group-open:rotate-180`})]}),(0,U.jsx)(`pre`,{className:`px-3 pb-2.5 text-[12px] whitespace-pre-wrap font-sans`,children:t})]},e)),(0,U.jsx)(`div`,{className:`glass-card p-3 mt-2`,children:(0,U.jsxs)(`p`,{className:`text-[12px]`,children:[`Mehr Loesungen im `,(0,U.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/wiki/FAQ`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`Wiki`}),`. Problem nicht geloest? Erstelle ein `,(0,U.jsx)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=bug`,target:`_blank`,rel:`noopener noreferrer`,className:`text-sky hover:underline`,children:`GitHub Issue`}),` mit Logs aus Einstellungen.`]})})]}),I===`bug`&&(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Beschreibe den Fehler moeglichst genau. Ein GitHub-Account wird benoetigt.`}),(0,U.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=bug&title=%5BBug%5D+`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 rounded-lg bg-coral/15 px-4 py-2.5 text-sm font-medium text-coral hover:bg-coral/25 transition-colors`,children:[(0,U.jsx)(ye,{size:16}),`Bug auf GitHub melden`]})]}),I===`feature`&&(0,U.jsxs)(`div`,{className:`space-y-3`,children:[(0,U.jsx)(`p`,{className:`text-sm text-muted/60`,children:`Hast du eine Idee für eine Verbesserung? Erstelle einen Feature-Vorschlag auf GitHub.`}),(0,U.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP/issues/new?labels=enhancement&title=%5BFeature%5D+`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 rounded-lg bg-sky/15 px-4 py-2.5 text-sm font-medium text-sky hover:bg-sky/25 transition-colors`,children:[(0,U.jsx)(ye,{size:16}),`Feature vorschlagen`]})]}),I===`credits`&&(0,U.jsxs)(`div`,{className:`space-y-3 text-sm`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`PBP — Persönliches Bewerbungs-Portal`}),(0,U.jsxs)(`p`,{className:`text-muted/60`,children:[`Version: v`,_.status?.version||`0.32.5`]}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Lizenz: MIT`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Team`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Markus (MadGapun) — Konzept, Backend, Projektleitung`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Toms (Koala280) — React-Frontend`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Claude — KI-Assistent & Co-Developer`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Codex (TANTE) — Frontend-Recovery & Co-Developer`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 border border-sky/15`,children:[(0,U.jsxs)(`div`,{className:`flex items-center gap-2 mb-2`,children:[(0,U.jsx)(me,{size:16,className:`text-amber`}),(0,U.jsx)(`h3`,{className:`font-medium text-ink`,children:`Kaffee spendieren`})]}),(0,U.jsx)(`p`,{className:`text-muted/60 mb-3`,children:`PBP ist kostenlos und bleibt es. Wenn dir das Tool bei deiner Jobsuche hilft, kannst du mir einen Kaffee spendieren.`}),(0,U.jsxs)(`a`,{href:`https://paypal.me/birzite`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 px-3 py-1.5 rounded-lg bg-sky/10 text-sky hover:bg-sky/20 transition-colors text-sm`,children:[(0,U.jsx)(Ee,{size:14}),`Unterstützen via PayPal`]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3 border border-amber/15`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Rechtliche Hinweise`}),(0,U.jsxs)(`div`,{className:`space-y-1.5 text-muted/60 text-[12px]`,children:[(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{children:`Jobsuche / Scraping:`}),` Die Stellensuche greift auf öffentlich zugängliche Daten von Jobportalen zu (z.B. Bundesagentur für Arbeit, LinkedIn, XING, StepStone). Die Nutzung erfolgt auf eigene Verantwortung. Bitte beachte die jeweiligen Nutzungsbedingungen der Plattformen.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{children:`Datenspeicherung:`}),` Alle Daten werden ausschließlich lokal auf deinem Gerät gespeichert. Es findet keine Übertragung an Dritte statt.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{children:`Keine Gewähr:`}),` PBP übernimmt keine Gewähr für die Vollständigkeit, Richtigkeit oder Aktualität der gesammelten Stellenangebote.`]}),(0,U.jsxs)(`p`,{children:[(0,U.jsx)(`strong`,{children:`Verantwortung:`}),` Du bist selbst dafür verantwortlich, dass deine Nutzung der Jobsuche-Funktion im Einklang mit den Nutzungsbedingungen der jeweiligen Plattformen steht.`]})]})]}),(0,U.jsxs)(`a`,{href:`https://github.com/MadGapun/PBP`,target:`_blank`,rel:`noopener noreferrer`,className:`inline-flex items-center gap-2 text-sky hover:underline`,children:[(0,U.jsx)(ye,{size:14}),`github.com/MadGapun/PBP`]})]})]}),ae&&(0,U.jsx)(nr,{open:ae,title:`Lokale KI`,onClose:()=>oe(!1),children:(0,U.jsxs)(`div`,{className:`space-y-4 text-sm text-muted/70`,children:[(0,U.jsxs)(`div`,{className:`glass-card p-3 border-coral/20 border`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-1`,children:ie.ui_state===`active`?`Lokale KI ist aktiv`:ie.ui_state===`paused`?`Lokale KI ist pausiert`:ie.ui_state===`no_model`?`Ollama erkannt — kein Modell`:ie.ui_state===`off`?`Lokale KI ist deaktiviert`:`Lokale KI ist nicht installiert`}),(0,U.jsx)(`p`,{children:ie.ui_state===`not_installed`?`Eine lokale KI auf deinem Rechner uebernimmt Routine-Aufgaben fuer PBP — z.B. Dokumente klassifizieren, Skills extrahieren, Stellen vorsortieren.`:`Modell: ${ie.selected_model||`noch nicht gewaehlt`}`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Vorteile`}),(0,U.jsxs)(`ul`,{className:`space-y-1 text-[13px]`,children:[(0,U.jsxs)(`li`,{children:[`✅ Spart Claude-Tokens `,(0,U.jsx)(`strong`,{children:`UND`}),` ist kostenlos`]}),(0,U.jsx)(`li`,{children:`✅ Funktioniert auch ohne Internet`}),(0,U.jsx)(`li`,{children:`✅ Daten verlassen das Geraet nie (Datenschutz)`}),(0,U.jsx)(`li`,{children:`✅ Schneller bei Standard-Aufgaben`})]})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Was du wissen solltest`}),(0,U.jsxs)(`ul`,{className:`space-y-1 text-[13px]`,children:[(0,U.jsx)(`li`,{children:`⚠️ Einmalig 4–5 GB Modell herunterladen`}),(0,U.jsx)(`li`,{children:`⚠️ Braucht 8–16 GB freien RAM beim Arbeiten`}),(0,U.jsx)(`li`,{children:`⚠️ Kreatives (Anschreiben) bleibt bei Claude`})]})]}),(0,U.jsx)(`div`,{className:`glass-card p-3 border-sky/20 border`,children:(0,U.jsxs)(`p`,{className:`text-[12px]`,children:[(0,U.jsx)(`strong`,{className:`text-sky`,children:`Einrichten:`}),` In `,(0,U.jsx)(`em`,{children:`Einstellungen → Lokale KI`}),`findest du den Setup-Wizard mit empfohlenen Modellen (Klein/Mittel/Gross). Modell-Download laeuft synchron — kann je nach Groesse 1–10 Minuten dauern.`]})}),(0,U.jsxs)(`div`,{className:`flex justify-end gap-2 pt-2`,children:[(0,U.jsx)(`button`,{type:`button`,onClick:()=>oe(!1),className:`px-3 py-1.5 rounded-lg text-sm text-muted/60 hover:text-ink hover:bg-white/[0.04]`,children:`Spaeter`}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{oe(!1),Ae(`einstellungen`,{tab:`ai`})},className:`px-3 py-1.5 rounded-lg text-sm bg-sky/15 text-sky hover:bg-sky/25 inline-flex items-center gap-1.5 cursor-pointer`,children:`Mehr erfahren`})]})]})}),ne&&(0,U.jsx)(nr,{open:ne,title:`MCP-Verbindung`,onClose:()=>re(!1),children:(()=>{let e=_.status?.mcp_connection?.status||`disconnected`;return(0,U.jsxs)(`div`,{className:`space-y-4 text-sm`,children:[e===`unknown`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3 border-amber/20 border`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-amber mb-1`,children:`Verbindung wird geprüft`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Der MCP-Server hat sich kürzlich gemeldet, aber die Verbindung ist nicht bestätigt. Das kann passieren wenn Claude Desktop gerade neu gestartet wurde.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Verbindung testen`}),(0,U.jsxs)(`p`,{className:`text-muted/60 mb-3`,children:[`Öffne Claude Desktop und sende eine kurze Nachricht wie`,(0,U.jsx)(`span`,{className:`mx-1 px-1.5 py-0.5 bg-white/[0.06] rounded text-ink font-mono text-xs`,children:`Zeige meinen Profil-Status`}),`um die Verbindung zu prüfen.`]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{window.open(`claude://`,`_self`),re(!1)},className:`w-full py-2 px-4 rounded-lg bg-amber/15 text-amber font-medium hover:bg-amber/25 transition-colors`,children:`Claude Desktop öffnen & testen`})]})]}),e===`disconnected`&&(0,U.jsxs)(U.Fragment,{children:[(0,U.jsxs)(`div`,{className:`glass-card p-3 border-coral/20 border`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-coral mb-1`,children:`Nicht verbunden`}),(0,U.jsx)(`p`,{className:`text-muted/60`,children:`Der MCP-Server antwortet nicht. Das bedeutet, dass Claude Desktop nicht läuft oder der Bewerbungs-Assistent nicht konfiguriert ist.`})]}),(0,U.jsxs)(`div`,{className:`glass-card p-3`,children:[(0,U.jsx)(`h3`,{className:`font-medium text-ink mb-2`,children:`Fehlerbehebung`}),(0,U.jsxs)(`ol`,{className:`space-y-2 text-muted/60 list-decimal list-inside`,children:[(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Claude Desktop öffnen`}),(0,U.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`Stelle sicher, dass Claude Desktop läuft (nicht nur der Browser).`})]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`MCP-Server prüfen`}),(0,U.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`In Claude Desktop: Einstellungen → Developer → „bewerbungs-assistent“ sollte als MCP-Server gelistet sein.`})]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Server-Status testen`}),(0,U.jsxs)(`span`,{className:`block ml-5 mt-0.5`,children:[`Prüfe ob `,(0,U.jsx)(`a`,{href:`http://localhost:8200`,target:`_blank`,rel:`noreferrer`,className:`text-sky underline`,children:`localhost:8200`}),` erreichbar ist.`]})]}),(0,U.jsxs)(`li`,{children:[(0,U.jsx)(`strong`,{className:`text-ink`,children:`Claude Desktop neu starten`}),(0,U.jsx)(`span`,{className:`block ml-5 mt-0.5`,children:`Beende Claude Desktop vollständig und starte es neu.`})]})]})]}),(0,U.jsx)(`button`,{type:`button`,onClick:()=>{window.open(`claude://`,`_self`),re(!1)},className:`w-full py-2 px-4 rounded-lg bg-coral/15 text-coral font-medium hover:bg-coral/25 transition-colors`,children:`Claude Desktop öffnen`})]})]})})()}),(0,U.jsx)(pn,{hasActiveProfile:!!qe,profileName:_.profile?.name,refreshChrome:Te,pushToast:B})]})]})})}(0,xt.createRoot)(document.getElementById(`root`)).render((0,U.jsx)(w.StrictMode,{children:(0,U.jsx)(KU,{})})); \ No newline at end of file diff --git a/src/bewerbungs_assistent/static/dashboard/assets/index-CX78k6_K.css b/src/bewerbungs_assistent/static/dashboard/assets/index-mIRaKxJp.css similarity index 63% rename from src/bewerbungs_assistent/static/dashboard/assets/index-CX78k6_K.css rename to src/bewerbungs_assistent/static/dashboard/assets/index-mIRaKxJp.css index f279d25..378383d 100644 --- a/src/bewerbungs_assistent/static/dashboard/assets/index-CX78k6_K.css +++ b/src/bewerbungs_assistent/static/dashboard/assets/index-mIRaKxJp.css @@ -1 +1 @@ -*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{scroll-behavior:smooth;scrollbar-gutter:stable;overflow-y:scroll}body{--tw-bg-opacity:1;background-color:rgb(var(--color-shell) / var(--tw-bg-opacity,1));--tw-text-opacity:1;min-height:100vh;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(ellipse 80% 50% at 10% -10%, rgb(var(--color-teal) / .05), transparent), radial-gradient(ellipse 60% 40% at 90% 5%, rgb(var(--color-sky) / .04), transparent);background-color:rgb(var(--color-shell));font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif}::selection{background:rgb(var(--color-sky) / .22);color:rgb(var(--color-ink))}.glass-topbar{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-bottom-width:1px;border-color:rgb(var(--surface-overlay-strong) / .08);background:rgb(var(--color-panel) / .85);box-shadow:0 1px 3px rgb(var(--surface-shadow) / .2)}.glass-card{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .65);border:1px solid rgb(var(--surface-overlay-strong) / .08);box-shadow:0 2px 6px rgb(var(--surface-shadow) / .15), 0 1px 2px rgb(var(--surface-shadow) / .1)}.glass-card-strong{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel-strong) / .82);border:1px solid rgb(var(--surface-overlay-strong) / .1);box-shadow:0 4px 12px rgb(var(--surface-shadow) / .2), 0 1px 3px rgb(var(--surface-shadow) / .12)}.glass-card-soft{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .55);border:1px solid rgb(var(--surface-overlay-strong) / .07);box-shadow:0 1px 4px rgb(var(--surface-shadow) / .1)}.glass-card-muted{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .45);border:1px solid rgb(var(--surface-overlay-strong) / .06);box-shadow:none}.glass-hero,.hero-glow{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:radial-gradient(ellipse 60% 50% at 5% 0%, rgb(var(--color-teal) / .045), transparent), radial-gradient(ellipse 50% 50% at 95% 100%, rgb(var(--color-sky) / .04), transparent), rgb(var(--color-panel) / .72);border:1px solid rgb(var(--surface-overlay-strong) / .08);box-shadow:0 2px 8px rgb(var(--surface-shadow) / .15)}.glass-tab{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .45);border:1px solid rgb(var(--surface-overlay-strong) / .06);box-shadow:0 1px 2px rgb(var(--surface-shadow) / .06);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}.glass-tab:hover{background:rgb(var(--color-panel-strong) / .6);border-color:rgb(var(--surface-overlay-strong) / .1)}.glass-tab-active{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));background:rgb(var(--color-panel-strong) / .75);border-color:rgb(var(--surface-overlay-strong) / .12);box-shadow:0 2px 6px rgb(var(--surface-shadow) / .15)}.glass-input{--tw-text-opacity:1;width:100%;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));outline-offset:2px;--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-width:1px;border-radius:.75rem;outline:2px solid #0000;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.glass-input::placeholder{color:rgb(var(--color-muted) / .5)}.glass-input::file-selector-button{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));border-width:0;border-radius:.5rem;margin-right:1rem;padding:.5rem .75rem;font-size:.875rem;font-weight:500;line-height:1.25rem}.glass-input{background:rgb(var(--color-shell) / .6);border-color:rgb(var(--surface-overlay-strong) / .08)}.glass-input::file-selector-button{background:rgb(var(--surface-overlay-strong) / .08)}.glass-input:hover::file-selector-button{background:rgb(var(--surface-overlay-strong) / .12)}.glass-input:hover{border-color:rgb(var(--surface-overlay-strong) / .14)}.glass-input:focus{border-color:rgb(var(--color-teal) / .4);box-shadow:0 0 0 2px rgb(var(--color-teal) / .08)}.glass-input option,select option{background:rgb(var(--color-panel));color:rgb(var(--color-ink))}.glass-banner{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border:1px solid}.glass-banner-amber{border-color:rgb(var(--color-amber) / .16);background:rgb(var(--color-amber) / .07)}.glass-banner-danger{border-color:rgb(var(--color-coral) / .16);background:rgb(var(--color-coral) / .07)}.glass-icon{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));background:rgb(var(--surface-overlay-strong) / .05);border-width:1px;border-color:rgb(var(--surface-overlay-strong) / .08);border-radius:.75rem;justify-content:center;align-items:center;display:flex}.glass-icon-sky{border-color:rgb(var(--color-sky) / .16);background:rgb(var(--color-sky) / .08);color:rgb(var(--color-sky))}.glass-icon-amber{border-color:rgb(var(--color-amber) / .16);background:rgb(var(--color-amber) / .08);color:rgb(var(--color-amber))}.glass-icon-danger{border-color:rgb(var(--color-coral) / .16);background:rgb(var(--color-coral) / .08);color:rgb(var(--color-coral))}.glass-log{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-width:1px;border-color:rgb(var(--surface-overlay-strong) / .07);background:rgb(var(--color-shell) / .88);border-radius:1rem;font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.75rem;line-height:1rem}.glass-overlay{background:rgb(var(--color-shell) / .55);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-right-0\.5{right:-.125rem}.-top-0\.5{top:-.125rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-1{bottom:.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-12{left:3rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-5{top:1.25rem}.top-\[52px\]{top:52px}.top-full{top:100%}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[1200\]{z-index:1200}.z-\[45\]{z-index:45}.z-\[60\]{z-index:60}.z-\[980\]{z-index:980}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-mt-0\.5{margin-top:-.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.\!hidden{display:none!important}.hidden{display:none}.\!h-8{height:2rem!important}.\!h-9{height:2.25rem!important}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[10px\]{height:10px}.h-\[11px\]{height:11px}.h-\[18px\]{height:18px}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-\[28rem\]{max-height:28rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-10rem\)\]{max-height:calc(90vh - 10rem)}.\!min-h-0{min-height:0!important}.\!min-h-40{min-height:10rem!important}.min-h-0{min-height:0}.min-h-11{min-height:2.75rem}.min-h-28{min-height:7rem}.min-h-40{min-height:10rem}.min-h-48{min-height:12rem}.min-h-\[2rem\]{min-height:2rem}.min-h-\[4\.25rem\]{min-height:4.25rem}.min-h-\[5rem\]{min-height:5rem}.min-h-\[80px\]{min-height:80px}.min-h-\[8rem\]{min-height:8rem}.min-h-screen{min-height:100vh}.\!w-20{width:5rem!important}.\!w-48{width:12rem!important}.\!w-56{width:14rem!important}.\!w-auto{width:auto!important}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10px\]{width:10px}.w-\[11px\]{width:11px}.w-\[14rem\]{width:14rem}.w-\[18rem\]{width:18rem}.w-\[240px\]{width:240px}.w-\[420px\]{width:420px}.w-\[60px\]{width:60px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[13rem\]{min-width:13rem}.min-w-\[140px\]{min-width:140px}.min-w-\[14rem\]{min-width:14rem}.min-w-\[150px\]{min-width:150px}.min-w-\[15rem\]{min-width:15rem}.min-w-\[18px\]{min-width:18px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.min-w-\[7rem\]{min-width:7rem}.min-w-\[8rem\]{min-width:8rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-48{max-width:12rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[92rem\]{max-width:92rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-rise{animation:.3s cubic-bezier(.16,1,.3,1) rise}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[6rem_minmax\(0\,8rem\)_minmax\(0\,1fr\)\]{grid-template-columns:6rem minmax(0,8rem) minmax(0,1fr)}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[3px\]{gap:3px}.gap-px{gap:1px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-white\/\[0\.06\]>:not([hidden])~:not([hidden]){border-color:#ffffff0f}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-lg{border-radius:.5rem!important}.\!rounded-xl{border-radius:.75rem!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.25rem}.rounded-\[24px\]{border-radius:24px}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.\!border-teal\/20{border-color:rgb(var(--color-teal) / .2)!important}.\!border-white\/10{border-color:#ffffff1a!important}.\!border-white\/5{border-color:#ffffff0d!important}.border-amber{--tw-border-opacity:1;border-color:rgb(var(--color-amber) / var(--tw-border-opacity,1))}.border-amber\/15{border-color:rgb(var(--color-amber) / .15)}.border-amber\/20{border-color:rgb(var(--color-amber) / .2)}.border-amber\/30{border-color:rgb(var(--color-amber) / .3)}.border-coral\/15{border-color:rgb(var(--color-coral) / .15)}.border-coral\/20{border-color:rgb(var(--color-coral) / .2)}.border-coral\/25{border-color:rgb(var(--color-coral) / .25)}.border-coral\/30{border-color:rgb(var(--color-coral) / .3)}.border-coral\/40{border-color:rgb(var(--color-coral) / .4)}.border-emerald-600\/40{border-color:#05966966}.border-line\/30{border-color:rgb(var(--color-line) / .3)}.border-line\/40{border-color:rgb(var(--color-line) / .4)}.border-muted\/30{border-color:rgb(var(--color-muted) / .3)}.border-sky{--tw-border-opacity:1;border-color:rgb(var(--color-sky) / var(--tw-border-opacity,1))}.border-sky\/10{border-color:rgb(var(--color-sky) / .1)}.border-sky\/15{border-color:rgb(var(--color-sky) / .15)}.border-sky\/20{border-color:rgb(var(--color-sky) / .2)}.border-sky\/25{border-color:rgb(var(--color-sky) / .25)}.border-sky\/30{border-color:rgb(var(--color-sky) / .3)}.border-sky\/40{border-color:rgb(var(--color-sky) / .4)}.border-sky\/60{border-color:rgb(var(--color-sky) / .6)}.border-teal{--tw-border-opacity:1;border-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.border-teal\/15{border-color:rgb(var(--color-teal) / .15)}.border-teal\/20{border-color:rgb(var(--color-teal) / .2)}.border-teal\/30{border-color:rgb(var(--color-teal) / .3)}.border-teal\/40{border-color:rgb(var(--color-teal) / .4)}.border-transparent{border-color:#0000}.border-violet-400\/25{border-color:#a78bfa40}.border-violet-500\/20{border-color:#8b5cf633}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/20{border-color:#fff3}.border-white\/45{border-color:#ffffff73}.border-white\/5{border-color:#ffffff0d}.border-white\/\[0\.04\]{border-color:#ffffff0a}.border-white\/\[0\.05\]{border-color:#ffffff0d}.border-white\/\[0\.06\]{border-color:#ffffff0f}.border-t-teal{--tw-border-opacity:1;border-top-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.border-t-teal\/70{border-top-color:rgb(var(--color-teal) / .7)}.\!bg-white\/\[0\.03\]{background-color:#ffffff08!important}.bg-\[rgba\(30\,34\,52\,0\.95\)\]{background-color:#1e2234f2}.bg-\[var\(--surface-1\,_\#1a1d23\)\]{background-color:var(--surface-1,#1a1d23)}.bg-amber{--tw-bg-opacity:1;background-color:rgb(var(--color-amber) / var(--tw-bg-opacity,1))}.bg-amber\/10{background-color:rgb(var(--color-amber) / .1)}.bg-amber\/15{background-color:rgb(var(--color-amber) / .15)}.bg-amber\/20{background-color:rgb(var(--color-amber) / .2)}.bg-amber\/40{background-color:rgb(var(--color-amber) / .4)}.bg-amber\/5{background-color:rgb(var(--color-amber) / .05)}.bg-amber\/70{background-color:rgb(var(--color-amber) / .7)}.bg-amber\/80{background-color:rgb(var(--color-amber) / .8)}.bg-amber\/\[0\.02\]{background-color:rgb(var(--color-amber) / .02)}.bg-amber\/\[0\.03\]{background-color:rgb(var(--color-amber) / .03)}.bg-amber\/\[0\.04\]{background-color:rgb(var(--color-amber) / .04)}.bg-amber\/\[0\.05\]{background-color:rgb(var(--color-amber) / .05)}.bg-amber\/\[0\.06\]{background-color:rgb(var(--color-amber) / .06)}.bg-black\/20{background-color:#0003}.bg-coral{--tw-bg-opacity:1;background-color:rgb(var(--color-coral) / var(--tw-bg-opacity,1))}.bg-coral\/10{background-color:rgb(var(--color-coral) / .1)}.bg-coral\/15{background-color:rgb(var(--color-coral) / .15)}.bg-coral\/20{background-color:rgb(var(--color-coral) / .2)}.bg-coral\/70{background-color:rgb(var(--color-coral) / .7)}.bg-coral\/80{background-color:rgb(var(--color-coral) / .8)}.bg-coral\/\[0\.04\]{background-color:rgb(var(--color-coral) / .04)}.bg-coral\/\[0\.05\]{background-color:rgb(var(--color-coral) / .05)}.bg-coral\/\[0\.06\]{background-color:rgb(var(--color-coral) / .06)}.bg-coral\/\[0\.08\]{background-color:rgb(var(--color-coral) / .08)}.bg-emerald-400\/80{background-color:#34d399cc}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-950\/20{background-color:#022c2233}.bg-muted\/40{background-color:rgb(var(--color-muted) / .4)}.bg-panel\/40{background-color:rgb(var(--color-panel) / .4)}.bg-panelstrong\/80{background-color:rgb(var(--color-panel-strong) / .8)}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/60{background-color:#ef444499}.bg-shell\/40{background-color:rgb(var(--color-shell) / .4)}.bg-shell\/60{background-color:rgb(var(--color-shell) / .6)}.bg-shell\/80{background-color:rgb(var(--color-shell) / .8)}.bg-sky{--tw-bg-opacity:1;background-color:rgb(var(--color-sky) / var(--tw-bg-opacity,1))}.bg-sky\/10{background-color:rgb(var(--color-sky) / .1)}.bg-sky\/15{background-color:rgb(var(--color-sky) / .15)}.bg-sky\/20{background-color:rgb(var(--color-sky) / .2)}.bg-sky\/40{background-color:rgb(var(--color-sky) / .4)}.bg-sky\/5{background-color:rgb(var(--color-sky) / .05)}.bg-sky\/\[0\.03\]{background-color:rgb(var(--color-sky) / .03)}.bg-sky\/\[0\.04\]{background-color:rgb(var(--color-sky) / .04)}.bg-sky\/\[0\.05\]{background-color:rgb(var(--color-sky) / .05)}.bg-sky\/\[0\.06\]{background-color:rgb(var(--color-sky) / .06)}.bg-sky\/\[0\.08\]{background-color:rgb(var(--color-sky) / .08)}.bg-teal{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.bg-teal\/10{background-color:rgb(var(--color-teal) / .1)}.bg-teal\/15{background-color:rgb(var(--color-teal) / .15)}.bg-teal\/20{background-color:rgb(var(--color-teal) / .2)}.bg-teal\/5{background-color:rgb(var(--color-teal) / .05)}.bg-teal\/80{background-color:rgb(var(--color-teal) / .8)}.bg-teal\/85{background-color:rgb(var(--color-teal) / .85)}.bg-teal\/90{background-color:rgb(var(--color-teal) / .9)}.bg-teal\/\[0\.03\]{background-color:rgb(var(--color-teal) / .03)}.bg-teal\/\[0\.04\]{background-color:rgb(var(--color-teal) / .04)}.bg-teal\/\[0\.06\]{background-color:rgb(var(--color-teal) / .06)}.bg-transparent{background-color:#0000}.bg-violet-400\/\[0\.02\]{background-color:#a78bfa05}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-violet-500\/15{background-color:#8b5cf626}.bg-violet-500\/\[0\.06\]{background-color:#8b5cf60f}.bg-white\/10{background-color:#ffffff1a}.bg-white\/5{background-color:#ffffff0d}.bg-white\/\[0\.015\]{background-color:#ffffff04}.bg-white\/\[0\.01\]{background-color:#ffffff03}.bg-white\/\[0\.02\]{background-color:#ffffff05}.bg-white\/\[0\.03\]{background-color:#ffffff08}.bg-white\/\[0\.04\]{background-color:#ffffff0a}.bg-white\/\[0\.05\]{background-color:#ffffff0d}.bg-white\/\[0\.06\]{background-color:#ffffff0f}.bg-white\/\[0\.08\]{background-color:#ffffff14}.bg-zinc-500\/40{background-color:#71717a66}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!py-0{padding-top:0!important;padding-bottom:0!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.\!py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.\!pl-11{padding-left:2.75rem!important}.\!pl-2{padding-left:.5rem!important}.\!pl-3{padding-left:.75rem!important}.\!pl-9{padding-left:2.25rem!important}.\!pr-10{padding-right:2.5rem!important}.\!pr-2{padding-right:.5rem!important}.\!pr-3{padding-right:.75rem!important}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-9{padding-left:2.25rem}.pl-\[21px\]{padding-left:21px}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-display{font-family:Inter,Aptos Display,Segoe UI Variable,system-ui,sans-serif}.font-mono{font-family:JetBrains Mono,Cascadia Code,Consolas,monospace}.font-sans{font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif}.\!text-\[11px\]{font-size:11px!important}.\!text-\[12px\]{font-size:12px!important}.\!text-\[13px\]{font-size:13px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.1em\]{letter-spacing:.1em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.\!text-muted\/60{color:rgb(var(--color-muted) / .6)!important}.\!text-teal\/80{color:rgb(var(--color-teal) / .8)!important}.text-amber{--tw-text-opacity:1;color:rgb(var(--color-amber) / var(--tw-text-opacity,1))}.text-amber\/50{color:rgb(var(--color-amber) / .5)}.text-amber\/70{color:rgb(var(--color-amber) / .7)}.text-amber\/80{color:rgb(var(--color-amber) / .8)}.text-amber\/90{color:rgb(var(--color-amber) / .9)}.text-coral{--tw-text-opacity:1;color:rgb(var(--color-coral) / var(--tw-text-opacity,1))}.text-coral\/60{color:rgb(var(--color-coral) / .6)}.text-coral\/70{color:rgb(var(--color-coral) / .7)}.text-coral\/80{color:rgb(var(--color-coral) / .8)}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-ink{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1))}.text-ink\/70{color:rgb(var(--color-ink) / .7)}.text-ink\/80{color:rgb(var(--color-ink) / .8)}.text-ink\/90{color:rgb(var(--color-ink) / .9)}.text-muted{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.text-muted\/15{color:rgb(var(--color-muted) / .15)}.text-muted\/20{color:rgb(var(--color-muted) / .2)}.text-muted\/30{color:rgb(var(--color-muted) / .3)}.text-muted\/40{color:rgb(var(--color-muted) / .4)}.text-muted\/45{color:rgb(var(--color-muted) / .45)}.text-muted\/50{color:rgb(var(--color-muted) / .5)}.text-muted\/55{color:rgb(var(--color-muted) / .55)}.text-muted\/60{color:rgb(var(--color-muted) / .6)}.text-muted\/70{color:rgb(var(--color-muted) / .7)}.text-muted\/80{color:rgb(var(--color-muted) / .8)}.text-muted\/85{color:rgb(var(--color-muted) / .85)}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-shell{--tw-text-opacity:1;color:rgb(var(--color-shell) / var(--tw-text-opacity,1))}.text-sky{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.text-sky\/50{color:rgb(var(--color-sky) / .5)}.text-sky\/70{color:rgb(var(--color-sky) / .7)}.text-sky\/80{color:rgb(var(--color-sky) / .8)}.text-sky\/85{color:rgb(var(--color-sky) / .85)}.text-teal{--tw-text-opacity:1;color:rgb(var(--color-teal) / var(--tw-text-opacity,1))}.text-teal\/50{color:rgb(var(--color-teal) / .5)}.text-teal\/60{color:rgb(var(--color-teal) / .6)}.text-teal\/70{color:rgb(var(--color-teal) / .7)}.text-teal\/80{color:rgb(var(--color-teal) / .8)}.text-transparent{color:#0000}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-muted\/40{-webkit-text-decoration-color:rgb(var(--color-muted) / .4);text-decoration-color:rgb(var(--color-muted) / .4)}.decoration-teal\/40{-webkit-text-decoration-color:rgb(var(--color-teal) / .4);text-decoration-color:rgb(var(--color-teal) / .4)}.decoration-teal\/50{-webkit-text-decoration-color:rgb(var(--color-teal) / .5);text-decoration-color:rgb(var(--color-teal) / .5)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.placeholder-muted\/40::placeholder{color:rgb(var(--color-muted) / .4)}.accent-amber{accent-color:rgb(var(--color-amber) / 1)}.accent-coral{accent-color:rgb(var(--color-coral) / 1)}.accent-sky{accent-color:rgb(var(--color-sky) / 1)}.accent-teal{accent-color:rgb(var(--color-teal) / 1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color:#0006;--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline-offset:2px;outline:2px solid #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-amber\/50{--tw-ring-color:rgb(var(--color-amber) / .5)}.ring-sky\/20{--tw-ring-color:rgb(var(--color-sky) / .2)}.ring-sky\/35{--tw-ring-color:rgb(var(--color-sky) / .35)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\,background-color\]{transition-property:border-color,box-shadow,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\,box-shadow\]{transition-property:width,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\]{transition-property:width;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{appearance:textfield}.\[color-scheme\:dark\]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-shell:18 20 30;--color-panel:28 32 46;--color-panel-strong:36 40 56;--color-ink:230 236 250;--color-muted:140 152 178;--color-line:68 76 100;--color-teal:94 234 212;--color-amber:251 191 36;--color-coral:251 113 133;--color-sky:129 161 255;--surface-overlay-weak:255 255 255;--surface-overlay-soft:255 255 255;--surface-overlay-strong:255 255 255;--surface-shadow:0 0 0}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-shell:248 249 252;--color-panel:255 255 255;--color-panel-strong:242 244 248;--color-ink:24 28 42;--color-muted:100 112 136;--color-line:220 225 235;--color-teal:13 148 136;--color-amber:217 119 6;--color-coral:225 29 72;--color-sky:37 99 235;--surface-overlay-weak:20 24 40;--surface-overlay-soft:20 24 40;--surface-overlay-strong:20 24 40;--surface-shadow:20 24 40}#root{min-height:100vh}.app-shell{min-height:100vh;position:relative;overflow-x:clip}.app-shell:before{content:"";pointer-events:none;background-image:radial-gradient(circle at center, rgb(var(--surface-overlay-weak) / .022) 1px, transparent 1px);background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0000004d,#0000 35%);mask-image:linear-gradient(#0000004d,#0000 35%)}.app-shell:after{content:"";pointer-events:none;background:radial-gradient(circle, rgb(var(--color-teal) / .045), rgb(var(--color-sky) / .025) 50%, transparent 70%);filter:blur(80px);border-radius:999px;width:36rem;height:36rem;position:fixed;bottom:-28rem;right:-20rem}.page{animation:.35s cubic-bezier(.16,1,.3,1) rise}.soft-scrollbar{scrollbar-width:thin;scrollbar-color:rgb(var(--color-muted) / .25) transparent}.soft-scrollbar::-webkit-scrollbar{width:6px;height:6px}.soft-scrollbar::-webkit-scrollbar-track{background:0 0}.soft-scrollbar::-webkit-scrollbar-thumb{background:rgb(var(--color-muted) / .2);border-radius:999px}.soft-scrollbar::-webkit-scrollbar-thumb:hover{background:rgb(var(--color-muted) / .35)}@keyframes job-card-highlight-pulse{0%{background-color:#5eead414;border-color:#5eead480;box-shadow:0 0 0 1px #5eead461,0 0 0 14px #5eead42e,0 20px 44px #5eead433}60%{background-color:#5eead40a;border-color:#5eead447;box-shadow:0 0 0 1px #5eead43d,0 0 0 8px #5eead41a,0 14px 34px #5eead424}to{background-color:#5eead400;border-color:#5eead42e;box-shadow:0 0 0 1px #5eead429,0 0 #5eead400,0 8px 22px #0000001f}}.weight-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:currentColor;border:2px solid #ffffff26;border-radius:50%;width:14px;height:14px;transition:transform .15s,box-shadow .15s;box-shadow:0 1px 4px #0000004d}.weight-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 1px 8px #0006}.weight-slider::-moz-range-thumb{cursor:pointer;background:currentColor;border:2px solid #ffffff26;border-radius:50%;width:14px;height:14px;box-shadow:0 1px 4px #0000004d}.job-card-highlight{animation:1.8s ease-out job-card-highlight-pulse}.placeholder\:text-muted::placeholder{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.placeholder\:text-muted\/30::placeholder{color:rgb(var(--color-muted) / .3)}.placeholder\:text-muted\/40::placeholder{color:rgb(var(--color-muted) / .4)}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:-translate-y-\[1px\]:hover{--tw-translate-y:-1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-amber\/30:hover{border-color:rgb(var(--color-amber) / .3)}.hover\:border-line\/60:hover{border-color:rgb(var(--color-line) / .6)}.hover\:border-muted\/60:hover{border-color:rgb(var(--color-muted) / .6)}.hover\:border-sky\/30:hover{border-color:rgb(var(--color-sky) / .3)}.hover\:border-sky\/35:hover{border-color:rgb(var(--color-sky) / .35)}.hover\:border-teal\/30:hover{border-color:rgb(var(--color-teal) / .3)}.hover\:border-white\/10:hover{border-color:#ffffff1a}.hover\:border-white\/30:hover{border-color:#ffffff4d}.hover\:bg-amber\/10:hover{background-color:rgb(var(--color-amber) / .1)}.hover\:bg-amber\/15:hover{background-color:rgb(var(--color-amber) / .15)}.hover\:bg-amber\/20:hover{background-color:rgb(var(--color-amber) / .2)}.hover\:bg-amber\/25:hover{background-color:rgb(var(--color-amber) / .25)}.hover\:bg-coral\/10:hover{background-color:rgb(var(--color-coral) / .1)}.hover\:bg-coral\/15:hover{background-color:rgb(var(--color-coral) / .15)}.hover\:bg-coral\/25:hover{background-color:rgb(var(--color-coral) / .25)}.hover\:bg-coral\/5:hover{background-color:rgb(var(--color-coral) / .05)}.hover\:bg-coral\/90:hover{background-color:rgb(var(--color-coral) / .9)}.hover\:bg-red-500\/25:hover{background-color:#ef444440}.hover\:bg-sky\/20:hover{background-color:rgb(var(--color-sky) / .2)}.hover\:bg-sky\/25:hover{background-color:rgb(var(--color-sky) / .25)}.hover\:bg-sky\/\[0\.02\]:hover{background-color:rgb(var(--color-sky) / .02)}.hover\:bg-sky\/\[0\.15\]:hover{background-color:rgb(var(--color-sky) / .15)}.hover\:bg-teal:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.hover\:bg-teal\/10:hover{background-color:rgb(var(--color-teal) / .1)}.hover\:bg-teal\/15:hover{background-color:rgb(var(--color-teal) / .15)}.hover\:bg-teal\/25:hover{background-color:rgb(var(--color-teal) / .25)}.hover\:bg-teal\/95:hover{background-color:rgb(var(--color-teal) / .95)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}.hover\:bg-white\/\[0\.07\]:hover{background-color:#ffffff12}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}.hover\:bg-white\/\[0\.2\]:hover{background-color:#fff3}.hover\:text-amber:hover{--tw-text-opacity:1;color:rgb(var(--color-amber) / var(--tw-text-opacity,1))}.hover\:text-coral:hover{--tw-text-opacity:1;color:rgb(var(--color-coral) / var(--tw-text-opacity,1))}.hover\:text-current:hover{color:currentColor}.hover\:text-ink:hover{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1))}.hover\:text-muted:hover{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.hover\:text-muted\/60:hover{color:rgb(var(--color-muted) / .6)}.hover\:text-muted\/80:hover{color:rgb(var(--color-muted) / .8)}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-sky:hover{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.hover\:text-teal:hover{--tw-text-opacity:1;color:rgb(var(--color-teal) / var(--tw-text-opacity,1))}.hover\:text-teal\/70:hover{color:rgb(var(--color-teal) / .7)}.hover\:text-teal\/80:hover{color:rgb(var(--color-teal) / .8)}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[0_8px_20px_rgba\(14\,165\,233\,0\.12\)\]:hover{--tw-shadow:0 8px 20px #0ea5e91f;--tw-shadow-colored:0 8px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:brightness-125:hover{--tw-brightness:brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-sky\/30:focus{border-color:rgb(var(--color-sky) / .3)}.focus\:border-sky\/40:focus{border-color:rgb(var(--color-sky) / .4)}.focus\:border-sky\/45:focus{border-color:rgb(var(--color-sky) / .45)}.focus\:border-teal\/40:focus{border-color:rgb(var(--color-teal) / .4)}.focus\:border-teal\/50:focus{border-color:rgb(var(--color-teal) / .5)}.focus\:bg-white\/\[0\.04\]:focus{background-color:#ffffff0a}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-sky\/30:focus{--tw-ring-color:rgb(var(--color-sky) / .3)}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-sky\/50:focus-visible{--tw-ring-color:rgb(var(--color-sky) / .5)}.focus-visible\:ring-teal\/15:focus-visible{--tw-ring-color:rgb(var(--color-teal) / .15)}.focus-visible\:ring-teal\/35:focus-visible{--tw-ring-color:rgb(var(--color-teal) / .35)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-shell:focus-visible{--tw-ring-offset-color:rgb(var(--color-shell) / 1)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[open] .group-open\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-sky{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:border-teal{--tw-border-opacity:1;border-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:bg-teal{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:text-shell{--tw-text-opacity:1;color:rgb(var(--color-shell) / var(--tw-text-opacity,1))}.peer:focus-visible~.peer-focus-visible\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.peer:focus-visible~.peer-focus-visible\:ring-teal\/35{--tw-ring-color:rgb(var(--color-teal) / .35)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-60{opacity:.6}@media (width>=640px){.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (width>=768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:block{display:block}.md\:inline{display:inline}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[12rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:12rem minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(0\,1fr\)_14rem_10rem_10rem_10rem\]{grid-template-columns:minmax(0,1fr) 14rem 10rem 10rem 10rem}}@media (width>=1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-64{width:16rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(18rem\,0\.9fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(18rem,.9fr)}}@media (width>=1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.xl\:grid-cols-\[minmax\(0\,1\.2fr\)_minmax\(18rem\,0\.8fr\)\]{grid-template-columns:minmax(0,1.2fr) minmax(18rem,.8fr)}.xl\:self-start{align-self:flex-start}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none} +*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{scroll-behavior:smooth;scrollbar-gutter:stable;overflow-y:scroll}body{--tw-bg-opacity:1;background-color:rgb(var(--color-shell) / var(--tw-bg-opacity,1));--tw-text-opacity:1;min-height:100vh;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(ellipse 80% 50% at 10% -10%, rgb(var(--color-teal) / .05), transparent), radial-gradient(ellipse 60% 40% at 90% 5%, rgb(var(--color-sky) / .04), transparent);background-color:rgb(var(--color-shell));font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif}::selection{background:rgb(var(--color-sky) / .22);color:rgb(var(--color-ink))}.glass-topbar{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-bottom-width:1px;border-color:rgb(var(--surface-overlay-strong) / .08);background:rgb(var(--color-panel) / .85);box-shadow:0 1px 3px rgb(var(--surface-shadow) / .2)}.glass-card{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .65);border:1px solid rgb(var(--surface-overlay-strong) / .08);box-shadow:0 2px 6px rgb(var(--surface-shadow) / .15), 0 1px 2px rgb(var(--surface-shadow) / .1)}.glass-card-strong{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel-strong) / .82);border:1px solid rgb(var(--surface-overlay-strong) / .1);box-shadow:0 4px 12px rgb(var(--surface-shadow) / .2), 0 1px 3px rgb(var(--surface-shadow) / .12)}.glass-card-soft{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .55);border:1px solid rgb(var(--surface-overlay-strong) / .07);box-shadow:0 1px 4px rgb(var(--surface-shadow) / .1)}.glass-card-muted{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .45);border:1px solid rgb(var(--surface-overlay-strong) / .06);box-shadow:none}.glass-hero,.hero-glow{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:radial-gradient(ellipse 60% 50% at 5% 0%, rgb(var(--color-teal) / .045), transparent), radial-gradient(ellipse 50% 50% at 95% 100%, rgb(var(--color-sky) / .04), transparent), rgb(var(--color-panel) / .72);border:1px solid rgb(var(--surface-overlay-strong) / .08);box-shadow:0 2px 8px rgb(var(--surface-shadow) / .15)}.glass-tab{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);background:rgb(var(--color-panel) / .45);border:1px solid rgb(var(--surface-overlay-strong) / .06);box-shadow:0 1px 2px rgb(var(--surface-shadow) / .06);transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.2s;transition-timing-function:cubic-bezier(0,0,.2,1)}.glass-tab:hover{background:rgb(var(--color-panel-strong) / .6);border-color:rgb(var(--surface-overlay-strong) / .1)}.glass-tab-active{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));background:rgb(var(--color-panel-strong) / .75);border-color:rgb(var(--surface-overlay-strong) / .12);box-shadow:0 2px 6px rgb(var(--surface-shadow) / .15)}.glass-input{--tw-text-opacity:1;width:100%;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));outline-offset:2px;--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-width:1px;border-radius:.75rem;outline:2px solid #0000;padding:.75rem 1rem;font-size:.875rem;line-height:1.25rem;transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.2s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.glass-input::placeholder{color:rgb(var(--color-muted) / .5)}.glass-input::file-selector-button{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));border-width:0;border-radius:.5rem;margin-right:1rem;padding:.5rem .75rem;font-size:.875rem;font-weight:500;line-height:1.25rem}.glass-input{background:rgb(var(--color-shell) / .6);border-color:rgb(var(--surface-overlay-strong) / .08)}.glass-input::file-selector-button{background:rgb(var(--surface-overlay-strong) / .08)}.glass-input:hover::file-selector-button{background:rgb(var(--surface-overlay-strong) / .12)}.glass-input:hover{border-color:rgb(var(--surface-overlay-strong) / .14)}.glass-input:focus{border-color:rgb(var(--color-teal) / .4);box-shadow:0 0 0 2px rgb(var(--color-teal) / .08)}.glass-input option,select option{background:rgb(var(--color-panel));color:rgb(var(--color-ink))}.glass-banner{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border:1px solid}.glass-banner-amber{border-color:rgb(var(--color-amber) / .16);background:rgb(var(--color-amber) / .07)}.glass-banner-danger{border-color:rgb(var(--color-coral) / .16);background:rgb(var(--color-coral) / .07)}.glass-icon{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));background:rgb(var(--surface-overlay-strong) / .05);border-width:1px;border-color:rgb(var(--surface-overlay-strong) / .08);border-radius:.75rem;justify-content:center;align-items:center;display:flex}.glass-icon-sky{border-color:rgb(var(--color-sky) / .16);background:rgb(var(--color-sky) / .08);color:rgb(var(--color-sky))}.glass-icon-amber{border-color:rgb(var(--color-amber) / .16);background:rgb(var(--color-amber) / .08);color:rgb(var(--color-amber))}.glass-icon-danger{border-color:rgb(var(--color-coral) / .16);background:rgb(var(--color-coral) / .08);color:rgb(var(--color-coral))}.glass-log{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1));--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);border-width:1px;border-color:rgb(var(--surface-overlay-strong) / .07);background:rgb(var(--color-shell) / .88);border-radius:1rem;font-family:JetBrains Mono,Cascadia Code,Consolas,monospace;font-size:.75rem;line-height:1rem}.glass-overlay{background:rgb(var(--color-shell) / .55);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px)}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.visible{visibility:visible}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-right-0\.5{right:-.125rem}.-top-0\.5{top:-.125rem}.bottom-0{bottom:0}.bottom-0\.5{bottom:.125rem}.bottom-1{bottom:.25rem}.left-0{left:0}.left-1\/2{left:50%}.left-12{left:3rem}.left-3{left:.75rem}.left-4{left:1rem}.right-0{right:0}.right-2{right:.5rem}.right-2\.5{right:.625rem}.right-3{right:.75rem}.right-4{right:1rem}.top-0{top:0}.top-1\/2{top:50%}.top-4{top:1rem}.top-5{top:1.25rem}.top-\[52px\]{top:52px}.top-full{top:100%}.z-40{z-index:40}.z-50{z-index:50}.z-\[1000\]{z-index:1000}.z-\[1200\]{z-index:1200}.z-\[45\]{z-index:45}.z-\[60\]{z-index:60}.z-\[980\]{z-index:980}.-mx-2{margin-left:-.5rem;margin-right:-.5rem}.mx-0\.5{margin-left:.125rem;margin-right:.125rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-auto{margin-left:auto;margin-right:auto}.-mt-0\.5{margin-top:-.125rem}.mb-1{margin-bottom:.25rem}.mb-1\.5{margin-bottom:.375rem}.mb-2{margin-bottom:.5rem}.mb-2\.5{margin-bottom:.625rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.ml-0\.5{margin-left:.125rem}.ml-1{margin-left:.25rem}.ml-1\.5{margin-left:.375rem}.ml-2{margin-left:.5rem}.ml-4{margin-left:1rem}.ml-5{margin-left:1.25rem}.ml-6{margin-left:1.5rem}.ml-7{margin-left:1.75rem}.ml-8{margin-left:2rem}.ml-auto{margin-left:auto}.mr-0\.5{margin-right:.125rem}.mr-1{margin-right:.25rem}.mr-1\.5{margin-right:.375rem}.mt-0{margin-top:0}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-1\.5{margin-top:.375rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-auto{margin-top:auto}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.\!hidden{display:none!important}.hidden{display:none}.\!h-8{height:2rem!important}.\!h-9{height:2.25rem!important}.h-1{height:.25rem}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-3{height:.75rem}.h-3\.5{height:.875rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-\[10px\]{height:10px}.h-\[11px\]{height:11px}.h-\[18px\]{height:18px}.h-full{height:100%}.h-screen{height:100vh}.max-h-32{max-height:8rem}.max-h-40{max-height:10rem}.max-h-48{max-height:12rem}.max-h-60{max-height:15rem}.max-h-64{max-height:16rem}.max-h-\[28rem\]{max-height:28rem}.max-h-\[60vh\]{max-height:60vh}.max-h-\[90vh\]{max-height:90vh}.max-h-\[calc\(90vh-10rem\)\]{max-height:calc(90vh - 10rem)}.\!min-h-0{min-height:0!important}.\!min-h-40{min-height:10rem!important}.min-h-0{min-height:0}.min-h-11{min-height:2.75rem}.min-h-28{min-height:7rem}.min-h-40{min-height:10rem}.min-h-48{min-height:12rem}.min-h-\[2rem\]{min-height:2rem}.min-h-\[4\.25rem\]{min-height:4.25rem}.min-h-\[5rem\]{min-height:5rem}.min-h-\[80px\]{min-height:80px}.min-h-\[8rem\]{min-height:8rem}.min-h-screen{min-height:100vh}.\!w-20{width:5rem!important}.\!w-48{width:12rem!important}.\!w-56{width:14rem!important}.\!w-auto{width:auto!important}.w-1{width:.25rem}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-12{width:3rem}.w-16{width:4rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-20{width:5rem}.w-28{width:7rem}.w-3{width:.75rem}.w-3\.5{width:.875rem}.w-4{width:1rem}.w-44{width:11rem}.w-48{width:12rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-\[10px\]{width:10px}.w-\[11px\]{width:11px}.w-\[14rem\]{width:14rem}.w-\[18rem\]{width:18rem}.w-\[240px\]{width:240px}.w-\[420px\]{width:420px}.w-\[60px\]{width:60px}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.min-w-0{min-width:0}.min-w-\[13rem\]{min-width:13rem}.min-w-\[140px\]{min-width:140px}.min-w-\[14rem\]{min-width:14rem}.min-w-\[150px\]{min-width:150px}.min-w-\[15rem\]{min-width:15rem}.min-w-\[18px\]{min-width:18px}.min-w-\[200px\]{min-width:200px}.min-w-\[240px\]{min-width:240px}.min-w-\[7rem\]{min-width:7rem}.min-w-\[8rem\]{min-width:8rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-48{max-width:12rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-\[10rem\]{max-width:10rem}.max-w-\[92rem\]{max-width:92rem}.max-w-lg{max-width:32rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1}.flex-none{flex:none}.flex-shrink-0,.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes rise{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.animate-rise{animation:.3s cubic-bezier(.16,1,.3,1) rise}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.cursor-text{cursor:text}.select-none{-webkit-user-select:none;user-select:none}.resize-y{resize:vertical}.resize{resize:both}.list-inside{list-style-position:inside}.list-decimal{list-style-type:decimal}.list-disc{list-style-type:disc}.list-none{list-style-type:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-7{grid-template-columns:repeat(7,minmax(0,1fr))}.grid-cols-\[6rem_minmax\(0\,8rem\)_minmax\(0\,1fr\)\]{grid-template-columns:6rem minmax(0,8rem) minmax(0,1fr)}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-0\.5{gap:.125rem}.gap-1{gap:.25rem}.gap-1\.5{gap:.375rem}.gap-2{gap:.5rem}.gap-2\.5{gap:.625rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-\[3px\]{gap:3px}.gap-px{gap:1px}.gap-x-3{-moz-column-gap:.75rem;column-gap:.75rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-1{row-gap:.25rem}.gap-y-2{row-gap:.5rem}.gap-y-3{row-gap:.75rem}.space-y-0\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.125rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.125rem * var(--tw-space-y-reverse))}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem * var(--tw-space-y-reverse))}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.25rem * var(--tw-space-y-reverse))}.divide-y>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(1px * var(--tw-divide-y-reverse))}.divide-white\/\[0\.06\]>:not([hidden])~:not([hidden]){border-color:#ffffff0f}.self-end{align-self:flex-end}.self-center{align-self:center}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.whitespace-pre-line{white-space:pre-line}.whitespace-pre-wrap{white-space:pre-wrap}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.\!rounded-lg{border-radius:.5rem!important}.\!rounded-xl{border-radius:.75rem!important}.rounded{border-radius:.25rem}.rounded-2xl{border-radius:1rem}.rounded-3xl{border-radius:1.25rem}.rounded-\[24px\]{border-radius:24px}.rounded-\[2px\]{border-radius:2px}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.rounded-sm{border-radius:.125rem}.rounded-xl{border-radius:.75rem}.border{border-width:1px}.border-0{border-width:0}.border-2{border-width:2px}.border-b{border-bottom-width:1px}.border-l{border-left-width:1px}.border-l-2{border-left-width:2px}.border-r{border-right-width:1px}.border-t{border-top-width:1px}.border-dashed{border-style:dashed}.border-none{border-style:none}.\!border-teal\/20{border-color:rgb(var(--color-teal) / .2)!important}.\!border-white\/10{border-color:#ffffff1a!important}.\!border-white\/5{border-color:#ffffff0d!important}.border-amber{--tw-border-opacity:1;border-color:rgb(var(--color-amber) / var(--tw-border-opacity,1))}.border-amber\/15{border-color:rgb(var(--color-amber) / .15)}.border-amber\/20{border-color:rgb(var(--color-amber) / .2)}.border-amber\/30{border-color:rgb(var(--color-amber) / .3)}.border-coral\/15{border-color:rgb(var(--color-coral) / .15)}.border-coral\/20{border-color:rgb(var(--color-coral) / .2)}.border-coral\/25{border-color:rgb(var(--color-coral) / .25)}.border-coral\/30{border-color:rgb(var(--color-coral) / .3)}.border-coral\/40{border-color:rgb(var(--color-coral) / .4)}.border-emerald-600\/40{border-color:#05966966}.border-line\/30{border-color:rgb(var(--color-line) / .3)}.border-line\/40{border-color:rgb(var(--color-line) / .4)}.border-muted\/30{border-color:rgb(var(--color-muted) / .3)}.border-sky{--tw-border-opacity:1;border-color:rgb(var(--color-sky) / var(--tw-border-opacity,1))}.border-sky\/10{border-color:rgb(var(--color-sky) / .1)}.border-sky\/15{border-color:rgb(var(--color-sky) / .15)}.border-sky\/20{border-color:rgb(var(--color-sky) / .2)}.border-sky\/25{border-color:rgb(var(--color-sky) / .25)}.border-sky\/30{border-color:rgb(var(--color-sky) / .3)}.border-sky\/40{border-color:rgb(var(--color-sky) / .4)}.border-sky\/60{border-color:rgb(var(--color-sky) / .6)}.border-teal{--tw-border-opacity:1;border-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.border-teal\/15{border-color:rgb(var(--color-teal) / .15)}.border-teal\/20{border-color:rgb(var(--color-teal) / .2)}.border-teal\/30{border-color:rgb(var(--color-teal) / .3)}.border-teal\/40{border-color:rgb(var(--color-teal) / .4)}.border-transparent{border-color:#0000}.border-violet-400\/25{border-color:#a78bfa40}.border-violet-500\/20{border-color:#8b5cf633}.border-white\/10{border-color:#ffffff1a}.border-white\/15{border-color:#ffffff26}.border-white\/20{border-color:#fff3}.border-white\/45{border-color:#ffffff73}.border-white\/5{border-color:#ffffff0d}.border-white\/\[0\.04\]{border-color:#ffffff0a}.border-white\/\[0\.05\]{border-color:#ffffff0d}.border-white\/\[0\.06\]{border-color:#ffffff0f}.border-t-teal{--tw-border-opacity:1;border-top-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.border-t-teal\/70{border-top-color:rgb(var(--color-teal) / .7)}.\!bg-white\/\[0\.03\]{background-color:#ffffff08!important}.bg-\[rgba\(30\,34\,52\,0\.95\)\]{background-color:#1e2234f2}.bg-\[var\(--surface-1\,_\#1a1d23\)\]{background-color:var(--surface-1,#1a1d23)}.bg-amber{--tw-bg-opacity:1;background-color:rgb(var(--color-amber) / var(--tw-bg-opacity,1))}.bg-amber\/10{background-color:rgb(var(--color-amber) / .1)}.bg-amber\/15{background-color:rgb(var(--color-amber) / .15)}.bg-amber\/20{background-color:rgb(var(--color-amber) / .2)}.bg-amber\/40{background-color:rgb(var(--color-amber) / .4)}.bg-amber\/5{background-color:rgb(var(--color-amber) / .05)}.bg-amber\/70{background-color:rgb(var(--color-amber) / .7)}.bg-amber\/80{background-color:rgb(var(--color-amber) / .8)}.bg-amber\/\[0\.02\]{background-color:rgb(var(--color-amber) / .02)}.bg-amber\/\[0\.03\]{background-color:rgb(var(--color-amber) / .03)}.bg-amber\/\[0\.04\]{background-color:rgb(var(--color-amber) / .04)}.bg-amber\/\[0\.05\]{background-color:rgb(var(--color-amber) / .05)}.bg-amber\/\[0\.06\]{background-color:rgb(var(--color-amber) / .06)}.bg-black\/20{background-color:#0003}.bg-coral{--tw-bg-opacity:1;background-color:rgb(var(--color-coral) / var(--tw-bg-opacity,1))}.bg-coral\/10{background-color:rgb(var(--color-coral) / .1)}.bg-coral\/15{background-color:rgb(var(--color-coral) / .15)}.bg-coral\/20{background-color:rgb(var(--color-coral) / .2)}.bg-coral\/70{background-color:rgb(var(--color-coral) / .7)}.bg-coral\/80{background-color:rgb(var(--color-coral) / .8)}.bg-coral\/\[0\.04\]{background-color:rgb(var(--color-coral) / .04)}.bg-coral\/\[0\.05\]{background-color:rgb(var(--color-coral) / .05)}.bg-coral\/\[0\.06\]{background-color:rgb(var(--color-coral) / .06)}.bg-coral\/\[0\.08\]{background-color:rgb(var(--color-coral) / .08)}.bg-emerald-400\/80{background-color:#34d399cc}.bg-emerald-500\/10{background-color:#10b9811a}.bg-emerald-950\/20{background-color:#022c2233}.bg-muted\/40{background-color:rgb(var(--color-muted) / .4)}.bg-panel\/40{background-color:rgb(var(--color-panel) / .4)}.bg-panelstrong\/80{background-color:rgb(var(--color-panel-strong) / .8)}.bg-red-500\/15{background-color:#ef444426}.bg-red-500\/60{background-color:#ef444499}.bg-shell\/40{background-color:rgb(var(--color-shell) / .4)}.bg-shell\/60{background-color:rgb(var(--color-shell) / .6)}.bg-shell\/80{background-color:rgb(var(--color-shell) / .8)}.bg-sky{--tw-bg-opacity:1;background-color:rgb(var(--color-sky) / var(--tw-bg-opacity,1))}.bg-sky\/10{background-color:rgb(var(--color-sky) / .1)}.bg-sky\/15{background-color:rgb(var(--color-sky) / .15)}.bg-sky\/20{background-color:rgb(var(--color-sky) / .2)}.bg-sky\/40{background-color:rgb(var(--color-sky) / .4)}.bg-sky\/5{background-color:rgb(var(--color-sky) / .05)}.bg-sky\/\[0\.03\]{background-color:rgb(var(--color-sky) / .03)}.bg-sky\/\[0\.04\]{background-color:rgb(var(--color-sky) / .04)}.bg-sky\/\[0\.05\]{background-color:rgb(var(--color-sky) / .05)}.bg-sky\/\[0\.06\]{background-color:rgb(var(--color-sky) / .06)}.bg-sky\/\[0\.08\]{background-color:rgb(var(--color-sky) / .08)}.bg-teal{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.bg-teal\/10{background-color:rgb(var(--color-teal) / .1)}.bg-teal\/15{background-color:rgb(var(--color-teal) / .15)}.bg-teal\/20{background-color:rgb(var(--color-teal) / .2)}.bg-teal\/5{background-color:rgb(var(--color-teal) / .05)}.bg-teal\/80{background-color:rgb(var(--color-teal) / .8)}.bg-teal\/85{background-color:rgb(var(--color-teal) / .85)}.bg-teal\/90{background-color:rgb(var(--color-teal) / .9)}.bg-teal\/\[0\.03\]{background-color:rgb(var(--color-teal) / .03)}.bg-teal\/\[0\.04\]{background-color:rgb(var(--color-teal) / .04)}.bg-teal\/\[0\.06\]{background-color:rgb(var(--color-teal) / .06)}.bg-transparent{background-color:#0000}.bg-violet-400\/\[0\.02\]{background-color:#a78bfa05}.bg-violet-500\/10{background-color:#8b5cf61a}.bg-violet-500\/15{background-color:#8b5cf626}.bg-violet-500\/\[0\.06\]{background-color:#8b5cf60f}.bg-white\/10{background-color:#ffffff1a}.bg-white\/5{background-color:#ffffff0d}.bg-white\/\[0\.015\]{background-color:#ffffff04}.bg-white\/\[0\.01\]{background-color:#ffffff03}.bg-white\/\[0\.02\]{background-color:#ffffff05}.bg-white\/\[0\.03\]{background-color:#ffffff08}.bg-white\/\[0\.04\]{background-color:#ffffff0a}.bg-white\/\[0\.05\]{background-color:#ffffff0d}.bg-white\/\[0\.06\]{background-color:#ffffff0f}.bg-white\/\[0\.08\]{background-color:#ffffff14}.bg-zinc-500\/40{background-color:#71717a66}.p-0\.5{padding:.125rem}.p-1{padding:.25rem}.p-1\.5{padding:.375rem}.p-2{padding:.5rem}.p-2\.5{padding:.625rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.\!px-2{padding-left:.5rem!important;padding-right:.5rem!important}.\!py-0{padding-top:0!important;padding-bottom:0!important}.\!py-1{padding-top:.25rem!important;padding-bottom:.25rem!important}.\!py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}.px-1{padding-left:.25rem;padding-right:.25rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-3\.5{padding-left:.875rem;padding-right:.875rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-px{padding-top:1px;padding-bottom:1px}.\!pl-11{padding-left:2.75rem!important}.\!pl-2{padding-left:.5rem!important}.\!pl-3{padding-left:.75rem!important}.\!pl-9{padding-left:2.25rem!important}.\!pr-10{padding-right:2.5rem!important}.\!pr-2{padding-right:.5rem!important}.\!pr-3{padding-right:.75rem!important}.pb-1{padding-bottom:.25rem}.pb-12{padding-bottom:3rem}.pb-2{padding-bottom:.5rem}.pb-2\.5{padding-bottom:.625rem}.pb-3{padding-bottom:.75rem}.pl-2{padding-left:.5rem}.pl-9{padding-left:2.25rem}.pl-\[21px\]{padding-left:21px}.pr-1{padding-right:.25rem}.pr-3{padding-right:.75rem}.pr-8{padding-right:2rem}.pt-1{padding-top:.25rem}.pt-2{padding-top:.5rem}.pt-3{padding-top:.75rem}.pt-4{padding-top:1rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.align-middle{vertical-align:middle}.font-display{font-family:Inter,Aptos Display,Segoe UI Variable,system-ui,sans-serif}.font-mono{font-family:JetBrains Mono,Cascadia Code,Consolas,monospace}.font-sans{font-family:Inter,Aptos,Segoe UI Variable,system-ui,sans-serif}.\!text-\[11px\]{font-size:11px!important}.\!text-\[12px\]{font-size:12px!important}.\!text-\[13px\]{font-size:13px!important}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-\[12\.5px\]{font-size:12.5px}.text-\[12px\]{font-size:12px}.text-\[13px\]{font-size:13px}.text-\[14px\]{font-size:14px}.text-\[15px\]{font-size:15px}.text-\[9px\]{font-size:9px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-bold{font-weight:700}.font-medium{font-weight:500}.font-normal{font-weight:400}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.italic{font-style:italic}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal) var(--tw-slashed-zero) var(--tw-numeric-figure) var(--tw-numeric-spacing) var(--tw-numeric-fraction)}.leading-6{line-height:1.5rem}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.12em\]{letter-spacing:.12em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.1em\]{letter-spacing:.1em}.tracking-\[0\.2em\]{letter-spacing:.2em}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.\!text-muted\/60{color:rgb(var(--color-muted) / .6)!important}.\!text-teal\/80{color:rgb(var(--color-teal) / .8)!important}.text-amber{--tw-text-opacity:1;color:rgb(var(--color-amber) / var(--tw-text-opacity,1))}.text-amber\/50{color:rgb(var(--color-amber) / .5)}.text-amber\/60{color:rgb(var(--color-amber) / .6)}.text-amber\/70{color:rgb(var(--color-amber) / .7)}.text-amber\/80{color:rgb(var(--color-amber) / .8)}.text-amber\/90{color:rgb(var(--color-amber) / .9)}.text-coral{--tw-text-opacity:1;color:rgb(var(--color-coral) / var(--tw-text-opacity,1))}.text-coral\/60{color:rgb(var(--color-coral) / .6)}.text-coral\/70{color:rgb(var(--color-coral) / .7)}.text-coral\/80{color:rgb(var(--color-coral) / .8)}.text-emerald-400{--tw-text-opacity:1;color:rgb(52 211 153/var(--tw-text-opacity,1))}.text-ink{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1))}.text-ink\/70{color:rgb(var(--color-ink) / .7)}.text-ink\/80{color:rgb(var(--color-ink) / .8)}.text-ink\/90{color:rgb(var(--color-ink) / .9)}.text-muted{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.text-muted\/15{color:rgb(var(--color-muted) / .15)}.text-muted\/20{color:rgb(var(--color-muted) / .2)}.text-muted\/30{color:rgb(var(--color-muted) / .3)}.text-muted\/40{color:rgb(var(--color-muted) / .4)}.text-muted\/45{color:rgb(var(--color-muted) / .45)}.text-muted\/50{color:rgb(var(--color-muted) / .5)}.text-muted\/55{color:rgb(var(--color-muted) / .55)}.text-muted\/60{color:rgb(var(--color-muted) / .6)}.text-muted\/70{color:rgb(var(--color-muted) / .7)}.text-muted\/80{color:rgb(var(--color-muted) / .8)}.text-muted\/85{color:rgb(var(--color-muted) / .85)}.text-red-400{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.text-shell{--tw-text-opacity:1;color:rgb(var(--color-shell) / var(--tw-text-opacity,1))}.text-sky{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.text-sky\/50{color:rgb(var(--color-sky) / .5)}.text-sky\/70{color:rgb(var(--color-sky) / .7)}.text-sky\/80{color:rgb(var(--color-sky) / .8)}.text-sky\/85{color:rgb(var(--color-sky) / .85)}.text-teal{--tw-text-opacity:1;color:rgb(var(--color-teal) / var(--tw-text-opacity,1))}.text-teal\/50{color:rgb(var(--color-teal) / .5)}.text-teal\/60{color:rgb(var(--color-teal) / .6)}.text-teal\/70{color:rgb(var(--color-teal) / .7)}.text-teal\/80{color:rgb(var(--color-teal) / .8)}.text-transparent{color:#0000}.text-violet-400{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.underline{text-decoration-line:underline}.line-through{text-decoration-line:line-through}.decoration-muted\/40{-webkit-text-decoration-color:rgb(var(--color-muted) / .4);text-decoration-color:rgb(var(--color-muted) / .4)}.decoration-teal\/40{-webkit-text-decoration-color:rgb(var(--color-teal) / .4);text-decoration-color:rgb(var(--color-teal) / .4)}.decoration-teal\/50{-webkit-text-decoration-color:rgb(var(--color-teal) / .5);text-decoration-color:rgb(var(--color-teal) / .5)}.decoration-dotted{text-decoration-style:dotted}.underline-offset-2{text-underline-offset:2px}.placeholder-muted\/40::placeholder{color:rgb(var(--color-muted) / .4)}.accent-amber{accent-color:rgb(var(--color-amber) / 1)}.accent-coral{accent-color:rgb(var(--color-coral) / 1)}.accent-sky{accent-color:rgb(var(--color-sky) / 1)}.accent-teal{accent-color:rgb(var(--color-teal) / 1)}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-50{opacity:.5}.opacity-60{opacity:.6}.opacity-80{opacity:.8}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px #0000001a, 0 4px 6px -4px #0000001a;--tw-shadow-colored:0 10px 15px -3px var(--tw-shadow-color), 0 4px 6px -4px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-none{--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-xl{--tw-shadow:0 20px 25px -5px #0000001a, 0 8px 10px -6px #0000001a;--tw-shadow-colored:0 20px 25px -5px var(--tw-shadow-color), 0 8px 10px -6px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-black\/40{--tw-shadow-color:#0006;--tw-shadow:var(--tw-shadow-colored)}.outline-none{outline-offset:2px;outline:2px solid #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.ring-amber\/50{--tw-ring-color:rgb(var(--color-amber) / .5)}.ring-sky\/20{--tw-ring-color:rgb(var(--color-sky) / .2)}.ring-sky\/35{--tw-ring-color:rgb(var(--color-sky) / .35)}.filter{filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.backdrop-blur-2xl{--tw-backdrop-blur:blur(40px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-xl{--tw-backdrop-blur:blur(24px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[border-color\,box-shadow\,background-color\]{transition-property:border-color,box-shadow,background-color;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\,box-shadow\]{transition-property:width,box-shadow;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-\[width\]{transition-property:width;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-opacity{transition-property:opacity;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-150{transition-duration:.15s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[appearance\:textfield\]{appearance:textfield}.\[color-scheme\:dark\]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--color-shell:18 20 30;--color-panel:28 32 46;--color-panel-strong:36 40 56;--color-ink:230 236 250;--color-muted:140 152 178;--color-line:68 76 100;--color-teal:94 234 212;--color-amber:251 191 36;--color-coral:251 113 133;--color-sky:129 161 255;--surface-overlay-weak:255 255 255;--surface-overlay-soft:255 255 255;--surface-overlay-strong:255 255 255;--surface-shadow:0 0 0}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--color-shell:248 249 252;--color-panel:255 255 255;--color-panel-strong:242 244 248;--color-ink:24 28 42;--color-muted:100 112 136;--color-line:220 225 235;--color-teal:13 148 136;--color-amber:217 119 6;--color-coral:225 29 72;--color-sky:37 99 235;--surface-overlay-weak:20 24 40;--surface-overlay-soft:20 24 40;--surface-overlay-strong:20 24 40;--surface-shadow:20 24 40}#root{min-height:100vh}.app-shell{min-height:100vh;position:relative;overflow-x:clip}.app-shell:before{content:"";pointer-events:none;background-image:radial-gradient(circle at center, rgb(var(--surface-overlay-weak) / .022) 1px, transparent 1px);background-size:32px 32px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#0000004d,#0000 35%);mask-image:linear-gradient(#0000004d,#0000 35%)}.app-shell:after{content:"";pointer-events:none;background:radial-gradient(circle, rgb(var(--color-teal) / .045), rgb(var(--color-sky) / .025) 50%, transparent 70%);filter:blur(80px);border-radius:999px;width:36rem;height:36rem;position:fixed;bottom:-28rem;right:-20rem}.page{animation:.35s cubic-bezier(.16,1,.3,1) rise}.soft-scrollbar{scrollbar-width:thin;scrollbar-color:rgb(var(--color-muted) / .25) transparent}.soft-scrollbar::-webkit-scrollbar{width:6px;height:6px}.soft-scrollbar::-webkit-scrollbar-track{background:0 0}.soft-scrollbar::-webkit-scrollbar-thumb{background:rgb(var(--color-muted) / .2);border-radius:999px}.soft-scrollbar::-webkit-scrollbar-thumb:hover{background:rgb(var(--color-muted) / .35)}@keyframes job-card-highlight-pulse{0%{background-color:#5eead414;border-color:#5eead480;box-shadow:0 0 0 1px #5eead461,0 0 0 14px #5eead42e,0 20px 44px #5eead433}60%{background-color:#5eead40a;border-color:#5eead447;box-shadow:0 0 0 1px #5eead43d,0 0 0 8px #5eead41a,0 14px 34px #5eead424}to{background-color:#5eead400;border-color:#5eead42e;box-shadow:0 0 0 1px #5eead429,0 0 #5eead400,0 8px 22px #0000001f}}.weight-slider::-webkit-slider-thumb{appearance:none;cursor:pointer;background:currentColor;border:2px solid #ffffff26;border-radius:50%;width:14px;height:14px;transition:transform .15s,box-shadow .15s;box-shadow:0 1px 4px #0000004d}.weight-slider::-webkit-slider-thumb:hover{transform:scale(1.2);box-shadow:0 1px 8px #0006}.weight-slider::-moz-range-thumb{cursor:pointer;background:currentColor;border:2px solid #ffffff26;border-radius:50%;width:14px;height:14px;box-shadow:0 1px 4px #0000004d}.job-card-highlight{animation:1.8s ease-out job-card-highlight-pulse}.placeholder\:text-muted::placeholder{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.placeholder\:text-muted\/30::placeholder{color:rgb(var(--color-muted) / .3)}.placeholder\:text-muted\/40::placeholder{color:rgb(var(--color-muted) / .4)}.last\:border-b-0:last-child{border-bottom-width:0}.hover\:-translate-y-\[1px\]:hover{--tw-translate-y:-1px;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-amber\/30:hover{border-color:rgb(var(--color-amber) / .3)}.hover\:border-line\/60:hover{border-color:rgb(var(--color-line) / .6)}.hover\:border-muted\/60:hover{border-color:rgb(var(--color-muted) / .6)}.hover\:border-sky\/30:hover{border-color:rgb(var(--color-sky) / .3)}.hover\:border-sky\/35:hover{border-color:rgb(var(--color-sky) / .35)}.hover\:border-teal\/30:hover{border-color:rgb(var(--color-teal) / .3)}.hover\:border-white\/10:hover{border-color:#ffffff1a}.hover\:border-white\/30:hover{border-color:#ffffff4d}.hover\:bg-amber\/10:hover{background-color:rgb(var(--color-amber) / .1)}.hover\:bg-amber\/15:hover{background-color:rgb(var(--color-amber) / .15)}.hover\:bg-amber\/20:hover{background-color:rgb(var(--color-amber) / .2)}.hover\:bg-amber\/25:hover{background-color:rgb(var(--color-amber) / .25)}.hover\:bg-coral\/10:hover{background-color:rgb(var(--color-coral) / .1)}.hover\:bg-coral\/15:hover{background-color:rgb(var(--color-coral) / .15)}.hover\:bg-coral\/25:hover{background-color:rgb(var(--color-coral) / .25)}.hover\:bg-coral\/5:hover{background-color:rgb(var(--color-coral) / .05)}.hover\:bg-coral\/90:hover{background-color:rgb(var(--color-coral) / .9)}.hover\:bg-red-500\/25:hover{background-color:#ef444440}.hover\:bg-sky\/20:hover{background-color:rgb(var(--color-sky) / .2)}.hover\:bg-sky\/25:hover{background-color:rgb(var(--color-sky) / .25)}.hover\:bg-sky\/\[0\.02\]:hover{background-color:rgb(var(--color-sky) / .02)}.hover\:bg-sky\/\[0\.15\]:hover{background-color:rgb(var(--color-sky) / .15)}.hover\:bg-teal:hover{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.hover\:bg-teal\/10:hover{background-color:rgb(var(--color-teal) / .1)}.hover\:bg-teal\/15:hover{background-color:rgb(var(--color-teal) / .15)}.hover\:bg-teal\/25:hover{background-color:rgb(var(--color-teal) / .25)}.hover\:bg-teal\/95:hover{background-color:rgb(var(--color-teal) / .95)}.hover\:bg-white\/10:hover{background-color:#ffffff1a}.hover\:bg-white\/20:hover{background-color:#fff3}.hover\:bg-white\/5:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.02\]:hover{background-color:#ffffff05}.hover\:bg-white\/\[0\.03\]:hover{background-color:#ffffff08}.hover\:bg-white\/\[0\.04\]:hover{background-color:#ffffff0a}.hover\:bg-white\/\[0\.05\]:hover{background-color:#ffffff0d}.hover\:bg-white\/\[0\.06\]:hover{background-color:#ffffff0f}.hover\:bg-white\/\[0\.07\]:hover{background-color:#ffffff12}.hover\:bg-white\/\[0\.08\]:hover{background-color:#ffffff14}.hover\:bg-white\/\[0\.2\]:hover{background-color:#fff3}.hover\:text-amber:hover{--tw-text-opacity:1;color:rgb(var(--color-amber) / var(--tw-text-opacity,1))}.hover\:text-coral:hover{--tw-text-opacity:1;color:rgb(var(--color-coral) / var(--tw-text-opacity,1))}.hover\:text-current:hover{color:currentColor}.hover\:text-ink:hover{--tw-text-opacity:1;color:rgb(var(--color-ink) / var(--tw-text-opacity,1))}.hover\:text-muted:hover{--tw-text-opacity:1;color:rgb(var(--color-muted) / var(--tw-text-opacity,1))}.hover\:text-muted\/60:hover{color:rgb(var(--color-muted) / .6)}.hover\:text-muted\/80:hover{color:rgb(var(--color-muted) / .8)}.hover\:text-red-400:hover{--tw-text-opacity:1;color:rgb(248 113 113/var(--tw-text-opacity,1))}.hover\:text-sky:hover{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.hover\:text-teal:hover{--tw-text-opacity:1;color:rgb(var(--color-teal) / var(--tw-text-opacity,1))}.hover\:text-teal\/70:hover{color:rgb(var(--color-teal) / .7)}.hover\:text-teal\/80:hover{color:rgb(var(--color-teal) / .8)}.hover\:text-violet-400:hover{--tw-text-opacity:1;color:rgb(167 139 250/var(--tw-text-opacity,1))}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-100:hover{opacity:1}.hover\:opacity-80:hover{opacity:.8}.hover\:shadow-\[0_8px_20px_rgba\(14\,165\,233\,0\.12\)\]:hover{--tw-shadow:0 8px 20px #0ea5e91f;--tw-shadow-colored:0 8px 20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.hover\:brightness-125:hover{--tw-brightness:brightness(1.25);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.focus\:border-sky\/30:focus{border-color:rgb(var(--color-sky) / .3)}.focus\:border-sky\/40:focus{border-color:rgb(var(--color-sky) / .4)}.focus\:border-sky\/45:focus{border-color:rgb(var(--color-sky) / .45)}.focus\:border-teal\/40:focus{border-color:rgb(var(--color-teal) / .4)}.focus\:border-teal\/50:focus{border-color:rgb(var(--color-teal) / .5)}.focus\:bg-white\/\[0\.04\]:focus{background-color:#ffffff0a}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-sky\/30:focus{--tw-ring-color:rgb(var(--color-sky) / .3)}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-sky\/50:focus-visible{--tw-ring-color:rgb(var(--color-sky) / .5)}.focus-visible\:ring-teal\/15:focus-visible{--tw-ring-color:rgb(var(--color-teal) / .15)}.focus-visible\:ring-teal\/35:focus-visible{--tw-ring-color:rgb(var(--color-teal) / .35)}.focus-visible\:ring-offset-1:focus-visible{--tw-ring-offset-width:1px}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.focus-visible\:ring-offset-shell:focus-visible{--tw-ring-offset-color:rgb(var(--color-shell) / 1)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-30:disabled{opacity:.3}.disabled\:opacity-40:disabled{opacity:.4}.disabled\:opacity-50:disabled{opacity:.5}.group[open] .group-open\:rotate-180{--tw-rotate:180deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group[open] .group-open\:rotate-90{--tw-rotate:90deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.group:hover .group-hover\:text-sky{--tw-text-opacity:1;color:rgb(var(--color-sky) / var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}.peer:checked~.peer-checked\:border-teal{--tw-border-opacity:1;border-color:rgb(var(--color-teal) / var(--tw-border-opacity,1))}.peer:checked~.peer-checked\:bg-teal{--tw-bg-opacity:1;background-color:rgb(var(--color-teal) / var(--tw-bg-opacity,1))}.peer:checked~.peer-checked\:text-shell{--tw-text-opacity:1;color:rgb(var(--color-shell) / var(--tw-text-opacity,1))}.peer:focus-visible~.peer-focus-visible\:ring-2{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow,0 0 #0000)}.peer:focus-visible~.peer-focus-visible\:ring-teal\/35{--tw-ring-color:rgb(var(--color-teal) / .35)}.peer:disabled~.peer-disabled\:cursor-not-allowed{cursor:not-allowed}.peer:disabled~.peer-disabled\:opacity-60{opacity:.6}@media (width>=640px){.sm\:max-w-lg{max-width:32rem}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.sm\:items-end{align-items:flex-end}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}.sm\:text-4xl{font-size:2.25rem;line-height:2.5rem}}@media (width>=768px){.md\:col-span-2{grid-column:span 2/span 2}.md\:block{display:block}.md\:inline{display:inline}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.md\:grid-cols-\[12rem_minmax\(0\,1fr\)_auto\]{grid-template-columns:12rem minmax(0,1fr) auto}.md\:grid-cols-\[minmax\(0\,1fr\)_14rem_10rem_10rem_10rem\]{grid-template-columns:minmax(0,1fr) 14rem 10rem 10rem 10rem}}@media (width>=1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:w-64{width:16rem}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-\[minmax\(0\,1\.3fr\)_minmax\(18rem\,0\.9fr\)\]{grid-template-columns:minmax(0,1.3fr) minmax(18rem,.9fr)}}@media (width>=1280px){.xl\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.xl\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.xl\:grid-cols-\[2fr_1fr\]{grid-template-columns:2fr 1fr}.xl\:grid-cols-\[minmax\(0\,1\.2fr\)_minmax\(18rem\,0\.8fr\)\]{grid-template-columns:minmax(0,1.2fr) minmax(18rem,.8fr)}.xl\:self-start{align-self:flex-start}}.\[\&\:\:-webkit-inner-spin-button\]\:appearance-none::-webkit-inner-spin-button{appearance:none}.\[\&\:\:-webkit-outer-spin-button\]\:appearance-none::-webkit-outer-spin-button{appearance:none} diff --git a/src/bewerbungs_assistent/static/dashboard/index.html b/src/bewerbungs_assistent/static/dashboard/index.html index a2d79db..65775a9 100644 --- a/src/bewerbungs_assistent/static/dashboard/index.html +++ b/src/bewerbungs_assistent/static/dashboard/index.html @@ -9,8 +9,8 @@ PBP - Bewerbungs-Portal - - + +
diff --git a/src/bewerbungs_assistent/tools/analyse.py b/src/bewerbungs_assistent/tools/analyse.py index b77d64d..1d6a1b6 100644 --- a/src/bewerbungs_assistent/tools/analyse.py +++ b/src/bewerbungs_assistent/tools/analyse.py @@ -1706,6 +1706,8 @@ def pbp_capabilities(kategorie: str = "") -> dict: "profil_bearbeiten / position_hinzufuegen / skill_hinzufuegen / ausbildung_hinzufuegen", "profile_auflisten / profil_wechseln / neues_profil_erstellen — Multi-Profil", "profil_exportieren / profil_importieren — Backup & Migration", + # #696-B: war faelschlich unter 'bewerbungen' als Interview-Nachgang gelistet + "kennlerngespraech_abschliessen — Profil-Onboarding-Gespraech als abgeschlossen markieren (Dashboard-Wizard geht weiter)", ], }, "jobsuche": { @@ -1717,9 +1719,11 @@ def pbp_capabilities(kategorie: str = "") -> dict: "stelle_bewerten — EINZELNE Stelle aussortieren oder als-passend", "stellen_bulk_bewerten — VIELE Stellen mit Filter aussortieren (#514). IMMER bevorzugen wenn mehr als ~10 Stellen betroffen. dry_run=True Default.", "stelle_bearbeiten / stelle_manuell_anlegen / stelle_mergen", + "stelle_reaktivieren — aussortierte Stelle wieder aktivieren", + "stelle_wiedergaenger_pruefen — wiederkehrende Stellen erkennen (KI-frei)", "fit_analyse — Profil-vs-Stelle Punkt-fuer-Punkt-Vergleich", "scoring_konfigurieren / scoring_vorschau — Gewichtungs-Regler", - "suchkriterien_setzen / _bearbeiten / _anzeigen", + "suchkriterien_setzen / _bearbeiten / _anzeigen — inkl. keywords_minus (weiche Abwertung)", "blacklist_verwalten — Firmen/Keywords ausschliessen", "scraper_diagnose — Welche Quellen liefern aktuell?", ], @@ -1735,7 +1739,8 @@ def pbp_capabilities(kategorie: str = "") -> dict: "antwort_formulieren — E-Mail-Antwort generieren", "nachfass_planen / nachfass_anzeigen — Follow-up-Tracking", "follow_up_erledigen / _hinfaellig / _verschieben", - "kennlerngespraech_abschliessen — Interview-Nachgang", + "interview_reflexion_speichern — Interview-Nachgang: eigene Notizen pro Interview-Termin", + "todo_anlegen / todos_anzeigen / todo_erledigen — Aufgaben pro Bewerbung mit Faelligkeitsdatum", "bewerbungsbericht_exportieren — PDF-Bericht", "ablehnungs_muster — Was wird oft abgelehnt?", ], @@ -1748,6 +1753,7 @@ def pbp_capabilities(kategorie: str = "") -> dict: "bewerbungs_dokumente_erkennen — Auto-Klassifikation", "dokumente_bulk_markieren — Status-Bulk-Update", "dokument_verknuepfen / dokument_entverknuepfen — Bewerbungs-Zuordnung", + "dokument_archivieren / dokument_reaktivieren / dokumente_routing_plan_erstellen — Dokument-Lifecycle (aktiv/archiviert/veraltet) + Routing", "dokument_status_setzen / dokument_loeschen", "dokument_profil_extrahieren — CV -> Profil-Daten", ], @@ -1796,6 +1802,7 @@ def pbp_capabilities(kategorie: str = "") -> dict: "scoring_konfigurieren / scoring_vorschau", "blacklist_verwalten", "jobtitel_vorschlagen / jobtitel_verwalten", + "ablehnungsgruende_anzeigen / ablehnungsgrund_anlegen — eigene Ablehnungsgruende verwalten", ], }, "system": { @@ -1805,6 +1812,7 @@ def pbp_capabilities(kategorie: str = "") -> dict: "pbp_capabilities — Diese Tool-Uebersicht (#514)", "pbp_grenze_melden — Wenn PBP fuer eine Aufgabe nichts hat (#514). ANSTATT auf andere Tools auszuweichen.", "scraper_diagnose — Job-Quellen-Status", + "onboarding_hints_anzeigen — Tipps zu ungenutzten Features", ], }, } diff --git a/src/bewerbungs_assistent/tools/bewerbungen.py b/src/bewerbungs_assistent/tools/bewerbungen.py index a022368..6236c29 100644 --- a/src/bewerbungs_assistent/tools/bewerbungen.py +++ b/src/bewerbungs_assistent/tools/bewerbungen.py @@ -605,6 +605,16 @@ def bewerbung_status_aendern( angelegt (#522). Sinnvoll wenn der Recruiter ausdruecklich zugesagt hat sich zu melden. """ + # #695: Typ-Pruefung am Tool-Eingang — gleiches Muster wie + # bewerbung_details (#505). DOC-/JOB-IDs fliegen sofort raus. + from ..services.typed_ids import validate_id, IdKind, TypedIdMismatch + try: + bewerbung_id = validate_id(IdKind.APPLICATION, bewerbung_id) + except TypedIdMismatch as e: + return {"fehler": str(e), + "hinweis": "Du hast eine ID des falschen Typs uebergeben. " + "Bewerbungs-IDs haben das Praefix 'APP-'."} + # v1.7.0-beta.20: Status-Whitelist. Bestand hatte undefinierte Werte # ("warte_auf_rueckmeldung", "abgesagt") die durch das alte Tool # einfach durchgewunken wurden — Statistik konnte sie nicht einordnen. @@ -640,6 +650,10 @@ def bewerbung_status_aendern( # v1.7.0-beta.40 (#609): App holen wir immer, damit Elwosa-Hook # weiter unten die Firma kennt. app = db.get_application(bewerbung_id) + # #695: unbekannte ID -> klarer Fehler statt stillem "aktualisiert" + if not app: + return {"fehler": "Bewerbung nicht gefunden. " + "Pruefe die ID mit bewerbungen_anzeigen()."} # Bei Wechsel von in_vorbereitung zu beworben: applied_at setzen + Stelle deaktivieren (#405) auto_followup_id = None diff --git a/src/bewerbungs_assistent/tools/dokumente.py b/src/bewerbungs_assistent/tools/dokumente.py index 841ba33..1818b12 100644 --- a/src/bewerbungs_assistent/tools/dokumente.py +++ b/src/bewerbungs_assistent/tools/dokumente.py @@ -9,6 +9,28 @@ from ..database import get_data_dir +def _company_match_key(name: str) -> str: + """#686: Firmenname auf einen distinktiven Such-Schluessel reduzieren. + + Entfernt Rechtsformen/Generika (SE, GmbH, AG, Group, ...) und nimmt das + laengste verbleibende Token (>=4 Zeichen): 'adesso SE' -> 'adesso', + 'Bechtle GmbH' -> 'bechtle', 'Lufthansa Technik' -> 'lufthansa'. Liefert '' + wenn nichts Distinktives bleibt (dann findet kein Matching statt) — bewusst + konservativ gegen Falsch-Treffer bei sehr kurzen/generischen Namen. + """ + s = (name or "").lower() + s = re.sub(r"[^\w\s]", " ", s, flags=re.UNICODE) + stop = { + "se", "ag", "gmbh", "mbh", "kg", "ohg", "ug", "kgaa", "ek", "co", + "inc", "ltd", "llc", "plc", "group", "gruppe", "holding", "deutschland", + "germany", "international", "the", "und", "and", "von", "der", "die", "das", + } + tokens = [t for t in s.split() if t not in stop and len(t) >= 4] + if not tokens: + tokens = [t for t in s.split() if len(t) >= 4] + return max(tokens, key=len) if tokens else "" + + def register(mcp, db, logger): """Register all document-related tools.""" from . import ki_gate @@ -98,7 +120,9 @@ def dokumente_zur_analyse(archiv: bool = False) -> dict: """ profile = db.get_profile() if profile is None: - return {"status": "kein_profil"} + return {"status": "kein_profil", + "nachricht": "Noch kein Profil vorhanden. Starte die Ersterfassung " + "mit ersterfassung_starten() oder lege es mit profil_erstellen() an."} # v1.7.0-beta.64 (#640): Status-Stufen explizit trennen. # 'nicht_extrahiert'/'' = nie angefasst @@ -763,7 +787,9 @@ def analyse_plan_erstellen(archiv: bool = False) -> dict: _t0 = _t.time() profile = db.get_profile() if not profile: - return {"fehler": "Kein aktives Profil."} + return {"fehler": "Kein aktives Profil.", + "nachricht": "Starte die Ersterfassung mit ersterfassung_starten() " + "oder lege ein Profil mit profil_erstellen() an."} conn = db.connect() pid = profile["id"] @@ -814,6 +840,50 @@ def analyse_plan_erstellen(archiv: bool = False) -> dict: if firma: firmen.add(firma) + # #686: Eingehende Dokumente gegen bestehende Bewerbungen matchen, damit + # eine Mail/Anlage einer bestehenden Bewerbung zugeordnet werden kann + # statt unbemerkt eine Dublette anzulegen. Firmenname (normalisiert) im + # Dateinamen ODER Volltext -> Zuordnungsvorschlag. Bewusst grosszuegig + # (Vorschlag, kein Auto-Link) — Claude/User bestaetigt. + bewerbungs_zuordnungen = [] + try: + apps = conn.execute( + "SELECT id, company, title, status FROM applications " + "WHERE profile_id=? AND company IS NOT NULL AND TRIM(company) != ''", + (pid,) + ).fetchall() + analyse_ids = {d["id"] for d in nicht_analysiert} + gesehen = set() + for app in apps: + firma_key = _company_match_key(app["company"]) + if len(firma_key) < 4: + continue + like = f"%{firma_key}%" + rows = conn.execute( + "SELECT id, filename FROM documents " + "WHERE profile_id=? AND extracted_text IS NOT NULL " + "AND extracted_text != ''" + lifecycle_clause + + " AND (LOWER(filename) LIKE ? OR LOWER(extracted_text) LIKE ?)", + (pid, like, like) + ).fetchall() + for r in rows: + schluessel = (r["id"], app["id"]) + if schluessel in gesehen: + continue + gesehen.add(schluessel) + firmen.add(app["company"]) # Firma aus Bewerbung sichtbar machen + bewerbungs_zuordnungen.append({ + "dokument_id": r["id"], + "dateiname": r["filename"], + "bewerbung_id": app["id"], + "firma": app["company"], + "bewerbung_titel": app["title"], + "bewerbung_status": app["status"], + "noch_zu_analysieren": r["id"] in analyse_ids, + }) + except Exception as exc: + logger.warning("#686 Bewerbungs-Matching im Analyse-Plan fehlgeschlagen: %s", exc) + total_bytes = sum((d.get("text_laenge") or 0) for d in unique) # #635: Pro Batch nur 3 Datei-Vorschauen + Counter — vorher alle # Dateinamen, was bei vielen Docs die Response sprengen konnte. @@ -839,11 +909,28 @@ def analyse_plan_erstellen(archiv: bool = False) -> dict: "total_text_bytes": total_bytes, "geschaetzte_tokens": total_bytes // 4, "erkannte_firmen": sorted(firmen)[:50], # #635: Hard-Cap + # #686: Vorschlaege, welche Dokumente zu bestehenden Bewerbungen gehoeren + "bewerbungs_zuordnungen": bewerbungs_zuordnungen[:50], "batches": batches_summary, "empfehlung": ( + # #696: bei 0 zu analysierenden Docs nicht zum naechsten + # Batch raten — der Neuling muss erst hochladen. + ( + "Keine Dokumente zu analysieren. Lade Lebenslauf & Zeugnisse " + "im Dashboard unter 'Dokumente' hoch." + if len(docs) == 0 else + "Alle vorhandenen Dokumente sind bereits analysiert." + ) + if len(nicht_analysiert) == 0 else f"{len(dup_ids)} Duplikate werden automatisch übersprungen. " f"{len(unique)} einzigartige Dokumente in {len(batches)} Batches analysieren. " - f"Nutze dokumente_batch_analysieren() für den nächsten Batch." + + ( + f"{len(bewerbungs_zuordnungen)} Dokument(e) passen evtl. zu bestehenden " + "Bewerbungen (siehe bewerbungs_zuordnungen) — pruefe das, bevor du eine " + "neue Bewerbung anlegst (Dublettenschutz). " + if bewerbungs_zuordnungen else "" + ) + + "Nutze dokumente_batch_analysieren() für den nächsten Batch." ), } logger.info( @@ -901,7 +988,9 @@ def dokumente_batch_analysieren( profile = db.get_profile() if not profile: - return {"fehler": "Kein aktives Profil."} + return {"fehler": "Kein aktives Profil.", + "nachricht": "Starte die Ersterfassung mit ersterfassung_starten() " + "oder lege ein Profil mit profil_erstellen() an."} conn = db.connect() pid = profile["id"] @@ -920,6 +1009,18 @@ def dokumente_batch_analysieren( all_docs = [dict(r) for r in rows] if not all_docs: + # #696: ehrlich unterscheiden — "alles analysiert" stimmt nur, + # wenn ueberhaupt Dokumente existieren. Der Neulings-Normalfall + # (frische Installation, noch nichts hochgeladen) bekommt einen + # Upload-Hinweis statt einer faktisch falschen Erfolgsmeldung. + doc_count = conn.execute( + "SELECT COUNT(*) AS n FROM documents WHERE profile_id=?", (pid,) + ).fetchone()["n"] + if doc_count == 0: + return {"status": "keine_dokumente", + "nachricht": "Noch keine Dokumente hochgeladen. Lade Lebenslauf & " + "Zeugnisse im Dashboard unter 'Dokumente' hoch — " + "danach kann ich sie analysieren."} return {"status": "fertig", "nachricht": "Alle Dokumente sind bereits analysiert."} # Duplikate erkennen und automatisch markieren diff --git a/src/bewerbungs_assistent/tools/jobs.py b/src/bewerbungs_assistent/tools/jobs.py index a01f557..5a551c3 100644 --- a/src/bewerbungs_assistent/tools/jobs.py +++ b/src/bewerbungs_assistent/tools/jobs.py @@ -500,6 +500,22 @@ def jobsuche_starten( "oder gib sie explizit an: quellen=['stepstone', 'bundesagentur']" } + # #695: Ohne Suchbegriffe nicht starten — sonst faellt z.B. der + # Bundesagentur-Adapter still auf generische DEFAULT_KEYWORDS zurueck + # und flutet die Stellen-Liste eines Neulings mit profil-fremden Jobs. + if not keywords: + crit = db.get_search_criteria() + if not (crit.get("keywords_muss") or crit.get("keywords_plus")): + return { + "status": "keine_suchbegriffe", + "nachricht": ( + "Noch keine Suchkriterien gesetzt. Lege sie mit " + "suchkriterien_setzen() fest oder nutze " + "workflow_starten('jobsuche_workflow') — sonst wuerde " + "PBP mit generischen Begriffen suchen." + ), + } + # #488: Manuelle/deprecated Quellen rausfiltern und separat melden. manuelle = [q for q in quellen if q in _MANUAL_SOURCES] auto_quellen = [q for q in quellen if q not in _MANUAL_SOURCES] @@ -891,6 +907,13 @@ def stelle_bewerten(job_hash: str, bewertung: str, grund: str = "", firma_uninteressant, zeitarbeit, befristet, bereits_beworben, duplikat, kein_hochschulabschluss, sonstiges """ + # #695: Existenz-Guard — vorher meldete das Tool bei unbekanntem Hash + # "aussortiert"/"als_passend_markiert" und zaehlte sogar die + # Ablehnungs-Statistik hoch (Phantom-Eintraege im Lerneffekt). + if not db.get_job(job_hash): + return {"fehler": "Stelle nicht gefunden. " + "Pruefe den Hash mit stellen_anzeigen()."} + if bewertung == "passt_nicht": reason_list = _normalize_reason_list(grund, gruende) if not reason_list: @@ -2751,7 +2774,7 @@ def stellen_auto_aussortieren( max_stellen: int = 10, min_score: int = 0, dry_run: bool = False, - max_dauer_sek: int = 180, + max_dauer_sek: int = 50, ) -> dict: """Profil-basiertes Auto-Aussortieren via lokaler AI (#586, #646). @@ -2772,9 +2795,10 @@ def stellen_auto_aussortieren( Heuristik-Raterei. v1.7.0-beta.74 (#646): Hard-Cap auf max_stellen=10 (vorher 50) + - Wall-Clock-Budget max_dauer_sek=180s. Bei Erreichen des Budgets - wird mit `status='teilweise'` und allen bis dahin verarbeiteten - Stellen zurueckgegeben — kein stilles 4-Min-Timeout mehr. + Wall-Clock-Budget max_dauer_sek=50s (#691, bewusst unter dem ~60s- + MCP-Client-Timeout). Bei Erreichen des Budgets wird mit + `status='teilweise'` und allen bis dahin verarbeiteten Stellen + zurueckgegeben — kein stilles Timeout, kein Schema-Validierungsfehler. Idempotent fortsetzbar: ein erneuter Aufruf bearbeitet die nicht verarbeiteten Reste. @@ -2785,18 +2809,23 @@ def stellen_auto_aussortieren( min_score: Mindest-Score-Schwelle. Stellen darunter werden gar nicht erst der LLM vorgelegt (Default 0 = alle). dry_run: Wenn True, nur Vorschau ohne dismiss-Aktionen. - max_dauer_sek: Wall-Clock-Budget in Sekunden (Default 180). - Bei Erreichen wird mit Teil-Ergebnis abgebrochen. + max_dauer_sek: Wall-Clock-Budget in Sekunden (Default 50, cap 90; + bewusst unter dem ~60s-MCP-Client-Timeout, #691). Bei + Erreichen wird mit schemakonformem Teil-Ergebnis abgebrochen. Idempotent: bewertet keine Stelle erneut die schon `passt_nicht` oder eine Bewerbung hat. """ import time as _time run_started_at = _time.monotonic() - # Defensive Caps (#646): MCP-Client gibt nach 4 Min auf, deshalb - # NIE ueber 240s budget und nie ueber 30 Stellen pro Run. + # Defensive Caps (#646, #691): Der MCP-Client (Claude Desktop) bricht + # einen Tool-Call schon nach ~60s ab. Ein laengerer Lauf wird dann + # gecancelt und FastMCP 3.x liefert "outputSchema defined but no + # structured output returned" statt eines sauberen Teil-Ergebnisses. + # Darum Budget-Default 50s (cap 90s); der Wall-Clock-Check unten gibt + # VOR dem Client-Timeout ein schemakonformes status='teilweise' zurueck. max_stellen = max(1, min(int(max_stellen or 10), 30)) - max_dauer_sek = max(30, min(int(max_dauer_sek or 180), 240)) + max_dauer_sek = max(20, min(int(max_dauer_sek or 50), 90)) # v1.7.0-beta.46 (#610): Try/except um den ganzen Body, alle # Returns mit uniformem Schema. Vorher: outputSchema-Validierungs- # fehler weil error-Pfade andere Keys hatten als Success-Pfade. @@ -2845,7 +2874,10 @@ def _err(msg: str, **extra) -> dict: return _err(f"unerwarteter_fehler: {str(exc)[:200]}") # Profil-Kontext sammeln - profile = db.get_profile() or {} + try: + profile = db.get_profile() or {} + except Exception as exc: # #691: schemakonformer Fehler statt Crash + return _err(f"profil_lesen_fehlgeschlagen: {str(exc)[:150]}") profile_skills = [ s.get("name", "") for s in (profile.get("skills") or [])[:15] ] @@ -2873,7 +2905,10 @@ def _err(msg: str, **extra) -> dict: profile_seniority = "Berufseinsteiger / Berufsanfaenger" # Kandidaten holen — aktive, noch nicht bewertete Stellen - all_active = db.get_active_jobs() + try: + all_active = db.get_active_jobs() + except Exception as exc: # #691: schemakonformer Fehler statt Crash + return _err(f"stellen_lesen_fehlgeschlagen: {str(exc)[:150]}") # Filter: keine Bewerbung, kein dismiss-Reason candidates = [ j for j in all_active @@ -2956,7 +2991,10 @@ def _err(msg: str, **extra) -> dict: }) continue decision = (result.payload or {}).get("decision", "UNSICHER") - reason = (result.payload or {}).get("reason", "") + # #691: leere/Platzhalter-Begruendung nicht roh durchreichen + reason = ((result.payload or {}).get("reason") or "").strip() + if not reason: + reason = "(lokale KI lieferte keine Begruendung)" entry = { "hash": job["hash"], "title": job.get("title"), diff --git a/src/bewerbungs_assistent/tools/profil.py b/src/bewerbungs_assistent/tools/profil.py index 53584f8..0399189 100644 --- a/src/bewerbungs_assistent/tools/profil.py +++ b/src/bewerbungs_assistent/tools/profil.py @@ -525,6 +525,9 @@ def profil_erstellen( ) -> dict: """Erstellt oder aktualisiert das Bewerberprofil. + Bestehende Werte bleiben erhalten, wenn ein Argument leer bleibt. + Zum gezielten Leeren/Bearbeiten einzelner Felder profil_bearbeiten nutzen. + Args: name: Vollständiger Name email: E-Mail-Adresse @@ -556,6 +559,42 @@ def profil_erstellen( "reisebereitschaft": reisebereitschaft, "umzug_moeglich": umzug_moeglich, } + # #695: Bestehendes Profil NICHT mit Leerwerten ueberschreiben. + # db.save_profile setzt ALLE Spalten — ohne Merge loescht ein + # "Aktualisierungs"-Aufruf nur mit name E-Mail/Telefon/Notizen etc. + existing = db.get_profile() + if existing: + name = name or existing.get("name") or "" + email = email or existing.get("email") or "" + phone = phone or existing.get("phone") or "" + address = address or existing.get("address") or "" + city = city or existing.get("city") or "" + plz = plz or existing.get("plz") or "" + birthday = birthday or existing.get("birthday") or "" + nationality = nationality or existing.get("nationality") or "" + summary = summary or existing.get("summary") or "" + # informal_notes besonders kritisch: nie durch Leerwert ersetzen + informal_notes = informal_notes or existing.get("informal_notes") or "" + # country hat Default "Deutschland" — den Default-Wert nicht als + # explizite Eingabe werten, wenn schon ein Land hinterlegt ist + if country == "Deutschland" and existing.get("country"): + country = existing["country"] + # Praeferenzen mergen: Bestand als Basis, nur Keys mit + # nicht-Default-Werten gelten als explizit uebergeben + existing_prefs = existing.get("preferences") or {} + if isinstance(existing_prefs, str): + existing_prefs = json.loads(existing_prefs) if existing_prefs else {} + _PREF_DEFAULTS = { + "stellentyp": "beides", "arbeitsmodell": "hybrid", + "min_gehalt": 0, "ziel_gehalt": 0, + "min_tagessatz": 0, "ziel_tagessatz": 0, + "reisebereitschaft": "mittel", "umzug_moeglich": False, + } + merged_prefs = dict(existing_prefs) + for key, value in preferences.items(): + if value != _PREF_DEFAULTS[key] or key not in merged_prefs: + merged_prefs[key] = value + preferences = merged_prefs pid = db.save_profile({ "name": name, "email": email, "phone": phone, "address": address, "city": city, "plz": plz, @@ -563,13 +602,17 @@ def profil_erstellen( "summary": summary, "informal_notes": informal_notes, "preferences": preferences, }) - return { + result = { "status": "gespeichert", "profil_id": pid, "naechster_schritt": "Füge jetzt Berufserfahrung hinzu mit position_hinzufuegen(). " "Frage nach: Firma, Position, Zeitraum, Aufgaben, Erfolge, Technologien. " "Nutze die STAR-Methode (Situation, Task, Action, Result) für jedes Projekt." } + if existing: + result["hinweis"] = ("Bestehendes Profil aktualisiert — leere Argumente haben " + "die vorhandenen Werte behalten. Gezieltes Leeren via profil_bearbeiten.") + return result @mcp.tool() def position_hinzufuegen( diff --git a/src/bewerbungs_assistent/tools/suche.py b/src/bewerbungs_assistent/tools/suche.py index 4788c19..bf7eac5 100644 --- a/src/bewerbungs_assistent/tools/suche.py +++ b/src/bewerbungs_assistent/tools/suche.py @@ -176,7 +176,8 @@ def blacklist_verwalten( typ: str = "firma", wert: str = "", grund: str = "", - entry_id: int = 0 + entry_id: int = 0, + force: bool = False ) -> dict: """Verwaltet die Blacklist (Firmen und Keywords die bei der Jobsuche automatisch aussortiert werden). @@ -193,6 +194,8 @@ def blacklist_verwalten( wert: Der Blacklist-Eintrag (Firmenname oder Keyword) grund: Optionaler Grund für den Eintrag entry_id: ID des Eintrags (nur bei aktion='entfernen') + force: True ueberstimmt die Warnung bei laufenden Bewerbungen + im Interview-Stadium (#699) und traegt trotzdem ein. """ if aktion == "hinzufuegen": # Validate type (#168) @@ -211,6 +214,44 @@ def blacklist_verwalten( "(z.B. Firmenname oder einzelnes Keyword). " "Trotzdem hinzufügen? Rufe erneut auf wenn ja." } + # #699: Schutz fuer laufende Bewerbungen — eine Blacklist-Firma + # deaktiviert automatisch alle aktiven Stellen der Firma. Laeuft + # parallel eine Bewerbung im Interview-Stadium, verliert der User + # genau dann den Stellen-Kontext (Fit-Analyse, Beschreibung), + # wenn er ihn am dringendsten braucht. + if typ == "firma" and not force: + kritische_status = ( + "interview", "zweitgespraech", "angebot", + "interview_abgeschlossen", + ) + conn = db.connect() + pid = db.get_active_profile_id() + betroffene = conn.execute( + "SELECT id, title, company, status FROM applications " + f"WHERE status IN ({','.join('?' * len(kritische_status))}) " + "AND LOWER(company) LIKE ? " + "AND (profile_id=? OR profile_id IS NULL)", + (*kritische_status, f"%{wert.strip().lower()}%", pid) + ).fetchall() + if betroffene: + details = [ + { + "id": r["id"], "titel": r["title"], + "firma": r["company"], "status": r["status"], + } for r in betroffene + ] + return { + "status": "warnung", + "nachricht": ( + f"Firma '{wert.strip()}' hat {len(betroffene)} " + f"laufende Bewerbung(en) im Status " + f"{', '.join(sorted({r['status'] for r in betroffene}))}. " + "Ein Blacklist-Eintrag wuerde die zugehoerigen " + "Stellen deaktivieren." + ), + "betroffene_bewerbungen": details, + "hinweis": "Mit force=True trotzdem eintragen.", + } db.add_to_blacklist(typ, wert.strip(), grund) result = {"status": "hinzugefuegt", "typ": typ, "wert": wert.strip()} # #109: Blacklist-Eintrag löscht sofort alle Stellen des Unternehmens diff --git a/src/bewerbungs_assistent/tools/workflows.py b/src/bewerbungs_assistent/tools/workflows.py index ca03cb9..e03a2b9 100644 --- a/src/bewerbungs_assistent/tools/workflows.py +++ b/src/bewerbungs_assistent/tools/workflows.py @@ -14,16 +14,6 @@ def register(mcp, db, logger): """Registriert Workflow-Tools (Prompt-Wrapper).""" from . import ki_gate - def _get_prompt_text(name: str) -> str: - """Holt den Prompt-Text aus dem registrierten MCP-Prompt.""" - from ..prompts import register_prompts as _ # noqa — ensures prompts registered - - # Build prompt text by calling the prompt function directly - prompt_funcs = _prompt_registry(db) - if name in prompt_funcs: - return prompt_funcs[name]() - return f"Workflow '{name}' nicht gefunden." - @mcp.tool() def workflow_starten(name: str = "") -> dict: """Startet einen geführten Workflow. Ohne Parameter: zeigt alle verfügbaren Workflows. @@ -34,10 +24,10 @@ def workflow_starten(name: str = "") -> dict: - bewerbung_schreiben: Stellenspezifisches Anschreiben erstellen - interview_vorbereitung: Interview-Vorbereitung mit STAR-Antworten - interview_simulation: Simuliertes Bewerbungsgespräch - - profil_überprüfen: Profil anschauen und korrigieren + - profil_ueberpruefen: Profil anschauen und korrigieren - profil_analyse: Detaillierte Profilbewertung - profil_erweiterung: Dokumente analysieren und Profil erweitern - - bewerbungs_übersicht: Komplette Übersicht aller Aktivitäten + - bewerbungs_uebersicht: Komplette Übersicht aller Aktivitäten - gehaltsverhandlung: Gehaltsverhandlung vorbereiten - netzwerk_strategie: Networking-Strategie entwickeln - willkommen: Willkommensbildschirm mit Status @@ -72,7 +62,21 @@ def workflow_starten(name: str = "") -> dict: "beispiel": "workflow_starten(name='jobsuche_workflow')" } - text = _get_prompt_text(name) + # #694: Namen normalisieren (lowercase + Umlaut-Transliteration), damit + # z.B. 'profil_überprüfen' den Registry-Key 'profil_ueberpruefen' trifft + name = name.strip().lower() + for umlaut, ersatz in (("ü", "ue"), ("ö", "oe"), ("ä", "ae"), ("ß", "ss")): + name = name.replace(umlaut, ersatz) + + prompt_funcs = _prompt_registry(db) + if name not in prompt_funcs: + # #694: kein Pseudo-Erfolg (status='gestartet' mit Fehlertext) mehr + return { + "fehler": f"Workflow '{name}' nicht gefunden.", + "verfuegbare_workflows": sorted(prompt_funcs), + } + + text = prompt_funcs[name]() logger.info("Workflow gestartet: %s", name) return { "workflow": name, @@ -147,7 +151,8 @@ def _jobsuche_workflow(): Aktive Quellen: {active_sources if active_sources else 'KEINE! (Quellen müssen erst aktiviert werden)'} Falls keine Quellen aktiv: -→ Erkläre welche Quellen verfügbar sind (StepStone, Indeed, Monster, BA, Hays, Freelancermap, LinkedIn, XING) +→ Pruefe die konfigurierten Quellen mit quellen_health_check() +→ Verweise auf Dashboard → Einstellungen → Job-Quellen zum Aktivieren → Frage welche der User nutzen möchte SCHRITT 3: SUCHE STARTEN @@ -216,7 +221,7 @@ def _willkommen(): Ich bin dein persönlicher Karriere-Helfer. Ich helfe dir dabei: - PROFIL ERSTELLEN: Lockeres Gespräch, kein steifes Formular -- JOBS FINDEN: Bis zu 9 Jobportale gleichzeitig durchsuchen +- JOBS FINDEN: Die konfigurierten Job-Quellen gleichzeitig durchsuchen (Dashboard → Einstellungen → Job-Quellen) - BEWERBUNGEN SCHREIBEN: Stellenspezifische Anschreiben, Export als PDF/DOCX - LEBENSLAUF EXPORTIEREN: Professionell formatiert - INTERVIEW-VORBEREITUNG: STAR-Antworten, Gehaltsverhandlung @@ -435,9 +440,10 @@ def _bewerbung_vorbereitung(): ABLAUF: 1. Frage welche Bewerbung vorbereitet werden soll (oder nimm die letzte) 2. Rufe bewerbung_details(id) auf -3. Fuehre fit_analyse(id) durch — zeige MUSS/PLUS/Risiken -4. Erstelle angepassten Lebenslauf: lebenslauf_angepasst_exportieren(id) -5. Erstelle Anschreiben: anschreiben_generieren(id) +3. Fuehre fit_analyse(stellen_id) durch — die stellen_id der verknuepften + Stelle steht in bewerbung_details(id) — zeige MUSS/PLUS/Risiken +4. Erstelle angepassten Lebenslauf: lebenslauf_angepasst_exportieren(stelle, firma, stellenbeschreibung) +5. Erstelle das Anschreiben im Chat und exportiere es mit anschreiben_exportieren(text, stelle, firma) 6. Verknuepfe Dokumente und plane Follow-up: nachfass_planen(id) 7. Setze Status auf 'beworben' wenn alles fertig @@ -467,26 +473,13 @@ def _faq(): - Aufmunternder Ton - Sprich Deutsch und per Du""" - # v1.6.6 (#560): Drei in prompts.py registrierte Prompts haben hier - # gefehlt — Folge: Frontend-Klick auf /tipps_und_tricks zeigte den - # "Anleitung konnte nicht geladen werden"-Toast und kopierte nur den - # rohen Befehlsnamen. Wir delegieren an die FastMCP-Prompt-Registry, - # damit der Inhalt aus prompts.py durchgereicht wird. - def _delegate_to_prompt(prompt_name): - def _wrapper(): - try: - from .. import prompts as _prompts_mod - # Suche die im prompts.register_prompts(...) definierten - # geschachtelten Funktionen ueber das fastmcp-Tool-Manager. - # Fallback: leerer String, damit der Caller wenigstens nicht crasht. - from ..server import mcp as _mcp - tool_or_prompt = _mcp._prompt_manager._prompts.get(prompt_name) - if tool_or_prompt and getattr(tool_or_prompt, "fn", None): - return tool_or_prompt.fn() - except Exception: - pass - return f"# Prompt /{prompt_name}\n\n(Inhalt konnte nicht geladen werden — bitte Issue melden.)" - return _wrapper + # #560 / Beta-Stabilisierung: Diese statischen Prompts werden direkt aus + # prompts.py geladen (modul-level build_*_prompt-Funktionen = Single Source + # of Truth). Frueher lief das ueber FastMCP-Interna + # (_mcp._prompt_manager._prompts) — das brach mit FastMCP 3.x lautlos + # (AttributeError -> except: pass -> "Inhalt konnte nicht geladen werden"-Toast + # im Frontend). Direkter Import ist versions-stabil und testbar. + from ..prompts import build_profil_sync_prompt, build_tipps_und_tricks_prompt return { "ersterfassung": _ersterfassung, @@ -507,42 +500,6 @@ def _wrapper(): "faq": _faq, # v1.6.6 (#560): Diese drei waren bisher nicht im Frontend-Registry # — Klick auf die Karte produzierte einen Fehler-Toast. - "tipps_und_tricks": _delegate_to_prompt("tipps_und_tricks"), - "profil_sync": _delegate_to_prompt("profil_sync"), + "tipps_und_tricks": build_tipps_und_tricks_prompt, + "profil_sync": build_profil_sync_prompt, } - - -def _static_ersterfassung(): - """Ersterfassung-Prompt (statisch, keine DB-Abhängigkeiten).""" - return """Du bist ein freundlicher Karriereberater. Dies ist ein zwangloses Gespräch. - -SCHRITT 0: FORTSCHRITT PRÜFEN -Rufe zuerst auf: erfassung_fortschritt_lesen() und profile_auflisten() -Falls angefangenes Profil: Weitermachen wo aufgehört. -Falls mehrere Profile: Fragen welches bearbeitet werden soll. - -PHASE 1: LOCKERER EINSTIEG -"Hey, schön dass du hier bist! Erzähl mal: Wie heißt du und was machst du so beruflich?" -Nur 1-2 offene Fragen, NICHT nach E-Mail/Telefon im ersten Schritt! - -PHASE 2: STRUKTURIERTE ERFASSUNG -a) Persönliche Daten → profil_erstellen() -b) Berufserfahrung → position_hinzufuegen(), projekt_hinzufuegen() -c) Ausbildung → ausbildung_hinzufuegen() -d) Skills → skill_hinzufuegen() -e) Zwanglose Notizen → informal_notes - -PHASE 3: PRÄFERENZ-FRAGEN -Branche, Festanstellung/Freelance, Region, Remote, Gehalt, Reisebereitschaft -→ profil_erstellen() aktualisieren - -PHASE 4: REVIEW -→ profil_zusammenfassung() aufrufen und zeigen -→ Korrigieren bis der User zufrieden ist - -REGELN: -- Max 2-3 Fragen pro Nachricht -- Deutsch und per Du -- Ermutigend bei Lücken -- SOFORT mit Tools speichern -- erfassung_fortschritt_speichern() nach jedem Bereich""" diff --git a/tests/test_v170_beta59_doku_payload.py b/tests/test_v170_beta59_doku_payload.py index 6f9b821..ea63c9e 100644 --- a/tests/test_v170_beta59_doku_payload.py +++ b/tests/test_v170_beta59_doku_payload.py @@ -161,7 +161,11 @@ def test_batch_profile_section_is_capped(setup_env): def test_batch_empty_docs(setup_env): + # #696 (beta.101): 0 hochgeladene Dokumente melden jetzt ehrlich + # 'keine_dokumente' mit Upload-Hinweis — nicht mehr 'fertig' + # ("alle analysiert"), was Neulinge in die Irre fuehrte. db = setup_env mcp = _make_mcp(db) result = _call(mcp, "dokumente_batch_analysieren", {}) - assert result["status"] == "fertig" + assert result["status"] == "keine_dokumente" + assert "hoch" in result["nachricht"].lower() diff --git a/tests/test_v17_auto_aussortieren_691.py b/tests/test_v17_auto_aussortieren_691.py new file mode 100644 index 0000000..bc3a071 --- /dev/null +++ b/tests/test_v17_auto_aussortieren_691.py @@ -0,0 +1,36 @@ +"""Regression #691: stellen_auto_aussortieren. + +Teil 2 (hier testbar ohne Ollama): die LLM-Antwort-Begruendung darf nie den +Prompt-Platzhalter 'KURZBEGRUENDUNG' (oder leere Werte) als echte Begruendung +durchreichen. + +Teil 1 (Schema-Konformitaet bei Fehler/Timeout) ist durch +test_v170_beta46_bug_sweep::test_610_uniform_output_schema_on_error abgedeckt +sowie durch das auf 50s gesenkte Wall-Clock-Budget (unter dem ~60s-Client- +Timeout), das vor einem Cancel ein schemakonformes status='teilweise' liefert. +""" + + +def test_691_clean_match_reason_strips_placeholder(): + from bewerbungs_assistent.services.llm_service import _clean_match_reason + # Prompt-Platzhalter und Varianten -> leer + assert _clean_match_reason("KURZBEGRUENDUNG") == "" + assert _clean_match_reason("kurzbegrundung") == "" + assert _clean_match_reason(" KURZBEGRÜNDUNG. ") == "" + assert _clean_match_reason("Begruendung") == "" + assert _clean_match_reason("") == "" + assert _clean_match_reason(" ") == "" + # Echte Begruendung bleibt erhalten (auf 200 Zeichen begrenzt) + assert _clean_match_reason("Passt thematisch, PLM-Bezug") == "Passt thematisch, PLM-Bezug" + assert len(_clean_match_reason("x" * 500)) == 200 + + +def test_691_parse_does_not_leak_placeholder(): + from bewerbungs_assistent.services.llm_service import _parse_match_job_to_skills + parsed = _parse_match_job_to_skills("PASST | KURZBEGRUENDUNG") + assert parsed["decision"] == "PASST" + assert parsed["reason"] == "" + + parsed2 = _parse_match_job_to_skills("PASST_NICHT | Falsche Branche, kein PLM-Bezug") + assert parsed2["decision"] == "PASST_NICHT" + assert parsed2["reason"] == "Falsche Branche, kein PLM-Bezug" diff --git a/tests/test_v17_capabilities_696.py b/tests/test_v17_capabilities_696.py new file mode 100644 index 0000000..a51b274 --- /dev/null +++ b/tests/test_v17_capabilities_696.py @@ -0,0 +1,102 @@ +"""Regression #696-B: pbp_capabilities-Katalog synchron zur Tool-Realitaet. + +Vorher fehlten im kuratierten Katalog die beta.78-90-Tools (todos, +Dokument-Lifecycle, stelle_reaktivieren, Wiedergaenger, eigene +Ablehnungsgruende, onboarding_hints) und kennlerngespraech_abschliessen +war falsch als Interview-Nachgang unter 'bewerbungen' gelistet — +tatsaechlich ist es das Profil-Onboarding-Gespraech (Dashboard-Wizard). +""" +import asyncio +import json +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_696_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + # Isolations-Wächter: NIE gegen die echte User-DB laufen + assert str(db.db_path).startswith(tmpdir), ( + f"Test-DB liegt NICHT im Temp-Verzeichnis: {db.db_path}" + ) + db.save_profile({"name": "Test"}) + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import analyse + import logging + mcp = FastMCP("test") + analyse.register(mcp, db, logging.getLogger("test")) + return mcp + + +def _full_catalog_text(mcp): + """Alle Kategorie-Detail-Views als ein serialisierter String.""" + overview = _call(mcp, "pbp_capabilities", {}) + parts = [json.dumps(overview, ensure_ascii=False)] + for kat in overview["kategorien"]: + detail = _call(mcp, "pbp_capabilities", {"kategorie": kat}) + parts.append(json.dumps(detail, ensure_ascii=False)) + return "\n".join(parts) + + +def test_696_neue_tools_im_katalog(setup_env): + mcp = _make_mcp(setup_env) + text = _full_catalog_text(mcp) + for needle in ( + "todo_anlegen", + "stelle_reaktivieren", + "dokument_archivieren", + "ablehnungsgr", + "interview_reflexion_speichern", + "stelle_wiedergaenger_pruefen", + "onboarding_hints_anzeigen", + "keywords_minus", + ): + assert needle in text, f"'{needle}' fehlt im pbp_capabilities-Katalog" + + +def test_696_kennlerngespraech_nicht_mehr_interview_nachgang(setup_env): + mcp = _make_mcp(setup_env) + overview = _call(mcp, "pbp_capabilities", {}) + kennlern_eintraege = [] + for kat in overview["kategorien"]: + detail = _call(mcp, "pbp_capabilities", {"kategorie": kat}) + for eintrag in detail["tools"]: + if "kennlerngespraech_abschliessen" in eintrag: + kennlern_eintraege.append((kat, eintrag)) + assert kennlern_eintraege, "kennlerngespraech_abschliessen fehlt komplett" + for kat, eintrag in kennlern_eintraege: + # Falsch-Beschreibung darf nicht mehr direkt am Eintrag stehen + assert "Interview-Nachgang" not in eintrag, (kat, eintrag) + assert kat == "profil", f"gehoert in 'profil', steht in '{kat}'" + + +def test_696_interview_nachgang_jetzt_bei_reflexion(setup_env): + mcp = _make_mcp(setup_env) + detail = _call(mcp, "pbp_capabilities", {"kategorie": "bewerbungen"}) + tools_text = " ".join(detail["tools"]) + assert "interview_reflexion_speichern" in tools_text + assert "kennlerngespraech_abschliessen" not in tools_text diff --git a/tests/test_v17_doku_bewerbung_match_686.py b/tests/test_v17_doku_bewerbung_match_686.py new file mode 100644 index 0000000..eb27274 --- /dev/null +++ b/tests/test_v17_doku_bewerbung_match_686.py @@ -0,0 +1,99 @@ +"""Regression #686: analyse_plan_erstellen gleicht eingehende Dokumente gegen +bestehende Bewerbungen ab (Firmenname im INHALT, nicht nur im Dateinamen) und +schlaegt die Zuordnung vor -> Dublettenschutz. + +Vorher: `erkannte_firmen` kam nur aus `_extract_firma_from_filename`, ein +adesso-Interview-Mail (Firma nur im Text) blieb unerkannt, kein +Zuordnungsvorschlag -> Beinahe-Dublette. +""" +import asyncio +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_686_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + db.save_profile({"name": "Test"}) + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import dokumente + import logging + mcp = FastMCP("test") + dokumente.register(mcp, db, logging.getLogger("test")) + return mcp + + +def test_686_company_match_key(): + from bewerbungs_assistent.tools.dokumente import _company_match_key + assert _company_match_key("adesso SE") == "adesso" + assert _company_match_key("Bechtle GmbH") == "bechtle" + assert _company_match_key("Lufthansa Technik") == "lufthansa" + assert _company_match_key("The Quality Group") == "quality" + assert _company_match_key("SAP") == "" # zu kurz/generisch -> kein Matching + assert _company_match_key("") == "" + + +def test_686_plan_matcht_dokument_gegen_bewerbung(setup_env): + db = setup_env + db.add_application({"title": "Lead Consultant PLM", "company": "adesso SE"}) + # Eingehendes Dokument: Firmenname NUR im Inhalt, NICHT im Dateinamen + db.add_document({ + "id": "doc-mail-001", + "filename": "Mail_2026-06-08.eml", + "filepath": "/fake/doc-mail-001.eml", + "doc_type": "email", + "extracted_text": ( + "Von: recruiting@adesso-group.com\n" + "Betreff: Einladung zum Interview\n" + "adesso SE freut sich, Sie kennenzulernen." + ), + }) + mcp = _make_mcp(db) + result = _call(mcp, "analyse_plan_erstellen", {}) + assert result["status"] == "ok" + z = result["bewerbungs_zuordnungen"] + assert any( + e["dateiname"] == "Mail_2026-06-08.eml" and e["firma"] == "adesso SE" + for e in z + ), z + # Firma taucht jetzt in erkannte_firmen auf (vorher nur aus Dateinamen) + assert "adesso SE" in result["erkannte_firmen"] + + +def test_686_kein_match_ohne_treffer(setup_env): + db = setup_env + db.add_application({"title": "X", "company": "Bechtle GmbH"}) + db.add_document({ + "id": "doc-x", + "filename": "Mail.eml", + "filepath": "/fake/x.eml", + "doc_type": "email", + "extracted_text": "Keine passende Firma in diesem Text.", + }) + mcp = _make_mcp(db) + result = _call(mcp, "analyse_plan_erstellen", {}) + assert result["bewerbungs_zuordnungen"] == [] diff --git a/tests/test_v17_doku_leere_db_696.py b/tests/test_v17_doku_leere_db_696.py new file mode 100644 index 0000000..7b4b715 --- /dev/null +++ b/tests/test_v17_doku_leere_db_696.py @@ -0,0 +1,75 @@ +"""Regression #696-A: ehrliche Leere-DB-Antworten der Dokument-Tools. + +- 0 hochgeladene Dokumente != "Alle Dokumente sind bereits analysiert" +- kein_profil-Antworten enthalten eine Handlungsanweisung (Ersterfassung) +""" +import asyncio +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_696_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + assert str(tmpdir) in str(db.db_path), f"DB nicht isoliert: {db.db_path}" + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import dokumente + import logging + mcp = FastMCP("test") + dokumente.register(mcp, db, logging.getLogger("test")) + return mcp + + +def test_696_batch_analysieren_keine_dokumente(setup_env): + db = setup_env + db.save_profile({"name": "Test"}) + mcp = _make_mcp(db) + res = _call(mcp, "dokumente_batch_analysieren", {}) + assert res.get("status") == "keine_dokumente", res + assert "hochgeladen" in res.get("nachricht", "").lower() or \ + "hochlade" in res.get("nachricht", "").lower() or \ + "Lade" in res.get("nachricht", ""), res + + +def test_696_analyse_plan_empfiehlt_upload_statt_batch(setup_env): + db = setup_env + db.save_profile({"name": "Test"}) + mcp = _make_mcp(db) + res = _call(mcp, "analyse_plan_erstellen", {}) + assert res["status"] == "ok" + assert "dokumente_batch_analysieren()" not in res["empfehlung"], res["empfehlung"] + assert "hoch" in res["empfehlung"].lower(), res["empfehlung"] + + +def test_696_kein_profil_mit_handlungsanweisung(setup_env): + db = setup_env # KEIN Profil angelegt + mcp = _make_mcp(db) + for tool in ("dokumente_zur_analyse", "analyse_plan_erstellen", + "dokumente_batch_analysieren"): + res = _call(mcp, tool, {}) + text = str(res) + assert "rsterfassung" in text or "profil_erstellen" in text, (tool, res) diff --git a/tests/test_v17_guards_695.py b/tests/test_v17_guards_695.py new file mode 100644 index 0000000..5a337c2 --- /dev/null +++ b/tests/test_v17_guards_695.py @@ -0,0 +1,132 @@ +"""Regression #695: Stille Falsch-Erfolge in Kern-Tools. + +- stelle_bewerten: Fehler statt Phantom-Erfolg bei unbekanntem Hash + (und KEINE Statistik-Verfaelschung) +- bewerbung_status_aendern: Fehler bei unbekannter ID; APP-Praefix wird + akzeptiert; falsches Praefix wird abgelehnt +- jobsuche_starten: startet nicht ohne Suchkriterien (BA-Default-Flut) +""" +import asyncio +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_695_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + db.save_profile({"name": "Test"}) + assert str(tmpdir) in str(db.db_path), f"DB nicht isoliert: {db.db_path}" + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_mcp(db, modname): + from fastmcp import FastMCP + import importlib + import logging + mod = importlib.import_module(f"bewerbungs_assistent.tools.{modname}") + mcp = FastMCP("test") + mod.register(mcp, db, logging.getLogger("test")) + return mcp + + +# ============= stelle_bewerten ============= + +def test_695_stelle_bewerten_unbekannter_hash(setup_env): + db = setup_env + mcp = _make_mcp(db, "jobs") + conn = db.connect() + vorher = conn.execute( + "SELECT COALESCE(SUM(usage_count),0) AS n FROM dismiss_reasons" + ).fetchone()["n"] + res = _call(mcp, "stelle_bewerten", { + "job_hash": "ffffffff", "bewertung": "passt_nicht", + "gruende": ["zeitarbeit"], + }) + assert "fehler" in res, res + assert res.get("status") != "aussortiert" + nachher = conn.execute( + "SELECT COALESCE(SUM(usage_count),0) AS n FROM dismiss_reasons" + ).fetchone()["n"] + assert vorher == nachher, "Phantom-Eintrag in der Ablehnungs-Statistik" + + +def test_695_stelle_bewerten_passt_unbekannt(setup_env): + db = setup_env + mcp = _make_mcp(db, "jobs") + res = _call(mcp, "stelle_bewerten", {"job_hash": "ffffffff", "bewertung": "passt"}) + assert "fehler" in res, res + + +# ============= bewerbung_status_aendern ============= + +def test_695_status_aendern_unbekannte_id(setup_env): + db = setup_env + mcp = _make_mcp(db, "bewerbungen") + res = _call(mcp, "bewerbung_status_aendern", { + "bewerbung_id": "deadbeef", "neuer_status": "interview", + }) + assert "fehler" in res, res + assert res.get("status") != "aktualisiert" + + +def test_695_status_aendern_app_praefix(setup_env): + db = setup_env + aid = db.add_application({"title": "T", "company": "C", "status": "beworben"}) + mcp = _make_mcp(db, "bewerbungen") + res = _call(mcp, "bewerbung_status_aendern", { + "bewerbung_id": f"APP-{aid}", "neuer_status": "interview", + }) + assert "fehler" not in res, res + app = db.get_application(aid) + assert app["status"] == "interview", "Status wurde nicht real geaendert" + + +def test_695_status_aendern_falsches_praefix(setup_env): + db = setup_env + aid = db.add_application({"title": "T", "company": "C", "status": "beworben"}) + mcp = _make_mcp(db, "bewerbungen") + res = _call(mcp, "bewerbung_status_aendern", { + "bewerbung_id": f"DOC-{aid}", "neuer_status": "interview", + }) + assert "fehler" in res, res + assert db.get_application(aid)["status"] == "beworben" + + +# ============= jobsuche_starten ============= + +def test_695_jobsuche_ohne_kriterien_startet_nicht(setup_env): + db = setup_env + db.set_profile_setting("active_sources", ["bundesagentur"]) + mcp = _make_mcp(db, "jobs") + res = _call(mcp, "jobsuche_starten", {}) + assert res.get("status") == "keine_suchbegriffe", res + assert "suchkriterien_setzen" in res.get("nachricht", "") + + +def test_695_jobsuche_mit_explizit_keywords_umgeht_guard(setup_env): + db = setup_env + db.set_profile_setting("active_sources", ["bundesagentur"]) + mcp = _make_mcp(db, "jobs") + res = _call(mcp, "jobsuche_starten", {"keywords": ["PLM Consultant"]}) + # Startet (oder scheitert an etwas ANDEREM als den Suchbegriffen) + assert res.get("status") != "keine_suchbegriffe", res diff --git a/tests/test_v17_kontakt_link_684_685.py b/tests/test_v17_kontakt_link_684_685.py new file mode 100644 index 0000000..1cb0624 --- /dev/null +++ b/tests/test_v17_kontakt_link_684_685.py @@ -0,0 +1,69 @@ +"""Regression-Tests fuer die Beta-Stabilisierung: + +- #684: CON-Prefix bei kontakt_verknuepfen wurde nicht akzeptiert, weil IdKind + kein 'CON' kannte -> parse_id/strip_prefix liessen die ID unveraendert. +- #685: link_contact(target_kind='meeting') fragte die nicht existierende + Tabelle 'meetings' ab statt 'application_meetings' -> sqlite OperationalError + ('no such table: meetings'). +""" +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_kontaktlink_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + db.save_profile({"name": "Test"}) + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def test_684_con_prefix_parsed_and_stripped(): + """CON- muss als Kontakt-ID erkannt und entprefixt werden (#684).""" + from bewerbungs_assistent.services.typed_ids import parse_id, strip_prefix, IdKind + kind, raw = parse_id("CON-abc12345") + assert kind is IdKind.CONTACT + assert raw == "abc12345" + assert strip_prefix("CON-deadbeef") == "deadbeef" + # Ohne Prefix bleibt die rohe ID unveraendert + assert strip_prefix("abc12345") == "abc12345" + + +def test_685_link_contact_to_meeting(setup_env): + """link_contact mit target_kind='meeting' darf nicht an + 'no such table: meetings' scheitern (#685).""" + db = setup_env + cid = db.add_contact({"full_name": "Recruiter Person"}) + bid = db.add_application({"title": "Stelle", "company": "Firma"}) + mid = db.add_meeting({ + "application_id": bid, + "title": "Interview", + "meeting_date": "2026-07-01T10:00:00", + }) + + link_id = db.link_contact(cid, "meeting", mid, role="interviewer") + assert link_id + + # Kurz-ID des Meetings muss ueber den LIKE-Zweig ebenfalls aufloesen + link_id2 = db.link_contact(cid, "meeting", mid[:8], role="beobachter") + assert link_id2 + + +def test_685_link_contact_meeting_not_found(setup_env): + """Nicht existierendes Meeting liefert eine saubere ValueError-Meldung, + keinen OperationalError mehr (#685).""" + db = setup_env + cid = db.add_contact({"full_name": "X"}) + with pytest.raises(ValueError, match="Meeting nicht gefunden"): + db.link_contact(cid, "meeting", "ffffffffffff") diff --git a/tests/test_v17_profil_merge_695.py b/tests/test_v17_profil_merge_695.py new file mode 100644 index 0000000..8de1544 --- /dev/null +++ b/tests/test_v17_profil_merge_695.py @@ -0,0 +1,152 @@ +"""Regression #695: profil_erstellen darf bestehende Profildaten nicht mit +Leerwerten ueberschreiben. + +Vorher: db.save_profile setzt ALLE Spalten — ein "Aktualisierungs"-Aufruf +nur mit name loeschte E-Mail/Telefon/Adresse/summary/informal_notes und +setzte preferences auf die Funktions-Defaults zurueck (Datenverlust). + +Jetzt: bei bestehendem Profil uebernehmen leere Argumente den Bestandswert, +preferences werden gemerged. Frische DB (kein Profil) verhaelt sich exakt +wie vorher. +""" +import asyncio +import os +import tempfile + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_695_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + # Isolations-Wachhund: Test darf NIE auf der echten User-DB laufen + assert str(db.db_path).startswith(tmpdir), ( + f"DB-Isolation verletzt: {db.db_path} liegt nicht unter {tmpdir}" + ) + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import profil + import logging + mcp = FastMCP("test") + profil.register(mcp, db, logging.getLogger("test")) + return mcp + + +_VOLL_PROFIL = { + "name": "Max Tester", + "email": "max@example.com", + "phone": "+49 123 456789", + "address": "Teststr. 1", + "city": "Teststadt", + "plz": "12345", + "country": "Schweiz", + "birthday": "1980-01-01", + "nationality": "deutsch", + "summary": "Erfahrener Tester.", + "informal_notes": "Mag Remote-Arbeit, Hund im Buero.", + "preferences": { + "stellentyp": "freelance", + "arbeitsmodell": "remote", + "min_gehalt": 70000, + "ziel_gehalt": 85000, + "min_tagessatz": 800, + "ziel_tagessatz": 950, + "reisebereitschaft": "gering", + "umzug_moeglich": True, + "custom_key": "bleibt", + }, +} + + +def test_695_nur_name_loescht_keine_bestandsdaten(setup_env): + """(a) Aufruf nur mit name laesst alle anderen Felder unveraendert.""" + db = setup_env + db.save_profile(dict(_VOLL_PROFIL)) + mcp = _make_mcp(db) + result = _call(mcp, "profil_erstellen", {"name": "Max Tester"}) + assert result["status"] == "gespeichert" + p = db.get_profile() + assert p["name"] == "Max Tester" + assert p["email"] == "max@example.com" + assert p["phone"] == "+49 123 456789" + assert p["address"] == "Teststr. 1" + assert p["city"] == "Teststadt" + assert p["plz"] == "12345" + assert p["country"] == "Schweiz" # Default 'Deutschland' nicht als Eingabe werten + assert p["birthday"] == "1980-01-01" + assert p["nationality"] == "deutsch" + assert p["summary"] == "Erfahrener Tester." + # informal_notes besonders kritisch — nie durch Leerwert ersetzen + assert p["informal_notes"] == "Mag Remote-Arbeit, Hund im Buero." + # Preferences komplett erhalten (inkl. Custom-Key) + assert p["preferences"] == _VOLL_PROFIL["preferences"] + + +def test_695_neue_email_aendert_nur_email(setup_env): + """(b) Neuer email-Wert wird uebernommen, phone bleibt unveraendert.""" + db = setup_env + db.save_profile(dict(_VOLL_PROFIL)) + mcp = _make_mcp(db) + _call(mcp, "profil_erstellen", + {"name": "Max Tester", "email": "neu@example.com"}) + p = db.get_profile() + assert p["email"] == "neu@example.com" + assert p["phone"] == "+49 123 456789" + assert p["informal_notes"] == "Mag Remote-Arbeit, Hund im Buero." + + +def test_695_preferences_teilupdate_merged(setup_env): + """(c) Teilupdate einer Praeferenz laesst andere Keys bestehen.""" + db = setup_env + db.save_profile(dict(_VOLL_PROFIL)) + mcp = _make_mcp(db) + _call(mcp, "profil_erstellen", + {"name": "Max Tester", "min_gehalt": 90000}) + p = db.get_profile() + prefs = p["preferences"] + assert prefs["min_gehalt"] == 90000 # explizit geaendert + assert prefs["stellentyp"] == "freelance" # Default 'beides' ueberschreibt nicht + assert prefs["arbeitsmodell"] == "remote" + assert prefs["ziel_gehalt"] == 85000 + assert prefs["reisebereitschaft"] == "gering" + assert prefs["umzug_moeglich"] is True # Default False ueberschreibt nicht + assert prefs["custom_key"] == "bleibt" # fremde Keys bleiben erhalten + + +def test_695_frische_db_legt_normal_an(setup_env): + """(d) Ohne bestehendes Profil legt profil_erstellen normal an.""" + db = setup_env + assert db.get_profile() is None + mcp = _make_mcp(db) + result = _call(mcp, "profil_erstellen", { + "name": "Neu Nutzer", "email": "neu@example.com", "min_gehalt": 50000, + }) + assert result["status"] == "gespeichert" + assert "hinweis" not in result # Hinweis nur im Update-Fall + p = db.get_profile() + assert p["name"] == "Neu Nutzer" + assert p["email"] == "neu@example.com" + assert p["country"] == "Deutschland" + assert p["preferences"]["min_gehalt"] == 50000 + assert p["preferences"]["stellentyp"] == "beides" diff --git a/tests/test_v17_prompts_workflows_694.py b/tests/test_v17_prompts_workflows_694.py new file mode 100644 index 0000000..6150e27 --- /dev/null +++ b/tests/test_v17_prompts_workflows_694.py @@ -0,0 +1,97 @@ +"""Regression #694: Onboarding-Sackgassen in gefuehrten Prompts. + +- Keine Umlaut-Toolnamen mehr in Live-Prompts (skill_hinzufügen etc.) +- Kein Verweis auf nicht-existentes anschreiben_generieren +- workflow_starten normalisiert Umlaut-Namen + klarer Fehler bei unbekannt +- Kein-Profil-Fall im Kennlerngespraech-Prompt behandelt +""" +import asyncio +import os +import tempfile +from pathlib import Path + +import pytest + +SRC = Path(__file__).parent.parent / "src" / "bewerbungs_assistent" + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_694_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + db.save_profile({"name": "Test"}) + assert str(tmpdir) in str(db.db_path), f"DB nicht isoliert: {db.db_path}" + yield db + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_workflows_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import workflows + import logging + mcp = FastMCP("test") + workflows.register(mcp, db, logging.getLogger("test")) + return mcp + + +# ============= Quelltext-Asserts (Live-Prompts sauber) ============= + +def test_694_keine_umlaut_toolnamen_mehr(): + src = (SRC / "prompts.py").read_text(encoding="utf-8") + for verboten in ("skill_hinzufügen", "position_hinzufügen", + "bewerbung_status_ändern", "docs/FAQ.md"): + assert verboten not in src, f"{verboten!r} steht noch in prompts.py" + + +def test_694_anschreiben_generieren_nirgends(): + treffer = [] + for py in SRC.rglob("*.py"): + if "anschreiben_generieren" in py.read_text(encoding="utf-8", errors="replace"): + treffer.append(py.name) + assert not treffer, f"Nicht-existentes Tool referenziert in: {treffer}" + + +def test_694_kennlern_prompt_intakt(setup_env): + db = setup_env + from bewerbungs_assistent.prompts import build_kennlerngespraech_prompt + text = build_kennlerngespraech_prompt(db) + assert len(text) > 500 + assert "skill_hinzufuegen" in text + # Kein-Profil-Fall ist als eigener Schritt dokumentiert + assert "Kein aktives Profil" in text + + +# ============= workflow_starten robust ============= + +def test_694_umlaut_workflowname_normalisiert(setup_env): + db = setup_env + mcp = _make_workflows_mcp(db) + res = _call(mcp, "workflow_starten", {"name": "profil_überprüfen"}) + assert res.get("status") == "gestartet", res + assert "nicht gefunden" not in res.get("anweisungen", "") + + +def test_694_unbekannter_workflow_klarer_fehler(setup_env): + db = setup_env + mcp = _make_workflows_mcp(db) + res = _call(mcp, "workflow_starten", {"name": "gibtsnicht"}) + assert "fehler" in res, res + assert res.get("status") != "gestartet" + assert isinstance(res.get("verfuegbare_workflows"), list) + assert "ersterfassung" in res["verfuegbare_workflows"] diff --git a/tests/test_v17_refetch_690.py b/tests/test_v17_refetch_690.py new file mode 100644 index 0000000..f14380d --- /dev/null +++ b/tests/test_v17_refetch_690.py @@ -0,0 +1,43 @@ +"""Regression #690: stellenbeschreibung_nachladen / fetch_description_from_detail +kappte Stellenbeschreibungen hart bei 2000 Zeichen. max_chars ist jetzt +parametrierbar; das explizite Nachladen einer einzelnen Stelle nutzt 20000, +Bulk-Scraper behalten den 2000er-Default. +""" + +JSONLD = ( + 'x' +) + + +def test_690_jsonld_respects_max_chars(): + from bewerbungs_assistent.job_scraper import extract_jobposting_jsonld + html = JSONLD.format(desc="A" * 8000) + assert len(extract_jobposting_jsonld(html, max_chars=2000)["description"]) == 2000 + assert len(extract_jobposting_jsonld(html, max_chars=20000)["description"]) == 8000 + + +class _FakeResp: + status_code = 200 + + def __init__(self, text): + self.text = text + + +class _FakeClient: + def __init__(self, text): + self._text = text + + def get(self, url, timeout=None): + return _FakeResp(self._text) + + +def test_690_fetch_description_honors_max_chars(): + from bewerbungs_assistent.job_scraper import fetch_description_from_detail + html = JSONLD.format(desc="B" * 8000) + client = _FakeClient(html) + # Default bleibt 2000 (Bulk-Scraper-Kompatibilitaet) + assert len(fetch_description_from_detail("http://x", client)) == 2000 + # Explizites Nachladen kann die volle Beschreibung speichern + assert len(fetch_description_from_detail("http://x", client, max_chars=20000)) == 8000 diff --git a/tests/test_v17_user_test_699_700.py b/tests/test_v17_user_test_699_700.py new file mode 100644 index 0000000..786190d --- /dev/null +++ b/tests/test_v17_user_test_699_700.py @@ -0,0 +1,130 @@ +"""Regression-Tests fuer die User-Test-Funde vom 10.06. (beta.101): + +- #699: blacklist_verwalten warnt (statt einzutragen), wenn die Firma laufende + Bewerbungen im Interview-Stadium hat; force=True uebersteuert. +- #700 Bug A: der Auto-Followup-Reconciler legt KEINEN Nachfass an, wenn fuer + die Bewerbung bereits ein zukuenftiger Termin (geplant/bestaetigt) existiert. +""" +import asyncio +import os +import tempfile +from datetime import datetime, timedelta +from pathlib import Path + +import pytest + + +@pytest.fixture +def setup_env(): + tmpdir = tempfile.mkdtemp(prefix="pbp_v17_699_700_") + os.environ["BA_DATA_DIR"] = tmpdir + import importlib + import bewerbungs_assistent.database as _db_mod + importlib.reload(_db_mod) + import bewerbungs_assistent.dashboard as _dash_mod + importlib.reload(_dash_mod) + from bewerbungs_assistent.database import Database + db = Database() + db.initialize() + db.save_profile({"name": "Test"}) + # Isolations-Assert: NIE gegen die echte AppData-DB laufen + assert str(tmpdir) in str(db.db_path), f"DB nicht isoliert: {db.db_path}" + _dash_mod._db = db + yield db, _dash_mod + db.close() + import shutil + shutil.rmtree(tmpdir, ignore_errors=True) + + +def _call(mcp, name, args): + async def _run(): + tool = await mcp.get_tool(name) + res = await tool.run(args) + return res.structured_content if hasattr(res, "structured_content") else res + return asyncio.run(_run()) + + +def _make_suche_mcp(db): + from fastmcp import FastMCP + from bewerbungs_assistent.tools import suche + import logging + mcp = FastMCP("test") + suche.register(mcp, db, logging.getLogger("test")) + return mcp + + +# ============= #699: Blacklist-Schutz ============= + +def test_699_warnung_bei_interview_bewerbung(setup_env): + db, _ = setup_env + db.add_application({"title": "Lead Consultant PLM", "company": "adesso SE", + "status": "interview"}) + mcp = _make_suche_mcp(db) + res = _call(mcp, "blacklist_verwalten", { + "aktion": "hinzufuegen", "typ": "firma", "wert": "adesso", + }) + assert res["status"] == "warnung", res + assert res["betroffene_bewerbungen"], res + assert "force" in res["hinweis"] + # Nicht eingetragen + assert all(e["value"].lower() != "adesso" for e in db.get_blacklist()) + + +def test_699_force_traegt_trotzdem_ein(setup_env): + db, _ = setup_env + db.add_application({"title": "X", "company": "adesso SE", "status": "interview"}) + mcp = _make_suche_mcp(db) + res = _call(mcp, "blacklist_verwalten", { + "aktion": "hinzufuegen", "typ": "firma", "wert": "adesso", "force": True, + }) + assert res["status"] == "hinzugefuegt", res + assert any(e["value"].lower() == "adesso" for e in db.get_blacklist()) + + +def test_699_keine_warnung_ohne_kritische_bewerbung(setup_env): + db, _ = setup_env + # 'beworben' ist KEIN kritischer Status — Eintrag geht durch + db.add_application({"title": "X", "company": "Beispiel GmbH", "status": "beworben"}) + mcp = _make_suche_mcp(db) + res = _call(mcp, "blacklist_verwalten", { + "aktion": "hinzufuegen", "typ": "firma", "wert": "Beispiel GmbH", + }) + assert res["status"] == "hinzugefuegt", res + + +# ============= #700 A: Reconciler respektiert Termine ============= + +def _add_stale_application(db, status="beworben", days_ago=20): + applied = (datetime.now() - timedelta(days=days_ago)).strftime("%Y-%m-%d") + aid = db.add_application({"title": "T", "company": "C", "status": status}) + conn = db.connect() + conn.execute("UPDATE applications SET applied_at=? WHERE id=?", (applied, aid)) + conn.commit() + return aid + + +def test_700a_kein_nachfass_bei_zukuenftigem_termin(setup_env): + db, dash = setup_env + aid = _add_stale_application(db) + future = (datetime.now() + timedelta(days=2)).strftime("%Y-%m-%dT15:00:00") + db.add_meeting({"application_id": aid, "title": "Interview", + "meeting_date": future, "status": "geplant"}) + result = dash._run_auto_followup_reconciler(datetime.now().isoformat()) + assert result["created_count"] == 0, result + + +def test_700a_nachfass_ohne_termin(setup_env): + db, dash = setup_env + _add_stale_application(db) + result = dash._run_auto_followup_reconciler(datetime.now().isoformat()) + assert result["created_count"] == 1, result + + +def test_700a_vergangener_termin_blockiert_nicht(setup_env): + db, dash = setup_env + aid = _add_stale_application(db) + past = (datetime.now() - timedelta(days=5)).strftime("%Y-%m-%dT15:00:00") + db.add_meeting({"application_id": aid, "title": "War schon", + "meeting_date": past, "status": "geplant"}) + result = dash._run_auto_followup_reconciler(datetime.now().isoformat()) + assert result["created_count"] == 1, result