diff --git a/scripts/apply_i18n_from_index.py b/scripts/apply_i18n_from_index.py deleted file mode 100644 index 27d47aa..0000000 --- a/scripts/apply_i18n_from_index.py +++ /dev/null @@ -1,112 +0,0 @@ -#!/usr/bin/env python3 -# Copyright (c) 2025 Patrick Motsch -""" -i18n-Index für DB-gestützte UI-Sprachen (de = Key, siehe wiki). - -Dieses Skript **regeneriert** `i18n_ui_strings_index.json` aus den im Projekt verwendeten -`t('…')`- und `t("…")`-Aufrufen in den angegebenen Quellfiles. Es wendet **keine** -Code-Änderungen an — Migration neuer Texte erfolgt im TSX mit `t()`, anschließend Index -mit `--write` aktualisieren und fehlende Keys in der Admin-UI (UI-Sprachen) nachziehen. - -Nutzung (im Ordner frontend_nyla): - python scripts/apply_i18n_from_index.py --write - python scripts/apply_i18n_from_index.py # nur prüfen: gleiche Keys wie in JSON? - -Konvention: deutscher Klartext ist der Key (siehe `2026-04-ui-i18n-dynamic-language-sets.md`). -""" - -from __future__ import annotations - -import argparse -import json -import re -import sys -from pathlib import Path - -ROOT = Path(__file__).resolve().parent.parent -INDEX_PATH = Path(__file__).resolve().parent / "i18n_ui_strings_index.json" - -# Dateien mit nutzerrelevanten t()-Aufrufen (erweitern bei weiteren Migrationen) -SCAN_PATHS = [ - ROOT / "src/pages/views/trustee/TrusteeAccountingSettingsView.tsx", - ROOT / "src/pages/AutomationsDashboardPage.tsx", - ROOT / "src/pages/billing/BillingDataView.tsx", - ROOT / "src/pages/billing/BillingAdmin.tsx", - ROOT / "src/components/Navigation/MandateNavigation.tsx", -] - - -def _extractTKeys(source: str) -> set[str]: - """Extrahiert erste String-Literale aus t('…') / t("…") (ohne verschachtelte Klammern).""" - keys: set[str] = set() - for m in re.finditer(r"\bt\(\s*((?:'([^'\\]|\\.)*'|\"([^\"\\]|\\.)*\"))\s*(?:,|\))", source): - raw = m.group(1) - if raw.startswith("'"): - inner = raw[1:-1].replace("\\'", "'").replace("\\\\", "\\") - else: - inner = raw[1:-1].replace('\\"', '"').replace("\\\\", "\\") - keys.add(inner) - return keys - - -def _scanAllKeys() -> dict[str, list[str]]: - fileToKeys: dict[str, list[str]] = {} - for p in SCAN_PATHS: - if not p.exists(): - print(f"WARN: fehlt {p}", file=sys.stderr) - continue - text = p.read_text(encoding="utf-8") - keys = sorted(_extractTKeys(text)) - rel = str(p.relative_to(ROOT)).replace("\\", "/") - fileToKeys[rel] = keys - return fileToKeys - - -def _mergeUnique(fileToKeys: dict[str, list[str]]) -> list[str]: - allKeys: set[str] = set() - for ks in fileToKeys.values(): - allKeys.update(ks) - return sorted(allKeys) - - -def main() -> None: - parser = argparse.ArgumentParser(description="i18n-Index aus t()-Aufrufen pflegen.") - parser.add_argument("--write", action="store_true", help="i18n_ui_strings_index.json schreiben") - args = parser.parse_args() - - byFile = _scanAllKeys() - merged = _mergeUnique(byFile) - payload = { - "version": 2, - "description": "Extrahierte UI-Keys (Deutsch = Key) für DB/Admin UI-Sprachen; erzeugt durch apply_i18n_from_index.py", - "sourceRoot": "frontend_nyla", - "keysByFile": byFile, - "keysAll": merged, - } - - if args.write: - INDEX_PATH.write_text(json.dumps(payload, ensure_ascii=False, indent=2) + "\n", encoding="utf-8") - print(f"Written {INDEX_PATH} ({len(merged)} unique keys)") - return - - if INDEX_PATH.exists(): - existing = json.loads(INDEX_PATH.read_text(encoding="utf-8")) - prev = set(existing.get("keysAll", [])) - now = set(merged) - if prev != now: - onlyNew = sorted(now - prev) - onlyOld = sorted(prev - now) - print("Index differs from scan. Run with --write to refresh.") - if onlyNew: - print(f" + new ({len(onlyNew)}):", onlyNew[:20], "..." if len(onlyNew) > 20 else "") - if onlyOld: - print(f" - removed ({len(onlyOld)}):", onlyOld[:20], "..." if len(onlyOld) > 20 else "") - sys.exit(1) - print(f"OK: index matches scan ({len(merged)} keys)") - else: - print("No index file; run with --write to create.", file=sys.stderr) - sys.exit(1) - - -if __name__ == "__main__": - main() diff --git a/scripts/i18n_missing_report.json b/scripts/i18n_missing_report.json new file mode 100644 index 0000000..4ae0f16 --- /dev/null +++ b/scripts/i18n_missing_report.json @@ -0,0 +1,19322 @@ +{ + "version": 1, + "root": "frontend_nyla", + "generatedBy": "scan_i18n_missing.py", + "count": 2146, + "findings": [ + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 86, + "column": 21, + "kind": "string_literal", + "text": "Regel löschen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Regel löschen\"" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 140, + "column": 56, + "kind": "jsx_text", + "text": "Delete", + "context": "between tags, user-visible text node", + "line_content": " Delete" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 204, + "column": 16, + "kind": "string_literal", + "text": "z.B. data.feature.trustee.TrusteePosition", + "context": "string literal", + "line_content": " return 'z.B. data.feature.trustee.TrusteePosition';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 206, + "column": 16, + "kind": "string_literal", + "text": "z.B. ui.feature.trustee.dashboard", + "context": "string literal", + "line_content": " return 'z.B. ui.feature.trustee.dashboard';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 208, + "column": 16, + "kind": "string_literal", + "text": "z.B. resource.feature.trustee.documents.create", + "context": "string literal", + "line_content": " return 'z.B. resource.feature.trustee.documents.create';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 220, + "column": 47, + "kind": "jsx_text", + "text": "Objekt auswählen", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 226, + "column": 26, + "kind": "string_literal", + "text": "← Aus Katalog wählen", + "context": "string literal", + "line_content": " {useCustom ? '← Aus Katalog wählen' : 'Freie Eingabe →'}" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 226, + "column": 51, + "kind": "string_literal", + "text": "Freie Eingabe →", + "context": "string literal", + "line_content": " {useCustom ? '← Aus Katalog wählen' : 'Freie Eingabe →'}" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 245, + "column": 30, + "kind": "jsx_text", + "text": "-- Global (alle Objekte) --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 280, + "column": 49, + "kind": "jsx_text", + "text": "Eigene (m)", + "context": "between tags, user-visible text node", + "line_content": "
Eigene (m)
" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 281, + "column": 49, + "kind": "jsx_text", + "text": "Gruppe (g)", + "context": "between tags, user-visible text node", + "line_content": "
Gruppe (g)
" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 282, + "column": 49, + "kind": "jsx_text", + "text": "Alle (a)", + "context": "between tags, user-visible text node", + "line_content": "
Alle (a)
" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 289, + "column": 88, + "kind": "string_literal", + "text": "Delete", + "context": "string literal", + "line_content": " const labels = { create: 'Create', read: 'Read', update: 'Update', delete: 'Delete' };" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 372, + "column": 27, + "kind": "string_literal", + "text": "Keine Daten-Regeln definiert", + "context": "string literal", + "line_content": " case 'DATA': return 'Keine Daten-Regeln definiert';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 373, + "column": 25, + "kind": "string_literal", + "text": "Keine UI-Regeln definiert", + "context": "string literal", + "line_content": " case 'UI': return 'Keine UI-Regeln definiert';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 374, + "column": 31, + "kind": "string_literal", + "text": "Keine Ressourcen-Regeln definiert", + "context": "string literal", + "line_content": " case 'RESOURCE': return 'Keine Ressourcen-Regeln definiert';" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 392, + "column": 25, + "kind": "string_literal", + "text": "Tabellenansicht", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Tabellenansicht\"" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 399, + "column": 25, + "kind": "string_literal", + "text": "Kartenansicht", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Kartenansicht\"" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 430, + "column": 31, + "kind": "string_literal", + "text": "Neue Regel", + "context": "string literal", + "line_content": " Klicken Sie auf \"Neue Regel\" um eine Berechtigung hinzuzufügen." + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 480, + "column": 25, + "kind": "string_literal", + "text": "JSON muss ein Array sein", + "context": "string literal", + "line_content": " throw new Error('JSON muss ein Array sein');" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 605, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Speichern", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Speichern');" + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 631, + "column": 26, + "kind": "string_literal", + "text": "Daten", + "context": "object property label: (e.g. table column)", + "line_content": " { id: 'DATA', label: 'Daten', icon: , count: groupedRules.DATA.length }," + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 632, + "column": 24, + "kind": "string_literal", + "text": "UI", + "context": "object property label: (e.g. table column)", + "line_content": " { id: 'UI', label: 'UI', icon: , count: groupedRules.UI.length }," + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 633, + "column": 30, + "kind": "string_literal", + "text": "Ressourcen", + "context": "object property label: (e.g. table column)", + "line_content": " { id: 'RESOURCE', label: 'Ressourcen', icon: , count: groupedRules.RESOURCE.length }," + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 634, + "column": 26, + "kind": "string_literal", + "text": "JSON", + "context": "object property label: (e.g. table column)", + "line_content": " { id: 'JSON', label: 'JSON', icon: , count: rules.length }," + }, + { + "file": "src/components/AccessRules/AccessRulesEditor.tsx", + "line": 642, + "column": 17, + "kind": "jsx_text", + "text": "Lade Berechtigungen...", + "context": "between tags, user-visible text node", + "line_content": " Lade Berechtigungen..." + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 112, + "column": 17, + "kind": "string_literal", + "text": "Sichtbar", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Sichtbar\"" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 166, + "column": 19, + "kind": "string_literal", + "text": "Regel löschen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Regel löschen\"" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 198, + "column": 46, + "kind": "jsx_text", + "text": "Objekt (Dot-Notation)", + "context": "between tags, user-visible text node", + "line_content": " Objekt (Dot-Notation)" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 202, + "column": 67, + "kind": "jsx_text", + "text": "Eigene (m)", + "context": "between tags, user-visible text node", + "line_content": " Eigene (m)" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 203, + "column": 67, + "kind": "jsx_text", + "text": "Gruppe (g)", + "context": "between tags, user-visible text node", + "line_content": " Gruppe (g)" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 204, + "column": 67, + "kind": "jsx_text", + "text": "Alle (a)", + "context": "between tags, user-visible text node", + "line_content": " Alle (a)" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 213, + "column": 25, + "kind": "string_literal", + "text": "Create", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " C" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 214, + "column": 25, + "kind": "string_literal", + "text": "Read", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " R" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 215, + "column": 25, + "kind": "string_literal", + "text": "Update", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " U" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 216, + "column": 25, + "kind": "string_literal", + "text": "Delete", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " D" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 217, + "column": 25, + "kind": "string_literal", + "text": "Create", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " C" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 218, + "column": 25, + "kind": "string_literal", + "text": "Read", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " R" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 219, + "column": 25, + "kind": "string_literal", + "text": "Update", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " U" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 220, + "column": 25, + "kind": "string_literal", + "text": "Delete", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " D" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 221, + "column": 25, + "kind": "string_literal", + "text": "Create", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " C" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 222, + "column": 25, + "kind": "string_literal", + "text": "Read", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " R" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 223, + "column": 25, + "kind": "string_literal", + "text": "Update", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " U" + }, + { + "file": "src/components/AccessRules/AccessRulesTable.tsx", + "line": 224, + "column": 25, + "kind": "string_literal", + "text": "Delete", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " D" + }, + { + "file": "src/components/Chat/ChatInput.tsx", + "line": 20, + "column": 17, + "kind": "string_literal", + "text": "Type a message...", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder = 'Type a message...'," + }, + { + "file": "src/components/Chat/ChatInput.tsx", + "line": 55, + "column": 20, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e0e0e0)", + "context": "string literal", + "line_content": " borderTop: '1px solid var(--border-color, #e0e0e0)'," + }, + { + "file": "src/components/Chat/ChatInput.tsx", + "line": 71, + "column": 19, + "kind": "string_literal", + "text": "1px solid var(--border-color, #ddd)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #ddd)'," + }, + { + "file": "src/components/Chat/ChatMessageList.tsx", + "line": 34, + "column": 18, + "kind": "string_literal", + "text": "No messages yet.", + "context": "string literal", + "line_content": " emptyMessage = 'No messages yet.'," + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 64, + "column": 18, + "kind": "string_literal", + "text": "Invalid file ID", + "context": "string literal", + "line_content": " setError('Invalid file ID');" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 67, + "column": 37, + "kind": "string_literal", + "text": "Unknown Item", + "context": "string literal", + "line_content": " if (!fileName || fileName === 'Unknown Item') {" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 68, + "column": 18, + "kind": "string_literal", + "text": "File name not available", + "context": "string literal", + "line_content": " setError('File name not available');" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 96, + "column": 17, + "kind": "string_literal", + "text": "s text content but MIME type says PDF, we", + "context": "string literal", + "line_content": " // If it's text content but MIME type says PDF, we'll handle it in renderPreview" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 98, + "column": 34, + "kind": "string_literal", + "text": "Failed to load preview", + "context": "string literal", + "line_content": " setError(result.error || 'Failed to load preview');" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 101, + "column": 16, + "kind": "string_literal", + "text": "An unexpected error occurred while loading the preview", + "context": "string literal", + "line_content": " setError('An unexpected error occurred while loading the preview');" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 171, + "column": 35, + "kind": "string_literal", + "text": "Failed to load PDF preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load PDF preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 197, + "column": 48, + "kind": "jsx_text", + "text": "JSON Preview (Fallback)", + "context": "between tags, user-visible text node", + "line_content": " JSON Preview (Fallback)" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 199, + "column": 49, + "kind": "jsx_text", + "text": "Raw content", + "context": "between tags, user-visible text node", + "line_content": " Raw content" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 204, + "column": 34, + "kind": "string_literal", + "text": "No content available", + "context": "string literal", + "line_content": " {previewContent || 'No content available'}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 222, + "column": 37, + "kind": "string_literal", + "text": "Failed to load image preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load image preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 233, + "column": 39, + "kind": "string_literal", + "text": "Failed to load HTML preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load HTML preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 243, + "column": 37, + "kind": "string_literal", + "text": "Failed to load text preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load text preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 260, + "column": 39, + "kind": "string_literal", + "text": "Failed to load PDF preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load PDF preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 270, + "column": 39, + "kind": "string_literal", + "text": "Failed to load HTML preview", + "context": "string literal", + "line_content": " onError={() => setError('Failed to load HTML preview')}" + }, + { + "file": "src/components/ContentPreview/ContentPreview.tsx", + "line": 282, + "column": 37, + "kind": "string_literal", + "text": "Preview not supported for this file type", + "context": "string literal", + "line_content": " onError={() => setError('Preview not supported for this file type')}" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 56, + "column": 18, + "kind": "string_literal", + "text": "noopener noreferrer", + "context": "string literal", + "line_content": " link.rel = 'noopener noreferrer';" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 82, + "column": 14, + "kind": "string_literal", + "text": "Failed to load PDF. This might be due to CORS restrictions. You can try downloading the file or opening it in a new tab.", + "context": "string literal", + "line_content": " setError('Failed to load PDF. This might be due to CORS restrictions. You can try downloading the file or opening it in a new tab.');" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 99, + "column": 22, + "kind": "string_literal", + "text": "PDF lädt langsam. Sie können es auch direkt herunterladen oder in einem neuen Tab öffnen.", + "context": "string literal", + "line_content": " setWarning('PDF lädt langsam. Sie können es auch direkt herunterladen oder in einem neuen Tab öffnen.');" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 110, + "column": 22, + "kind": "string_literal", + "text": "PDF lädt langsam. Versuche alternative Anzeigemethode...", + "context": "string literal", + "line_content": " setWarning('PDF lädt langsam. Versuche alternative Anzeigemethode...');" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 114, + "column": 20, + "kind": "string_literal", + "text": "PDF lädt langsam. Bitte verwenden Sie den Download-Button oder öffnen Sie es in einem neuen Tab.", + "context": "string literal", + "line_content": " setError('PDF lädt langsam. Bitte verwenden Sie den Download-Button oder öffnen Sie es in einem neuen Tab.');" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 132, + "column": 18, + "kind": "string_literal", + "text": "Invalid URL", + "context": "string literal", + "line_content": " setError('Invalid URL');" + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 161, + "column": 29, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 172, + "column": 29, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 270, + "column": 29, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/UrlContentPreview.tsx", + "line": 317, + "column": 14, + "kind": "jsx_text", + "text": "Preview not supported for this file type. Please download the file to view it.", + "context": "between tags, user-visible text node", + "line_content": "

Preview not supported for this file type. Please download the file to view it.

" + }, + { + "file": "src/components/ContentPreview/renderers/JsonRenderer.tsx", + "line": 342, + "column": 64, + "kind": "jsx_text", + "text": "Error: Invalid nested data", + "context": "between tags, user-visible text node", + "line_content": " Error: Invalid nested data" + }, + { + "file": "src/components/ContentPreview/renderers/JsonRenderer.tsx", + "line": 482, + "column": 14, + "kind": "string_literal", + "text": "Raw Content", + "context": "string literal", + "line_content": " keys: ['Raw Content']," + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 65, + "column": 57, + "kind": "string_literal", + "text": "Failed to load PDF", + "context": "string literal", + "line_content": " setError(err instanceof Error ? err.message : 'Failed to load PDF');" + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 115, + "column": 57, + "kind": "string_literal", + "text": "Failed to render PDF page", + "context": "string literal", + "line_content": " setError(err instanceof Error ? err.message : 'Failed to render PDF page');" + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 131, + "column": 12, + "kind": "jsx_text", + "text": "Fehler beim Laden der PDF: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler beim Laden der PDF: {error}

" + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 140, + "column": 12, + "kind": "jsx_text", + "text": "PDF wird geladen...", + "context": "between tags, user-visible text node", + "line_content": "

PDF wird geladen...

" + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 152, + "column": 25, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 197, + "column": 25, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 213, + "column": 25, + "kind": "string_literal", + "text": "1px solid var(--color-border, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--color-border, #e5e7eb)'," + }, + { + "file": "src/components/ContentPreview/renderers/PdfJsRenderer.tsx", + "line": 232, + "column": 24, + "kind": "string_literal", + "text": "0 2px 8px rgba(0,0,0,0.1)", + "context": "string literal", + "line_content": " boxShadow: '0 2px 8px rgba(0,0,0,0.1)'," + }, + { + "file": "src/components/ContentPreview/renderers/TextRenderer.tsx", + "line": 19, + "column": 46, + "kind": "jsx_text", + "text": "Text Preview", + "context": "between tags, user-visible text node", + "line_content": " Text Preview" + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 59, + "column": 48, + "kind": "string_literal", + "text": "Jetzt ausführen", + "context": "string literal", + "line_content": " buildInvocationsForPrimaryKind('manual', [], 'Jetzt ausführen');" + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 203, + "column": 49, + "kind": "string_literal", + "text": "Keine Nodes im Workflow.", + "context": "string literal", + "line_content": " setExecuteResult({ success: false, error: 'Keine Nodes im Workflow.' });" + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 228, + "column": 49, + "kind": "string_literal", + "text": "Keine Nodes zum Speichern.", + "context": "string literal", + "line_content": " setExecuteResult({ success: false, error: 'Keine Nodes zum Speichern.' });" + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 238, + "column": 18, + "kind": "string_literal", + "text": "Workflow speichern", + "context": "string literal", + "line_content": " title: 'Workflow speichern'," + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 239, + "column": 25, + "kind": "string_literal", + "text": "Neuer Workflow", + "context": "string literal", + "line_content": " defaultValue: 'Neuer Workflow'," + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 240, + "column": 24, + "kind": "string_literal", + "text": "Name des Workflows", + "context": "string literal", + "line_content": " placeholder: 'Name des Workflows'," + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 247, + "column": 34, + "kind": "string_literal", + "text": "Neuer Workflow", + "context": "string literal", + "line_content": " label: label.trim() || 'Neuer Workflow'," + }, + { + "file": "src/components/FlowEditor/editor/Automation2FlowEditor.tsx", + "line": 596, + "column": 16, + "kind": "jsx_text", + "text": "Lade Node-Typen...", + "context": "between tags, user-visible text node", + "line_content": "

Lade Node-Typen...

" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 38, + "column": 19, + "kind": "string_literal", + "text": "Entwurf", + "context": "object property label: (e.g. table column)", + "line_content": " draft: { label: 'Entwurf', color: 'var(--warning-color, #ffc107)' }," + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 39, + "column": 23, + "kind": "string_literal", + "text": "Veröffentlicht", + "context": "object property label: (e.g. table column)", + "line_content": " published: { label: 'Veröffentlicht', color: 'var(--success-color, #28a745)' }," + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 40, + "column": 22, + "kind": "string_literal", + "text": "Archiviert", + "context": "object property label: (e.g. table column)", + "line_content": " archived: { label: 'Archiviert', color: 'var(--text-secondary, #666)' }," + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 116, + "column": 56, + "kind": "string_literal", + "text": "Meine Vorlagen", + "context": "string literal", + "line_content": " const SCOPE_LABELS: Record = { user: 'Meine Vorlagen', instance: 'Instanz', mandate: 'Mandant' };" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 137, + "column": 41, + "kind": "string_literal", + "text": "Klicken zum Umbenennen", + "context": "string literal", + "line_content": " title={onWorkflowRename ? 'Klicken zum Umbenennen' : undefined}" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 151, + "column": 19, + "kind": "string_literal", + "text": "Workflow-Konfiguration (Einstieg / Starts)", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Workflow-Konfiguration (Einstieg / Starts)\"" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 152, + "column": 24, + "kind": "string_literal", + "text": "Workflow-Konfiguration", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " aria-label=\"Workflow-Konfiguration\"" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 170, + "column": 21, + "kind": "string_literal", + "text": "Neu aus Vorlage", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Neu aus Vorlage\"" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 214, + "column": 21, + "kind": "string_literal", + "text": "Als Vorlage speichern", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Als Vorlage speichern\"" + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 242, + "column": 28, + "kind": "jsx_text", + "text": "— Workflow laden —", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/components/FlowEditor/editor/CanvasHeader.tsx", + "line": 268, + "column": 93, + "kind": "string_literal", + "text": "Workspace-Panel (Chats, Dateien, Quellen)", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/hooks/usePrompt.tsx", + "line": 6, + "column": 33, + "kind": "string_literal", + "text": "Bitte Namen eingeben:", + "context": "string literal", + "line_content": " * const value = await prompt('Bitte Namen eingeben:', { title: 'Umbenennen' });" + }, + { + "file": "src/hooks/usePrompt.tsx", + "line": 85, + "column": 21, + "kind": "string_literal", + "text": "1px solid var(--border-color, var(--color-border, #333))", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, var(--color-border, #333))'," + }, + { + "file": "src/hooks/usePrompt.tsx", + "line": 89, + "column": 24, + "kind": "string_literal", + "text": "0 8px 32px rgba(0,0,0,0.4)", + "context": "string literal", + "line_content": " boxShadow: '0 8px 32px rgba(0,0,0,0.4)'," + }, + { + "file": "src/hooks/usePrompt.tsx", + "line": 119, + "column": 23, + "kind": "string_literal", + "text": "1px solid var(--border-color, var(--color-border, #ccc))", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, var(--color-border, #ccc))'," + }, + { + "file": "src/hooks/usePrompt.tsx", + "line": 134, + "column": 25, + "kind": "string_literal", + "text": "1px solid var(--color-border, #444)", + "context": "string literal", + "line_content": " border: '1px solid var(--color-border, #444)'," + }, + { + "file": "src/layouts/FeatureLayout.tsx", + "line": 21, + "column": 8, + "kind": "jsx_text", + "text": "Lade Feature-Daten...", + "context": "between tags, user-visible text node", + "line_content": "

Lade Feature-Daten...

" + }, + { + "file": "src/layouts/FeatureLayout.tsx", + "line": 37, + "column": 9, + "kind": "jsx_text", + "text": "Zugriff nicht möglich", + "context": "between tags, user-visible text node", + "line_content": "

Zugriff nicht möglich

" + }, + { + "file": "src/layouts/FeatureLayout.tsx", + "line": 81, + "column": 17, + "kind": "string_literal", + "text": "Die angeforderte Feature-Instanz existiert nicht oder Sie haben keinen Zugriff.", + "context": "string literal", + "line_content": " message=\"Die angeforderte Feature-Instanz existiert nicht oder Sie haben keinen Zugriff.\"" + }, + { + "file": "src/layouts/MainLayout.tsx", + "line": 63, + "column": 22, + "kind": "string_literal", + "text": "Navigation schliessen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " aria-label=\"Navigation schliessen\"" + }, + { + "file": "src/layouts/MainLayout.tsx", + "line": 72, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/layouts/MainLayout.tsx", + "line": 105, + "column": 24, + "kind": "string_literal", + "text": "Navigation oeffnen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " aria-label=\"Navigation oeffnen\"" + }, + { + "file": "src/layouts/MainLayout.tsx", + "line": 111, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/AutomationsDashboardPage.tsx", + "line": 71, + "column": 15, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e0e0e0)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e0e0e0)'," + }, + { + "file": "src/pages/AutomationsDashboardPage.tsx", + "line": 78, + "column": 13, + "kind": "string_literal", + "text": "1 1 180px", + "context": "string literal", + "line_content": " flex: '1 1 180px'," + }, + { + "file": "src/pages/AutomationsDashboardPage.tsx", + "line": 195, + "column": 14, + "kind": "string_literal", + "text": "", + "context": "object property label: (e.g. table column)", + "line_content": " label: ''," + }, + { + "file": "src/pages/Dashboard.tsx", + "line": 72, + "column": 15, + "kind": "jsx_text", + "text": "Übersicht", + "context": "between tags, user-visible text node", + "line_content": "

Übersicht

" + }, + { + "file": "src/pages/Dashboard.tsx", + "line": 82, + "column": 13, + "kind": "jsx_text", + "text": "Übersicht", + "context": "between tags, user-visible text node", + "line_content": "

Übersicht

" + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 67, + "column": 26, + "kind": "string_literal", + "text": "Workflow Dashboard", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 67, + "column": 59, + "kind": "string_literal", + "text": "Übersicht der Workflows", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 71, + "column": 26, + "kind": "string_literal", + "text": "Runs", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 71, + "column": 45, + "kind": "string_literal", + "text": "Workflow-Ausführungen", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 75, + "column": 26, + "kind": "string_literal", + "text": "Dateien", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 82, + "column": 26, + "kind": "string_literal", + "text": "Chatbot Einstellungen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 82, + "column": 62, + "kind": "string_literal", + "text": "Konfiguration des Chatbots", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 88, + "column": 9, + "kind": "jsx_text", + "text": "Seite nicht gefunden", + "context": "between tags, user-visible text node", + "line_content": "

Seite nicht gefunden

" + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 89, + "column": 8, + "kind": "jsx_text", + "text": "Diese View existiert nicht oder wurde noch nicht implementiert.", + "context": "between tags, user-visible text node", + "line_content": "

Diese View existiert nicht oder wurde noch nicht implementiert.

" + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 95, + "column": 9, + "kind": "jsx_text", + "text": "Zugriff verweigert", + "context": "between tags, user-visible text node", + "line_content": "

Zugriff verweigert

" + }, + { + "file": "src/pages/FeatureView.tsx", + "line": 96, + "column": 8, + "kind": "jsx_text", + "text": "Du hast keine Berechtigung für diese Ansicht.", + "context": "between tags, user-visible text node", + "line_content": "

Du hast keine Berechtigung für diese Ansicht.

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 68, + "column": 27, + "kind": "string_literal", + "text": "Consent information could not be loaded.", + "context": "string literal", + "line_content": " setConsentError('Consent information could not be loaded.');" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 91, + "column": 49, + "kind": "string_literal", + "text": "Data export downloaded.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'success', text: 'Data export downloaded.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 94, + "column": 47, + "kind": "string_literal", + "text": "Data export failed. Please try again.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'error', text: 'Data export failed. Please try again.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 109, + "column": 49, + "kind": "string_literal", + "text": "Portable export downloaded.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'success', text: 'Portable export downloaded.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 112, + "column": 47, + "kind": "string_literal", + "text": "Portable export failed. Please try again.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'error', text: 'Portable export failed. Please try again.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 121, + "column": 47, + "kind": "string_literal", + "text": "Please type LOESCHEN to confirm deletion.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'error', text: 'Please type LOESCHEN to confirm deletion.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 132, + "column": 49, + "kind": "string_literal", + "text": "Account deleted. Redirecting to login...", + "context": "string literal", + "line_content": " setActionMessage({ type: 'success', text: 'Account deleted. Redirecting to login...' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 136, + "column": 47, + "kind": "string_literal", + "text": "Account deletion failed. Please try again.", + "context": "string literal", + "line_content": " setActionMessage({ type: 'error', text: 'Account deletion failed. Please try again.' });" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 161, + "column": 47, + "kind": "jsx_text", + "text": "Your data rights", + "context": "between tags, user-visible text node", + "line_content": "

Your data rights

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 164, + "column": 19, + "kind": "jsx_text", + "text": "Access (Article 15)", + "context": "between tags, user-visible text node", + "line_content": "

Access (Article 15)

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 165, + "column": 18, + "kind": "jsx_text", + "text": "Download a full export of your account data.", + "context": "between tags, user-visible text node", + "line_content": "

Download a full export of your account data.

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 186, + "column": 19, + "kind": "jsx_text", + "text": "Portability (Article 20)", + "context": "between tags, user-visible text node", + "line_content": "

Portability (Article 20)

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 187, + "column": 18, + "kind": "jsx_text", + "text": "Download a machine-readable JSON-LD export.", + "context": "between tags, user-visible text node", + "line_content": "

Download a machine-readable JSON-LD export.

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 208, + "column": 19, + "kind": "jsx_text", + "text": "Erasure (Article 17)", + "context": "between tags, user-visible text node", + "line_content": "

Erasure (Article 17)

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 209, + "column": 18, + "kind": "jsx_text", + "text": "Permanently delete your account and all associated data.", + "context": "between tags, user-visible text node", + "line_content": "

Permanently delete your account and all associated data.

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 229, + "column": 33, + "kind": "string_literal", + "text": "LOESCHEN", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"LOESCHEN\"" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 278, + "column": 47, + "kind": "jsx_text", + "text": "Processing information", + "context": "between tags, user-visible text node", + "line_content": "

Processing information

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 279, + "column": 64, + "kind": "jsx_text", + "text": "Loading consent info...", + "context": "between tags, user-visible text node", + "line_content": " {isLoadingConsent &&

Loading consent info...

}" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 284, + "column": 21, + "kind": "jsx_text", + "text": "Data collected", + "context": "between tags, user-visible text node", + "line_content": "

Data collected

" + }, + { + "file": "src/pages/GDPR.tsx", + "line": 304, + "column": 21, + "kind": "jsx_text", + "text": "Your rights", + "context": "between tags, user-visible text node", + "line_content": "

Your rights

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 16, + "column": 19, + "kind": "string_literal", + "text": "Einladung annehmen", + "context": "string literal", + "line_content": " * 6. User clicks \"Einladung annehmen\"" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 56, + "column": 18, + "kind": "string_literal", + "text": "Kein Einladungs-Token angegeben", + "context": "string literal", + "line_content": " setError('Kein Einladungs-Token angegeben');" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 71, + "column": 78, + "kind": "string_literal", + "text": "Neues Konto erstellen", + "context": "string literal", + "line_content": " // No targetUsername = new-user invitation (email only) -> only show \"Neues Konto erstellen\"" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 120, + "column": 72, + "kind": "string_literal", + "text": "Not authenticated", + "context": "string literal", + "line_content": " } else if (result.error?.includes('401') || result.error?.includes('Not authenticated')) {" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 125, + "column": 32, + "kind": "string_literal", + "text": "Fehler beim Annehmen der Einladung", + "context": "string literal", + "line_content": " setError(result.error || 'Fehler beim Annehmen der Einladung');" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 162, + "column": 16, + "kind": "jsx_text", + "text": "Einladung wird überprüft...", + "context": "between tags, user-visible text node", + "line_content": "

Einladung wird überprüft...

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 176, + "column": 17, + "kind": "jsx_text", + "text": "Ungültige Einladung", + "context": "between tags, user-visible text node", + "line_content": "

Ungültige Einladung

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 177, + "column": 39, + "kind": "string_literal", + "text": "Diese Einladung ist nicht gültig.", + "context": "string literal", + "line_content": "

{validation?.reason || 'Diese Einladung ist nicht gültig.'}

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 195, + "column": 16, + "kind": "jsx_text", + "text": "Sie wurden erfolgreich zum Mandanten hinzugefügt.", + "context": "between tags, user-visible text node", + "line_content": "

Sie wurden erfolgreich zum Mandanten hinzugefügt.

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 196, + "column": 51, + "kind": "jsx_text", + "text": "Sie werden weitergeleitet...", + "context": "between tags, user-visible text node", + "line_content": "

Sie werden weitergeleitet...

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 211, + "column": 17, + "kind": "jsx_text", + "text": "Falsche Anmeldung", + "context": "between tags, user-visible text node", + "line_content": "

Falsche Anmeldung

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 214, + "column": 61, + "kind": "string_literal", + "text": "anderer Benutzer", + "context": "string literal", + "line_content": " Sie sind als {cachedUser?.username || 'anderer Benutzer'} angemeldet." + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 216, + "column": 16, + "kind": "jsx_text", + "text": "Bitte melden Sie sich ab und mit dem richtigen Konto wieder an.", + "context": "between tags, user-visible text node", + "line_content": "

Bitte melden Sie sich ab und mit dem richtigen Konto wieder an.

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 229, + "column": 7, + "kind": "string_literal", + "text": "Sie wurden eingeladen, einem Mandanten und einem Feature beizutreten.", + "context": "string literal", + "line_content": " ? 'Sie wurden eingeladen, einem Mandanten und einem Feature beizutreten.'" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 230, + "column": 7, + "kind": "string_literal", + "text": "Sie wurden eingeladen, einem Mandanten beizutreten.", + "context": "string literal", + "line_content": " : 'Sie wurden eingeladen, einem Mandanten beizutreten.';" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 231, + "column": 40, + "kind": "string_literal", + "text": "Features mit zugewiesenen Rollen", + "context": "string literal", + "line_content": " const rolesLabel = isFeatureInvite ? 'Features mit zugewiesenen Rollen' : 'Zugewiesene Rollen';" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 231, + "column": 77, + "kind": "string_literal", + "text": "Zugewiesene Rollen", + "context": "string literal", + "line_content": " const rolesLabel = isFeatureInvite ? 'Features mit zugewiesenen Rollen' : 'Zugewiesene Rollen';" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 241, + "column": 17, + "kind": "jsx_text", + "text": "Einladung annehmen", + "context": "between tags, user-visible text node", + "line_content": "

Einladung annehmen

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 287, + "column": 17, + "kind": "string_literal", + "text": "Einladung annehmen", + "context": "string literal", + "line_content": " 'Einladung annehmen'" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 304, + "column": 15, + "kind": "jsx_text", + "text": "Einladung annehmen", + "context": "between tags, user-visible text node", + "line_content": "

Einladung annehmen

" + }, + { + "file": "src/pages/InvitePage.tsx", + "line": 333, + "column": 17, + "kind": "string_literal", + "text": "Erstellen Sie ein neues Konto mit Ihrem Benutzernamen oder verlinken Sie die Einladung mit Ihrem bestehenden Account.", + "context": "string literal", + "line_content": " : 'Erstellen Sie ein neues Konto mit Ihrem Benutzernamen oder verlinken Sie die Einladung mit Ihrem bestehenden Account.'}" + }, + { + "file": "src/pages/Login.tsx", + "line": 36, + "column": 22, + "kind": "string_literal", + "text": "PowerOn AI Platform - Login", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " document.title = \"PowerOn AI Platform - Login\";" + }, + { + "file": "src/pages/Login.tsx", + "line": 134, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/Login.tsx", + "line": 145, + "column": 25, + "kind": "jsx_text", + "text": "Sie haben eine ausstehende Einladung. Bitte melden Sie sich an, um diese anzunehmen.", + "context": "between tags, user-visible text node", + "line_content": " Sie haben eine ausstehende Einladung. Bitte melden Sie sich an, um diese anzunehmen." + }, + { + "file": "src/pages/Login.tsx", + "line": 155, + "column": 31, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Login.tsx", + "line": 173, + "column": 31, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Login.tsx", + "line": 198, + "column": 35, + "kind": "string_literal", + "text": "wird geladen...", + "context": "string literal", + "line_content": " {isLoginLoading ? \"wird geladen...\" : \"Anmelden\"}" + }, + { + "file": "src/pages/Login.tsx", + "line": 221, + "column": 36, + "kind": "string_literal", + "text": "Signing in...", + "context": "string literal", + "line_content": " {isMsalLoading ? \"Signing in...\" : \"Mit Microsoft anmelden\"}" + }, + { + "file": "src/pages/Login.tsx", + "line": 221, + "column": 54, + "kind": "string_literal", + "text": "Mit Microsoft anmelden", + "context": "string literal", + "line_content": " {isMsalLoading ? \"Signing in...\" : \"Mit Microsoft anmelden\"}" + }, + { + "file": "src/pages/Login.tsx", + "line": 232, + "column": 38, + "kind": "string_literal", + "text": "Signing in...", + "context": "string literal", + "line_content": " {isGoogleLoading ? \"Signing in...\" : \"Mit Google anmelden\"}" + }, + { + "file": "src/pages/Login.tsx", + "line": 232, + "column": 56, + "kind": "string_literal", + "text": "Mit Google anmelden", + "context": "string literal", + "line_content": " {isGoogleLoading ? \"Signing in...\" : \"Mit Google anmelden\"}" + }, + { + "file": "src/pages/Login.tsx", + "line": 237, + "column": 23, + "kind": "jsx_text", + "text": "Du hast noch kein Konto?", + "context": "between tags, user-visible text node", + "line_content": " Du hast noch kein Konto?" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 18, + "column": 22, + "kind": "string_literal", + "text": "PowerOn AI Platform - Passwort zurücksetzen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " document.title = \"PowerOn AI Platform - Passwort zurücksetzen\";" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 27, + "column": 26, + "kind": "string_literal", + "text": "Bitte geben Sie Ihren Benutzernamen ein.", + "context": "string literal", + "line_content": " setValidationError('Bitte geben Sie Ihren Benutzernamen ein.');" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 33, + "column": 25, + "kind": "string_literal", + "text": "Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.", + "context": "string literal", + "line_content": " setSuccessMessage('Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.');" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 40, + "column": 22, + "kind": "string_literal", + "text": "Bitte prüfen Sie Ihre E-Mail für den Passwort-Reset-Link.", + "context": "string literal", + "line_content": " message: 'Bitte prüfen Sie Ihre E-Mail für den Passwort-Reset-Link.'" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 46, + "column": 25, + "kind": "string_literal", + "text": "Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.", + "context": "string literal", + "line_content": " setSuccessMessage('Falls ein Konto mit diesem Benutzernamen existiert, wurde ein Reset-Link an die hinterlegte E-Mail-Adresse gesendet. Bitte prüfen Sie auch Ihren Spam-Ordner.');" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 59, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 65, + "column": 42, + "kind": "jsx_text", + "text": "Passwort zurücksetzen", + "context": "between tags, user-visible text node", + "line_content": "

Passwort zurücksetzen

" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 80, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 100, + "column": 24, + "kind": "jsx_text", + "text": "Geben Sie Ihren Benutzernamen ein. Falls ein Konto existiert, erhalten Sie einen Link zum Zurücksetzen des Passworts an Ihre hinterlegte E-Mail-Adresse.", + "context": "between tags, user-visible text node", + "line_content": "

Geben Sie Ihren Benutzernamen ein. Falls ein Konto existiert, erhalten Sie einen Link zum Zurücksetzen des Passworts an Ihre hinterlegte E-Mail-Adresse.

" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 108, + "column": 34, + "kind": "string_literal", + "text": "Wird gesendet...", + "context": "string literal", + "line_content": " {isLoading ? \"Wird gesendet...\" : \"Reset-Link anfordern\"}" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 108, + "column": 55, + "kind": "string_literal", + "text": "Reset-Link anfordern", + "context": "string literal", + "line_content": " {isLoading ? \"Wird gesendet...\" : \"Reset-Link anfordern\"}" + }, + { + "file": "src/pages/PasswordResetRequest.tsx", + "line": 114, + "column": 23, + "kind": "jsx_text", + "text": "Zurück zum", + "context": "between tags, user-visible text node", + "line_content": " Zurück zum" + }, + { + "file": "src/pages/Register.tsx", + "line": 40, + "column": 22, + "kind": "string_literal", + "text": "PowerOn AI Platform - Registrieren", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " document.title = \"PowerOn AI Platform - Registrieren\";" + }, + { + "file": "src/pages/Register.tsx", + "line": 58, + "column": 26, + "kind": "string_literal", + "text": "Bitte füllen Sie alle Pflichtfelder aus.", + "context": "string literal", + "line_content": " setValidationError('Bitte füllen Sie alle Pflichtfelder aus.');" + }, + { + "file": "src/pages/Register.tsx", + "line": 63, + "column": 26, + "kind": "string_literal", + "text": "Bitte geben Sie eine gültige E-Mail-Adresse ein.", + "context": "string literal", + "line_content": " setValidationError('Bitte geben Sie eine gültige E-Mail-Adresse ein.');" + }, + { + "file": "src/pages/Register.tsx", + "line": 81, + "column": 60, + "kind": "string_literal", + "text": "Username is not available", + "context": "string literal", + "line_content": " const errorMessage = availabilityResult.message || 'Username is not available';" + }, + { + "file": "src/pages/Register.tsx", + "line": 82, + "column": 30, + "kind": "string_literal", + "text": "Username is already taken", + "context": "string literal", + "line_content": " if (errorMessage === 'Username is already taken') {" + }, + { + "file": "src/pages/Register.tsx", + "line": 83, + "column": 30, + "kind": "string_literal", + "text": "Benutzername ist bereits vergeben", + "context": "string literal", + "line_content": " setValidationError('Benutzername ist bereits vergeben');" + }, + { + "file": "src/pages/Register.tsx", + "line": 86, + "column": 30, + "kind": "string_literal", + "text": "Benutzername ist nicht verfügbar", + "context": "string literal", + "line_content": " setValidationError('Benutzername ist nicht verfügbar');" + }, + { + "file": "src/pages/Register.tsx", + "line": 93, + "column": 21, + "kind": "string_literal", + "text": "Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mail (auch den Spam-Ordner) für den Link zum Setzen Ihres Passworts.", + "context": "string literal", + "line_content": " let message = 'Registrierung erfolgreich! Bitte prüfen Sie Ihre E-Mail (auch den Spam-Ordner) für den Link zum Setzen Ihres Passworts.';" + }, + { + "file": "src/pages/Register.tsx", + "line": 95, + "column": 20, + "kind": "string_literal", + "text": " Nach dem Setzen Ihres Passworts können Sie sich anmelden und Ihre Einladung annehmen.", + "context": "string literal", + "line_content": " message += ' Nach dem Setzen Ihres Passworts können Sie sich anmelden und Ihre Einladung annehmen.';" + }, + { + "file": "src/pages/Register.tsx", + "line": 104, + "column": 22, + "kind": "string_literal", + "text": "Registrierung erfolgreich. Bitte prüfen Sie Ihre E-Mail für den Passwort-Link.", + "context": "string literal", + "line_content": " message: 'Registrierung erfolgreich. Bitte prüfen Sie Ihre E-Mail für den Passwort-Link.'," + }, + { + "file": "src/pages/Register.tsx", + "line": 116, + "column": 83, + "kind": "string_literal", + "text": "Registration failed", + "context": "string literal", + "line_content": " if (registerError) return typeof registerError === 'string' ? registerError : 'Registration failed';" + }, + { + "file": "src/pages/Register.tsx", + "line": 117, + "column": 71, + "kind": "string_literal", + "text": "Microsoft registration failed", + "context": "string literal", + "line_content": " if (msalError) return typeof msalError === 'string' ? msalError : 'Microsoft registration failed';" + }, + { + "file": "src/pages/Register.tsx", + "line": 118, + "column": 95, + "kind": "string_literal", + "text": "Username availability check failed", + "context": "string literal", + "line_content": " if (availabilityError) return typeof availabilityError === 'string' ? availabilityError : 'Username availability check failed';" + }, + { + "file": "src/pages/Register.tsx", + "line": 128, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/Register.tsx", + "line": 138, + "column": 25, + "kind": "jsx_text", + "text": "Sie haben eine ausstehende Einladung. Nach der Registrierung und Anmeldung können Sie diese annehmen.", + "context": "between tags, user-visible text node", + "line_content": " Sie haben eine ausstehende Einladung. Nach der Registrierung und Anmeldung können Sie diese annehmen." + }, + { + "file": "src/pages/Register.tsx", + "line": 156, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Register.tsx", + "line": 170, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Register.tsx", + "line": 184, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Register.tsx", + "line": 191, + "column": 114, + "kind": "jsx_text", + "text": "Vollständiger Name", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/Register.tsx", + "line": 195, + "column": 24, + "kind": "jsx_text", + "text": "Nach der Registrierung erhalten Sie eine E-Mail mit einem Link zum Setzen Ihres Passworts.", + "context": "between tags, user-visible text node", + "line_content": "

Nach der Registrierung erhalten Sie eine E-Mail mit einem Link zum Setzen Ihres Passworts.

" + }, + { + "file": "src/pages/Register.tsx", + "line": 209, + "column": 34, + "kind": "string_literal", + "text": "Registrierung läuft...", + "context": "string literal", + "line_content": " {isLoading ? \"Registrierung läuft...\" : isChecking ? \"Benutzername wird geprüft...\" : 'Kostenlos registrieren'}" + }, + { + "file": "src/pages/Register.tsx", + "line": 209, + "column": 74, + "kind": "string_literal", + "text": "Benutzername wird geprüft...", + "context": "string literal", + "line_content": " {isLoading ? \"Registrierung läuft...\" : isChecking ? \"Benutzername wird geprüft...\" : 'Kostenlos registrieren'}" + }, + { + "file": "src/pages/Register.tsx", + "line": 209, + "column": 107, + "kind": "string_literal", + "text": "Kostenlos registrieren", + "context": "string literal", + "line_content": " {isLoading ? \"Registrierung läuft...\" : isChecking ? \"Benutzername wird geprüft...\" : 'Kostenlos registrieren'}" + }, + { + "file": "src/pages/Register.tsx", + "line": 215, + "column": 23, + "kind": "jsx_text", + "text": "Bereits registriert?", + "context": "between tags, user-visible text node", + "line_content": " Bereits registriert?" + }, + { + "file": "src/pages/Reset.tsx", + "line": 26, + "column": 22, + "kind": "string_literal", + "text": "PowerOn AI Platform - Neues Passwort setzen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " document.title = \"PowerOn AI Platform - Neues Passwort setzen\";" + }, + { + "file": "src/pages/Reset.tsx", + "line": 31, + "column": 21, + "kind": "string_literal", + "text": "Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.", + "context": "string literal", + "line_content": " setTokenError('Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 33, + "column": 21, + "kind": "string_literal", + "text": "Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.", + "context": "string literal", + "line_content": " setTokenError('Ungültiger Reset-Link. Bitte fordern Sie einen neuen Link an.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 44, + "column": 26, + "kind": "string_literal", + "text": "Passwort muss mindestens 8 Zeichen lang sein.", + "context": "string literal", + "line_content": " setValidationError('Passwort muss mindestens 8 Zeichen lang sein.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 49, + "column": 26, + "kind": "string_literal", + "text": "Die Passwörter stimmen nicht überein.", + "context": "string literal", + "line_content": " setValidationError('Die Passwörter stimmen nicht überein.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 65, + "column": 26, + "kind": "string_literal", + "text": "Token fehlt. Bitte fordern Sie einen neuen Reset-Link an.", + "context": "string literal", + "line_content": " setValidationError('Token fehlt. Bitte fordern Sie einen neuen Reset-Link an.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 71, + "column": 25, + "kind": "string_literal", + "text": "Passwort erfolgreich gesetzt! Sie werden zum Login weitergeleitet...", + "context": "string literal", + "line_content": " setSuccessMessage('Passwort erfolgreich gesetzt! Sie werden zum Login weitergeleitet...');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 78, + "column": 22, + "kind": "string_literal", + "text": "Passwort erfolgreich geändert. Bitte melden Sie sich an.", + "context": "string literal", + "line_content": " message: 'Passwort erfolgreich geändert. Bitte melden Sie sich an.'" + }, + { + "file": "src/pages/Reset.tsx", + "line": 84, + "column": 75, + "kind": "string_literal", + "text": "Passwort-Zurücksetzung fehlgeschlagen.", + "context": "string literal", + "line_content": " const errorMessage = err?.response?.data?.detail || err?.message || 'Passwort-Zurücksetzung fehlgeschlagen.';" + }, + { + "file": "src/pages/Reset.tsx", + "line": 85, + "column": 108, + "kind": "string_literal", + "text": "Ungültig", + "context": "string literal", + "line_content": " if (errorMessage.includes('abgelaufen') || errorMessage.includes('expired') || errorMessage.includes('Ungültig') || errorMessage.includes('invalid')) {" + }, + { + "file": "src/pages/Reset.tsx", + "line": 86, + "column": 28, + "kind": "string_literal", + "text": "Der Reset-Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.", + "context": "string literal", + "line_content": " setValidationError('Der Reset-Link ist ungültig oder abgelaufen. Bitte fordern Sie einen neuen Link an.');" + }, + { + "file": "src/pages/Reset.tsx", + "line": 101, + "column": 19, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/Reset.tsx", + "line": 107, + "column": 44, + "kind": "jsx_text", + "text": "Neues Passwort setzen", + "context": "between tags, user-visible text node", + "line_content": "

Neues Passwort setzen

" + }, + { + "file": "src/pages/Reset.tsx", + "line": 119, + "column": 25, + "kind": "jsx_text", + "text": "oder zurück zum", + "context": "between tags, user-visible text node", + "line_content": " oder zurück zum" + }, + { + "file": "src/pages/Reset.tsx", + "line": 141, + "column": 17, + "kind": "string_literal", + "text": "PowerOn", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " alt=\"PowerOn\"" + }, + { + "file": "src/pages/Reset.tsx", + "line": 147, + "column": 42, + "kind": "jsx_text", + "text": "Neues Passwort setzen", + "context": "between tags, user-visible text node", + "line_content": "

Neues Passwort setzen

" + }, + { + "file": "src/pages/Reset.tsx", + "line": 159, + "column": 56, + "kind": "jsx_text", + "text": "Mindestens 8 Zeichen", + "context": "between tags, user-visible text node", + "line_content": "
Mindestens 8 Zeichen
" + }, + { + "file": "src/pages/Reset.tsx", + "line": 163, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Reset.tsx", + "line": 174, + "column": 105, + "kind": "jsx_text", + "text": "Neues Passwort", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/Reset.tsx", + "line": 181, + "column": 35, + "kind": "string_literal", + "text": " ", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\" \"" + }, + { + "file": "src/pages/Reset.tsx", + "line": 192, + "column": 119, + "kind": "jsx_text", + "text": "Passwort bestätigen", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/Reset.tsx", + "line": 200, + "column": 34, + "kind": "string_literal", + "text": "Wird gespeichert...", + "context": "string literal", + "line_content": " {isLoading ? \"Wird gespeichert...\" : \"Passwort setzen\"}" + }, + { + "file": "src/pages/Reset.tsx", + "line": 200, + "column": 58, + "kind": "string_literal", + "text": "Passwort setzen", + "context": "string literal", + "line_content": " {isLoading ? \"Wird gespeichert...\" : \"Passwort setzen\"}" + }, + { + "file": "src/pages/Reset.tsx", + "line": 206, + "column": 23, + "kind": "jsx_text", + "text": "Zurück zum", + "context": "between tags, user-visible text node", + "line_content": " Zurück zum" + }, + { + "file": "src/pages/Settings.tsx", + "line": 23, + "column": 28, + "kind": "string_literal", + "text": "Profil", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'profile', label: 'Profil' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 24, + "column": 31, + "kind": "string_literal", + "text": "Darstellung", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'appearance', label: 'Darstellung' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 25, + "column": 26, + "kind": "string_literal", + "text": "Stimme & Sprache", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'voice', label: 'Stimme & Sprache' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 26, + "column": 35, + "kind": "string_literal", + "text": "Neutralisierung (lokal)", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'neutralization', label: 'Neutralisierung (lokal)' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 27, + "column": 28, + "kind": "string_literal", + "text": "Datenschutz", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'privacy', label: 'Datenschutz' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 50, + "column": 33, + "kind": "string_literal", + "text": "Deutsch", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'de', label: 'Deutsch' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 51, + "column": 33, + "kind": "string_literal", + "text": "English", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'en', label: 'English' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 52, + "column": 33, + "kind": "string_literal", + "text": "Français", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'fr', label: 'Français' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 56, + "column": 48, + "kind": "string_literal", + "text": "Vollstaendiger Name", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 56, + "column": 84, + "kind": "string_literal", + "text": "Ihr vollstaendiger Name", + "context": "string literal", + "line_content": " { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 56, + "column": 141, + "kind": "string_literal", + "text": "Max Mustermann", + "context": "string literal", + "line_content": " { name: 'fullName', type: 'string', label: 'Vollstaendiger Name', description: 'Ihr vollstaendiger Name', required: false, placeholder: 'Max Mustermann' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 57, + "column": 44, + "kind": "string_literal", + "text": "E-Mail-Adresse", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'email', type: 'email', label: 'E-Mail-Adresse', description: 'Ihre E-Mail-Adresse fuer Benachrichtigungen', required: true, placeholder: 'name@example.com' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 57, + "column": 75, + "kind": "string_literal", + "text": "Ihre E-Mail-Adresse fuer Benachrichtigungen", + "context": "string literal", + "line_content": " { name: 'email', type: 'email', label: 'E-Mail-Adresse', description: 'Ihre E-Mail-Adresse fuer Benachrichtigungen', required: true, placeholder: 'name@example.com' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 58, + "column": 48, + "kind": "string_literal", + "text": "Sprache", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'language', type: 'select', label: 'Sprache', description: 'Anzeigesprache der Anwendung', required: true, options: languageOptions }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 58, + "column": 72, + "kind": "string_literal", + "text": "Anzeigesprache der Anwendung", + "context": "string literal", + "line_content": " { name: 'language', type: 'select', label: 'Sprache', description: 'Anzeigesprache der Anwendung', required: true, options: languageOptions }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 68, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Speichern des Profils", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Speichern des Profils');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 80, + "column": 15, + "kind": "jsx_text", + "text": "Profil bearbeiten", + "context": "between tags, user-visible text node", + "line_content": "

Profil bearbeiten

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 137, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Laden der Voice-Einstellungen", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Laden der Voice-Einstellungen');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 184, + "column": 18, + "kind": "string_literal", + "text": "Einstellungen gespeichert", + "context": "string literal", + "line_content": " setSuccess('Einstellungen gespeichert');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 188, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Speichern", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Speichern');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 206, + "column": 24, + "kind": "string_literal", + "text": "Stimmtest fehlgeschlagen", + "context": "string literal", + "line_content": " } catch { setError('Stimmtest fehlgeschlagen'); }" + }, + { + "file": "src/pages/Settings.tsx", + "line": 216, + "column": 64, + "kind": "string_literal", + "text": "English (US)", + "context": "string literal", + "line_content": " { code: 'de-DE', name: 'Deutsch' }, { code: 'en-US', name: 'English (US)' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 230, + "column": 45, + "kind": "jsx_text", + "text": "STT-Sprache (Spracheingabe)", + "context": "between tags, user-visible text node", + "line_content": "

STT-Sprache (Spracheingabe)

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 233, + "column": 52, + "kind": "jsx_text", + "text": "Sprache fuer Spracherkennung", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/Settings.tsx", + "line": 234, + "column": 54, + "kind": "jsx_text", + "text": "Wird fuer die Sprache-zu-Text-Erkennung verwendet.", + "context": "between tags, user-visible text node", + "line_content": "

Wird fuer die Sprache-zu-Text-Erkennung verwendet.

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 247, + "column": 45, + "kind": "jsx_text", + "text": "TTS-Stimmen (Sprachausgabe)", + "context": "between tags, user-visible text node", + "line_content": "

TTS-Stimmen (Sprachausgabe)

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 304, + "column": 36, + "kind": "string_literal", + "text": "Einstellungen speichern", + "context": "string literal", + "line_content": " {saving ? 'Speichern...' : 'Einstellungen speichern'}" + }, + { + "file": "src/pages/Settings.tsx", + "line": 342, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Laden", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Laden');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 355, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Loeschen", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Loeschen');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 371, + "column": 45, + "kind": "jsx_text", + "text": "Platzhalter-Mappings (lokal)", + "context": "between tags, user-visible text node", + "line_content": "

Platzhalter-Mappings (lokal)

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 377, + "column": 21, + "kind": "string_literal", + "text": "1px solid var(--border-color, #bfdbfe)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #bfdbfe)'," + }, + { + "file": "src/pages/Settings.tsx", + "line": 385, + "column": 19, + "kind": "jsx_text", + "text": "Mandant → AI-Workspace-Instanz → Einstellungen → Tab „Neutralisierung“", + "context": "between tags, user-visible text node", + "line_content": " Mandant → AI-Workspace-Instanz → Einstellungen → Tab „Neutralisierung“ (nicht auf dieser" + }, + { + "file": "src/pages/Settings.tsx", + "line": 470, + "column": 32, + "kind": "string_literal", + "text": "Sprache konnte nicht gespeichert werden", + "context": "string literal", + "line_content": " } catch { setLanguageError('Sprache konnte nicht gespeichert werden'); }" + }, + { + "file": "src/pages/Settings.tsx", + "line": 475, + "column": 69, + "kind": "string_literal", + "text": "Nicht angemeldet", + "context": "string literal", + "line_content": " if (!currentUser?.id || !currentUser?.username) throw new Error('Nicht angemeldet');" + }, + { + "file": "src/pages/Settings.tsx", + "line": 489, + "column": 40, + "kind": "jsx_text", + "text": "Persoenliche Einstellungen und Praeferenzen", + "context": "between tags, user-visible text node", + "line_content": "

Persoenliche Einstellungen und Praeferenzen

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 511, + "column": 58, + "kind": "jsx_text", + "text": "Profil bearbeiten", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/Settings.tsx", + "line": 512, + "column": 60, + "kind": "jsx_text", + "text": "Aendern Sie Ihren Namen und Ihre E-Mail-Adresse.", + "context": "between tags, user-visible text node", + "line_content": "

Aendern Sie Ihren Namen und Ihre E-Mail-Adresse.

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 540, + "column": 144, + "kind": "jsx_text", + "text": "Waehlen Sie zwischen hellem und dunklem Design.", + "context": "between tags, user-visible text node", + "line_content": "

Waehlen Sie zwischen hellem und dunklem Design.

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 555, + "column": 46, + "kind": "string_literal", + "text": "Deutsch", + "context": "object property label: (e.g. table column)", + "line_content": " { code: 'de', label: 'Deutsch' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 556, + "column": 46, + "kind": "string_literal", + "text": "English", + "context": "object property label: (e.g. table column)", + "line_content": " { code: 'en', label: 'English' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 557, + "column": 46, + "kind": "string_literal", + "text": "Français", + "context": "object property label: (e.g. table column)", + "line_content": " { code: 'fr', label: 'Français' }," + }, + { + "file": "src/pages/Settings.tsx", + "line": 584, + "column": 90, + "kind": "jsx_text", + "text": "GDPR / Privacy", + "context": "between tags, user-visible text node", + "line_content": "

Datenexport, Portabilität und Kontolöschung.

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 584, + "column": 153, + "kind": "jsx_text", + "text": "Datenexport, Portabilität und Kontolöschung.", + "context": "between tags, user-visible text node", + "line_content": "

Datenexport, Portabilität und Kontolöschung.

" + }, + { + "file": "src/pages/Settings.tsx", + "line": 585, + "column": 123, + "kind": "jsx_text", + "text": "GDPR öffnen", + "context": "between tags, user-visible text node", + "line_content": "
GDPR öffnen
" + }, + { + "file": "src/pages/Store.tsx", + "line": 25, + "column": 9, + "kind": "string_literal", + "text": "Erstelle und verwalte Automatisierungen, um wiederkehrende Aufgaben effizient zu erledigen.", + "context": "string literal", + "line_content": " de: 'Erstelle und verwalte Automatisierungen, um wiederkehrende Aufgaben effizient zu erledigen.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 26, + "column": 9, + "kind": "string_literal", + "text": "Create and manage automations to handle recurring tasks efficiently.", + "context": "string literal", + "line_content": " en: 'Create and manage automations to handle recurring tasks efficiently.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 27, + "column": 9, + "kind": "string_literal", + "text": "Creer et gerer des automatisations pour traiter efficacement les taches recurrentes.", + "context": "string literal", + "line_content": " fr: 'Creer et gerer des automatisations pour traiter efficacement les taches recurrentes.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 30, + "column": 9, + "kind": "string_literal", + "text": "n8n-style Flow-Automatisierung mit grafischem Editor, RAG und Tools.", + "context": "string literal", + "line_content": " de: 'n8n-style Flow-Automatisierung mit grafischem Editor, RAG und Tools.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 31, + "column": 9, + "kind": "string_literal", + "text": "n8n-style flow automation with visual editor, RAG and tools.", + "context": "string literal", + "line_content": " en: 'n8n-style flow automation with visual editor, RAG and tools.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 32, + "column": 9, + "kind": "string_literal", + "text": "Automatisation de flux style n8n avec editeur visuel, RAG et outils.", + "context": "string literal", + "line_content": " fr: 'Automatisation de flux style n8n avec editeur visuel, RAG et outils.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 35, + "column": 9, + "kind": "string_literal", + "text": "Integriere einen AI-Bot in deine Microsoft Teams Meetings und Channels.", + "context": "string literal", + "line_content": " de: 'Integriere einen AI-Bot in deine Microsoft Teams Meetings und Channels.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 36, + "column": 9, + "kind": "string_literal", + "text": "Integrate an AI bot into your Microsoft Teams meetings and channels.", + "context": "string literal", + "line_content": " en: 'Integrate an AI bot into your Microsoft Teams meetings and channels.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 37, + "column": 9, + "kind": "string_literal", + "text": "Integrez un bot IA dans vos reunions et canaux Microsoft Teams.", + "context": "string literal", + "line_content": " fr: 'Integrez un bot IA dans vos reunions et canaux Microsoft Teams.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 40, + "column": 9, + "kind": "string_literal", + "text": "Nutze den gemeinsamen AI Workspace: Chats, Tools und Kontext pro Instanz.", + "context": "string literal", + "line_content": " de: 'Nutze den gemeinsamen AI Workspace: Chats, Tools und Kontext pro Instanz.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 41, + "column": 9, + "kind": "string_literal", + "text": "Use the shared AI workspace: chats, tools, and context per instance.", + "context": "string literal", + "line_content": " en: 'Use the shared AI workspace: chats, tools, and context per instance.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 42, + "column": 9, + "kind": "string_literal", + "text": "Utilisez l'espace de travail IA partage: chats, outils et contexte par instance.", + "context": "string literal", + "line_content": " fr: 'Utilisez l\\'espace de travail IA partage: chats, outils et contexte par instance.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 45, + "column": 9, + "kind": "string_literal", + "text": "CommCoach: Kommunikation trainieren mit KI-gestütztem Coaching und Feedback.", + "context": "string literal", + "line_content": " de: 'CommCoach: Kommunikation trainieren mit KI-gestütztem Coaching und Feedback.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 46, + "column": 9, + "kind": "string_literal", + "text": "CommCoach: practice communication with AI-assisted coaching and feedback.", + "context": "string literal", + "line_content": " en: 'CommCoach: practice communication with AI-assisted coaching and feedback.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 47, + "column": 9, + "kind": "string_literal", + "text": "CommCoach: entrainer la communication avec un coaching assiste par IA.", + "context": "string literal", + "line_content": " fr: 'CommCoach: entrainer la communication avec un coaching assiste par IA.'," + }, + { + "file": "src/pages/Store.tsx", + "line": 140, + "column": 38, + "kind": "string_literal", + "text": "Wird aktiviert...", + "context": "string literal", + "line_content": " ? (language === 'de' ? 'Wird aktiviert...' : 'Activating...')" + }, + { + "file": "src/pages/Store.tsx", + "line": 160, + "column": 41, + "kind": "string_literal", + "text": "Feature Store", + "context": "string literal", + "line_content": "

{currentLanguage === 'de' ? 'Feature Store' : currentLanguage === 'fr' ? 'Feature Store' : 'Feature Store'}

" + }, + { + "file": "src/pages/Store.tsx", + "line": 163, + "column": 15, + "kind": "string_literal", + "text": "Aktiviere Features fuer dein Konto. Deine Daten sind isoliert und nur fuer dich sichtbar.", + "context": "string literal", + "line_content": " ? 'Aktiviere Features fuer dein Konto. Deine Daten sind isoliert und nur fuer dich sichtbar.'" + }, + { + "file": "src/pages/Store.tsx", + "line": 165, + "column": 17, + "kind": "string_literal", + "text": "Activez des fonctionnalites pour votre compte. Vos donnees sont isolees et visibles uniquement par vous.", + "context": "string literal", + "line_content": " ? 'Activez des fonctionnalites pour votre compte. Vos donnees sont isolees et visibles uniquement par vous.'" + }, + { + "file": "src/pages/Store.tsx", + "line": 166, + "column": 17, + "kind": "string_literal", + "text": "Activate features for your account. Your data is isolated and only visible to you.", + "context": "string literal", + "line_content": " : 'Activate features for your account. Your data is isolated and only visible to you.'}" + }, + { + "file": "src/pages/Store.tsx", + "line": 186, + "column": 57, + "kind": "string_literal", + "text": "AI budget", + "context": "string literal", + "line_content": " {currentLanguage === 'de' ? 'AI-Budget' : 'AI budget'}: {subscriptionInfo.budgetAiCHF} CHF" + }, + { + "file": "src/pages/Store.tsx", + "line": 191, + "column": 43, + "kind": "string_literal", + "text": "Trial endet", + "context": "string literal", + "line_content": " {currentLanguage === 'de' ? 'Trial endet' : 'Trial ends'}: {new Date(subscriptionInfo.trialEndsAt).toLocaleDateString()}" + }, + { + "file": "src/pages/Store.tsx", + "line": 191, + "column": 59, + "kind": "string_literal", + "text": "Trial ends", + "context": "string literal", + "line_content": " {currentLanguage === 'de' ? 'Trial endet' : 'Trial ends'}: {new Date(subscriptionInfo.trialEndsAt).toLocaleDateString()}" + }, + { + "file": "src/pages/Store.tsx", + "line": 201, + "column": 39, + "kind": "string_literal", + "text": "Lade Features...", + "context": "string literal", + "line_content": " {currentLanguage === 'de' ? 'Lade Features...' : 'Loading features...'}" + }, + { + "file": "src/pages/Store.tsx", + "line": 201, + "column": 60, + "kind": "string_literal", + "text": "Loading features...", + "context": "string literal", + "line_content": " {currentLanguage === 'de' ? 'Lade Features...' : 'Loading features...'}" + }, + { + "file": "src/pages/Store.tsx", + "line": 206, + "column": 15, + "kind": "string_literal", + "text": "Keine Features im Store verfuegbar.", + "context": "string literal", + "line_content": " ? 'Keine Features im Store verfuegbar.'" + }, + { + "file": "src/pages/Store.tsx", + "line": 207, + "column": 15, + "kind": "string_literal", + "text": "No features available in the store.", + "context": "string literal", + "line_content": " : 'No features available in the store.'}" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 147, + "column": 11, + "kind": "string_literal", + "text": "Rollen synchronisiert", + "context": "string literal", + "line_content": " 'Rollen synchronisiert'," + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 152, + "column": 19, + "kind": "string_literal", + "text": "Synchronisierung fehlgeschlagen", + "context": "string literal", + "line_content": " showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren');" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 152, + "column": 70, + "kind": "string_literal", + "text": "Fehler beim Synchronisieren", + "context": "string literal", + "line_content": " showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren');" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 155, + "column": 27, + "kind": "string_literal", + "text": "Rollen konnten nicht synchronisiert werden", + "context": "string literal", + "line_content": " showError('Fehler', 'Rollen konnten nicht synchronisiert werden');" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 308, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 342, + "column": 34, + "kind": "jsx_text", + "text": "-- Mandant wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 431, + "column": 45, + "kind": "jsx_text", + "text": "Kein Mandant ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Mandant ausgewählt

" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 463, + "column": 56, + "kind": "jsx_text", + "text": "Rollen (max)", + "context": "between tags, user-visible text node", + "line_content": " Rollen (max)" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 496, + "column": 23, + "kind": "jsx_text", + "text": "Lade Instanzen...", + "context": "between tags, user-visible text node", + "line_content": " Lade Instanzen..." + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 501, + "column": 51, + "kind": "jsx_text", + "text": "Keine Feature-Instanzen", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanzen

" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 526, + "column": 67, + "kind": "jsx_text", + "text": "f.code === inst.featureCode) || { code: inst.featureCode, label: inst.featureCode })}", + "context": "between tags, user-visible text node", + "line_content": " {getFeatureLabel(features.find((f) => f.code === inst.featureCode) || { code: inst.featureCode, label: inst.featureCode })}" + }, + { + "file": "src/pages/admin/AccessManagementHub.tsx", + "line": 543, + "column": 31, + "kind": "string_literal", + "text": "Rollen synchronisieren", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Rollen synchronisieren\"" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 87, + "column": 28, + "kind": "string_literal", + "text": "Name", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'label', label: 'Name', type: 'string' as const, sortable: true, filterable: true, searchable: true, width: 200 }," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 88, + "column": 34, + "kind": "string_literal", + "text": "Feature", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'featureCode', label: 'Feature', type: 'string' as const, sortable: true, filterable: true, width: 150," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 100, + "column": 30, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'enabled', label: 'Aktiv', type: 'boolean' as const, sortable: true, filterable: true, width: 80 }," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 123, + "column": 29, + "kind": "string_literal", + "text": "Label ist erforderlich.", + "context": "string literal", + "line_content": " showError('Fehler', 'Label ist erforderlich.');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 133, + "column": 31, + "kind": "string_literal", + "text": "System Prompt ist erforderlich für Chatbot-Instanzen.", + "context": "string literal", + "line_content": " showError('Fehler', 'System Prompt ist erforderlich für Chatbot-Instanzen.');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 177, + "column": 21, + "kind": "string_literal", + "text": "Feature-Instanz erstellt", + "context": "string literal", + "line_content": " showSuccess('Feature-Instanz erstellt', `Die Instanz \"${createLabel}\" wurde erfolgreich erstellt.`);" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 179, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Erstellen der Feature-Instanz", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Erstellen der Feature-Instanz');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 229, + "column": 31, + "kind": "string_literal", + "text": "System Prompt ist erforderlich für Chatbot-Instanzen.", + "context": "string literal", + "line_content": " showError('Fehler', 'System Prompt ist erforderlich für Chatbot-Instanzen.');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 271, + "column": 21, + "kind": "string_literal", + "text": "Feature-Instanz aktualisiert", + "context": "string literal", + "line_content": " showSuccess('Feature-Instanz aktualisiert', `Die Instanz \"${data.label}\" wurde erfolgreich aktualisiert.`);" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 273, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren der Feature-Instanz", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Aktualisieren der Feature-Instanz');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 286, + "column": 19, + "kind": "string_literal", + "text": "Instanz gelöscht", + "context": "string literal", + "line_content": " showSuccess('Instanz gelöscht', 'Die Feature-Instanz wurde gelöscht.');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 286, + "column": 39, + "kind": "string_literal", + "text": "Die Feature-Instanz wurde gelöscht.", + "context": "string literal", + "line_content": " showSuccess('Instanz gelöscht', 'Die Feature-Instanz wurde gelöscht.');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 289, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Löschen der Feature-Instanz", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Löschen der Feature-Instanz');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 302, + "column": 11, + "kind": "string_literal", + "text": "Rollen synchronisiert", + "context": "string literal", + "line_content": " 'Rollen synchronisiert'," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 306, + "column": 19, + "kind": "string_literal", + "text": "Synchronisierung fehlgeschlagen", + "context": "string literal", + "line_content": " showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren der Rollen');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 306, + "column": 70, + "kind": "string_literal", + "text": "Fehler beim Synchronisieren der Rollen", + "context": "string literal", + "line_content": " showError('Synchronisierung fehlgeschlagen', result.error || 'Fehler beim Synchronisieren der Rollen');" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 338, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 352, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie Feature-Instanzen für jeden Mandanten", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie Feature-Instanzen für jeden Mandanten

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 368, + "column": 30, + "kind": "jsx_text", + "text": "-- Mandant wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 390, + "column": 46, + "kind": "string_literal", + "text": "Keine Features verfügbar. Bitte laden Sie die Seite neu oder prüfen Sie die Konsole auf Fehler.", + "context": "string literal", + "line_content": " title={features.length === 0 ? 'Keine Features verfügbar. Bitte laden Sie die Seite neu oder prüfen Sie die Konsole auf Fehler.' : undefined}" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 402, + "column": 17, + "kind": "jsx_text", + "text": "Verfügbare Features:", + "context": "between tags, user-visible text node", + "line_content": " Verfügbare Features: " + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 415, + "column": 44, + "kind": "string_literal", + "text": " Die API hat keine Features zurückgegeben.", + "context": "string literal", + "line_content": " {error ? ` Fehler: ${error}` : ' Die API hat keine Features zurückgegeben.'}" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 432, + "column": 45, + "kind": "jsx_text", + "text": "Kein Mandant ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Mandant ausgewählt

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 453, + "column": 24, + "kind": "string_literal", + "text": "Instanz löschen", + "context": "string literal", + "line_content": " title: 'Instanz löschen'," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 461, + "column": 24, + "kind": "string_literal", + "text": "Instanz bearbeiten", + "context": "string literal", + "line_content": " title: 'Instanz bearbeiten'," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 467, + "column": 24, + "kind": "string_literal", + "text": "Rollen synchronisieren", + "context": "string literal", + "line_content": " title: 'Rollen synchronisieren'," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 477, + "column": 26, + "kind": "string_literal", + "text": "Keine Feature-Instanzen gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Feature-Instanzen gefunden\"" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 487, + "column": 49, + "kind": "jsx_text", + "text": "Neue Feature-Instanz erstellen", + "context": "between tags, user-visible text node", + "line_content": "

Neue Feature-Instanz erstellen

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 497, + "column": 20, + "kind": "jsx_text", + "text": "Keine Features verfügbar. Bitte wenden Sie sich an den System-Administrator.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Features verfügbar. Bitte wenden Sie sich an den System-Administrator.

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 501, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 528, + "column": 35, + "kind": "string_literal", + "text": "Feature auswählen (erforderlich)", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"Feature auswählen (erforderlich)\"" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 555, + "column": 37, + "kind": "string_literal", + "text": "Instanz-Bezeichnung eingeben...", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"Instanz-Bezeichnung eingeben...\"" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 611, + "column": 49, + "kind": "jsx_text", + "text": "Feature-Instanz bearbeiten", + "context": "between tags, user-visible text node", + "line_content": "

Feature-Instanz bearbeiten

" + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 625, + "column": 28, + "kind": "string_literal", + "text": "Bezeichnung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Bezeichnung'," + }, + { + "file": "src/pages/admin/AdminFeatureAccessPage.tsx", + "line": 632, + "column": 28, + "kind": "string_literal", + "text": "Aktiviert", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiviert'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 201, + "column": 14, + "kind": "string_literal", + "text": "Benutzername", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzername'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 210, + "column": 14, + "kind": "string_literal", + "text": "E-Mail", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'E-Mail'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 219, + "column": 14, + "kind": "string_literal", + "text": "Vollständiger Name", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Vollständiger Name'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 228, + "column": 14, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 241, + "column": 14, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiv'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 268, + "column": 16, + "kind": "string_literal", + "text": "Benutzer", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzer'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 275, + "column": 16, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 288, + "column": 16, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 295, + "column": 16, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiv'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 312, + "column": 21, + "kind": "string_literal", + "text": "Benutzer hinzugefügt", + "context": "string literal", + "line_content": " showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 312, + "column": 45, + "kind": "string_literal", + "text": "Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.", + "context": "string literal", + "line_content": " showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde erfolgreich zur Feature-Instanz hinzugefügt.');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 314, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Hinzufügen des Benutzers", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Hinzufügen des Benutzers');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 336, + "column": 21, + "kind": "string_literal", + "text": "Eintrag aktualisiert", + "context": "string literal", + "line_content": " showSuccess('Eintrag aktualisiert', 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 336, + "column": 45, + "kind": "string_literal", + "text": "Rollen und Aktiv-Status wurden erfolgreich aktualisiert.", + "context": "string literal", + "line_content": " showSuccess('Eintrag aktualisiert', 'Rollen und Aktiv-Status wurden erfolgreich aktualisiert.');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 338, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Aktualisieren');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 352, + "column": 19, + "kind": "string_literal", + "text": "Benutzer entfernt", + "context": "string literal", + "line_content": " showSuccess('Benutzer entfernt', `\"${user.username}\" wurde aus der Feature-Instanz entfernt.`);" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 354, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Entfernen des Benutzers", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Entfernen des Benutzers');" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 396, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 409, + "column": 44, + "kind": "jsx_text", + "text": "Feature Instanz Benutzer", + "context": "between tags, user-visible text node", + "line_content": "

Feature Instanz Benutzer

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 410, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie Benutzerzugriffe auf Feature-Instanzen", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie Benutzerzugriffe auf Feature-Instanzen

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 427, + "column": 30, + "kind": "jsx_text", + "text": "-- Mandant / Feature-Instanz wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 485, + "column": 17, + "kind": "jsx_text", + "text": "Verfügbare Rollen:", + "context": "between tags, user-visible text node", + "line_content": " Verfügbare Rollen: " + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 499, + "column": 17, + "kind": "jsx_text", + "text": "Diese Instanz hat noch keine Rollen. Bitte synchronisieren Sie die Rollen zuerst unter \"Feature-Instanzen\".", + "context": "between tags, user-visible text node", + "line_content": " Diese Instanz hat noch keine Rollen. Bitte synchronisieren Sie die Rollen zuerst unter \"Feature-Instanzen\"." + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 507, + "column": 45, + "kind": "jsx_text", + "text": "Keine Feature-Instanz ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanz ausgewählt

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 510, + "column": 17, + "kind": "string_literal", + "text": "Es gibt noch keine Feature-Instanzen. Erstellen Sie zuerst Feature-Instanzen unter \"Feature-Instanzen\".", + "context": "string literal", + "line_content": " ? 'Es gibt noch keine Feature-Instanzen. Erstellen Sie zuerst Feature-Instanzen unter \"Feature-Instanzen\".'" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 511, + "column": 17, + "kind": "string_literal", + "text": "Wählen Sie eine Feature-Instanz aus, um deren Benutzer zu verwalten.", + "context": "string literal", + "line_content": " : 'Wählen Sie eine Feature-Instanz aus, um deren Benutzer zu verwalten.'}" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 531, + "column": 24, + "kind": "string_literal", + "text": "Rollen bearbeiten", + "context": "string literal", + "line_content": " title: 'Rollen bearbeiten'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 535, + "column": 24, + "kind": "string_literal", + "text": "Aus Instanz entfernen", + "context": "string literal", + "line_content": " title: 'Aus Instanz entfernen'," + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 552, + "column": 26, + "kind": "string_literal", + "text": "Keine Benutzer gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Benutzer gefunden\"" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 562, + "column": 49, + "kind": "jsx_text", + "text": "Benutzer zur Feature-Instanz hinzufügen", + "context": "between tags, user-visible text node", + "line_content": "

Benutzer zur Feature-Instanz hinzufügen

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 572, + "column": 20, + "kind": "jsx_text", + "text": "Alle Benutzer haben bereits Zugriff auf diese Feature-Instanz.", + "context": "between tags, user-visible text node", + "line_content": "

Alle Benutzer haben bereits Zugriff auf diese Feature-Instanz.

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 574, + "column": 20, + "kind": "jsx_text", + "text": "Diese Feature-Instanz hat keine Rollen. Bitte synchronisieren Sie zuerst die Rollen.", + "context": "between tags, user-visible text node", + "line_content": "

Diese Feature-Instanz hat keine Rollen. Bitte synchronisieren Sie zuerst die Rollen.

" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 581, + "column": 36, + "kind": "string_literal", + "text": "Hinzufügen", + "context": "string literal", + "line_content": " submitButtonText=\"Hinzufügen\"" + }, + { + "file": "src/pages/admin/AdminFeatureInstanceUsersPage.tsx", + "line": 595, + "column": 49, + "kind": "jsx_text", + "text": "Rollen bearbeiten: {editingUser.username}", + "context": "between tags, user-visible text node", + "line_content": "

Rollen bearbeiten: {editingUser.username}

" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 69, + "column": 18, + "kind": "string_literal", + "text": "Fehler beim Laden der Features", + "context": "string literal", + "line_content": " setError('Fehler beim Laden der Features');" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 111, + "column": 16, + "kind": "string_literal", + "text": "Fehler beim Laden der Feature-Rollen", + "context": "string literal", + "line_content": " setError('Fehler beim Laden der Feature-Rollen');" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 134, + "column": 14, + "kind": "string_literal", + "text": "Rollen-Label", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen-Label'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 143, + "column": 14, + "kind": "string_literal", + "text": "Beschreibung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Beschreibung'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 151, + "column": 14, + "kind": "string_literal", + "text": "Feature", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Feature'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 169, + "column": 16, + "kind": "string_literal", + "text": "Rollen-Label", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen-Label'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 172, + "column": 22, + "kind": "string_literal", + "text": "Eindeutiger Bezeichner der Rolle (z.B. trustee-admin)", + "context": "string literal", + "line_content": " description: 'Eindeutiger Bezeichner der Rolle (z.B. trustee-admin)'" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 176, + "column": 16, + "kind": "string_literal", + "text": "Beschreibung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Beschreibung'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 179, + "column": 22, + "kind": "string_literal", + "text": "Mehrsprachige Beschreibung der Rolle", + "context": "string literal", + "line_content": " description: 'Mehrsprachige Beschreibung der Rolle'" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 190, + "column": 16, + "kind": "string_literal", + "text": "Rollen-Label", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen-Label'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 194, + "column": 22, + "kind": "string_literal", + "text": "Eindeutiger Bezeichner der Rolle", + "context": "string literal", + "line_content": " description: 'Eindeutiger Bezeichner der Rolle'" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 198, + "column": 16, + "kind": "string_literal", + "text": "Beschreibung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Beschreibung'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 201, + "column": 22, + "kind": "string_literal", + "text": "Mehrsprachige Beschreibung der Rolle", + "context": "string literal", + "line_content": " description: 'Mehrsprachige Beschreibung der Rolle'" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 221, + "column": 57, + "kind": "string_literal", + "text": "Fehler beim Erstellen der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', err.response?.data?.detail || 'Fehler beim Erstellen der Rolle');" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 240, + "column": 57, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', err.response?.data?.detail || 'Fehler beim Aktualisieren der Rolle');" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 253, + "column": 57, + "kind": "string_literal", + "text": "Fehler beim Löschen der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', err.response?.data?.detail || 'Fehler beim Löschen der Rolle');" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 283, + "column": 44, + "kind": "jsx_text", + "text": "Feature Rollen & Rechte", + "context": "between tags, user-visible text node", + "line_content": "

Feature Rollen & Rechte

" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 284, + "column": 46, + "kind": "jsx_text", + "text": "Template-Rollen und deren Berechtigungen für Feature-Instanzen verwalten", + "context": "between tags, user-visible text node", + "line_content": "

Template-Rollen und deren Berechtigungen für Feature-Instanzen verwalten

" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 300, + "column": 30, + "kind": "jsx_text", + "text": "-- Feature wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 346, + "column": 45, + "kind": "jsx_text", + "text": "Kein Feature ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Feature ausgewählt

" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 368, + "column": 24, + "kind": "string_literal", + "text": "Rolle bearbeiten", + "context": "string literal", + "line_content": " title: 'Rolle bearbeiten'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 372, + "column": 24, + "kind": "string_literal", + "text": "Rolle löschen", + "context": "string literal", + "line_content": " title: 'Rolle löschen'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 380, + "column": 24, + "kind": "string_literal", + "text": "Berechtigungen verwalten", + "context": "string literal", + "line_content": " title: 'Berechtigungen verwalten'," + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 389, + "column": 26, + "kind": "string_literal", + "text": "Keine Feature-Rollen gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Feature-Rollen gefunden\"" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 399, + "column": 49, + "kind": "jsx_text", + "text": "Neue Feature-Rolle erstellen", + "context": "between tags, user-visible text node", + "line_content": "

Neue Feature-Rolle erstellen

" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 417, + "column": 66, + "kind": "string_literal", + "text": "Rolle erstellen", + "context": "string literal", + "line_content": " submitButtonText={isSubmitting ? 'Erstelle...' : 'Rolle erstellen'}" + }, + { + "file": "src/pages/admin/AdminFeatureRolesPage.tsx", + "line": 430, + "column": 49, + "kind": "jsx_text", + "text": "Feature-Rolle bearbeiten", + "context": "between tags, user-visible text node", + "line_content": "

Feature-Rolle bearbeiten

" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 86, + "column": 14, + "kind": "string_literal", + "text": "Benutzername", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzername'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 95, + "column": 14, + "kind": "string_literal", + "text": "E-Mail", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'E-Mail'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 104, + "column": 36, + "kind": "string_literal", + "text": "Email wurde gesendet", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 104, + "column": 61, + "kind": "string_literal", + "text": "Email nicht gesendet", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 112, + "column": 14, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 127, + "column": 14, + "kind": "string_literal", + "text": "Gültig bis", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Gültig bis'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 143, + "column": 14, + "kind": "string_literal", + "text": "Verwendet", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Verwendet'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 151, + "column": 14, + "kind": "string_literal", + "text": "Erstellt", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Erstellt'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 177, + "column": 52, + "kind": "string_literal", + "text": "Gültigkeitsdauer (Stunden)", + "context": "object property label: (e.g. table column)", + "line_content": " fields.push({ name: 'expiresInHours', label: 'Gültigkeitsdauer (Stunden)', type: 'number'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 200, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Erstellen der Einladung", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Erstellen der Einladung');" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 213, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Widerrufen der Einladung", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Widerrufen der Einladung');" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 248, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 262, + "column": 46, + "kind": "jsx_text", + "text": "Erstellen und verwalten Sie Einladungen für neue Benutzer", + "context": "between tags, user-visible text node", + "line_content": "

Erstellen und verwalten Sie Einladungen für neue Benutzer

" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 278, + "column": 30, + "kind": "jsx_text", + "text": "-- Mandant wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 329, + "column": 45, + "kind": "jsx_text", + "text": "Kein Mandant ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Mandant ausgewählt

" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 350, + "column": 24, + "kind": "string_literal", + "text": "Einladung widerrufen", + "context": "string literal", + "line_content": " title: 'Einladung widerrufen'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 358, + "column": 24, + "kind": "string_literal", + "text": "Einladungs-Link anzeigen", + "context": "string literal", + "line_content": " title: 'Einladungs-Link anzeigen'," + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 366, + "column": 26, + "kind": "string_literal", + "text": "Keine Einladungen gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Einladungen gefunden\"" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 376, + "column": 49, + "kind": "jsx_text", + "text": "Neue Einladung erstellen", + "context": "between tags, user-visible text node", + "line_content": "

Neue Einladung erstellen

" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 388, + "column": 25, + "kind": "jsx_text", + "text": "Lade Rollen...", + "context": "between tags, user-visible text node", + "line_content": " Lade Rollen..." + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 393, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 401, + "column": 36, + "kind": "string_literal", + "text": "Einladung erstellen", + "context": "string literal", + "line_content": " submitButtonText=\"Einladung erstellen\"" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 438, + "column": 25, + "kind": "string_literal", + "text": "In Zwischenablage kopieren", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"In Zwischenablage kopieren\"" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 441, + "column": 34, + "kind": "string_literal", + "text": " Kopiert!", + "context": "string literal", + "line_content": " {copySuccess ? ' Kopiert!' : ' Kopieren'}" + }, + { + "file": "src/pages/admin/AdminInvitationsPage.tsx", + "line": 441, + "column": 48, + "kind": "string_literal", + "text": " Kopieren", + "context": "string literal", + "line_content": " {copySuccess ? ' Kopiert!' : ' Kopieren'}" + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 22, + "column": 23, + "kind": "string_literal", + "text": "Code", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'id', label: 'Code', type: 'text', sortable: true, filterable: true, width: 90 }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 23, + "column": 26, + "kind": "string_literal", + "text": "Bezeichnung", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'label', label: 'Bezeichnung', type: 'text', sortable: true, filterable: true, width: 160 }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 24, + "column": 27, + "kind": "string_literal", + "text": "Status", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'status', label: 'Status', type: 'text', sortable: true, filterable: true, width: 120 }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 25, + "column": 30, + "kind": "string_literal", + "text": "Keys", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'keysCount', label: 'Keys', type: 'number', sortable: true, width: 90 }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 29, + "column": 25, + "kind": "string_literal", + "text": "it — Italiano", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'it', label: 'it — Italiano' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 30, + "column": 25, + "kind": "string_literal", + "text": "es — Español", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'es', label: 'es — Español' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 31, + "column": 25, + "kind": "string_literal", + "text": "pt — Português", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'pt', label: 'pt — Português' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 32, + "column": 25, + "kind": "string_literal", + "text": "nl — Nederlands", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'nl', label: 'nl — Nederlands' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 33, + "column": 25, + "kind": "string_literal", + "text": "pl — Polski", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'pl', label: 'pl — Polski' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 34, + "column": 25, + "kind": "string_literal", + "text": "cs — Čeština", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'cs', label: 'cs — Čeština' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 35, + "column": 25, + "kind": "string_literal", + "text": "sk — Slovenčina", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'sk', label: 'sk — Slovenčina' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 36, + "column": 25, + "kind": "string_literal", + "text": "sv — Svenska", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'sv', label: 'sv — Svenska' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 37, + "column": 25, + "kind": "string_literal", + "text": "no — Norsk", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'no', label: 'no — Norsk' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 38, + "column": 25, + "kind": "string_literal", + "text": "da — Dansk", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'da', label: 'da — Dansk' }," + }, + { + "file": "src/pages/admin/AdminLanguagesPage.tsx", + "line": 65, + "column": 57, + "kind": "string_literal", + "text": "Laden fehlgeschlagen", + "context": "string literal", + "line_content": " setError(e.response?.data?.detail || e.message || 'Laden fehlgeschlagen');" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 49, + "column": 46, + "kind": "string_literal", + "text": "Fehler beim Laden der Logs", + "context": "string literal", + "line_content": " setError(err.response?.data?.detail || 'Fehler beim Laden der Logs');" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 81, + "column": 46, + "kind": "string_literal", + "text": "Fehler beim Download", + "context": "string literal", + "line_content": " setError(err.response?.data?.detail || 'Fehler beim Download');" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 107, + "column": 44, + "kind": "jsx_text", + "text": "Gateway Logs", + "context": "between tags, user-visible text node", + "line_content": "

Gateway Logs

" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 111, + "column": 17, + "kind": "string_literal", + "text": "Keine Logs geladen", + "context": "string literal", + "line_content": " : 'Keine Logs geladen'}" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 112, + "column": 64, + "kind": "jsx_text", + "text": "— {logDir}", + "context": "between tags, user-visible text node", + "line_content": " {logDir && — {logDir}}" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 120, + "column": 19, + "kind": "string_literal", + "text": "Log herunterladen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Log herunterladen\"" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 139, + "column": 53, + "kind": "jsx_text", + "text": "Einträge", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 182, + "column": 46, + "kind": "jsx_text", + "text": "Keine Logs geladen", + "context": "between tags, user-visible text node", + "line_content": "

Keine Logs geladen

" + }, + { + "file": "src/pages/admin/AdminLogsPage.tsx", + "line": 191, + "column": 19, + "kind": "jsx_text", + "text": "Logs werden geladen...", + "context": "between tags, user-visible text node", + "line_content": " Logs werden geladen..." + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 14, + "column": 15, + "kind": "string_literal", + "text": "Cleanup Duplicates", + "context": "string literal", + "line_content": " * Includes a \"Cleanup Duplicates\" tool to find and remove duplicate AccessRules." + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 180, + "column": 70, + "kind": "string_literal", + "text": "Fehler beim Laden der Duplikate", + "context": "string literal", + "line_content": " setCleanupError(err?.response?.data?.detail || err?.message || 'Fehler beim Laden der Duplikate');" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 200, + "column": 70, + "kind": "string_literal", + "text": "Fehler beim Bereinigen", + "context": "string literal", + "line_content": " setCleanupError(err?.response?.data?.detail || err?.message || 'Fehler beim Bereinigen');" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 215, + "column": 32, + "kind": "string_literal", + "text": "Mandanten-Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'mandate', label: 'Mandanten-Rollen' }," + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 216, + "column": 28, + "kind": "string_literal", + "text": "Alle (inkl. Templates)", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'all', label: 'Alle (inkl. Templates)' }," + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 217, + "column": 31, + "kind": "string_literal", + "text": "Nur Templates", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'global', label: 'Nur Templates' }," + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 225, + "column": 46, + "kind": "jsx_text", + "text": "Fehler beim Laden: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler beim Laden: {error}

" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 252, + "column": 19, + "kind": "string_literal", + "text": "Doppelte Regeln finden und bereinigen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Doppelte Regeln finden und bereinigen\"" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 313, + "column": 17, + "kind": "jsx_text", + "text": "Lade Rollen...", + "context": "between tags, user-visible text node", + "line_content": " Lade Rollen..." + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 321, + "column": 14, + "kind": "jsx_text", + "text": "Keine Rollen gefunden", + "context": "between tags, user-visible text node", + "line_content": "

Keine Rollen gefunden

" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 324, + "column": 17, + "kind": "string_literal", + "text": "Es gibt noch keine Mandanten-Rollen. System-Rollen werden bei der Mandant-Erstellung automatisch kopiert.", + "context": "string literal", + "line_content": " ? 'Es gibt noch keine Mandanten-Rollen. System-Rollen werden bei der Mandant-Erstellung automatisch kopiert.'" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 326, + "column": 17, + "kind": "string_literal", + "text": "Es gibt noch keine Rollen-Templates.", + "context": "string literal", + "line_content": " ? 'Es gibt noch keine Rollen-Templates.'" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 327, + "column": 17, + "kind": "string_literal", + "text": "Es gibt noch keine Rollen für diesen Mandanten.", + "context": "string literal", + "line_content": " : 'Es gibt noch keine Rollen für diesen Mandanten.'}" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 402, + "column": 52, + "kind": "string_literal", + "text": "Analysiere Duplikate...", + "context": "string literal", + "line_content": " {cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 402, + "column": 80, + "kind": "string_literal", + "text": "Bereinige Duplikate...", + "context": "string literal", + "line_content": " {cleanupPhase === 'idle' ? 'Analysiere Duplikate...' : 'Bereinige Duplikate...'}" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 436, + "column": 66, + "kind": "string_literal", + "text": "Zu loeschen", + "context": "string literal", + "line_content": " {cleanupPhase === 'done' ? 'Geloescht' : 'Zu loeschen'}" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 445, + "column": 75, + "kind": "jsx_text", + "text": "doppelte Regeln wurden erfolgreich entfernt.", + "context": "between tags, user-visible text node", + "line_content": " {cleanupResult.deletedCount} doppelte Regeln wurden erfolgreich entfernt." + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 452, + "column": 29, + "kind": "jsx_text", + "text": "Keine Duplikate gefunden. Alles sauber!", + "context": "between tags, user-visible text node", + "line_content": " Keine Duplikate gefunden. Alles sauber!" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 515, + "column": 70, + "kind": "string_literal", + "text": "Zu reparieren", + "context": "string literal", + "line_content": " {cleanupPhase === 'done' ? 'Repariert' : 'Zu reparieren'}" + }, + { + "file": "src/pages/admin/AdminMandateRolePermissionsPage.tsx", + "line": 566, + "column": 29, + "kind": "jsx_text", + "text": "Keine fehlerhaften Template-Rollen-Zuweisungen.", + "context": "between tags, user-visible text node", + "line_content": " Keine fehlerhaften Template-Rollen-Zuweisungen." + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 102, + "column": 14, + "kind": "string_literal", + "text": "Bezeichnung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Bezeichnung'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 111, + "column": 14, + "kind": "string_literal", + "text": "Beschreibung", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Beschreibung'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 120, + "column": 14, + "kind": "string_literal", + "text": "Geltungsbereich", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Geltungsbereich'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 161, + "column": 16, + "kind": "string_literal", + "text": "Geltungsbereich", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Geltungsbereich'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 166, + "column": 38, + "kind": "string_literal", + "text": "Nur dieser Mandant", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'mandate', label: 'Nur dieser Mandant' }," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 167, + "column": 37, + "kind": "string_literal", + "text": "Template (wird bei neuen Mandanten kopiert)", + "context": "object property label: (e.g. table column)", + "line_content": " { value: 'global', label: 'Template (wird bei neuen Mandanten kopiert)' }," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 216, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Erstellen der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Erstellen der Rolle');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 220, + "column": 42, + "kind": "string_literal", + "text": "Fehler beim Erstellen der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', err.message || 'Fehler beim Erstellen der Rolle');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 255, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Aktualisieren der Rolle');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 259, + "column": 42, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', err.message || 'Fehler beim Aktualisieren der Rolle');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 268, + "column": 19, + "kind": "string_literal", + "text": "Nicht erlaubt", + "context": "string literal", + "line_content": " showWarning('Nicht erlaubt', 'System-Rollen können nicht gelöscht werden.');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 268, + "column": 36, + "kind": "string_literal", + "text": "System-Rollen können nicht gelöscht werden.", + "context": "string literal", + "line_content": " showWarning('Nicht erlaubt', 'System-Rollen können nicht gelöscht werden.');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 277, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Löschen der Rolle", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Löschen der Rolle');" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 300, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 314, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie System-, globale und mandantenspezifische Rollen", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie System-, globale und mandantenspezifische Rollen

" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 346, + "column": 30, + "kind": "jsx_text", + "text": "-- Mandant wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 364, + "column": 33, + "kind": "jsx_text", + "text": "Alle (inkl. Templates)", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 365, + "column": 36, + "kind": "jsx_text", + "text": "Nur Templates", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 404, + "column": 45, + "kind": "jsx_text", + "text": "Kein Mandant ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Mandant ausgewählt

" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 426, + "column": 24, + "kind": "string_literal", + "text": "Rolle bearbeiten", + "context": "string literal", + "line_content": " title: 'Rolle bearbeiten'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 427, + "column": 88, + "kind": "string_literal", + "text": "System-Rollen können nicht bearbeitet werden", + "context": "string literal", + "line_content": " disabled: (row: Role) => row.isSystemRole ? { disabled: true, message: 'System-Rollen können nicht bearbeitet werden' } : false" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 431, + "column": 24, + "kind": "string_literal", + "text": "Rolle löschen", + "context": "string literal", + "line_content": " title: 'Rolle löschen'," + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 432, + "column": 88, + "kind": "string_literal", + "text": "System-Rollen können nicht gelöscht werden", + "context": "string literal", + "line_content": " disabled: (row: Role) => row.isSystemRole ? { disabled: true, message: 'System-Rollen können nicht gelöscht werden' } : false" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 441, + "column": 26, + "kind": "string_literal", + "text": "Keine Rollen gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Rollen gefunden\"" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 451, + "column": 49, + "kind": "jsx_text", + "text": "Neue Rolle erstellen", + "context": "between tags, user-visible text node", + "line_content": "

Neue Rolle erstellen

" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 463, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 471, + "column": 68, + "kind": "string_literal", + "text": "Rolle erstellen", + "context": "string literal", + "line_content": " submitButtonText={isSubmitting ? 'Erstelle...' : 'Rolle erstellen'}" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 485, + "column": 49, + "kind": "jsx_text", + "text": "Rolle bearbeiten: {editingRole.roleLabel}", + "context": "between tags, user-visible text node", + "line_content": "

Rolle bearbeiten: {editingRole.roleLabel}

" + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 497, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminMandateRolesPage.tsx", + "line": 504, + "column": 95, + "kind": "string_literal", + "text": "Template (global)", + "context": "string literal", + "line_content": " Geltungsbereich: {editingRole.mandateId ? 'Mandanten-Instanz' : 'Template (global)'}" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 76, + "column": 9, + "kind": "string_literal", + "text": "Abrechnungseinstellungen konnten nicht geladen werden. Nur Mandantendaten sind sicher bearbeitbar.", + "context": "string literal", + "line_content": " 'Abrechnungseinstellungen konnten nicht geladen werden. Nur Mandantendaten sind sicher bearbeitbar.'" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 88, + "column": 31, + "kind": "string_literal", + "text": "Mandant inkl. Abrechnungseinstellungen gespeichert.", + "context": "string literal", + "line_content": " showSuccess('Erstellt', 'Mandant inkl. Abrechnungseinstellungen gespeichert.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 92, + "column": 9, + "kind": "string_literal", + "text": "Mandant erstellt", + "context": "string literal", + "line_content": " 'Mandant erstellt'," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 93, + "column": 9, + "kind": "string_literal", + "text": "Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.", + "context": "string literal", + "line_content": " 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.'" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 108, + "column": 34, + "kind": "string_literal", + "text": "Mandant und Abrechnung aktualisiert.", + "context": "string literal", + "line_content": " showSuccess('Gespeichert', 'Mandant und Abrechnung aktualisiert.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 111, + "column": 19, + "kind": "string_literal", + "text": "Teilweise gespeichert", + "context": "string literal", + "line_content": " showWarning('Teilweise gespeichert', 'Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 111, + "column": 44, + "kind": "string_literal", + "text": "Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.", + "context": "string literal", + "line_content": " showWarning('Teilweise gespeichert', 'Mandant gespeichert, Abrechnung konnte nicht aktualisiert werden.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 123, + "column": 16, + "kind": "string_literal", + "text": "Mandant deaktivieren", + "context": "string literal", + "line_content": " { title: 'Mandant deaktivieren', confirmLabel: 'Deaktivieren', variant: 'danger', placeholder: mandate.name }," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 127, + "column": 34, + "kind": "string_literal", + "text": "Der eingegebene Name stimmt nicht überein.", + "context": "string literal", + "line_content": " showWarning('Abgebrochen', 'Der eingegebene Name stimmt nicht überein.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 135, + "column": 19, + "kind": "string_literal", + "text": "Nicht erlaubt", + "context": "string literal", + "line_content": " showWarning('Nicht erlaubt', 'System-Mandanten können nicht gelöscht werden.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 135, + "column": 36, + "kind": "string_literal", + "text": "System-Mandanten können nicht gelöscht werden.", + "context": "string literal", + "line_content": " showWarning('Nicht erlaubt', 'System-Mandanten können nicht gelöscht werden.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 140, + "column": 16, + "kind": "string_literal", + "text": "Hard Delete (irreversibel)", + "context": "string literal", + "line_content": " { title: 'Hard Delete (irreversibel)', confirmLabel: 'Endgültig löschen', variant: 'danger', placeholder: mandate.name }," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 140, + "column": 60, + "kind": "string_literal", + "text": "Endgültig löschen", + "context": "string literal", + "line_content": " { title: 'Hard Delete (irreversibel)', confirmLabel: 'Endgültig löschen', variant: 'danger', placeholder: mandate.name }," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 144, + "column": 34, + "kind": "string_literal", + "text": "Der eingegebene Name stimmt nicht überein.", + "context": "string literal", + "line_content": " showWarning('Abgebrochen', 'Der eingegebene Name stimmt nicht überein.');" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 149, + "column": 19, + "kind": "string_literal", + "text": "Gelöscht", + "context": "string literal", + "line_content": " showSuccess('Gelöscht', `Mandant \"${mandate.name}\" wurde endgültig gelöscht.`);" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 158, + "column": 46, + "kind": "jsx_text", + "text": "Fehler beim Laden der Mandanten: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler beim Laden der Mandanten: {error}

" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 172, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie alle Mandanten im System", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie alle Mandanten im System

" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 220, + "column": 24, + "kind": "string_literal", + "text": "Deaktivieren (Soft-Delete)", + "context": "string literal", + "line_content": " title: 'Deaktivieren (Soft-Delete)'," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 222, + "column": 48, + "kind": "string_literal", + "text": "System-Mandanten können nicht gelöscht werden", + "context": "string literal", + "line_content": " ? { disabled: true, message: 'System-Mandanten können nicht gelöscht werden' }" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 230, + "column": 22, + "kind": "string_literal", + "text": "Hard Delete (irreversibel)", + "context": "string literal", + "line_content": " title: 'Hard Delete (irreversibel)'," + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 232, + "column": 46, + "kind": "string_literal", + "text": "System-Mandanten können nicht gelöscht werden", + "context": "string literal", + "line_content": " ? { disabled: true, message: 'System-Mandanten können nicht gelöscht werden' }" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 244, + "column": 26, + "kind": "string_literal", + "text": "Keine Mandanten gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Mandanten gefunden\"" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 253, + "column": 49, + "kind": "jsx_text", + "text": "Neuer Mandant", + "context": "between tags, user-visible text node", + "line_content": "

Neuer Mandant

" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 269, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 299, + "column": 49, + "kind": "jsx_text", + "text": "Mandant bearbeiten", + "context": "between tags, user-visible text node", + "line_content": "

Mandant bearbeiten

" + }, + { + "file": "src/pages/admin/AdminMandatesPage.tsx", + "line": 330, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 105, + "column": 65, + "kind": "string_literal", + "text": "Failed to fetch users", + "context": "string literal", + "line_content": " setError(err?.response?.data?.detail || err?.message || 'Failed to fetch users');" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 133, + "column": 65, + "kind": "string_literal", + "text": "Failed to fetch overview", + "context": "string literal", + "line_content": " setError(err?.response?.data?.detail || err?.message || 'Failed to fetch overview');" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 200, + "column": 45, + "kind": "string_literal", + "text": "Dieser Benutzer ist SysAdmin und hat vollen Systemzugriff.", + "context": "string literal", + "line_content": " {overview.sysAdminNote || 'Dieser Benutzer ist SysAdmin und hat vollen Systemzugriff.'}" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 207, + "column": 43, + "kind": "jsx_text", + "text": "Keine Mandate-Zuordnungen vorhanden.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Mandate-Zuordnungen vorhanden.

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 231, + "column": 57, + "kind": "jsx_text", + "text": "Keine Rollen direkt am Mandanten.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Rollen direkt am Mandanten.

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 256, + "column": 57, + "kind": "jsx_text", + "text": "Keine Feature-Instanzen zugewiesen.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanzen zugewiesen.

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 358, + "column": 17, + "kind": "jsx_text", + "text": "UI-Zugriffsrechte bestimmen, welche Seiten und Views der Benutzer sehen kann.", + "context": "between tags, user-visible text node", + "line_content": " UI-Zugriffsrechte bestimmen, welche Seiten und Views der Benutzer sehen kann." + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 364, + "column": 47, + "kind": "jsx_text", + "text": "Keine UI-Berechtigungen", + "context": "between tags, user-visible text node", + "line_content": "

Keine UI-Berechtigungen

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 375, + "column": 103, + "kind": "jsx_text", + "text": "Gewährt durch", + "context": "between tags, user-visible text node", + "line_content": " Gewährt durch" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 383, + "column": 35, + "kind": "string_literal", + "text": "1px solid var(--border-color)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--border-color)'," + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 425, + "column": 47, + "kind": "jsx_text", + "text": "Keine Daten-Berechtigungen", + "context": "between tags, user-visible text node", + "line_content": "

Keine Daten-Berechtigungen

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 438, + "column": 120, + "kind": "jsx_text", + "text": "Löschen", + "context": "between tags, user-visible text node", + "line_content": " Löschen" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 439, + "column": 103, + "kind": "jsx_text", + "text": "Gewährt durch", + "context": "between tags, user-visible text node", + "line_content": " Gewährt durch" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 447, + "column": 35, + "kind": "string_literal", + "text": "1px solid var(--border-color)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--border-color)'," + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 521, + "column": 17, + "kind": "jsx_text", + "text": "Ressourcen-Zugriffsrechte bestimmen, welche System-Ressourcen (z.B. AI-Modelle) der Benutzer verwenden kann.", + "context": "between tags, user-visible text node", + "line_content": " Ressourcen-Zugriffsrechte bestimmen, welche System-Ressourcen (z.B. AI-Modelle) der Benutzer verwenden kann." + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 527, + "column": 47, + "kind": "jsx_text", + "text": "Keine Ressourcen-Berechtigungen", + "context": "between tags, user-visible text node", + "line_content": "

Keine Ressourcen-Berechtigungen

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 538, + "column": 103, + "kind": "jsx_text", + "text": "Gewährt durch", + "context": "between tags, user-visible text node", + "line_content": " Gewährt durch" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 546, + "column": 35, + "kind": "string_literal", + "text": "1px solid var(--border-color)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--border-color)'," + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 577, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 593, + "column": 44, + "kind": "jsx_text", + "text": "Benutzer-Zugriffsübersicht", + "context": "between tags, user-visible text node", + "line_content": "

Benutzer-Zugriffsübersicht

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 594, + "column": 46, + "kind": "jsx_text", + "text": "Zeigt alle Berechtigungen eines Benutzers an", + "context": "between tags, user-visible text node", + "line_content": "

Zeigt alle Berechtigungen eines Benutzers an

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 612, + "column": 30, + "kind": "jsx_text", + "text": "-- Benutzer wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 616, + "column": 37, + "kind": "string_literal", + "text": " [SysAdmin]", + "context": "string literal", + "line_content": " {user.isSysAdmin && ' [SysAdmin]'}" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 637, + "column": 45, + "kind": "jsx_text", + "text": "Benutzer auswählen", + "context": "between tags, user-visible text node", + "line_content": "

Benutzer auswählen

" + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 645, + "column": 17, + "kind": "jsx_text", + "text": "Lade Zugriffsübersicht...", + "context": "between tags, user-visible text node", + "line_content": " Lade Zugriffsübersicht..." + }, + { + "file": "src/pages/admin/AdminUserAccessOverviewPage.tsx", + "line": 669, + "column": 27, + "kind": "string_literal", + "text": "1px solid var(--border-color)", + "context": "string literal", + "line_content": " borderBottom: '1px solid var(--border-color)'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 100, + "column": 16, + "kind": "string_literal", + "text": "Benutzername", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzername'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 109, + "column": 16, + "kind": "string_literal", + "text": "E-Mail", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'E-Mail'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 118, + "column": 16, + "kind": "string_literal", + "text": "Vollständiger Name", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Vollständiger Name'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 127, + "column": 16, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 140, + "column": 16, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiv'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 211, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Hinzufügen des Benutzers", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Hinzufügen des Benutzers');" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 228, + "column": 45, + "kind": "string_literal", + "text": "Fehler beim Aktualisieren der Rollen", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Aktualisieren der Rollen');" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 240, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Entfernen des Benutzers", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Entfernen des Benutzers');" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 263, + "column": 46, + "kind": "jsx_text", + "text": "Fehler: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler: {error}

" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 277, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie, welche Benutzer Zugriff auf welche Mandanten haben", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie, welche Benutzer Zugriff auf welche Mandanten haben

" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 293, + "column": 30, + "kind": "jsx_text", + "text": "-- Mandant wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 326, + "column": 45, + "kind": "jsx_text", + "text": "Kein Mandant ausgewählt", + "context": "between tags, user-visible text node", + "line_content": "

Kein Mandant ausgewählt

" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 348, + "column": 24, + "kind": "string_literal", + "text": "Rollen bearbeiten", + "context": "string literal", + "line_content": " title: 'Rollen bearbeiten'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 352, + "column": 24, + "kind": "string_literal", + "text": "Aus Mandant entfernen", + "context": "string literal", + "line_content": " title: 'Aus Mandant entfernen'," + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 369, + "column": 26, + "kind": "string_literal", + "text": "Keine Mitglieder gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Mitglieder gefunden\"" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 379, + "column": 49, + "kind": "jsx_text", + "text": "Benutzer zum Mandanten hinzufügen", + "context": "between tags, user-visible text node", + "line_content": "

Benutzer zum Mandanten hinzufügen

" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 389, + "column": 20, + "kind": "jsx_text", + "text": "Alle Benutzer sind bereits diesem Mandanten zugewiesen.", + "context": "between tags, user-visible text node", + "line_content": "

Alle Benutzer sind bereits diesem Mandanten zugewiesen.

" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 393, + "column": 25, + "kind": "jsx_text", + "text": "Lade Rollen...", + "context": "between tags, user-visible text node", + "line_content": " Lade Rollen..." + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 401, + "column": 52, + "kind": "string_literal", + "text": "Hinzufügen...", + "context": "string literal", + "line_content": " submitButtonText={isSubmitting ? 'Hinzufügen...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 401, + "column": 70, + "kind": "string_literal", + "text": "Hinzufügen", + "context": "string literal", + "line_content": " submitButtonText={isSubmitting ? 'Hinzufügen...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/admin/AdminUserMandatesPage.tsx", + "line": 415, + "column": 49, + "kind": "jsx_text", + "text": "Rollen bearbeiten: {editingUser.username}", + "context": "between tags, user-visible text node", + "line_content": "

Rollen bearbeiten: {editingUser.username}

" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 131, + "column": 46, + "kind": "jsx_text", + "text": "Fehler beim Laden der Benutzer: {error}", + "context": "between tags, user-visible text node", + "line_content": "

Fehler beim Laden der Benutzer: {error}

" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 145, + "column": 46, + "kind": "jsx_text", + "text": "Verwalten Sie alle Benutzer im System", + "context": "between tags, user-visible text node", + "line_content": "

Verwalten Sie alle Benutzer im System

" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 200, + "column": 24, + "kind": "string_literal", + "text": "Löschen", + "context": "string literal", + "line_content": " title: 'Löschen'," + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 208, + "column": 24, + "kind": "string_literal", + "text": "Passwort-Link senden", + "context": "string literal", + "line_content": " title: 'Passwort-Link senden'," + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 221, + "column": 26, + "kind": "string_literal", + "text": "Keine Benutzer gefunden", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Benutzer gefunden\"" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 230, + "column": 49, + "kind": "jsx_text", + "text": "Neuer Benutzer", + "context": "between tags, user-visible text node", + "line_content": "

Neuer Benutzer

" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 242, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 264, + "column": 49, + "kind": "jsx_text", + "text": "Benutzer bearbeiten", + "context": "between tags, user-visible text node", + "line_content": "

Benutzer bearbeiten

" + }, + { + "file": "src/pages/admin/AdminUsersPage.tsx", + "line": 276, + "column": 25, + "kind": "jsx_text", + "text": "Lade Formular...", + "context": "between tags, user-visible text node", + "line_content": " Lade Formular..." + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 14, + "column": 14, + "kind": "string_literal", + "text": "Anthropic (Claude)", + "context": "string literal", + "line_content": " anthropic: 'Anthropic (Claude)'," + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 15, + "column": 11, + "kind": "string_literal", + "text": "OpenAI (GPT)", + "context": "string literal", + "line_content": " openai: 'OpenAI (GPT)'," + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 17, + "column": 11, + "kind": "string_literal", + "text": "Tavily (Web Search)", + "context": "string literal", + "line_content": " tavily: 'Tavily (Web Search)'," + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 18, + "column": 15, + "kind": "string_literal", + "text": "Private LLM", + "context": "string literal", + "line_content": " privatellm: 'Private LLM'," + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 57, + "column": 34, + "kind": "string_literal", + "text": "Althaus Preprocessor", + "context": "object property label: (e.g. table column)", + "line_content": " { id: 'preprocessor', label: 'Althaus Preprocessor', value: 'preprocessor' }" + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 113, + "column": 17, + "kind": "jsx_text", + "text": "Web Research aktivieren (Tavily)", + "context": "between tags, user-visible text node", + "line_content": " Web Research aktivieren (Tavily)" + }, + { + "file": "src/pages/admin/ChatbotConfigSection.tsx", + "line": 158, + "column": 23, + "kind": "string_literal", + "text": "Benutzerdefinierter System-Prompt für den Chatbot...", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"Benutzerdefinierter System-Prompt für den Chatbot...\"" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 115, + "column": 19, + "kind": "string_literal", + "text": "Benutzer hinzugefügt", + "context": "string literal", + "line_content": " showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde der Instanz hinzugefügt.');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 115, + "column": 43, + "kind": "string_literal", + "text": "Der Benutzer wurde der Instanz hinzugefügt.", + "context": "string literal", + "line_content": " showSuccess('Benutzer hinzugefügt', 'Der Benutzer wurde der Instanz hinzugefügt.');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 117, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Hinzufügen", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Hinzufügen');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 126, + "column": 19, + "kind": "string_literal", + "text": "Benutzer entfernt", + "context": "string literal", + "line_content": " showSuccess('Benutzer entfernt', `\"${user.username}\" wurde entfernt.`);" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 128, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Entfernen", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Entfernen');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 146, + "column": 35, + "kind": "string_literal", + "text": "Rollen und Status wurden gespeichert.", + "context": "string literal", + "line_content": " showSuccess('Aktualisiert', 'Rollen und Status wurden gespeichert.');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 148, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Speichern", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Speichern');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 160, + "column": 11, + "kind": "string_literal", + "text": "Rollen synchronisiert", + "context": "string literal", + "line_content": " 'Rollen synchronisiert'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 164, + "column": 45, + "kind": "string_literal", + "text": "Synchronisierung fehlgeschlagen", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Synchronisierung fehlgeschlagen');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 175, + "column": 19, + "kind": "string_literal", + "text": "Instanz aktualisiert", + "context": "string literal", + "line_content": " showSuccess('Instanz aktualisiert', 'Einstellungen wurden gespeichert.');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 175, + "column": 43, + "kind": "string_literal", + "text": "Einstellungen wurden gespeichert.", + "context": "string literal", + "line_content": " showSuccess('Instanz aktualisiert', 'Einstellungen wurden gespeichert.');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 177, + "column": 43, + "kind": "string_literal", + "text": "Fehler beim Speichern", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Fehler beim Speichern');" + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 185, + "column": 16, + "kind": "string_literal", + "text": "Benutzer", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzer'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 195, + "column": 16, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 208, + "column": 16, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 215, + "column": 16, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiv'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 226, + "column": 14, + "kind": "string_literal", + "text": "Benutzer", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Benutzer'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 232, + "column": 21, + "kind": "jsx_text", + "text": "Lade Benutzer...", + "context": "between tags, user-visible text node", + "line_content": " Lade Benutzer..." + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 248, + "column": 14, + "kind": "string_literal", + "text": "Rollen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Rollen'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 272, + "column": 14, + "kind": "string_literal", + "text": "Einstellungen", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Einstellungen'," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 277, + "column": 64, + "kind": "string_literal", + "text": "Bezeichnung", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'label', type: 'string' as const, label: 'Bezeichnung', required: true, editable: true }," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 278, + "column": 67, + "kind": "string_literal", + "text": "Aktiviert", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'enabled', type: 'boolean' as const, label: 'Aktiviert', required: false, editable: true }," + }, + { + "file": "src/pages/admin/InstanceDetailModal.tsx", + "line": 302, + "column": 92, + "kind": "string_literal", + "text": "Schließen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 461, + "column": 67, + "kind": "jsx_text", + "text": "Einladungen hinzufügen", + "context": "between tags, user-visible text node", + "line_content": "

Einladungen hinzufügen

" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 487, + "column": 55, + "kind": "jsx_text", + "text": "E-Mail (optional)", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 493, + "column": 33, + "kind": "string_literal", + "text": "beispiel@firma.com", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"beispiel@firma.com\"" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 497, + "column": 55, + "kind": "jsx_text", + "text": "Benutzername (optional)", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 504, + "column": 33, + "kind": "string_literal", + "text": "z. B. vorname.nachname", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"z. B. vorname.nachname\"" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 512, + "column": 57, + "kind": "jsx_text", + "text": "Rolle{inviteType === 'featureInstance' ? ' (pro Instanz)' : ''} *", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 512, + "column": 98, + "kind": "string_literal", + "text": " (pro Instanz)", + "context": "string literal", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 552, + "column": 55, + "kind": "jsx_text", + "text": "Bestehender Benutzer *", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 559, + "column": 38, + "kind": "jsx_text", + "text": "-- Benutzer wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 566, + "column": 141, + "kind": "jsx_text", + "text": "Keine weiteren Benutzer verfügbar.", + "context": "between tags, user-visible text node", + "line_content": " {availableExistingUsers.length === 0 &&

Keine weiteren Benutzer verfügbar.

}" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 570, + "column": 57, + "kind": "jsx_text", + "text": "Rolle *", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 644, + "column": 101, + "kind": "jsx_text", + "text": "Noch keine Einladungen hinzugefügt.", + "context": "between tags, user-visible text node", + "line_content": "

Noch keine Einladungen hinzugefügt.

" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 649, + "column": 71, + "kind": "jsx_text", + "text": "setStep(2)}>← Zurück", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 666, + "column": 63, + "kind": "string_literal", + "text": "Einladung zum Mandanten", + "context": "string literal", + "line_content": " Art: {inviteType === 'mandate' ? 'Einladung zum Mandanten' : 'Einladung zur Feature-Instanz'}" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 666, + "column": 91, + "kind": "string_literal", + "text": "Einladung zur Feature-Instanz", + "context": "string literal", + "line_content": " Art: {inviteType === 'mandate' ? 'Einladung zum Mandanten' : 'Einladung zur Feature-Instanz'}" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 677, + "column": 21, + "kind": "jsx_text", + "text": "Einladungen ({invitees.length}):", + "context": "between tags, user-visible text node", + "line_content": " Einladungen ({invitees.length}):" + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 689, + "column": 71, + "kind": "jsx_text", + "text": "setStep(3)}>← Zurück", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminInvitationWizardPage.tsx", + "line": 695, + "column": 28, + "kind": "string_literal", + "text": "Wird versendet...", + "context": "string literal", + "line_content": " {isLoading ? 'Wird versendet...' : `${invitees.length} Einladungen versenden`}" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 84, + "column": 61, + "kind": "string_literal", + "text": "", + "context": "object property label: (e.g. table column)", + "line_content": " const [instanceForm, setInstanceForm] = useState({ label: '', enabled: true });" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 136, + "column": 16, + "kind": "string_literal", + "text": "Fehler beim Laden der Mandanten", + "context": "string literal", + "line_content": " setError('Fehler beim Laden der Mandanten');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 230, + "column": 11, + "kind": "string_literal", + "text": "Mandant erstellt", + "context": "string literal", + "line_content": " 'Mandant erstellt'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 231, + "column": 11, + "kind": "string_literal", + "text": "Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.", + "context": "string literal", + "line_content": " 'Abrechnungseinstellungen konnten nicht gespeichert werden. Bitte unter Administration → Abrechnung nachpflegen.'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 237, + "column": 33, + "kind": "string_literal", + "text": "Mandant inkl. Abrechnung gespeichert", + "context": "string literal", + "line_content": " showSuccess('Erstellt', 'Mandant inkl. Abrechnung gespeichert');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 243, + "column": 59, + "kind": "string_literal", + "text": "Fehler beim Erstellen", + "context": "string literal", + "line_content": " setError(e?.response?.data?.detail || e?.message || 'Fehler beim Erstellen');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 267, + "column": 21, + "kind": "string_literal", + "text": "Hinzugefügt", + "context": "string literal", + "line_content": " showSuccess('Hinzugefügt', `${ok} Benutzer zum Mandanten hinzugefügt`);" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 272, + "column": 11, + "kind": "string_literal", + "text": "Teilweise fehlgeschlagen", + "context": "string literal", + "line_content": " 'Teilweise fehlgeschlagen'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 287, + "column": 31, + "kind": "string_literal", + "text": "Benutzer aus Mandant entfernt", + "context": "string literal", + "line_content": " showSuccess('Entfernt', 'Benutzer aus Mandant entfernt');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 290, + "column": 32, + "kind": "string_literal", + "text": "Fehler beim Entfernen", + "context": "string literal", + "line_content": " setError(result.error || 'Fehler beim Entfernen');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 306, + "column": 34, + "kind": "string_literal", + "text": "", + "context": "object property label: (e.g. table column)", + "line_content": " setInstanceForm({ label: '', enabled: true });" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 307, + "column": 33, + "kind": "string_literal", + "text": "Instance erstellt", + "context": "string literal", + "line_content": " showSuccess('Erstellt', 'Instance erstellt');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 310, + "column": 34, + "kind": "string_literal", + "text": "Fehler beim Erstellen (Limit erreicht?)", + "context": "string literal", + "line_content": " setError(result.error || 'Fehler beim Erstellen (Limit erreicht?)');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 321, + "column": 19, + "kind": "string_literal", + "text": "Gelöscht", + "context": "string literal", + "line_content": " showSuccess('Gelöscht', 'Instance gelöscht');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 321, + "column": 31, + "kind": "string_literal", + "text": "Instance gelöscht", + "context": "string literal", + "line_content": " showSuccess('Gelöscht', 'Instance gelöscht');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 324, + "column": 32, + "kind": "string_literal", + "text": "Fehler beim Löschen", + "context": "string literal", + "line_content": " setError(result.error || 'Fehler beim Löschen');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 346, + "column": 21, + "kind": "string_literal", + "text": "Hinzugefügt", + "context": "string literal", + "line_content": " showSuccess('Hinzugefügt', `${ok} Benutzer zur Feature-Instanz hinzugefügt`);" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 351, + "column": 11, + "kind": "string_literal", + "text": "Teilweise fehlgeschlagen", + "context": "string literal", + "line_content": " 'Teilweise fehlgeschlagen'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 368, + "column": 34, + "kind": "string_literal", + "text": "Rollen aktualisiert", + "context": "string literal", + "line_content": " showSuccess('Gespeichert', 'Rollen aktualisiert');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 373, + "column": 38, + "kind": "string_literal", + "text": "Rollen konnten nicht gespeichert werden", + "context": "string literal", + "line_content": " showError('Fehler', r.error || 'Rollen konnten nicht gespeichert werden');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 389, + "column": 34, + "kind": "string_literal", + "text": "Rollen aktualisiert", + "context": "string literal", + "line_content": " showSuccess('Gespeichert', 'Rollen aktualisiert');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 394, + "column": 38, + "kind": "string_literal", + "text": "Rollen konnten nicht gespeichert werden", + "context": "string literal", + "line_content": " showError('Fehler', r.error || 'Rollen konnten nicht gespeichert werden');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 403, + "column": 31, + "kind": "string_literal", + "text": "Benutzer aus Feature-Instanz entfernt", + "context": "string literal", + "line_content": " showSuccess('Entfernt', 'Benutzer aus Feature-Instanz entfernt');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 406, + "column": 32, + "kind": "string_literal", + "text": "Fehler beim Entfernen", + "context": "string literal", + "line_content": " setError(result.error || 'Fehler beim Entfernen');" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 483, + "column": 33, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 535, + "column": 45, + "kind": "jsx_text", + "text": "Benutzer * (mehrfach möglich)", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 540, + "column": 21, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 576, + "column": 47, + "kind": "jsx_text", + "text": "Rollen (für alle ausgewählten Benutzer)", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 604, + "column": 24, + "kind": "string_literal", + "text": "Hinzufügen...", + "context": "string literal", + "line_content": " {isLoading ? 'Hinzufügen...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 604, + "column": 42, + "kind": "string_literal", + "text": "Hinzufügen", + "context": "string literal", + "line_content": " {isLoading ? 'Hinzufügen...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 633, + "column": 25, + "kind": "string_literal", + "text": "background 0.2s", + "context": "string literal", + "line_content": " transition: 'background 0.2s'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 657, + "column": 13, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 671, + "column": 46, + "kind": "jsx_text", + "text": "Schritt-für-Schritt Wizard zur Mandanten-Konfiguration", + "context": "between tags, user-visible text node", + "line_content": "

Schritt-für-Schritt Wizard zur Mandanten-Konfiguration

" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 679, + "column": 19, + "kind": "string_literal", + "text": "1px solid var(--danger-color, #fecaca)", + "context": "string literal", + "line_content": " border: '1px solid var(--danger-color, #fecaca)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 691, + "column": 97, + "kind": "jsx_text", + "text": "Mandant auswählen oder erstellen", + "context": "between tags, user-visible text node", + "line_content": "

Mandant auswählen oder erstellen

" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 726, + "column": 25, + "kind": "jsx_text", + "text": "Formular wird geladen...", + "context": "between tags, user-visible text node", + "line_content": " Formular wird geladen..." + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 734, + "column": 66, + "kind": "string_literal", + "text": "Mandant erstellen", + "context": "string literal", + "line_content": " submitButtonText={isLoading ? 'Erstellen...' : 'Mandant erstellen'}" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 786, + "column": 23, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 836, + "column": 71, + "kind": "jsx_text", + "text": "setStep(1)}>← Zurück", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 858, + "column": 49, + "kind": "jsx_text", + "text": "Feature filtern:", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 864, + "column": 32, + "kind": "jsx_text", + "text": "Alle Features", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 875, + "column": 25, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 914, + "column": 53, + "kind": "jsx_text", + "text": "Feature *", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 921, + "column": 36, + "kind": "jsx_text", + "text": "-- Feature wählen --", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 933, + "column": 31, + "kind": "string_literal", + "text": "z.B. Kunde A", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"z.B. Kunde A\"" + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 954, + "column": 71, + "kind": "jsx_text", + "text": "setStep(2)}>← Zurück", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 1003, + "column": 23, + "kind": "string_literal", + "text": "1px solid var(--border-color, #e5e7eb)", + "context": "string literal", + "line_content": " border: '1px solid var(--border-color, #e5e7eb)'," + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 1058, + "column": 71, + "kind": "jsx_text", + "text": "setStep(3)}>← Zurück", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/admin/wizards/AdminMandateWizardPage.tsx", + "line": 1060, + "column": 37, + "kind": "string_literal", + "text": "Konfiguration abgeschlossen!", + "context": "string literal", + "line_content": " showSuccess('Fertig', 'Konfiguration abgeschlossen!');" + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 36, + "column": 26, + "kind": "string_literal", + "text": "Instanz erstellen", + "context": "string literal", + "line_content": " { id: 'create', title: 'Instanz erstellen' }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 38, + "column": 25, + "kind": "string_literal", + "text": "Benutzer (optional)", + "context": "string literal", + "line_content": " { id: 'users', title: 'Benutzer (optional)' }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 74, + "column": 35, + "kind": "string_literal", + "text": "Mandant", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'mandateId', label: 'Mandant', type: 'enum' as const, required: true, options: mandateOptions }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 75, + "column": 37, + "kind": "string_literal", + "text": "Feature", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'featureCode', label: 'Feature', type: 'enum' as const, required: true, options: featureOptions }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 76, + "column": 31, + "kind": "string_literal", + "text": "Bezeichnung", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'label', label: 'Bezeichnung', type: 'string' as const, required: true, editable: true }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 77, + "column": 33, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " { name: 'enabled', label: 'Aktiv', type: 'boolean' as const, required: false, editable: true }," + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 104, + "column": 45, + "kind": "string_literal", + "text": "Instanz konnte nicht erstellt werden", + "context": "string literal", + "line_content": " showError('Fehler', result.error || 'Instanz konnte nicht erstellt werden');" + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 152, + "column": 29, + "kind": "string_literal", + "text": "Feature-Instanz wurde erstellt und Benutzer zugewiesen.", + "context": "string literal", + "line_content": " showSuccess('Fertig', 'Feature-Instanz wurde erstellt und Benutzer zugewiesen.');" + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 155, + "column": 27, + "kind": "string_literal", + "text": "Einige Benutzer konnten nicht zugewiesen werden.", + "context": "string literal", + "line_content": " showError('Fehler', 'Einige Benutzer konnten nicht zugewiesen werden.');" + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 175, + "column": 45, + "kind": "jsx_text", + "text": "Neue Feature-Instanz", + "context": "between tags, user-visible text node", + "line_content": "

Neue Feature-Instanz

" + }, + { + "file": "src/pages/admin/wizards/FeatureInstanceWizard.tsx", + "line": 176, + "column": 92, + "kind": "string_literal", + "text": "Schließen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " " + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 362, + "column": 54, + "kind": "string_literal", + "text": "Wird archiviert...", + "context": "string literal", + "line_content": " {coach.actionLoading === 'archiving' ? 'Wird archiviert...' : 'Archivieren'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 387, + "column": 20, + "kind": "jsx_text", + "text": "Starte eine neue Coaching-Session zu diesem Thema.", + "context": "between tags, user-visible text node", + "line_content": "

Starte eine neue Coaching-Session zu diesem Thema.

" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 390, + "column": 60, + "kind": "jsx_text", + "text": "Gesprächspartner wählen:", + "context": "between tags, user-visible text node", + "line_content": " " + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 408, + "column": 23, + "kind": "string_literal", + "text": "Wird gestartet...", + "context": "string literal", + "line_content": " ? 'Wird gestartet...'" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 411, + "column": 25, + "kind": "string_literal", + "text": "Session starten", + "context": "string literal", + "line_content": " : 'Session starten'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 418, + "column": 57, + "kind": "jsx_text", + "text": "Session aktiv", + "context": "between tags, user-visible text node", + "line_content": " Session aktiv" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 432, + "column": 44, + "kind": "string_literal", + "text": "Stummschaltung aufheben", + "context": "string literal", + "line_content": " title={voice.muted ? 'Stummschaltung aufheben' : 'Stummschalten'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 434, + "column": 38, + "kind": "string_literal", + "text": "\\u{1F507} Stumm", + "context": "string literal", + "line_content": " {voice.muted ? '\\u{1F507} Stumm' : '\\u{1F3A4} Ton an'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 434, + "column": 58, + "kind": "string_literal", + "text": "\\u{1F3A4} Ton an", + "context": "string literal", + "line_content": " {voice.muted ? '\\u{1F507} Stumm' : '\\u{1F3A4} Ton an'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 437, + "column": 63, + "kind": "string_literal", + "text": "Wird abgeschlossen...", + "context": "string literal", + "line_content": " {coach.actionLoading === 'completing' ? 'Wird abgeschlossen...' : 'Abschliessen'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 440, + "column": 63, + "kind": "string_literal", + "text": "Wird abgebrochen...", + "context": "string literal", + "line_content": " {coach.actionLoading === 'cancelling' ? 'Wird abgebrochen...' : 'Abbrechen'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 469, + "column": 86, + "kind": "string_literal", + "text": "Coach denkt nach", + "context": "string literal", + "line_content": "
{coach.streamingStatus || 'Coach denkt nach'}...
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 489, + "column": 86, + "kind": "string_literal", + "text": "Tool-Aufrufe vorhanden", + "context": "string literal", + "line_content": " {coach.streamingStatus || (coach.agentToolCalls.length > 0 ? 'Tool-Aufrufe vorhanden' : 'Warte auf Agent')}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 489, + "column": 113, + "kind": "string_literal", + "text": "Warte auf Agent", + "context": "string literal", + "line_content": " {coach.streamingStatus || (coach.agentToolCalls.length > 0 ? 'Tool-Aufrufe vorhanden' : 'Warte auf Agent')}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 513, + "column": 115, + "kind": "string_literal", + "text": "läuft", + "context": "string literal", + "line_content": " {toolCall.success === true ? 'fertig' : toolCall.success === false ? 'fehler' : 'läuft'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 539, + "column": 27, + "kind": "string_literal", + "text": "Stumm – Mikrofon aus", + "context": "string literal", + "line_content": " ? 'Stumm – Mikrofon aus'" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 541, + "column": 55, + "kind": "string_literal", + "text": "Coach spricht...", + "context": "string literal", + "line_content": " ? (coach.streamingStatus || 'Coach spricht...')" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 543, + "column": 57, + "kind": "string_literal", + "text": "Coach denkt nach...", + "context": "string literal", + "line_content": " ? (coach.streamingStatus || 'Coach denkt nach...')" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 545, + "column": 33, + "kind": "string_literal", + "text": "Unterbrochen – Mikrofon an", + "context": "string literal", + "line_content": " ? 'Unterbrochen – Mikrofon an'" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 547, + "column": 74, + "kind": "string_literal", + "text": "Mikrofon an – bitte sprechen", + "context": "string literal", + "line_content": " ? (voice.liveTranscript ? 'Spricht...' : 'Mikrofon an – bitte sprechen')" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 548, + "column": 35, + "kind": "string_literal", + "text": "Mikrofon wird gestartet...", + "context": "string literal", + "line_content": " : 'Mikrofon wird gestartet...'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 602, + "column": 35, + "kind": "string_literal", + "text": "Nachricht eingeben...", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"Nachricht eingeben...\"" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 616, + "column": 33, + "kind": "string_literal", + "text": "Datei anhängen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Datei anhängen\"" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 641, + "column": 147, + "kind": "jsx_text", + "text": "Dateien anhängen", + "context": "between tags, user-visible text node", + "line_content": "
Dateien anhängen
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 671, + "column": 33, + "kind": "string_literal", + "text": "Datenquellen anhängen", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " title=\"Datenquellen anhängen\"" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 698, + "column": 151, + "kind": "jsx_text", + "text": "Persönliche Quellen", + "context": "between tags, user-visible text node", + "line_content": "
Persönliche Quellen
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 775, + "column": 29, + "kind": "string_literal", + "text": "Neue Aufgabe...", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": " placeholder=\"Neue Aufgabe...\"" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 781, + "column": 57, + "kind": "string_literal", + "text": "Wird hinzugefügt...", + "context": "string literal", + "line_content": " {coach.actionLoading === 'addingTask' ? 'Wird hinzugefügt...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 781, + "column": 81, + "kind": "string_literal", + "text": "Hinzufügen", + "context": "string literal", + "line_content": " {coach.actionLoading === 'addingTask' ? 'Wird hinzugefügt...' : 'Hinzufügen'}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 785, + "column": 48, + "kind": "jsx_text", + "text": "Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.", + "context": "between tags, user-visible text node", + "line_content": "
Noch keine Aufgaben. Der Coach schlägt während Sessions Aufgaben vor.
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 814, + "column": 48, + "kind": "jsx_text", + "text": "Noch keine abgeschlossenen Sessions.", + "context": "between tags, user-visible text node", + "line_content": "
Noch keine abgeschlossenen Sessions.
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 824, + "column": 91, + "kind": "jsx_text", + "text": "Score: {Math.round(s.competenceScore)}", + "context": "between tags, user-visible text node", + "line_content": " {s.competenceScore != null && Score: {Math.round(s.competenceScore)}}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 831, + "column": 46, + "kind": "jsx_text", + "text": "| Persona", + "context": "between tags, user-visible text node", + "line_content": " {s.personaId && | Persona}" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 849, + "column": 48, + "kind": "jsx_text", + "text": "Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.", + "context": "between tags, user-visible text node", + "line_content": "
Noch keine Bewertungen. Schliesse eine Session ab, um Scores zu erhalten.
" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 899, + "column": 45, + "kind": "string_literal", + "text": "Coaching (aktiv)", + "context": "string literal", + "line_content": " case 'coaching': return coach.session ? 'Coaching (aktiv)' : 'Coaching';" + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 925, + "column": 14, + "kind": "string_literal", + "text": "Einfühlungsvermögen", + "context": "string literal", + "line_content": " empathy: 'Einfühlungsvermögen', clarity: 'Klarheit'," + }, + { + "file": "src/pages/views/commcoach/CommcoachDossierView.tsx", + "line": 926, + "column": 47, + "kind": "string_literal", + "text": "Zuhören", + "context": "string literal", + "line_content": " assertiveness: 'Durchsetzung', listening: 'Zuhören'," + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 5, + "column": 69, + "kind": "string_literal", + "text": "Stimme & Sprache", + "context": "string literal", + "line_content": " * Voice/language settings are in user-level settings (/settings -> \"Stimme & Sprache\")." + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 45, + "column": 33, + "kind": "string_literal", + "text": "Fehler beim Laden", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Laden');" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 65, + "column": 18, + "kind": "string_literal", + "text": "Einstellungen gespeichert", + "context": "string literal", + "line_content": " setSuccess('Einstellungen gespeichert');" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 68, + "column": 31, + "kind": "string_literal", + "text": "Fehler beim Speichern", + "context": "string literal", + "line_content": " setError(err.message || 'Fehler beim Speichern');" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 75, + "column": 44, + "kind": "jsx_text", + "text": "Einstellungen werden geladen...", + "context": "between tags, user-visible text node", + "line_content": " return
Einstellungen werden geladen...
;" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 86, + "column": 45, + "kind": "jsx_text", + "text": "Stimme & Sprache", + "context": "between tags, user-visible text node", + "line_content": "

Stimme & Sprache

" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 91, + "column": 46, + "kind": "string_literal", + "text": "Stimme & Sprache", + "context": "string literal", + "line_content": " Benutzereinstellungen oeffnen (Tab \"Stimme & Sprache\")" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 121, + "column": 146, + "kind": "jsx_text", + "text": "Sessions gesamt", + "context": "between tags, user-visible text node", + "line_content": "
{profile.totalSessions}Sessions gesamt
" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 122, + "column": 145, + "kind": "jsx_text", + "text": "Minuten gesamt", + "context": "between tags, user-visible text node", + "line_content": "
{profile.totalMinutes}Minuten gesamt
" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 123, + "column": 143, + "kind": "jsx_text", + "text": "Aktueller Streak", + "context": "between tags, user-visible text node", + "line_content": "
{profile.streakDays}Aktueller Streak
" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 124, + "column": 146, + "kind": "jsx_text", + "text": "Laengster Streak", + "context": "between tags, user-visible text node", + "line_content": "
{profile.longestStreak}Laengster Streak
" + }, + { + "file": "src/pages/views/commcoach/CommcoachSettingsView.tsx", + "line": 130, + "column": 36, + "kind": "string_literal", + "text": "Einstellungen speichern", + "context": "string literal", + "line_content": " {saving ? 'Speichern...' : 'Einstellungen speichern'}" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorPage.tsx", + "line": 105, + "column": 13, + "kind": "jsx_text", + "text": "Graphical Editor", + "context": "between tags, user-visible text node", + "line_content": "

Graphical Editor

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorPage.tsx", + "line": 106, + "column": 12, + "kind": "jsx_text", + "text": "Keine Feature-Instanz gefunden.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanz gefunden.

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 80, + "column": 17, + "kind": "string_literal", + "text": "Fehler beim Laden der Vorlagen", + "context": "string literal", + "line_content": " showError('Fehler beim Laden der Vorlagen');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 95, + "column": 21, + "kind": "string_literal", + "text": "Vorlage gelöscht", + "context": "string literal", + "line_content": " showSuccess('Vorlage gelöscht');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 99, + "column": 44, + "kind": "string_literal", + "text": "Löschen fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Löschen fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 112, + "column": 21, + "kind": "string_literal", + "text": "Vorlage als Workflow kopiert", + "context": "string literal", + "line_content": " showSuccess('Vorlage als Workflow kopiert');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 114, + "column": 44, + "kind": "string_literal", + "text": "Kopieren fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Kopieren fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 131, + "column": 44, + "kind": "string_literal", + "text": "Scope-Änderung fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Scope-Änderung fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 144, + "column": 42, + "kind": "string_literal", + "text": "Neuer Name:", + "context": "string literal", + "line_content": " const newLabel = await promptInput('Neuer Name:', {" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 145, + "column": 16, + "kind": "string_literal", + "text": "Vorlage umbenennen", + "context": "string literal", + "line_content": " title: 'Vorlage umbenennen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 152, + "column": 21, + "kind": "string_literal", + "text": "Vorlage umbenannt", + "context": "string literal", + "line_content": " showSuccess('Vorlage umbenannt');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 155, + "column": 44, + "kind": "string_literal", + "text": "Umbenennen fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Umbenennen fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 170, + "column": 28, + "kind": "string_literal", + "text": "Vorlage", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'label', label: 'Vorlage', type: 'string', width: 220, sortable: true }," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 173, + "column": 14, + "kind": "string_literal", + "text": "Scope", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Scope'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 180, + "column": 14, + "kind": "string_literal", + "text": "Freigegeben", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Freigegeben'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 192, + "column": 14, + "kind": "string_literal", + "text": "Erstellt von", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Erstellt von'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 198, + "column": 14, + "kind": "string_literal", + "text": "Erstellt", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Erstellt'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 208, + "column": 12, + "kind": "jsx_text", + "text": "Keine Feature-Instanz gefunden.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanz gefunden.

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 259, + "column": 22, + "kind": "string_literal", + "text": "Im Editor öffnen", + "context": "string literal", + "line_content": " title: 'Im Editor öffnen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 264, + "column": 22, + "kind": "string_literal", + "text": "Löschen", + "context": "string literal", + "line_content": " title: 'Löschen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 278, + "column": 22, + "kind": "string_literal", + "text": "Als Workflow kopieren", + "context": "string literal", + "line_content": " title: 'Als Workflow kopieren'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 285, + "column": 22, + "kind": "string_literal", + "text": "Scope ändern", + "context": "string literal", + "line_content": " title: 'Scope ändern'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 293, + "column": 24, + "kind": "string_literal", + "text": "Keine Vorlagen gefunden. Erstelle eine Vorlage aus einem bestehenden Workflow.", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Vorlagen gefunden. Erstelle eine Vorlage aus einem bestehenden Workflow.\"" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 310, + "column": 72, + "kind": "string_literal", + "text": "translate(-50%, -50%)", + "context": "string literal", + "line_content": " position: 'fixed', top: '50%', left: '50%', transform: 'translate(-50%, -50%)'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorTemplatesPage.tsx", + "line": 316, + "column": 69, + "kind": "jsx_text", + "text": "Scope ändern", + "context": "between tags, user-visible text node", + "line_content": "

Scope ändern

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 71, + "column": 17, + "kind": "string_literal", + "text": "Fehler beim Laden der Workflows", + "context": "string literal", + "line_content": " showError('Fehler beim Laden der Workflows');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 86, + "column": 21, + "kind": "string_literal", + "text": "Workflow gelöscht", + "context": "string literal", + "line_content": " showSuccess('Workflow gelöscht');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 90, + "column": 44, + "kind": "string_literal", + "text": "Löschen fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Löschen fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 117, + "column": 28, + "kind": "string_literal", + "text": "Workflow aktiviert", + "context": "string literal", + "line_content": " showSuccess(next ? 'Workflow aktiviert' : 'Workflow deaktiviert');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 117, + "column": 51, + "kind": "string_literal", + "text": "Workflow deaktiviert", + "context": "string literal", + "line_content": " showSuccess(next ? 'Workflow aktiviert' : 'Workflow deaktiviert');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 120, + "column": 44, + "kind": "string_literal", + "text": "Status-Update fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Status-Update fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 131, + "column": 42, + "kind": "string_literal", + "text": "Neuer Name:", + "context": "string literal", + "line_content": " const newLabel = await promptInput('Neuer Name:', {" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 132, + "column": 16, + "kind": "string_literal", + "text": "Workflow umbenennen", + "context": "string literal", + "line_content": " title: 'Workflow umbenennen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 139, + "column": 21, + "kind": "string_literal", + "text": "Workflow umbenannt", + "context": "string literal", + "line_content": " showSuccess('Workflow umbenannt');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 142, + "column": 44, + "kind": "string_literal", + "text": "Umbenennen fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Umbenennen fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 162, + "column": 25, + "kind": "string_literal", + "text": "Workflow gestartet und bei Human Task pausiert. Öffne Workflows & Tasks.", + "context": "string literal", + "line_content": " showSuccess('Workflow gestartet und bei Human Task pausiert. Öffne Workflows & Tasks.');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 164, + "column": 25, + "kind": "string_literal", + "text": "Workflow ausgeführt", + "context": "string literal", + "line_content": " showSuccess('Workflow ausgeführt');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 168, + "column": 38, + "kind": "string_literal", + "text": "Ausführung fehlgeschlagen", + "context": "string literal", + "line_content": " showError(result?.error || 'Ausführung fehlgeschlagen');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 171, + "column": 44, + "kind": "string_literal", + "text": "Ausführung fehlgeschlagen", + "context": "string literal", + "line_content": " showError(`Fehler: ${e?.message || 'Ausführung fehlgeschlagen'}`);" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 180, + "column": 28, + "kind": "string_literal", + "text": "Workflow", + "context": "object property label: (e.g. table column)", + "line_content": " { key: 'label', label: 'Workflow', type: 'string', width: 200, sortable: true }," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 183, + "column": 14, + "kind": "string_literal", + "text": "Aktiv", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Aktiv'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 195, + "column": 14, + "kind": "string_literal", + "text": "Läuft", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Läuft'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 207, + "column": 14, + "kind": "string_literal", + "text": "Steht bei", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Steht bei'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 217, + "column": 14, + "kind": "string_literal", + "text": "Erstellt", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Erstellt'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 224, + "column": 14, + "kind": "string_literal", + "text": "Zuletzt gestartet", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Zuletzt gestartet'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 231, + "column": 14, + "kind": "string_literal", + "text": "Läufe", + "context": "object property label: (e.g. table column)", + "line_content": " label: 'Läufe'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 247, + "column": 12, + "kind": "jsx_text", + "text": "Keine Feature-Instanz gefunden.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanz gefunden.

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 256, + "column": 44, + "kind": "jsx_text", + "text": "Gespeicherte Workflows", + "context": "between tags, user-visible text node", + "line_content": "

Gespeicherte Workflows

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 303, + "column": 22, + "kind": "string_literal", + "text": "Löschen", + "context": "string literal", + "line_content": " title: 'Löschen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 332, + "column": 22, + "kind": "string_literal", + "text": "Ausführen", + "context": "string literal", + "line_content": " title: 'Ausführen'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsPage.tsx", + "line": 340, + "column": 24, + "kind": "string_literal", + "text": "Keine Workflows gefunden. Erstelle einen im Editor.", + "context": "string literal", + "line_content": " emptyMessage=\"Keine Workflows gefunden. Erstelle einen im Editor.\"" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 34, + "column": 3, + "kind": "string_literal", + "text": "input.upload", + "context": "string literal", + "line_content": " 'input.upload': 'Upload'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 34, + "column": 19, + "kind": "string_literal", + "text": "Upload", + "context": "string literal", + "line_content": " 'input.upload': 'Upload'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 36, + "column": 19, + "kind": "string_literal", + "text": "Prüfung", + "context": "string literal", + "line_content": " 'input.review': 'Prüfung'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 38, + "column": 25, + "kind": "string_literal", + "text": "Bestätigung", + "context": "string literal", + "line_content": " 'input.confirmation': 'Bestätigung'," + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 159, + "column": 25, + "kind": "string_literal", + "text": "Workflow gestartet und bei Human Task pausiert.", + "context": "string literal", + "line_content": " showSuccess('Workflow gestartet und bei Human Task pausiert.');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 161, + "column": 25, + "kind": "string_literal", + "text": "Workflow gestartet", + "context": "string literal", + "line_content": " showSuccess('Workflow gestartet');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 165, + "column": 38, + "kind": "string_literal", + "text": "Ausführung fehlgeschlagen", + "context": "string literal", + "line_content": " showError(result?.error || 'Ausführung fehlgeschlagen');" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 169, + "column": 51, + "kind": "string_literal", + "text": "Ausführung fehlgeschlagen", + "context": "string literal", + "line_content": " (e as { message?: string })?.message ?? 'Ausführung fehlgeschlagen';" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 185, + "column": 12, + "kind": "jsx_text", + "text": "Keine Feature-Instanz gefunden.", + "context": "between tags, user-visible text node", + "line_content": "

Keine Feature-Instanz gefunden.

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 194, + "column": 12, + "kind": "jsx_text", + "text": "Lade Tasks…", + "context": "between tags, user-visible text node", + "line_content": "

Lade Tasks…

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 212, + "column": 39, + "kind": "jsx_text", + "text": "Keine offenen Tasks", + "context": "between tags, user-visible text node", + "line_content": "

Keine offenen Tasks

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 236, + "column": 17, + "kind": "jsx_text", + "text": "Erledigte Tasks", + "context": "between tags, user-visible text node", + "line_content": " Erledigte Tasks" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 244, + "column": 43, + "kind": "jsx_text", + "text": "Keine erledigten Tasks", + "context": "between tags, user-visible text node", + "line_content": "

Keine erledigten Tasks

" + }, + { + "file": "src/pages/views/graphicalEditor/GraphicalEditorWorkflowsTasksPage.tsx", + "line": 291, + "column": 57, + "kind": "string_literal", + "text": "Workflows starten", + "context": "jsx/html attribute (title|placeholder|aria-label|alt)", + "line_content": "